王思霖,李 鈺
(信陽農林學院信息工程學院 河南 信陽 464000)
膚色檢測解決了如何從圖片或視頻中識別出具有人體膚色的像素點和區域問題,是手勢識別、人機交互等計算機視覺應用中的關鍵技術[1]。常見的膚色檢測算法首先將圖片轉化為位于色彩空間中的一個個像素點,再通過設置閾值的方式在該色彩空間中劃分出膚色和非膚色的空間區域,最后通過判斷像素點在該色彩空間中是否位于膚色區域來從圖片中識別膚色像素點。常用于膚色檢測的色彩空間有RGB、YCbCr、HSV,它們具有不同的閾值約束條件來區分膚色和非膚色像素點。
色彩空間是一種通過多個色彩分量來描述色彩信息的數學模型,利用這個模型,一種顏色可以通過一組數值來進行表示[2]。有多種色彩空間可以用于膚色檢測,這里介紹最為常見的3 種:RGB、HSV、YCbCr[3]。
RGB 色彩空間將紅、綠、藍三原色的色光以不同的比例相加,以合成產生各種色彩光,它的名字來源于紅、綠、藍3 種基本色英文首字母的縮寫。
RGB 色彩空間被廣泛應用于電子系統中且通常作為數碼圖片的默認存儲和表示方式,任何一種顏色也都可以分解表示為紅、綠、藍3 種顏色分量,各分量的取值范圍為0 至255,例如紅色可以表示為(255,0,0)。
通過RGB 色彩空間,數碼圖片中的每一個像素點的顏色都可以通過紅、綠、藍3 種顏色分量來進行準確表示。現有研究成果表明,人體膚色在RGB 色彩空間中表示滿足以下約束條件[4]:
條件1:R>95andG>40andB>20
條件2:max(R,G,B)-min(R,G,B)>15
條件3:|R-G|>15
條件4:R>G
條件5:R>B
由于RGB 色彩空間受亮度影響較大,所以人體膚色在不同光源環境下的約束條件會隨光源的強弱產生變化。
HSV 色彩空間是RGB 色彩空間在圓柱坐標系中的表示方法,相對于RGB 色彩空間,它在顏色體驗上更符合人類的直覺。HSV 由色相(H)、飽和度(S)和明度(V)3種分量組成。其中色相(H)是色彩的基本屬性,飽和度(S)是指色彩的純度,明度(V)表示亮度[5]。人體膚色在HSV 色彩空間中的約束條件為:
條件1:3 <H<23
條件2:28 <S<256
條件3:50 <V<256
YCbCr 色彩空間常用于圖像處理。YCbCr 色彩空間中的顏色由Y、Cb、Cr 3 種分量進行表示,其中Y 代表亮度,Cb 代表藍色分量,Cr 代表紅色分量。
人體膚色主要由顏色的色度決定,所以在YCbCr 色彩空間中研究人體膚色的分布規律時,可以排除Y 分量的影響,只考慮Cb、Cr 兩個分量。從數學角度來看,在研究人體膚色在YCbCr 色彩空間中的分布情況時,可以將YCbCr 三維空間投影到CbCr 二維空間,通過研究人體膚色在CbCr 二維平面上的分布來得出規律。根據現有研究成果,人體膚色在CbCr 二維平面的分布近似一個橢圓,所以可以通過判斷像素點在CbCr 二維平面上是否落入該橢圓區域來識別其是否是人體膚色,從數值上可以表示為以下約束條件:
條件1:77 ≤Cb≤127
條件2:133 ≤Cr≤173
為了更好地區別基于RGB、HSV、YCbCr 3 種色彩空間的膚色檢測算法的效果,本次實驗選用了3 張具有不同特點的手部圖片作為素材分別進行膚色檢測,其中圖1 拍攝于光照條件較好的環境下,圖片背景中元素較少,手中所捧玫瑰花和紅色手指甲蓋是膚色檢測的干擾項。圖2 拍攝于光照條件較好的環境下,但背景中元素較多,綠色的植物、淺棕色的墻面,黑白格的地板都是膚色檢測的干擾因素。圖3 拍攝于光照條件較差的環境下,背景元素單一,因亮度不足的原因,手上的部分區域亮度低,易對檢測產生干擾。
膚色檢測算法的原理見圖4,首先將待檢測的圖片素材輸入,將圖片的色彩空間轉為對應算法中所選用的色彩空間,遍歷圖片中的每一個像素,如果像素點的色彩值滿足對應色彩空間人類膚色的約束條件,則將該像素點保留原色,如果不滿足條件,則將像素點的顏色改為黑色。當遍歷結束后,會得到膚色檢測后的圖片,其中膚色部分為原色,非膚色部分為黑色[6]。
對基于RGB 色彩空間的膚色檢測算法,圖片素材1 的檢測結果見圖5,手部區域識別基本完整,紅色指甲和手中所捧的玫瑰花的一小部分被誤認為膚色區域。圖片素材2 的檢測結果見圖6,手部區域識別完整,但墻體中一小部分被誤認為膚色區域被識別出。圖片素材3 的檢測結果見圖7,只有一部分亮度較高的手部區域被識別出,手部輪廓模糊。
從檢測結果來看,可以得出如下結論:一是基于RGB色彩空間的算法在膚色檢測時受圖片拍攝時的光照條件影響較大,光照條件充足時會有較大的識別成功率,反之識別率較低;二是基于RGB 色彩空間的算法容易受到照片中紅色元素的影響,有概率將紅色元素誤識別為膚色。
對基于HSV 色彩空間的膚色檢測算法,圖片素材1 的檢測結果見圖8,手部區域識別基本完整,紅色指甲和手中所捧的玫瑰花都被正確識別為非膚色。圖片素材2 的檢測結果見圖9,手部區域識別較完整。圖片素材3 的檢測結果見圖10,大部分的手部區域被識別出,手部輪廓模糊。
從檢測結果來看,可以得出如下結論:一是基于HSV色彩空間的算法在膚色檢測時受圖片拍攝時的光照條件影響較小;二是基于HSV 色彩空間的算法不易受到照片中紅色元素的影響。
對基于YCbCr 色彩空間的膚色檢測算法,圖片素材1的檢測結果見圖11,手部區域識別完整,紅色指甲和手中所捧的玫瑰花被誤認為膚色區域。圖片素材2 的檢測結果見圖12,手部區域識別較完整,背景中的墻體被誤認為膚色。圖片素材3 的檢測結果見圖13,手部區域被識別出,手部輪廓清晰。
從檢測結果來看,可以得出如下結論:一是基于YCbCr 色彩空間的算法在膚色檢測時不受圖片拍攝時的光照條件影響;二是基于YCbCr 色彩空間的算法極易受到照片中紅色元素的影響,大概率會將其誤認為膚色;三是基于YCbCr 色彩空間的算法在圖片背景元素較復雜的時候,檢測結果容易受到干擾。
RGB 色彩空間適用于拍攝光照條件好,沒有紅色元素干擾的場景。HSV 色彩空間適用于拍攝光照條件較好,有紅色元素干擾的場景。YCbCr 色彩空間適用于拍攝光照條件較差,沒有紅色元素干擾且背景元素單一的場景。
本文首先闡述了色彩空間的概念,并對常用于膚色識別的色彩空間RGB、HSV、YCbCr 的特點及用于膚色識別時的約束條件進行了描述。后通過實驗對比分析了基于這3種不同色彩空間的算法的檢測結果,并對各自的適用場景進行了分析。