一、互相关
下图展示的是信号的卷积,互相关和自相关
从上图分析可知,当两个信号完全重合的时候所得到的互相关的值最大。拓展在二维图像互相关,当两幅图像完全重合的时候具有最大的互相关值,因此互相关可以用于计算两幅图像的位移以及图像配准。
二、二维图像互相关计算过程
一、
matlab—–normxcorr2简要说明
其计算公式如下:
关键只在于返回的尺寸的大小:关键只在于返回的尺寸的大小:
假设 原始图像大小为 , 模板大小为
,则normxcorr2返回的图像大小为
,其移动方式如下图所示:
(图1)模板位于图像的最左上角时:
(图2)当模板位于图像的最右下
二、
ncv—matchTemplate简要说明
其计算公式如下:
关键只在于返回的尺寸的大小:关键只在于返回的尺寸的大小:
假设 原始图像大小为 , 模板大小为
,则matchTemplate返回的图像大小为
移动方式: 模板位于图像的最左上角时:
模板位于图像的最右下角时:
总结
matlab的normxcorr2 和 opencv的matchTempte(TM_CCOEFF_NORMED)算法原理相同, 但是返回图的图像尺度不同. normxcorr2 返回的尺度: (H+h-1)× (W+w-1)(H+h-1)× (W+w-1) matchTemplate(TM_CCOEFF_NORMED)返回的尺度 :
毕竟, normxcorr2目的是NCC, matchTemplate目的是模板匹配。
三、
图像位移
对图像进行互相关运算后,寻找最大位移并配准。
图像进行互相关计算之后,会得到一个矩阵,矩阵中的最大值对应的坐标(x,y)就跟图像的位移有关。
[ypeak,xpeak] = find(tmpXCorr == max(tmpXCorr(:)));
yShift = size(Template,1) - ypeak;
xShift = size(Template,2) - xpeak;
ImStack(:,:,ii) = imtranslate(ImStack(:,:,ii),[xShift yShift],'FillValues',0);
利用上述方法可以得到图像配准需要的位移值,但是利用这种方法只能将位移量精确到像素值。如果还有更精确,可以利用曲线拟合的方式去得到最大值,这样可以是想亚像素的精度。