私はテンプレートと一致するメソッドをCV_TM_CCORR_NORMED
と使用して2つの画像を比較しています...私はこの回転とスケールを不変にするために作りたいと思います。スケールとローテーションテンプレートマッチング
私は画像とテンプレートのフーリエ変換に同じメソッドを使用しようとしましたが、それでも回転後の結果が異なっている、あなたのオブジェクトがシーンに回転や拡大縮小されたときにmatchTemplate
とのマッチング
私はテンプレートと一致するメソッドをCV_TM_CCORR_NORMED
と使用して2つの画像を比較しています...私はこの回転とスケールを不変にするために作りたいと思います。スケールとローテーションテンプレートマッチング
私は画像とテンプレートのフーリエ変換に同じメソッドを使用しようとしましたが、それでも回転後の結果が異なっている、あなたのオブジェクトがシーンに回転や拡大縮小されたときにmatchTemplate
とのマッチング
テンプレートが良くありません。
フレームワークFeatures2D
からopenCV関数を試す必要があります。例えば、SIFT
またはSURF
記述子、およびFLANN
マッチャ。また、findHomography
メソッドが必要です。
Hereは、シーン内の回転オブジェクトを見つける良い例です。
更新:要するに
、アルゴリズムはこれです:
は、オブジェクトの画像 1.1のキーポイントを見つけます。あなたのシーン画像マッチャー
によってキーポイント
マッチ記述子から 2.1抽出ディスクリプタのキーポイントを見つけるそれらのキーポイント
から抽出記述子は異なるクラスがあり
あなたの試合を分析しますFeatureDetectors、DescriptorExtractors、およびDescriptorMatchesのうち、それらについて読んで、あなたのtaに合ったものを選択することができますsks。
回転
各キーポイント:
スケール不変
はBRISK方法
あなたがその本当に唯一の回転やスケールを知っていれば、特徴検出及びホモグラフィを経由して行くよりも、テンプレートの規模に合致し、回転不変の簡単な方法は(ありますを参照してください。 、他のすべては一定です)。 真のオブジェクト検出のためには、上記の提案されたキーポイントベースのアプローチが効果的です。
もしそれが同じテンプレートであり、視点の変更がないと分かっているならば、スケールピースの画像ピラミッドを撮って、そのピラミッドのさまざまなレベルでテンプレートをマッチさせます。 NCC)。ピラミッドのより高い(=より低い解像度)レベルでの大まかなマッチングを見つけることは安いでしょう。実際には、それは非常に安くて、低解像度のレベルでテンプレートを大まかに回転させることができます。テンプレートを高解像度のレベルに戻すときは、より精細な回転ステッピングを使用します。これはかなり標準的なテンプレートマッチング技術であり、実際にはうまくいきます。
**ありがとう、私はすでにホモグラフィを使用していましたが、サーフィンの代わりに興味のあるポイントとしてコーナーを見つけましたが、これはFLANNで動作しますか?サーフとふるい分けに時間がかかり、パフォーマンスが低下する可能性があります** – Storm2012
「興味のあるポイント」は一般的な用語です。それらはエッジであり、ほとんどがコーナーです。興味のあるポイントはどうやって見つかりましたか? openCVの「FeatureDetector」のいずれかを使用することも、あなた自身で書くこともできます。例えば、「FAST」、「STAR」があります。彼らはシンプルで速いです。しかし、彼らは興味のあるポイントの角度に関する情報を保持していません。 'SURF'と' SIFT'は遅くなりますが、興味のあるポイントについての情報はより大きくなります(角度)。 'SIFT'と' SURF'を使うと、スケール不変のマッチを見つけることができます。しかし、任意のopenCV検出器を使用することができます。 –
ありがとうございました – Storm2012