第三章 以 SVM 為基礎之手部影像辨識
第三節 影像前處理
使用一張背景模型與目前手部影像,做互相減去之後,就可以求出其差異圖。差異 圖即為原本不存在背景之中的手部影像,又稱為前景物體。設定一門檻值(T),將背景 模型與目前影像相減之後的像素值。若大於門檻值(T)則將該點的像素值保留下來。背 景相減的優點在於相減過後,可以取得較為完整前景物體,缺點是在於相減過後,仍會 有許多雜訊保留下來。
圖 28:背景模型
26
圖 29: 手部影像
圖 30: 相減之後的影像差異圖
二、Skin Detection
一般數位彩色影像中的像素是透過 R、G、B 三原色所組合而成的,也就是使用最 原始的 RGB 色彩空間來儲存。但由於 RGB 色彩空間對於光源的較為敏感,為了降低光源 所造成的影響,使用 YCbCr 色彩空間做膚色偵測之處理。RGB 色彩空間的圖像大小為 1024x768,一共有 786432 點像素點,將相減之後的影像差異圖,利用公式(3)化簡為公 式(4)做 RGB 轉 YCbCr 的矩陣轉換,計算後得到了 Cb、Cr 的數值範圍,Cb 與 Cr 則是 RGB
27
色彩模型中,B(藍色)和 R(紅色)像素值的濃度偏移量成份。
圖 31: YCbCr 色彩空間的 Cb 數值範圍
圖 32: YCbCr 色彩空間的 Cr 數值範圍
如圖 31、圖 32 所示,透過圖示可以發現 Cb 的最大值為 124,Cr 的最大值為 133,因此,
本論文以 Cb、Cr 的第一高波峰與第二高波峰的波寬,作為膚色切割的參數測試,Cb 與 Cr 則是 RGB 色彩模型中,B(藍色)和 R(紅色)像素值的濃度偏移量成份。而將 RGB 轉換 到 YCbCr 時,人的膚色,將會集中在某個範圍值(Cb、Cr),近年許多膚色偵測的研究,
[6][11][12][13]都以此做為研究的參考基礎。
28
表 2:參數測試 第一高波峰
(最大值)
第一高波峰 (波寬範圍)
第二高波峰 (最大值)
第二高波峰 (波寬範圍)
Cb 124 118~131 116 112~117
Cr 133 124~139 154 143~160
圖 33:以 Cb、Cr 第一高波峰(波寬範圍)作為參數的膚色切割
圖 34:Cb、Cr 第二高波峰(波寬範圍)作為參數的膚色切割
29
如圖 33、圖 34 所示,透過圖示可以發現單以一個波寬作為膚色偵測的效果,無法 確實把手部皮膚範圍順利切割。
圖 35:以 Cb、Cr 平均數作為參數的膚色切割
因此以 Cb、Cr 高於平均數的值,作為膚色切割的參數依據,從以圖 33、圖 34、圖 35 發現,Cb、Cr 參數若取的不好,對於膚色切割的影響,則佔有相當的比重。
三、灰階化
使用公式(1)化簡為公式(2),將膚色偵測之後保留的手部物件做灰階化的轉換,而 進行灰階化主要目的能有效減少所需要處理的手部物件資訊量,以利之後的影像處理,
圖 36 為做為背景相減與 RGB 轉換到 YCbCr 膚色切割所保留下來的手部,圖 37 則是將 圖 38 進行灰階化轉換之後的手部物件,灰階影像是指每一個像素點(Pixel)只用一個像 素值表示,其數值範圍介於 0~255 之間,從暗點黑色(0)到亮點白色(255),一共有 256 種灰度深淺表示。
30
圖 39: 灰階化之前的手部物件。
圖 40: 灰階化之後的手部物件。
四、二值化
將做完灰階化轉換的手部物件,進行二值化。二值影像是指每一個像素點(Pixel) 只用一個像素值表示,其數值範圍介於 0~1 之間為暗點黑色(0)到亮點白色(1)。只有兩 種變化,因此,稱為二值影像。而將灰階影像轉換為二值影像的公式,本論文採用的二 值化演算法為 OTSU 演算法,經由 OTSU 演算法計算後,便可以得到分割閥值(threshold
31
value),該圖片的灰度值低於此分割閥值時,便將其設為暗點黑色(0)。反之則設為亮 點白色(1)。
進行二值化的主要目的就是讓灰階化後的手部物件,產生明顯的暗、亮效果,將具 有 0~255 個灰度等級的手部物件,使用分割閥值(threshold value)劃分後,取得仍然 可以反映整體手部物件與特徵如圖 39 二值化之後的手部物件,可以有效的減少所需要 處理的手部物件資訊量,以利之後 Morphology 的影像處理。
圖 41:二值化之前的手部物件。
32
圖 42:二值化之後的手部物件。
五、Morphology
形態學(Morphology),為數位影像處理經常應用的處理方式,目的在於進行分離背 景與所需擷取的物件,所造成的雜訊與破碎。針對雜訊進行斷開(Opening)運算,針對 破碎進行閉合(Closing)運算。而形態學(Morphology)演算法之應用基礎,大多建立於 侵蝕(Erosion)運算與膨脹(Dilation)運算之上。
由於每次拍攝手部手勢時,不太可能有機會每次的光線亮度、背景、膚色都完全一 樣,因此在背景相減、膚色偵測時,會造成背景雜訊的干擾與手部物件破碎情形發生,
所以本論文使用公式(5)針對背景雜訊干擾的進行消除,使用公式(6)針對手部物件破碎 情形進行填補,圖 43 為執行斷開運算之前,在紅色圓圈標示處標示具有雜訊干擾的部 分,圖 44 即為執行斷開運算過程之後消除雜訊干擾的結果,而圖 45 為執行閉合運算 之前,在紅色圓圈標示處標示,在手部(主體)物件上具有破碎的部分、圖 46 即為執行 閉合運算過程之後填補破碎部分的結果。
33
圖 47:具有雜訊的手部物件
圖 48:斷開運算後的手部物件
34
圖 49:具有破碎的手部物件
圖 50:閉合運算後的手部物件
六、剔除超過 ASL 手語樣板的多餘手臂特徵
從圖 20 中發現,完整的 ASL 手語樣板,包含的手臂部份,並不多,所以必須將超 過 ASL 手語樣板的多餘手臂特徵,進行剔除。對此部份,本論文提出剔除多餘手臂特徵 的演算法,以求減少多餘的資訊量,如此才不會對於辨識的正確率造成過多的影響,圖
35
51 在紅色圓圈的標記處即為需要剃除的多餘手臂特徵。
圖 52: ASL 手語樣板
剔除多餘手臂特徵演算法如下:
Stage1:Intput:輸入手部物件。
Step1:計算出每條存在手部物件上,且斜率為 0 的連續線段。
(1)選取 Lmax:即為在手部物件中最長的連續線段。
Step2:與 Lmax 之下的每條連續線段相減。
(1)選取 Lmin:與 Lmax 相減之後,差值最大的連續線段。
Step3:將 Lmin 之下的每條連續線段,剔除。
Stage2:Output:輸出剔除多餘手臂特徵的手部物件。
36
圖 53:輸入手部物件
圖 54:選取出最長的連續線段(Lmax)
37
圖 55:將 Lmin 之下的每條連續線段,剔除
圖 56:輸出剔除多餘手臂特徵的手部物件
圖 57 為依據雜訊干擾或手部(主體)破碎程度條件,進行斷開運算或閉合運算之後 的手部物件,圖 58 為找手部(主體)距離最長的水平線段 Lmax,圖 59 為剔除在 Lmin 之下的手部部分,以紅色標示其該剃除區域,依照人體正常範圍,手掌與手臂連接的手 腕關節附近,比手掌與手臂還要細,因此以此作為手掌與手臂的分割線即為演算法中的 Limn,而圖 60 為剔除手腕關節之下多餘的手臂延伸部分的輸出。
38
七、校正手部物件偏移角度
每次拍攝影像的角度與手部擺放的位置,皆不太可能,可以達到完全相同。因此將 手部物件做偏移角度的校正,使得每張手部影像的中心,皆可以相符,以求修正不同拍 攝影像的角度與手部擺放的位置,偏移的物件,做中心調整,有助於正確辨識率的提升。
對此部份,本論文提出剔除多餘手臂特徵的演算法,調整物件重心做法為先計算出 畫面的中心與物件的中心,將兩中心相減,可得出△X、△Y 之偏移量,再利用此偏移量 與物件的每一點像素點座標做運算,進行物件中心的調整,如此才不會對於辨識的正確 率造成過多的影響。
校正手部物件偏移角度演算法如下:
Stage1:Intput:輸入手部物件。
Step1:計算 Scenter:整體畫面的中心點(xs,ys),xs = 整體畫面的寬÷2,
ys = 整體畫面的長÷2。
Step2:計算 Ocenter:手部物件的中心(xo,yo),xo = 整體畫面的寬÷2,
yo = 整體畫面的寬÷2。
Step3:將 Scenter(xs,ys)與 Ocenter(xo,yo)相減,得出△X、△Y。
Step4:△X、△Y 與物件的每一點像素點座標做運算。
Step5:進行物件偏移角度的調整。
Stage2:Output:輸出校正偏移角度的手部物件。
39
圖 61: 輸入手部物件(示意)
圖 62: 計算出畫面的中心(示意)
40
圖 63: 計算出手部物件的中心(示意)
圖 64: 進行手部物件偏移角度的調整(示意)
41
圖 65: 輸入手部物件(實際)
圖 66: 計算出畫面的中心(實際)
42
圖 67: 計算出手部物件的中心(實際)
圖 68: 進行手部物件偏移角度的調整(實際)
圖 69~圖 70 為校正手部物件偏移角度演算法執行步驟之示意圖,圖 71 為實際執 行輸入的手部物件,圖 72 為計算出整體畫面的中心(xs,ys),紅色標記線為水平軸、綠 色標記線為垂直軸,圖 73 為計算出手部物件的中心(xo,yo),圖 74 為整體畫面的中心 (xs,ys與手部物件的中心(xo,yo)相減之後,運用△X、△Y 與手部物件的每一點像素點座 標做運算之後的校正偏移角度輸出。
43
八、正規化
由於每次拍攝的攝影器材,不盡相同,所以將每ㄧ張經過數位影像前處理的手部物 件,進行正規化,將其縮放為同一大小比例修正,如此才不會對於辨識的正確率造成過 多的影響。本論文所縮放的手部物件圖像,長、寬為 32x32,圖像像素點一共為 1024 點,如此一來就可以降低手部物件進行 SVM 特徵向量抽取的運算時間。NRangemax:正 規化範圍的最大值。NRangemix:正規化範圍的最小值。ORangemax:物件範圍的最大值。
ORangemax:物件範圍的最小值。O:物件當前的範圍值。正規化(Normalization)的公
Normalizat N
O
44
圖 76: 正規化後 32x32 的手部物件