【问题标题】:displacement between 2 images2张图像之间的位移
【发布时间】:2017-06-26 12:42:51
【问题描述】:

我想问一个关于标准化互相关的问题。

确实,归一化互相关(NCC)的计算步骤是:

  1. FFT 或卷积的计算
  2. 本地总和的计算

NCC的公式在本文档底部https://fr.mathworks.com/help/images/ref/normxcorr2.html

在第一步中,我采取了(这是一个例子):

一个=

0.4693    0.2015    0.3220    0.8843
0.9090    0.1872    0.7254    0.8845
0.6666    0.6917    0.4871    0.3952
0.1845    0.9348    0.2403    0.9641

b =

0.5244    0.0120    0.0678    0.8644
0.4334    0.1436    0.4166    0.7587
0.8684    0.7909    0.5884    0.9340
0.4638    0.0562    0.5183    0.6035

然后 a2 =

0.4693    0.2015    0.3220    0.8843         0         0
0.9090    0.1872    0.7254    0.8845         0         0
0.6666    0.6917    0.4871    0.3952         0         0
0.1845    0.9348    0.2403    0.9641         0         0
     0         0         0         0         0         0
     0         0         0         0         0         0

b2 =

0.5244    0.0120    0.0678    0.8644         0         0
0.4334    0.1436    0.4166    0.7587         0         0
0.8684    0.7909    0.5884    0.9340         0         0
0.4638    0.0562    0.5183    0.6035         0         0
     0         0         0         0         0         0
     0         0         0         0         0         0

我找到了:

conv2(rot90(a,2),b)

ans =

0.5055    0.1376    0.5584    0.9575    0.2733    0.8205    0.1595
0.6250    0.5028    1.2366    1.7782    1.0741    1.4291    0.7161
1.4722    1.6299    2.2702    4.1249    2.3243    2.0076    1.4637
1.6373    1.5220    2.8883    5.0546    3.0854    2.4246    1.8292
1.3345    1.8440    2.3115    4.0665    2.5920    1.8209    1.6073
1.1781    1.3650    1.5358    2.9240    1.3762    1.0484    0.9869
0.4101    0.1990    0.5698    0.9295    0.3251    0.3648    0.2832

conv2(rot90(a2,2),b2)

ans =

     0         0         0         0         0         0         0         0         0         0         0
     0         0         0         0         0         0         0         0         0         0         0
     0         0    0.5055    0.1376    0.5584    0.9575    0.2733    0.8205    0.1595         0         0
     0         0    0.6250    0.5028    1.2366    1.7782    1.0741    1.4291    0.7161         0         0
     0         0    1.4722    1.6299    2.2702    4.1249    2.3243    2.0076    1.4637         0         0
     0         0    1.6373    1.5220    2.8883    5.0546    3.0854    2.4246    1.8292         0         0
     0         0    1.3345    1.8440    2.3115    4.0665    2.5920    1.8209    1.6073         0         0
     0         0    1.1781    1.3650    1.5358    2.9240    1.3762    1.0484    0.9869         0         0
     0         0    0.4101    0.1990    0.5698    0.9295    0.3251    0.3648    0.2832         0         0
     0         0         0         0         0         0         0         0         0         0         0
     0         0         0         0         0         0         0         0         0         0         0

因此,添加零不会改变 FFT /卷积的结果。但是在计算局部和之后,结果会发生变化,因为它考虑了 a(或 a2)的大小。 (normxcorr2(a,b)normxcorr2(a2,b2) 不同)

所以当我想使用互相关计算两个灰度图像之间的位移时,结果与我翻译图像(通过用零填充)时的结果不同

您能解释一下为什么即使平移(填充)相同,位移也会发生变化吗?

【问题讨论】:

  • 你如何计算a2b2
  • @m7913d 我用a2=padarray(a,[2 2 ],'post')填充ab

标签: matlab image-processing


【解决方案1】:

看起来像边缘效果。

考虑两个图像 a 和 b,其中蓝色的值为 0.5,红色的值为 0.25。

如果您要在两个图像之间执行相位相关,您会发现图像 a 在 x 方向上平移了一个单位,在 y 方向上平移了 1 个单位,归一化相关值为 1(完美匹配!) .

但是,现在考虑在图像 a 和 b 周围添加 0 的边框来生成图像 A 和 B:

在这些图像周围进行相位相关将导致 x 方向上的 0 偏移和 y 方向上的 0 偏移但是归一化的相关值不会是 1。实际上归一化的相关值是 0.708254。这是有道理的,因为相位相关性与图像的边界相匹配。

有很多方法可以解决这个问题,例如应用汉明窗,我不会涉及。

这篇维基百科文章也是一个很好的参考 (https://en.wikipedia.org/wiki/Phase_correlation)

祝你好运,如果我的回答令人困惑,请告诉我。

【讨论】:

  • 谢谢!它帮助我更多地了解问题!
猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 2019-07-09
  • 2016-09-22
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 2013-06-18
  • 2014-06-13
相关资源
最近更新 更多