OPENCV中特征检测与特征匹配算法
阅读原文时间:2021年04月21日阅读:1

特征检测

opencv可以检测图像的主要特征,然后提取这些特征,使其成为图像描述符。

特征:特征就是有意义的图像区域,该区域具有独特性或易于识别性。角点与高密度区域是一个很好的特征,边缘可以将图像分为两个区域,因此可以看作很好的特征,斑点(与周围有很大区别的图像区域)也是有意义的特征。

大多数特征检测算法都会涉及图像的角点、边和斑点的识别。

Harris可用于识别角点。此函数可以很好的检测角点,这些角点在图像旋转的情况下也能被检测到。但是如果减少或者增加图像的尺寸,可能会丢失图像的某些部分,也有可能增加图像的角点。这种特征损失的现象需要一种与图像比例无关的检测方法解决。这就是SIFT,可以对不同图像尺寸输出相同的结果。SIFT会通过一个特征向量来描述关键点周围区域的情况。Dog用于检测关键点。

SURF算法比SIFT快好几倍,它吸收了SIFT算法的思想。SURF采用Hessian算法检测关键点。SURF需要提供阈值,特征随着阈值的增加而减少。

ORB是用来取代SIFTSURF的,与两者相比,ORB有更快的速度。ORBFAST来检测关键点,用BRIEF来进行关键点特征描述。

有点迷糊,现在总结一下

opencv中的SIFTDoGSIFT的结合。DoG用于关键点的检测,SIFT用于描述关键点的特征(图像描述符)。

                     SURFHessianSURF的结合,Hessian用于关键点的检测,SURF用于描述关键点的特征。

                     ORBFASTBRIEF的结合,FAST用于关键点的检测,BRIEF用于描述关键点的特征。

速度上ORB>SURF>SIFT,SURF的鲁棒性(抗干扰能力)更好一些。

特征匹配

1.暴力(Brute-Force)匹配:一种描述符匹配算法,该方法会比较两个描述符,并产生匹配结果列表,第一个描述符的所有特征都拿来和第二个进行比较。

2.K-最近邻(knn)匹配:在所有的机器学习suan算法中,knn可能是最简单的。

.FLANN匹配:FLANN具有一种内部机制,该机制可以根据数据本身选取合适的算法来处理数据集,FLANN比其他的最近邻搜索快10倍。

.FLANN的单应性匹配,单应性指的是两幅图像中的一幅出现投影畸变时,他们还能彼此匹配。