鄭 穎,蔡燦輝,朱建清
(1.華僑大學(xué) 信息科學(xué)與工程學(xué)院,福建廈門361021;2.中國科學(xué)院自動化研究所,北京100190)
膚色是人體表面最顯著的特征之一,它對姿勢、旋轉(zhuǎn)、表情等變化不敏感,因此可以利用膚色檢測從圖像中有效分割出前景目標(biāo),減小待搜索范圍。隨著計算機視覺和圖像處理的快速發(fā)展,膚色檢測顯得越來越重要,它在人臉檢測[1]、手勢識別、基于內(nèi)容的圖像檢索和色情圖像識別及過濾等方面都有著重要的應(yīng)用。
研究表明,盡管不同種族、年齡、性別的人臉膚色看上去不同,但這種不同主要體現(xiàn)在亮度而非色度上。而大部分由CCD攝像機采集得到的圖像都是亮度和色度高度相關(guān)的RGB形式,膚色對光照的變化很敏感,從而導(dǎo)致膚色像素的檢測變得困難,特別是在高亮度條件下。高亮度膚色像素的檢測是膚色檢測的一個難點,原因有兩點:
1)高亮度情況下膚色和非膚色具有很高的相似度。人類視覺在高亮度情況下對顏色不敏感,各種顏色往往都是一片白亮。這個時候僅靠色度差異來區(qū)分膚色和非膚色是十分困難的。
2)高亮度膚色像素的色度和亮度不完全獨立。
現(xiàn)有的研究中主要有兩類方法解決上述問題:①建立更精確的膚色模型;②減小亮度和色度的相關(guān)性。經(jīng)典的膚色檢測算法一般先進(jìn)行線性或非線性顏色空間變換,以減小亮度和色度的相關(guān)性,從而降低光照對膚色的影響。然后在變換后的顏色空間上利用二維色度子空間進(jìn)行膚色建模,建模的方法有劃定膚色范圍[2]、單高斯模型[3]、直方圖查找表[4]、混合高斯模型[5]、橢圓邊界法[6]等。現(xiàn)有的各種顏色空間不能完全消除亮度和色度的相關(guān)性,且經(jīng)典算法僅使用二維色度信息進(jìn)行膚色建模,在高亮度情況下極易發(fā)生漏檢。為了克服膚色檢測的這些難點,人們在YCbCr顏色空間上提出了一些改進(jìn)算法[7-9]。文獻(xiàn)[7]對可見亮度范圍內(nèi)的每一個亮度Y,統(tǒng)計出其對應(yīng)色度的范圍,根據(jù)每個像素的Y分量,索引出其相應(yīng)色度范圍,若該像素的色度落入這個范圍,則判斷為膚色。文獻(xiàn)[8]采用Y_Cb和Y_Cr兩個子空間的直方圖查找表建立膚色模型,并使用貝葉斯準(zhǔn)則建立膚色分類器,這需要比文獻(xiàn)[4]多一倍的內(nèi)存空間。文獻(xiàn)[9]把滿足 Y>120,Cb>95和 Cr>100條件的像素判斷為膚色像素,該算法的不足之處是會把非膚色的高亮區(qū)域判別為膚色區(qū)域。為了提高高亮度區(qū)域膚色像素檢測的正確率,文中在分析高亮度膚色像素的鄰域和邊緣信息的基礎(chǔ)上,提出一種基于亮度連續(xù)性準(zhǔn)則的高亮度膚色像素檢測算法。實驗結(jié)果表明該算法能在不增大對膚色樣本數(shù)量和內(nèi)存空間需求的前提下,準(zhǔn)確地檢測出圖片中高亮度區(qū)域的膚色像素。
由于高亮度情況下膚色和非膚色像素的分布非常近似,看起來都是“白亮一片”,因此僅僅靠色度信息區(qū)別膚色和非膚色十分困難。為了說明當(dāng)亮度足夠高時,亮度對膚色檢測的影響,文中從網(wǎng)上下載132張圖片,對每張圖片手工截取高亮度膚色和非膚色區(qū)域,做出如圖1所示的Cb和Cr色度直方圖。其中,實線曲線為膚色分布,虛線曲線為非膚色分布。從圖1中可以看出,在高亮度情況下,膚色像素的色度主要集中在130>Cb>100,160>Cr>128 范圍;非膚色像素的色度主要集中在144>Cb>106,147>Cr>112范圍。膚色和非膚色的色度有較大的重疊,所以很難用固定區(qū)間來劃定膚色。因此,必須對高亮度區(qū)域膚色像素的特性進(jìn)行深入的分析,找出其內(nèi)在的規(guī)律,從而實現(xiàn)更準(zhǔn)確的高亮度區(qū)域膚色像素檢測。
圖1 膚色和非膚色的色度子直方圖Fig.1 Chroma histogram of skin color and non-skin color
圖2給出了高亮度區(qū)域膚色像素分布特點示意圖。圖2(a)為一幅包含高亮度膚色像素的圖像,其中肩膀的大部分像素處于高亮度區(qū)域。圖2(b)給出了圖2(a)中肩膀部分的放大圖,從中可以看出高亮度膚色像素周圍是正常亮度膚色像素。圖2(c)給出了圖2(b)的亮度分布圖。從圖2(c)不難看出,由正常亮度的膚色像素到高亮度的膚色像素之間的變化是一種漸變過程。
通過實驗我們發(fā)現(xiàn)類似的現(xiàn)象在自然圖像中普遍存在。換言之,自然圖像中高亮度膚色區(qū)域的分布通常具有如下兩個特點:
1)圖像中膚色區(qū)域的亮度是漸變而不是劇變的,在正常情況下,人體膚色區(qū)域內(nèi)部不會出現(xiàn)明顯的亮度邊緣。
2)高亮度膚色區(qū)域的外圍通常存在正常亮度的膚色像素。
上述兩個特點分別表明了膚色區(qū)域的亮度連續(xù)性和空間連續(xù)性,文中稱之為人體膚色區(qū)域亮度和空間連續(xù)性原理?;谶@個原理,可以利用邊緣檢測在亮度子空間中有效地分割出膚色區(qū)域和非膚色區(qū)域,進(jìn)一步地,采用區(qū)域生長法在已檢測到的正常亮度的膚色區(qū)域中檢測出高亮度的膚色像素。
圖2 高亮度區(qū)域膚色像素分布特點示意Fig.2 Distribution diagram of skin color pixels in high illuminated region
圖3給出了一張具有高亮度膚色區(qū)域的照片及相應(yīng)的邊緣分布圖以說明膚色區(qū)域的亮度和空間連續(xù)性特點。其中圖3(b)是圖3(a)的亮度Canny邊緣檢測圖,從圖3(b)可以看出在高亮度膚色區(qū)域和低亮度膚色區(qū)域之間并沒有明顯的邊緣。因此,在膚色檢測時如果把人體膚色的這兩個特點也考慮進(jìn)去,就可以更好地解決高亮度膚色像素漏檢的難題。
圖3 膚色區(qū)域亮度和空間連續(xù)性Fig.3 Spatial and luminance continuity of skin color region
為此,文中提出一種基于人體膚色區(qū)域亮度和空間連續(xù)性原理的膚色檢測算法,該算法分成兩個階段:圖像中正常亮度區(qū)域的膚色像素檢測階段和圖像中可能存在的高亮度膚色像素檢測階段。正常亮度的膚色區(qū)域檢測可根據(jù)使用環(huán)境和條件選擇文獻(xiàn)[2-6]中的任何一種方法??紤]到文獻(xiàn)[3]采用的單高斯模型(SGM,Single Gaussian Model)方法在小樣本情況下的膚色聚類效果顯著,不需要大量的膚色樣本,在檢測時計算量不大不用建立查詢表,而且檢測效果比較好,所以文中采用單高斯建模方法進(jìn)行正常亮度膚色檢測。高亮度膚色像素檢測階段則是在前一階段檢測結(jié)果的基礎(chǔ)上采用人體膚色區(qū)域亮度和空間連續(xù)性原理檢測出高亮度膚色像素。
基于單高斯模型的膚色檢測算法主要包括顏色空間的選取、膚色建模、膚色分割三個部分,下面從這三個方面詳細(xì)介紹基于單高斯建模的膚色檢測算法。
1.2.1 顏色空間的選取
RGB顏色空間是最常用的顏色空間,但是RGB值不僅包含色度信息也包含亮度信息,所以環(huán)境光照的變化很容易導(dǎo)致RGB值發(fā)生變化,因此不宜在RGB顏色空間中建立膚色模型。文中選擇YCbCr顏色空間,該空間色度受亮度變化的影響較小,與其他顏色空間相比具有如下優(yōu)點:
1)YCbCr顏色空間廣泛應(yīng)用于圖像和視頻壓縮標(biāo)準(zhǔn),例如MPEG和JPEG。
2)YCbCr顏色空間是RGB空間的線性變換,轉(zhuǎn)換計算簡單。
2)YCbCr顏色空間與HIS,HSL,HSV等相似,獨立表示亮度和色度分量。
4)YCbCr顏色空間是離散空間,聚類算法易于實現(xiàn)。
5)YCbCr顏色空間是感知均勻的顏色空間,同HSI相比,膚色在YCbCr的聚類更緊簇。
圖4是膚色在顏色空間上的聚類圖,其中圖4(a)是膚色在Cb-Cr子空間上的聚類,圖4(b)是膚色在H-S子空間上的聚類。從圖4容易看出,膚色在YCbCr顏色空間上聚類比在HSI顏色空間上聚類更緊湊。
YCbCr顏色空間和RGB顏色空間的轉(zhuǎn)換關(guān)系式如下:
式中,YCbCr的信號范圍是 Y∈ 16,235[ ],Cb和 Cr∈[16,235]。
圖4 膚色在不同顏色空間上的聚類Fig.4 Cluster diagram of Skin color in different color space
1.2.2 膚色建模
單高斯模型就是利用高斯分布來擬合膚色的色度概率密度分布。它的基礎(chǔ)是來自兩個觀察結(jié)果:
1)膚色是以一定的概率密度出現(xiàn),人與人之間的膚色差異導(dǎo)致其概率密度的不同。
2)在一定的光照條件下膚色色度分布呈正態(tài)分布。
圖5是膚色在CbCr顏色空間的分布情況,其中圖5(a)是直方圖,圖5(b)是單高斯概率密度圖。單高斯模型采用橢圓高斯聯(lián)合概率密度函數(shù):
式中,x是像素色度向量,均值向量μ和協(xié)方差矩陣∑是高斯分布的參數(shù),由訓(xùn)練樣本最大似然估計(ML)估計得到:
文中在IMM人臉數(shù)據(jù)庫中手工選取膚色像素,訓(xùn)練出單高斯模型參數(shù)如下:
為了減小計算復(fù)雜度,文中采用馬氏距離(Mahalanobis Distance)作為衡量輸入像素和膚色模型的接近程度:
對每個像素點利用式(4)計算出馬氏距離,在實驗中先設(shè)定一個閾值θ,用以判斷當(dāng)前像素點是否為膚色像素。如果馬氏距離d2>θ時,判定該點為膚色點,否則為非膚色點。閾值θ的取值直接影響到膚色檢測結(jié)果,如果θ過大則膚色檢測的漏檢率大,相反,如果θ過小則膚色檢測的誤檢率大。實際上圖像內(nèi)容各不相同,只用一個固定閾值進(jìn)行膚色分割,顯然是不合理的,需要閾值θ自適應(yīng)的膚色分割算法。
圖5 膚色在CbCr顏色空間上的分布Fig.5 Distribution of skin color in CbCr color space
1.2.3 自適應(yīng)閾值分割算法
通過觀察發(fā)現(xiàn):當(dāng)分割閾值θ從大到小變化時,圖像中判定為膚色像素的數(shù)量會相應(yīng)增大,在最佳閾值處的膚色像素數(shù)量變化率最小。所以在0.55:0.05的預(yù)置閾值范圍內(nèi),以0.05的步長,依次對圖像進(jìn)行分割并記錄下閾值變化時屬于膚色像素數(shù)量的變化,然后找出膚色像素數(shù)量變化最小時的閾值作為最佳閾值。
根據(jù)上節(jié)所討論的基于單高斯模型的膚色檢測算法的實驗效果,文中設(shè)定Y∈[180,235]為高亮度像素。在已檢測出正常亮度下膚色區(qū)域的基礎(chǔ)上,即可利用文中所提出的人體膚色區(qū)域亮度和空間連續(xù)性原理對高亮度區(qū)域的膚色像素進(jìn)行檢測。高亮度膚色像素檢測算法具體如下:
對每個亮度值Y滿足180<Y<235的點,如果滿足下述三個條件:
1)其4鄰域中至少有1個膚色像素。
2)其8鄰域中沒有1個像素屬于邊緣像素。
3)當(dāng)前像素的色度同時滿足130>Cb>100和160>Cr>128。
則判定該點為高亮度膚色像素點。
綜上所述,可得文中所提出的具有高亮度膚色像素檢測的人臉檢測算法如下:
對輸入圖像f進(jìn)行低通濾波處理,濾除噪聲。
用基于單高斯模型的膚色檢測算法對圖像f進(jìn)行正常亮度區(qū)域的膚色檢測,得到初始的膚色標(biāo)志圖r(膚色像素點置為1,其余的像素點置為0)。
對膚色標(biāo)志圖r進(jìn)行形態(tài)學(xué)閉運算,填充一些細(xì)小的“空洞”。
對輸入的亮度圖像進(jìn)行Canny邊緣檢測,得到亮度圖像的邊緣標(biāo)志圖e(邊緣像素點置為1,否則置為0)。
對每個亮度值Y滿足180<Y<235的像素點,如果該點滿足下述三個條件則膚色標(biāo)志圖r的對應(yīng)位置置為1:
a.在膚色標(biāo)志圖r對應(yīng)位置的4鄰域中至少有1個非0點;
b.在邊緣標(biāo)志圖e對應(yīng)位置的8鄰域均為0;c.當(dāng)前像素的色度同時滿足130>Cb>100和160>Cr>128。
輸出最終的膚色標(biāo)志圖r,并根據(jù)膚色標(biāo)志圖提取膚色區(qū)域。
為了驗證所提出的基于人體膚色區(qū)域亮度和空間連續(xù)性原理的高亮度膚色像素檢測算法的效果,文中對多幅具有高亮度膚色像素區(qū)域的圖像進(jìn)行測試,并和文獻(xiàn)[6,8]中的檢測算法進(jìn)行了對比,圖6給出了部分實驗結(jié)果。其中,圖6(a)是具有高亮度膚色的原始圖片;圖6(b)是文獻(xiàn)[6]所提出方法的檢測效果圖;圖6(c)是文獻(xiàn)[8]所提出方法的檢測效果圖;圖6(d)是基于單高斯模型算法的檢測效果圖;圖6(e)是文中產(chǎn)生的膚色標(biāo)志圖;圖6(f)是文中算法的檢測效果圖。從圖6(b)可以看出文獻(xiàn)[6]的檢測算法既會把白色區(qū)域誤檢為膚色區(qū)域,又會把不少膚色區(qū)域誤檢為非膚色區(qū)域,導(dǎo)致相當(dāng)多的黑洞產(chǎn)生。從圖6(c)可以看出文獻(xiàn)[8]提出的方法雖然可以檢測出高亮度膚色像素,但是同時也把高亮度背景像素誤檢為膚色像素,導(dǎo)致經(jīng)過文獻(xiàn)[8]提出的方法進(jìn)行膚色檢測后的結(jié)果幾乎和原始圖像一樣,導(dǎo)致算法失敗。從圖 6(d)到圖6(f)可以看到基于單高斯模型方法不能檢測出圖像中的高亮度區(qū)域的膚色像素,而在單高斯模型檢測結(jié)果的基礎(chǔ)上采用文中提出的高亮度膚色區(qū)域檢測算法可以較準(zhǔn)確地檢測出圖像中的高亮度膚色區(qū)域,同時誤檢率也比文獻(xiàn)[6]提出的方法低。
圖6 膚色分割效果比較Fig.6 Comparison of skin color segmentation performance
文中分析了高亮度膚色區(qū)域的分布特點,提出在基于單高斯模型的膚色檢測算法基礎(chǔ)上,利用鄰域信息和亮度邊緣信息確定高亮度區(qū)域中的膚色像素點,實現(xiàn)含有高亮度膚色區(qū)域的膚色檢測,在不增加膚色樣本量和存儲空間的前提下,解決了只利用色度信息檢測膚色會對高亮度膚色產(chǎn)生漏檢等問題。實驗結(jié)果證明文中提出的方法準(zhǔn)確地檢測出圖片中高亮度膚色區(qū)域,同時降低誤檢率,可以適用于更廣的亮度范圍。
[1] 崔曉琳,蔡燦輝,朱建清.一種基于膚色后置濾波的快速人臉檢測算法[J].通信技術(shù),2013,46(08):116-119.CUI Xiao-lin,CAI Can-h(huán)ui,ZHU Jian-qing.A Fast Face-Detection Algorithm Based on Post Skin-Color-Verification[J]. CommunicationsTechnology,2013(08):116-119.
[2] CHAI D,NGAN K N.Locating Facial Region of A Head-and-shoulders Color Image[C]//Proceedings of the third IEEE International Conference on Automatic Face and Gesture Recognition.[s.l.]:IEEE,1998:124-129.
[3] YANG M H,AHUJA N.Detecting Human Faces in Color Images[C]//Proceedings of International Conference on Image Processing.[s.l.]:IEEE,1998:127-130.
[4] CHAI D,BOUZERDOUM A.A Bayesian Approach to Skin Color Classification in YCbCr Color Space[C]//Proceedings of TENCON.[s.l.]:IEEE,2000:421-424.
[5] ZHU X,YANG L,WAIBEL A.Segmenting Hands of Arbitrary Color[C]//Proceedings of the fourth IEEE International Conference on Automatic Face and Gesture Recognition.[s.l.]:IEEE,2000:446-453.
[6] HSU R L,ABDEL-MOTTALEB M,JAIN A K.Face Detection in Color Images[J].Pattern Analysis and Machine Intelligence,IEEE Transactions on,2002,24(05):696-706.
[7] 雷明,張軍英,董濟揚.一種可變光照條件下的膚色檢測算法[J].計算機工程與應(yīng)用,2002,38(24):123-125.LEI M,ZHANG J Y,DONG J Y.A Skin Color Detecting Algorithm under Variant Light Condition[J].Computer Engineering and Applications,2002,38(24):123-125.
[8] 呂東輝,王濱.YCbCr空間中一種基于貝葉斯判決的膚色檢測方法[J].中國圖形圖象學(xué)報,2006,11(01):48-52.LV Donghui,WANG Bin.A Skin Detection Method Based on Bayes Decision in YCbCr Color Space.Jounal of Image and Graphics,2006,11(1):48-52.
[9] LIN C.Face Detection in Complicated Backgrounds and Different Illumination Conditions by Using YCbCr Color Space and Neural Network[J].Pattern Recognition Letters,2007,28(16):2190-2200.