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

Find rotational degree of an object by Two Dimensional Cross Correlation

[背景]

我正在学习二维互相关 (2DCC) 以了解如何将其应用到我当前的项目中。我目前的项目是制定一种有效的方法来查找二维表面上物体的位移和旋转。

为此,我在我的软件环境中做了以下实验。

[实验]

  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[degree],但实际值非常小。
    phase result of 2D Cross Correlation

[问题]

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

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

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

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