OpenCV ORBfunction检测器如何工作?

我想使用ORB特征检测器和提取器实现基于特征的对齐算法。
到目前为止,我使用OpenCV ORB orb; ORB类提取了这些特性ORB orb;
orb(gray_image,Mat(),features.keypoints,features.descriptors);
并使用openCV matcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2);的knnMatch函数匹配它们matcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2); 在那之后我试图使用findHomography函数find单应性,但是这个函数在图像特征之间需要至少4个匹配,并且在我测试的大多数图像上我得到的不到4个。

有人用过这个function吗? 是否有关于它的文档,或关于OpenCV的ORB类(ORB构造函数参数的含义)?

PS这是我的第一个问题。 我不能发布超过2个链接。 对于opencv文档,请使用此方法 。

更新:现在它在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具有:

两种types的描述符:

  • 浮点描述符:
    • 冲浪
  • uchar描述符:
    • ORB
    • 简要

和相应的匹配器:

  • 浮点描述符:
    • FlannBased
    • BruteForce >
    • BruteForce >自2.3.1开始
    • BruteForce >
  • 对于uchar描述符:
    • BruteForce
    • BruteForce
    • FlannBased与LSH指数//自2.4.0以来

因此,您需要修改代码以使用例如用于ORB描述符的BruteForce匹配器。 可以使用L2或L1距离来匹配uchar描述符,但结果将不正确并且findHomography返回不满意的结果。