劉汝卿,李 鋒,蔣 衍,朱精果
(中國科學(xué)院 微電子研究所,北京 100094)
隨著我國安防產(chǎn)業(yè)以及民眾安全意識的提升,安防市場規(guī)模迅速擴(kuò)大,其應(yīng)用領(lǐng)域從文博等特殊單位發(fā)展到金融、公安、交通、樓宇等周邊產(chǎn)業(yè)。其中,安防監(jiān)控領(lǐng)域在技術(shù)層面也已進(jìn)入數(shù)字化、高清化和網(wǎng)絡(luò)化時期,在應(yīng)用層面也步入了社會化安防產(chǎn)品、民用市場層[1-3]。同時,越來越多的傳感器探測技術(shù)應(yīng)用到安防市場中,如分布式光纖傳感系統(tǒng)、振動光纖、聲音監(jiān)聽、紅外報警、激光雷達(dá)、視頻監(jiān)控等,其中民用攝像頭、監(jiān)控器、報警器等產(chǎn)品得到了最廣泛的普及,安防視頻監(jiān)控行業(yè)已進(jìn)入了快速發(fā)展期[4-6]。
由于人工方式檢索進(jìn)行視頻排查效率低下,并且?guī)缀醪豢赡軐崿F(xiàn)實時有效監(jiān)控,因此目標(biāo)檢測技術(shù)已成為當(dāng)前安防視頻監(jiān)控領(lǐng)域中非常重要的研究方向之一[7-9]。目標(biāo)檢測的主要目的是從一個場景或者視頻中定位出目標(biāo)的位置或者跟蹤其運動軌跡。目前目標(biāo)檢測研究手段有CPU處理、GPU處理器、AI智能芯片以及FPGA、DSP等。其中CPU處理器采用串行方式效率略低,GPU及AI智能芯片多采用深度學(xué)習(xí)網(wǎng)絡(luò)框架,功耗大,開發(fā)難度大,成本高,適用于大組網(wǎng)、大互聯(lián)場景[10]。本文針對民用甚至是家用安防視頻相機(jī)系統(tǒng),利用FPGA速度快、高性價比、內(nèi)部資源豐富等優(yōu)點[11-13],設(shè)計并實現(xiàn)了一套基于FPGA的目標(biāo)識別系統(tǒng)。
家庭用安防視頻相機(jī)系統(tǒng)通常采用1或幾個小型相機(jī)和圖像處理平臺,對入侵人或物進(jìn)行實時目標(biāo)識別,利用千兆網(wǎng)線傳輸,將視頻實時顯示在終端設(shè)備上,從而實現(xiàn)對家庭安全的實時監(jiān)測,其總體結(jié)構(gòu)如圖1所示。
圖1 安防相機(jī)系統(tǒng)框圖
本文設(shè)計的基于FPGA的安防樣機(jī)系統(tǒng),主要由視頻采集模塊、圖像處理模塊、顯示器及相關(guān)電纜輔材等組成。在待觀測區(qū)位置安裝完成系統(tǒng)后,HDMI線纜把監(jiān)測處理完成后的視頻圖像實時傳送到顯示器中,從而完成對家庭安全的實時監(jiān)測。
系統(tǒng)具體結(jié)構(gòu)如圖2所示,主要包括視頻采集模塊:CMOS OV7725攝像頭,圖像處理模塊:128 Mbit外部存儲器(SDRAM)、Altra公司Cyclone IV FPGA等和LCD液晶顯示器等外圍硬件。EP4CE6F17C8芯片擁有6 272個邏輯單元(LE),15個乘法器,256個引腳封裝,滿足設(shè)計需求。
圖2 FPGA目標(biāo)檢測與識別系統(tǒng)框圖
FPGA經(jīng)過IIC總線配置CMOS相機(jī)參數(shù),從而實現(xiàn)CMOS 攝像頭采集外部圖像信息,并將數(shù)據(jù)通過外部存儲器SDRAM進(jìn)行緩存。FPGA處理圖像數(shù)據(jù)后通過顯示器將目標(biāo)識別結(jié)果輸出。系統(tǒng)包括數(shù)據(jù)采集模塊、灰度化處理模塊、目標(biāo)識別模塊、SDRAM存儲控制模塊以及VGA實時控制模塊。
目前目標(biāo)檢測方法主要有:1)光流法,其原理為給圖像中的每個像素點賦予一個速度矢量,圖像上的點與三維物體上的點一一對應(yīng),利用運動物體的速度矢量與背景速度矢量不同的特性進(jìn)行檢測。但是此方法計算量大,抗噪性能較差, 無法滿足實時性和實用性要求[14];2)背景差分法,較簡單、直接,先將背景圖保存,再利用所需圖像與背景圖像差別進(jìn)行判斷。但此方法中背景需隨時間不定期變換,且噪聲也是個不得不考慮的因素[15];3)幀間差分法,視頻圖像幀間具有連續(xù)性,運動目標(biāo)的存在會讓連續(xù)的幀與幀之間由明顯的變化,利用該現(xiàn)象可提取圖像中的運動區(qū)域, 此方法通過設(shè)定閾值可以快速檢測出運動目標(biāo), 但幀間間隔的選取以及在相差過程中容易失掉運動目標(biāo)的一些像素點, 但相對簡單,實時性好,可在合適的應(yīng)用場景中應(yīng)用[16-17]。
CMOS OV7725 是一款集成1/4英寸單芯片VGA相機(jī)及圖像處理器的高性能傳感器,具有640×480的感光陣列,其lens chief ray angle為25°,lens size為1/4″,幀頻為60 fps,像素大小為6.0 μm×6.0 μm,成像面積為3 984 μm×2 952 μm,且能在-20~70 ℃范圍內(nèi)正常工作,滿足民用監(jiān)控市場的需求。其使用時先要對寄存器進(jìn)行配置,包括采樣畫質(zhì)、輸出格式、曝光以及自動增益、自動曝光、自動對比度的模式選擇。此處寄存器設(shè)置為640×480分辨率、RGB565格式視頻輸出。FPGA接收其連續(xù)兩個像素時鐘的8 bit數(shù)據(jù),拼接得到完整的16 bit的RGB565信號。
圖像數(shù)據(jù)采集模塊的接口信號,如圖3所示,coms_href 為攝像頭行信號,coms_pclk 為攝像頭的像素時鐘,coms_pclk 為驅(qū)動時鐘,兩者頻率一般相同,coms_data 就是8 bit的圖像數(shù)據(jù)。即利用FPGA并行處理能力將兩個8 bit像素數(shù)據(jù)拼接為rgb565 16 bit的圖像數(shù)據(jù)。
圖3 數(shù)據(jù)采集模塊
通常,視頻圖像采集后需要進(jìn)一步的處理,才能滿足后續(xù)目標(biāo)檢測識別的需求,即實現(xiàn)RGB565格式到Y(jié)CbCr信號的轉(zhuǎn)換。在灰度處理中,Y表示明亮度,值越大,顏色越白,Y越小,顏色越暗。如果輸出的RGB的值都等于這個亮度Y的值,VGA顯示的圖像就成了黑白圖像。其原理如下所示:
Y= 0.183R+ 0.614G+ 0.062B+ 16
CB= -0.101R- 0.338G+ 0.439B+ 128
CR= 0.439R- 0.399G- 0.040B+ 128
(1)
這里,由于FPGA不善于處理浮點數(shù),因此將浮點數(shù)轉(zhuǎn)為定點數(shù),各個系數(shù)均擴(kuò)大256倍,最后在計算完之后除以256,如公式(2)所示:
Y=(77*R+150*G+29*B)>>8
U=(-43R-85G+128B+128*256)>>8
V=(128R-107G-21B+128*256)>>8
(2)
同樣,在FPGA里面,使用組合邏輯不能直接按上述公式(2)在計算,組合邏輯延時太大,導(dǎo)致時序不收斂,因此需要添加寄存器來切割流水線;利用FPGA并行處理的特點加速計算。這里分三級流水線處理:第一級流水線計算所有乘法;第二級流水線計算所有加法,把正的和負(fù)的分開進(jìn)行加法;第三級流水線計算最終的和,若為負(fù)數(shù)取0。
由于圖像采集端與輸出端不同步,幀差法需要緩存一幀的數(shù)據(jù),若使用外部存儲,則可以減少FPGA內(nèi)部資源,本文設(shè)計的雙端口SDRAM控制器,一側(cè)讀寫端口用作幀緩存,另一端口用來緩存視頻流,如圖4所示。
圖4 SDRAM控制器實現(xiàn)流程
首先,視頻圖像經(jīng)過FPGA灰度化處理后,寫入到FPGA的雙口SDRAM控制器的接收端側(cè),存儲當(dāng)前幀視頻圖像數(shù)據(jù),即從第二幀時刻開始兩幀圖像在設(shè)定閾值條件下做差分計算。但由于光照背景的變化以及閾值固定等原因,此時得到的差分后的二值圖像會有很大的噪聲。本系統(tǒng)去噪降噪主要采用形態(tài)學(xué)濾波法,直接去除面積較小的噪聲點。然后求得目標(biāo)范圍的左上角和右下角像素坐標(biāo),與原始RGB圖像疊加后重新寫入到SDRAM2端口,此時VGA就可以顯示處理后的圖像的效果。為了提高運算速度,數(shù)據(jù)輸入輸出模塊與SDRAM控制之間增加了數(shù)據(jù)緩存fifo模塊,由于cmos相機(jī)數(shù)據(jù)率與FPGA時鐘不匹配,為保證可實現(xiàn)突發(fā)模式讀寫操作,利用FPGA片上資源開辟了多個fifo緩存區(qū),保證數(shù)據(jù)了實時性。
2.3.1 差分處理
目標(biāo)差分法,顧名思義,是用差分方法進(jìn)行目標(biāo)識別,通過對視頻圖像中連續(xù)兩幀,即將當(dāng)前幀圖像與前一幀圖像做差分運算,從而獲得目標(biāo)輪廓。當(dāng)監(jiān)控市場中存在運動物體時,相鄰幀之間在灰度上有明顯差別,兩幀相減,得到相對差分值,判斷其是否大于某一閾值,進(jìn)行圖像二值化,從而確定監(jiān)控圖像中有無運動目標(biāo)[18-19]。
如圖4所示:視頻數(shù)據(jù)寫入sdram 寫口1側(cè),做為緩存,通過控制信號rd1從sdram 讀口1側(cè)讀數(shù)據(jù),經(jīng)過延時一幀后進(jìn)行差分處理。本系統(tǒng)中設(shè)定閾值threshold為 15,大于閾值則認(rèn)為時目標(biāo)區(qū)域,設(shè)置為255,小于閾值則為0,閾值可以根據(jù)需要調(diào)節(jié)控制。另一路sdram2是當(dāng)前的圖像數(shù)據(jù)。
2.3.2 形態(tài)學(xué)濾波處理
形態(tài)學(xué)是一種以形態(tài)為基礎(chǔ)對圖像進(jìn)行分析的數(shù)據(jù)方法,對圖像先進(jìn)行變換,以突出所需要的信息,使后續(xù)的識別工作能夠抓住目標(biāo)最本質(zhì)的形態(tài)特征,包括膨脹、腐蝕、開運算、閉運算[20]。在FPGA中形態(tài)學(xué)濾波方式主要是實現(xiàn)腐蝕和膨脹以得到減少噪聲的目的。首先對差分處理后二值圖形進(jìn)行腐蝕處理以去除小邊界和孤立點;再進(jìn)行膨脹處理,填充空洞。在去掉毛刺、孤立點和銳化角的同時,使目標(biāo)輪廓變得光滑。
所謂腐蝕是對圖像中目標(biāo)的“收縮細(xì)化”過程,將圖像中的高亮區(qū)域或白色部分進(jìn)行縮減細(xì)化,其運行結(jié)果比原圖的高亮區(qū)域更小。本次采用3*3窗口實現(xiàn)腐蝕。
膨脹將圖像的高亮區(qū)域或白色部分進(jìn)行擴(kuò)張,其運行結(jié)果圖比原圖的高亮區(qū)域更大。從數(shù)學(xué)的角度是就將圖像與計算核(也稱錨點)進(jìn)行卷積是通過結(jié)構(gòu)元素的平移控制對圖像中目標(biāo)的“加長”或“變粗”過程,操作。
形態(tài)學(xué)濾波處理后,對運動目標(biāo)的框選采用包圍盒算法,設(shè)計包圍盒得到上下左右 4點像素坐標(biāo),框出目標(biāo)區(qū)域。通過行場信號,設(shè)計行列計數(shù)器,從而可以獲取圖像每個像素點的坐標(biāo)信息,然后設(shè)計4個寄存器實時與行列計數(shù)器比較,從而實現(xiàn)對目標(biāo)的框選效果。
對各個模塊進(jìn)行Modelsim仿真驗證,結(jié)果如圖5~7所示。
圖5 圖像采集模塊仿真波形圖
圖5是數(shù)據(jù)采集模塊的仿真結(jié)果,其中cmos_data為實現(xiàn)輸出RGB565格式,框中的數(shù)字“03”和“04”,coms_frame_data是將連續(xù)兩個像素時鐘的8 bit數(shù)據(jù)的拼接成16 bit的數(shù)據(jù),如圖中的數(shù)字“0304”,即實現(xiàn)數(shù)據(jù)采集模塊中8 bit轉(zhuǎn)16 bit的功能要求。
圖6為差分處理模塊的仿真結(jié)果,由框中數(shù)據(jù)可以看到data_next - data_cur = 8’d130 時,大于設(shè)定閾值15則輸出數(shù)據(jù)post_img_Bit 為255,否則為0。即兩幀圖像的差分圖像中通過閾值判斷后,靜止的物體值為0,而移動的物體保留。
圖6 差分處理仿真圖
圖7為腐蝕膨脹處理仿真波形圖,得到的是matrix_p11~matrix_p33 9個像素數(shù)據(jù)組成3×3 圖像模板,這里通過行緩存設(shè)計(緩存了兩行圖像數(shù)據(jù)),延時兩行數(shù)據(jù)后,得到完整的3×3 圖像模板,即實現(xiàn)了噪聲濾除和目標(biāo)輪廓變得光滑。
圖7 腐蝕膨脹仿真波形圖
在FPGA黑金開發(fā)板上實現(xiàn),并配以O(shè)V7725攝像頭和VGA顯示器,構(gòu)建圖像目標(biāo)識別系統(tǒng)并驗證基于FPGA的實時目標(biāo)檢測系統(tǒng)的實現(xiàn)效果。由于本系統(tǒng)針對視頻監(jiān)控系統(tǒng)中運動目標(biāo)檢測,因此采用3種不同大小的遙控模型進(jìn)行實驗,如圖8所示。
圖8 運動目標(biāo)檢測圖
對象1是一輛體積為25 cm×7 cm的運動工程車模型,對象2是體積為25 cm×7 cm的運動工程車模型,對象3是0.5 cm×.057 cm的小汽車模型,對象4是170 cm×30 cm的汽車模型。從圖8中可以看出,當(dāng)小車運動速度勻速時,左圖顯示圖像清晰,標(biāo)識框邊界,識別率100%;當(dāng)小車速度很慢或者很快時,小車圖像出現(xiàn)虛影,并且標(biāo)識虛框比較明顯,與虛影相對應(yīng)。
為了更好地評判該系統(tǒng)性能,本系統(tǒng)對不同實驗對象,在不同運動速度下進(jìn)行8種實驗,每種實驗條件進(jìn)行10次實驗。采用10次取平均法,和控制條件變量法,通過采集30 fps的圖像,驗證本系統(tǒng)的性能。具體結(jié)果如表1所示。
表1 實驗統(tǒng)計表序號
表1中,識別率表示框選面積與目標(biāo)物體視覺面積的相對比值。比值100%表示本系統(tǒng)識別紅色框選面積即為目標(biāo)視覺面積,誤差容忍度為±10%。由表1可以得出規(guī)律,在相同距離條件下,識別率隨目標(biāo)速度的降低而變低;同時相同大小的目標(biāo)物體的識別率隨距離的變小而升高。
為了進(jìn)一步驗證該系統(tǒng)的在室外環(huán)境下的性能,在夏天白天光照下,將該目標(biāo)識別系統(tǒng)安裝在居民室內(nèi)正面向門口樓道,樓道總長度約50 m,盡頭為一扇窗戶。在此條件下,測試結(jié)果如表1所示,可以看出,該系統(tǒng)的探測效果與目標(biāo)物體大小、運動速度和距離有關(guān)。在距離80 cm條件下,最小探測物體大小為0.5×0.57 cm2,速度大于0.08 m/s時,運動目標(biāo)可準(zhǔn)確識別。
應(yīng)對目前民用家用安防系統(tǒng)中視頻采集入侵目標(biāo)自動檢測需求,利用FPGA的高速并行處理能力,設(shè)計了一款運動目標(biāo)實時識別樣機(jī)系統(tǒng),實現(xiàn)了CMOS相機(jī)運動目標(biāo)檢測功能。采用幀差法對運動目標(biāo)進(jìn)行實時處理,節(jié)省系統(tǒng)資源,運算方法簡單、方便。從測試結(jié)果可以看出,在一定環(huán)境中,該系統(tǒng)可準(zhǔn)確識別入侵運動物體,可處理幀頻30 fps,640×480的圖像,且實時性較好。值得一提的是,該系統(tǒng)可擴(kuò)展性較強(qiáng),可根據(jù)應(yīng)用需求搭配分辨率更高的攝像頭,可采用多幀疊加方式增強(qiáng)識別效果,因此具有廣闊的應(yīng)用空間。