2021年6月11日 星期五

s1061460 影像處理作業7

 作業說明:

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

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

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

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

操作環境:

l  作業系統 :  Windows10

l  編譯軟體 :  Jupyter Notebook

l  使用語言 :  Python / OpenCV 4.5.1

實作方法:

1.     讀取檔案,並轉為灰階圖像。

2.     使用數學型態學影像處理運算erode(),dilate(),將圍棋與圍棋分開。

3.     輸出圖像大小,根據其調節minRadiusmaxRadius

4.     運用HoughCircles偵測圍棋

Ø  image:輸入灰階圖。

Ø  circles:以vector< Vec3f >記錄所有圓的資訊,每個Vec3f紀錄一個圓的資訊,包含3個浮點數資料,分別表示xyradius

Ø  method:偵測圓的方法,目前只能使用CV_HOUGH_GRADIENT

Ø  dp:偵測解析度倒數比例,設dp=1,偵測圖和輸入圖尺寸相同。

Ø  minDist:圓彼此間的最短距離,太小的話可能會把鄰近的幾個圓視為一個,太大的話可能會錯過某些圓。

Ø  param1:圓偵測內部會呼叫Canny()尋找邊界,param1就是Canny()的高閾值,低閾值自動設為此值的一半。

Ø  param2:計數閾值,超過此值的圓才會存入circles

Ø  minRadius:最小的圓半徑。

Ø  maxRadius:最大的圓半徑。

5.     輸出檢測到的圓個數

6.     根據檢測到的資訊畫出圓

7.     用指定顏色標出圓的位置

8.    存取標記後影像

執行結果:

    IMG_5702.jpg 實際數量:24

  數學型態學影像處理運算後的圖像:

  程式輸出棋子數量:24(截圖)

    IMG_5703.jpg 實際數量:31

  數學型態學影像處理運算後的圖像:

  程式輸出棋子數量:30(截圖)

    IMG_5704.jpg 實際數量:31

  數學型態學影像處理運算後的圖像:


  程式輸出棋子數量:30(截圖)









沒有留言:

張貼留言