我剛測試過比較OpenCV和fft2在dft函數中的速度。我加載相同的圖像,使用fft2()和dft()進行轉換並測量它們消耗的時間。我發現對於圖像來說,dft()在win32發佈版本中花費了2秒多,而fft2()只花了0.2秒。怎麼來的?我使用的OpenCV版本是2.4.8,而Matlab版本是2013a。這裏是我的測試代碼爲什麼Matlab fft2比OpenCV dft快得多
Matlab的:
tic
X1 = fft2(im);
toc
OpenCV的在C++:
start1 = clock();
dft(src,src,DFT_COMPLEX_OUTPUT);
end1 = clock();
cout<<(double)(end1 - start1)/CLOCKS_PER_SEC<<endl;
MATLAB爲線性代數,功能分析和其他常用函數和算法使用高度優化的專有實現。答案只是MATLAB的實現更好。 – buzjwa
我同意你的看法,但是你能否添加一些你知道的實現細節?無論如何,謝謝你,它真的改變了我對Matlab的印象,它是一種慢腳本語言。 –
我不在MathWorks工作,所以我沒有內部信息與你分享:) – buzjwa