1091442 homework#4
學號:1091442 姓名:李衍一
主題: 傅立葉轉換與影像復原處理
設計思路:
本次作業在論文Human Skin Detection Using RGB, HSV and YCbCr Color Models使用的膚色辨識法上稍加改動,實作出了可透過多種色彩空間分析出膚色像素區域的程式,並把分析結果和圖片的ground truth做IoU運算,求得程式的正確率。
程式解析:
先後選擇圖片及圖片的並傳入ground truth後將圖片分別轉換成HSI及RGBA空間,再從RGB中使用論文提及的公式運算出YCbCr色彩空間的數值。將每一格像素以三種不同色彩空間分別作條件判斷,以分析出膚色像素所在區域製成遮罩。
得到遮罩之後透過對遮罩與ground truth進行邏輯運算取得交集圖與聯集圖,轉換成數值後將交集除以聯集即可得到準確率。
成果展示:
1.
IoU:0.6054832076764908
2.
IoU:0.8827571351642434
3.
IoU:0.678703784761738
4.
IoU:0.7128458186781458
5.
IoU:0.7771909432628452
6.
IoU:0.6433137305037074
成果反省:
本次作業的流程和論文提供的流程有些許不一樣,把每個像素做一次色彩空間轉換變成轉換出色彩空間的圖後再一個一個像素去跑,主要是在程式撰寫上會比較省力,也比較直觀。
另外有件事情值得一提,在設置HSI和RGBA的條件判斷時都還能正常辨識,在加入YCbCr的條件後遮罩卻全部都被過濾掉了。一開始是拿Opencv的公式直接將圖轉換成YCbCr空間來用,徹查論文後才發現有另外寫公式來建立色彩空間,於是換成了論文給的公式。然而即便如此,遮罩上也沒有顯示任何東西,再徹查一遍論文後發現YCbCr的轉換公式沒有給出數值範圍,我對比條件和公式算出的數值上下限試了幾種範圍也還是一片漆黑。
到最後,我決定把YCbCr的每項條件獨立出來測試看是哪個出了問題,才發現論文給的判斷條件有誤。Cr <= (-1.15*Cb)+301.75與Cr <= (-2.2857*Cb)+432.85兩個條件式並非是大於等於,而應是小於或小於等於,即Cr > (-1.15*cb)+301.75、Cr > (-2.2857*Cb)+432.85才會正確圖片中的黑色及部分亮色區域去除,標示出皮膚的位置;同時若單以論文給的公式計算,會發現算出的數值遠遠小於條件式內的數值,Cb與Cr兩項變數必須加上數值下限的負數,使其範圍完全落在正值內才會符合條件判斷。
這份論文如此巨大的疏漏成功提醒了我以後製作論文時務必再三檢查,避免細節上的疏失及不到位,造成閱讀者的困擾甚至使自己的成果受到懷疑。
留言
張貼留言