在频域中乘以图像

时间:2011-03-21 16:26:35

标签: math image-processing signal-processing fft

我一直在处理频域中的图像(通过拍摄图像的DFT或FFT),我知道空间域中的卷积是频率的倍增。

所以我的问题是,如果我想在空间域中应用特定的内核(比如9x9平滑内核),我只需要通过9x9过滤器对整个图像进行卷积。现在,如果我想在频域中做同样的事情,我是否应该对图像和内核进行FFT?然后如何/我将如何繁殖?在我拥有了这组新数据(图像乘以内核)之后,我只是反转了FFT的方向,这应该给我与在空间域中与图像卷积的内核相同的结果,对吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

IIRC,设法将相同尺寸的FFT图像和内核(均为FFT),然后逐个像素地将FFT图像相乘,然后对结果进行反FFT。

注意图像边界的变化(参见FFT理论)。

答案 1 :(得分:2)

请注意,FFT乘法与循环卷积相同(例如,好像数据的边缘缠绕在一起)。如果您不希望卷积结果出现这些圆形边缘效应,则可以将数据填充至少卷积内核的非零长度加1。您还必须对卷积内核进行零填充以使其具有相同的长度。

例如,在您的情况下,您可以使用长度为522 FFT(512 + 9 + 1),或者可能使用540长度的FFT,其具有较小的价格因素(FFTW库可用于非常有效的非功率-2 FFT),或零填充,一直到1024 FFT的长度,如果你必须使用2的幂。

在@ maola的答案中,数据和内核的FFT必须具有相同的长度(否则您乘以的频率将不匹配),并且您必须在频域中进行复数乘法。 / p>