侯順艷 郄建敏 許 靜
(河北大學(xué) 電子信息工程學(xué)院,河北 保定071002)
人臉檢測是人臉表情識別、人機(jī)交互的第一步,快速有效的人臉檢測直接影響人臉識別系統(tǒng)的實(shí)現(xiàn)。人臉檢測是指運(yùn)用一定的算法從不同背景或者視頻中圖像確定其中是否有人臉,若有則標(biāo)出人臉的大小、位置、是否旋轉(zhuǎn)以及旋轉(zhuǎn)角度等信息。自上世紀(jì)90 年代以來,科研人員提出了很多人臉檢測算法,大致分為四類:基于知識的方法、基于特征的方法、基于模板的方法和基于表象的方法[1]。本文結(jié)合雙膚色模型與Adaboost 算法開發(fā)人臉檢測系統(tǒng)。
Intel 公司的開源計(jì)算機(jī)視覺庫OpenCV (Open Source Computer Vision Library)[2],由一系列C 函數(shù)和少量 C++ 類構(gòu)成,具有良好的可移植性,其代碼都經(jīng)過優(yōu)化,可以進(jìn)行圖像的實(shí)時(shí)處理。 OpenCV 廣泛應(yīng)用在人機(jī)互動(dòng)、物體識別、圖象分割、人臉識別、動(dòng)作識別、運(yùn)動(dòng)跟蹤、機(jī)器人等領(lǐng)域。利用OpenCV 實(shí)現(xiàn)人臉檢測,為系統(tǒng)開發(fā)帶來了極大的方便。
在Windows 環(huán)境下,基于可視化開發(fā)平臺VS2010,調(diào)用OpenCV視覺庫,設(shè)計(jì)人臉檢測算法,開發(fā)一個(gè)實(shí)用的人臉檢測系統(tǒng)。
膚色作為人臉的主要特征,從圖像中抽取膚色,利用膚色檢測可有效減小搜索范圍, 提高檢測速度。 常用的顏色空間有RGB、HIS、CYMK、YCbCr 等,其中,YCbCr 色彩空間是 MPEG 數(shù)字視頻編碼標(biāo)準(zhǔn)建議的顏色空間,具有計(jì)算、表示簡單,亮度分離,能較好的限制膚色分布范圍等特點(diǎn)。 本文在YCbCr 空間下實(shí)現(xiàn)膚色檢測,從RGB 空間到Y(jié)CbCr 空間的轉(zhuǎn)化可由線性公式(1)得到。
膚色模型是指用一種代數(shù)的(解析的)或查找表等形式來表示哪些像素的顏色屬于膚色,或者表征出某一像素的顏色與膚色的相似程度[3]。
2.2.1 簡單邊界膚色模型
簡單邊界膚色模型依據(jù)膚色在顏色空間中相對的集中在某一區(qū)域,使用一個(gè)或一組已知數(shù)學(xué)公式來表示膚色范圍。 簡單邊界模型要取得好的效果必須解決兩個(gè)問題[4]:(1)如何選擇合適的顏色空間;(2)如何確定規(guī)則中的參數(shù)。在選擇顏色空間時(shí)除了要考慮膚色在顏色空間中的聚集程度外,還要考慮膚色與非膚色區(qū)域的可分離性。
2.2.2 高斯膚色模型
根據(jù)統(tǒng)計(jì)理論, 在YCbCr 空間中膚色的分布是連續(xù)的并且滿足高斯分布。 本文從自建的圖像集中選取大量含有膚色的圖像,分出膚色像素點(diǎn),組成訓(xùn)練樣本,利用樣本的統(tǒng)計(jì)方法、EM 算法確定Gauss分布的均值和方差。 根據(jù)膚色在YCbCr 空間的高斯分布,對被檢測的圖像計(jì)算像素點(diǎn)距離高斯模型分布中心的馬氏距離。 按照公式(2)得到各像素點(diǎn)屬于膚色區(qū)域的概率,即可得到膚色似然圖。
其中,m 是該圖像的平均值;C 是協(xié)方差矩陣;
2.2.3 基于雙膚色模型的膚色分割
簡單邊界模型運(yùn)行效率較高,邏輯簡單,常用于實(shí)時(shí)系統(tǒng)檢測,但是膚色范圍如果設(shè)置的太大,則會引入大量非膚色。 基于概率的動(dòng)態(tài)閾值模型如高斯模型,相對來說實(shí)現(xiàn)較復(fù)雜,但是檢測精度高。因此本文采用簡單邊界模型和高斯模型相結(jié)合的方法優(yōu)化膚色檢測過程。
首先輸入圖像如圖1(a),選擇YCbCr 顏色空間中的CbCr 平面,設(shè)置膚色邊界范圍:100≤Cb≤127,133≤Cr≤173。 如果圖像中的像素落在限定的矩形區(qū)域內(nèi),就認(rèn)為該像素為膚色,從而得到初次分割結(jié)果,如圖1(b)。 通常采用白色表示膚色區(qū)域,黑色表示非膚色區(qū)域。
初次分割的結(jié)果修正高斯膚色模型,對輸入圖像應(yīng)用高斯模型進(jìn)行膚色相似度判定,得到膚色似然圖,如圖1(c)。 用最大類間方差法確定最佳閾值,得到膚色二值圖像如圖1(d)。
2.2.4 人臉粗檢
對膚色分割得到的二值圖像進(jìn)行后處理,通過膨脹與腐蝕等形態(tài)學(xué)處理填充小空洞,去除小的噪聲,以去除非人臉區(qū)域,判定膚色區(qū)域內(nèi)孔的數(shù)量、大小及其位置關(guān)系,計(jì)算連通區(qū)域的寬和高,確定候選人臉區(qū)域。
Viola[5]提出了一種結(jié)合Adaboost 和Cascade 算法的多特征檢測系統(tǒng),具有極高的運(yùn)行速度,實(shí)現(xiàn)了人臉的實(shí)時(shí)檢測,并具有較高的檢測準(zhǔn)確率,在人臉分析領(lǐng)域引起了廣泛的關(guān)注。 該算法采用一組類似于哈爾小波變換(Haar-Like)的濾波器來計(jì)算圖象的特征值,包括3 種特征:雙矩形特征、三矩形特征和四矩形特征。
圖1 基于雙膚色模型的膚色分割
本文利用AdaBoost 級聯(lián)分類器掃描候選人臉區(qū)域, 依次調(diào)用每級強(qiáng)分類器對該區(qū)域檢測, 因此AdaBoost 級聯(lián)分類器不用掃描整個(gè)圖像,從而提高了人臉檢測速度,準(zhǔn)確的定位出人臉。
人臉檢測系統(tǒng)基于Windows 風(fēng)格,方便用戶操作。 系統(tǒng)運(yùn)行界面如圖2,圖中為精確定位人臉實(shí)例。
人臉檢測是人臉識別的第一步,檢測效果直接影響后續(xù)工作。 對人臉檢測效果進(jìn)行分析,采用540 張靜態(tài)圖像進(jìn)行測試,包括各種復(fù)雜環(huán)境和背景、不同尺寸、不同角度的單人臉和多人臉圖像,共878 個(gè)人臉。 通過測試, 共檢測出789 張人臉, 誤檢人臉43 張, 檢測率為89.9,平均每張臉檢測時(shí)間0.963 秒??傮w說來,檢測效果較好,基本滿足系統(tǒng)要求。
圖2 人臉檢測系統(tǒng)運(yùn)行界面
基于雙膚色模型和AdaBoost 算法, 開發(fā)了一個(gè)實(shí)用的人臉檢測系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了膚色檢測、人臉檢測及特征定位等功能。實(shí)驗(yàn)證明該系統(tǒng)在檢測率和檢測速度上均有一定的提高,為后續(xù)人臉識別及實(shí)際應(yīng)用提供了有力的保障。
[1]Yang M H, Kriegnum D J.Ahuja N.Delecting face in images:a survey[J].Pattern Analysis and Machine Intelligence, 2002,24(1):34-58.
[2]賈小軍,喻擎蒼.基于開源計(jì)算機(jī)視覺庫OpenCV 的圖像處理[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25(4):276-278.
[3]Guangzheng Yang, Thomas S Huang.Human face detection in a complex background[J].Pattern Recognition,1996:345-350.
[4]陳鍛生,劉政凱.膚色檢測技術(shù)綜述[J].計(jì)算機(jī)學(xué)報(bào),2006,29(2):194-207.
[5]Viola P, JonesM.Rapid object detection using a boosted cascade ofsimple features[C]//IEEE Conf on ComputerVision and Pattern Recognition, Kaua,i Hawai,USA: IEEE Computer Society, 2001.