jjzjj

c++ - 如何执行 FFT2D(快速傅立叶变换 2D)R、G、B 颜色分量

我是快速傅里叶变换(FFT)的新手,不太清楚它是如何用C++等编程语言计算的。这是FFT2D的方法voidFFT2D(Complex*f,Complex*F,intwidth,intheight);Ittakesaninputimagefofsizewidth*heightandoutputthetransformedcoefficientsintoF.提示:图像像素存储为三个独立的图像颜色(R、G、B)平面,每个平面由一维复数数组表示。假设一幅图像的尺寸为宽W,高H,则图像位置(m,n)处像素的颜色分量值(R,G,B)可表示为R[m+n*W],G(m+n*W)和B[m+n*W],其中

c++ - 具有 FFT 问题的高斯模糊

我有一个使用常规卷积的高斯模糊的当前实现。它对于小内核来说足够有效,但是一旦内核大小变大一点,性能就会受到影响。所以,我正在考虑使用FFT实现卷积。我从来没有任何与FFT相关的图像处理经验,所以我有几个问题。基于二维FFT的卷积是否也可分为两个一维卷积?如果为真,它是不是像这样-对每一行进行一维FFT,然后对每一列进行一维FFT,然后乘以二维内核,然后对每一列进行逆变换,对每一行进行逆变换?或者我是否必须在每次1DFFT变换后与1D内核相乘?现在我明白内核大小应该与图像(一维情况下的行)大小相同。但它将如何影响边缘?我是否必须用零填充图像边缘?如果是这样,内核大小应该等于填充之前或之后