利用图像互相关计算图像位移

一、互相关

下图展示的是信号的卷积,互相关和自相关

 从上图分析可知,当两个信号完全重合的时候所得到的互相关的值最大。拓展在二维图像互相关,当两幅图像完全重合的时候具有最大的互相关值,因此互相关可以用于计算两幅图像的位移以及图像配准。

 二、二维图像互相关计算过程

一、

matlab—–normxcorr2简要说明

其计算公式如下:

关键只在于返回的尺寸的大小:关键只在于返回的尺寸的大小:
假设 原始图像大小为 H\times W, 模板大小为 h\times w,则normxcorr2返回的图像大小为 (H+h-1)\times (W+w-1),其移动方式如下图所示:

(图1)模板位于图像的最左上角时:

(图2)当模板位于图像的最右下

 

二、

ncv—matchTemplate简要说明

其计算公式如下:

 关键只在于返回的尺寸的大小:关键只在于返回的尺寸的大小:
假设 原始图像大小为 H\times W , 模板大小为h\times w ,则matchTemplate返回的图像大小为(H-h+1)\times (W-w+1)

移动方式: 模板位于图像的最左上角时:

 模板位于图像的最右下角时:

 总结 
matlab的normxcorr2 和 opencv的matchTempte(TM_CCOEFF_NORMED)算法原理相同, 但是返回图的图像尺度不同.  normxcorr2 返回的尺度: (H+h-1)× (W+w-1)(H+h-1)× (W+w-1)  matchTemplate(TM_CCOEFF_NORMED)返回的尺度 :(H-h+1)\times (W-w+1)
毕竟, 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);

利用上述方法可以得到图像配准需要的位移值,但是利用这种方法只能将位移量精确到像素值。如果还有更精确,可以利用曲线拟合的方式去得到最大值,这样可以是想亚像素的精度。

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值