部分文字列ではなく部分文字を見つける方法は?大きな画像で小さな画像の位置を見つける必要があります。それを行う方法はありますか?
つまり、gtk.gdk.Pixbufのピクセルに対して、より迅速にループする方法を教えてください。
部分文字列ではなく部分文字を見つける方法は?大きな画像で小さな画像の位置を見つける必要があります。それを行う方法はありますか?
つまり、gtk.gdk.Pixbufのピクセルに対して、より迅速にループする方法を教えてください。
あなたが探しているのは、テンプレート マッチングのアルゴリズムです。私は簡単に画像処理を学びましたが、これを行う方法を学んだ唯一の方法は、必要な形状を検出するために使用できる一般化されたハフ変換を使用することでした。他の方法もあるかもしれませんが、これは間違いなく、すべてのピクセルを反復処理するよりもはるかに高速で堅牢です。
どうやら、Python のPILパッケージにはハフ変換が実装されているようです。サンプルコードはこちら。私は PIL を使用したことはありませんが、これらのリンクで十分に使い始めることができます。
部分文字列に関連して問題を説明し始めたので、部分文字列の問題の場合と同様に、部分画像がより大きな画像に存在すると思います。このタスクを実行するには、サブピクチャと大きい方のピクチャの間の関連付けを実行します。より具体的には、それらの間の正規化された相互相関が必要であり、結果として得られるグローバル ピークが最適な一致を示します。
これは、サンプル画像、そこから取得したサブピクチャ、および結果の相関画像です。
結果の相関におけるグローバルな最大値 (単一のポイント) は次のとおりです。
そして、これは元の画像の上にあるグローバル最大値を中心としたサブピクチャです。
Matlab では、これは 1 行で済みます。
h = normxcorr2(g, f); % g is a subpicture from f.