s1101416 Homework #7

 

1122 Digital Image Processing Assignment #7

 

學號:s1101416  姓名:李柏翰

 

主題:Image Segmentation and Object Detection 影像分割及物件偵測

專案目標:

        撰寫一個程式來偵測出附件2 張視訊照片中的所有書桌的桌面區域。

(1) 標示出每張桌子的桌面的矩形邊界框(Bounding box)

(2) 標示出偵測到桌子的桌角

 

遇到的問題:

1.       原本想用邊緣檢測的方式判斷是否為書桌,結果成效不彰,能檢測出來的書桌數量甚少。

2.       難判斷桌角在哪,想透過辨別直角的方式標記桌角,但因為照片拍攝角度的關係,有很多桌角以平面圖來看並不是直角。且因為書桌前面有椅子及其餘物品,因此也難以透過四邊形的方式判斷書桌。

3.       容易偵測到不是書桌的部分,只要顏色與書桌相近。且用其他元智圖書館的照片偵測,由於拍攝角度與光線不同,偵測出來的結果誤差更大。

 

開發平台:

作業系統–Microsoft Windows 11 家用版(23H2)

開發環境–Visual Studio Code

套件–OpenCV 4.20

程式語言–Python 3.10.11

 

程式架構及說明:

1. 轉換色彩空間

首先,程式載入指定路徑的圖片。將圖片從BGR色彩空間轉換到HSV色彩空間(利用 cv2.cvtColor 函數)。

 

2. 定義顏色遮罩

透過 cv2.inRange設定書桌的顏色範圍,並建立一個mask,這個mask只包含符合該顏色範圍的部分。

 

3. 尋找並處理輪廓

利用 cv2.findContours 函數檢測mask中的輪廓。對於每一個找到的輪廓,計算其面積,並過濾出面積大於3000的輪廓。

 

4. 繪製邊界框與標示桌角

對於過濾後的每個輪廓,使用 cv2.boundingRect 計算能完全包含該輪廓的最小矩形框,並在原始圖片上繪製此矩形框(使用 cv2.rectangle)。此外,對每個桌子的矩形區域進行角點檢測(利用 cv2.goodFeaturesToTrack),並在圖片上標記出來(使用 cv2.circle)。

 

成果展示與討論:

image1



 






image2





留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1