標題提到的「序列化」,意思是依序記錄邊緣上的點,以便之後取出該物體的
Fourier Descriptor。找邊緣的演算法很多:
canny、
snake 等,不過這些我都不會,所以我先用了 sobel 來做,但由於 sobel 會讓物體的邊緣「增厚」,這樣對於我之後的序列化會有困難。所以必須換別的做法。
因為來源是二值影像,所以這邊想到一個更簡潔,效果我覺得一定好的方式 (自我感覺良好:P),整個過程分三步驟:
- 對影像做水平掃描,若像素 A 的左或右為背景,則像素 A 為邊緣。
- 對影像做垂直掃描,若像素 A 的上或下為背景,則像素 A 為邊緣。
- 將步驟一得到的水平影像和步驟二的垂直影像做「logical OR operation」。
這樣一來,就可以將物體的邊緣找出來,且不會有邊緣增厚的問題發生,接下來就是「序列化」的動作。因為物體是連通,所以邊緣不會有斷掉的問題發生,我只要從某一點出發,朝周圍八個方向走訪即可〈Depth First Search 的應用〉,就是一定可以走出迷宮的老鼠..^_^。
程式碼下載 (DFS is non-recursive version)
10 則留言:
無意逛到您的Blog發現內容真的很豐富
尤其你這個演算法很有意思,只是你前提有限制輸入影像是二值化過的,所以要先人工處裡二值化影像嗎?
沒錯,需要做前處理,產生二值影像。:)
那你的二值影像是人工去判斷產生還是自動產生,機器能自動判斷那個值會表現比較好的效果嗎?
上述的二值影像,我是以膚色去作..。
所以可以一氣呵成,厲害,小弟剛入門,你的文章對我幫助很大,可以設成好友嗎?
您好
程式碼的連結已失效
想要參考一下
可否提供
謝謝
你再試試看...連結應該沒問題。
您好
依然不行耶
如果方便的話
是否可以將程式碼寄給我
另一個Fourier Descriptor 也無法下載
我的email cherry326@gmail.com
謝謝
你應該是用IE吧,他對連結比較龜毛一點,已修正!:)
您好
已可下載
謝謝
張貼留言