基於OpenCV的圓斑檢測方法

從一副圖像中檢測出含有的圓形斑點(類似鏤空),斑點內部均勻。檢測條件是圓斑與背景有明顯的對比度差異。

嘗試了三種方法:

      方法一:基於LoG算子的圓斑檢測。

這是常用的斑點檢測方法,可參考http://doc.okbase.net/ronny/archive/102540.html。

此方法的問題是,圖像中不是圓形的斑點也會檢測出來,還需要進一步的判斷,這使得算法的效率不高。

      方法二:使用opencv自帶的SimpleBlobDetector類,同樣可參考http://doc.okbase.net/ronny/archive/102540.html

      這種方法可以設置多重篩選條件,能檢測出圓斑。它的思路是,使用多個閾值分別對圖像進行二值化、檢測輪廓,繼而根據設置的篩選條件檢測出圓斑。       這種方法的缺點是,執行效率低。而且檢測出來的圓斑半徑不準,不知道爲什麼。。

    方法三:基於輪廓特徵進行檢測

      針對方法二多層閾值迭代的缺陷,考慮實時性和當前項目只需要對一種尺寸的圓斑進行檢測,所以採取了簡化方法二的方法。方法思路是,使用otsu方法計算出閾值,對圖像進行二值化。然後檢測二值化圖像的閉合輪廓,計算每個的弧長和包圍面積,繼而計算出該輪廓的圓形率,以此判定圓斑。

         注:在調試中發現,二值化圖像在使用findContours檢測輪廓後,圖像本身會發生變化。這個有點奇怪。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章