私はOpenCVでいくつかの重要な機能のマッチングをしようとしていますが、今のところ私はcv::DescriptorMatcher::match
を使用していましたが、予想どおり、OpenCVフィーチャマッチングのさまざまな実装で使用する統合された距離測定?
抽出された一致のフィルタとプルーニングの手順を書き始める前に、float maxDistance
よりも互いに近い一致を返すだけのcv::DescriptorMatcher::radiusMatch
関数を試したかったのです。
利用可能なOpenCVマッチングアルゴリズムのラッパーを作成して、追加の機能と追加のextern(マイン)マッチングの実装を可能にするインターフェイスでそれらを使用できるようにしたいと思います。
私のコードでは、OpenCVの特徴マッチングにラッパーとしてだけ1具象クラスの演技は、私は、(同様にcv::DescriptorMatcher
として、それは特定のマッチングアルゴリズムの名前をとり、ファクトリメソッドを通じて、内部でそれを構築する)があるので、 を実装する普遍的な方法cv::DescriptorMatcher::radiusMatch
を利用することで、さまざまなマッチャーとフィーチャーの選択肢(すべてのOpenCVフィーチャーディテクター間で変更を可能にする同様のラッパーがあります。 。
残念ながら、OpenCVのドキュメントとcv::DescriptorMatcher
インタフェースを介して見た後、私はちょうど試合間の実際の距離を計算するために使用される距離測定に関する情報を見つけることができません。私はサーフの特徴と記述子を使って、かなり良い一致の例hereを見つけましたが、引数の特定の値の実際の意味を理解することはできませんでした。
異なるフィーチャ/ディスクリプタの組み合わせを使用した場合の結果を比較したいので、どのような距離測定を使用しているのかを簡単に知ることができますのすべての組み合わせで意味のあるものを使用してください。私は試してみます。
アイデア/提案はありますか?
更新
は、私はちょうど、様々な機能/記述子の組み合わせでcv::DescriptorMatcher::match
を使用しているとき私が得る機能距離をプリントアウトし、どのような私が得たことだったしました:
- MSER /大きさの順序をSIFT :100 大きさの
- SURF/SURF順序:大きさの0.1
- SURF/SIFT順序:50
- MSER/SURF大きさの順番:0.2
このことから、どのフィーチャに距離尺度が適用されても、間違いなく正規化されていないと結論づけることができます。私はOpenCVと私自身のインターフェースを使って異なるフィーチャ抽出、記述子の計算、マッチング方法を扱っていますので、私は::radiusMatch
の議論をしたいと思います。 (私はBruteForce
とFlannBased
マッチャーを使用してマッチングを試しましたが、マッチが若干異なりますが、マッチ間のディスアランスはそれぞれの組み合わせで同じオーダーの大きさです)。
いくつかのコンテキスト:私はカメラから取得した二つの絵の上にこれをテストしてい
は(遅い)移動車両の上部に取り付けられています。画像は約5フレーム(車両の動きの1メートル)離れている必要がありますので、ほとんどの機能は目に見えるようにしてください(特に両方の画像のカメラから遠く離れているもの)。