人臉檢測系統(tǒng)的SoPC設(shè)計
摘要:本文采用NiosⅡ軟核處理器在FPGA上設(shè)計了一種人臉檢測系統(tǒng),對該系統(tǒng)的功能、結(jié)構(gòu)和實現(xiàn)作了較詳細(xì)的闡述。設(shè)計結(jié)果表明,該系統(tǒng)體積小,數(shù)據(jù)處理速度快,保證了很好的實時性。
關(guān)鍵詞:人臉檢測;FPGA;軟核處理器;片上系統(tǒng)
引言
人臉檢測跟蹤是計算機(jī)視覺中十分重要的研究領(lǐng)域,正受到越來越多的關(guān)注。傳統(tǒng)基于PC平臺的人臉檢測跟蹤系統(tǒng)體積大,不能滿足便攜的要求,更不適合露天使用;而采用通用的DSP芯片組成的系統(tǒng),外圍電路較復(fù)雜,設(shè)計與調(diào)試都需要較長的時間,且系統(tǒng)的可擴(kuò)展性和移植性不好。利用32位NiosⅡ軟核處理器在FPGA上完成設(shè)計,減小了系統(tǒng)的體積,而且在PC上開發(fā)的程序可移植到NiosⅡ處理器上,實現(xiàn)了片上系統(tǒng)。采用NiosⅡ處理器的自定義指令,用硬件實現(xiàn)部分算法,大大提高了數(shù)據(jù)的處理速度,保證了較好的實時性。在外圍電路不變的情況下,通過更新FPGA內(nèi)部的電路設(shè)計,能使系統(tǒng)功能升級和增強(qiáng)?! ?/p>
系統(tǒng)組成及工作原理
人臉檢測跟蹤系統(tǒng)根據(jù)具體應(yīng)用場合可以定制為不同的功能,而且不同的功能只需要在Nios中寫入相應(yīng)的C語言程序即可,不需要再做硬件板,非常方便。下面介紹一種比較通用的人臉檢測跟蹤系統(tǒng)。系統(tǒng)的結(jié)構(gòu)如圖1所示。本文設(shè)計的人臉檢測跟蹤系統(tǒng)主要包括三個模塊:圖像采集模塊,人臉檢測跟蹤模塊以及數(shù)據(jù)通信模塊。
圖像采集模塊
該模塊主要包括攝像頭和外擴(kuò)SRAM。本系統(tǒng)采用的圖像傳感器是OV7620,OV7620是美國OmniVision公司開發(fā)的1/3英寸,30萬像素CMOS彩色圖像傳感器,該芯片將CMOS光感應(yīng)核與外圍輔助電路集成在一起,具有可編程控制與視頻模/數(shù)混合輸出等功能。該芯片的主要特性有:最大分辨率為664×492,同時支持VGA(640×480分辨率)和QVGA(320×240分辨率)兩種模式。輸出幀頻在0.5fps—30fps之間可調(diào)。輸出窗口尺寸在4×2—664×492之間可調(diào)。圖像數(shù)據(jù)輸出格式可以為8位/16位的YCrCb4:2:2ITU2656、IR2601GRB4:2:2或RGB Raw Data。能工作在逐行/隔行掃描方式下,也能工作在彩色/黑白模式下。上述的所有性能,用戶可以根據(jù)自己的需要,通過SC2CB接口設(shè)置芯片內(nèi)相應(yīng)的寄存器進(jìn)行選擇。
人臉檢測跟蹤模塊
該模塊采用的FPGA選擇Altera公司Stratix系列的EP1S25。該芯片的片上資源比較豐富,有25660個邏輯單元(LE),1944576bit的RAM,10個DSP模塊,6個數(shù)字鎖相環(huán)(DPLL),用戶可用的I/O最多達(dá)到702個。在EP1S25中嵌入Nios軟核,控制連接在外部總線上的SRAM和Flash,用它的以太網(wǎng)模塊單元控制以太網(wǎng)接口芯片LAN91C11。
其中FPGA是主芯片,在1片F(xiàn)PGA中包含了Nios處理器、SRAM控制器、SDRAM控制器、Flash控制器、UART以及攝像頭和外擴(kuò)SRAM控制器的用戶邏輯模塊。這正體現(xiàn)了Nios的優(yōu)勢,將很多資源集中在FPGA中為設(shè)計PCB帶來了便利,而且對系統(tǒng)的更改也變得非常容易,只要重新在FPGA中添加不同的模塊就可以了。SRAM中存儲嵌入式系統(tǒng)所用的向量表、數(shù)據(jù)和程序。Flash用于在系統(tǒng)掉電的情況下存儲程序和數(shù)據(jù)。
數(shù)據(jù)通信模塊
根據(jù)實際情況選擇用以太網(wǎng)或GPRS把人臉檢測跟蹤后的結(jié)果發(fā)送到主控制站。在有以太網(wǎng)連接的條件下優(yōu)先選用以太網(wǎng)連接,可以提供較高的傳輸速率和可靠性,在沒有以太網(wǎng)的條件下選用GPRS進(jìn)行通信。同時,如果用戶需要,也可以直接在LCD上顯示。
人臉檢測跟蹤算法的實現(xiàn)
在實現(xiàn)人臉檢測跟蹤算法之前,圖像的預(yù)處理很重要。圖像預(yù)處理主要有噪聲濾除和圖像增強(qiáng),提高圖像的質(zhì)量。本系統(tǒng)采用中值濾波進(jìn)行噪聲濾除。與其它濾波方法相比,中值濾波不僅能有效濾除圖像中的孤立噪聲點,還能保護(hù)邊界信息。圖像增強(qiáng)技術(shù)主要包括直方圖修改處理、圖像平滑處理和圖像銳化處理等。所以,實際的人臉檢測系統(tǒng)采用圖像增強(qiáng)來消除光照影響。
本系統(tǒng)采用基于膚色和差分幀相結(jié)合的方法來確定視頻序列中的人臉。這樣不但可以排除類似膚色背景的干擾,提高人臉檢測的準(zhǔn)確性,還可以保證檢測與跟蹤的實時性。大量實驗表明,人臉膚色在YCrCb空間內(nèi)的Cr和Cb值分布在特定的范圍之內(nèi),Cr范圍為135~156,Cb的范圍為108~123。由此建立人臉膚色聚類模型,即彩色圖像的像素B滿足條件:108≤Cb≤123和135≤Cr≤156,則B是膚色點。
根據(jù)公式(1)可將圖像轉(zhuǎn)化為一個二值圖像,其中白色像素點為膚色點,黑色像素點為非膚色點。由于頭部與背景的相對運(yùn)動,差分幀法是運(yùn)動圖像分析的有效方法。它檢測圖像序列相鄰兩幀之間的變化,即直接比較兩幀圖像對應(yīng)像素點的灰度值。幀f(x,y,j)與幀f(x,y,k)之間的變化可用一個二值差分圖像DBjkf(x,y)表示:
式中的T是閾值。
使用NiosII的定制指令,可以將一個復(fù)雜的標(biāo)準(zhǔn)指令序列簡化為一個用硬件實現(xiàn)的單一指令,從而簡化系統(tǒng)軟件設(shè)計并加快系統(tǒng)運(yùn)行速度。在人臉檢測跟蹤算法中,對圖像的處理數(shù)據(jù)運(yùn)算量大,循環(huán)數(shù)目多,而NiosII的定制指令個數(shù)已增加到256個,可以使用定制指令完成許多循環(huán)內(nèi)的數(shù)據(jù)處理,從而加速數(shù)據(jù)處理的速度。定制指令邏輯和NiosII的連接在SoPCBuilder中完成。NiosIICPU配置向?qū)峁┝艘粋€可添加256條定制指令的圖形用戶界面,在該界面中導(dǎo)入設(shè)計文件,設(shè)置定制指令名,并分配定制指令所需的CPU時鐘周期數(shù)目。系統(tǒng)生成時,NiosIIIDE為每條用戶指令產(chǎn)生一個在系統(tǒng)頭文件中定義的宏,可以在C或C++應(yīng)用程序代碼中直接調(diào)用這個宏。
結(jié)語
本文的人臉檢測跟蹤系統(tǒng)利用32位NiosⅡ軟核處理器在FPGA上完成設(shè)計,減小了系統(tǒng)的體積,而且在PC上開發(fā)的程序可移植到NiosⅡ處理器上,實現(xiàn)了片上系統(tǒng)。Nios是性價比較高的微處理器軟核,可以方便地把用戶需要的接口和自定義的邏輯加入到系統(tǒng)中。本文介紹的方法體現(xiàn)了SoPC嵌入式系統(tǒng)的靈活性。因此,這種方法能夠有效地縮短開發(fā)周期、同時能夠延長產(chǎn)品的生命周期、可以不斷地在原有產(chǎn)品的基礎(chǔ)上進(jìn)行升級設(shè)計。