通过二维互相关找到对象的旋转度

时间:2018-07-06 04:20:54

标签: image-processing cross-correlation

[背景]

我正在学习二维互相关(2DCC),以查找如何将其应用于我的当前项目。我当前的项目是提供一种有效的方法来查找2D曲面上对象的位移和旋转。

为此,我在软件环境上进行了以下实验。

[实验]

  1. 我有一个1024x1024的图像,中间有一只鸭子。
    1024x1024 image with a duck located at center

  2. 我还有另一个1024x1024图像,其中一只鸭子不在其中心,并且旋转了。 1024x1024 image with a duck at 752, 336 rotated 123

  3. 然后,将两个图像应用于二维互相关。
    我得到了以下幅度,并且其互相关结果的峰值索引几乎与我的第二张图像的鸭形位移相匹配。
    amplitude result of 2D Cross Correlation

  4. 另一方面,相应振幅峰值的索引处的相位值与我的第二幅图像的鸭形旋转不匹配。在第二张图片中看到的期望相位值为123 [度],但实际值很小。
    phase result of 2D Cross Correlation

[问题]

在这种情况下,二维互相关是恢复鸭子旋转度的正确方法吗?

1 个答案:

答案 0 :(得分:1)

互相关仅产生偏移。它的作用是比较所有可能翻译的两个图像。

您通过傅立叶域计算了互相关,并获得了具有非常小的虚数值的结果。这些是数值不正确的结果,应该忽略。两个实值信号(或图像)的互相关就是实值信号(或图像)。

要找到旋转角度,您可能应该查看Fourier-Mellin transform