离散傅里叶变换的居中零频率


11

我正在开发一个图像处理应用程序,该应用程序使用离散傅立叶变换来实现模糊/锐化。该应用程序或多或少都可以正常工作,但是有关机制的某些内容仍然让我感到困惑。

尤其是如何完成对零频率居中的过程。

我看到的示例通过将输入图像与大小等于输入图像的矩阵相乘来预处理(灰度强度的)输入图像,其值是,其中是行,是列,因此模式交替和 x y(1)x+yxy11

根据说明,这等效于通过在和轴上翻转来交换矩阵的象限。xy

我知道为什么这样做,并且我想强调一下,我知道我的代码/傅立叶资料正在工作,我只是不明白为什么将输入矩阵乘以1 / -1会导致零频率分量围绕0居中。

谢谢


您也可以在Gonzalez的《数字图像处理》的第4章4.6-实现中找到一些参考(我有第二版)。希望能帮助到你。
hakunami

Answers:


18

哦! 真是太酷了!它基于卷积定理起作用(即,在空间/时域中的乘法等效于在频域中的卷积)。

它并没有在y轴上翻转,而是在旋转傅立叶变换的图像(想像是在圆柱体周围移动一半)。这里的技巧是,在空间域中交替-1,1是频率最高的信号。因此,该图像的傅立叶变换是频域中的单个点。对单个点进行卷积等效于将图像从零频率偏移(旋转)点的偏移量。xy

这是一个测试图像: 测试影像。它的傅立叶变换看起来像:测试图像的傅立叶变换

如果您对交替图像(棋盘图像)进行傅立叶变换,则会在傅立叶变换的中心产生一个单点:在此处输入图片说明。(回想一下,我们还没有旋转,所以傅立叶变换的中心是高频,而低频仍然在拐角处。)但这就是“旋转核!”。与此旋转内核进行卷积,可以将所有内容向下和向右移动(但是从右下角掉落的内容将旋转到左上角。)

将原始图像与旋转核(在图像域中)卷积图像卷积可以得到:,而对傅立叶变换图像与旋转核(在频域中)卷积可以得到:旋转傅立叶变换

并且我们可以检查将testimage乘以image域中的棋盘格是否给出乘法图像,其傅立叶变换为:再次旋转傅立叶变换


我糊涂了。这是使用卷积实现fftshift类似函数吗?直接重新排列4个象限在计算上便宜吗?
Endlith 2013年

2
这里没有直接的卷积。这是在图像域中使用逐像素乘法来获得与傅立叶域中的卷积等效。是的,fftshift不是很昂贵,但是此技巧可能具有更好的缓存行为。逐像素乘法实际上只是在翻转其他每个像素的符号。如此容易向量化,读-修改-写的写入是保证的高速缓存命中,并且处理器很容易预取读取。
漫游逻辑

哦,对,这是一个符号翻转,不是真正的乘法。
Endlith 2013年

为什么测试图像(第二个图像)的傅立叶变换看起来像这样?我实际上看到了两个图像,一个在另一个上。
hakunami

10

Wandering Logic的答案是正确且详细的。只是以为您想看一些数学而不是图片:

(1)k=ejωω2π(k/2)

结果是零频率-以前在索引0处-现在是图像宽度(或高度,取决于是否乘以列或行)的一半。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.