【发布时间】:2017-06-26 12:42:51
【问题描述】:
我想问一个关于标准化互相关的问题。
确实,归一化互相关(NCC)的计算步骤是:
- FFT 或卷积的计算
- 本地总和的计算
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) 不同)
所以当我想使用互相关计算两个灰度图像之间的位移时,结果与我翻译图像(通过用零填充)时的结果不同
您能解释一下为什么即使平移(填充)相同,位移也会发生变化吗?
【问题讨论】:
-
你如何计算
a2和b2? -
@m7913d 我用
a2=padarray(a,[2 2 ],'post')填充a和b