OpenCV ORB 特征检测器如何工作? [英] How Does OpenCV ORB Feature Detector Work?

查看:29
本文介绍了OpenCV ORB 特征检测器如何工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to implement a feature-based alignment algorithm using the ORB feature detector and extractor.
So far, I extracted the features using ORB class from OpenCV ORB orb;
orb(gray_image,Mat(),features.keypoints,features.descriptors);
and matched them using the knnMatch function from openCV matcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2); After that I am trying to find a homography using findHomography function, but this function needs at least 4 matches between the image features, and on most of the images i tested I got less than 4.

有人用过这个功能吗?有没有关于它的文档,或者关于 OpenCV 中的 ORB 类(ORB 构造函数参数的含义)?

Has anybody used this feature? Is there any documentation about it, or about the ORB class from OpenCV(the meaning of the ORB constructor parameters)?

附:这是我的第一个问题.而且我不能发布超过 2 个链接.对于 opencv 文档,请使用 this.

P.S. This is my first question. and I can't post more than 2 links. For opencv documentation use this.

推荐答案

更新:现在 在 OpenCV 文档中,这里:http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb

UPDATE: Now it is in the OpenCV documentation, here: http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb

算法的详细描述见此处:http://www.willowgarage.com/sites/default/files/orb_final.pdf

A detailed description of the algorithm is found here: http://www.willowgarage.com/sites/default/files/orb_final.pdf

OpenCV 文档中没有提到,但实际上 OpenCV 有:

It is not mentioned in OpenCV documentation but actually OpenCV has:

两种类型的描述符:

  • 浮点描述符:
    • 筛选
    • 冲浪
    • ORB
    • 简述

    以及对应的匹配器:

    • 对于浮点描述符:
      • FlannBased
      • BruteForce<L2<float>>
      • BruteForce<SL2<float>>//从 2.3.1 开始
      • BruteForce<L1<float>>
      • for float descriptors:
        • FlannBased
        • BruteForce<L2<float> >
        • BruteForce<SL2<float> > //since 2.3.1
        • BruteForce<L1<float> >
        • BruteForce<Hamming>
        • BruteForce<HammingLUT>
        • FlannBased 带有 LSH 索引//自 2.4.0 起
        • BruteForce<Hamming>
        • BruteForce<HammingLUT>
        • FlannBased with LSH index //since 2.4.0

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

        So you need to modify your code to use for example BruteForce<Hamming> matcher for ORB descriptors. It is possible to use L2 or L1 distance for matching uchar descriptors but results will be incorrect and findHomography returns unsatisfactory results.

        这篇关于OpenCV ORB 特征检测器如何工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆