【问题标题】:How can I extract FAST features from an image?如何从图像中提取 FAST 特征?
【发布时间】:2012-03-30 03:11:09
【问题描述】:

我想提取 FAST 特征,基于Features2D + Homography to find a known object

  SurfFeatureDetector detector( minHessian );

  std::vector<KeyPoint> keypoints_object, keypoints_scene;

  detector.detect( img_object, keypoints_object );
  detector.detect( img_scene, keypoints_scene );

  //-- Step 2: Calculate descriptors (feature vectors)
  SurfDescriptorExtractor extractor;

SurfFeatureDetector 和 FastFeatureDetector 类继承自 Detector,可以互换。但是我找不到 SurfDescriptorExtractor 的匹配类,我希望能找到类似 FastDescriptorExtractor 的东西,但这样的类不可用。似乎很奇怪的是,如果我只将 Detector 更改为 FastFeatureDetector,则该示例似乎可以正常工作。

我的问题是:对于 Fast 功能,上述序列应该如何?

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    据我所知,OpenCV 中没有 FAST 特征提取器。 与 SURF 可用于特征检测和特征向量计算不同,FAST 主要用于检测特征点。获得特征点后,需要使用其他一些特征提取器来生成特征向量并进行匹配。 或者,如果您担心速度,在 OpenCV 2.3 中,引入了 ORB 功能,它实际上使用多尺度 FAST(加上一些 Harris 角测量)作为其检测器。用法类似于SURF:

    OrbFeatureDetector detector(n_features);
    
    OrbDescriptorExtractor extractor(patch_size);
    

    您需要将示例中的匹配器更改为一些基于汉明距离的匹配器。希望这会有所帮助。

    【讨论】:

    • 根据示例代码替换的行是//FlannBasedMatcher matcher;更改为BruteForceMatcher&lt;Hamming&gt; matcher;
    • 这是正确的改变。但是,BruteForceMatcher&lt;Hamming&gt; 有点慢,最好的匹配器应该是基于 LSH 的方法,它还没有在 OpenCV 中实现。你可以试试here 中的LshMatcher,它与BruteForceMatcher 或FlannMatcher 非常相似。
    猜你喜欢
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    相关资源
    最近更新 更多