用FFT进行高斯模糊

9

我正在尝试使用FFT实现高斯模糊,发现了以下方法。

这意味着您可以对图像和滤波器进行傅里叶变换,将(复杂的)结果相乘,然后进行反向傅里叶变换。

我有一个7x7矩阵的核K和一个512x512矩阵的图像I。

我不明白如何将K乘以I。唯一的方法是使K与I一样大(512x512)吗?

2个回答

17

是的,你需要通过在K后面填充零来使其与I一样大。此外,在填充之后,但在对卷积核进行FFT之前,您需要使用环绕方式将其平移,使得卷积核的中心(高斯峰值)位于(0,0)。否则,您过滤后的图像将被平移。或者,在完成后可以平移结果过滤后的图像。

另一个要点:对于小内核,不使用FFT可能实际上更快。2D高斯内核是可分离的,这意味着您可以将其分成两个x和y方向的1D内核。然后,您可以在空间域中沿x和y方向进行两个1D卷积,而不是2D卷积。对于较小的内核,这可能比使用FFT在频率域中进行卷积更快。


2
如果您对像素着色器感到舒适,且FFT不是您的主要目标,但使用高斯模糊核进行卷积是,则我可以推荐我的教程关于什么是卷积
此致。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接