【OpenCV系列】知识点总结

版权声明:欢迎转载,请注明来源 https://blog.csdn.net/linghugoolge/article/details/88258652

10、特征检索与匹配

SURF特征

特征点匹配:类似ICP、PnP、Ransac算法

寻找已知物体

9、角点检测

协方差与协方差矩阵

协方差矩阵:两两特征之间的协方差组成的矩阵

Harris角点检测

Shi-Tomasi角点检测

亚像素级角点检测

此刻坐标往往都是整数出现,而在真实的世界中坐标多数时候都不是整数,假设我们计算出来的角点位置P(34, 189)而实际上准确角点位置是P(34.278, 189.706)这样带小数的位置,而这样的准确位置寻找过程就叫做子像素定位或者亚像素定位。这一步在SURF与SIFT算法中都有应用而且非常重要。常见的亚像素级别精准定位方法有三类:

1. 基于插值方法

2. 基于几何矩寻找方法

3. 拟合方法 - 比较常用

亚像素级角点检测是在一般角点检测基础之上将检测出的角点精确到亚像素级

因此需要先使用harris或shi-tomasi检测出角点,然后再调用cv::cornerSubPix()

在Harris的基础上,亚像素级角点检测

8、直方图与匹配

直方图对比:矩阵相关性计算、卡方计算

反向投影:非常简单的分割算法了

模板匹配

我们需要2幅图像:

原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域

模板 (T): 将和原图像比照的图像块

我们的目标是检测最匹配的区域:

为了确定匹配区域, 我们不得不滑动模板图像和原图像进行 比较 :

通过 滑动, 我们的意思是图像块一次移动一个像素 (从左往右,从上往下). 在每一个位置, 都进行一次度量计算来表明它是 “好” 或 “坏” 地与那个位置匹配 (或者说块图像和原图像的特定区域有多么相似).

对于 T 覆盖在 I 上的每个位置,你把度量值 保存 到 结果图像矩阵 (R) 中. 在 R 中的每个位置 (x,y) 都包含匹配度量值:

上图就是 TM_CCORR_NORMED 方法处理后的结果图像 R . 最白的位置代表最高的匹配. 正如您所见, 红色椭圆框住的位置很可能是结果图像矩阵中的最大数值, 所以这个区域 (以这个点为顶点,长宽和模板图像一样大小的矩阵) 被认为是匹配的.

7、图像轮廓与图像分割修复

轮廓

findContours()

drawContours

凸包

使用多边形将轮廓包围

图像的矩

分水岭算法

种子生长、阈值化、分水岭、漫水法有很多相似之处

距离变换

距离变换的基本含义是计算一个图像中非零像素点到最近的零像素点的距离,也就是到零像素点的最短距离。因此可以基于距离变换提取手掌重心。

图像修补

  1. 通过阈值化处理或者其他方式生成inpaintmask;
  2. 对待修复的区域,按照邻域像素特征进行填充。

6、图像变换

边缘检测:一般步骤,滤波、增强、检测

canny边缘检测:高斯滤波、计算梯度和方向、非极大值抑制、双阈值处理、抑制孤立阈值点

边缘检测之Canny https://www.cnblogs.com/techyan1990/p/7291771.html

sobel算子:

laplacian算子:

霍夫变换

霍夫线变换:在极坐标系下确定r和θ两个变量

霍夫圆变换:有三个变量

霍夫梯度找圆算法

1)寻找圆心;

  1. 用Canny算法进行边缘检测,得到边界二值图
  2. 用Sobel算子计算原图的梯度
  3. 遍历边缘二值图中的非0点,沿着梯度方向和反方向画线段(梯度方向为圆弧的法线方向,即半径方向),线段的起点和长度由参数允许的半径区间决定。将线段经过的点在累加器中记数
  4. 对累计器中的点从大到小排序,记数越大越有可能成为圆心,优先估计半径

2)寻找半径。

  1. 计算所有边界图中的非0点离圆心的距离,并从小到大排序
  2. 从小半径r开始,距离相差在一个小量范围内的点,都认为是同一个圆,记数属于该半径r的非0点数,记为n
  3. 尝试放大半径,同样记数改半径的点数
  4. 判断两个半径孰优孰劣的依据——点的线密度(点数n/半径r),密度越高,半径的可信度越大
  5. 重复以上步骤,直至半径超过参数允许的范围,从而得到最优半径

参考:

OpenCV霍夫梯度找圆算法 https://blog.csdn.net/hhyh612/article/details/54947205

重映射

使用remap()函数

仿射变换:affine transformation:平移、旋转、缩放

直方图均衡化:灰度值均衡化,修改灰度值间隔的大小,调用equalizeHist()函数

5、滤波

这里这个邻域的处于与卷积神经网络的卷积非常类似

中值滤波:用中值替代均值,带来非线性

双边滤波:高斯滤波加上与像素值变化相关的权重

形态学处理

腐蚀膨胀的功能

膨胀,相当于求最大值的过程

腐蚀:相当于求最小值的操作

开运算:先腐蚀后膨胀,用来消除小物体,在纤细点分离物体

闭运算:先膨胀后腐蚀,排除小型黑洞

梯度操作:膨胀图-腐蚀图,将团块的边缘凸显出来,可以利用形态学梯度来保留物体的边缘轮廓

顶帽运算:

黑帽运算:非常好的获得轮廓

图像金字塔: pyramid

阈值化:可以视为最简单的图像分割,Threshold(),adaptiveThreshold()函数

4、基本操作

ROI区域

addweighted图像加权混合

通道分离,split()函数;

通道合并,merge()函数

3、图形的绘制

2、基本数据类型

1、Mat类的性质

官方文档写得真好!

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

猜你喜欢

转载自blog.csdn.net/linghugoolge/article/details/88258652