張挺飛,樊永生,孫凌云
(中北大學(xué)電子與計算機(jī)科學(xué)技術(shù)學(xué)院,山西 太原 030051)
隨著科學(xué)技術(shù)的快速發(fā)展,推近了城市現(xiàn)代化的進(jìn)程,智能門控系統(tǒng)的應(yīng)用越來越廣泛,如電梯、商場、酒店等。目前大多數(shù)門控系統(tǒng)采用光電控制的方式,但在控制的范圍和靈敏度上都存在缺陷。隨著圖像處理技術(shù)的迅猛發(fā)展,使得基于圖像識別的控制系統(tǒng)成為現(xiàn)實[1-10]。本文提出了基于FPGA+ARM的智能圖像門控系統(tǒng),相比于單處理器的圖像控制系統(tǒng),具有實時性好、圖像算法實現(xiàn)簡單、擴(kuò)展性強(qiáng)等優(yōu)點。
攝像頭選用OmniVision公司生產(chǎn)的OV6620數(shù)字?jǐn)z像頭,內(nèi)置2個8位高速A/D轉(zhuǎn)換器,分辨力為356×292。SRAM選用CYPRESS公司的CY62146EV30LL靜態(tài)RAM芯片,容量為256 kbyte×16。
系統(tǒng)采用FPGA+ARM構(gòu)架,完成數(shù)據(jù)采集存儲、圖像預(yù)處理、數(shù)據(jù)傳輸和圖像處理,如圖1所示。首先通過I2C總線對OV6620內(nèi)部寄存器參數(shù)進(jìn)行配置,數(shù)據(jù)輸出模式設(shè)置為GRB 4∶2∶2,攝像頭開始工作后,首先經(jīng)過74LVT16245電平轉(zhuǎn)換芯片將5 V電壓轉(zhuǎn)換為FPGA I/O口的3.3 V,然后FPGA對接收到的圖像信號進(jìn)行灰度值預(yù)處理,采用2塊SRAM乒乓操作實時存儲處理后數(shù)據(jù),最后通過ARM總線將圖像發(fā)送給ARM進(jìn)行實時處理,根據(jù)結(jié)果對門進(jìn)行控制。

圖1 圖像采集存儲處理流程圖
設(shè)計選用Xilinx公司的V2pro開發(fā)板,采用XC2VP30處理器,有30816個邏輯單元,136個18位的乘法器,2448 kbit的Block RAM和2個Power PC,完全滿足系統(tǒng)硬件需求。FPGA硬件工作流程如圖2所示。
1)圖像經(jīng)過電平轉(zhuǎn)換芯片74LVT16245轉(zhuǎn)換為3.3 V電壓后,寫入FPGA內(nèi)部FIFO中。
2)FIFO深度設(shè)置為1024,位寬16位,當(dāng)FIFO出現(xiàn)半滿信號時,讀取512個數(shù)據(jù),然后等待下一次半滿信號,以此循環(huán)。

圖2 FPGA硬件流程
3)第1組512個數(shù)據(jù)進(jìn)入灰度預(yù)處理,攝像頭輸出模式選用RGB 5∶6∶5,因此一個像素點的數(shù)據(jù)長度為16位,其中高5位用于R,中間6位用于G,低5位用于B。將高5位值、中間6位值、低5位值都賦值成它們的平均值,所得到的16位數(shù)據(jù)即為該像素點的灰度值。在硬件實現(xiàn)過程中,采用流水線操作,3個數(shù)據(jù)相加后,采用Xilinx自帶IP核設(shè)計除法器模塊進(jìn)行除以3的操作,將結(jié)果按照RGB 5∶6∶5格式還原成16位的數(shù)據(jù)。
4)經(jīng)過灰度值處理后,數(shù)據(jù)在FPGA控制下寫入SRAM1中,然后等待第2組512個數(shù)據(jù)。
5)系統(tǒng)采用2片SRAM以乒乓方式工作,可提高后續(xù)圖像處理系統(tǒng)的實時性。當(dāng)SRAM1中存儲滿1幀數(shù)據(jù)后,ARM產(chǎn)生片選信號,控制總線切換模塊將ARM總線連接到SRAM1上,并將SRAM2切換到FPGA上。開啟SRAM1的寫使能和SRAM2的讀使能,將下一幀的數(shù)據(jù)存儲到SRAM2中,同時ARM開始對SRAM1中的1幀數(shù)據(jù)進(jìn)行處理。當(dāng)SRAM2存滿第2幀數(shù)據(jù)后,再通過ARM片選將ARM總線連接到SRAM2上,將SRAM1切換到FPGA上,這時開啟SRAM1的讀使能和SRAM2的寫使能。如此循環(huán),使2個存儲單元始終都在讀寫數(shù)據(jù),保證了數(shù)據(jù)采集的連續(xù)性。
CMOS攝像頭的幀頻率為25 Hz,每幀又分為奇數(shù)場和偶數(shù)場,每40 ms輸出1幀數(shù)據(jù),ARM在下一幀數(shù)據(jù)到來前,已完成前一幀數(shù)據(jù)的處理,使得系統(tǒng)可以實時對攝像頭數(shù)據(jù)進(jìn)行處理。
ARM嵌入式系統(tǒng)主要由S3C6410處理器、SDRAM、Flash、TFT液晶屏、調(diào)試串口、USB接口、總線接口等幾部分組成,如圖3所示。ARM嵌入式系統(tǒng)通過總線的方式讀取2片SRAM中的圖像數(shù)據(jù),這2片SRAM地址的切換通過ARM系統(tǒng)的I/O口控制,將得到的1幀圖像數(shù)據(jù)進(jìn)行處理,根據(jù)處理結(jié)果控制門的開關(guān),處理結(jié)束后再導(dǎo)入下一幀圖像,如此循環(huán)工作。為了實現(xiàn)圖像的實時處理,必須在下一幀圖像到來之前處理完畢。

圖3 ARM嵌入式系統(tǒng)的硬件結(jié)構(gòu)
圖像門控系統(tǒng)是通過檢測門附近區(qū)域的圖像中是否有人存在來控制門的開閉,簡單的圖像門口系統(tǒng)采用背景差分的算法來實現(xiàn),但該方法本身誤報率很高,且難以區(qū)分人與動物,大大降低了系統(tǒng)的準(zhǔn)確率。因此,本文選用實時性好、準(zhǔn)確率高的基于Adaboost的人臉檢測算法,以檢測圖像中的人臉作為門是否開啟的依據(jù)。
Adaboost的人臉檢測算法是通過Haar特征訓(xùn)練好的分類器來篩選人臉信息,在OpenCV中有專門針對Adaboost算法的庫函數(shù),大大縮短了程序的開發(fā)周期。此外,OpenCV提供已經(jīng)訓(xùn)練好的人臉分類器,該分類器精度高、速度快。
圖像門控系統(tǒng)程序運行在ARM+Linux平臺上,首先通過調(diào)用SRAM驅(qū)動程序讀取1幀圖像數(shù)據(jù),該圖像數(shù)據(jù)在FPGA已經(jīng)進(jìn)行了灰度預(yù)處理,接著調(diào)用cvLoad()和cvHaarDetectObjects函數(shù)裝載訓(xùn)練好的人臉分類器并檢測人臉目標(biāo),如果檢測不到人臉目標(biāo),控制門關(guān)閉,并繼續(xù)讀取下一幀圖像,如果檢測到人臉目標(biāo),則調(diào)用cvRectangle()函數(shù)框出人臉目標(biāo),并控制門開啟。圖4為基于OpenCV的圖像門控系統(tǒng)的流程圖。
Opencv視覺圖像庫在使用之前需要針對運行環(huán)境進(jìn)行編譯,生成相應(yīng)環(huán)境下的靜態(tài)鏈接庫和動態(tài)鏈接庫。下面是ARM嵌入式Linux環(huán)境下的編譯過程。

圖4 OpenCV的圖像門控系統(tǒng)的流程圖
1)解壓OpenCV 2.1.1到/usr/Opencv-2.1.1目錄下,創(chuàng)建/usr/arm-OpenCV目錄,作為CMake編譯的工作目錄,安裝交叉編譯器arm-linux-gcc 4.4.1,安裝目前為/usr/arm/4.4.1,并添加環(huán)境變量/usr/arm/4.4.1/bin。
2)在Windows環(huán)境下,運行cmake-gui軟件,源代碼目錄為/usr//Opencv-2.1.1,編譯目錄為/usr/arm-OpenCV,然后進(jìn)行配置,配置過程保持generator為Unix Makefiles,并選擇 Specify options for cross-compiling 選項,操作系統(tǒng)欄填寫arm-linux,C編譯器欄填寫/usr/armlinux-gcc的路徑,C++編譯器欄填寫 arm-linux-g++的路徑,程序庫欄的Target Root填寫/usr/arm/4.4.1。
3)修改默認(rèn)安裝目錄,默認(rèn)的安裝目錄為/usr/local,對于交叉編譯的庫來說并不合適,所以把CMAKE_INSTALL_PREFIX變量改為/usr//arm/lib/OpenCV/,修改CMakeCache.txt,在 CMAKE_EXE_LINKER_FLAGS 后面加上 -lpthread-lrt,點擊 Generate 生成 Makefile。
4)運行make install,OpenCV生成的庫和頭文件就安裝到目錄/usr//arm/lib/OpenCV/下。
OpenCV圖像庫編譯成功后,在圖像門控系統(tǒng)應(yīng)用程序的makefile文件中添加OpenCV頭文件和庫文件,編譯后生成的二進(jìn)制文件就可以移植到ARM系統(tǒng)中運行。
攝像頭安裝在門頂,采用俯角的安裝方式,俯角太大,導(dǎo)致頭頂面積太大,俯角太小,面部特征太少,通過現(xiàn)場調(diào)整比較得到合適的角度,進(jìn)行實驗,實驗效果如圖5所示。

圖5 實驗現(xiàn)場效果
實驗結(jié)果可以看出本系統(tǒng)在智能門控系統(tǒng)中有良好的效果,驗證了系統(tǒng)的有效性和可行性。系統(tǒng)硬件采用FPGA+ARM的構(gòu)架,與PC機(jī)相比具有系統(tǒng)體積小、成本低、便于安裝等優(yōu)點,而且在數(shù)據(jù)的處理速度上滿足應(yīng)用要求。此外,基于Adaboost的人臉檢測圖像門控系統(tǒng)的實時性好,靈敏度高。
[1]楊學(xué)友,李博文,曲興華.基于FPGA高速智能化視覺傳感器的研究[J]. 電子測量與儀器學(xué)報,2003(1):76-79.
[2]鄧海峰,余慧英,袁可風(fēng).一種嵌入式圖像處理平臺的設(shè)計與實現(xiàn)[J]. 計算機(jī)應(yīng)用,2005(S1):225-227.
[3]姚聰,方勇,汪敏,等.基于ARM的嵌入式圖像采集處理系統(tǒng)及其無線傳輸[J]. 電子技術(shù),2003(11):25-28.
[4]王榮本,游峰,崔高健,等.基于計算機(jī)視覺高速智能車輛的道路識別[J]. 計算機(jī)工程與應(yīng)用,2004(26):18-21.
[5]趙方鵬,楊建華,趙忠,等.基于嵌入式Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[J]. 測控技術(shù),2007(5):55-57.
[6]陳育香.基于ARM的無線傳感器網(wǎng)絡(luò)多幀圖像采集與處理[D].南京:南京理工大學(xué),2011.
[7]謝平.嵌入式短距離無線音視頻監(jiān)控系統(tǒng)設(shè)計[J].計算機(jī)測量與控制,2010(8):1813-1814.
[8]張遠(yuǎn),張首軍,汪俊.基于SOPC的嵌入式網(wǎng)絡(luò)攝像頭的設(shè)計[J].西北大學(xué)學(xué)報:自然科學(xué)版,2009(1):44-46.
[9]龔向東,劉春平,黃虹賓,等.一種基于NiosⅡ軟核的嵌入式圖像采集處理系統(tǒng)設(shè)計[J].電子測量技術(shù),2010(2):75-78.
[10]吳平,陳秀宏,張平.基于X264的嵌入式視頻監(jiān)控系統(tǒng)設(shè)計[J].電視技術(shù),2011,35(7):108-110.