程耀瑜,豐 婧,李樹軍,賀 磊
(1.中北大學(xué) 信息與通信工程學(xué)院, 太原 030051;2.寧波軍鴿防務(wù)科技有限公司, 浙江 寧波 315000; 3.中北大學(xué) 機(jī)電工程學(xué)院, 太原 030051)
隨著信息技術(shù)飛速發(fā)展,人臉檢測和人臉識別技術(shù)已經(jīng)成為當(dāng)前的研究熱點。人臉檢測屬于計算機(jī)視覺的范疇,主要用在人臉識別的預(yù)處理,在復(fù)雜背景下人臉檢測的需求越來越大,人臉檢測也逐漸發(fā)展為一個單獨的研究方向。目前大多數(shù)的人臉檢測都是針對正面、準(zhǔn)正面人臉圖像的研究,而對于發(fā)生俯仰或者左右側(cè)的情況下人臉姿態(tài)研究相對較少。
人臉檢測技術(shù)不僅包括檢測圖像中是否存在人臉,還需要標(biāo)記出人臉的所在位置,但現(xiàn)實中往往由于人臉內(nèi)在的變化(嘴的開閉、人臉的遮擋等)和外在條件的變化(光照的變化、圖像的成像條件等),給人臉檢測造成了一定的難度。常用的人臉檢測方法可以分為以下3種:基于知識的方法、基于統(tǒng)計模型的方法、基于模板匹配的方法[1]。其中,基于知識的方法又包含灰度特征、結(jié)構(gòu)特征、紋理特征、膚色特征、輪廓特征等,而利用膚色特征信息來實現(xiàn)人臉和背景的分離是目前最常用的人臉分割方法。
閆河等[2]提出了一種新的Haar-like特征實現(xiàn)人臉檢測;林國軍等[3]通過空間顏色轉(zhuǎn)換實現(xiàn)膚色定位人臉檢測。本文采用Haar特征算法進(jìn)行人臉檢測,在無法正確檢測的情況下,引入GrabCut圖像分割算法消除人像背景對膚色分割的影響,繼而使用膚色分割算法進(jìn)行人臉檢測。實驗結(jié)果表明,利用上述方法對人臉進(jìn)行檢測,可以很好地避免漏檢、誤檢的問題,降低了環(huán)境對人臉檢測的影響,在很大程度上提高了人臉檢測的準(zhǔn)確率,為后續(xù)的人臉識別提供了條件。
系統(tǒng)對單人臉圖像進(jìn)行檢測,在通過Haar特征檢測之后,對人臉檢測結(jié)果進(jìn)行判斷,若人臉檢測個數(shù)為1,則認(rèn)為檢測成功;若人臉檢測個數(shù)不為1,則認(rèn)為Haar特征檢測失效,轉(zhuǎn)而使用GrabCut算法提取目標(biāo)前景,將其轉(zhuǎn)換到Y(jié)CrCb空間,利用Otsu算法進(jìn)行自動閾值分割,得到膚色分割圖像,并對其進(jìn)行閾值二值化、中值濾波等預(yù)處理,通過幾何特征篩選人臉特征,最終得到人臉檢測的圖像。需要說明的是,誤檢也存在檢測結(jié)果個數(shù)為1的情況,但檢測到的對象不是人臉,由于其發(fā)生的概率較小,在這里忽略不計。算法流程如圖1所示。
圖1 算法流程框圖
Haar特征也稱Haar-like特征,是一種簡單且高效的圖像特征,其基于矩形區(qū)域相似的強(qiáng)度差異Haar小波。C.P.Papageorgiou等[4]在2002年提出將Haar-like特征用于人臉檢測;后來P.Viola和M.Jones[5]將其擴(kuò)展,定義了4個基本特征結(jié)構(gòu),并分為3類:邊緣特征、線性特征和對角線特征,組合成特征模板,如圖2所示。
圖2 4個基本特征結(jié)構(gòu)
Haar特征模板內(nèi)有白色和黑色2種矩形,用白色區(qū)域中的像素值之和減去黑色區(qū)域中的像素值之和,得到的就是一個特征值,Haar特征值反映了圖像的灰度變化情況。為了快速計算Haar特征,他們還提出積分圖的方法,如圖3所示。在積分圖像上任意位置(x,y)處的ii(x,y)表示該點左上角所有像素之和,即:
(1)
則區(qū)域A的像素值可以表示為:
SumA=ii(x,y)+ii(u,v)-ii(x,v)-ii(u,y)
(2)
圖3 積分圖
后續(xù)經(jīng)過改進(jìn)與發(fā)展,R.Lienhart等[6-7]提出引入45°傾斜特征,擴(kuò)展至14個特征原型:4個邊緣特性、8個線特性和2個中心環(huán)繞特性,以及一個特殊的對角線特性,以便能夠提取到更豐富的邊緣信息,如圖4所示。
圖4 Haar特征原型示意圖
圖像分割是計算機(jī)視覺領(lǐng)域中一個重要的研究內(nèi)容,目前基于圖論的分割技術(shù)已經(jīng)成為新的研究熱點,此方法基于能量優(yōu)化算法,將圖像分割問題轉(zhuǎn)換為圖的最小割優(yōu)化問題。其中GrabCut[8-9]是一種基于圖論的分割方法,廣泛應(yīng)用于前景分割(image segmentation)、醫(yī)學(xué)處理(medical treatment)、紋理分割(texture segmentation)及立體視覺(stereo vision)等方面。GrabCut是對GraphCut的改進(jìn)版,采用RGB三通道混合高斯模型(gaussians mixture model,GMM)建模,根據(jù)分割模型參數(shù)不斷迭代更新完成學(xué)習(xí)過程,實現(xiàn)能量函數(shù)收斂于最小值,輸入包含目標(biāo)前景的區(qū)域就可以完成前景與背景的分離。
整個圖的Gibbs能量函數(shù)為:
(3)
式(3)中:U函數(shù)部分表示能量函數(shù)的區(qū)域數(shù)據(jù)項;V函數(shù)表示能量函數(shù)的光滑項(邊界項)。
使用混合多高斯模型D(x)表示某個像素屬于前景或背景的概率,這里K=5,有:
(4)
(5)
式(4)、(5)中:πi表示第i個單高斯函數(shù)對概率貢獻(xiàn)的權(quán)重系數(shù);gi為第i單高斯函數(shù);μi為第i個單高斯函數(shù)的均值; ∑i為第i個單高斯函數(shù)的協(xié)方差。
區(qū)域數(shù)據(jù)項U函數(shù)為:
(6)
(7)
光滑項V函數(shù)為:
(8)
式(8)中:C是相鄰顏色對的集合;γ是一個常量值,γ=50;β=(2〈(zm-zn)2〉)-1。
本文設(shè)計通過鼠標(biāo)選取人臉?biāo)谖恢脴?biāo)注前景框,提取前景消除周圍環(huán)境的影響。具體的實現(xiàn)步驟為:
步驟1通過鼠標(biāo)框選人臉?biāo)谖恢?,矩形外的區(qū)域自動認(rèn)為是背景像素,矩形內(nèi)視為“可能是目標(biāo)”的像素;
步驟2Grabcut算法對目標(biāo)區(qū)域進(jìn)行初始化標(biāo)記,前景區(qū)域的標(biāo)簽為αn=1,背景區(qū)域的標(biāo)簽為αn=0;
步驟3使用高斯混合模型(GMM)對前景和背景建模;
步驟4對每個像素分配GMM中的高斯分量;
步驟5根據(jù)Gibbs能量函數(shù)公式不斷學(xué)習(xí)更新優(yōu)化GMM模型中的參數(shù);
步驟6使用最小割與最大流算法(mincut & maxflow)對圖片進(jìn)行分割;
步驟7重復(fù)步驟4~步驟6,直至能量函數(shù)收斂。
目前,在人臉檢測中常用的色彩空間主要有3種:RGB空間、HSV空間和YCrCb空間。其中,基于RGB范圍來判定皮膚容易受到光線的影響,魯棒性不好;而YCrCb顏色空間(亦稱YUV)是被歐洲電視系統(tǒng)所采用的一種顏色編碼方法,主要用于優(yōu)化彩色視頻信號的傳輸,不容易受到光線強(qiáng)弱的干擾,而且具有很好的聚類性,也容易從RGB空間轉(zhuǎn)換,分割效果良好。轉(zhuǎn)換公式為:
(9)
式(9)中:Y為顏色的亮度成分;Cb和Cr為藍(lán)色和紅色的濃度偏移量成分。
確定了YCrCb彩色空間,接下來要建立膚色模型,目前膚色建模的方法有很多種,其中最流行的是非參數(shù)化膚色模型,它是一種基于直方圖統(tǒng)計的方法,可以根據(jù)膚色樣本自動調(diào)節(jié)分割閾值,不需要人為設(shè)定參數(shù),本文采用最大類間方差法[10-11],此方法是Otsu在1979年提出的,亦稱Otsu方法,此方法基于灰度值給出的類間分離閾值是最佳閾值,容易計算,不受圖像亮度和對比度的影響,可以達(dá)到很好的分割效果,效果圖如圖5所示,為后續(xù)進(jìn)行人臉檢測縮小范圍。
圖5 原圖和膚色分割效果
在對膚色提取后的圖像進(jìn)行Haar特征檢測之后,正臉一般都會檢測出來,但是對于非正對人臉的檢測率就不是很高,因此對于沒有檢測出的對象還要進(jìn)行下一步的操作,得到非正對人臉的檢測結(jié)果。
閾值化圖像就是對灰度圖像進(jìn)行二值化操作,首先利用最大類間方差法求出一個閾值,并設(shè)定此閾值為門限,然后遍歷圖像中的像素點依次與閾值比較,判斷圖像像素為0還是255,最終形成二值圖像,使整個圖像呈現(xiàn)黑白的效果,以便凸顯出目標(biāo)的輪廓。效果如圖6所示。
圖6 二值化效果
平滑濾波也稱模糊處理,可以減少圖像上的噪聲,實質(zhì)是對像素點領(lǐng)域的像素值施于某種算法,以其結(jié)果替代錨點處對應(yīng)的像素值。中值濾波法是一種非線性平滑技術(shù),對脈沖噪聲有良好的濾除作用,特別是在濾除噪聲的同時,能夠很好的保護(hù)信號邊緣,使之不被模糊。
經(jīng)過以上步驟的操作,已經(jīng)基本確定了疑似膚色的區(qū)域,接下來要根據(jù)人臉的幾何特征進(jìn)行篩選,去掉干擾項,最終確定人臉區(qū)域的位置。具體規(guī)則如下:
1) 設(shè)置目標(biāo)區(qū)域外接矩形的最小尺寸為100×100;
2) 目標(biāo)區(qū)域的長寬之比的區(qū)間為[0.6,2.5],以消除胳膊等狹長區(qū)域的影響;
3) 目標(biāo)區(qū)域與其外接矩形的面積大于0.5。
試驗環(huán)境:軟件平臺為Visual Studio 2015專業(yè)版,硬件配置為Windows10操作系統(tǒng)(Intel i7,8GB內(nèi)存),編程語言為 C++,使用OpenCV開源庫作為算法的開發(fā)工具包。
人臉檢測的結(jié)果如圖7所示。本文采用的實驗數(shù)據(jù)是不同背景條件下的單人臉圖像,共計400張,有3部分來源:① 網(wǎng)絡(luò)上搜索的不同背景、不同姿勢的人臉圖像100張;② 從包含人臉的視頻圖像中,取出視頻幀圖像100張;③ 人臉數(shù)據(jù)集FDDB中選取圖像200張。
實驗結(jié)果表明,使用Haar單一算法漏檢率偏高,通過GrabCut和膚色檢測算法結(jié)合使用對Haar特征檢測不理想的結(jié)果進(jìn)一步檢測,可以有效降低單一算法的誤檢率和漏檢率,也進(jìn)一步提高了人臉檢測的準(zhǔn)確率。算法對比結(jié)果見表1。雖然本文引入了GrabCut的迭代能量最小化分割算法,較大地增加了分割圖像的時間,卻能更準(zhǔn)確地得到目標(biāo)圖像,從而提高了人臉檢測的準(zhǔn)確性。人臉檢測算法的時間對比見表2。
圖7 人臉檢測結(jié)果
表1 人臉檢測算法的對比結(jié)果
表2 人臉檢測算法的時間對比
為了進(jìn)一步驗證該算法對人臉檢測的有效性,本文在對圖像進(jìn)行人臉檢測的基礎(chǔ)上引入了實時的人臉檢測,實時檢測結(jié)果表明:本文算法對多個角度的人臉檢測均具有很好的魯棒性。部分實時人臉檢測視頻幀效果如圖8所示。
圖8 部分人臉檢測的實時視頻幀效果
提出一種新的算法來進(jìn)行人臉檢測,即先使用Haar特征算法進(jìn)行人臉檢測,在其無法得到正確結(jié)果的情況下,再使用GrabCut分割算法消除了人像背景的影響以提高人臉檢測的準(zhǔn)確性,繼而使用膚色檢測算法提高側(cè)臉、低頭等情況下人臉檢測的成功率。實驗結(jié)果表明使用該算法可以很好地解決使用Haar單一算法進(jìn)行人臉檢測造成的檢測率低、容易漏檢誤檢等問題,可為后續(xù)成功進(jìn)行人臉識別提供參考。