同じ画像の位置を調べるには?

解決


かんた  2004-09-03 03:40:31  No: 85407  IP: [192.*.*.*]

壁紙のような大きな画像Aに、アイコンのような小さな画像Bが含まれているとします。
画像Bが、画像Aのどの位置に含まれているかを調べることってできるでしょうか?

編集 削除
Say  2004-09-03 20:50:56  No: 85408  IP: [192.*.*.*]

原理的には、メモリ展開して、
完全一致するまでバイナリコンペアすればいいのでは?
非可逆圧縮しているとコンペアできなくなりますが。

編集 削除
かんた  2004-09-04 10:29:30  No: 85409  IP: [192.*.*.*]

RES ありがとうございます。
なるほど、バイナリコンペアですね〜。APIとかあるのでしょうか?
それと、一致した場所から画像の座標が計算できるのでしょうか?

編集 削除
Say  2004-09-04 18:52:13  No: 85410  IP: [192.*.*.*]

「バイナリコンペア」といっても、
画像データを2次元配列に展開しているのなら
矩形範囲の各要素を順次比較するだけです。
一致位置が座標になります。

PictureBoxに置いているのなら、(速度を気にしないなら)
矩形範囲を順次Pointして比較していくだけです。
やはり一致位置が座標になります。
速度が気になるならGDIを使えばいいでしょう。

画像ファイルどうしで比較しようと思ったら、
まず画像ファイルフォーマットを知る必要があります。
圧縮された画像の場合はまず展開する必要があります。
展開の方法は圧縮フォーマットに依存します。
既に述べたように非可逆圧縮フォーマットの場合、比較は極めて困難です。

完全一致比較の場合、非可逆圧縮でなければ比較的簡単ですが、
拡大縮小、回転、鏡像、減色、ゆがみ、ノイズなどを考慮して比較するとなると
精度によってはAI並みのパターンマッチングアルゴリズムが必要になります。

編集 削除
かんた  2004-09-06 12:49:39  No: 85411  IP: [192.*.*.*]

BMPをGDIで色々やってみます。
ありがとうございました。

編集 削除