2つの画像を比較するためにCV_TM_CCORR_NORMED
でテンプレートを一致させる方法を使用しています...この回転とスケールを不変にするために作成したい..何かアイデアはありますか?
画像とテンプレートのフーリエ変換で同じ方法を使用しようとしましたが、それでも回転後の結果は異なります
オブジェクトがシーン内で回転またはスケーリングされている場合、matchTemplate
とのテンプレートマッチングは適切ではありません。
Features2D
FrameworkからopenCV関数を試してみてください。たとえば、SIFT
またはSURF
記述子、およびFLANN
マッチャー。また、findHomography
メソッドが必要です。
ここ は、シーン内で回転したオブジェクトを見つける良い例です。
更新:
要するに、アルゴリズムはこれです:
オブジェクト画像のキーポイントを見つける1.1。それらのキーポイントから記述子を抽出する
シーン画像のキーポイントを見つける2.1キーポイントから記述子を抽出する
マッチャーによる記述子の照合
対戦を分析する
FeatureDetectors、DescriptorExtractors、およびDescriptorMatchesにはさまざまなクラスがあります。それらについて読んで、タスクに適したものを選択してください。
回転不変
各キーポイントについて:
スケール不変
[〜#〜] brisk [〜#〜] メソッドを参照
テンプレートのスケールと回転不変量を一致させる方法は、特徴の検出とホモグラフィを使用するよりも簡単です(実際には回転とスケールのみがわかっていて、それ以外はすべて一定である場合)。真のオブジェクト検出では、上記のキーポイントベースのアプローチがより効果的です。
同じテンプレートであることがわかっていて、パースペクティブの変更がない場合は、スケールスペースを検出するために画像ピラミッドを取得し、そのピラミッドのさまざまなレベルでテンプレートを照合します(SSDやNCCなどの単純なものを使用)。ピラミッドの高い(=低い解像度)レベルで大まかな一致を見つけるのは安上がりです。実際、非常に安価なので、テンプレートを低解像度レベルで大まかに回転させることもできます。テンプレートをトレースして高解像度レベルに戻すと、より細かい粒度の回転ステップを使用します。これはかなり標準的なテンプレートマッチング手法であり、実際にはうまく機能します。