我想使用ORB特征检测器和提取器实现基于特征的对齐算法
到目前为止,我使用OpenCV中的ORB类提取了这些功能
ORB orb;
orb(gray_image,Mat(),features.keypoints,features.descriptors);
并使用openCV matcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2);
中的knnMatch函数匹配它们
之后我试图使用findHomography函数找到一个单应性,但是这个函数在图像特征之间需要至少4个匹配,并且在我测试的大多数图像上我得到的不到4个。
有人使用过这个功能吗?是否有任何关于它的文档,或关于OpenCV的ORB类(ORB构造函数参数的含义)?
P.S。这是我的第一个问题。我不能发布超过2个链接。对于opencv文档,请使用this。
答案 0 :(得分:48)
更新:现在它在OpenCV文档中 ,在这里:
http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb
此处可找到该算法的详细说明:http://www.willowgarage.com/sites/default/files/orb_final.pdf
在OpenCV文档中没有提到它,但实际上OpenCV有:
两种类型的描述符:
相应的匹配者:
FlannBased
BruteForce<L2<float> >
BruteForce<SL2<float> >
//自2.3.1 BruteForce<L1<float> >
BruteForce<Hamming>
BruteForce<HammingLUT>
FlannBased
,LSH索引//自2.4.0以来因此,您需要修改代码以用于ORB描述符的BruteForce<Hamming>
匹配器。可以使用L2或L1距离来匹配uchar描述符,但结果将不正确并且findHomography返回不满意的结果。