2022年6月10日 星期五

s1073513 作業7

 

一、作業要求

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

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

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

二、程式說明

1. imread讀取圖片並儲存灰階

2. 圖片太大需resize圖片

4. erode侵蝕再dilate膨脹圖片

5. houghcircles()計算圓圈數

6. 最後用circle()畫出圓至原圖上

三、程式環境

Windows 10

Visual Studio 2019

OpenCV 3.4.6

 

四、執行畫面   


















2022年6月9日 星期四

s1081545 作業7

 作業說明:

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

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

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

開發環境:

·     Windows 10

·     Visual Studio 2013

·     C#

實作方法:

1.      讀取測試影像檔案,先將彩色圖轉成亮度圖,並依據門檻值,自動進行二值化處理,轉成黑白圖。

2.     由於黑色棋子有程度不一的碰觸或重疊,先簡單地利用3x3大小structuring element,針對二值化後的黑白圖進行MorphologyOpening process (先做Erosion,再做Dilation)

3.     由於黑色棋子有圓形的特性,圓形的公式為(x-Cx)2+(y-Cy)2=R2,其中(Cx, Cy)是圓心座標,R是半徑。因此,可透過Hough Transform,針對所有邊緣點做(Cx, Cy, R)的三維空間投票,找出邊緣點落在哪些可能的圓形上。

(1).      將前述進行MorphologyOpening process後結果圖,進行邊緣點偵測。

(2).      設定圓心座標可能的範圍,以及圓形半徑的範圍後,即可利用Hough Transform,找出可能的圓形區域。並透過圓形位置檢查,避免因誤差而找出重複圓形區域;再透過圓內正方形的黑點數比例檢查,避免找出錯誤的圓形區域。

執行結果:

1.     程式執行後,介面如下。













2.     按下『Load』鈕讀取測試影像Jpeg檔案,設定二值化所需的門檻值後,再按『Binarization』鈕,將原彩色圖自動轉為亮度圖,並依據二值化門檻值,自動轉為二值化黑白圖。













3.     先按『Erosion』鈕,再按『Dilation』鈕則可進行MorphologyOpening process













4.     按『Boundary』鈕,可自動針對MorphologyOpening process結果,進行邊緣點的偵測。













5.     按『Hough Transform』鈕,即可針對所有邊緣點做(Cx, Cy, R)的三維空間投票,找出邊緣點落在哪些可能的圓形上。並透過圓形位置檢查,以及圓內正方形的黑點數比例檢查,避免找出重複或錯誤的圓形區域。介面上會以紅色標示找出的圓形區域,並顯示數量。













6.     其他兩張測試影像的偵測結果,如下所示。














錯誤分析:

透過邊緣點的Hough Transform,仍無法找出的圓形區域,主要有兩個原因。

1.     與相鄰黑棋的疊合區域大,導致該圓形的邊緣點數量不足。

2.     透過MorphologyOpening process後,黑棋內的反光區域仍大,檢查圓形區域內正方形的黑點數比例,誤判為非正常圓形,而被去除。









程式執行結果:



s1081416作業7

 

1081416 作業7

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

 

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

 

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

 

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

 

 

開發環境:

Windows10

 

Vscode

 

Opencv 4.5.5

 

Python 3.10.2

程式想法:

 

一開始先用IMREAD_GRAYSTYLE讀取成灰階圖片,但是因為圖片太大, 所以我把它resize成能看見所有棋子適當的大小,再來定義kernel5X5的卷積。接著針對圖片使用erode()函式減少影像噪音,細化影像,再用dilate()函式膨脹, 然後使用HoughCircles()函式計算圓的數量,接著最後使circle()函式進行圓的畫圈。



s1071516作業7

 一、 作業說明

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

二、 開發環境:


1. Windows 11
2. vscode
3. Python 3.9
4. OpenCV - 4.5.5


三、實作

1.在程式碼內輸入X:0~2 即可選擇讀取哪張照片。

2.以灰階模式將圖片讀入

3.利用threshold對圖片進行二值化。

4.在用dilate進行膨脹 然後用morphologyEx做opening

5.cv2.findContours找出邊界和畫出邊界。

6.最後,利用resize將圖片縮小並輸出。

四、成果




5702output:

5703output:

5704output:

















s1081407 作業7

     

作業說明

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

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


作業環境

  • Windows 11
  • OpenCV 4.5.4
  • Visual Studio Code

實作方法

  1. 讀取圖片
  2. 轉成灰色,裁切大小
  3. 將圖片二值化
  4. 做erode和dilate,用canny圈出邊緣
  5. 用HoughCircles檢測有幾個圈圈

執行結果

檢測到的黑子數目: