web-dev-qa-db-ja.com

OpenCVテンプレートのマッチングと透過性

OpenCVがテンプレートマッチング中に画像の透明度を処理する方法は何ですか?

問題は、元の画像にはそれらの場所に何でも存在する可能性があるため、テンプレート画像に透明部分が必要なことです。

私はすべての方法を試しましたが、どれも肯定的な結果をもたらしませんでした(たとえば、元の画像内のテンプレートの位置が正しく検出されませんでした)。

31
mnn

OpenCVが希望どおりにアルファを処理するようには見えません。

次の2つのオプションがあります。

  1. アルファチャネルを使用する独自の相互相関法を作成する
  2. アルファチャネルが無関係になるように画像を変換する

最初のオプションは簡単なので、ここでは2番目のオプションについて説明します。以前に提供したサンプルコードを 同様の質問 で再利用します。画像に直接相互相関を適用すると、背景がテンプレートマッチング(特に、明るい背景の部分)を妨害します。カラーチャネルをいじってみると、青のチャネルで一致させると正しい結果が得られます。これは画像の内容によって異なり、問題を解決するための一貫した方法ではありません。

別のオプションは、画像とテンプレートに対してエッジ検出(例: Sobel )を実行し、次に相互相関を実行することです。以下は、エッジ検出画像です(GIMPのLumaチャネルでSobel Edge検出器を使用し、その後、いくつかの強度ストレッチを行いました)。

map

building

ご覧のとおり、ほとんどの地形は強度がゼロになり、相互相関計算に寄与しないため、ここのアルファチャネルは無関係になりました。したがって、相互相関を直接適用して、望ましい結果を得ることができます。

misha@misha-desktop:~/Desktop/stackoverflow$ python cross-correlation.py map-blue.png building-maskz-blue.png 
(163, 244)

最後に、これが 別の関連する質問 です。

PS。これは何のゲーム?

18
mpenkov

私はこの問題に対して少し頭の痛い解決策を持っていますが、実際にはかなりうまく機能しているようです:テンプレートイメージのアルファチャネルをノイズで置き換えます。

たとえば、私の使用例では、iOSからのスクリーンキャプチャで絵文字を検索しました。 iOSキーボードの背景はコンテキストに応じて色が変わるため、テンプレート画像で特定の背景色を使用すると、マッチングプロセスが問題になります。

これがアルファの生のテンプレート画像です:
raw template image on alpha

以下は、アルファチャネルのノイズが入った処理済みテンプレートです。
enter image description here

OpenCVのドキュメントで提供されている テンプレートマッチングのサンプルコード を使用して、処理されたテンプレート画像を送信しました。暗い背景でも明るい背景でも、一致は妥当な信頼度で見つかります。

暗い背景での検索:

matched on dark

明るい背景での検索:

matched on light

対照的に、テンプレートのアルファチャネルを透明にしたままにしたり、暗い背景や明るい背景にコミットしたりしても、許容できる一致は返されませんでした。

10
kitschpatrol

OpenCV 3.0は、マスクされたテンプレートとのテンプレートマッチングのネイティブサポートを提供します。 新しいドキュメントを参照してください

パラメーター:

画像...

templ ...

結果...

方法 ...

mask検索されたテンプレートのマスク。 templと同じデータ型とサイズでなければなりません。デフォルトでは設定されていません。

[少し余談]

ただし、マスクされた参照画像(大きい画像)とのテンプレートマッチングは不可能です。 OpenCVがFFTベースのテンプレートマッチングを使用していることを考えると、それは理にかなっています。

したがって、参照画像の特定の領域でのみテンプレートマッチングを実行する必要がある場合は、そのための独自のメソッドを実装するか、cv :: matchTemplateの出力をマスクする必要があります。

最初から実装することで、非常に特定の領域(ハリスの角など)でのみテンプレートを検索したい場合を補正できます。

9

SQDIFF/SQDIFF_Nオプションは、アルファチャネルを黒のRGBカラーで置き換えようとした場合の解決策です。少なくともこれは同じ問題に対する私の解決策でした。私の結果から、この方法はより明るいピクセル値に敏感であることは明らかであり、私はその機会を利用しました。

1
Marstep