侯順艷 郄建敏 許 靜
(河北大學 電子信息工程學院,河北 保定071002)
人臉檢測是人臉表情識別、人機交互的第一步,快速有效的人臉檢測直接影響人臉識別系統的實現。人臉檢測是指運用一定的算法從不同背景或者視頻中圖像確定其中是否有人臉,若有則標出人臉的大小、位置、是否旋轉以及旋轉角度等信息。自上世紀90 年代以來,科研人員提出了很多人臉檢測算法,大致分為四類:基于知識的方法、基于特征的方法、基于模板的方法和基于表象的方法[1]。本文結合雙膚色模型與Adaboost 算法開發人臉檢測系統。
Intel 公司的開源計算機視覺庫OpenCV (Open Source Computer Vision Library)[2],由一系列C 函數和少量 C++ 類構成,具有良好的可移植性,其代碼都經過優化,可以進行圖像的實時處理。 OpenCV 廣泛應用在人機互動、物體識別、圖象分割、人臉識別、動作識別、運動跟蹤、機器人等領域。利用OpenCV 實現人臉檢測,為系統開發帶來了極大的方便。
在Windows 環境下,基于可視化開發平臺VS2010,調用OpenCV視覺庫,設計人臉檢測算法,開發一個實用的人臉檢測系統。
膚色作為人臉的主要特征,從圖像中抽取膚色,利用膚色檢測可有效減小搜索范圍, 提高檢測速度。 常用的顏色空間有RGB、HIS、CYMK、YCbCr 等,其中,YCbCr 色彩空間是 MPEG 數字視頻編碼標準建議的顏色空間,具有計算、表示簡單,亮度分離,能較好的限制膚色分布范圍等特點。 本文在YCbCr 空間下實現膚色檢測,從RGB 空間到YCbCr 空間的轉化可由線性公式(1)得到。

膚色模型是指用一種代數的(解析的)或查找表等形式來表示哪些像素的顏色屬于膚色,或者表征出某一像素的顏色與膚色的相似程度[3]。
2.2.1 簡單邊界膚色模型
簡單邊界膚色模型依據膚色在顏色空間中相對的集中在某一區域,使用一個或一組已知數學公式來表示膚色范圍。 簡單邊界模型要取得好的效果必須解決兩個問題[4]:(1)如何選擇合適的顏色空間;(2)如何確定規則中的參數。在選擇顏色空間時除了要考慮膚色在顏色空間中的聚集程度外,還要考慮膚色與非膚色區域的可分離性。
2.2.2 高斯膚色模型
根據統計理論, 在YCbCr 空間中膚色的分布是連續的并且滿足高斯分布。 本文從自建的圖像集中選取大量含有膚色的圖像,分出膚色像素點,組成訓練樣本,利用樣本的統計方法、EM 算法確定Gauss分布的均值和方差。 根據膚色在YCbCr 空間的高斯分布,對被檢測的圖像計算像素點距離高斯模型分布中心的馬氏距離。 按照公式(2)得到各像素點屬于膚色區域的概率,即可得到膚色似然圖。

其中,m 是該圖像的平均值;C 是協方差矩陣;

2.2.3 基于雙膚色模型的膚色分割
簡單邊界模型運行效率較高,邏輯簡單,常用于實時系統檢測,但是膚色范圍如果設置的太大,則會引入大量非膚色。 基于概率的動態閾值模型如高斯模型,相對來說實現較復雜,但是檢測精度高。因此本文采用簡單邊界模型和高斯模型相結合的方法優化膚色檢測過程。
首先輸入圖像如圖1(a),選擇YCbCr 顏色空間中的CbCr 平面,設置膚色邊界范圍:100≤Cb≤127,133≤Cr≤173。 如果圖像中的像素落在限定的矩形區域內,就認為該像素為膚色,從而得到初次分割結果,如圖1(b)。 通常采用白色表示膚色區域,黑色表示非膚色區域。
初次分割的結果修正高斯膚色模型,對輸入圖像應用高斯模型進行膚色相似度判定,得到膚色似然圖,如圖1(c)。 用最大類間方差法確定最佳閾值,得到膚色二值圖像如圖1(d)。
2.2.4 人臉粗檢
對膚色分割得到的二值圖像進行后處理,通過膨脹與腐蝕等形態學處理填充小空洞,去除小的噪聲,以去除非人臉區域,判定膚色區域內孔的數量、大小及其位置關系,計算連通區域的寬和高,確定候選人臉區域。
Viola[5]提出了一種結合Adaboost 和Cascade 算法的多特征檢測系統,具有極高的運行速度,實現了人臉的實時檢測,并具有較高的檢測準確率,在人臉分析領域引起了廣泛的關注。 該算法采用一組類似于哈爾小波變換(Haar-Like)的濾波器來計算圖象的特征值,包括3 種特征:雙矩形特征、三矩形特征和四矩形特征。

圖1 基于雙膚色模型的膚色分割
本文利用AdaBoost 級聯分類器掃描候選人臉區域, 依次調用每級強分類器對該區域檢測, 因此AdaBoost 級聯分類器不用掃描整個圖像,從而提高了人臉檢測速度,準確的定位出人臉。
人臉檢測系統基于Windows 風格,方便用戶操作。 系統運行界面如圖2,圖中為精確定位人臉實例。
人臉檢測是人臉識別的第一步,檢測效果直接影響后續工作。 對人臉檢測效果進行分析,采用540 張靜態圖像進行測試,包括各種復雜環境和背景、不同尺寸、不同角度的單人臉和多人臉圖像,共878 個人臉。 通過測試, 共檢測出789 張人臉, 誤檢人臉43 張, 檢測率為89.9,平均每張臉檢測時間0.963 秒。總體說來,檢測效果較好,基本滿足系統要求。

圖2 人臉檢測系統運行界面
基于雙膚色模型和AdaBoost 算法, 開發了一個實用的人臉檢測系統。該系統實現了膚色檢測、人臉檢測及特征定位等功能。實驗證明該系統在檢測率和檢測速度上均有一定的提高,為后續人臉識別及實際應用提供了有力的保障。
[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]賈小軍,喻擎蒼.基于開源計算機視覺庫OpenCV 的圖像處理[J].計算機應用與軟件,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]陳鍛生,劉政凱.膚色檢測技術綜述[J].計算機學報,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.