归一化互相关的基础知识

时间:2009-11-08 00:08:36

标签: matlab image-processing computer-vision

我正在尝试使用MATLAB中的 normxcorr2 normalized cross-correlation)来计算正在发育的胚胎中移动形状的速度。我有3个问题:

1)我的图像尺寸为260x360像素。我给出了一个10x10像素的模板大小,我要求命令在50x50像素的搜索窗口中的后续帧中搜索此模板。我得到一个大小为59x59的相关矩阵。因此,这意味着命令在搜索窗口内逐个像素地移动模板以寻找最佳相关性。正确?

2)相关矩阵中的每个值表示搜索窗口中的模板矩阵。正确?

3)假设我在相关矩阵的第10行和第16列得到最大值。这意味着最佳相关模板位于图像中y方向上的第10个矩阵和x方向上的第16个矩阵中。正确?

1 个答案:

答案 0 :(得分:4)

为了说明 normxcorr2 的使用,请考虑以下示例(改编自this page

%# Make light gray plus on dark gray background
template = 0.2*ones(11);
template(6,3:9) = 0.6;
template(3:9,6) = 0.6;
BW = single(template > 0.5);         %# Make white plus on black background
imtool(template, 'InitialMagnification','fit')

%# Make new image that offsets the template
offsetTemplate = 0.2*ones(81);
offset = [30 50];                    %# Shift by 30 rows, 50 columns
offsetTemplate( (1:size(template,1))+offset(1), ...
                (1:size(template,2))+offset(2) ) = template;
imtool(offsetTemplate, 'InitialMagnification',400)

%# Cross-correlate BW and offsetTemplate to recover offset
cc_norm = normxcorr2(BW, offsetTemplate);
imtool(cc_norm, 'InitialMagnification',400)
[max_cc_norm, imax] = max( abs(cc_norm(:)) );
[ypeak, xpeak] = ind2sub(size(cc_norm), imax(1));
corr_offset = [ (ypeak-size(template,1)) (xpeak-size(template,2)) ];

fprintf('Input offset: %d,%d\nRecovered offset: %d,%d\n', offset, corr_offset)