摘 要: 構建了基于FPGA的運動目標檢測系統,系統包括視頻數據的采集、緩存、顯示、色彩空間轉換及運動目標檢測等模塊。運動目標檢測采用基于塊均值的幀間差分法,這種方法有效地減少了需要存儲和運算的數據量,降低了像素噪聲對檢測結果的影響。經測試,該系統能提供清晰穩定的監控畫面,實現640像素×480像素,30幀/s視頻信號的運動目標實時檢測,并能在檢測到運動目標后立刻發出報警信號。本系統消耗的邏輯資源較少,能夠在小規模的FPGA芯片上實現,可推廣應用于社區安防、生產安全監控等領域。
0 引言
視頻安防市場的快速擴大給海量視頻信息的實時處理帶來了巨大的挑戰,為適應日益增長的安防需求,需要更加智能化的視頻監控技術。傳統的視頻監控系統需要監控人員對著數十個監控畫面進行實時觀察,這種監控方式極易使監控人員產生疲勞感,無法保證監控的可靠性,因此需要實現對運動目標的自動檢測和報警。許多運動目標檢測、跟蹤和識別算法在PC平臺上實現[1-2],PC平臺成本高,難以普及;基于DSP的圖像處理技術,雖然成本相對較低,但是由于其順序執行指令的局限性,仍然難以滿足對高分辨率視頻信號實時處理的需求[3]。而FPGA具有并行處理、數據吞吐量大、可重構等特性,適合用于構建嵌入式視頻監控系統[4-5]。
本系統在FPGA上實現了圖像的采集、顯示及運動目標檢測,實現了640像素×480像素、30幀/s的視頻信號流的實時運動目標檢測。本系統具有邏輯資源消耗少、可重構、實用性強的特點。
1 運動檢測算法介紹
目前主流的運動檢測算法有光流法、背景差分法和幀間差分法三種。(1)光流場反映了像素在像素平面內運動的速度向量,是一個二維的速度場。其算法特點是計算復雜性高,資源消耗量大,適合移動攝像頭的運動檢測[6-7]。(2)背景差分法的基本原理是建立背景模型,用背景模型對當前幀的像素進行判別,判定其屬于背景還是屬于前景[8]。在復雜背景下,難以建立完善的背景模型。(3)幀間差分法的基本原理是將相鄰兩幀圖像對應像素點的灰度值進行減法運算,若得到的差值大于閾值,則將該點判定為運動點。幀間差分法運算簡單,資源消耗少,易于實現實時檢測[9]。
本系統對傳統的幀間差分法進行改進,在不降低系統實用性的基礎上,減少了需要緩存和處理的數據量。
2 改進的幀間差分法
改進的幀間差分法以“塊均值”為單位計算幀間差分值。在進行運動檢測時,將640×480的視頻幀分成32×32塊,每塊的大小為20×15個像素。這樣做有兩個好處:(1)提取塊的均值,能抑制像素噪聲對檢測結果的影響,減小誤檢測的概率;(2)減小了需要存儲的數據量,使得FPGA上的Block RAM能滿足存儲空間的需求。算法流程如圖1所示,檢測模塊將相鄰兩幀之間對應位置的塊均值進行比較,若差值大于閾值,就發出報警信號。
在ModelSim軟件中用Verilog編寫運動檢測模塊,并對其進行行為級仿真。用MATLAB平臺生成激勵文件,并且查看輸出的結果。仿真結果如圖2所示。運動檢測模塊先對當前輸入的源圖像進行預處理,得到對應的塊均值圖像,然后將相鄰幀對應的塊均值圖像相減。從仿真結果可以看出,對相鄰幀間塊均值的差值進行二值化處理后能夠實現運動目標的正確檢測。源圖像的大小為307 KB,而塊均值圖像的大小僅為1 KB,計算塊均值的處理方法大大減小了需要存儲和運算的數據量,有利于實現視頻的實時檢測。
3 系統的實現
本系統基于Spartan-3A DSP S3D1800A開發板實現,攝像頭采用OV7620 CMOS攝像頭。系統結構如圖3所示。
系統主要分為圖像采集、幀緩存、運動目標檢測以及圖像處理和顯示模塊。首先用Picoblaze軟核對攝像頭進行配置,從攝像頭讀取的視頻信號經過位拼接后形成完整的YUV像素數據,通過多端口存儲器控制器(MPMC)存入DDR2內存芯片中,并按VGA的時序要求從DDR2中讀出數據。從DDR2中讀出的數據經過色彩空間轉換和濾波后,與報警閃爍信號疊加,最后進入VGA信號生成模塊,輸出視頻信號。同時,運動檢測模塊讀取視頻灰度信息,進行目標檢測,并根據檢測結果發出報警信號。
3.1 圖像采集模塊
Picoblaze是Xilinx公司推出的一款8位單片機軟核,其優點是占用的資源很小,適合用于簡單的邏輯控制。本系統用Picoblaze作為主控制器,通過I2C總線來實現對OV7620模塊的初始化。將攝像頭的幀率配置為30幀/s逐行顯示,分辨率配置為640像素×480像素,像素信號配置為YUV422輸出。每個像素由16 bit數據組成,高8 bit為Y信號,低8 bit為U/V信號。
在YUV422格式的視頻信號中,Y信號每個時鐘都會采樣,而U和V信號則是間隔采樣。由于該攝像頭模塊的數據引腳只有8位,因此需要用二倍頻的像素時鐘對8位的引腳進行時分復用輸出FPGA接收到像素信號后,將兩個8 bit的數據重新拼接成一個16 bit的完整的像素信號。
3.2 幀緩存模塊
攝像頭輸出的視頻信號是30 幀/s,而標準的640×480 VGA信號的最低幀頻為60 幀/s,并且標準VGA信號的同步參數以及時鐘頻率都與攝像頭輸出的不同,因此需要幀緩存模塊來滿足標準VGA信號的顯示要求。本系統用開發板上的兩塊32 M×16 bit DDR2存儲器來實現幀緩存。DDR2的控制器采用Xilinx公司提供的MPMC IP核。它可將DDR2內的存儲空間映射為一個矩形,矩形的長和寬可根據用戶的需要設定。在進行幀寫入時,只要在控制命令中聲明寫入的起始地址以及矩形的長和寬,寫入MPMC FIFO的數據就會被存儲到對應的矩形上。讀取過程也類似。
3.3 色彩空間轉換及顯示模塊
本系統采用的運動目標檢測算法基于圖像的灰度值。為了得到圖像的灰度,即YUV信號的Y分量,需要將攝像頭配置成YUV422輸出的模式,而VGA顯示只能采用RGB信號,因此需要對像素數據進行色彩空間的轉換。常用的色彩空間轉換操作如式(1)[10]所示:
式(1)中的參數根據不同標準有所差異。由于VGA邏輯要在27.125 MHz的時鐘頻率下運行,為了盡量提高工作頻率,實現實時檢測,需要設計高效的矩陣運算電路。本系統的色彩空間轉換模塊采用五級流水結構,具體電路框架如圖4所示。在這種結構下,兩個寄存器之間最長的路徑延時為一個乘法器的延時,在電路結構上最大限度地提高了運算速度,每一個時鐘周期完成一次矩陣運算,實時地將YUV信號轉換成RGB信號。
為了提高畫面質量,將空間轉換模塊輸出的RGB信號通過Xilinx 2D降噪IP核去除部分像素噪聲。報警閃爍模塊將去噪后的圖像信號和報警信號進行疊加。VGA信號發生模塊產生標準的VGA行場時序,并將疊加了報警信號的圖像輸出到開發板上的電阻網絡DAC,DAC再將數字信號轉換成標準的VGA信號。
3.4 運動檢測模塊
運動檢測模塊采用的是第2節中的塊均值幀間差分法。模塊結構如圖5所示。
模塊中用于存儲塊均值的RAM用片上block RAM實現。每個塊均值都是一個8 bit的無符號數,一幀圖像共1 024個塊。因此RAM的位寬為8 bit,尋址空間為1 KB。
每計算出當前幀一個塊的均值,就將其與上一幀對應塊的均值作為減法器的輸入,將求出的差值與預先設定的閾值進行比較,閾值可根據測試結果進行調整。若差值大于閾值,則將該塊判定為運動塊,否則將該塊判定為靜止塊。在判定結束后,將當前幀的塊均值存入RAM,替換上一幀的塊均值。
4 設計驗證及結果分析
圖6(a)是系統硬件的現場測試圖,圖中的顯示設備是通用的LCD顯示器。經過現場測試,本系統的圖像采集和顯示模塊畫質較好,運行穩定,能夠長時間無差錯運行,為用戶提供清晰可靠的監控畫面。圖6(b)是對運動檢測功能的現場測試圖片,在沒有運動目標時,顯示器上顯示的是正常的監控畫面。當運動檢測模塊檢測到運動目標時,畫面上會出現一個黑白交替閃爍的矩形(報警的方式也可以采用燈光閃爍或是發出提示音等),提示監控人員發現運動目標。經過測試,系統能實時進行運動目標檢測,并在檢測到目標后快速地發出警報。
5 結論
本系統實現了基于塊均值的運動目標檢測。經測試,本系統能實時正確地檢測運動目標并發出報警信號。由于采用了基于塊均值的幀間差分法,大大減小了邏輯資源的消耗。本系統用小規模的FPGA芯片就能實現,并且具有很高的可移植性,能根據具體的應用環境進行拓展和改進。由于FPGA具有可重構的特性,本系統還能夠方便快速地進行升級,降低了維護本。
參考文獻
[1] 周建英,吳小培,張超,等.基于滑動窗的混合高斯模型運動目標檢測方法[J].電子與信息學報,2013,35(7):1650-1656.
[2] 蔣建國,郎立娜,齊美彬,等.基于像素值聚類的運動目標檢測方法[J].電子測量與儀器學報,2012,26(2):101-106.
[3] 郭永彩,蘇渝維,高潮,等.基于FPGA的紅外圖像實時采集系統設計與實現[J].儀器儀表學報,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的視頻運動目標檢測系統[D].西安:西安電子科技大學,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