採取的手段是分析手部區域的直方圖分佈,這個想法源自於:背景(人工)的分佈會比較均勻(狹長);而手掌(自然)的分佈會比較廣泛(常態)。例如下圖所示:這是在辦公室、日光燈光線充足的環境下,而手的分佈就落在右半邊。
至於選擇的 color space 是 YCbCr 的 Cr channel,因為膚色比較偏黃、紅。下圖是整個演算法的流程圖,當中做了以下幾件事情:
- Histogram Statistics & Smooth。
- Find Global Maximum。
- Find Local Maximum。
- Find Valley (Local Minimum)。
- Set-up Threshold & Create Skin Model。
以上所提的五個項目,當中參數的設置、做法,已經寫在投影片,在此不一一贅述,不過,由於測試的樣本數太少,會不會白光、黃光的分佈都這麼一致,還是個問號;另外「Set-up Threshold」的公式目前是:
比較合理應該是除以 225 取平均,只是,我為了將指尖(比較亮、比較黃、數量比較少)也拉進來,才除上 1000,這是有待商榷的。最後,補上兩張測試結果:(因為是統計像素,所以最好是框得剛剛好的)
程式碼與投影片下載
相關閱讀