1072 CS362 影像處理概論 作業 4
1051447 梁雅錡
作業題目:利用所學的顏色的知識,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。
撰寫過程:
(1) 作業系統環境:Windows
(2) 程式語言:Python
(3) 程式開發軟體:Pycharm
(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()存取每一個對圖像進行處理後的圖片。
III.共同顯示(使用matplot共同輸出原圖與皮膚偵測圖)
如下圖所示,使用的是cv2.imwrite(),儲存每一個步驟輸出的影像,包括:原圖經RGB篩選出的皮膚偵測圖(非特定範圍內就以黑色輸出)、原圖經HSV篩選出的皮膚偵測圖(灰階)、上述兩個皮膚偵測圖以and邏輯閘合併的共同輸出圖。
沒有留言:
張貼留言