我必须对许多图像的每一行应用卷积过滤器。经典的是 1024x1024 像素的 360 幅图像。在我的用例中,它是 720 张 560x600 像素的图像。
问题是我的代码比文章中宣传的要慢得多。
我已经实现了朴素卷积,它需要 2m 30s。然后我使用 fftw 切换到 FFT。我使用了 complex 2 complex,在每个转换中过滤两行。我现在20多岁。
问题是文章在 10 多岁左右做广告,对于经典条件甚至更少。所以我想问问这里的专家是否有更快的方法来计算卷积。
数值方法建议避免在 dft 中进行排序并相应地调整频域滤波器功能。但是没有代码示例如何做到这一点。
也许我会浪费时间复制数据。使用 real 2 real 转换,我不必将数据复制到复杂的值中。但无论如何我必须用 0 填充。
编辑:请参阅下面我自己的答案以获取进度反馈和有关解决此问题的更多信息。
问题(精确的重新表述):
我正在寻找一种算法或一段代码,以将非常快速的卷积应用于离散的非周期性函数(512 到 2048 个值)。显然,离散时间傅里叶变换是要走的路。不过,我想避免数据复制和转换为复杂的,并避免蝴蝶重新排序。