これまでcv::SurfFeatureDetector
は、画像からSURFポイントを取得していました。ここで、記述子も取得したいと思います。だから、私cv::SurfDescriptorExtractor
は私が必要なものだと思いました。しかし、私は両方のことを見たcv::SurfFeatureDetector
とはSurfDescriptorExtractor
SURFポイントを検出し、記述子を計算することができます。そしてcv::SURF
、同じことをすることができるものもあります。これら3つの間に違いはありますか?
いいえ、違いはありません。
ソースコードで、それらが同じであることがわかります。
typedef SURF SurfFeatureDetector;
typedef SURF SurfDescriptorExtractor;
実際にはXXXFeatureDetector
、XXXDescriptorExtractor
は2つの別々のタスクに共通のインターフェイスであるため、キーポイントの検出を記述子の計算から分離できます。たとえば、MSERを使用してキーポイントを検出し、SIFTを使用して記述子を計算できます。
ここで、SURF inherits from
Feature2D`を確認できます。
class CV_EXPORTS_W SURF : public Feature2D
そして、それFeatureDetector
とDescriptorExtractor
されている同じようにFeature2D
:
typedef Feature2D FeatureDetector;
typedef Feature2D DescriptorExtractor;
FeatureDetectorとDescriptorExtractorの違いは次のとおりです。
OpenCVの機能検出器には、同じ問題を解決するさまざまなアルゴリズムを簡単に切り替えることができる共通のインターフェイスを備えたラッパーがあります。キーポイント検出器を実装するすべてのオブジェクトは、FeatureDetectorインターフェイスを継承します。
一般的な問題は、抽出することであるKeyPoint
のを。
OpenCVのキーポイント記述子のエクストラクターには、同じ問題を解決するさまざまなアルゴリズムを簡単に切り替えることができる共通のインターフェイスを備えたラッパーがあります。このセクションでは、多次元空間でベクトルとして表される記述子の計算について説明します。ベクトル記述子エクストラクタを実装するすべてのオブジェクトは、DescriptorExtractorインターフェイスを継承します。
すべてのメソッドが両方を実行できるわけではないため、この区別は、キーポイントを見つけるタスクと記述子を計算するタスクを分離するのに役立ちます。たとえば、MSERは単なる機能検出器ですが、記述子を計算しません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加