[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

程式架構功能說明:

影片連結: https://youtu.be/MBsoFysWLVI

1.        使用者先從命令列輸入圖片檔名

2.        利用提取桌子顏色並應用遮罩形態學操作去除噪音,找到輪廓後便利用輪廓且根據面積和長寬比篩選可能是桌子的輪廓

3.        若桌子辨識有誤可透過HSVcolor-detect.py中調整拉桿,尋找到其顏色上下界,並在程式中修改

4.        說明:

  1. 載入圖像 (load_image)
    • 使用 cv2.imread 加載圖像。
    • 使用 cv2.resize 調整圖像大小至 1024x768
  2. 提取桌子顏色 (table_color)
    • 將圖像從 BGR 顏色空間轉換為 HSV 顏色空間。
    • 設定桌子顏色範圍的上下界限來創建遮罩 (cv2.inRange)
    • 透過HSVcolor-detect.py尋找初期桌面上下界
  3. 應用遮罩 (apply_mask)
    • 使用遮罩在原圖上進行位運算 (cv2.bitwise_and) 以獲得只包含桌子部分的圖像。
  4. 去除噪音 (remove_noise)
    • 使用形態學操作(開運算和閉運算)去除小點和噪音 (cv2.morphologyEx)
    • 核心大小為 5x5 的矩形核 (np.ones((5, 5), np.uint8))
  5. 找到並畫出輪廓 (find_and_draw_contours)
    • 將遮罩轉換為二值圖像 (cv2.threshold)
    • 使用形態學操作去除噪音 (remove_noise)
    • 找到輪廓 (cv2.findContours)
    • 在尋找到的輪廓中根據面積和長寬比篩選可能是桌子的輪廓 (cv2.contourArea cv2.boundingRect)
    • 在原圖上畫出符合條件的矩形範圍 (cv2.rectangle)
    • 對範圍內的區域進行角點檢測 (cv2.goodFeaturesToTrack) 並畫出角點 (cv2.circle)

方法說明

  1. 顏色提取方法
    • 使用 HSV 顏色空間進行顏色範圍提取,因為 HSV BGR 更容易分離出特定顏色範圍。
    • 設定適當的上下界限以提取桌子的顏色。
  2. 形態學操作
    • 開運算(去除小點):先進行腐蝕後膨脹。
    • 閉運算(填補小孔):先進行膨脹後腐蝕。
  3. 輪廓檢測和篩選
    • 使用 cv2.findContours 函數來檢測輪廓。
    • 根據輪廓面積和長寬比篩選出符合條件的桌子範圍。
    • 進一步檢測範圍內的角點以確認是桌子。


留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6