我正在实施相位相关算法来确定两个图像之间的偏移。
它通常有效,但我不确定如何解释由此产生的转变。
伪代码:
ft1 = FT(input1)
ft2 = FT(input2)
for each pixel p
product = ft1[p] * conj(ft2[p])
cross_power[p] = product / abs(product)
cross_correlation = IFT(cross_power)
其中 FT 和 IFT 分别是离散傅里叶变换及其逆变换。
以下是取自维基百科的输入图像和产生的相位相关性:

峰值位于 (20, 21),对应于第二个图像的移动。
我得到了类似的结果,但结果却是颠倒的:

当我翻转输入图像时,峰值出现在相位相关图像的左上角,但是如何将其解释为负偏移(-20,-21)?基于图像象限?
我正在使用 Math.NET Numerics 包中的傅立叶变换例程。它只提供 1D FT,所以我先对行进行转换,然后再对列进行转换以获得 2D FT。
如何从峰值位置提取偏移并允许负偏移?
为什么我的结果中的峰值位置不同?