s1091442 homework#7
學號:1091442 姓名:李衍一
主題: Image Segmentation and Object Detection 影像分割及物件偵測
設計思路:
本次作業先找出符合桌子色彩的區域,消去多餘噪音後取其邊緣,再篩掉不符合長桌特徵的輪廓。桌角則是直接尋找輪廓中的角點。
程式解析:
讀入影像後轉換為HSV色彩空間和灰階色彩空間,並複製一份影像。
找出符合長桌顏色的區域(這裡是黃色~白色)並套回灰階影像上,形成長桌區域遮罩。
對遮罩進行開運算與閉運算去除噪點及不平整處,並二值化、取邊緣後找尋輪廓。
對找到的輪廓進行大小和形狀上的審查,符合條件者在複製的影像上以框線框出。
切下該輪廓的灰階圖像,並用cv.goodFeaturesToTrack()尋找角點並標出。
成
果展示:
1.
2.
成果反省:
本次作業應該是我在這次課程中尋找方向最久的一次。一開始我就有在思考使用顏色先找出長桌位置、再篩出輪廓。然而結果令人失望:在顏色遮罩的幫助下,頂多只有一張桌子被辨識出來。在幾經修改參數仍無良好效果後,我決定轉向尋找其他辦法。由於有無顏色篩選的結果都差不多相同,我一度撤掉了顏色遮罩,單純讓函式找出輪廓後再增加條件篩選出涵蓋長桌的輪廓,直到我發覺大部分的輪廓都沒有很好地包含住桌子。我也試過找出直線或寬闊的區域來查找桌子,但在燈罩的影響下大部分桌子線條都太繁雜,效果亦不佳。
隨著作業繳交期限一步步逼近,我突然想到能參考同學的作法,於是上部落格查看;令人意外的是大家幾乎都用了我最初嘗試並放棄的方法。我不停的察看,直到有位同學列出的步驟讓我意識到錯誤:我把開、閉運算放在二值化和Canny演算法後。我立刻將兩者位置對調,成效也好了很多。或許人在找不到方向容易漏掉最簡單的錯誤。
不過至此我已無太多時間處理剩下的桌角問題,只能簡單地照著同學的做法走,無法最佳化。我想我之後可能會再暑假時再仔細處理看看吧。
留言
張貼留言