zl程序教程

您现在的位置是:首页 >  后端

当前栏目

在OpenCV里使用特征匹配

Opencv 匹配 特征 使用
2023-09-14 09:10:32 时间

特征匹配(Feature Matching)

前面我们花费了大量时间来学习特征检测和描述,其实主要的目的就是为了图像是否匹配的问题。在OpenCV里提供了两个匹配技术:Brute-Force和FLANN。

 

Brute-Force匹配算法是比较简单的,它首先从一个特征集合里取一个特征与另外一个特征集合里每个特征进行比较,如果发现最接近的特征就返回。要使用BF匹配,得用cv.BFMatcher()函数创建BFMatcher对象,创建对象时有两个可选的参数,第一个是normType,指明了怎么样度量距离,默认是cv.NORM_L2,比较适合SIFT和SURF等算法。对于二值字符串的算法ORB、BRIEF、BRISK等,应该使用 cv.NORM_HAMMING,使用Hamming距离来度量。如果ORB算法中WTA_K == 3 或 4,这是要使用 cv.NORM_HAMMING2参数。

 

第二个参数是布尔变量,crossCheck ,默认值是false。如果设置为true时,匹配成功时返回值value(i,j)表示A中第i个特征与B中第j个特征匹配。也就是说,两个集合中的两个特性应该相互匹配。它提供了一致的结果,是d.lowe在sift论文中提出的比率测试的一个很好的替代品。

 

当创建成功之后,就可以使用BFMatche