【发布时间】:2017-03-08 11:12:28
【问题描述】:
我刚刚做了测试,比较了 OpenCV 的 dft 函数和 Matlab 中的 fft2 的速度。我加载相同的图像,使用 fft2() 和 dft() 进行转换并测量它们消耗的时间。我发现对于图像,dft() 在 win32 发布版本中花费了 2 秒以上,而 fft2() 只花费了 0.2 秒左右。怎么会?我使用的 OpenCV 版本是 2.4.8,而 Matlab 版本是 2013 a。这是我的测试代码
Matlab:
tic
X1 = fft2(im);
toc
C++ 中的 OpenCV:
start1 = clock();
dft(src,src,DFT_COMPLEX_OUTPUT);
end1 = clock();
cout<<(double)(end1 - start1)/CLOCKS_PER_SEC<<endl;
【问题讨论】:
-
MATLAB 对线性代数、泛函分析和其他常用函数和算法使用高度优化的专有实现。答案很简单,MATLAB 的实现更好。
-
我同意你的观点,但你能补充一些你知道的关于实施的细节吗?无论如何,谢谢你,它真的改变了我对 Matlab 的印象,它是一种慢速脚本语言。
-
我不在 MathWorks 工作,所以我没有内幕消息可以和你分享 :)
-
@XiaotianHu MATLAB 可以像任何低级语言一样快(或更快)如果使用正确,特别是对于矩阵运算。它被称为矩阵实验室是有原因的