2022年6月5日 星期日

s1081515 作業7

作業說明: 

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

開發環境:

  •       Window10   
  •       Microsoft Visual Studio 2019
  •       C++
  •       OpenCv 4.5.5

實作方法:

  1. 讀取圖片後,會檢查是否可讀取到圖片內容
  2. 由於 erode及dilate,只能用於經過二值化的灰階圖片。所以先將圖片轉成灰階圖,並利用threshold對圖片進行二值化運算
  3. 經過二值化的灰階圖片代入erode,如此能讓圖片去噪、細化影像和消除毛刺。
  4. 由於 erode 會讓圖片的輪廓變細,因此需要利用 dilate 讓圖片的輪廓恢復正常大小,圖片會較清晰。
  5. 利用 HoughCircles,偵測圖中的圓形個數,圓形個數即為圍棋的個數
  6. 根據圓形的圓心座標及圓半徑畫圓,利用circle函式畫圓。
  7. 使用迴圈,將偵測到的所有圓形畫在圖片上。
  8. 分別印出第一張,第二張和第三張經過侵蝕及膨脹的圖以及偵測到圓形訂畫出的結果圖。

執行方式/畫面:

IMG_5702.JPG:(原圖:24顆圍棋,偵測:23顆圍棋)


IMG_5703.JPG:(原圖:31顆圍棋,偵測:30顆圍棋)


IMG_5704.JPG:(原圖:31顆圍棋,偵測:31顆圍棋)

偵測結果:

參考資料:

  • https://blog.csdn.net/zangle260/article/details/52981008
  • https://blog.csdn.net/weixin_42469716/article/details/102455723
  • https://www.796t.com/post/NHgxaGE=.html
  • https://blog.csdn.net/sinat_36264666/article/details/78849125
  • https://blog.csdn.net/chengyq116/article/details/104562114




沒有留言:

張貼留言