Main Content

normxcorr2

正規化された 2 次元相互相関

説明

C = normxcorr2(template,A) は、行列 template および A の正規化された相互相関を計算します。結果の行列 C には相関係数が含まれています。

すべて折りたたむ

2 つのイメージをワークスペースに読み取って、normxcorr2 で使用するグレースケールに変換します。イメージを並べて表示します。

onion = im2gray(imread('onion.png'));
peppers = im2gray(imread('peppers.png'));
montage({peppers,onion})

Figure contains an axes object. The axes object contains an object of type image.

相互相関を実行し、結果を表面として表示します。

c = normxcorr2(onion,peppers);
surf(c)
shading flat

Figure contains an axes object. The axes object contains an object of type surface.

相互相関のピークを検出します。

[ypeak,xpeak] = find(c==max(c(:)));

normxcorr2 で追加されるパディングを考慮します。

yoffSet = ypeak-size(onion,1);
xoffSet = xpeak-size(onion,2);

関数 drawrectangle を使用して、一致した領域を表示します。名前と値のペアの引数 'Position' は、ROI の左上の座標、幅、高さを 4 要素ベクトル [xmin,ymin,width,height] として指定します。ROI の面を完全に透明と指定します。

imshow(peppers)
drawrectangle(gca,'Position',[xoffSet,yoffSet,size(onion,2),size(onion,1)], ...
    'FaceAlpha',0);

Figure contains an axes object. The axes object contains 2 objects of type image, images.roi.rectangle.

入力引数

すべて折りたたむ

入力テンプレート。数値行列として指定します。template のすべての値が同じであってはなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

入力イメージ。数値イメージとして指定します。意味のある正規化を行うには、A が行列 template より大きくなければなりません。

正規化された相互相関は、テンプレートの全範囲で A の分散がゼロである領域において、定義されていない演算です。これらの領域では、normxcorr2 は出力 C に相関係数ゼロを割り当てます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

出力引数

すべて折りたたむ

相関係数。範囲 [-1, 1] の値を持つ数値行列として返されます。

データ型: double

アルゴリズム

normxcorr2 では、次の一般的な処理を使用します ([1][2])。

  1. イメージのサイズに応じて、空間領域または周波数領域の相互相関を計算します。

  2. あらかじめ累積和を計算することによって、局所的な和を計算します。

  3. 局所的な和を使用して相互相関を正規化し、相関係数を取得します。

実装は、[1] の式に従って行います。

γ(u,v)=x,y[f(x,y)f¯u,v][t(xu,yv)t¯]{x,y[f(x,y)f¯u,v]2x,y[t(xu,yv)t¯]2}0.5

ここで、

  • f はイメージです。

  • t¯ はテンプレートの平均値です。

  • f¯u,v はテンプレートの下の領域にある f(x,y) の平均値です。

参照

[1] Lewis, J. P. "Fast Normalized Cross-Correlation." Industrial Light & Magic, 1995. http://scribblethink.org/Work/nvisionInterface/nip.pdf.

[2] Haralick, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Volume II, Addison-Wesley, 1992, pp. 316-317.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

参考

|