[s1101422 Homework #7]
m1122 Digital Image
Processing Assignment #7 報告
學號 : s1101422 姓名 : 劉威佑
主題: Image Segmentation and Object Detection 影像分割及物件偵測
專案目標:
標示出桌子的桌面的矩形邊界框
開發平台:Microsoft Windows 10, Visual Studio code, OpenCV 4.90, python3.12
程式架構功能說明:
1.
使用者先從命令列輸入圖片檔名
2.
利用提取桌子顏色並應用遮罩形態學操作去除噪音,找到輪廓後便利用輪廓且根據面積和長寬比篩選可能是桌子的輪廓
3.
若桌子辨識有誤可透過HSVcolor-detect.py中調整拉桿,尋找到其顏色上下界,並在程式中修改
4.
說明:
- 載入圖像 (load_image)
- 使用 cv2.imread 加載圖像。
- 使用 cv2.resize 調整圖像大小至
1024x768。
- 提取桌子顏色 (table_color)
- 將圖像從 BGR 顏色空間轉換為 HSV 顏色空間。
- 設定桌子顏色範圍的上下界限來創建遮罩 (cv2.inRange)。
- 透過HSVcolor-detect.py尋找初期桌面上下界
- 應用遮罩 (apply_mask)
- 使用遮罩在原圖上進行位運算 (cv2.bitwise_and) 以獲得只包含桌子部分的圖像。
- 去除噪音 (remove_noise)
- 使用形態學操作(開運算和閉運算)去除小點和噪音 (cv2.morphologyEx)。
- 核心大小為 5x5 的矩形核 (np.ones((5, 5), np.uint8))。
- 找到並畫出輪廓 (find_and_draw_contours)
- 將遮罩轉換為二值圖像 (cv2.threshold)。
- 使用形態學操作去除噪音 (remove_noise)。
- 找到輪廓 (cv2.findContours)。
- 在尋找到的輪廓中根據面積和長寬比篩選可能是桌子的輪廓 (cv2.contourArea 和 cv2.boundingRect)。
- 在原圖上畫出符合條件的矩形範圍 (cv2.rectangle)。
- 對範圍內的區域進行角點檢測 (cv2.goodFeaturesToTrack) 並畫出角點 (cv2.circle)。
方法說明
- 顏色提取方法
- 使用 HSV 顏色空間進行顏色範圍提取,因為 HSV
比 BGR 更容易分離出特定顏色範圍。
- 設定適當的上下界限以提取桌子的顏色。
- 形態學操作
- 開運算(去除小點):先進行腐蝕後膨脹。
- 閉運算(填補小孔):先進行膨脹後腐蝕。
- 輪廓檢測和篩選
- 使用 cv2.findContours 函數來檢測輪廓。
- 根據輪廓面積和長寬比篩選出符合條件的桌子範圍。
- 進一步檢測範圍內的角點以確認是桌子。
留言
張貼留言