Pages

2010年5月31日 星期一

自動膚色偵測

  之前介紹過幾篇與膚色模型相關的文章,這次,我打算即時地去找符合當下的膚色分佈,為了因應在不同外在環境對膚色造成的影響,例如:白光、黃光等。

  採取的手段是分析手部區域的直方圖分佈,這個想法源自於:背景(人工)的分佈會比較均勻(狹長);而手掌(自然)的分佈會比較廣泛(常態)。例如下圖所示:這是在辦公室、日光燈光線充足的環境下,而手的分佈就落在右半邊。

  
  至於選擇的 color space 是 YCbCr 的 Cr channel,因為膚色比較偏。下圖是整個演算法的流程圖,當中做了以下幾件事情:
  1. Histogram Statistics & Smooth。
  2. Find Global Maximum。
  3. Find Local Maximum。
  4. Find Valley (Local Minimum)。
  5. Set-up Threshold & Create Skin Model。

  以上所提的五個項目,當中參數的設置、做法,已經寫在投影片,在此不一一贅述,不過,由於測試的樣本數太少,會不會白光、黃光的分佈都這麼一致,還是個問號;另外「Set-up Threshold」的公式目前是:
  
  比較合理應該是除以 225 取平均,只是,我為了將指尖(比較亮、比較黃、數量比較少)也拉進來,才除上 1000,這是有待商榷的。最後,補上兩張測試結果:(因為是統計像素,所以最好是框得剛剛好的)

黃光(光線充足)

白光(光線充足)

程式碼與投影片下載

相關閱讀

1 則留言:

Eric 提到...

含有UI的部份 .. (download)

 
Blogger Templates