二值圖像連通域標記快速算法實現
在圖像自動目標識別和跟蹤過程中,首先對圖像目標進行閾值分割提取,得到的二值圖像通常包含多個連通區域,系統利用圖像目標的形狀特性對可疑高威脅的飛行目標進行自動識別。因此,需要對各連通區域塊進行分別檢測判斷,本文采用改進的快速標記算法對各連通域進行檢測提取。
實現二值圖像連通體檢測通常采用的方法有幾種:區域生長法.
區域生長法:首先對圖像進行逐行(列)掃描,每遇到一個未標記的「1」像素點,就分配其一個未使用過的標號,然後對其領域進行檢測,如有未標記過的「1」像素,則賦予相同的標號。反復進行這一操作.直到不存在應該傳播標號的「1」像素。然後繼續圖像行(列)掃描,如檢測判未標記的「1」像素則賦予其新的標號,並進行與以上相同的處理。整個圖像掃描結束,算法也就終止。這種方法可准確地檢測出各種類型的連通體.但處理時間也較長.因為要逐一檢測每一「1」像素的鄰域,且出現「1」像素的重復掃描。跟蹤算法:二值圖像中每個取值為「1」的像素 被標記一個與其坐標相關的標號,如由n,m串構成的數。熱後,掃描標記後的圖像,並將每十像素的標號改為其鄰域內的最小標號。反復執行這個過程,直到不需要作標記更改為止。用這種方法處理小而凸的目標時,收斂速度較慢。
本文提出一種具有計算規則性的快速二值圖像連通域標記算法。處理速度較快,可以滿足大部分實時目標識別系統的要求。該算法同樣可以軟件編程方式應用於嵌入式DSP系統中。
算法描述
首先,在進行標記算法以前,利用硬件開辟獨立的圖像標記緩存和連通關系數組,接著在視頻流的采集傳輸過程中,以流水線的方式按照視頻傳輸順序對圖像進行逐行像素掃描,然後對每個像素的鄰域分別按照逆時針方向和水平方向進行連通性檢測和等價標記關系合並,檢測出的結果對標記等價數組和標記緩存進行更新,在一幀圖像采集傳輸結束後,得到圖像的初步標記結果以及初步標記之間的連通關系,最後,根據標號對連通關系數組從小到大的傳遞過程進行標號的歸並,利用歸並後的連通關系數組對圖像標記緩存中的標號進行替換,替換後的圖像為最終標記結果,並且連通域按照掃描順序被賦予唯一的連續自然數。
圖 1 標記算法流程
本文快速二值圖像連通域標記算法分為三個環節:
1.圖像初步標記:為每個像素賦予臨時標記,並且將臨時標記的等價關系記錄在等價表中
2.整理等價表:這一環節分為兩個步驟:
(1)將具有等價關系的臨時標記全部等價為其中的最小值;
(2)對連通區域以自然數順序重新編號,得到臨時標記與最終標記之間的等價關系。
3.圖像代換:對圖像進行逐像素代換,將臨時標記代換為最終標記.經過3個環節處理後,算法輸出標記後的圖像,圖像中連通域按照由上到下,由左至右出現的順序被標以連續的自然數。
1 圖像初始標記
標記算法符號約定:算法在逆時鐘方向檢測連通域時用w1,w2表示連續兩行的圖像數據,在緊接著的順時鐘方向連通域檢測時用k0,k表示連續兩行經過逆時鐘方向標記後的圖像數據。 其在工作窗口的位置在圖2、3中分別說明;對初始逆時針方向臨時標記用Z表示。Z初始標記值為1。
二值圖像連通域標記算法采用8連通判斷准則,通過縮小標記范圍剔除了圖像的邊界效應。為了簡化標記處理過程,使標記處理在硬件對一幀圖像傳輸操作時間內結束,標記處理利用中間數據緩存分為連續的兩種類型,其中類型1用於直接圖像序列傳輸,硬件發起圖像序列傳輸時,類型1采用逆時鐘順序連通域檢測,對2×3工作窗口中的二值像素進行初始標記。類型2對經過類型1初始標記過的圖像數據再進行水平方向的連通域檢測和歸並,然後把標記結果存入圖像存儲區。
圖像初始標記類型1:
步驟1讀取像素w1(2)、w1(1)、w1(0)、w0(2)、w0(1),以及相應的二值像素值。
步驟2讀取像素w0(1),按照逆時針方向依次與w1(0)、w1(1)、w1(2)、w0(2)比較,若w0(1)= w1(0),則k0(1)=k(2);若w0(1)= w1(1),則k0(1)=k(1);若w0(1)= w1(2),則k0(1)=k(0);若w0(1)= w0(2),則k0(1)=k0(0);否則(即w0(1)≠(w1(2)、w1(1)、w1(0)、w0(2)),k0(1)= Z;Z ++。
步驟3寫入等價關系表,以Z為地址將Z寫入等價關系數組。
圖 2 逆時鐘方向初始標記的工作窗
圖像初始標記類型2:
步驟1判斷經過逆時針方向標記後,如果w0(1)= w0(2)= 1,而標記灰度k0(1)≠ k0(0),則進行下一步驟。
步驟2 假設k0(1)> k0(0),判斷lab(k0(1))=k0(1)或者lab(k0(1))=k0(0),則lab(k0(1))=k0(0),否則對標記數組進行追蹤置換。跳轉至步驟3。
步驟3 假設k0(1)< k0(0),判斷lab(k0(0))=k0(0)或者lab(k0(0))=k0(1),則lab(k0(0))=k0(1),否則對標記數組進行追蹤置換。
追蹤置換方法:步驟2的追蹤置換令t= lab(k0(0));若lab(t)≠ t,則令t= lab(t),重復執行,直lab(t)=t;步驟3的追蹤置換令t1= lab(k0(1)),對lab(k0(1))同樣執行上述追蹤過程。
圖 3 水平方向初始標記的工作窗
2 等價表整理與圖像代換
首先,從等價表地址1開始掃描等
價表,依次檢查其中各個臨時標記是否存在等價關系,若存在,則以標記值作為等價表地址的數據更新等價表。由於整理過程從等價表地址1開始,因此對整個等價表的掃描可以一遍結束。
圖像代換環節對臨時標記圖像中的每個像素進行代換,生成最終的標記後圖像。具體做法是:設圖像中坐標為(n,m)的像素的臨時標記值為S,則將lab(S)寫入圖像中(n,m)位置。代換後得到的圖像,其中的連通區域按照由上到下,由左至右出現的順序被標以惟一的自然數。
3 算法特點分析
算法設計具有以下特點:
a.圖像初步標記過程中,在記錄標記等價信息的同時對等價表進行初步整理,這樣安排,一方面可以保證區域之間存在復雜連通關系時,等價表能夠保存已經檢測到的全部等價關系;另一方面,在以硬件電路實現標記算法時,圖像初步標記和等價表初步整理的過程可以並行執行,等價表的初步整理,能夠簡化隨後的等價表整理操作,相當於壓縮了標記執行的全過程。
b.在本算法中,采取兩方面措施減少臨時標記數量:其一,反復利用8鄰域范圍內生成的所有標記信息,在逆時針順序8鄰域范圍標記後借助圖像傳輸的順序進行水平方向的等價標記歸並,降低了需要賦予新標記值的概率;其二,在等價表整理時,歸並等價標記時按照等價表地址從小到大的的順序進行比較替換,使等價標記取較小值並且不會遺漏等價標記。其三,結合視頻數據流傳輸方式,采用乒乓存儲結構進行流水線處理,同時進行圖像標記和圖像標記替換。使圖像標記達到實時處理的效果。