孫 猛,袁小龍,王麗紅
(北京交通大學(xué) 電子信息工程學(xué)院,北京 100044)
運(yùn)動(dòng)目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)領(lǐng)域的一個(gè)重要研究方向,是各種后續(xù)高級(jí)處理,如目標(biāo)分類(lèi)、行為理解等的基礎(chǔ),在安全監(jiān)控、智能交通等領(lǐng)域都有著廣泛的應(yīng)用。一個(gè)魯棒性的運(yùn)動(dòng)目標(biāo)檢測(cè)方法有利于后期的特征提取、目標(biāo)跟蹤等步驟。
常見(jiàn)的三種目標(biāo)檢測(cè)方法是背景差分法、幀間差分法和光流法[1]。其中背景差分法最常用,它通過(guò)當(dāng)前幀圖像與參考背景圖像相減檢測(cè)運(yùn)動(dòng)目標(biāo),該方法的關(guān)鍵在于創(chuàng)建和維護(hù)一個(gè)可靠的背景。有很多不同的背景模型被研究人員提出,Haritaoglu等人利用最小、最大強(qiáng)度值和最大時(shí)間差為場(chǎng)景中的每個(gè)像素進(jìn)行統(tǒng)計(jì)建模,并且進(jìn)行周期性的背景更新[2];Stauffer和 Grimson采取為每個(gè)像素點(diǎn)進(jìn)行混合高斯建模的方法構(gòu)建自適應(yīng)的混合高斯背景模型,該模型能夠在線更新模型參數(shù)和權(quán)重,魯棒性地克服了光照變化、樹(shù)枝晃動(dòng)等因素造成的影響[3];Stauffer和 Grimson算法采用固定的更新率來(lái)更新各高斯分布函數(shù)的參數(shù),這樣會(huì)降低對(duì)運(yùn)動(dòng)目標(biāo)檢測(cè)的靈敏度;Kaew-TraKulPong等人提出了改進(jìn)的混合高斯背景建模算法[4],有效地改善了這一問(wèn)題;OpenCV依據(jù)這個(gè)改進(jìn)的算法提供了實(shí)現(xiàn)混合高斯背景模型的函數(shù)庫(kù)[5]。
基于自適應(yīng)混合高斯背景模型的背景差分法對(duì)靜態(tài)背景場(chǎng)合下的運(yùn)動(dòng)目標(biāo)檢測(cè)有良好的魯棒性,但由于算法的計(jì)算量巨大,在PC上只能達(dá)到較低的幀率,遠(yuǎn)不能滿足實(shí)時(shí)性要求。FPGA近年來(lái)發(fā)展迅速,它有著接近ASIC的高速度和接近軟件設(shè)計(jì)的靈活性,為計(jì)算機(jī)視覺(jué)和數(shù)字圖像處理的提速提供了一個(gè)很好的平臺(tái)。
本文的算法基于OpenCV函數(shù)庫(kù),對(duì)原算法進(jìn)行適當(dāng)?shù)男薷?,做出折中的定點(diǎn)化方案并針對(duì)FPGA的特性設(shè)計(jì)了適合FPGA實(shí)現(xiàn)的結(jié)構(gòu),在Stratix IV開(kāi)發(fā)平臺(tái)上成功實(shí)現(xiàn)了1 280×1 024高清視頻的背景建模和運(yùn)動(dòng)目標(biāo)檢測(cè),具有較好的監(jiān)測(cè)效果和很好的實(shí)時(shí)性。
最常見(jiàn)的背景建模算法是自適應(yīng)的單峰背景模型,使用一個(gè)背景值表示一個(gè)像素點(diǎn),并維護(hù)這個(gè)背景值,因?yàn)榈陀?jì)算量和存儲(chǔ)量的要求,使這種模型被廣泛應(yīng)用。但當(dāng)畫(huà)面出現(xiàn)像雨雪之類(lèi)的擾動(dòng)時(shí),此模型會(huì)得到很差的結(jié)果。解決上述環(huán)境擾動(dòng)的更好方案就是多峰背景模型,即每個(gè)像素點(diǎn)用多個(gè)單峰背景模型表示。最著名的就是Stauffer和Grimson提出的自適應(yīng)混合高斯模型,對(duì)復(fù)雜背景有著較強(qiáng)的抗干擾能力,尤其是KaewTr-aKulPong和Bowden對(duì)此算法做出了改進(jìn)后,使其算法更具魯棒性。
每個(gè)像素點(diǎn)用K個(gè)高斯分布混合表示。則某一像素點(diǎn)的值為Xt的概率為:
其 中 ,μi,t、σi,t和 ωi,t是t時(shí)刻組成像素X的第i個(gè)高斯分布的均值、標(biāo)準(zhǔn)差和權(quán)重參數(shù),η是高斯概率密度函數(shù)。對(duì)于每一個(gè)新的像素值,檢測(cè)它是否與K個(gè)高斯分布匹配,匹配條件為:
如果Xt與任一高斯分布都不匹配,則添加一個(gè)均值為Xt、方差和權(quán)值自設(shè)定的高斯分布,用它替換歷史中優(yōu)先級(jí)最低的高斯分布。權(quán)重的更新等式如下:
其中,α 是學(xué)習(xí)率,當(dāng)有匹配時(shí) mi,t為 1,否則為 0。
只有匹配成功的高斯分布才更新它的均值和方差,其他的分布不變,均值和方差的更新公式如下:
其中學(xué)習(xí)率:ρ=αη(Xt|μt,σt)
每次更新后根據(jù)(ωk/σk)對(duì)K個(gè)分布進(jìn)行排序,由前B個(gè)分布決定當(dāng)前像素的背景值。
以上經(jīng)典算法都是采用固定的更新率來(lái)更新各高斯分布函數(shù)的參數(shù),這樣會(huì)降低運(yùn)動(dòng)目標(biāo)檢測(cè)的靈敏度,尤其在初始階段。針對(duì)這一問(wèn)題,Kaew-TraKulPong提出了改進(jìn)的算法,在更新的不同階段采用不同的更新策略,有效改善了這一問(wèn)題。OpenCV依據(jù)這個(gè)改進(jìn)的算法提供了實(shí)現(xiàn)混合高斯背景模型的函數(shù)庫(kù),本設(shè)計(jì)的算法即基于OpenCV函數(shù)庫(kù)。
OpenCV加入了兩個(gè)重要變量:win_size為兩種更新策略的分界幀數(shù),對(duì)于前后兩種策略,學(xué)習(xí)率α和ρ的選取原則不同;match_sum記錄每個(gè)高斯分布的歷史匹配次數(shù)。改進(jìn)后算法流程見(jiàn)圖1。
圖1 改進(jìn)后算法流程圖
各步驟操作如下:
第一幀創(chuàng)建高斯模型:用第一幀圖像給所有高斯分布參數(shù)賦初值。
匹配檢測(cè):檢測(cè)每個(gè)像素點(diǎn)與對(duì)應(yīng)K個(gè)高斯分布的匹配情況。
更新方式(1):win_size幀前沒(méi)有匹配情況的更新。
更新方式(2):win_size幀前有匹配情況的更新。
更新方式(3):win_size幀后沒(méi)有匹配情況的更新。
更新方式(4):win_size幀后有匹配情況的更新。
排序:對(duì)每個(gè)像素更新后的K個(gè)高斯分布根據(jù)(ωk/σk)排序。
圖像尺寸和每個(gè)像素高斯分布的個(gè)數(shù)直接影響軟件運(yùn)行速度和FPGA資源占用。在VS2005環(huán)境下進(jìn)行軟件驗(yàn)證,選取 win_size為 200,高斯分布個(gè)數(shù)為3可以達(dá)到一個(gè)較好的檢測(cè)效果;應(yīng)用背景是1 280×1 024高清視頻的實(shí)時(shí)運(yùn)動(dòng)目標(biāo)檢測(cè),對(duì)原始視頻直接進(jìn)行混合高斯背景建模需要很大的數(shù)據(jù)率,是FPGA所不能達(dá)到的。針對(duì)這一問(wèn)題提出了如下改進(jìn)策略:
(1)RGB空間轉(zhuǎn)換成灰度。此操作丟失顏色信息保留亮度信息,亮度信息完全可以滿足檢測(cè)目標(biāo)區(qū)域的要求,數(shù)據(jù)量減少了2/3。其轉(zhuǎn)換公式如下:
(2)縮減圖像尺寸(Resize)處理、減小視頻尺寸、確定小尺寸圖像內(nèi)運(yùn)動(dòng)目標(biāo)區(qū)域后再做出同比例的反Resize,得到原始1 280×1 024視頻中的目標(biāo)區(qū)域。為了盡可能少地丟失原圖像信息,對(duì)每個(gè)4×4鄰域窗口16個(gè)像素取均值得到1個(gè)新像素。通過(guò)大量實(shí)驗(yàn)驗(yàn)證,此方案可以達(dá)到很好的檢測(cè)效果。
上述改進(jìn)算法在VS2005環(huán)境下運(yùn)行,PC配置為:Intel雙核3.17 GHz處理器,3 GB DDR2內(nèi)存,完成一幀高斯背景更新的時(shí)間約為85 ms,完成一幀檢測(cè)的時(shí)間約為92 ms,待處理視頻為60幀/s,幀更新時(shí)間為 16.7 ms,遠(yuǎn)不能滿足實(shí)時(shí)性要求?;旌细咚贡尘八惴ㄐ枰獮槊總€(gè)像素建立多個(gè)分布,這些分布的更新操作在PC中是串行處理的,耗費(fèi)大量的運(yùn)行時(shí)間。而FPGA的并行處理能力可以同時(shí)對(duì)多個(gè)分布進(jìn)行更新,再加上流水線結(jié)構(gòu)帶來(lái)的高數(shù)據(jù)吞吐量,F(xiàn)PGA可以大大縮減算法的運(yùn)行時(shí)間。
(3)軟件中的高斯參數(shù)均為64 bit浮點(diǎn)數(shù),對(duì)于FPGA實(shí)現(xiàn),需要片外存儲(chǔ)器件暫存每幀的高斯參數(shù)。必須對(duì)各參數(shù)做出合理的定點(diǎn)化方案,以減小對(duì)片外存儲(chǔ)容量和數(shù)據(jù)率的要求。在Matlab R2008a環(huán)境下進(jìn)行定點(diǎn)化仿真,經(jīng)過(guò)大量的實(shí)驗(yàn),對(duì)高斯參數(shù)做出如下定點(diǎn)化方案(I表示整數(shù)位,F(xiàn)表示小數(shù)位):
定點(diǎn)化后每個(gè)高斯分布參數(shù)需要40 bit,每個(gè)像素3個(gè)高斯分布共120 bit。此時(shí)要求的片外存儲(chǔ)容量為9.375 Mbit,數(shù)據(jù)率為590 Mb/s。選用的FPGA硬件平臺(tái)為Stratix IV開(kāi)發(fā)套件,開(kāi)發(fā)板上的4 MB QDR II+SRAM數(shù)據(jù)速率最高可以達(dá)到1 600 Mb/s,完全滿足此方案的需求。
系統(tǒng)整體模塊劃分見(jiàn)圖2。
圖2 系統(tǒng)整體框圖
Resize&RGB2gray模塊完成1 280×1 024 RGB圖像到320×256灰度圖像的轉(zhuǎn)換,將每幀的灰度值暫存于片上RAM,每完成一幀的轉(zhuǎn)換發(fā)出幀開(kāi)始信號(hào)給高斯模塊和差分模塊;差分模塊完成當(dāng)前幀與背景的差運(yùn)算,選取合適的閾值得到二值圖像;膨脹/腐蝕模塊用數(shù)學(xué)形態(tài)學(xué)處理(膨脹和腐蝕)去除噪聲和填補(bǔ)孔洞,在FPGA中采用line-buffer結(jié)構(gòu)實(shí)現(xiàn)。高斯模塊需要大量的存儲(chǔ)和運(yùn)算,是本設(shè)計(jì)的重點(diǎn)和難點(diǎn),下面著重介紹高斯模塊的實(shí)現(xiàn)。
高斯模塊主要由數(shù)據(jù)調(diào)度、創(chuàng)建高斯、更新高斯、寫(xiě)回4部分組成,如圖3所示。
(1)數(shù)據(jù)調(diào)度模塊完成像素灰度值的請(qǐng)求、與QDR II+SRAM控制器[6]的數(shù)據(jù)交互。QDR II+SRAM控制器可以提供72 bit,250 MHz的用戶數(shù)據(jù)接口,并可以讀寫(xiě)操作同時(shí)進(jìn)行,高斯模塊的最高工作頻率為110 MHz,控制器的數(shù)據(jù)率完全可以滿足120 bit、110 MHz的要求。
(2)創(chuàng)建高斯模塊利用第一幀數(shù)據(jù)初始化高斯模型的各參數(shù)。
(3)更新高斯模塊完成高斯模型的更新,是最重要的一個(gè)模塊。3個(gè)高斯分布的匹配檢測(cè)和參數(shù)更新操作并行執(zhí)行。因?yàn)槟P蛥?shù)更新中涉及到一些乘除法操作,為了達(dá)到更高的處理速度,提高系統(tǒng)的數(shù)據(jù)吞吐量,此模塊采用17級(jí)的深度流水線。更新操作中不同分支路徑的延時(shí)不同,最長(zhǎng)路徑需要17個(gè)時(shí)鐘周期,為了組成流水線短路徑采用寄存處理使所有更新分支均為17個(gè)時(shí)鐘周期。17個(gè)時(shí)鐘周期大體分為三個(gè)階段:
第一階段需要5級(jí)流水,完成匹配檢測(cè)和更新權(quán)值。匹配檢測(cè)是判斷當(dāng)前像素值與歷史高斯分布的匹配情況,得到匹配信息給后級(jí)模塊使用;更新權(quán)值即預(yù)先計(jì)算出有無(wú)匹配的兩種權(quán)值更新結(jié)果,參數(shù)更新模塊根據(jù)匹配信息選擇出實(shí)際情況的權(quán)值。
第二階段需要6級(jí)流水,此階段完成所有高斯參數(shù)的更新。對(duì)于匹配的分布更新均值、方差、match_sum,選擇相應(yīng)的權(quán)值輸出;當(dāng)所有分布均不匹配時(shí)創(chuàng)建新的分布替換優(yōu)先級(jí)最低的分布。
第三階段需要 6級(jí)流水,根據(jù)(ωk/σk)對(duì)更新后的 3個(gè)高斯分布排序。
(4)寫(xiě)回模塊將更新后的高斯參數(shù)寫(xiě)回?cái)?shù)據(jù)調(diào)度模塊,然后由QDR II+控制器寫(xiě)回 SRAM;同時(shí)將最高優(yōu)先級(jí)高斯的均值存于片上RAM作為當(dāng)前的背景值。
所有模塊采用Verilog-HDL編寫(xiě),整個(gè)系統(tǒng)在Modelsim進(jìn)行功能仿真,在Altera Stratix IV開(kāi)發(fā)套件上進(jìn)行驗(yàn)證,核心芯片為 EP4SGX230KF40C2,資源耗用見(jiàn)表1。系統(tǒng)的最高工作頻率為110 MHz,完成一幀320×256圖像背景更新的最短時(shí)間為745 μs,視頻源更新幀數(shù)據(jù)時(shí)間為16.7 ms,此模塊具有很好的實(shí)時(shí)性。
測(cè)試方案:由PC播放視頻,DVI輸入FPGA處理,F(xiàn)PGA處理結(jié)果輸出至 DVI顯示。1 280×1 024 60 Hz的DVI視頻時(shí)鐘頻率為108 MHz,F(xiàn)PGA系統(tǒng)最高時(shí)鐘頻率為110 MHz,測(cè)試時(shí)直接采用DVI時(shí)鐘作為系統(tǒng)運(yùn)行時(shí)鐘。
表1 FPGA資源耗用
使用Signal Tap II和Matlab聯(lián)合進(jìn)行板級(jí)調(diào)試,具體做法是:將Signal Tap II的采樣深度設(shè)為128 K,可以采到一整幀(320×256×8 bit)數(shù)據(jù),利用 create signalTap II list File命令可以將當(dāng)前觀測(cè)窗口內(nèi)的所有信號(hào)值導(dǎo)出,然后將導(dǎo)出的數(shù)據(jù)用Matlab顯示分析。圖4為一段視頻中第602幀F(xiàn)PGA的處理結(jié)果,從左到右依次為Resize后的灰度圖、高斯背景、差分、膨脹腐蝕后的二值圖像。圖5為同一幀視頻在VS2005中的運(yùn)行結(jié)果。
圖4 FPGA處理結(jié)果
圖5 VS2005運(yùn)行結(jié)果
比較可知,軟件找到的目標(biāo)區(qū)域更加準(zhǔn)確,說(shuō)明軟件得到的背景要比FPGA得到的背景可靠。因?yàn)镕PGA中對(duì)高斯參數(shù)進(jìn)行了定點(diǎn)化操作,運(yùn)算精度要低于軟件。FPGA實(shí)現(xiàn)雖然性能上有所降低,但可以滿足檢測(cè)要求。軟件每秒只能處理10幀左右,而FPGA處理一幀圖像只需要1.5 ms,F(xiàn)PGA達(dá)到了很好的實(shí)時(shí)性。
在Altera Stratix IV開(kāi)發(fā)套件上成功實(shí)現(xiàn)了1 280×1 024高清視頻的混合高斯背景建模和運(yùn)動(dòng)目標(biāo)檢測(cè),設(shè)計(jì)采用基于自適應(yīng)混合高斯背景模型的背景消減法,對(duì)環(huán)境擾動(dòng)具有很好的適應(yīng)性。針對(duì)高斯建模中復(fù)雜的運(yùn)算操作,設(shè)計(jì)采用了17級(jí)深度流水線,使系統(tǒng)最高工作頻率達(dá)到110 MHz;針對(duì)原算法的高數(shù)據(jù)率要求,設(shè)計(jì)了合理的Resize和定點(diǎn)化方案,使性能和資源耗用達(dá)到了一個(gè)較好的平衡點(diǎn)。經(jīng)過(guò)Modelsim仿真和板級(jí)驗(yàn)證,本設(shè)計(jì)可以達(dá)到較好的檢測(cè)效果并具有非常好的實(shí)時(shí)性。此實(shí)現(xiàn)方案在嵌入式系統(tǒng)和視覺(jué)觀測(cè)系統(tǒng)都有廣泛的應(yīng)用。
[1]吳曉陽(yáng).基于OpenCV的運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤[D].杭州:浙江大學(xué),2008:47-55.
[2]HARITAOGLU I,HARWOOD D,DAVIS L.Real-time surveillance of people and their activities[J].IEEE Transaction on Pattern Analysis and Machine Intelligence,2000,22(8):809-830.
[3]STAUFFER C,GRIMSON W.E.L.A daptive background mixture models for real-time tracking[C].IEEE Computer Society Conference on Computer Vision and Pattern Recognition.IEEE Computer.Soc,1999,2.
[4]KaewTraKulPong,Bowden.An improved adaptive background mixture model for real-time tracking with shadow detection[C].In Proceeding.2nd European Workshop on Advanced Video Based Surveillance Systems,AVBS01.2001,9.
[5]劉瑞禎,于仕琪.OpenCV教程[M].北京:航空航天大學(xué)出版社,2007.
[6]Altera Corporation.QDR II and QDR II+SRAM controller with UniPHY user guide.2010.