如何将过滤器从空间域转换为傅里叶域?

信息处理 图像处理 fft 过滤器设计 重采样
2022-02-18 22:44:20

我有一个小的 2D 高斯图像过滤器,我目前正在通过卷积将其应用为窗口。我想在傅里叶域中将其作为单次乘法进行。我想将我当前的小滤波器转换为傅里叶域,因为它具有最大可能的保真度。

我不知道我将应用它的图像的大小,并且希望能够针对任何图像大小动态更改它。我该怎么做呢?

我可以将我的过滤器缩放到图像大小(正方形到矩形),FFT 缩放,现在扭曲并在傅里叶域中相乘吗?

或者

我应该先对其进行 FFT,放大(正方形到矩形)并扭曲 FFT,然后将其相乘吗?

我不相信这两种方法都是正确的。有没有其他的方法?

我在 MATLAB 中使用它

1个回答

对于与图像相比较小的低通滤波器,您可以将滤波器(未缩放)放在正方形/矩形的中心,图像的大小和形状(所有其他像素均为 0),进行 FFT 并相乘傅里叶域中的结果。

由于您使用的是高斯滤波器,因此您可以做一些比这更有效的事情。高斯滤波器是_可分离的_,因此您实际上可以通过在一个维度的每一行(列)中执行一维高斯滤波器,然后在另一维度的每一列(行)中执行一维高斯滤波器来创建二维高斯滤波器。

其次,高斯的傅里叶变换是高斯的。所以我们可以一次在一个维度上工作,我们知道我们会得到什么,并且在傅里叶域中乘以高斯也是可分离的,因为e(x2+y2)=ex2ey2. 唯一的问题是标准差(σ) 转换后的高斯将是。推导在Mathworld上计算为:

F[eax2](k)=πaeπ2k2/a.