2021年5月15日 星期六

s1071543影像處理作業4

 利用你所學的顏色知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。


程式語言:Python 3.7.3 64-bit


開發環境:

  • Arch Linux x86_64
  • Visual Studio Code
  • OpenCV 3.4.2


實作方法與演算法:

原圖:



本次實作分別使用兩種演算法,分別是

    1. Proposed Skin Detection Algorithm 
得出圖片的RGB、HSV、YCrCb,將這些值做filter後得出結果。
filter: 
0.0 <= H <= 50.0 and 0.23 <= S <= 0.68 and R > 95 and 
G > 40 and B > 20 and R > G and R > B and | R -G | > 15 and
A > 15
OR
R > 95 and G > 40 and B > 20 and R > G and R > B and 
| R -G | > 15 and A > 15 and Cr > 135 and Cb > 85 and Y > 80 and  
Cr <= (1.5862*Cb)+20 and Cr>=(0.3448*Cb)+76.2069 and
Cr >= (-4.5652*Cb)+234.5652 and Cr <= (-1.15*Cb)+301.75 and
Cr <= (-2.2857*Cb)+432.85
其中的A為透明度,未用到所以在這裡移除
結果圖:
                     
Mask:


2.多模態膚色機率模型
首先準備其他圖片並先手工將皮膚部分取出,計算皮膚部分在HSV色域的機率模型,n種     圖片有n種模型,接著在偵測的時候比對各個機率模型得出機率值,當機率值超過一定       閥值則會判斷為皮膚。
結果圖:
Mask:
兩者比較:
           
<-演算法1    演算法2->

Reference:

arXiv:1708.02694 [cs.CV]

利用多模態膚色機率模型之膚色偵測


 
 

沒有留言:

張貼留言