劉紀(jì)紅,劉 祚,李中帆
(東北大學(xué)信息科學(xué)與工程學(xué)院,沈陽110819)
在智能監(jiān)控系統(tǒng)中涉及人臉檢測、人臉跟蹤、人臉識別、表情識別等技術(shù),其中人臉檢測是最為關(guān)鍵的一個(gè)步驟,是后續(xù)處理過程的基礎(chǔ)[1]。起初的人臉研究工作主要體現(xiàn)在人臉識別范疇,并且大都是假設(shè)已經(jīng)獲得一個(gè)正面的人臉或者是人臉很容易獲取的前提情況下。但隨著人臉應(yīng)用領(lǐng)域的逐漸擴(kuò)大和實(shí)際要求的逐漸提高,這種假設(shè)前提下的研究工作不能夠繼續(xù)滿足需求了,進(jìn)而復(fù)雜背景下,滿足多角度、多尺度人臉的實(shí)時(shí)檢測漸漸成為獨(dú)立的研究課題并且發(fā)展起來[2-3]。
數(shù)字信號處理器是適合高速運(yùn)算的電子器件,可以實(shí)現(xiàn)實(shí)時(shí)圖像處理和分析。系統(tǒng)使用了適合做監(jiān)控的CCD攝像頭做圖像傳感器,獲取有效的數(shù)字圖像信息[4]。本文將在分析人臉膚色和形狀特征的基礎(chǔ)上,討論在DSP系統(tǒng)中實(shí)現(xiàn)人臉的實(shí)時(shí)監(jiān)測算法。
人臉檢測的硬件平臺采用以TI達(dá)芬奇系列單核DSP TMS320DM6437為核心芯片的ICETEKDM6437-B評估板。ICETEK-DM6437-B評估板是專為視頻和圖像應(yīng)用開發(fā)的處理平臺,DM6437是一款專用于數(shù)字圖像處理的高性能32 bit定點(diǎn)DSP處理器,工作主頻高達(dá)600 MHz,處理性能(每秒處理指令數(shù))可達(dá) 4 800 MIPS(Million Instructions per Second)[5]。板載DDR2存儲器通過32 bit專用總線與DM6437相連。板載視頻編碼芯片TVP5146把視頻流接入到DM6437。DM6437通過片上視頻輸出接口輸出視頻流。DM6437可以通過板載JTAG接口與仿真器相連進(jìn)行調(diào)試。ICETEK-DM6437-B評估板提供屏幕顯示功能[6]。
本文中人臉檢測硬件系統(tǒng)結(jié)構(gòu)框圖如圖1所示,其中包括:圖像采集模塊、DSP核心處理模塊和顯示模塊:
(1)圖像采集模塊:CCD攝像頭采集圖像,經(jīng)過板載視頻解碼芯片TVP5146解碼,送到DSP核心處理模塊。
(2)DSP核心處理模塊:接收解碼后的圖像,實(shí)現(xiàn)人臉檢測,將人臉區(qū)域在圖像中標(biāo)定并輸出到顯示模塊。
(3)顯示模塊:用于顯示處理后的圖像。
圖1 人臉檢測硬件系統(tǒng)結(jié)構(gòu)框圖
本文設(shè)計(jì)的人臉檢測算法在DSP上的實(shí)現(xiàn)流程如圖2所示,其中人臉檢測算法主要流程包括3部分:(1)預(yù)處理 獲取待檢測人臉圖像的YUV圖像數(shù)據(jù);(2)膚色區(qū)域的分割 對YUV圖像進(jìn)行膚色提取,確定膚色連通域以及最小外接矩形;(3)人臉區(qū)域的定位 通過判別條件排除不規(guī)則但與膚色色調(diào)接近的物體和人體其他非人臉部分(如彎曲的四肢等)以及實(shí)現(xiàn)脖子部分的排除。下面將詳細(xì)討論人臉檢測算法的DSP實(shí)現(xiàn)。
圖2 人臉檢測算法流程圖
將RGB圖像數(shù)據(jù)轉(zhuǎn)換為YUV圖像數(shù)據(jù),這是因?yàn)樵赗GB色彩空間里人臉的膚色受亮度影響相當(dāng)大[7],膚色像素很難從非膚色像素中分離出來,處理后膚色點(diǎn)是離散的點(diǎn),中間嵌有很多非膚色,這為膚色區(qū)域的標(biāo)定(人臉標(biāo)定、眼睛等)帶來了難題,而如果把RGB色彩空間轉(zhuǎn)換為YUV色彩空間的話,可以忽略Y(亮度)分量的影響,膚色會很好的類聚[8-9]。
在本文中待識別人臉圖像采用了兩種方式送入:在DM6437內(nèi)存中存入一幅圖像和通過CCD攝像頭采集一幅圖像。若在DM6437內(nèi)存中存入一幅圖像則需要將RGB圖像數(shù)據(jù)轉(zhuǎn)換為YUV圖像數(shù)據(jù);若為CCD攝像頭采集,則不需要RGB到Y(jié)UV色彩空間變換,因?yàn)镈M6437支持YUV422格式。
RGB色彩空間到Y(jié)CbCr色彩空間的轉(zhuǎn)換公式[10]如式(1):
2.2.1 膚色區(qū)域的提取
膚色區(qū)域的提取是根據(jù)大量實(shí)驗(yàn)得出膚色范圍的 Cb、Cr值:100≤Cb≤130,140≤Cr≤170 來判定的。若像素點(diǎn)Cb、Cr范圍在此區(qū)域內(nèi),則該像素點(diǎn)為膚色像素點(diǎn)。然后進(jìn)行二值化,將膚色區(qū)域像素點(diǎn)在相對彩色空間位置的像素置為白色,將非膚色區(qū)域像素點(diǎn)在相對彩色空間位置的像素置為黑色,由此可以得到膚色區(qū)域的二值圖像。
圖3 人臉檢測算法流程圖
2.2.2 膚色區(qū)域連通域及最小外接矩形的確定
連通域及最小外接矩形的確定過程采取分兩次對整幅二值圖像掃描,第1次確定連通域及其標(biāo)號,其流程如圖3所示,連通域示意圖如4所示。第2次再次掃描圖像,找出連通域內(nèi)橫縱坐標(biāo)的最小值和最大值,確定其最小外接矩形,并記錄其內(nèi)白像素點(diǎn)數(shù)目。
圖4 連通域示意圖
對于連通域在DSP實(shí)現(xiàn)采用區(qū)域增長法[11-13]。
對于二值圖像中所有像素點(diǎn)依次掃描,當(dāng)發(fā)現(xiàn)到某個(gè)未被標(biāo)記的目標(biāo)像素點(diǎn)時(shí),把它壓入堆棧并且從這一點(diǎn)開始反復(fù)標(biāo)記它的鄰域,當(dāng)堆棧為空時(shí)停止。在8鄰域連通規(guī)范下,區(qū)域增長法的平均掃描次數(shù)能夠由8次下降到4次。
先腐蝕后膨脹的過程稱為開運(yùn)算,可以消除細(xì)小物體、分離物體、平滑較大物體的邊界且不明顯改變其面積的左右。開運(yùn)算定義如式(2)。
先膨脹后腐蝕的過程稱為閉運(yùn)算,可以填充物體內(nèi)細(xì)小空洞、連接臨近物體、平滑邊界等。閉運(yùn)算定義如式(3)。
其具體步驟如下:
(1)判斷目標(biāo)點(diǎn)為背景點(diǎn)還是“前景”點(diǎn),區(qū)域增長算法只對“前景”點(diǎn)起作用,如果當(dāng)前目標(biāo)像素點(diǎn)的灰度為0,則重復(fù)進(jìn)行步驟(1),順次掃描下一個(gè)目標(biāo)像素點(diǎn);如果當(dāng)前目標(biāo)像素點(diǎn)的灰度等于255,則跳到步驟(2);
(2)判斷該像素點(diǎn)上半部分鄰域(即左上鄰域、上鄰域、右上鄰域及左鄰域)是否存在前景點(diǎn),若存在則直接進(jìn)入步驟(3);否則將其當(dāng)前點(diǎn)賦予一個(gè)新的標(biāo)號,進(jìn)行步驟(4);
(3)獲取上半部分鄰域像素點(diǎn)中存在標(biāo)號的最小值,將其最小標(biāo)號賦給當(dāng)前目標(biāo)點(diǎn),進(jìn)行步驟(4);
(4)判斷下一目標(biāo)點(diǎn),直到整幅圖像都被掃描過。
在提取出膚色區(qū)域后,要想精確定位出人臉,則需要排除一些可能存在的干擾。綜合考慮其干擾,可能包含以下3方面:(1)與膚色色調(diào)接近的物體;(2)非人臉膚色區(qū)域,如四肢等;(3)脖子對精確定位的影響。
考慮到上述3方面對人臉定位造成的影響,下面分別對上述情況進(jìn)行處理,以達(dá)到精確定位人臉的目的。
2.3.1 膚色色調(diào)接近物體排除
對膚色區(qū)域確定后的圖像,根據(jù)其連通域內(nèi)像素點(diǎn)總數(shù),可以排除一些比較小的連通域塊;根據(jù)連通域內(nèi)膚色像素點(diǎn)總數(shù)與連通域外接矩形的像素總數(shù)的比值可以排除掉彎曲的四肢等;根據(jù)其外接矩形的高寬比值可以排除一些狹長的膚色及類似膚色區(qū)域。
綜合考慮各種人臉庫圖像樣本,設(shè)定連通域內(nèi)白像素點(diǎn)總數(shù)閾值為2 000,即小于2 000個(gè)白像素點(diǎn)總數(shù)的連通域?qū)⒈慌懦???紤]臉部區(qū)域內(nèi)白像素點(diǎn)總數(shù)與連通域外接矩形像素總數(shù)的比值,設(shè)定該閾值為0.6。根據(jù)人臉的外觀特征,設(shè)定滿足要求的連通域高寬比值應(yīng)該在0.8~2.0之間,其中2.0這個(gè)值是考慮到脖子的影響,因此設(shè)置范圍較大。
如圖5所示,可以看到原始圖像及排除膚色色調(diào)相近物體前后對比,其中原圖中背景露出的土地為膚色相近物體,經(jīng)過上述判定,被排除掉。
圖5 膚色色調(diào)相近物體排除結(jié)果
2.3.2 非人臉膚色區(qū)域排除
根據(jù)先驗(yàn)知識,人臉內(nèi)部器官(如眼睛、嘴等)進(jìn)行邊緣檢測后會存在許多邊緣,而手等純膚色區(qū)域邊緣會很少。但由于邊緣檢測計(jì)算量相對較大,考慮到DSP內(nèi)存資源及系統(tǒng)計(jì)算速度,根據(jù)眼睛、嘴等像素點(diǎn)在連通域內(nèi)為黑,黑像素點(diǎn)較多,而純膚色中黑像素點(diǎn)很少,因此采用黑像素點(diǎn)個(gè)數(shù)設(shè)置閾值來進(jìn)行區(qū)分。結(jié)果如圖6所示,其中原圖包含手這樣的純膚色模塊,通過該過程被排除掉。
圖6 非人臉膚色區(qū)域排除結(jié)果
2.3.3 脖子部分的排除
對于脖子部分的排除,本文進(jìn)行了大量的圖像實(shí)驗(yàn)驗(yàn)證,最后確定將滿足上述條件的連通域細(xì)化為3類,并設(shè)計(jì)了對應(yīng)解決方法:
(1)若連通域外接矩形高寬比范圍在0.8~1.3,保持原高度、寬度不變;
(2)若連通域外接矩形高寬比范圍在1.3~1.5,高度變?yōu)樵叨鹊?.85倍,寬度保持不變;
(3)若連通域外接矩形高寬比范圍在1.5~2.0,高度變?yōu)樵叨鹊?.7倍,寬度保持不變。
脖子部分的排除如圖7所示,可以看到原圖與排除脖子部位影響后的結(jié)果。
圖7 脖子部分的排除結(jié)果
在DM6437編譯器中定義的數(shù)據(jù)類型如表1所示:long型數(shù)據(jù)長度為64 bit,因此要避免將int和long型作為相同的尺寸處理。由于C64x+內(nèi)部寄存器都是32 bit的,而且內(nèi)核的32 bit的8個(gè)執(zhí)行單元每次處理的數(shù)據(jù)若也是采用64 bit long型表示數(shù)據(jù),就會導(dǎo)致每次使用的不是一個(gè)寄存器存取。這不僅對DSP內(nèi)部寄存器使用而言是極大的浪費(fèi),也會占用更多的功能單元,浪費(fèi)大量的DSP內(nèi)核處理時(shí)間。所以本文在不影響精度的情況下,把程序中的long型全部換成int或short型。
表1 DM6437數(shù)據(jù)類型
執(zhí)行一次short×short運(yùn)算僅用1個(gè)指令周期,而執(zhí)行一次int×int運(yùn)算需要花費(fèi)5個(gè)指令周期。所以本文對定點(diǎn)乘法輸入采用了short型數(shù)據(jù)。這樣可以最有效地利用DSP內(nèi)部的16 bit乘法器,加快指令執(zhí)行速度。并且對循環(huán)計(jì)數(shù)器使用int或unsigned int類型,而不使用 short或者 unsigned short類型,來避免不必要的符號擴(kuò)展指令。
本節(jié)中對本文設(shè)計(jì)的人臉檢測方法進(jìn)行綜合測試。測試方案如下:按照圖片來源其測試內(nèi)容包括網(wǎng)絡(luò)圖像、FDDB人臉檢測數(shù)據(jù)庫圖像、實(shí)際生活中采集的圖像3種類型;按照圖像中人臉數(shù)目測試內(nèi)容分為簡單背景的單人臉圖像和復(fù)雜背景的多人臉圖像。人臉檢測結(jié)果統(tǒng)計(jì)表如表2和表3所示。其中定義人臉檢測率為正確檢測出人臉的數(shù)目與圖像中所有人臉數(shù)目的比值;誤檢率為檢測出非人臉數(shù)目與圖像中所有人臉數(shù)目的比值;漏檢率為沒有檢測出來的人臉數(shù)目與人臉總數(shù)的比值。
同時(shí)對MATLAB與DSP的人臉檢測程序進(jìn)行運(yùn)算速度的測試,測試采用10張單人臉圖像以及10張多人臉圖像作為測試圖像。MATLAB人臉檢測程序在MATLAB中利用tic、toc函數(shù)直接得到運(yùn)行時(shí)間,DSP人臉檢測程序可以在CCS得到系統(tǒng)運(yùn)行時(shí)所需的時(shí)鐘周期。其中,MATLAB運(yùn)行環(huán)境為Windows 7系統(tǒng),采用2.8 GHz主頻的Intel CPU以及8G RAM,ICETEK-DM6437-B的系統(tǒng)時(shí)鐘設(shè)定為600 MHz。MATLAB與DSP人臉檢測程序運(yùn)算速度對比如表4所示。
表2 不同圖像來源人臉檢測統(tǒng)計(jì)表
表3 不同人臉數(shù)目人臉檢測統(tǒng)計(jì)表
表4 MATLAB與DSP人臉檢測程序運(yùn)算速度對比表
模擬實(shí)際監(jiān)控錄像采集圖像,對其進(jìn)行人臉檢測。實(shí)驗(yàn)地點(diǎn)為宿舍,將照相機(jī)支架置放在床鋪上,此時(shí)照相機(jī)與地面的距離大約為2.2 m左右(床高大約1.7 m,支架高大約0.5 m),連續(xù)采集圖像。其采集原圖像與DSP人臉檢測結(jié)果如圖8所示。
圖8 DSP人臉檢測結(jié)果
從上面數(shù)據(jù)可以看出,網(wǎng)絡(luò)圖像和FDDB人臉數(shù)據(jù)庫中的圖像其人臉正確檢測率相比生活中采集的圖像檢測率高,針對DSP優(yōu)化的人臉檢測程序運(yùn)算速度要強(qiáng)于MATLAB,同時(shí)可以得出DSP人臉檢測程序很好的滿足了人臉檢測實(shí)時(shí)性的要求。通過對測試生活圖像和網(wǎng)絡(luò)圖像膚色提取后的結(jié)果分析,主要存在兩方面原因。一是采集圖像本身質(zhì)量問題,拍攝網(wǎng)絡(luò)圖像如明星合影等所使用的攝像機(jī)像素相對較高,同時(shí)拍攝過程中會采取補(bǔ)光等一些措施,因此對其進(jìn)行膚色提取效果較好;二是生活圖像的背景比較復(fù)雜,可能含有更多的與膚色相近的物體,而且大多數(shù)在室外取景的生活照片,其膚色的提取過程受光線影響很大。
本文在ICETEK-DM6437-B評估板上實(shí)現(xiàn)了實(shí)時(shí)人臉檢測算法。算法首先根據(jù)MATLAB環(huán)境中統(tǒng)計(jì)好的膚色模型確定所有候選膚色區(qū)域,依據(jù)人臉的形狀特征排除非人臉區(qū)域,可以實(shí)現(xiàn)所有人臉的精確定位;同時(shí)采用區(qū)域增長的連通域方法來確定人臉候選塊,代替了邊緣檢測等方法,進(jìn)而減少了DSP的運(yùn)算量。實(shí)驗(yàn)結(jié)果表明,經(jīng)過優(yōu)化的算法在DM6437上可以很好的滿足實(shí)時(shí)人臉檢測的要求。
[1]葛薇.自動(dòng)人臉識別的關(guān)鍵問題研究[D].北京:中國科學(xué)院研究生院,2007.
[2]隋靜.基于視頻圖像的人臉檢測方法研究[D].西安:西安電子科技大學(xué),2011.
[3]Yang M H,Kriegman D,Ahuja N.Detecting Faces in Images:A Survey[J].IEEE Trans Pattern Analysis and Machine Intelligence,2002,24(1):34-58.
[4]王珺,彭進(jìn)業(yè),李丹嬌,等.基于DSP的視頻人臉監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測量與控制,2012,20(3):697-701.
[5]Texas Instruments Inc.TMS320DM6437 Digital Media Processor[EB/OL].Product Specifications,http://www.ti.com.cn/.
[6]瑞泰創(chuàng)新科技有限責(zé)任公司.ICETEK-DM6437-B實(shí)驗(yàn)手冊[S].北京:瑞泰創(chuàng)新科技有限責(zé)任公司,2011.
[7]Augusteijn M F.Identification of Human Faces through Texture-Based Feature Recognition and NeuralNetwork Technology[C]//Proceedings of IEEE Conference on Neural network,1993:392-398.
[8]姜軍,張桂林.一種基于知識的快速人臉檢測方法[J].中國圖像圖形學(xué)報(bào),2002,7(1):6-10.
[9]Vidit Jain,Erik Learned-Miller.A Benchmark for Face Detection in Unconstrained Settings[R].Technical Report UM-CS-2010-009,Dept.of Computer Science,University of Massachusetts,Amherst,2010.
[10]Rafael C Gonzalez,Richard E Woods.Digital Image Processing,Third Edition[M].New Jersey:Prentice Hall Publication,2008.
[11]李華勝,楊樺,袁保宗.人臉識別系統(tǒng)中的特征提取[J].北京交通大學(xué)學(xué)報(bào),2003,25(2):6-10.
[12]高紅波,王衛(wèi)星.一種二值圖像連通域標(biāo)記的新算法[J].計(jì)算機(jī)應(yīng)用,2007,27(11):2776-2777.
[13]張瑩,李勇平,敖新宇.基于OpenCV的通用人臉檢測模塊設(shè)計(jì)[J].計(jì)算機(jī)工程科學(xué),2011,1(5):97-101.