【发布时间】:2010-08-24 16:02:49
【问题描述】:
我尝试使用 FFT 实现高斯模糊,可以在此处找到以下配方。
这意味着您可以使用 图像的傅里叶变换 过滤,乘以(复数) 结果,然后取反 傅里叶变换。
我有一个内核 K,一个 7x7 矩阵 和一个图像 I,一个 512x512 矩阵。
我不明白如何将 K 乘以 I。 使 K 与 I (512x512) 一样大是唯一的方法吗?
【问题讨论】:
标签: image-processing fft blur gaussian
我尝试使用 FFT 实现高斯模糊,可以在此处找到以下配方。
这意味着您可以使用 图像的傅里叶变换 过滤,乘以(复数) 结果,然后取反 傅里叶变换。
我有一个内核 K,一个 7x7 矩阵 和一个图像 I,一个 512x512 矩阵。
我不明白如何将 K 乘以 I。 使 K 与 I (512x512) 一样大是唯一的方法吗?
【问题讨论】:
标签: image-processing fft blur gaussian
是的,您确实需要通过用零填充 K 来使 K 与 I 一样大。此外,在填充之后,但在对内核进行 FFT 之前,您需要使用回绕对其进行翻译,以使内核的中心(高斯的峰值)位于 (0,0) 处。否则,您的过滤图像将被翻译。或者,您可以在完成后翻译生成的过滤图像。
另一点:对于不使用 FFT 的小内核,实际上可能更快。 2D 高斯核是可分离的,这意味着您可以将其分成两个用于 x 和 y 的 1D 核。然后,您可以在空间域中的 x 和 y 方向上进行两个 1D 卷积,而不是 2D 卷积。对于较小的内核,最终可能比使用 FFT 在频域中进行卷积更快。
【讨论】:
如果您对像素着色器感到满意,并且 FFT 不是您的主要目标,而是使用高斯模糊内核进行卷积 IS,那么我可以推荐我的教程 on what convolution is
问候。
【讨论】: