作業說明:
數學型態學影像處理應用 Morphological Image Processing
利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。
請呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖。
開發環境:
· Windows 10
· Visual Studio 2013
· C#
實作方法:
1. 讀取測試影像檔案,先將彩色圖轉成亮度圖,並依據門檻值,自動進行二值化處理,轉成黑白圖。
2. 由於黑色棋子有程度不一的碰觸或重疊,先簡單地利用3x3大小structuring element,針對二值化後的黑白圖進行Morphology的Opening process (先做Erosion,再做Dilation)。
3. 由於黑色棋子有圓形的特性,圓形的公式為(x-Cx)2+(y-Cy)2=R2,其中(Cx, Cy)是圓心座標,R是半徑。因此,可透過Hough Transform,針對所有邊緣點做(Cx, Cy, R)的三維空間投票,找出邊緣點落在哪些可能的圓形上。
(1). 將前述進行Morphology的Opening process後結果圖,進行邊緣點偵測。
(2).
設定圓心座標可能的範圍,以及圓形半徑的範圍後,即可利用Hough Transform,找出可能的圓形區域。並透過圓形位置檢查,避免因誤差而找出重複圓形區域;再透過圓內正方形的黑點數比例檢查,避免找出錯誤的圓形區域。
執行結果:
1. 程式執行後,介面如下。
2. 按下『Load』鈕讀取測試影像Jpeg檔案,設定二值化所需的門檻值後,再按『Binarization』鈕,將原彩色圖自動轉為亮度圖,並依據二值化門檻值,自動轉為二值化黑白圖。
3. 先按『Erosion』鈕,再按『Dilation』鈕則可進行Morphology的Opening process。
4. 按『Boundary』鈕,可自動針對Morphology的Opening process結果,進行邊緣點的偵測。
5. 按『Hough Transform』鈕,即可針對所有邊緣點做(Cx, Cy, R)的三維空間投票,找出邊緣點落在哪些可能的圓形上。並透過圓形位置檢查,以及圓內正方形的黑點數比例檢查,避免找出重複或錯誤的圓形區域。介面上會以紅色標示找出的圓形區域,並顯示數量。
6. 其他兩張測試影像的偵測結果,如下所示。
錯誤分析:
透過邊緣點的Hough Transform,仍無法找出的圓形區域,主要有兩個原因。
1. 與相鄰黑棋的疊合區域大,導致該圓形的邊緣點數量不足。
2. 透過Morphology的Opening process後,黑棋內的反光區域仍大,檢查圓形區域內正方形的黑點數比例,誤判為非正常圓形,而被去除。
程式執行結果: