2019年6月6日 星期四

s1043325 的作業 5

數學型態學影像處理應用 Morphological Image Processing

請撰寫一個程式,利用數學型態學影像處理運算,計算出所附圖像(共三張)每張圖像中 圍棋個數。
a. 請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋 子數量的螢幕截圖。
b. 程式不一定可以算出正確棋子數量,越接近正確答案越好!

環境與使用套件版本

  • Windows 10
  • Python 3.7.1
    • opencv-python 4.0.0.21
    • PyQt5 5.12 

實作方式

  1. 將圖片轉為灰階並使用 GaussianBlur 將圖片模糊處理去除雜訊
  2. 將圖片做二值化處理
  3. 使用 erode 侵蝕圖片
  4. 使用 findContours 取得圖片輪廓數

使用方法

Step1. 運行程式

 

Step2. 點擊選擇圖片,讀入想要的圖片

 

Step3. 點擊計算數量,計算出的數值顯示在右下方 (可自訂 erode 的 kernel 大小)

 

Step4. 點擊查看圖片,可以顯示輪廓圖片

 


實作過程

1. 將題目所給的三張圖片餵入程式
2. 翻覆測試 erode 函數之 kernel 大小與輪廓的關係
3. 並將計算出來的輪廓數量記錄下來,結果如下表


紅色字為 3 種 kernel 中最接近正解








  •  IMG_5702.JPG 在不同 kernel 對應的輪廓圖與數量
在這張圖片中,棋子重疊的部分多,在使用較大的 kernel 下,會取得比較準確的數值
































  •  IMG_5703.JPG 在不同 kernel 對應的輪廓圖與數量
而在這張圖片中,棋子反光與重疊的部分多,在使用較大的 kernel 下,
會使得圖片侵蝕過多,取得較不準確的數值


























  •  IMG_5704.JPG 在不同 kernel 對應的輪廓圖與數量
第三張圖片中,棋子重疊與反光的部分少,
使用 200~300 間的 kernel 大小均能取得精準的數值

沒有留言:

張貼留言