使用FFTW(http://www.fftw.org/)而不是OpenCV的cvDFT(http://goo.gl/YCHj0)时,我能指望加速吗?
我的程序的运行时间很大程度上取决于反向和正向DFT的应用,我正在考虑使用FFTW而不是OpenCV cvDFT。
IIRC FFTW执行某种“运行时编译”,而cvDFT是一种简单的FFT实现,所以我想它可以加快我的处理速度。
所以在我自己尝试之前,我想在这里问一下,以防万一有人偶然发现了同样的问题并解决了它。
提前致谢
答案 0 :(得分:13)
我已经使用过两者(OpenCV和FFTW),你可以期望FFTW比OpenCV中更简单的实现更快(当然,在很大程度上取决于你的处理器和图像大小)。但是,如果您计划在商业上使用您的软件,则FFTW具有相当昂贵的许可证($ 7500.00)。在商业案例中,我建议使用Intel's IPP而不是FFTW,因为性能类似于更实惠的许可证(199.00美元)+你在IPP中获得的功能比使用FFTW更多(即只有FFT库)
Here是FFTW与各种竞争对手图书馆之间的几个基准。结果有点旧,但对比较有用。我不确定为什么不包括IPP 2D变换(也许当这些基准测试完成时它们还不存在)。
如果您使用IPP路由,您可以构建具有IPP支持的OpenCV,它将使用等效的IPP替换本机cvDFT
实现。这将为您带来不错的性能提升(特别是在英特尔芯片上),您无需更改代码。
答案 1 :(得分:0)
在几个FFT选项之间进行了最新的比较,并且做得相当好,其中有非常快速和免费的选项: