Opencv中特征点提取和特征匹配算法详解(ORB SIFT SURF FAST)

特征匹配(Feature Match)是计算机视觉中很多应用的基础,譬如在目标识别、三维重建、视觉SLAM中设计视觉里程计等会用到,这个概念让新手刚开始摸不到头脑,所以花一些时间去理清这些概念是有必要的,下面通过查阅资料和自己的一些感悟记录下来常见的击中特征提取和匹配算法,通过这篇文章可以很好的理解特征提取的来龙去脉。
参考博客 https://www.cnblogs.com/wyuzl/p/7816011.html

特征点检测与特征匹配的原理

从图像中选取某些特征点并对图像进行局部分析,而不是对整个图像进行分析。

特征点

是一幅图像中独特的像素点,我们可以认为是这幅图像的特征,一帮特征点都具有如下的性质:
1.可重复性(相同的“区域”可以在不同的图像中找到)
2.可区别性 (不同的“区域”有不同的表达)
3.高效性 (同一幅图像中,特征点的数量远小于像素的数量)
4.本地性 (特征仅与一小片图像区域有关)
特征点有两种性质:1旋转不变性,2尺度不变性
Opencv中特征点提取和特征匹配算法详解(ORB SIFT SURF FAST)_第1张图片

我们常说的特征点其实是包括了关键子和描述子,就例如当说SIFT特征点时,就是指的是“提取SIFT关键子和计算SIFT描述子”,一般情况下两者都是关联在一起的。下面讲解常用的几种特征点检测与匹配方法。

1.Harris角点检测

根据特征点的局部差异性,通过检测所选像素框内的灰度差异来进行衡量特征点的方法,Harris角点不具有尺度不变性(在任何尺度下,拍摄的物体都能检测到一致的关键点的性质)因此这种情况下,不同的像素窗口对角点的检测就有影响。Opencv中特征点提取和特征匹配算法详解(ORB SIFT SURF FAST)_第2张图片

2.SIFT

SIFT(尺度不变特征转换, ScaleInvariant Feature Transform) 是一种著名的尺度不变特征检测法。每个特征点采用128维向量来描述, sift算法的主要思想:他是一种提取局部特征的算法,在尺度空间寻找极值点,提取位置、尺度、选择不变量.由于SIFT基于浮点内核计算特征点,因此通常认为, SIFT算法检测的特征在空间和尺度上定位更加精确,所以在要求匹配极度精准且不考虑匹配速度的场合可以考虑使用SIFT算法,具有尺度不变性和旋转不变性。

3.SURF

全称为“加速稳健特征”(Speeded Up Robust Feature),我们将会看到,它们不仅是尺度不变特征,而且是具有较高计算效率的特征。我们知道SIFT方法的计算量非常的大,但是也是足够精准,但是在实际情况下,有时候我们需要速度快的时候就产生了SURF加速稳健特征匹配,这种方式是基于SIFT的加速方法,每个特征点采用64维向量来描述。

4.FIST特征点

FIST角点是通过轿车局部像素灰度的变化来确认特征点的位置的,一般在一张图像中选择一个P点,以P点为圆心构建一个离散圆,通过比较圆周上的像素与P点的像素,当有连续的n个像素点的值明显大于或者小于P点时,我们就说P点就是特征点,常用的检测方法有FIST9或者FIST12 ,FIST是速度最快的一种检测方法,因为他不需要计算,只需要通过和周围的数值比较大小就行,是SIFT速度的100倍,但是不具有尺度和旋转不变性。

5.ORB(FAST检测子+brief描述子)

ORB特征通过增加了FAST检测子所没有的方向性,利用计算速度特快的描述子BRIEF,这就使得提取图像特征时速度加快了很多。在以往提取一帧图像特征点的实验中,在提取相同数量的特征点情况下,提取SURF点耗时时间大约是提取ORB特征点的14倍,而提取SIFT点耗时更大,大概比提取ORB特征点多三百多倍。由此可知提取ORB特征点比提取SIFT, SURF特征点所需要的计算量小得多。所以对于需要实时运行视觉S LAM算法的系统,其前端提取ORB特征点比较合适,且ORB特征点具有两个特性:一是尺度不变,二是旋转不变性。

下面几种特征点检测的效果图:
Opencv中特征点提取和特征匹配算法详解(ORB SIFT SURF FAST)_第3张图片
下面是特征匹配的效果图:
Opencv中特征点提取和特征匹配算法详解(ORB SIFT SURF FAST)_第4张图片

你可能感兴趣的:(双目视觉三维重建)