2016-04-28 68 views
0

我正在爲我的iOS應用程序使用openCV框架。我正在嘗試尋找一種優化形態操作,佔整個過程的53%。以下是形態操作的代碼:優化iOS中的形態操作OpenCV

// MARK: Closing the image (Method-1) 
    cv:: Mat bw2; 
    cv:: Mat erodedBW2; 
    cv:: Mat se = getStructuringElement(0, cv::Size(140,140)); 
    cv::dilate(Bw_med, bw2, se); 
    cv::erode(bw2, erodedBW2, se); 

// MARK: Closing the image (Method-2) 
    cv::morphologyEx(BW_med, erodedBW2, cv::MORPH_CLOSE, se); 

正如你看到我申請的侵蝕之後的擴張,這相當於關閉操作。我已經嘗試使用MorphologyEx進行關閉操作;但性能仍然相同(包含在上面的代碼中)是否有更好的優化方法?

+0

侵蝕後擴張是一個開放,而不是結束,但它不會改變你的問題。而且,侵蝕+擴張和開放完全相同,處理時間相同。如果你看看Marc Van Droogenbroeck圖書館,他只有一種操作方法可以打開/關閉,但邊界處理是不同的。此外,他的程序庫針對可分解的結構元素進行了優化,我認爲OpenCV – FiReTiTi

回答

0

您的結構元素是非常大:140x140。你真的需要那麼多嗎?嘗試從5x5開始,並比較緩慢增加它的結果。

+0

的情況並非如此。到目前爲止,我已經在各種帶有文本的論文上嘗試過,我發現140是最佳的。對於幾乎乾淨的紙張,30就足夠了;但我需要考慮許多不同的情況,照明可能不均勻。我在文章中遺漏的一點是,這種形態學操作的目的是消除非均勻背景(如果存在)。 – Nasiba

+0

接下來我想嘗試的是降低圖像分辨率。 AFAIK對於n個圖像像素和k個結構元素像素,opencv morpho運算符已經接近最優(O(n * sqrt(k))),除非您平鋪圖像並行化,否則這裏沒有太多改進的餘地。 –