王翠萍
山東英才學院 山東 濟南 250104
視頻監(jiān)控的智能化是目前安防發(fā)展的一個趨勢,如運動目標檢測、目標識別。在這個過程中經(jīng)常需要對目標進行背景分離然后進行特征提取并標識。對于目標的背景分離根據(jù)應用的不同對應采用的算法也不同,目標背景分離并不是本文的討論的重點。本文主要討論目標分離后的二值化圖像的處理。對二值化圖像經(jīng)常要進行目標連通域檢測,在檢測過程中需要提取目標的一些特征,比如目標的大小和目標框的坐標。并根據(jù)目標框的坐標在視頻中將目標框選出來。
FPGA內(nèi)置了硬核DSP和存儲器模塊,效率和靈活性要遠遠優(yōu)于DSPIC,并且具有強大的數(shù)據(jù)并行處理能力,其圖像處理能力在極低時鐘頻率下就可以實現(xiàn)圖像處理的實時性?;贔PGA[1]可以實現(xiàn)SOPC(片上可編程系統(tǒng)),用戶可以根據(jù)需要定制系統(tǒng),縮短產(chǎn)品研發(fā)和更新?lián)Q代的周期,快速做出有自己特色和自主知識產(chǎn)權(quán)的產(chǎn)品,因此其在智能視頻監(jiān)控中得到廣泛采用。
連通區(qū)域檢測是圖像處理、模式識別中常用的一個基本方法。在目標分割,邊緣檢測,區(qū)域檢測中有著廣泛的應用。算法有4鄰域或8鄰域檢測和基于像素或行程檢測。本系統(tǒng)采用基于行程的8鄰域連通域檢測方法提取目標的外接矩形框 (目標框)坐標,該方法運行速度快,掃描一次二值化圖像數(shù)據(jù)即可完成目標數(shù)目的統(tǒng)計和目標特征的提取。將一行中連續(xù)的多個目標點作為一個行程,根據(jù)當前行與上一行行程的相接關系,按照特定規(guī)則標記當前行程和特征修改[3]。不同的標記規(guī)則造成了特征修改方式的不同。文獻[2]規(guī)則中“STEP7”對上一行中不同標號的行程處理是在等價數(shù)組中記錄等價關系,和更新第一個出現(xiàn)行程的特征,并沒有比較行程標號的大小。文獻[3]也沒有采用比較標號大小,導致多叉樹深度增加,特征的修改深度相應增加。
基于行程的連通域檢測方法[4-6]所用到的數(shù)據(jù)結(jié)構(gòu):
//行程結(jié)構(gòu)體
typedef struct_line{long index;unsigned short colthOfStart,colthOfEnd;}line;
//連通域特征結(jié)構(gòu)體
typedef struct COMPONENT {unsigned short left,top,right,bottom;long area;}_Com;
//單元結(jié)構(gòu)體
typedef struct_node{long flag;_Com ComAttr;}node;
定義兩個行程數(shù)組,數(shù)組大小為列像素的一半,如 line Array1[WIDTH/2],Array2[WIDTH/2]。定義兩個行程指針分別指向兩個行程數(shù)組,一個用于當前行行程數(shù)組訪問,另一個用于上一行行程數(shù)組訪問,如 line*curLine=Array1;line*preLine=Array2。初始化全局行程標識為1,label=1。當檢測到一個行程結(jié)束時處理步驟如下:
1)與上一行行程無相接行程
更新該行程標識index為全局標識,然后全局標識加1;用該行程數(shù)據(jù)初始化其標識指向單元的特征,行程標識初始化該單元標號。即
nodeArray[*(curLine+cur_index).index].flag=*(curLine+cur_index).index;label++;
2)與上一行有行程相接分三種情況
(1)若當前行程未標識,更新當前行程標識為上一相接行程指向單元的標號。即*(curArray+cur_index).index=nodeArray [(* (preArray+pre_index).index].flag;并更新當前行程標識指向單元特征。
(2)若當前行程標識大于上一行相接行程標識,更新當前行程標識指向單元標號和更新上一行相接行程標識指向單元的屬性,即
nodeArray[*(curArray+cur_index).index].flag=*(preArray+pre_index).index;
nodeArray [* (preArray+pre_index).index].ComAttr需要根據(jù)
nodeArray [* (curArray+cur_index).index].ComAttr屬性更新。
更新當前行程標識為上一行相接行程標識*(curArray+cur_index).index = * (preArray+pre_index).index;
(3)若當前行程標識小于上一行相接行程標識,更新上一行相接行程標識指向單元標號和更新當前行程標識指向單元的屬性,即:
nodeArray[*(preArray+pre_index).index].flag=*(curArray+cur_index).index;
nodeArray[*(curArray+curArray_index).index].ComAttr需要根據(jù)
nodeArray[*(preArray+preArray_index).index].ComAttr屬性更新。
圖1 行程標識
圖 1a)當前行程標識更新為 5,修改 nodeArray[5]屬性;b) 先更新 nodeArray[5].flag=1; 并根 據(jù)nodeArray[5]更新 nodeArray[1]的屬性。 更新行程標識為 1;c)需 要 更 新 nodeArray[3].flag=1, 根 據(jù)nodeArray[3]更新 nodeArray[1]屬性;d)用 nodeArray[3].flag 更新當前行程標識,更新 nodeArray[1]屬性。
算法在VC環(huán)境下測試,輸入以下三幅分辨率為324×256的二值化圖像數(shù)據(jù),分別采用本文算法和經(jīng)典檢測算法進行檢測。測試結(jié)果見表1:
圖2 測試圖
表1 性能對比表
由表1可以看出,隨著連通個數(shù)的增加和連通性復雜程度的增加,處理時間只是略有增加。而傳統(tǒng)經(jīng)典算法處理時間增加明顯。
視頻信號由3部分組成:圖像信息、同步脈沖、消隱脈沖[7-8]。視頻同步分離芯片LM1881引腳和視頻信號組成如圖3所示。在視頻上顯示一個亮點的基本原理是在場同步信號有效期間 (即高電平期間)和行同步信號有效期間(即高電平期間),在行同步信號相應的位置上,圖像信號部分疊加一個脈沖信號,脈沖信號的電壓幅值大小決定了該點的顯示亮度,而脈沖信號的寬度決定了亮點顯示的寬度。字符或線條的顯示效果就是由許多這樣的亮點組成。
本文目標框疊加電路組成如圖4所示,包括視頻放大電路、行場同步信號分離電路和模擬信號選擇電路。當2路模擬復用器芯片在某段時間內(nèi)選擇輸出可調(diào)電平時,復合視頻信號在此段時間內(nèi)為該電平。這樣在顯示視頻中就會看到一條亮線,線的亮度可通過可調(diào)電平改變。當選通時間可精確到一個像素在信號中占用時間時,就可以實現(xiàn)在屏幕任意位置,控制輸出1個像素大小的亮點。
圖3 視頻信號波形
圖4 目標框疊加電路組成
本文的FPGA視頻處理架構(gòu)如圖5所示,F(xiàn)PGA配置成一個基于NIOSII嵌入式軟核的SOPC系統(tǒng)。該嵌入式系統(tǒng)包括圖像采集預處理單元、OSD單元、NIOSII微處理器單元、SDRAM控制單元、Avalone總線單元、異步串口UART單元、串行存儲EPCS單元、定時器Timer單元;其中圖像采集預處理單元與OSD單元采用自定義外設的設計架構(gòu),以充分發(fā)揮FPGA的并行處理能力。
圖5 FPGA內(nèi)部功能單元組成
本文采用基于行程的連通域檢測方法提取二值化目標的外接矩形框特征,征提取速度明顯優(yōu)于傳統(tǒng)算法,采用NIOII處理器完全能夠做到實時處理。目標框疊加電路為以FPGA為處理核心的視頻處理方案提供了一種簡單高效的字符疊加方法。并且由于FPGA本身采用并行處理方式,大大提高了圖形處理速度,適用于實時性要求高的嵌入式應用場合。
[1]帕克(美),鄧天平(譯).嵌入式視頻處理權(quán)威指南[M].北京:機械工業(yè)出版社,2014:78-247.
[2]孔斌.快速連通域分析算法及實現(xiàn)[J].模式識別與人工智能,2003,16(1):110-115.
[3]張恒.基于快速連通域分析的目標特征提取算法[J].計算機工程與應用,2009,45(29):230-232.
[4]M.B.Dillencourt,H.Samet.A general approach to connected component labeling for arbitrary image representations[J].Journal of the ACM: vol.39,1992,pp.253-280.
[5] J.Hecquard,R.Acharya.Connected component labeling with linear octree.Pattern Recognition: vol.24,No.2,1991,pp.515-531.
[6] A.Choudhary,R.Thakur.Connected component labeling on coarse grain parallel computers:an experimental study.Journal of Paralleland Distributed Computing: vol.20,1994,pp.78-93.
[7]黃燕群,李利品.基于 FPGA 的 OSD 設計[J].液晶與顯示,2010,25(3):439-433.
[8] 杜升平,曹劍中,田雁,等.FPGA 在 OSD 中的應用[J].科學技術與工程,2006,6(14):2065-2067.