1. 程式人生 > >演算法學習之膚色檢測

演算法學習之膚色檢測

 好的膚色模型要求選擇一個恰當的彩色空間,在此空間中膚色能團簇、聚合在一起,並且與非膚色的重疊部分要儘可能少。通過各色度空間中膚色聚類的結果比較發現,膚色在各空間中的聚類情況如下:在RGB彩色空間中,膚色與非膚色的重疊部分較多。因此RGB空間不適合構造膚色模型;在rgb彩色空間中的分佈情況(用r,g表徵)。由於色飽和度沒有被分離出來,rgb模型仍會受亮度的影響,因此有少量膚色點偏離了膚色的主要聚合區域;在HSV彩色空間中,由於HSV空間將色調、色飽和度及亮度很好的分離,膚色點能很好的聚集在一起,並且與非膚色點重疊的較少;在YCbCr彩色空間中可以看到,在YCbCr空間中,人臉膚色點非常好的團聚在一起,並且與非膚色點的重疊部分也不多,表現在CbCr子空間上,人臉膚色很好的聚集在一個類橢圓範圍內,而且在Cb、Cr分量上的分佈也比較集中,因此,CbCr空間[2]常用於人臉檢測。

3.2 色彩空間的轉換

 YCbCr顏色空間是作為膚色分佈統計的對映空間,該空間的優點是受亮度變化的影響較小,而且是兩維獨立分佈,能較好地限制膚色分佈區域,而且可以從RGB格式線性變化得到。YCbCr顏色空間是常見的膚色檢測方法,如果一個像點的Cb和Cr值滿足:133≤Cr≤173,並且77≤Cb≤127,則該像點被認為具有面板色。  對於RGB(8位表示的RGB)與YCbCr(256級別)之間的轉換如下: Y= 0. 299R+ 0. 587G+ 0. 114B Cb= 0. 5R- 0. 4187G- 0. 0813B+ 128               (1) Cr= - 0. 1687R- 0. 3313G+ 0. 5B+ 128       YCbCr(256級別)可以從8位RGB直接計算。

3.3 膚色模型

 膚色的聚類性使我們利用膚色縮小人臉檢測的範圍,實驗表明,不同人的膚色在色度上往往很相近,只是在亮度上差別較大,不同的膚色具有相同的2D Gaussian 模型。在YCbCr空間上由色度Cb和Cr構成的二維平面上膚色分佈是相對比較集中的,可以用Gauss分佈來描述。  訓練的時候,需要確定的是均值M和C。如下面的公式:                    均值M=E(x),x=[Cr,Cb ]                   協方差C=E((x-m)(x-m)T)             (2)  計算相似度時,我們採用了下面的公式:

                  P(Cb,Cr)=exp[-0.5(x-m)T

C-1(x- m)]         (3)

轉載自:http://blog.csdn.net/shangyaowei/article/details/17424537

HSV,YUV,YCbCr見部落格:http://blog.csdn.net/augusdi/article/details/8865275