王思霖
(信陽(yáng)農(nóng)林學(xué)院信息工程學(xué)院 河南 信陽(yáng) 464000)
隨著機(jī)器學(xué)習(xí)領(lǐng)域的發(fā)展,硬件處理能力的迅速提高,基于人工智能的人體特征識(shí)別技術(shù)快速進(jìn)步,包括人臉識(shí)別、手勢(shì)識(shí)別、身體姿態(tài)識(shí)別等。近年來(lái),手勢(shì)識(shí)別已成為圖像識(shí)別領(lǐng)域的一個(gè)重要研究分支,其技術(shù)也逐漸被應(yīng)用于多種場(chǎng)景中的人體交互系統(tǒng)[1]。例如利用手勢(shì)控制智能家居、汽車(chē)智能輔助駕駛中利用手勢(shì)操作汽車(chē)的各種功能、視頻直播中通過(guò)手勢(shì)添加動(dòng)畫(huà)特效等。目前的手勢(shì)識(shí)別技術(shù)多數(shù)是基于機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)的,將包含手部圖像的圖像數(shù)據(jù)直接作為數(shù)據(jù)源來(lái)對(duì)模型進(jìn)行訓(xùn)練[2],訓(xùn)練完成后,通過(guò)將手勢(shì)圖像作為模型的輸入來(lái)預(yù)測(cè)圖像中手勢(shì)的類(lèi)別,從而達(dá)到識(shí)別手勢(shì)的目的。但因?yàn)榘植康膱D像數(shù)據(jù)常具有較大的數(shù)據(jù)量,以圖像數(shù)據(jù)直接作為模型輸入會(huì)導(dǎo)致例如模型訓(xùn)練時(shí)間長(zhǎng)、對(duì)硬件性能具有高依賴性等問(wèn)題的產(chǎn)生。為了解決這個(gè)問(wèn)題,本文提出了一種基于圖像處理的,在圖像中提取手部輪廓的方法,該方法能夠大幅度縮減圖像數(shù)據(jù)量。使用只包含手部輪廓像素的圖像數(shù)據(jù)代替原始圖像數(shù)據(jù)作為模型的數(shù)據(jù)輸入,可以達(dá)到縮短模型訓(xùn)練時(shí)長(zhǎng),降低其對(duì)硬件性能依賴的目的。
本方法的設(shè)計(jì)思路如圖1所示。在讀取包含手部的圖像后,因?yàn)閳D像的默認(rèn)色彩空間為RGB,為了方便下一步的膚色檢測(cè),需要轉(zhuǎn)化成HSV色彩空間。轉(zhuǎn)換之后的圖像需要對(duì)其中的像素進(jìn)行掃描,將滿足HSV膚色檢測(cè)約束條件的像素保留,其余不滿足條件的像素丟棄。將膚色檢測(cè)過(guò)濾后的圖像轉(zhuǎn)換為二值圖像(只有黑白兩色),利用輪廓提取算法找出圖像中的輪廓邊緣。雖然圖像中的像素已經(jīng)過(guò)膚色檢測(cè)的過(guò)濾,但難免會(huì)有符合膚色檢測(cè)約束條件的非膚色像素,因此可能會(huì)出現(xiàn)除了手部輪廓外的其他輪廓也被提取到的情況。但通常來(lái)說(shuō)圖像中的手部輪廓從尺寸上來(lái)說(shuō)是最長(zhǎng)的,因此可以通過(guò)比較找到包含像素個(gè)數(shù)最多的輪廓作為手部輪廓。
色彩空間(顏色模型)是用來(lái)描述顏色的一種數(shù)學(xué)模型,利用該模型可以通過(guò)數(shù)值的方式來(lái)準(zhǔn)確地描述自然界中的顏色,常用的色彩空間有RGB色彩空間、HSV色彩空間和YCbCr色彩空間等。同一種顏色可以通過(guò)不同的色彩空間去描述,并且可以基于公式在不同的色彩空間中進(jìn)行數(shù)值轉(zhuǎn)換。
2.1.1 RGB色彩空間
RGB色彩空間被廣泛應(yīng)用于電子系統(tǒng)中且通常作為數(shù)碼圖片的默認(rèn)存儲(chǔ)和表示方式,任何色彩都可以通過(guò)混合紅、綠、藍(lán)這三種基本色來(lái)獲得[3],具體得到什么顏色取決于三種基本色混合的比例。相反,任何一種顏色也都可以分解表示為紅、綠、藍(lán)三種顏色分量,各分量的取值范圍為0至255。通過(guò)RGB色彩空間,數(shù)碼圖片中的每一個(gè)像素點(diǎn)的顏色都可以通過(guò)紅、綠、藍(lán)三種顏色分量來(lái)進(jìn)行準(zhǔn)確表示,見(jiàn)圖2。
2.1.2 HSV色彩空間
HSV色彩空間是RGB色彩空間在圓柱坐標(biāo)系中的表示方法,相對(duì)于RGB色彩空間,它在顏色體驗(yàn)上更符合人類(lèi)的直覺(jué)。HSV由色相(H)、飽和度(S)和明度(V)三種分量組成[4],其中色相(H)是色彩的基本屬性,飽和度(S)是指色彩的純度,值越高表示色彩越純,值越低色彩逐漸變灰,明度(V)表示亮度,見(jiàn)圖3。
2.1.3 YCbCr色彩空間
YCbCr色彩間常用于圖像處理。YCbCr色彩空間中的顏色由Y、Cb、Cr三種分量進(jìn)行表示,其中Y代表亮度,Cb代表藍(lán)色分量,Cr代表紅色分量,見(jiàn)圖4。
2.1.4 RGB色彩空間與HSV色彩空間的轉(zhuǎn)換公式
RGB色彩空間可以通過(guò)以下公式轉(zhuǎn)換為HSV色彩空間:
膚色檢測(cè)是一種在數(shù)字圖像中識(shí)別膚色像素和非膚色像素的技術(shù),在人臉識(shí)別、手勢(shì)識(shí)別等計(jì)算機(jī)視覺(jué)領(lǐng)域有廣泛應(yīng)用[5]。膚色檢測(cè)的原理是基于像素的顏色分類(lèi)器,通過(guò)圖形分割、前景提取、色彩判斷等方式過(guò)濾出圖像中的皮膚像素區(qū)域。本方法采用了基于HSV色彩空間的膚色檢測(cè)方法,通過(guò)約束條件來(lái)過(guò)濾出圖像中的膚色像素?,F(xiàn)有研究成果表明,人體膚色在HSV色彩空間中的約束條件為:
條件1:3<H<23
條件2:28<S<256
條件3:50<V<256
該檢測(cè)方法會(huì)對(duì)色彩空間為HSV的圖像中的像素逐個(gè)掃描并判斷其是否符合上述約束條件,符合條件則判定為膚色像素并保留該像素,不符合條件則會(huì)被過(guò)濾掉。當(dāng)所有像素都被掃描完成時(shí),圖像中會(huì)只剩下膚色像素。
因?yàn)楸痉椒ú捎玫妮喞崛∷惴ㄐ枰祷瘓D像作為輸入,因此需要將膚色檢測(cè)過(guò)濾后的圖像進(jìn)行二值化處理。圖像二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0(黑色)或255(白色),也就是將灰度圖像轉(zhuǎn)換為黑白圖像的過(guò)程。如果像素的灰度值大于閾值,則將其轉(zhuǎn)換為白色[6]。如果像素的灰度值小于閾值,則將其轉(zhuǎn)換為黑色。在圖像處理中,二值圖像有重要的作用,二值化可以明顯地降低圖像的數(shù)據(jù)量,并且能突出目標(biāo)的輪廓。
輪廓提取采用了邊界跟蹤算法,該算法用于數(shù)字化二值圖像的拓?fù)浣Y(jié)構(gòu)分析,能夠獲取二值圖像的邊界的包圍關(guān)系。該算法適用于二值圖像的輪廓提取,因此在提取圖像手部輪廓前需要將圖像進(jìn)行二值化處理[7-8]。該算法流程為:
(1)對(duì)輸入的二值化圖像進(jìn)行掃描,從上到下,從左到右,尋找滿足邊界條件的點(diǎn),如果該點(diǎn)同時(shí)滿足外邊界起始點(diǎn)和孔邊界起始點(diǎn)的條件,則將該點(diǎn)看作外邊界跟蹤起始點(diǎn)。
(2)找到邊界跟蹤起始點(diǎn)后,執(zhí)行邊界跟蹤,找到完整邊界。
邊界點(diǎn)的定義存在兩種情況。第一種情況,在四連通的情況下,如圖5中(一)所示,一個(gè)1像素點(diǎn)在它的八個(gè)鄰域內(nèi)存在一個(gè)0像素點(diǎn),則稱(chēng)該1像素點(diǎn)為邊界點(diǎn)。第二種情況,在八連通的情況下,如下圖5中(二)所示,一個(gè)1像素點(diǎn)在它的四鄰域內(nèi)存在一個(gè)0像素點(diǎn),則稱(chēng)該1像素點(diǎn)為邊界點(diǎn)[9]。其中0像素點(diǎn)指的是灰度值為0的像素點(diǎn),1像素點(diǎn)指的是灰度值為1的像素點(diǎn)。
硬件環(huán)境:
中央處理器為3500X 3.60 GHz,內(nèi)存為16 G。
軟件環(huán)境:
編程語(yǔ)言為Python3.9.5,圖像處理庫(kù)OpenCV4.5.5。
(1)輸入包含手部的原始圖像。
(2)將圖像的色彩空間從RGB轉(zhuǎn)為HSV。
(3)通過(guò)HSV膚色檢測(cè)約束條件過(guò)濾圖像中的像素。
(4)將膚色檢測(cè)過(guò)濾后的圖像進(jìn)行二值化處理。
(5)在二值圖像中尋找手部輪廓(包含像素點(diǎn)個(gè)數(shù)最多的輪廓)。
下圖為實(shí)驗(yàn)過(guò)程中各個(gè)步驟的圖像。
第一步,如圖6中(一)所示,包含手部圖片的原始圖像默認(rèn)的色彩空間是RGB,所以在輸入后需要將色彩空間被轉(zhuǎn)化為HSV,如圖6中(二)所示。
第二步,HSV色彩空間的圖像通過(guò)膚色檢測(cè)過(guò)濾后只保留了手部區(qū)域的像素,如圖6中(三)所示。
第三步,只包含手部區(qū)域像素的圖像被轉(zhuǎn)化為二值圖像,如圖6中(四)所示。
最后,利用邊界跟蹤算法找到手部輪廓,如圖6中(五)所示。
表1展示了原始圖像與提取輪廓后的圖像的數(shù)據(jù)量大小對(duì)比,從數(shù)據(jù)可以看出,提取輪廓后的圖像量?jī)H有原始圖像的1.2%,這表明在保留手部輪廓信息的條件下將圖像數(shù)據(jù)量降低了98.8%,數(shù)據(jù)量減少效果明顯。
表1 圖像數(shù)據(jù)量對(duì)比
本文提出了一種基于圖像處理和邊界跟蹤算法的手部輪廓提取方法,在包含手部的原始圖像輸入后,經(jīng)過(guò)轉(zhuǎn)換色彩空間、膚色檢測(cè)過(guò)濾、二值化處理等圖像處理步驟對(duì)原始圖像進(jìn)行處理。處理后的圖像使用邊界跟蹤算法找出其中的手部輪廓,最終得到只保留手部輪廓的圖像。手部輪廓信息可以直接作為判斷手勢(shì)類(lèi)別的依據(jù),因此只保留手部輪廓的圖像可以代替原始圖像作為機(jī)器學(xué)習(xí)模型的數(shù)據(jù)輸入[10]。后經(jīng)實(shí)驗(yàn)驗(yàn)證,只保留手部輪廓的圖像在數(shù)據(jù)量上相對(duì)原始圖像有大幅度的縮減,因此使用只保留手部輪廓的圖像作為模型的數(shù)據(jù)輸入可以有效地降低模型的訓(xùn)練時(shí)間和對(duì)硬件性能的要求。