10

次の問題に対してOpenCVから使用する最も賢明なアルゴリズム、またはアルゴリズムの組み合わせは何ですか:

  • 小さな2D画像のセットがあります。より大きな画像でこれらのサブ画像の位置を検出したいと考えています。
  • 通常、サブイメージは約 32x32 ピクセルで、大きなイメージは約 400x400 です。
  • サブイメージは常に正方形であるとは限らず、アルファ チャネルが含まれます。
  • 必要に応じて - 大きな画像は、粗く、圧縮され、3D で回転され、またはその他の方法でわずかに歪んでいる可能性があります

私は cvMatchTemplate を試しましたが、結果は非常に貧弱でした (すべての一致方法で、正しく一致させるのが難しく、多数の誤検知が発生しました)。問題のいくつかは、OpenCV がアルファ チャネル テンプレート マッチングを処理できないように見えるという事実から生じます。

手動検索を試してみました。これはうまく機能しているようで、アルファ チャネルを含めることができますが、非常に遅いです。

助けてくれてありがとう。

4

2 に答える 2

7
  1. cvMatchTemplate は、マッチングに MSE (SQDIFF/SQDIFF_NORMED) 種類のメトリックを使用します。この種のメトリクスは、さまざまなアルファ値に深刻なペナルティを課します (方程式の二乗による)。正規化された相互相関を試しましたか? ピクセル強度の線形変動をより適切にモデル化することが知られています。
  2. NCC が機能しない場合は、強度の違いがあまり影響を与えない空間に画像を変換する必要があります。たとえば、エッジ強度の画像 (canny、sobel など) を計算し、これらの画像に対して cvMatchTemplate を実行します。
  3. 画像の縮尺の大きな違い (~10x) を考慮します。画像ピラミッドを使用して、マッチングの正しい縮尺を把握する必要があります。スケール (2^1/x: x が正しいスケール) から始めて、推定値をピラミッドの上に伝播することをお勧めします。
于 2010-12-31T13:25:17.597 に答える
2

必要なのは、SIFT や SURF のようなものです。

于 2011-01-01T03:05:41.213 に答える