私が持っているロゴ(テンプレート)をいくつかの画像と一致させようとしています。私の画像はすべて自然に色付けされており、openCV の cvMatchTemplate() を使用して、ソース画像上でテンプレート (ロゴ) を実行しています。テンプレートを複数のレベルにスケーリングして、最適なものを見つけます。シーンに存在するロゴではなく、画像にデジタルで刻印されたロゴを見つけているだけであることに注意してください. 例: この画像からスカイ スポーツを検出するhttp://i56.tinypic.com/2v3j3wx.jpg (この画像は純粋に私の仕事を表現し明確にするためのものであり、私が扱っている画像ではありません
私の画像は固定解像度ではないので、標準の 800x600 に拡大します。ソース画像の解像度が 300x300 と非常に悪い場合、結果は非常に普通です。テンプレート パラメーターで method=CV_TM_CCOEFF_NORMED を使用していますが、正確な一致の場合でもスコアが非常に低く (0 から 1.0 のスケールで 0.4 と低い)、ロゴが存在するかどうかを自信を持って言うのは困難です。これについて 2 つの質問があります。
1 - opencv テンプレート マッチングでは、カラー画像をどのように処理しますか。私はドキュメントから理解しようとしましたが、私の推論では、各チャネルのスコアが個別に計算され、最高のものが採用されました。その場合は、より良い結果を得るために 3 つのチャネルすべてを考慮したほうがよいでしょう。
2 - 代替アプローチ!! :)
不明な点があればお知らせください。
編集(追加情報):コメントで説明したように、スケーリングされたテンプレートマッチングである現在のマッチング手法を添付しています。添付の画像は純粋にテスト目的であり、私が実際に使用している画像のセットではないことに注意してください (画像は独自のものであるため投稿できません) ソース画像 ロゴ画像 テンプレート マッチングを使用した出力画像
テンプレートは一致していますが、ここで得られたスコアは、このベスト マッチで 0.59 です。マッチとしては比較的良いスコアですが、目的のロゴが存在するかどうかを確認するにはまだ十分ではありません. 画面上のロゴが透明な場合の私のテスト画像では、ロゴは検出されますが、スコアは 0.3 ~ 0.4 と低くなります。SURF/SIFT を使用すると、より良い結果が得られますか?
編集 (SURF での試行) opencv の公式ドキュメント (minHessian = 2000) で例として既に示されている SURF コードを実行しようとしました。ここにリンク ここ に出力があります。どのように解釈すればよいかわかりません (2,3 ポイントは予想される境界内にあるようです。これは良いと考えられますか?さらに提案はありますか? ありがとう