摘 要: 構(gòu)建了基于FPGA的運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng),系統(tǒng)包括視頻數(shù)據(jù)的采集、緩存、顯示、色彩空間轉(zhuǎn)換及運(yùn)動(dòng)目標(biāo)檢測(cè)等模塊。運(yùn)動(dòng)目標(biāo)檢測(cè)采用基于塊均值的幀間差分法,這種方法有效地減少了需要存儲(chǔ)和運(yùn)算的數(shù)據(jù)量,降低了像素噪聲對(duì)檢測(cè)結(jié)果的影響。經(jīng)測(cè)試,該系統(tǒng)能提供清晰穩(wěn)定的監(jiān)控畫面,實(shí)現(xiàn)640像素×480像素,30幀/s視頻信號(hào)的運(yùn)動(dòng)目標(biāo)實(shí)時(shí)檢測(cè),并能在檢測(cè)到運(yùn)動(dòng)目標(biāo)后立刻發(fā)出報(bào)警信號(hào)。本系統(tǒng)消耗的邏輯資源較少,能夠在小規(guī)模的FPGA芯片上實(shí)現(xiàn),可推廣應(yīng)用于社區(qū)安防、生產(chǎn)安全監(jiān)控等領(lǐng)域。
關(guān)鍵詞: 視頻監(jiān)控;運(yùn)動(dòng)檢測(cè);塊均值;幀間差分法;FPGA
0 引言
視頻安防市場(chǎng)的快速擴(kuò)大給海量視頻信息的實(shí)時(shí)處理帶來(lái)了巨大的挑戰(zhàn),為適應(yīng)日益增長(zhǎng)的安防需求,需要更加智能化的視頻監(jiān)控技術(shù)。傳統(tǒng)的視頻監(jiān)控系統(tǒng)需要監(jiān)控人員對(duì)著數(shù)十個(gè)監(jiān)控畫面進(jìn)行實(shí)時(shí)觀察,這種監(jiān)控方式極易使監(jiān)控人員產(chǎn)生疲勞感,無(wú)法保證監(jiān)控的可靠性,因此需要實(shí)現(xiàn)對(duì)運(yùn)動(dòng)目標(biāo)的自動(dòng)檢測(cè)和報(bào)警。許多運(yùn)動(dòng)目標(biāo)檢測(cè)、跟蹤和識(shí)別算法在PC平臺(tái)上實(shí)現(xiàn)[1-2],PC平臺(tái)成本高,難以普及;基于DSP的圖像處理技術(shù),雖然成本相對(duì)較低,但是由于其順序執(zhí)行指令的局限性,仍然難以滿足對(duì)高分辨率視頻信號(hào)實(shí)時(shí)處理的需求[3]。而FPGA具有并行處理、數(shù)據(jù)吞吐量大、可重構(gòu)等特性,適合用于構(gòu)建嵌入式視頻監(jiān)控系統(tǒng)[4-5]。
本系統(tǒng)在FPGA上實(shí)現(xiàn)了圖像的采集、顯示及運(yùn)動(dòng)目標(biāo)檢測(cè),實(shí)現(xiàn)了640像素×480像素、30幀/s的視頻信號(hào)流的實(shí)時(shí)運(yùn)動(dòng)目標(biāo)檢測(cè)。本系統(tǒng)具有邏輯資源消耗少、可重構(gòu)、實(shí)用性強(qiáng)的特點(diǎn)。
1 運(yùn)動(dòng)檢測(cè)算法介紹
目前主流的運(yùn)動(dòng)檢測(cè)算法有光流法、背景差分法和幀間差分法三種。(1)光流場(chǎng)反映了像素在像素平面內(nèi)運(yùn)動(dòng)的速度向量,是一個(gè)二維的速度場(chǎng)。其算法特點(diǎn)是計(jì)算復(fù)雜性高,資源消耗量大,適合移動(dòng)攝像頭的運(yùn)動(dòng)檢測(cè)[6-7]。(2)背景差分法的基本原理是建立背景模型,用背景模型對(duì)當(dāng)前幀的像素進(jìn)行判別,判定其屬于背景還是屬于前景[8]。在復(fù)雜背景下,難以建立完善的背景模型。(3)幀間差分法的基本原理是將相鄰兩幀圖像對(duì)應(yīng)像素點(diǎn)的灰度值進(jìn)行減法運(yùn)算,若得到的差值大于閾值,則將該點(diǎn)判定為運(yùn)動(dòng)點(diǎn)。幀間差分法運(yùn)算簡(jiǎn)單,資源消耗少,易于實(shí)現(xiàn)實(shí)時(shí)檢測(cè)[9]。
本系統(tǒng)對(duì)傳統(tǒng)的幀間差分法進(jìn)行改進(jìn),在不降低系統(tǒng)實(shí)用性的基礎(chǔ)上,減少了需要緩存和處理的數(shù)據(jù)量。
2 改進(jìn)的幀間差分法
改進(jìn)的幀間差分法以“塊均值”為單位計(jì)算幀間差分值。在進(jìn)行運(yùn)動(dòng)檢測(cè)時(shí),將640×480的視頻幀分成32×32塊,每塊的大小為20×15個(gè)像素。這樣做有兩個(gè)好處:(1)提取塊的均值,能抑制像素噪聲對(duì)檢測(cè)結(jié)果的影響,減小誤檢測(cè)的概率;(2)減小了需要存儲(chǔ)的數(shù)據(jù)量,使得FPGA上的Block RAM能滿足存儲(chǔ)空間的需求。算法流程如圖1所示,檢測(cè)模塊將相鄰兩幀之間對(duì)應(yīng)位置的塊均值進(jìn)行比較,若差值大于閾值,就發(fā)出報(bào)警信號(hào)。
在ModelSim軟件中用Verilog編寫運(yùn)動(dòng)檢測(cè)模塊,并對(duì)其進(jìn)行行為級(jí)仿真。用MATLAB平臺(tái)生成激勵(lì)文件,并且查看輸出的結(jié)果。仿真結(jié)果如圖2所示。運(yùn)動(dòng)檢測(cè)模塊先對(duì)當(dāng)前輸入的源圖像進(jìn)行預(yù)處理,得到對(duì)應(yīng)的塊均值圖像,然后將相鄰幀對(duì)應(yīng)的塊均值圖像相減。從仿真結(jié)果可以看出,對(duì)相鄰幀間塊均值的差值進(jìn)行二值化處理后能夠?qū)崿F(xiàn)運(yùn)動(dòng)目標(biāo)的正確檢測(cè)。源圖像的大小為307 KB,而塊均值圖像的大小僅為1 KB,計(jì)算塊均值的處理方法大大減小了需要存儲(chǔ)和運(yùn)算的數(shù)據(jù)量,有利于實(shí)現(xiàn)視頻的實(shí)時(shí)檢測(cè)。
3 系統(tǒng)的實(shí)現(xiàn)
本系統(tǒng)基于Spartan-3A DSP S3D1800A開發(fā)板實(shí)現(xiàn),攝像頭采用OV7620 CMOS攝像頭。系統(tǒng)結(jié)構(gòu)如圖3所示。
系統(tǒng)主要分為圖像采集、幀緩存、運(yùn)動(dòng)目標(biāo)檢測(cè)以及圖像處理和顯示模塊。首先用Picoblaze軟核對(duì)攝像頭進(jìn)行配置,從攝像頭讀取的視頻信號(hào)經(jīng)過位拼接后形成完整的YUV像素?cái)?shù)據(jù),通過多端口存儲(chǔ)器控制器(MPMC)存入DDR2內(nèi)存芯片中,并按VGA的時(shí)序要求從DDR2中讀出數(shù)據(jù)。從DDR2中讀出的數(shù)據(jù)經(jīng)過色彩空間轉(zhuǎn)換和濾波后,與報(bào)警閃爍信號(hào)疊加,最后進(jìn)入VGA信號(hào)生成模塊,輸出視頻信號(hào)。同時(shí),運(yùn)動(dòng)檢測(cè)模塊讀取視頻灰度信息,進(jìn)行目標(biāo)檢測(cè),并根據(jù)檢測(cè)結(jié)果發(fā)出報(bào)警信號(hào)。
3.1 圖像采集模塊
Picoblaze是Xilinx公司推出的一款8位單片機(jī)軟核,其優(yōu)點(diǎn)是占用的資源很小,適合用于簡(jiǎn)單的邏輯控制。本系統(tǒng)用Picoblaze作為主控制器,通過I2C總線來(lái)實(shí)現(xiàn)對(duì)OV7620模塊的初始化。將攝像頭的幀率配置為30幀/s逐行顯示,分辨率配置為640像素×480像素,像素信號(hào)配置為YUV422輸出。每個(gè)像素由16 bit數(shù)據(jù)組成,高8 bit為Y信號(hào),低8 bit為U/V信號(hào)。
在YUV422格式的視頻信號(hào)中,Y信號(hào)每個(gè)時(shí)鐘都會(huì)采樣,而U和V信號(hào)則是間隔采樣。由于該攝像頭模塊的數(shù)據(jù)引腳只有8位,因此需要用二倍頻的像素時(shí)鐘對(duì)8位的引腳進(jìn)行時(shí)分復(fù)用輸出FPGA接收到像素信號(hào)后,將兩個(gè)8 bit的數(shù)據(jù)重新拼接成一個(gè)16 bit的完整的像素信號(hào)。
3.2 幀緩存模塊
攝像頭輸出的視頻信號(hào)是30 幀/s,而標(biāo)準(zhǔn)的640×480 VGA信號(hào)的最低幀頻為60 幀/s,并且標(biāo)準(zhǔn)VGA信號(hào)的同步參數(shù)以及時(shí)鐘頻率都與攝像頭輸出的不同,因此需要幀緩存模塊來(lái)滿足標(biāo)準(zhǔn)VGA信號(hào)的顯示要求。本系統(tǒng)用開發(fā)板上的兩塊32 M×16 bit DDR2存儲(chǔ)器來(lái)實(shí)現(xiàn)幀緩存。DDR2的控制器采用Xilinx公司提供的MPMC IP核。它可將DDR2內(nèi)的存儲(chǔ)空間映射為一個(gè)矩形,矩形的長(zhǎng)和寬可根據(jù)用戶的需要設(shè)定。在進(jìn)行幀寫入時(shí),只要在控制命令中聲明寫入的起始地址以及矩形的長(zhǎng)和寬,寫入MPMC FIFO的數(shù)據(jù)就會(huì)被存儲(chǔ)到對(duì)應(yīng)的矩形上。讀取過程也類似。
3.3 色彩空間轉(zhuǎn)換及顯示模塊
本系統(tǒng)采用的運(yùn)動(dòng)目標(biāo)檢測(cè)算法基于圖像的灰度值。為了得到圖像的灰度,即YUV信號(hào)的Y分量,需要將攝像頭配置成YUV422輸出的模式,而VGA顯示只能采用RGB信號(hào),因此需要對(duì)像素?cái)?shù)據(jù)進(jìn)行色彩空間的轉(zhuǎn)換。常用的色彩空間轉(zhuǎn)換操作如式(1)[10]所示:
式(1)中的參數(shù)根據(jù)不同標(biāo)準(zhǔn)有所差異。由于VGA邏輯要在27.125 MHz的時(shí)鐘頻率下運(yùn)行,為了盡量提高工作頻率,實(shí)現(xiàn)實(shí)時(shí)檢測(cè),需要設(shè)計(jì)高效的矩陣運(yùn)算電路。本系統(tǒng)的色彩空間轉(zhuǎn)換模塊采用五級(jí)流水結(jié)構(gòu),具體電路框架如圖4所示。在這種結(jié)構(gòu)下,兩個(gè)寄存器之間最長(zhǎng)的路徑延時(shí)為一個(gè)乘法器的延時(shí),在電路結(jié)構(gòu)上最大限度地提高了運(yùn)算速度,每一個(gè)時(shí)鐘周期完成一次矩陣運(yùn)算,實(shí)時(shí)地將YUV信號(hào)轉(zhuǎn)換成RGB信號(hào)。
為了提高畫面質(zhì)量,將空間轉(zhuǎn)換模塊輸出的RGB信號(hào)通過Xilinx 2D降噪IP核去除部分像素噪聲。報(bào)警閃爍模塊將去噪后的圖像信號(hào)和報(bào)警信號(hào)進(jìn)行疊加。VGA信號(hào)發(fā)生模塊產(chǎn)生標(biāo)準(zhǔn)的VGA行場(chǎng)時(shí)序,并將疊加了報(bào)警信號(hào)的圖像輸出到開發(fā)板上的電阻網(wǎng)絡(luò)DAC,DAC再將數(shù)字信號(hào)轉(zhuǎn)換成標(biāo)準(zhǔn)的VGA信號(hào)。
3.4 運(yùn)動(dòng)檢測(cè)模塊
運(yùn)動(dòng)檢測(cè)模塊采用的是第2節(jié)中的塊均值幀間差分法。模塊結(jié)構(gòu)如圖5所示。
模塊中用于存儲(chǔ)塊均值的RAM用片上block RAM實(shí)現(xiàn)。每個(gè)塊均值都是一個(gè)8 bit的無(wú)符號(hào)數(shù),一幀圖像共1 024個(gè)塊。因此RAM的位寬為8 bit,尋址空間為1 KB。
每計(jì)算出當(dāng)前幀一個(gè)塊的均值,就將其與上一幀對(duì)應(yīng)塊的均值作為減法器的輸入,將求出的差值與預(yù)先設(shè)定的閾值進(jìn)行比較,閾值可根據(jù)測(cè)試結(jié)果進(jìn)行調(diào)整。若差值大于閾值,則將該塊判定為運(yùn)動(dòng)塊,否則將該塊判定為靜止塊。在判定結(jié)束后,將當(dāng)前幀的塊均值存入RAM,替換上一幀的塊均值。
4 設(shè)計(jì)驗(yàn)證及結(jié)果分析
圖6(a)是系統(tǒng)硬件的現(xiàn)場(chǎng)測(cè)試圖,圖中的顯示設(shè)備是通用的LCD顯示器。經(jīng)過現(xiàn)場(chǎng)測(cè)試,本系統(tǒng)的圖像采集和顯示模塊畫質(zhì)較好,運(yùn)行穩(wěn)定,能夠長(zhǎng)時(shí)間無(wú)差錯(cuò)運(yùn)行,為用戶提供清晰可靠的監(jiān)控畫面。圖6(b)是對(duì)運(yùn)動(dòng)檢測(cè)功能的現(xiàn)場(chǎng)測(cè)試圖片,在沒有運(yùn)動(dòng)目標(biāo)時(shí),顯示器上顯示的是正常的監(jiān)控畫面。當(dāng)運(yùn)動(dòng)檢測(cè)模塊檢測(cè)到運(yùn)動(dòng)目標(biāo)時(shí),畫面上會(huì)出現(xiàn)一個(gè)黑白交替閃爍的矩形(報(bào)警的方式也可以采用燈光閃爍或是發(fā)出提示音等),提示監(jiān)控人員發(fā)現(xiàn)運(yùn)動(dòng)目標(biāo)。經(jīng)過測(cè)試,系統(tǒng)能實(shí)時(shí)進(jìn)行運(yùn)動(dòng)目標(biāo)檢測(cè),并在檢測(cè)到目標(biāo)后快速地發(fā)出警報(bào)。
5 結(jié)論
本系統(tǒng)實(shí)現(xiàn)了基于塊均值的運(yùn)動(dòng)目標(biāo)檢測(cè)。經(jīng)測(cè)試,本系統(tǒng)能實(shí)時(shí)正確地檢測(cè)運(yùn)動(dòng)目標(biāo)并發(fā)出報(bào)警信號(hào)。由于采用了基于塊均值的幀間差分法,大大減小了邏輯資源的消耗。本系統(tǒng)用小規(guī)模的FPGA芯片就能實(shí)現(xiàn),并且具有很高的可移植性,能根據(jù)具體的應(yīng)用環(huán)境進(jìn)行拓展和改進(jìn)。由于FPGA具有可重構(gòu)的特性,本系統(tǒng)還能夠方便快速地進(jìn)行升級(jí),降低了維護(hù)本。
參考文獻(xiàn)
[1] 周建英,吳小培,張超,等.基于滑動(dòng)窗的混合高斯模型運(yùn)動(dòng)目標(biāo)檢測(cè)方法[J].電子與信息學(xué)報(bào),2013,35(7):1650-1656.
[2] 蔣建國(guó),郎立娜,齊美彬,等.基于像素值聚類的運(yùn)動(dòng)目標(biāo)檢測(cè)方法[J].電子測(cè)量與儀器學(xué)報(bào),2012,26(2):101-106.
[3] 郭永彩,蘇渝維,高潮,等.基于FPGA的紅外圖像實(shí)時(shí)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),2011,32(3):514-519.
[4] BAILEY D G. Design for embedded image processing on FPGAs[M]. Singapore: John Wiley & Sons(Asia)Pte Ltd,2001.
[5] 祝利勇.基于FPGA的視頻運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)[D].西安:西安電子科技大學(xué),2007.
[6] BERTHOLD K P H, BRAIN G S. Determining optical flow[J]. Artificial Intelligence,1981,17(1-3):185-203.
[7] JOHNY P, ANDREAS L, CLAUS C. Real-time motion detection based on SW/HW-codesign for walking rescue robots[J]. Journal of Real-Time Image Processing, 2013, 8(4):353-368.
[8] AHMED S H, ELSAYED K M, ELHABIAN S Y. Moving object detection in spatial domain using background removal techniques[J]. Recent Patents on Computer Science, 2008, 1(1):32-54.
[9] Wang Kongqiao, Xu Lei, Fang Yikai, et al. One-against-all frame differences based hand detection for human and mobile interaction[J]. Neurocomputing, 2013,120:185-191.
[10] HOANG V, PHAM C. Efficient LUT-based truncated multiplier and its application in RGB to YCbCr color space conversion[J]. IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, 2012, E95-A(6):999-1006