2012-03-29 12 views
2

は、私は、Detectorから継承されており、交換することができる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に基づいて、FASTの特徴を抽出したいです。しかし、私はSurfDescriptorExtractorのための一致するクラスを見つけることができませんでした。私はFastDescriptorExtractorのようなものを見つけることを期待しましたが、このようなクラスは利用できません。奇妙に思えるのは、DetectorをFastFeatureDetectorに変更するだけで、正しく動作するように見えるということです。

私の質問は次のとおりです。上記のシーケンスは、どのように高速機能のように見えるのですか?

答えて

8

私の知る限り、OpenCVにはFAST機能抽出機能はありません。 特徴検出と特徴ベクトル計算の両方に使用できるSURFとは異なり、主に特徴点の検出にFASTが使用されます。特徴点を取得したら、他の特徴抽出器を使用して特徴ベクトルを生成し、マッチングを行う必要があります。 また、OpenCV 2.3では速度に関する懸念がある場合、実際にマルチスケールのFAST(いくつかのハリスコーナー測定を加えたもの)を検出器として使用するORB機能が導入されています。使い方はSURFのようになります。

OrbFeatureDetector detector(n_features); 

OrbDescriptorExtractor extractor(patch_size); 

あなたは、いくつかのハミング距離に基づくマッチャに例のマッチャーを変更する必要があります。お役に立てれば。

+0

ありがとうございます。参考にしてください。 – stacker

+0

元の用紙はこちらです:http://www.willowgarage.com/sites/default/files/orb_final.pdfそして、ここにORB機能のドキュメントがあります:http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb – cxyzs7

+1

サンプルコードに基づいて置き換える行は 'FlannBasedMatcher matcher;'に変更します ' BruteForceMatcher matcher; ' – stacker

関連する問題