8

使用 FFTW (http://www.fftw.org/) 而不是 OpenCV 的 cvDFT (http://goo.gl/YCHj0) 时,我可以期待加速吗?

我的程序的运行时间很大程度上取决于逆向和正向 DFT 的应用,我正在考虑使用 FFTW 而不是 OpenCV cvDFT。

IIRC FFTW 进行某种“运行时编译”,而 cvDFT 是一个简单的 FFT 实现,所以我想它可以加快我的处理速度。

所以在我自己尝试之前,我想在这里问一下,以防有人偶然发现同样的问题并在之前解决了它。

提前致谢

4

2 回答 2

15

我都使用过(OpenCV 和 FFTW),您可以期望 FFTW 比 OpenCV 中更简单的实现更快(当然,这在很大程度上取决于您的处理器和图像大小)。但是,如果您打算在商业上使用您的软件,FFTW 有一个相当昂贵的许可证(7500.00 美元)。在商业案例中,我会推荐英特尔的 IPP而不是 FFTW,因为性能与价格相似的许可证(199.00 美元)相似,而且您在 IPP 中获得的功能比使用 FFTW(即,只有一个 FFT 库)要多得多。

以下是 FFTW 和各种竞争对手库之间的几个基准测试。结果有点旧,但用于比较。我不确定为什么不包括 IPP 2D 转换(也许当这些基准测试完成时它们还不存在)。

如果你走 IPP 路线,你可以构建带有 IPP 支持的 OpenCV,它将cvDFT用 IPP 等效替换本机实现。这将为您带来很好的性能提升(尤其是在英特尔芯片上),并且您不必更改代码。

于 2012-05-03T18:20:20.243 回答
0

几个 FFT 选项之间的更新和相当完善的比较,有非常快速和免费的选项:

https://github.com/project-gemmi/benchmarking-fft

于 2020-09-15T21:43:27.120 回答