顯示具有 1902hw7 標籤的文章。 顯示所有文章
顯示具有 1902hw7 標籤的文章。 顯示所有文章

2021年6月12日 星期六

s1071534 影像處理作業7

作業說明:

  請撰寫一個程式,利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。

a.    請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖。

b.    程式不一定可以算出正確棋子數量,越接近正確答案越好!

執行環境:

  • windows10
  • Python 3.6
  • OpenCV 4.5.1

實作方式:

1. 讀取圖片,並將其resize為(1036,690)
2. 對圖片做二質化
3. 使用 cv2.HoughCircles 找出圖片中圓形部分
4. 將找到的圓畫在二質化的圖片上
5. 使用cv2.getStructuringElement設定kernal為橢圓形(經過測試橢圓的效果較佳)
6. 先對圖片做兩次膨脹(去除亮點雜訊)
7. 在對圖片做九次侵蝕(分離棋子)
8. 在對圖片做五次膨脹(使結果明顯化)
9. 使用cv2.findContours計算共有幾顆棋子

執行結果:

1. circle_IMG_5702.JPG
原圖

侵蝕與膨脹處理後的圖

將結果與原圖重疊
實際數量:24 辨識結果:24

2. circle_IMG_5703.JPG
原圖

侵蝕與膨脹的結果

將結果與原圖重疊
實際數量:31 辨識數量30
3. circle_IMG_5704.JPG
原圖

侵蝕與膨脹結果

將結果與原圖重疊
實際數量:31 辨識數量:31
實作心得:
一開始打算單純使用侵蝕與膨脹的技巧做數量的辨識,
但是經過不斷嘗試更改重複侵蝕與膨脹的次數、侵蝕與膨脹的交替使用、多種kernal的組合...等,
都無法解決不同的圖片都需要各自調整參數的問題,
後來加上了HoughCircles,
才得以完成在不修改參數的情況下98.8%的辨識率((24+30+31)/(24+31+31))







s1071543 影像處理作業7

作業說明

請撰寫一個程式,利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。

執行環境

  • OS: Arch Linux x86_64
  • Editor: Visual Studio Code
  • Python: 3.7.9
  • OpenCV: 3.4.2

方法

  1. 灰階
  2. 侵蝕
  3. 排除過小
  4. 找出最多

執行結果

IMG_5702.JPG


 

 誤差0

 

 IMG_5703.JPG

誤差0


 IMG_5704.JPG

 

 

  誤差0