利用你所學的顏色的知識,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。
二、實作環境:
- anaconda + python3.7
- opencv 3.4
三、執行結果:
以YCrCb的部分對圖片去進行處理->
四、過程說明:
以YCrCb的部分對圖片去進行處理->
將圖片讀入後只針對其Cr和Cb部分進行處理->
處理方式為Otsu的方式->
處理方式為Otsu的方式->
Otsu方法說明:
先計算影像的直方圖。
先計算影像的直方圖。
把直方圖強度大於閾值的像素分成一組,把小於閾值的像素分成另一組。
分別計算這兩組的組內變異數,並把兩個組內變異數相加。
將0~255依序當作閾值來計算組內變異數和,總和值最小的就是結果閾值。
考慮兩個值(Cr和Cb)的範圍後對應其閥值做skin的二值化->
考慮兩個值(Cr和Cb)的範圍後對應其閥值做skin的二值化->
最後利用得到的skin遮罩將其疊加在原圖上進行輸出
五、遇到問題:
其閥值range的挑選要多少
以及對應皮膚較黑的人或是相近於批膚色的東西(沙灘),效果不是那麼的明顯
以及對應皮膚較黑的人或是相近於批膚色的東西(沙灘),效果不是那麼的明顯
沒有留言:
張貼留言