opencv - FFTW 与 OpenCV cvDFT

标签 opencv runtime fftw dft

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

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

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

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

提前致谢

最佳答案

我都使用过(OpenCV 和 FFTW),你可以期望 FFTW 比 OpenCV 中更简单的实现更快(当然,多少取决于你的处理器和图像大小)。但是,如果您计划将您的软件用于商业用途,FFTW 的许可证相当昂贵($7500.00)。在商业案例中,我会推荐 Intel's IPP超过 FFTW,因为性能与更实惠的许可证(199.00 美元)相似 + 您在 IPP 中获得的功能比使用 FFTW 多得多(即,只有一个 FFT 库)。

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

如果您采用 IPP 路线,则可以构建支持 IPP 的 OpenCV,它会将 native cvDFT 实现替换为等效的 IPP。这会给您带来不错的性能提升(尤其是在 Intel 芯片上),而且您不必更改代码。

关于opencv - FFTW 与 OpenCV cvDFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436673/

相关文章:

c++ - 如何在应用颜色校正之前线性化输入图像?

python - 如何在 Python 中使用 OpenCV 3.0 中的 HOG 功能训练 SVM 分类器?

c - 将 fftw3 与 fftw 复杂类型一起使用

c - WAV文件分析C(libsndfile,fftw3)

c++ - 强大的相机校准

java - 依赖于抛硬币的 while 循环的预期运行时间是多少?

android - 如何检查用户是否在运行时在 Android 上授予了权限?

java - 如何将系统属性值传递给 processBuilder?

c++ - fftw 拆分示例崩溃

c++ - 如何传递 opencv 图像以在不同线程的 Qt 场景中显示?