我正在尝试使用2D FFT将滤镜应用于图像。我有滤波器矩阵(卷积核等),但如果我想使用fft我需要将滤波器和图像矩阵扩展到2平方矩阵的幂。
首先我用零展开它(因此图像和滤波器的矩阵将位于2矩阵的大功率的左上角)我得到了这个结果
然后我尝试使用图像矩阵时,我在应用没有fft的卷积,填充图像矩阵,每边有滤波器尺寸/ 2,而不是带有简单扩展滤波器矩阵的填充矩阵到2矩阵的幂以进行卷积fft,我得到了这个
这是原始图片。
关于算法: 我在扩展矩阵上应用2d fft,然后在我做简单逆fft之后应用逐点乘法矩阵。图像矩阵的编号从0到16M(前8位为红色,后8位为绿色,第3位为蓝色)
我认为问题在于我如何将图片和滤镜矩阵扩展为2矩阵的平方幂但我不确定。我测试了fft函数(fft和反fft,我有相同的图片(没有逐点乘法))
还有过滤器
0 .2 0
.2 .2 .2
0 .2 0
答案 0 :(得分:2)
您无需一次转换图像。 在子块上使用FFT。通过内核大小重叠转换的子图像,并丢弃环绕瞬态(重叠保存)或添加输入和输入瞬态(重叠 - 添加)。
在尝试两个维度之前,先了解一个维度中的fast convolution。