劉紫燕,唐 虎,馮 亮
(1.貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽 550025;2.中國移動通信集團(tuán)福建有限公司 福州分公司,福建 福州 350000)
近年來,電子技術(shù)及機(jī)器視覺技術(shù)在運動分析、智能視頻監(jiān)控、人機(jī)交互、軍事等領(lǐng)域廣泛應(yīng)用,使得視頻跟蹤技術(shù)在工程應(yīng)用中有著重要的應(yīng)用研究價值[1]。目前,較為成熟的視頻跟蹤算法主要是基于Matlab仿真平臺實現(xiàn),而通過硬件仿真方式實現(xiàn)的視頻跟蹤算法很少[2]。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)以其集成度高、多級流水線技術(shù)、并行處理等優(yōu)點,使得芯片運行速度得到較大提高[3]。為了在滿足用戶性能需求的同時提高圖像幀的處理效率,可利用FPGA硬件邏輯電路實現(xiàn)視頻圖像分析[4]。因此,研究基于FPGA機(jī)器視覺技術(shù)的視頻跟蹤系統(tǒng),可解決傳統(tǒng)視頻跟蹤系統(tǒng)中存在的精確度低、刷新率低、實時性差、性價比低等問題。
本文設(shè)計了FPGA平臺的實時視頻采集顯示系統(tǒng),對視頻目標(biāo)的實時檢測、定位及跟蹤算法進(jìn)行了研究,確定視頻目標(biāo)特征參數(shù),計算出目標(biāo)的運動軌跡,然后通過控制云臺步進(jìn)電機(jī)信號,并通過FPGA輸出該控制信號,驅(qū)動加載有攝像頭的云臺系統(tǒng)轉(zhuǎn)動。
系統(tǒng)主要功能模塊可分為:圖像采集模塊、SDRAM控制模塊、視頻處理模塊、VGA顯示模塊、云臺驅(qū)動模塊、云臺電機(jī)6個部分[5-6],系統(tǒng)設(shè)計框圖如圖1所示。
圖1 視頻跟蹤系統(tǒng)構(gòu)圖
圖1中,攝像頭負(fù)責(zé)實時視頻圖像進(jìn)行采集,輸出視頻圖像數(shù)據(jù)傳送至FPGA核心器件,F(xiàn)PGA核心器件通過內(nèi)部設(shè)計的各功能模塊對視頻圖像數(shù)據(jù)進(jìn)行存儲和處理,輸出VGA顯示圖像數(shù)據(jù)、云臺控制信號,云臺電機(jī)上加載的攝像頭根據(jù)控制信號進(jìn)行相應(yīng)轉(zhuǎn)動,達(dá)到實時跟蹤的目的。FPGA器件內(nèi)部功能模塊主要包括圖像采集、多端口SDRAM控制器、圖像VGA顯示、視頻圖像處理等。
圖1中的視頻圖像處理模塊工作流程如圖2所示[7-8]。首先對攝像頭采集到的視頻圖像進(jìn)行預(yù)處理;然后采用優(yōu)化后的幀間差分法提取出運動目標(biāo);使用形心法計算目標(biāo)形心的坐標(biāo),從而完成目標(biāo)的定位;最后,根據(jù)目標(biāo)形心坐標(biāo)計算其相對于監(jiān)控畫面中心的偏移量,通過調(diào)節(jié)該偏移量得到相應(yīng)的電機(jī)控制信號,驅(qū)動云臺步進(jìn)電機(jī)上攝像頭跟隨目標(biāo)轉(zhuǎn)動,實現(xiàn)對被跟蹤目標(biāo)實時跟蹤。
圖2 視頻圖像處理模塊處理流程
基于FPGA平臺的視頻跟蹤系統(tǒng)工作框圖如圖3所示。首先FPGA通過I2C協(xié)議對圖像傳感器初始化,發(fā)送攝像頭圖像數(shù)據(jù)采集命令。其次,格式變換模塊將采集到的Bayer格式視頻圖像數(shù)據(jù)輸出為30位RGB圖像數(shù)據(jù),并通過多端口SDRAM進(jìn)行視頻圖像幀緩存,多端口SDRAM控制器會通過設(shè)計的FIFO接口輸出VGA顯示和圖像預(yù)處理所需要的圖像數(shù)據(jù),實現(xiàn)圖像的VGA現(xiàn)實及圖像預(yù)處理。通過預(yù)處理后提取到的圖像信息計算運動目標(biāo)的形心坐標(biāo)及運動矢量,從而驅(qū)動云臺電機(jī)轉(zhuǎn)動。
圖3 視頻跟蹤系統(tǒng)工作流程
視頻跟蹤系統(tǒng)流程如圖4所示,主要包含3大核心模塊:目標(biāo)檢測模塊、目標(biāo)跟蹤模塊及電機(jī)控制器模塊[2]。其中,目標(biāo)檢測模塊主要提取實時視頻圖像序列中運動目標(biāo)的特征邊緣信息,不同算法的檢測精度不同,將直接影響目標(biāo)跟蹤的準(zhǔn)確度;目標(biāo)跟蹤則根據(jù)提取到的特征信息,通過分析圖像序列特征信息的變化情況,實現(xiàn)對運動目標(biāo)進(jìn)行跟蹤;電機(jī)控制器通過計算目標(biāo)的形心坐標(biāo)相對于監(jiān)控畫面中心偏移情況,從而驅(qū)動云臺步進(jìn)電機(jī)上的攝像頭跟隨目標(biāo)轉(zhuǎn)動,實現(xiàn)對被跟蹤目標(biāo)的實時跟蹤。
圖4 視頻跟蹤系統(tǒng)流程
目標(biāo)檢測[9-10]算法框圖如圖5所示,采用幀間差分法[11-12]對SDRAM緩存的圖像序列進(jìn)行檢測,通過Sobel算子對圖像序列中的目標(biāo)邊緣進(jìn)行提取,采用形態(tài)學(xué)中的膨脹算法(Dilation)進(jìn)行優(yōu)化[13-14],從而得到更加清晰的目標(biāo)邊緣檢測結(jié)果。
圖5 目標(biāo)檢測算法框圖
差分算法以相鄰的兩幀或者等間隔的兩幀圖像序列作為研究對象,假設(shè)t時刻圖像為fk,則t-1時刻的圖像為fk-1,差分后得到結(jié)果Dk(i,j)如下
Dk(i,j)=|fk(i,j)-fk-1(i,j)|
(1)
Sobel算子是由兩個卷積核g1(x,y)與g″2(x,y)對原圖像f(x,y)進(jìn)行卷積運算而得到的。其數(shù)學(xué)表達(dá)式為
S(x,y)=max[X,Y]
(2)
(3)
(4)
數(shù)學(xué)形態(tài)學(xué)[15]是一種數(shù)學(xué)方法,主要用集合論方法定量描述、分析幾何形狀和結(jié)構(gòu)。幾種常用的數(shù)學(xué)形態(tài)學(xué)運算有:膨脹、腐蝕、開運算和閉運算。
設(shè)A為一幅二值圖像,B為結(jié)構(gòu)元素,則膨脹運算定義為
(5)
開運算定義為
AB=(AΘB)⊕B
(6)
閉運算定義為
A·B=(A⊕B)ΘB
(7)
采用形心定位的方法對前級檢測到的運動目標(biāo)進(jìn)行定位,跟蹤目標(biāo)形心坐標(biāo)計算流程如圖6所示,形心定位法的重點之處在于統(tǒng)計邊緣圖像中二值圖像素點為1的個數(shù),通過該方式可實時計算并輸出目標(biāo)的形心坐標(biāo)。
圖6 目標(biāo)形心提取流程
在FPGA平臺上計算目標(biāo)形心坐標(biāo)時,用一個計算器Num_counter來統(tǒng)計f(x,y)中值為“1”的像素點的個數(shù),視頻圖像中像素值為1的像素點的坐標(biāo)累加值可用兩個寄存器(Sum_X,Sum_Y)來存儲,因此當(dāng)前像素的坐標(biāo)值也可用X_counter和Y_counter兩個計數(shù)器來表示。若讀取的值為1,進(jìn)行式(8)~式(10)的計算。
Num_counter=Num_counter+1
(8)
Sum_X=Sum_X+X_counter
(9)
Sum_Y=Sum_Y+Y_counter
(10)
此時,只需完成一幀圖像數(shù)據(jù)的掃描,即可得到運動目標(biāo)的形心坐標(biāo),如式(11)和式(12)所示。
(11)
(12)
如圖7所示為形心定位法的FPGA實現(xiàn)模塊圖,對實時圖像中跟蹤定位的目標(biāo)進(jìn)行邊緣檢測后,得到的二值化結(jié)果由DATA_IN引腳進(jìn)行輸入, CLK_IN、RST_IN和DATA_EN引腳則分別輸入時鐘信號、輸入復(fù)位信號、使能信號,而被跟蹤目標(biāo)的形心坐標(biāo)(Out_X,Out_Y)分別由O_X和O_Y引腳輸出。
圖7 形心定位法FPGA實現(xiàn)模塊
在VGA顯示屏幕上進(jìn)行顯示時,使用十字形標(biāo)記出所跟蹤目標(biāo)的形心點位置。
根據(jù)FPGA實現(xiàn)目標(biāo)形心計算方法描述,被跟蹤目標(biāo)形心(O_X,O_Y)相對于VGA顯示畫面中心的實時運動矢量記為(Δx,Δy),當(dāng)Δx、Δy超過設(shè)定范圍h、v時,首先由PWM生成電路在X、Y方向產(chǎn)生PWM云臺步進(jìn)電機(jī)控制脈沖信號,然后由GPIO接口輸出至驅(qū)動器,驅(qū)動器接收后通過驅(qū)動放大電路送出,云臺步進(jìn)電機(jī)接收到該信號的驅(qū)動后帶動攝像頭做出相應(yīng)移動,具體為:當(dāng)Δx<-h時,云臺步進(jìn)電機(jī)受控制信號驅(qū)動帶動攝像頭水平方向向左轉(zhuǎn);當(dāng)Δx>-h時,云臺步進(jìn)電機(jī)受控制信號驅(qū)動帶動攝像頭水平方向向右轉(zhuǎn);當(dāng)Δy<-h時,云臺步進(jìn)電機(jī)受控制信號驅(qū)動帶動攝像頭垂直方向向上轉(zhuǎn);當(dāng)Δy>-h時,云臺步進(jìn)電機(jī)受控制信號驅(qū)動帶動攝像頭垂直方向向上轉(zhuǎn)。其云臺電機(jī)系統(tǒng)運行原理如圖8所示。
圖8 電機(jī)系統(tǒng)運行原理示意圖
如圖9所示,在電機(jī)控制器的FPGA實現(xiàn)中,本文使用VerilogHDL語言設(shè)計了3個主要的功能模塊:(1)Motorcontrol模塊,輸入形心坐標(biāo),輸出云臺電機(jī)控制信號;(2)controlmotor模塊,根據(jù)前一模塊輸入的控制信號判斷攝像頭轉(zhuǎn)動的方向;(3)PWM模塊,產(chǎn)生PWM信號控制電機(jī)轉(zhuǎn)動。
圖9 電機(jī)控制器實現(xiàn)功能模塊圖
在各功能模塊完成仿真驗證后,結(jié)合相應(yīng)的IO接口,按照本文設(shè)計的視頻跟蹤系統(tǒng)集成示意圖如圖10所示。
圖10 系統(tǒng)集成示意圖
連接CMOS圖像傳感器、VGA顯示器、云臺驅(qū)動器、云臺電機(jī),下載工程代碼至Altera公司DE2-70主板驗證。
圖11 行人實時視頻跟蹤系統(tǒng)實現(xiàn)
實驗在室內(nèi)環(huán)境進(jìn)行,分別以人跟小車作為測試對象。圖11為行人視頻跟蹤結(jié)果,其中十字標(biāo)志為系統(tǒng)計算的目標(biāo)形心位置,測試結(jié)果表明,所設(shè)計的系統(tǒng)能夠準(zhǔn)確跟蹤到行人目標(biāo)。
由于FPGA在進(jìn)行視頻跟蹤處理時,很難直接對處理后的視頻圖像序列逐幀調(diào)試,故通過FPGA的開關(guān)鍵來控制捕獲不同的關(guān)鍵圖像幀進(jìn)行測試。
圖12 小車實時視頻跟蹤系統(tǒng)實現(xiàn)
圖12為小車視頻跟蹤結(jié)果,在經(jīng)過Sobel算子邊緣提取之后,以準(zhǔn)確跟蹤到小車時圖像幀(第55幀)、小車向右行駛圖像幀(第96幀)、小車形態(tài)發(fā)生變化圖像幀(第135幀)作為跟蹤結(jié)果進(jìn)行分析。圖中的標(biāo)記中,方框為設(shè)定的邊界,十字形為被跟蹤定位的目標(biāo)形心。云臺電機(jī)的控制信號由目標(biāo)形心是否移動至方框外決定,以此來實現(xiàn)視頻目標(biāo)的實時跟蹤。如表1所示,從開始到準(zhǔn)確定位到小車位置,用時1.83 s,平均刷新一幀圖像只需要0.033 1 s;當(dāng)小車向右行駛時,系統(tǒng)檢測到小車位置,并根據(jù)小車形心的移動情況判斷出小車的運行方向,用時1.36 s,平均刷新一幀圖像需要0.033 2 s;當(dāng)小車?yán)^續(xù)運動1.3 s時,小車在攝像頭中形態(tài)發(fā)生變化,雖然系統(tǒng)仍然可以檢測到小車的形心位置,但是小車可能靠近攝像頭行駛,也可能遠(yuǎn)離攝像頭行駛,無法準(zhǔn)確判斷。測試結(jié)果表明,所設(shè)計的系統(tǒng)能夠準(zhǔn)確、實時跟蹤到小車,但當(dāng)目標(biāo)小車形態(tài)發(fā)生改變時,無法跟蹤。
綜上所述,設(shè)計的FPGA平臺視頻跟蹤系統(tǒng)在實時性與準(zhǔn)確性等方面都有較好的表現(xiàn),形心定位法的快速計算獲得目標(biāo)邊緣形心坐標(biāo),實現(xiàn)云臺電機(jī)根據(jù)目標(biāo)實時轉(zhuǎn)動效果。
表1 視頻圖像跟蹤測試
在視頻跟蹤系統(tǒng)中對跟蹤目標(biāo)進(jìn)行定位和跟蹤時,當(dāng)目標(biāo)物體的形態(tài)產(chǎn)生變化,將無法準(zhǔn)確跟蹤到目標(biāo)。當(dāng)跟蹤目標(biāo)被遮擋,形心法將無法準(zhǔn)確計算目標(biāo)形心坐標(biāo),因此,本文所實現(xiàn)的目標(biāo)定位、跟蹤方法適用于目標(biāo)物形態(tài)不變情況下的視頻跟蹤。
本文研究了機(jī)器視覺技術(shù)下的FPGA視頻跟蹤問題,設(shè)計了FPGA的實時視頻采集顯示系統(tǒng),研究實現(xiàn)了實時視頻目標(biāo)檢測、定位及跟蹤算法,根據(jù)跟蹤目標(biāo)參數(shù)及運動軌跡,計算云臺步進(jìn)電機(jī)控制脈沖信號,并通過FPGA輸出該控制信號,云臺電機(jī)受到控制信號驅(qū)動后帶動攝像頭轉(zhuǎn)動。將視頻跟蹤系統(tǒng)中的各個子系統(tǒng)在FPGA平臺上進(jìn)行了集成與測試。測試結(jié)果表明,所設(shè)計的FPGA平臺視頻跟蹤系統(tǒng)在實時性與準(zhǔn)確性等方面都有較好的表現(xiàn),與傳統(tǒng)視頻跟蹤系統(tǒng)相比,該系統(tǒng)具有實時刷新率高、精確跟蹤目標(biāo)等優(yōu)勢。但本文所提出的算法僅適用于目標(biāo)形態(tài)不變情況下的視頻跟蹤,可從運動補償角度考慮。