呂凱凱,韋德泉
(棗莊學院光電工程學院,山東棗莊 277160)
人臉檢測[1]即判斷待檢測視頻或圖像中是否存在人臉,存在幾個人臉,標記出人臉的位置并提取候選人臉圖像,是人臉識別工程的第一步,其結(jié)果對之后的人臉特征提取和人臉識別分類有決定性的影響.
膚色特征是人臉重要的特征之一.不同國家、不同種族的人臉膚色看上去差別很大,比如非洲人膚色偏黑,歐洲人膚色偏白,而亞洲人偏黃,但是這種差異僅僅是在人眼看上去的差異,即亮度上的差異,在去除了亮度信息后的色度空間中,這些膚色不同的人臉膚色分布是具有聚類性的[2].另外,跟其它人臉特征比,人臉的表情對膚色沒有影響,所以基于膚色作為人臉特征的檢測方法受到了很多的關(guān)注,并且取得了不錯的檢測效果[3~5].本文用C++語言設(shè)計并實現(xiàn)了一個基于膚色的人臉檢測系統(tǒng).
在人眼的眼中,所有的顏色都是紅(R),綠(G),藍(B)三個基色的不同組合,所以RGB色彩空間在生活中最為常見.當然,除了RGB色彩空間,還有其它的色彩空間,但RGB色彩空間是其它色彩空間的基礎(chǔ),幾乎所有的圖像設(shè)備都使用RGB色彩空間來表示圖像.在RGB色彩空間中,圖像的色度信息和亮度信息是沒有分開的,所以基于膚色的人臉檢測方法中,RGB色彩空間是無法利用的.因此,我們必須要找到一種能把顏色表達中的色度信息與亮度信息分開的色彩空間.可以將色度信息與亮度信息分開的色彩空間主要有YUV彩色空間、YIQ彩色空間、YCbCr彩色空間、HSB彩色空間等,它們分別用于不同的用途.通過比較幾種色彩空間,本文決定使用HSB色彩空間來進行基于膚色的人臉檢測.
HSB顏色空間中,H代表色調(diào)(Hues),S代表色飽和度(Saturation),B代表亮度(brightness),其中,H的值在0-360之間變化,S的值在0-1之間變化,B的值在0-1之間變化.HSB色彩空間可以用一個六角模型表示,如圖1所示.
圖1 HSB六面體彩色模型
色調(diào)H代表顏色,是由與色飽和度S之間的旋轉(zhuǎn)角度a確定,a的不同取值代表不同顏色,比如a=60時,代表紅色,a=120時,代表黃色等等.色飽和度S代表某種顏色的的純度,取S=0時代表灰色圖像,當S=1時表示此時顏色是最純的彩色.亮度B代表某種顏色的亮度,當B=0時,表示亮度為零,此時對應(yīng)黑色,當B=1時,此時顏色最鮮亮.為了本文檢測需要,應(yīng)該把RGB色彩空間轉(zhuǎn)換成HSB色彩空間,轉(zhuǎn)換由如下公式進行:假設(shè)Max=max(R,G,B);Min=min(R,G,B);即Max和Min分別代表R、G、B三者中的最大值和最小值,定義Delta=Max-Min.那么色調(diào)、色飽和度和亮度H、S、B的計算方法如下:
H=0 當Delta=0時;
H=60(G-B)/Delta當Max=R且G>=B時;
H=60(G-B)/Delt+360 當Max=R且G
H=60(B-R)/Delt+120 當Max=G時;
H=60(R-G)/Delt+240 當Max=B時;
S=0 當Max=0時;
S=Delta/Max其它情況時;
B=Max;
圖2~5顯示了同一幅RGB圖像,分別轉(zhuǎn)換成不同彩色空間時的圖像,可以看出相比其它顏色空間,HSB顏色空間中膚色與背景分離較好.
圖2 YUV顏色空間 圖3 YIQ彩色空間
圖4 YCbCr顏色空間 圖5 HSB顏色空間
根據(jù)實驗,在HSB顏色空間中,我們定義人臉膚色閾值R>=90&&G>=30&&B<30,在進行膚色確認時,程序針對一張待檢測的圖像,逐個掃描每個像素點,讀取相應(yīng)像素點的三個分量的顏色值,看是否滿足上述我們定義的膚色區(qū)域值,如果滿足,那我們將該像素點的二值化圖像置為255,即是白色,如果不滿足,那我們將該像素點的二值化圖像置為0,即是黑色,由此得到的二值化圖像中,白色的區(qū)域就是可能的候選人臉區(qū)域.圖6是按上述方法得到的二值圖像.
在不破壞圖像的前提下,圖像濾波可以對圖像中的噪音進行過濾去除,這項技術(shù)也對后續(xù)的檢測結(jié)果有很大的影響.常見的圖像濾波技術(shù)包括簡單平均值濾波、加權(quán)平均濾波、最大值濾波、最小值濾波和中值濾波等多種濾波.圖7是本文比較了幾種濾波方法之后采用3*3掩模中值濾波后的二值圖像.
圖6 二值圖像 圖7 中值濾波后二值圖像
本文中,我們假設(shè)原始圖像的長和寬分別為X和Y.復(fù)雜背景下的原始圖像經(jīng)過如上步驟處理以后,我們得到了一幅與原始圖像同等大小的一幅二值化圖像,圖像中存在著可能的人臉區(qū)域.接下來我們需要對此二值化圖像進行的操作是提取出圖像中含有的所有的連通域.每個連通域包含在一個矩形框內(nèi),矩形框的左下角坐標為(x0,y0),矩形框的右上角坐標為(x1,y1),如圖8所示,此矩形區(qū)域就是我們的目標人臉區(qū)域之一.
圖8 二值化圖像連通域示意圖
那么我們將得到的目標矩形區(qū)域的長和寬分別定義為h和w,那么長h=y1-y0+1,寬w=x1-x0+1.本文基于膚色的人臉檢測算法篩選人臉的規(guī)則定義如下:人臉區(qū)域的長寬比例應(yīng)該符合一個約束范圍,利用該約束范圍可快速排除那些太過狹長或太過寬扁的非人臉區(qū)域.根據(jù)實驗,本文我們?nèi)/h>=0.55且w/h<=0.85;另外目標人臉區(qū)域的人臉像素面積與目標矩形區(qū)域的面積之比faceratio應(yīng)該大于某一個閾值并且這個閾值不能過大,否則為非人臉區(qū)域,將其排除掉.大于某個閾值可以排除一些不規(guī)則但和膚色比較接近的物體,也可以排除一些人體的其他非人臉區(qū)域,如彎曲的四肢等;限制faceratio不能過大,可以排除一些大塊的與膚色很相近的非人臉區(qū)域.本文我們?nèi)aceratio>=0.55且faceratio<=0.9,介于此區(qū)間的目標區(qū)域我們認為是人臉區(qū)域.基于以上判定規(guī)則的本文系統(tǒng)檢測結(jié)果如圖9所示.圖10是本文系統(tǒng)提取出來的檢測結(jié)果的原始圖像和二值圖像.
圖9 本文系統(tǒng)檢測結(jié)果 圖10 本文系統(tǒng)提取的結(jié)果
本文用C++語言設(shè)計并實現(xiàn)了一個基于膚色的人臉檢測系統(tǒng), 膚色不會受人臉的表情和姿態(tài)的影響,取得了比較滿意的檢測效果.本文確定膚色閾值和人臉區(qū)域規(guī)則是通過實驗數(shù)據(jù)得出,針對復(fù)雜多變的環(huán)境,這些參數(shù)并不能夠自適應(yīng)的動態(tài)調(diào)整,這是后續(xù)考慮改進的地方.