在識別圖象中的目標時,往往需要對目標邊緣作跟蹤處理,也叫輪廓跟蹤。顧名思義,輪廓跟蹤就是通過順序找出邊緣點來跟蹤邊界的。若圖象是二值圖象或圖象中不同區域具有不同的象素值,但每個區域內的象素值是相同的,則如下算法可完成基於4連通或8連通區域的輪廓跟蹤。
基本介紹
- 中文名:輪廓跟蹤
- 性質:跟蹤
- 屬性:輪廓
- 它只能跟蹤:目標圖象的內邊界
步驟
步驟1:首先按從上到下,從左到右的順序掃描圖象,尋找沒有標記跟蹤結束記號的第一個邊界起始點A0,A0是具有最小行和列值的邊界點。定義一個掃描方向變數dir,該變數用於記錄上一步中沿著前一個邊界點到當前邊界點的移動方向,其初始化取值為
(1)對4連通區域取dir=3;
(2)對8連通區域取dir=7;
步驟2:按逆時針方向搜尋當前象素的3*3鄰域,其起始搜尋方向設定如下:
(1)對4連通區域取(dir+3)mod 4;
(2)對8連通區域,若dir為奇數取(dir+6)mod 8;若dir為偶數取(dir+7)mod 8;
在3*3鄰域中搜尋到的第一個與當前像素值相同的像素便為新的邊界點An,同時更新變數dir為新的方向值。
步驟3:如果An等於第二個邊界點A1且前一個邊界點An-1等於第一個邊界點A0,則停止搜尋,結束跟蹤,否則重複步驟2繼續搜尋。
步驟4:由邊界點A0、A1、A2、……、An-2構成的邊界便為要跟蹤的邊界。
上述算法是圖象輪廓跟蹤最基本的算法,它只能跟蹤目標圖象的內邊界(邊界包含在目標點集內),另外,它也無法處理圖象的孔和洞。
簡單的輪廓提取算法描述如下:
一個簡單二值圖象閉合邊界的輪廓跟蹤算法很簡單:首先按從上到下,從左到右的順序搜尋,找到的第一個黑點一定是最左上方的邊界點,記為A。它的右,右下,下,左下四個鄰點中至少有一個是邊界點,記為B。從開始B找起,以dir為方向的逆時針順序找相鄰點中的邊界點C。如果C就是A點的下一個頂點,並且C的前一個頂點是A頂點,則表明已經轉了一圈,程式結束;否則從C點繼續找,直到找到A為止。
判斷是不是邊界點很容易:如果它的上下左右四個鄰居都是黑點則不是邊界點,否則是邊界點。