林培杰,鄭柏春,陳志聰,吳麗君,程樹英
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350116;2.福州大學(xué) 微納器件與太陽能電池研究所,福建 福州 350116)
傳統(tǒng)的視頻監(jiān)控系統(tǒng),需要監(jiān)控人員注意力高度集中于監(jiān)控屏幕,其視力負擔(dān)很大。長時間工作后,監(jiān)控人員的注意力也將大大降低,極有可能錯過重要信息而導(dǎo)致嚴重后果。因此,該方案的實際工作效率不高。在一些特定應(yīng)用中需對運動目標(biāo)進行自動檢測和報警,現(xiàn)有的許多運動目標(biāo)檢測算法通常在PC平臺上實現(xiàn),成本高,難以普及;隨著嵌入式處理的發(fā)展,基于DSP、FPGA或者兩者結(jié)合進行視頻處理的運用越來越廣泛,實時性也得到了很大的提高。為了充分利用FPGA的并行處理、良好的時序控制及可重構(gòu)等特性,本文選擇了FPGA作為系統(tǒng)的實現(xiàn)平臺[1-3]。
目前,運動檢測的研究重點集中在目標(biāo)提取的正確率和背景模型的健壯性上,忽視了檢測系統(tǒng)的應(yīng)用場景。在某些復(fù)雜的應(yīng)用環(huán)境(如生產(chǎn)車間),感興趣的目標(biāo)有時分布在攝像頭視野的不同區(qū)域,需要對多個區(qū)域分別進行檢測,并且能對目標(biāo)區(qū)域進行實時調(diào)整,而傳統(tǒng)的監(jiān)控系統(tǒng)不具備這些功能。Object Video公司2012年提出了能夠在GIS中劃定區(qū)域并映射到監(jiān)控畫面的特定區(qū)域目標(biāo)檢測與識別系統(tǒng),這一系統(tǒng)基于云計算實現(xiàn),需要較大的投入。西安電子科技大學(xué)2007年提出了基于FPGA的運動目標(biāo)檢測系統(tǒng)[4],該系統(tǒng)只支持一個檢測區(qū)域的劃定,且區(qū)域坐標(biāo)需要通過串口輸入,使用并不方便。
本文以FPGA為平臺,對傳統(tǒng)的運動目標(biāo)檢測算法進行改進,提出了背景動態(tài)更新的檢測算法,在FPGA上實現(xiàn)了該算法。系統(tǒng)具有較好的實時性,并且實現(xiàn)了分區(qū)域檢測功能,基于視頻輸入為640×480的分辨率,針對一般的場景應(yīng)用,初始設(shè)置了4個檢測區(qū)域。檢測區(qū)域的個數(shù)、大小、位置可通過簡單的按鍵操作設(shè)定。具有較高的實用價值。
目前,在運動檢測方面常用的算法有光流法、幀間差分法和背景差分法[5-7]。光流法的特點是計算復(fù)雜性高,資源消耗量大,適合移動攝像頭的運動檢測;幀間差分法幀間差分法運算簡單,資源消耗少,易于實現(xiàn)實時檢測。但是幀間差分法存在“輪廓”、“快動”、“緩動”等問題,容易造成誤報;背景差分法在復(fù)雜場景下會造成判別錯誤,使檢測系統(tǒng)無法正常工作[8-9]。
針對背景差分法存在的缺陷,并結(jié)合幀間差分法的優(yōu)勢,本文提出背景動態(tài)更新的算法。基本原理是同時采用幀差法和背景差法,幀差法的檢測結(jié)果作為背景更新的依據(jù)。當(dāng)系統(tǒng)的幀間差分計算模塊連續(xù)N幀時間未檢測到運動目標(biāo)時,認為當(dāng)前畫面中沒有物體在運動,并用當(dāng)前畫面作為背景替代原先存儲在背景緩存中的背景,實現(xiàn)背景的動態(tài)更新。N的值可以根據(jù)具體應(yīng)用場合運動目標(biāo)的出現(xiàn)頻率而設(shè)定。算法流程如圖1所示。

圖1 背景動態(tài)更新算法流程圖Fig.1 Flow chart of dynamic background update algorithm
本算法由于具有背景動態(tài)更新功能,能自適應(yīng)光線的變化。同時,對于運動到畫面中然后靜止的物體,正確的反應(yīng)應(yīng)該是發(fā)出一次報警后將該物體視為背景。傳統(tǒng)的背景差分算法會持續(xù)報警,而本算法會在連續(xù)報警N幀后將該物體視為背景。另外,算法運算復(fù)雜度低,可以在小規(guī)模的FPGA芯片上實現(xiàn)。
算法效果圖如圖2所示,第1幅圖代表在視頻區(qū)域中劃定了一個檢測區(qū)域;第2幅、第3幅圖表示在該區(qū)域中背景發(fā)生變化時,區(qū)域邊框進行閃爍表示;第4幅圖表示,經(jīng)過一定時間之后,根據(jù)算法,該區(qū)域背景已經(jīng)更新,因此對應(yīng)的邊框不再閃爍,說明算法工作效果良好。

圖2 背景動態(tài)更新算法效果圖Fig.2 Result picture by dynamic background update algorithm
本系統(tǒng)基于Spartan-3ADSP S3D1800A 的FPGA開發(fā)板實現(xiàn),攝像頭采用OV7670CMOS攝像頭。系統(tǒng)結(jié)構(gòu)如圖3所示。從攝像頭讀取的視頻信號經(jīng)過位拼接后形成完整的YUV像素數(shù)據(jù),通過多端口存儲器控制器(Multi-Port Memory Controller,簡稱 MPMC)存入DDR2內(nèi)存芯片中,并按VGA的時序要求從DDR2中讀出數(shù)據(jù)。從DDR2中讀出的數(shù)據(jù)經(jīng)過色彩空間轉(zhuǎn)換和濾波后,和窗口閃爍圖像疊加,最后進入VGA信號生成模塊,輸出視頻信號。

圖3 系統(tǒng)結(jié)構(gòu)圖Fig.3 System structure diagram
同時,運動檢測模塊讀取視頻灰度信息,進行目標(biāo)檢測,同時判斷按鍵設(shè)置好的窗口坐標(biāo),并根據(jù)檢測結(jié)果控制窗口的閃爍。而窗口控制模塊則依據(jù)按鍵的設(shè)置決定窗口的位置,大小及個數(shù)。
圖像采集采用OV7670攝像頭模塊,用類似IIC的串行攝像頭控制總線(Serial Camera Control Bus,SCCB)對其進行初始化。將攝像頭配置成30幀/s逐行顯示,640×480像素的YUV422輸出,每個像素由16位數(shù)據(jù)組成,高8位為Y信號,低8位為U/V信號。在YUV422格式的視頻信號中,Y信號每個時鐘都會采樣,而U和V信號則是間隔采樣。由于該攝像頭模塊的數(shù)據(jù)引腳只有8位,因此需要用二倍頻的像素時鐘對8位的引腳進行時分復(fù)用輸出,F(xiàn)PGA接受到像素信號后,將兩個8位的數(shù)據(jù)拼接成一個16位的完整的像素信號。圖4為攝像頭配置時序圖,從圖中的配置有效信號Config_Done變?yōu)楦唠娖娇梢钥闯鰯z像頭配置成功。圖5為攝像頭數(shù)據(jù)輸出時序圖,從圖中可以看出在數(shù)據(jù)有效信號den有效之后,YUV數(shù)據(jù)正常輸出。數(shù)據(jù)輸出后采用采用MPMC IP核發(fā)送至外部DDR進行數(shù)據(jù)的緩存。

圖4 OV7670攝像頭配置時序圖Fig.4 Configuration timing diagram of OV7670camera

圖5 攝像頭數(shù)據(jù)輸出時序圖Fig.5 Data output timing of camera
本系統(tǒng)采用的運動目標(biāo)檢測算法是對圖像的灰度進行檢測。為了得到圖像的灰度,也就是YUV信號的Y分量,需要將攝像頭配置成YUV422輸出的模式。而VGA顯示只能采用RGB888信號。因此需要對像素數(shù)據(jù)進行色彩空間的轉(zhuǎn)換。常用的色彩空間轉(zhuǎn)換公式為[10]:

式(1)中的參數(shù)根據(jù)不同標(biāo)準(zhǔn)有所差異,由于VGA邏輯要在27.125MHz的時鐘頻率下運行,為了符合時鐘要求,減小延時,實現(xiàn)實時檢測,需要設(shè)計高效的矩陣運算電路。本系統(tǒng)的色彩空間轉(zhuǎn)換模塊采用5級流水結(jié)構(gòu),具體電路如圖6所示。在這種結(jié)構(gòu)下,兩個寄存器之間最長的路徑延時為一個乘法器的延時,在電路結(jié)構(gòu)上最大地提高了運算速度,每一個時鐘周期完成一次矩陣運算。

圖6 5級流水結(jié)構(gòu)矩陣運算器Fig.6 5levels pipeline structure matrix operator
經(jīng)過空間轉(zhuǎn)換后,數(shù)據(jù)信號進行圖像濾波,去除部分像素噪聲。系統(tǒng)采用快速中值濾波器進行實現(xiàn),該算法需要兩個模塊矩陣濾波窗口和排序模塊。
3.3.1 矩陣濾波窗口實現(xiàn)
要獲得一個像素區(qū)域的所有值需要設(shè)計一個3×3的像素緩存單元。根據(jù)圖像數(shù)據(jù)的串行傳輸?shù)奶攸c,數(shù)據(jù)是一行接著一行的,而一個像素周圍的像素的灰度值不都是在同一行上,因此需要將該像素所在行以及鄰近的兩行的像素灰度值保存起來。傳統(tǒng)的做法是通過三個FIFO來對數(shù)據(jù)進行緩存,但是FIFO在控制時序上比較復(fù)雜,同時在FPGA內(nèi)部的移位寄存器具有抽頭輸出的功能,正好適合本文的設(shè)計要求,因此本文采用移位寄存器來設(shè)計。
串行數(shù)據(jù)通過移位寄存器后,可利用多個抽頭轉(zhuǎn)化成并行數(shù)據(jù)。本文中,由于視頻的分辨率是640×480,所以需要將圖像2行的1 280個8 bit灰度值數(shù)據(jù)存入寄存器。寄存器內(nèi)部的數(shù)據(jù)經(jīng)通過兩個抽頭taps0x、taps1x分割成兩行數(shù)據(jù),這兩行數(shù)據(jù)與寄存器輸入數(shù)據(jù)共同組成并行數(shù)據(jù)輸出。但是此時的數(shù)據(jù)并不是同步的,需要對輸入的數(shù)據(jù)通過像素的使能進行同步。數(shù)據(jù)輸出后暫時存儲起來,這樣經(jīng)過3次讀取后,可以得到3組并行數(shù)據(jù),這3組并行數(shù)據(jù)即為3×3的濾波窗口。該部分的基本原理如圖7所示。

圖7 3×3濾波窗口生成過程Fig.7 3×3filter window generation process
3.3.2 排序模塊的實現(xiàn)
得到3×3濾波窗口后,需要將窗口內(nèi)部的9個數(shù)據(jù)進行大小的比較,由于需要進行7次的排序操作,所以本文采用模塊復(fù)用的思想,犧牲速度來節(jié)約面積資源。復(fù)用模塊的設(shè)計思想是,使用冒泡排序算法對3個灰度值進行排序。其算法過程是對所有的數(shù)據(jù)元素進行遍歷,一次進行2個數(shù)據(jù)的比較,如果大小順序不符合升序(降序)的要求則將兩個數(shù)據(jù)位置調(diào)換,直至無需再對調(diào)位置為止。排序得到的數(shù)據(jù)與時鐘進行同步處理后,即可得到基本的排序模塊。根據(jù)快速中值濾波器的原理,先后進行3次的行排序,再進行3次的列排序,最后右對角線進行最后排序,所得的數(shù)據(jù)即為3×3濾波窗口的中值。
經(jīng)測試,前端輸出的視頻圖像上存在一些偏綠色的噪點,如圖8(a)圖像,這些噪點會影響后期對邊沿檢測的處理。通過中值濾波器可以抑制噪點的存在,處理后的效果圖如圖8(b)圖像。
運動檢測模塊是本系統(tǒng)的核心,它采用的是前面所介紹的背景動態(tài)更新的算法。模塊結(jié)構(gòu)如圖9所示。

圖8 快速中值濾波器處理效果圖Fig.8 Result picture by fast median filter
在進行運動檢測時,將640×480的圖像分成32×32塊,每塊的大小為20×15個像素。這樣做有兩個好處:(1)提取塊的均值,能抑制像素噪聲對檢測結(jié)果的影響。(2)大大減小了需要存貯的數(shù)據(jù)量,使得FPGA上的Block RAM能滿足存儲空間的需求。但是這種方法以檢測精度的降低為代價。

圖9 運動目標(biāo)檢測模塊結(jié)構(gòu)圖Fig.9 Structure diagram of moving object detection module
模塊中有兩個RAM,用片上Block RAM實現(xiàn),分別存儲上一幀和背景圖像的塊均值。每個塊均值都是一個8bit的無符號數(shù),一幀圖像共1 024個塊。因此這兩個RAM的位寬為8bit,尋址空間為1K。
每計算出當(dāng)前幀一個塊的均值,就將其和上一幀對應(yīng)塊的均值進行比較。當(dāng)連續(xù)2 048幀(約68s)未檢測到運動目標(biāo),就將背景RAM的寫使能(wren)信號拉高一幀,進行背景的更新。同時,當(dāng)前幀塊均值和背景塊均值進行比較,對檢測到的運動目標(biāo)進行區(qū)域判定,將判定結(jié)果提供給后端圖像顯示電路。
本系統(tǒng)最多支持對4個區(qū)域進行分別檢測和報警。用兩個寄存器分別對像素的行和列計數(shù),這樣相當(dāng)于計算出當(dāng)前像素在圖像上的“坐標(biāo)”。而每個窗口的位置信息(上,下,左,右四條邊)分別存儲在4個寄存器中。在進行背景差分法運算的同時,將像素的“坐標(biāo)”和窗口的位置進行對比,得到當(dāng)前求幀差的像素在哪個窗口內(nèi)。如果檢測到的運動像素位于窗口x內(nèi),則將窗口x內(nèi)的運動點計數(shù)器加一,若運動點計數(shù)器的值大于一定的閾值,我們就認為窗口x中檢測到運動目標(biāo),該窗口發(fā)出閃爍信號,并與現(xiàn)有視頻疊加送至VGA顯示器顯示[11]。
為了控制區(qū)域的使能、位置以及大小,系統(tǒng)提供了六個按鍵對檢測區(qū)域進行設(shè)定,設(shè)定的結(jié)果可以隨時被更改。這六個按鍵可以實現(xiàn)窗口選擇、模式選擇和上下左右調(diào)整等功能。
系統(tǒng)硬件實物圖如圖10所示。

圖10 系統(tǒng)硬件實物圖Fig.10 System hardware chart

圖11 運動目標(biāo)檢測Chipscope波形圖Fig.11 Chipscope waveforms of moving object detection
圖11是“運動目標(biāo)出現(xiàn)在區(qū)域0后靜止不動”這一事件對應(yīng)的Chipscope波形圖。圖中各個信號都有對應(yīng)的注釋。從圖中可以看到,在該行中,每20個時鐘周期,當(dāng)前塊的一個塊均值就會被計算出來。隨后依據(jù)第2節(jié)中的算法分別計算其幀差值及背景差值。由于該目標(biāo)進入?yún)^(qū)域0后靜止,幀差delta_f的絕對值很小,幀差法檢測不到目標(biāo),如果一幀結(jié)束時幀差法都沒有檢測到目標(biāo),就將該幀視為靜止幀。背景差delta_b出現(xiàn)大于閾值(本次試驗設(shè)為25)的值,背景差法檢測到目標(biāo),并且根據(jù)win0_in為高電平判斷出目標(biāo)在區(qū)域0內(nèi)。win0_sum統(tǒng)計目標(biāo)塊個數(shù)。圖中系統(tǒng)依據(jù)幀差法的判定,將當(dāng)前幀視為靜止幀,fram_cnt加一,當(dāng)fram_cnt等于2047,背景就會更新。
圖12是系統(tǒng)的現(xiàn)場測試圖,圖中開啟了4個檢測區(qū)域,4個區(qū)域顏色各不相同,大小和位置可以通過按鍵設(shè)置。從圖中可以看出,運動目標(biāo)進入某個窗口后,該窗口就會由固定的顏色轉(zhuǎn)變?yōu)楹诎捉惶娴亻W爍,以提醒監(jiān)控空者在對應(yīng)的區(qū)域發(fā)現(xiàn)了運動目標(biāo)。如果運動目標(biāo)在某個窗口中停止運動,系統(tǒng)仍然能夠繼續(xù)報警,直到將該目標(biāo)歸入背景。經(jīng)測試,系統(tǒng)能正確地實現(xiàn)背景動態(tài)跟新算法,實現(xiàn)多區(qū)域運動目標(biāo)檢測功能。

圖12 系統(tǒng)現(xiàn)場調(diào)試圖Fig.12 System debugging chart
本系統(tǒng)的FPGA資源消耗情況如表1所示。

表1 FPGA資源消耗表Tab.1 FPGA resource consumption table
從表中可以看到,系統(tǒng)只使用了1個Block RAM用來存儲塊均值。由于采用了基于塊均值的計算方法,系統(tǒng)需要的存儲空間很小。一個Block RAM 的存儲空間為18kb,片上84個Block RAM的存儲空間總和為1 512kb,而一幀圖像的大小為2457.6kb。可見,如果不采用塊均值的存儲方式,片上的存儲空間是無法滿足要求的。
從Slice,LUT和Flip Flops等其他資源的消耗情況來看,本系統(tǒng)消耗的資源很少,容易在小規(guī)模低成本的FPGA上實現(xiàn),并且易于集成入其他復(fù)雜的系統(tǒng)中。
在系統(tǒng)各個模塊延時方面,其中圖像數(shù)據(jù)緩存延時在1幀以內(nèi);中值濾波延時為5個時鐘;其他模塊的延時就是輸入輸出的寄存器各延時1個時鐘。系統(tǒng)中圖像的采集和檢測是同時進行的,在一幀圖像內(nèi)完成,采集圖像的同時記錄各個檢測區(qū)域運動點的個數(shù),在一幀結(jié)束的時候確定運動點的個數(shù),以及哪幾個窗口有運動目標(biāo),然后在下一幀讓運動窗口進入閃爍狀態(tài)。
本系統(tǒng)采用背景動態(tài)更新的運動檢測算法,構(gòu)建了具有多區(qū)域運動目標(biāo)檢測功能的視頻監(jiān)控系統(tǒng),最多支持4個檢測區(qū)域。該系統(tǒng)能動態(tài)更新背景,較好地適應(yīng)背景的變化。檢測區(qū)域的大小,位置和數(shù)量可以方便地配置,實現(xiàn)了640×480,30幀/s視頻信號的分區(qū)域?qū)崟r檢測。該系統(tǒng)消耗較少的邏輯資源,可以在小規(guī)模的FPGA芯片上實現(xiàn),適用于社區(qū)安防監(jiān)控或生產(chǎn)安全監(jiān)控等不同的場合。
[1] 郭永彩,蘇渝維,高潮.基于FPGA的紅外圖像實時采集系統(tǒng)設(shè)計與實現(xiàn)[J].儀器儀表學(xué)報,2011,32(3):515-519.Guo Y C,Su Y W,Gao C.Design and implementation of real time infrared image collection system based on FPGA[J].Chinese Journal of Scientific Instrument,2011,32(3):515-519.(in chinese)
[2] Tomasz K,Marek G.Real-time implementation of moving object detection in video surveillance systems using FPGA [J].Computer Science,2011,12(1):149-162.
[3] 周建英,吳小培,張超.基于滑動窗的混合高斯模型運動目標(biāo)檢測方法[J].電子與信息學(xué)報,2013,35(7):1650-1655.Zhou J Y,Wu X P,Zhang C,et al.A moving object detection method based on sliding window gaussian mixture model[J].Journal of Electronics &Information Technology,2013,35(7):1650-1656.(in chinese)
[4] 祝利勇.基于FPGA的視頻運動目標(biāo)檢測系統(tǒng)[D].西安:西安電子科技大學(xué),2007.Zhu L Y.A video moving object detection system based on FPGA[D].Xian:Xidian University,2007.
[5] Lipton A J,F(xiàn)ujiyoshi H.Patil R S.Moving target classification and tracking from real-time video [J].IEEE Workshop Application of Computer Vision,1998,17(9):8-14.
[6] Barron J L,F(xiàn)leet D J,Beauchemin S S.Performance of optical flow techniques[J].International J.Computer Vision,1994,12(1):42-77.
[7] Jain R.Difference and accumulative difference pictures in dynamic sceneanalysis[J].Image and Vision Computing,1984,2(2):99-108.
[8] 吳君欽,劉昊,羅勇.靜態(tài)背景下的運動目標(biāo)檢測算法[J].液晶與顯示,2012,27(5):682-686.Wu J Q,Liu H,Luo Y.Algorithm of moving object detection in static background[J].Chinese Journal of Liquid Crystals and Displays,2012,27(5):682-686.(in chinese)
[9] 劉翔,周楨.基于分塊背景建模的運動目標(biāo)檢測技術(shù)[J].液晶與顯示,2011,26(6):831-835.Liu X,Zhou Z.Moving objectives detecting technology based on block processing of background model establishment[J].Chinese Journal of Liquid Crystals and Displays,2011,26(6):831-835.(in chinese)
[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,95(6):999-1006.
[11] 鄭爭兵.基于FPGA的 VGA波形顯示系統(tǒng)設(shè)計與實現(xiàn)[J].液晶與顯示,2014,29(1):88-93.Zheng Z B.Design and implementation of VGA waveform display system based on FPGA[J].Chinese Journal of Liquid Crystals and Displays,2014,29(1):88-93.(in chinese)