opencv学习笔记(1)

本系列文章由 @苏安6629 出品,转载请注明出处。

  • TermCriteria类和calcOpticalFlowPyrLK的使用

在SLAM中,因为可能存在运动的目标,所以采用传统的特征点提取方法可能会因为运动的目标而造成比较大的误差,所以如果采用光流法进行特征点的提取则可以很好的解决这个问题。


TermCriteria模板类

TermCriteria模板类取代了旧版本opencv的CvTermCriteria。

这个类是用来作为迭代算法的终止条件的,这个类很简单,只有简单的三个变量,类是定义在/core/types.hpp中,分别有下面两个函数

inline
TermCriteria::TermCriteria(): type(0), maxCount(0), epsilon(0) {}inline
TermCriteria::TermCriteria(int _type, int _maxCount, double _epsilon): type(_type), maxCount(_maxCount), epsilon(_epsilon) {}

第一个函数是TermCriteria类默认构造函数,第二个是我们经常会用到的。
从上面定义中可以看出,这个该类变量需要3个参数,一个是类型,第二个参数为迭代的最大次数,最后一个是特定的阈值。类型有TermCriteria::COUNT、TermCriteria::EPS、TermCriteria::COUNT+EPS,分别代表着迭代终止条件为达到最大迭代次数终止,迭代到阈值终止,或者两者都作为迭代终止条件。

calcOpticalFlowPyrLK使用

calcOpticalFlowPyrLK函数在opencv中是计算一个稀疏特征集的光流,使用金字塔中的迭代 Lucas-Kanade 方法。函数的定义如下:

CV_EXPORTS_W void calcOpticalFlowPyrLK( InputArray prevImg, InputArray nextImg,InputArray prevPts, InputOutputArray nextPts,OutputArray status, OutputArray err,Size winSize = Size(21,21), int maxLevel = 3,TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01),int flags = 0, double minEigThreshold = 1e-4 );/** @brief Computes a dense optical flow using the Gunnar Farneback's algorithm.@param prev first 8-bit single-channel input image.
@param next second input image of the same size and the same type as prev.
.........

我们从这里可以看出第t帧和第t+dt帧的图像必须是8位图像,也就是我们常说的灰度图。
- prevImg
在时间 t的第一帧
- nextImg
在时间 t + dt 的第二帧
- prevPts
发现的第一帧的光流点集
- nextPts
第二帧的光流点集
- - status
状态数组,如果对应特征的光流被发现,数组中的每一个元素都被设置为 1, 否则设置为 0。
- err
双精度数组,包含原始图像碎片与移动点之间的差。为可选参数,可以是 NULL .criteria准则,指定在每个金字塔层,为某点寻找光流的迭代过程的终止条件。
- win_size
每个金字塔层的搜索窗口尺寸
- maxLevel
- 最大的金字塔层数。如果为 0 , 不使用金字塔 (即金字塔为单层), 如果为 1 , 使用两层,下面依次类推。
- flags其它选项:
•CV_LKFLOW_PYR_A_READY , 在调用之前,第一帧的金字塔已经准备好
•CV_LKFLOW_PYR_B_READY , 在调用之前,第二帧的金字塔已经准备好
•CV_LKFLOW_INITIAL_GUESSES , 在调用之前,数组 B 包含特征的初始坐标

函数 CalcOpticalFlowPyrLK 实现了金字塔中 Lucas-Kanade 光流计算的稀疏迭代版本 ([Bouguet00])。 它根据给出的前一帧特征点坐标计算当前视频帧上的特征点坐标。 函数寻找具有子象素精度的坐标值。

opencv学习笔记(1) TermCriteria 和 光流法特征点相关推荐

  1. Opencv学习笔记(九)光流法

    本文转载至:http://blog.csdn.net/crzy_sparrow/article/details/7407604 本文目录: 一.基于特征点的目标跟踪的一般方法 二.光流法 三.open ...

  2. opencv学习笔记三十六:AKAZE特征点检测与匹配

    KAZE是日语音译过来的 , KAZE与SIFT.SURF最大的区别在于构造尺度空间,KAZE是利用非线性方式构造,得到的关键点也就更准确(尺度不变性 ): Hessian矩阵特征点检测 ,方向指定, ...

  3. opencv学习笔记二十九:SIFT特征点检测与匹配

    SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points) ...

  4. 【OpenCV】OpenCV3的第二天——光流法(Optial Flow)运动目标检测

    基于特征点的跟踪算法大致可以分为两个步骤: 1)探测当前帧的特征点: 2)通过当前帧和下一帧灰度比较,估计当前帧特征点在下一帧的位置: 3)过滤位置不变的特征点,余下的点就是目标了. 特征点包括: 1 ...

  5. OpenCV学习笔记(六)(七)(八)(九)(十)

    OpenCV学习笔记(六)--对XML和YAML文件实现I/O操作 1. XML.YAML文件的打开和关闭 XML\YAML文件在OpenCV中的数据结构为FileStorage,打开操作例如: [c ...

  6. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  7. OpenCV学习笔记与代码示例(三):张氏标定法标定相机原理及函数详解

    目录 1.张氏标定法基本原理 1.1相机针孔模型 1.2单应矩阵H 1.3求相机内参 1.4求相机外参 1.5优化参数 1.6总结 2.OpenCV实现 2.1特征点检测与靶标坐标初始化 2.2相机标 ...

  8. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

  9. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

最新文章

  1. Webinar: An introduction to PacBio’s long-read sequencing how it has been used to make important s
  2. Integrating Spring and EHCache
  3. ajax formdata 获取表单数据,node处理表单文件,获取formdata的数据
  4. smartforms不输出0
  5. 浅谈StringBuilder
  6. 粒子群算法组卷_粒子群(PSO)算法概念及代码实现
  7. 阅读react-redux源码(二) - createConnect、match函数的实现
  8. php jquery api文档,使用PHP、jQuery和JSON创建公共API
  9. Java面试题系列(X)锁的原理
  10. 类的封装,继承和多态
  11. Atitit 2016 技术趋势与没落技术 目录 1.1. 流水线 即代码通过编码而非配置CI/CD运行工具的方式,来定义部署 流水线 1 1.2. 将APIs当作产品 1 1.3. 无服务器架构
  12. 用WPS2000制作勾股定理教学课件(转)
  13. Python制作经典的吃豆豆小游戏
  14. Hbase 过滤器详解
  15. 设计院的故事--转自ABBS(自动铅笔)
  16. 阿里巴巴2021校招
  17. jQuery事件绑定与解绑
  18. EXCEL做数据-自用笔记(幼儿园级别)
  19. bugku--PHP代码审计-sha()函数比较绕过
  20. 数据库—distinct是什么意思?select distinct怎么用?

热门文章

  1. 研发内部控制浅谈(一)(转)
  2. Ionic Capacitor 插件开发
  3. 换goland主题皮肤
  4. 开发博客系统SpringBoot+Vue教程
  5. 如何评价张小平离职?
  6. (65)-- 爬取58交友信息
  7. linux centos7 解压tar.gz
  8. Oracle列合并成行之wm_concat函数浅析
  9. 计算机误删了文件回收站找不到,电脑的文件误删除,回收站也没有,可以在哪找到...
  10. android saf写sd卡,使用SAF(存储访问框架)的Android SD卡写权限