2019年5月16日 星期四

s1051447的作業4

1072 CS362 影像處理概論 作業 4
1051447 梁雅錡
作業題目:
利用所學的顏色的知識,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。 


撰寫過程:
(1)   作業系統環境:Windows
(2)   程式語言:Python
(3)   程式開發軟體:Pycharm
(4)   開發環境:

開發環境名稱
使用情形
Python 3.6
採用Python 3.6編寫程式。
OpenCV.4.0.0.21
利用OpenCV 4.0.0.21的套件讀取讀片、對圖片進行各式轉換、以及存取圖片檔。
Numpy 1.15.4
使用Numpy 1.15.4調整圖片的各個像素變動。

Matplotlib2.1.2
Matplotlib2.1.2共同畫出原圖與皮膚偵測圖,也可存取所有輸出內容。

(5)   程式內容:
1.主要演算法是透過Human Skin Detection Using RGB, HSV and YCbCr Color Models 此篇論文中提到的 Skin Detection Algorithm,來進行實作。

2.使用cv2.imread('SkinDetection.jpg')讀取圖片

3.使用cv2.cvtColor(img, cv2.COLOR_BGR2HSV ),將圖片從RGB形式轉為HSV的形式

4.根據論文中第327~328提到的演算法,我會瀏覽image的每個像素,並針對每個像素進行RGB的特定顏色篩選,不在特定範圍內的像素就為非皮膚範圍,以黑色作為該像素的輸出,如左下圖所示;接著還會透過HSV的特定範圍也進行偵測,找到屬於皮膚的範圍,如右下圖所示。
5.在偵測為非皮膚的部分會使用到cv2.bitwise_and()函式,以作為AND的邏輯閘用途,將透過RGB與HSV分別偵測到的皮膚偵測圖合併,而被視為不是皮膚的範圍,會設為黑色來呈現(二值化)。

6.使用plt.show()以共同輸出原圖與皮膚偵測圖,結果如(6)的程式成果所示。

7.使用cv2.imwrite()存取每一個對圖像進行處理後的圖片。


(6)  程式成果:

    I.原圖



     II.皮膚偵測圖(用cv2.bitwise_and()函式,將透過RGB與HSV分別偵測到的皮膚偵測圖合併,被視為不是皮膚的範圍,會設為黑色來呈現(二值化))



      III.共同顯示(使用matplot共同輸出原圖與皮膚偵測圖)



(7)  儲存結果:
      如下圖所示,使用的是cv2.imwrite(),儲存每一個步驟輸出的影像,包括:原圖經RGB篩選出的皮膚偵測圖(非特定範圍內就以黑色輸出)、原圖經HSV篩選出的皮膚偵測圖(灰階)、上述兩個皮膚偵測圖以and邏輯閘合併的共同輸出圖。
                       



沒有留言:

張貼留言