s1091537 Homework #6

 

1122 Digital Image Processing Assignment #6 報告

學號:s1091537 姓名:蔡佾家

主題: Morphological Image Processing 數學形態學影像處理練習

專案目標:

    利用數學型態影像處理,計算附件圖片中的:(1)大木圓榫數量 (2)小木圓榫數量。具體來說,我先使用Otsu演算法進行二值化,再迭代的erosion至大木圓榫與小木圓榫全部分離,接著尋找connected component、以面積判斷其是屬於大圓榫或小圓榫,最終算出大/小木圓榫總個數(印於圖片右下角)。

    此外,我也以Hough Circle Transform實作出相同的結果,並在最後方探討兩方法的差異。

開發平台:Microsoft Windows 11, Visual Studio Code, OpenCV 4.6.0, Python 3.7.9

主要概念說明:

1.      高斯模糊與二值化

我先進行高斯模糊去除雜訊,接著以Otsu演算法進行二值化。下圖中,左圖是原圖,中間則是模糊化後的圖,右圖是二值化後的圖。

    會採用Otsu演算法進行二值化的理由有三個:(1)圖中的背景與前景顏色不同,且固定為黑色與白色;(2)以直方圖統計可知其呈現雙峰分布,如下圖;(3)圖像的光照均勻。由這三個理由可知Otsu演算法的效果會不錯。

2.      進行erosion以分離圓榫

    由於二值化影像中有數個大小圓榫相連,我們迭代的進行erosion以分離圓榫。下左圖為二值化後的原圖,右圖則為經erosion後的圖。

3.      尋找connected component並以面積判斷大/小木圓榫

觀察erosion後的圖可以發現大圓榫與小圓榫之間面積有很大的差異,因此我先尋找出每個connected component並標示出其中心與面積,方便進一步的選擇閾值。

    在決定出一個面積的閾值200後,當面積小於閾值,程式將認為其是小木圓榫並以紅色標示,當面積大於閾值,程式將認為其是大木圓榫並以紅色標示。最終,程式會將兩類別的數量累加起來印在右下角,如下圖。

成果展示與討論:

1. 成果展示

2. 額外討論:以Hough Circle Transform實作

    除了上面這個方法外,我也有以Hough Circle Transform的方法分辨大圓榫與小圓榫(suppl.py),成果如下圖。然而這個方法對雜訊非常敏感,比較不穩健。若Hough Circle Transform前的模糊化力度不夠,會導致檢測出不存在的圓,但若模糊化的力度過大,又會抹平邊緣,導致檢測不到圓榫。因此,使用上面的方法(Otsu + erosion + 面積判斷)來實作我認為會比較穩固。



留言

這個網誌中的熱門文章

rzwang Homework #1

s1101438 Homework #1

s1093309 作業6