輪廓提取
輪廓提取:對於一副二值化圖像,物體與背景分開,如果背景是白物體,物體為黑的話,我們可以采用掏空內部點法進行輪廓提取。
具體算法如下:
首先開辟新的內存空間,然后遍歷圖像,如果8個鄰域像素都和中心點不相同,則對新的內存空間的該點進行置值。
這里原圖背景是白,物體為黑的,新的內存空間全部置為白,對原圖像的每點進行判斷,如果8個鄰域像素都和中心點不相同,則將內存緩沖區中的該點置為黑。
邊界跟蹤算法
基於邊緣的分割常用方法之一,用於區域已分出(二值或已標注),但邊界未知的情況。
首先在圖像中找到一個邊界點,然后從這個邊界點出發,按照某種策略尋找下一個邊界點,以此跟蹤出目標邊界。
對於邊界跟蹤法,重要的是三個部分,邊界的起始點、搜索規則(邊界判別准則),搜索終止條件。
- 起始點:確定邊界的起始搜索點,起始點的選擇很關鍵,對某些圖像,選擇不同的起始點會導致不同的結果。
- 搜索規則(邊界判別准則):確定合適的邊界判別准則和搜索准則,判別准則用於判斷一個點是不是邊界點,搜索准則則指導如何搜索下個邊緣點。
- 搜索終止條件:確定搜索的終止條件。
這里搜索終止條件對於封閉輪廓和非封閉輪廓有不同的處理:
封閉輪廓:
直至跟蹤的后續點回到起始點。
非封閉輪廓:
待續。。。
我們這里對封閉輪廓的跟蹤算法進行討論,具體算法如下:
1.找到起始點,記錄該點
2.初始跟蹤方向為左上方0方向
3.判斷該點是否為目標點,是則把該置為新的跟蹤的起始點
4.將找到該點目標點的方向逆時針旋轉90度,作為新的跟蹤方向,繼續檢測新的跟蹤方向上的點
5.若不是目標點,則沿順時針旋轉45度,一直找到目標點
6.找到目標點后,在當前跟蹤方向的基礎上,逆時針旋轉90度作為新的跟蹤方向,用同樣的方法跟蹤下一個邊界點
7.直到回到起始點