作業說明:
數學型態學影像處理應用 Morphological Image Processing
請撰寫一個程式,利用數學型態學影像處理運算(erode(),
dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。
a. 請在部落格呈現經由數學型態學影像處理運算後的圖像,
同時要呈現你程式輸出棋子數量的螢幕截圖。
b.
程式不一定可以算出正確棋子數量,越接近正確答案越好!
操作環境:
l
作業系統 : Windows10
l
編譯軟體 : Jupyter
Notebook
l
使用語言 : Python
/ OpenCV 4.5.1
實作方法:
1.
讀取檔案,並轉為灰階圖像。
2.
使用數學型態學影像處理運算erode(),dilate(),將圍棋與圍棋分開。
3.
輸出圖像大小,根據其調節minRadius和maxRadius。
4.
運用HoughCircles偵測圍棋
Ø
image:輸入灰階圖。
Ø
circles:以vector< Vec3f >記錄所有圓的資訊,每個Vec3f紀錄一個圓的資訊,包含3個浮點數資料,分別表示x、y、radius。
Ø
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個
沒有留言:
張貼留言