两幅图像之间的位移

时间:2017-06-26 12:42:52

标签: matlab image-processing

我想问一个关于规范化互相关的问题。

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

  1. FFT或卷积的计算
  2. 计算当地金额
  3. NCC的公式可在本文档底部https://fr.mathworks.com/help/images/ref/normxcorr2.html

    中找到

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

    a =

    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)

    不同

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

    你能解释一下,即使翻译(填充)相同,位移也会发生变化吗?

1 个答案:

答案 0 :(得分:1)

看起来像边缘效应。

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

enter image description here

如果要在两个图像之间执行相位相关,您会发现图像a已经在x方向上转换了一个单位,在y方向上转换了1个单位,其归一化相关值为1(完全匹配!) 。

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

enter image description here

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

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

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

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