膚色偵測在過去十幾年中發展出許多技術,從靜態只針對顏色到動態偵測以 及加上手部或臉部等特徵做處理,同時也提升了不少準確度。從大部分的文獻 中,膚色偵測的方法主要分成以下幾個步驟:
前處理
由於環境光線會影響到顏色的呈現,因此對於膚色採樣來說是一件非常困難 的問題,雖然膚色在特定的顏色空間是在固定的範圍,但這前提是指顏色都是在 正常光線下。為了處理不良圖片,一般使用曝光修正或是白平衡等等的技術來修 正失真的照片,如Kovac 等人 [2]便是使用Gray World Algorithm。在恢復到原來 顏色後再重新採樣,可有效提高偵測率。然而對於自動化調整來說,這些技術無 法精確地調整圖片,因為自動化處理都是假定在某些條件下所設計,像是在日光 下或是室內等等,而當圖片不符合所設計的環境時則會造成負面效果。所以一般 只在建立訓練資料庫時手動使用,或是簡單的微調以避免因過度調整而造成惡 化。
顏色空間
採用何種顏色空間對於膚色偵測而言是一個重要的要素。各種顏色空間 基本可從 RGB 顏色空間使用線性或非線性轉換得出,採用何種空間主要是 看何種顏色空間能有效降低膚色跟非膚色的重疊性,由 Yang 等人 [3]得知 環境光線對膚色造成的影像很大,為了避免這問題,一般都是忽略光線的影 響,因此能夠將亮度獨立出來的顏色空間便常被人採用,如: Phung 等人 [4]、Park 等人 [5]使用的 YCbCr, Zhu 等人 [6]的 HSV,Barone 和 Caetano [7]、Fritsch 等人[8]的 normalized RGB 等。
偵測方法
在決定顏色空間後,最主要的問題就是如何分開膚色跟非膚色的方法,
每個研究者都有不同的方法去處理此類問題,以下是幾個比較常見的方法:
限定固定範圍:這方法是限定固定的顏色範圍,這方法的好處是能夠快 速的確認是否為膚色,像是 Phung 等人 [4]在訓練樣本時便先限定 Cb、Cr 的範圍以快速得到可靠的樣本。
直方圖(Histogram):這方法是將每種顏色是膚色或非膚色的比例算出,
再利用貝氏最大化相似度解出是否為膚色的機率。優點是只需要 2 個對照表 就可以輕鬆運算,缺點則是需要針對各顏色計算其非膚色以及膚色的機率,
需要較大的時間以及硬碟容量。 Brand 和 Mason [9]是在 RGB 顏色空間中 使用 R/B 跟 G/B 作為分類,減少了對照表的計算量,但對於亮度變化的掌 握率便比較差。Kawulok[10]也是使用直方圖,再加上使用一些後處理方式 以提高偵測率,在後面會提到。
高斯模型或高斯混合模型:將屬於膚色的平均值以及共變異數
(covariance)算出,再利用馬氏距離(Mahalanobis distance)推算各顏色是否為 膚色的機率,這方法的好處是需要儲存的空間比較少。Phung 等人[4]便是使 用 YCbCr 顏色空間。先將 Y 區分成 3 等分之後再使用[Y Cb Cr]代入公式分 別算出其機率,最後採用最小的馬氏距離做為其顏色的代表。優點是將亮度 列為考量,但若是受到黃光或是其他顏色光線影響的照片,則偵測率會直線 下滑。Barone 和 Caetano[7]則是以 normalized RGB 中的 R 跟 G 作為特徵。
缺點是光線一樣會對此方法造成問題。Zhu 等人 [6]是使用 HSV,利用[H S]
作為特徵,並使用其他方法輔助偵測,之後會再詳談。Park 等人[5]則是使 用 YCbCr,單純使用[Cb Cr]作為特徵。缺點環境光線仍影響很大。
後處理
在自動膚色偵測中,由於環境光線會影響到膚色的變化,所以除了使用 前處理改善外,另外就是使用後處理來改善,主要分成針對膚色再處理 [6][8][10],以及針對偵測到的膚色區塊作切割[11]。
膚色再處理:主要是先偵測出圖片中屬於膚色的區塊,利用圖片中已知 膚色的資訊再重新偵測膚色,Zhu 等人[6]便是利用原有圖片的所偵測到的膚 色作為基礎,再利用高斯混合模型(Gaussian mixture model)去求得新的平均 值以及共變異數,然後再利用新的平均值以及共變異數重新運算。這方法由 於是使用圖片中的資訊,所以準確率會比一般要來得好,但問題是如何得到 正確的膚色,一旦開始所偵測的膚色是錯誤的,則會使得之後的處理一樣是 錯誤的。Fritsch 等人[8]是利用偵測到的區塊再使用臉部偵測來確定臉部位 置,利用得到確定的臉部位置後再利用這臉部位置所得到的資訊重新偵測膚 色,但若膚色偵測沒有得到正確資訊時則無法正確預估;Kawulok[10]則是 利用臉部偵測來得到臉部的顏色,基本是利用所偵測到的臉部以及眼部位 置,使用雙眼之間距離 d 來算出梯形範圍(圖 1),利用這一範圍空間來判斷 臉部本身的顏色。缺點是在當臉部偵測錯誤時無法有效判斷是否為正確膚 色,容易造成誤判。
圖 1:Fritsch 等人[8]的臉部特徵取得方式,
(a)為取樣範圍的樣本,(b)為實際取樣的圖片
(a) (b)
膚色區塊切割:這是將以得到的膚色區塊再利用其他的影像處理技術作 處理以得到重新切割好的膚色區塊。像 Phung 等人[11]是利用 Sobel edge detector 來輔助切割膚色區塊,但當邊界不夠明顯時則無法有效使用。
針對以上膚色偵測的方法,對一般偵測方法[4][5][7]來說,環境光線會 改變膚色的呈現,因而降低偵測率,所以利用圖片中的資訊或是前處理是十 分重要的,因此我採用類似[6][8][10]的方法,藉由人臉的資訊來重新調整膚 色的平均值以及共變異數,增加膚色偵測的準確性,同時也利用亮度修正來 降低偵測錯誤。