如何从图像中提取FAST功能?

时间:2012-03-29 05:22:07

标签: c++ opencv

我想根据Features2D + Homography to find a known object

提取FAST功能
  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,那么示例似乎正常工作。

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

1 个答案:

答案 0 :(得分:8)

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

OrbFeatureDetector detector(n_features);

OrbDescriptorExtractor extractor(patch_size);

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