2015-10-04 70 views
4

要求圖像去噪。用OpenCV試試吧,每張圖片的性能都很差〜30s!OpenCV去噪非常慢

嘗試使用:

cv::fastNlMeansDenoising 
cv::fastNlMeansDenoisingColored 
cv::xphoto::dctDenoising 

圖片:最大範圍(1024×1024)colred 3通道調用的

樣本:

Mat src; 
cv::imread("myfileName.jpg", src); //assume it's 1024x768 photo 
Mat trg(src.size(),src.type()); 
cv::xphoto::dctDenoising(src,trg,15); // sygma 15 got from algorithm's site as balanced value 

一切運作良好,但速度很慢。

我的配置:

聯想T510,酷睿i7

的Windows 10

OpenCV的3.0.0(來源 - 最新 - 穩定)

TBB(從官方網站最新斌)

OpenCV使用默認的CMAKE設置與VS2015一起構建,沒有「world」模塊和WITH_TBB,所有TBB目錄都設置爲(.../ia32/vc12)

(對於第一次看我認爲問題是,我的OpenCV沒有TBB建的,但TBB不與降噪幫助)

資源:

  1. 在執行過程中CPU負載達到100%所有的內核(在工作,所以多處理)

  2. 使用多達14個線程(所以mutithreading是工作)

在哪裏可以解決這個性能問題,或者它是用OpenCV去噪的真正速度?

可能是C++設置中的一些問題我的控制檯應用程序構建(我來自.net世界和C++對我來說並不是那麼熟悉)?

+1

您是否嘗試過使用NLMeans使用較小的搜索窗口? – Rotem

+1

已經嘗試了你的建議\t cv :: fastNlMeansDenoising(_out,tmp,3,3,3) - (默認爲3,7,21)它當然很快,但噪音並沒有減少。任何時候,當我放大圖像頁面大小時,它至少可以獲得30秒的時間。 –

回答

3

答案很簡單 - 我使用的是opencv的調試版本(通常爲.net),但對於C++性能而言,Debug和Release配置之間差別很大。

重新映射到發佈版本後,每個圖像的持續時間在5秒附近。這並不是我期望的那麼快,但它是可用的。