テンプレートマッチング
画像の中から指定した部分画像(テンプレート)と似ている場所を探し出すことを、テンプレートマッチングというのですが、詳細は、次のURLを参照して下さい。
イメージングソリューション テンプレートマッチング
プログラムは意外と単純で、計算は、統計的手法と全く同じです。
計算式(1)SSDは、テンプレート画像と、画像の画素の輝度値の差の自乗の総和を求めます。
完全に一致していれば、総和はゼロになります。
計算式(2)SADは、差の絶対値の総和です。
これも、完全に一致すれば、総和はゼロになります。
計算式(3)NCCは、相関係数を求めて、似ているかどうかの判別をします。
相関係数の計算なので、似ているほど1に近い値になります。
完全に一致していれば、1になります。
計算式(4)ZNCCは、平均値が変化しても、一致しているかどうか判別が出来る計算式です。
計算そのものは、統計的手法分散と全く同じです。
相関係数なので、似ているほど1に近い値になります。
完全に一致すれば、1になります。
イメージソリューションのZNCCの計算式ですが、下図の(1)になっています。
(1)の通り素直にプログラムを組んだ場合、ルートと除算以外を、計算高速化の為、整数演算を行うと、INT64を使用しても、オーバーフローします。
テンプレートの画像のサイズが小さければ、オーバーフローは発生しませんが、少しでもオーバーフローの危険性を小さくする対策をします。
そこで、(2)の計算にします。
/MNは、最初に逆数にしておけば、計算は浮動小数点となりますが、乗算で行う事ができます。
シグマの計算は、INT64を使用して、整数演算をして高速演算とします。
(2)の計算が、手順としては、統計的手法の正しい計算手順です。
相関係数Rの値は、0から1の間の値をとるのですが、相関係数Rの値が最大となる座標を探せば、その座標の画像がテンプレートと一番似ている場所となります。
此処でダウンロード出来るプログラム例では、グレイ輝度変換をせず、三色カラーのまま行っていますので、
シグマは三色分計算し、MNは三倍して、計算することになります。
プログラム例はは、SSDと、ZNCCの二つの例となっています。
サンプルプログラムは、画像ファイルを開き、表示された画像にマウスカーソルを置き、左ボタンを押しながらドラッグして、画像を選択、ボタンを離すと、選択した部分がテンプレート画像として、左上に表示されます。
テンプレート画像が、検索画像の一部を使用するため、相関係数は完全一致である 1 になり 判定値は ゼロとして検索されます。