CUDA / CUBLAS / CUFFT をサポートする OpenCV を使用して、グレースケールのスクリーンショットで非常に基本的なテンプレート マッチングを実行し、テキストを抽出しています。つまり、次のことを想定できます。
一致させようとしている未加工のスプライトの正確なサイズ、色、および回転を知っています。つまり、観察されたプログラムのレンダリング プロセスで使用されたテクスチャにアクセスできます。
ただし、スプライトは部分的に透明であるためcv::(gpu::)matchTemplate
、透明領域の偏差が全体的な相関に悪影響を与えるため、通常のテンプレート マッチング (正規相互相関を使用) は適切に機能しません。
基本的に、これらの例は、私が達成しようとしていることを非常によく要約しています:
照合するテンプレートとそのアルファ マスクを指定すると、次のようになります。
これらのような画像(任意の背景、透明な領域のランダムなもの、部分的に遮られたもの)で高からほぼ100%の一致が欲しい:
ただし、次のような画像は非常に低いパーセンテージしか得られません (間違った色、完全に黒):
現在、エッジ検出を使用してまともな一致 (キャニー + 相互相関) を取得していますが、ご覧のとおり、背景によっては、画像にエッジが存在する場合と存在しない場合があり、信頼性の低い結果が生成され、一般的に非常に一致します。エッジの効いた」エリア。
紙の上では問題なく動作しますが、良好なパフォーマンスで実装することはほぼ不可能です。プログラムの速度に追いつくために、複数のスプライト (~10) をほぼリアルタイム (~10 FPS) で一致させる必要があるためです。
私はここでアイデアを使い果たしています。これに対する標準的なアプローチはありますか?アイデアや提案はありますか?