C ++ OpenCV SURF vs SurfFeatureDetector vs SurfDescriptorExtractor

DimChtz

これまでcv::SurfFeatureDetectorは、画像からSURFポイントを取得していました。ここで、記述子も取得したいと思います。だから、私cv::SurfDescriptorExtractorは私が必要なものだと思いましたしかし、私は両方のことを見たcv::SurfFeatureDetectorとはSurfDescriptorExtractorSURFポイントを検出し、記述子を計算することができます。そしてcv::SURF、同じことをすることができるものあります。これら3つの間に違いはありますか?

ミキ

いいえ、違いはありません。

ソースコードで、それらが同じであることがわかります

typedef SURF SurfFeatureDetector;
typedef SURF SurfDescriptorExtractor;

実際にはXXXFeatureDetectorXXXDescriptorExtractorは2つの別々のタスクに共通のインターフェイスであるため、キーポイントの検出を記述子の計算から分離できます。たとえば、MSERを使用してキーポイントを検出し、SIFTを使用して記述子を計算できます。


ここでSURF inherits fromFeature2D`を確認できます

class CV_EXPORTS_W SURF : public Feature2D

そして、それFeatureDetectorDescriptorExtractorされている同じようにFeature2D

typedef Feature2D FeatureDetector;
typedef Feature2D DescriptorExtractor;

FeatureDetectorDescriptorExtractorの違いは次のとおりです。

OpenCVの機能検出器には、同じ問題を解決するさまざまなアルゴリズムを簡単に切り替えることができる共通のインターフェイスを備えたラッパーがあります。キーポイント検出器を実装するすべてのオブジェクトは、FeatureDetectorインターフェイスを継承します。

一般的な問題は、抽出することであるKeyPointのを。

OpenCVのキーポイント記述子のエクストラクターには、同じ問題を解決するさまざまなアルゴリズムを簡単に切り替えることができる共通のインターフェイスを備えたラッパーがあります。このセクションでは、多次元空間でベクトルとして表される記述子の計算について説明しますベクトル記述子エクストラクタを実装するすべてのオブジェクトは、DescriptorExtractorインターフェイスを継承します。

すべてのメソッドが両方を実行できるわけではないため、この区別は、キーポイントを見つけるタスクと記述子を計算するタスクを分離するのに役立ちます。たとえば、MSERは単なる機能検出器ですが、記述子を計算しません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事