0

我正在尝试使用 2D FFT 将过滤器应用于图像。我有滤波器矩阵(卷积核等),但如果我想使用 fft,我需要将滤波器和图片矩阵扩展为 2 方矩阵的幂。

首先我用零扩展它(所以图片和过滤器的矩阵将在 2 矩阵的大幂次的左上角),我得到了这个结果

简单零扩展的结果

然后我尝试了我在应用没有 fft 的卷积时对图片矩阵所做的事情,从每侧使用滤波器维度/2 的填充图片矩阵,然后使用简单的扩展滤波器矩阵到 2 的幂矩阵的填充矩阵与 fft 和 i 进行卷积明白啦 带填充矩阵

这是原图。

原来的

关于算法:我在两个扩展矩阵上应用 2d fft,而不是在我做简单逆 fft 之后的点乘矩阵。图片矩阵也是从 0 到 16M 的数字(前 8 位是红色,第二个 8 位是绿色,第三个 8 位是蓝色)

我认为问题在于我如何将图片和滤波器矩阵扩展为 2 矩阵的平方幂,但我不确定。我测试了 fft 函数(fft 和反 fft,我得到了相同的图片(没有逐点乘法))

过滤器也是

 0 .2  0
.2 .2 .2
 0 .2  0
4

1 回答 1

2

您不需要一次全部转换图像。在子块上使用 FFT。按内核大小重叠转换后的子图像,然后丢弃环绕瞬态(重叠保存)或添加输入打开和输入关闭瞬变(重叠添加)。

在尝试二维快速卷积之前,先了解一维的快速卷积。

于 2013-01-15T05:18:55.383 回答