張 輝,鄧?yán)^周,周經(jīng)緯,朱成順,劉李明,張勝文
(1.江蘇科技大學(xué) 機(jī)械工程學(xué)院,江蘇 鎮(zhèn)江 212003;2.江蘇科技大學(xué) 江蘇省船海機(jī)械裝備先進(jìn)制造重點實驗室,江蘇 鎮(zhèn)江 212003)
近年來,基于視覺的手勢識別由于具有操作簡單、自然的優(yōu)勢而成為人機(jī)交互領(lǐng)域研究熱點[1]。相比于基于模板匹配[2]、基于機(jī)器學(xué)習(xí)[3,4]等手勢識別方法,基于幾何特征的識別方法[5]在簡單背景的桌面應(yīng)用條件下具有計算簡單、識別速度快的優(yōu)點[6]。該方法主要利用手勢中的手指數(shù)目、角度、相對位置等特征進(jìn)行手勢的分類與判別。但是由于個體差異等原因,上述幾何特征即使在相同的手勢中依然存在較大范圍的變化,很難根據(jù)單一的幾何特征實現(xiàn)手勢的分類。為了提高該方法的識別率,許多學(xué)者從多角度考慮手勢幾何特征,將不同的幾何特征進(jìn)行組合來識別手勢。文獻(xiàn)[7,8]采用提取手勢指尖個數(shù)結(jié)合Hu特征的方法,構(gòu)建加權(quán)融合的特征距離,將待識別手勢與模板進(jìn)行相似度匹配來識別手勢。使用多種特征結(jié)合的手勢識別方法雖然可以獲得較高的手勢識別率,但會帶來特征數(shù)據(jù)變多,計算復(fù)雜的缺點。對此本文從多方面考慮手勢幾何特征,研究了一種分層的手勢識別算法,利用手勢幾何特征進(jìn)行手勢建模并分類,避免特征數(shù)據(jù)融合帶來計算復(fù)雜的問題,提高了手勢識別率。
本文基于幾何特征的手勢識別方法主要根據(jù)手指數(shù)、指間距以及指間夾角,具體的手勢識別算法流程如圖1所示。首先利用膚色信息將手勢區(qū)域與其它干擾區(qū)域進(jìn)行分割,獲得手勢圖像。其次對手勢圖像進(jìn)行形態(tài)學(xué)處理[9],統(tǒng)計出手指數(shù)。根據(jù)手指數(shù)的不同,將手勢識別拆分為兩層。層1對于某些特定的手勢,其僅依靠手指數(shù)目即可完全判別,此時直接輸出識別結(jié)果。層2是在層1的基礎(chǔ)上,提取指間距以及指間夾角作為特征參數(shù),與標(biāo)準(zhǔn)模板進(jìn)行匹配,實現(xiàn)對手勢的進(jìn)一步識別。
圖1 手勢識別算法流程
作為手勢識別的關(guān)鍵步驟,手勢區(qū)域檢測就是將場景圖像進(jìn)行分割,獲得手勢圖像。與其它干擾目標(biāo)相比,人手最明顯的特征就是膚色,因此可以利用膚色信息進(jìn)行手勢分割。本文在相對簡單的桌面應(yīng)用背景下獲取場景圖像,選用HSV(hue-saturation-value)色彩空間將場景圖像亮度信息分離,利用人體膚色信息,對場景進(jìn)行分割,排除非膚色物體的干擾,實現(xiàn)手勢區(qū)域的檢測。在HSV色彩空間中,用色度H、飽和度S和亮度V對色彩進(jìn)行量化表示,符合人眼的直觀特性[10]。將圖像從RGB彩色空間轉(zhuǎn)換到HSV彩色空間采用如下公式
(1)
根據(jù)文獻(xiàn)[11],在HSV顏色空間中檢測膚色時,人類的膚色區(qū)域像素應(yīng)滿足
2≤H≤28,50≤S≤200
(2)
利用上述膚色分割獲得的場景二值圖像往往會存在噪聲、孔洞及其它無關(guān)區(qū)域,對此需要去除無關(guān)區(qū)域的干擾。由于在膚色分割過后手部區(qū)域成為場景二值圖中的主要部分,通過邊緣檢測算法對手勢圖像進(jìn)行輪廓檢測,將檢測到的最大輪廓作為手勢圖像繪制輸出,其過程如圖2所示。
圖2 手勢圖像檢測流程
手勢識別方法在上述獲得的手勢圖像中進(jìn)行,包括手勢幾何特征的提取、建模與分類,進(jìn)而實現(xiàn)手勢的識別。其中本文幾何特征主要包括手勢圖像中手指數(shù)目以及利用指間距和指間夾角參數(shù),同時利用分層識別的思想實現(xiàn)手勢結(jié)果最終判定。其中,對于可以根據(jù)手指數(shù)目進(jìn)行唯一判定的手勢圖像可以直接輸出結(jié)果。對于相同手指數(shù)目的不同手勢圖像來說,可根據(jù)指間距以及指間夾角的不同進(jìn)行二次判定。
本文基于手勢幾何特征,實現(xiàn)手勢圖像的識別,因此對手指數(shù)的檢測是實現(xiàn)分層策略的前提[12]。手指數(shù)的檢測方法包含以下步驟:
(1)對上述步驟獲得的手勢圖像進(jìn)行開運算操作,獲得手掌區(qū)域圖像。其中結(jié)構(gòu)元素為半徑為15像素的圓;
(2)將手勢圖像與步驟(1)的手掌圖像進(jìn)行差運算,得到手指區(qū)域圖像;
(3)對于步驟(2)中得到的手指區(qū)域圖像進(jìn)行腐蝕操作,去除小連通區(qū)域以及其它噪聲干擾,此時統(tǒng)計出連通區(qū)域的個數(shù)即為手指數(shù)。
(1)根據(jù)統(tǒng)計手勢圖像中連通域的個數(shù)作為手指數(shù)m,當(dāng)m∈{2,3,4}時,此時單憑手指數(shù)無法直接輸出識別結(jié)果,仍需提取手勢指間距以及指間夾角作為判定依據(jù);
(2)構(gòu)建手指區(qū)域的最小矩形包圍盒,其中包圍盒中心為該手指的質(zhì)心位置,計算任意兩個包圍盒的質(zhì)心距離d,以最大的質(zhì)心距離作為該手勢圖像的指間距;
(3)以手勢圖像中最外側(cè)的兩個矩形包圍盒最外側(cè)的兩個邊所在的直線構(gòu)建向量,計算兩個向量之間的夾角,作為手勢圖像的之間夾角θ;
圖3 特征提取
為了驗證本文提出識別方法的有效性,本文采用如圖4所示的9種靜態(tài)手勢作為識別對象。為了便于區(qū)分,將圖4中的手勢進(jìn)行如下編號:圖(a)、圖(b)、圖(i)這3種類型手勢分別用0、1、5表示,圖(c)~圖(h)這6種類型手勢分別用2-1、2-2、3-1、3-2、4-1、4-2表示。編號首位代表手指數(shù),而第二位代表相應(yīng)手指數(shù)下的手勢類型號。實驗中,10位實驗對象在相同環(huán)境下做出9種手勢圖像,其中每種手勢均以不同角度呈現(xiàn)于桌面背景中,每類手勢圖像采集5次,總共450幅圖像。
圖4 實驗手勢
本文借助OpenCV(open source computer vision library)視覺庫進(jìn)行相關(guān)的圖像處理操作。OpenCV封裝了多種通用算法用于實現(xiàn)計算機(jī)圖像處理,成為視覺領(lǐng)域中最有力的研究工具之一。
在實驗中,根據(jù)分層策略實現(xiàn)手勢圖像的識別。首先統(tǒng)計出手勢圖像中的手指數(shù)目,根據(jù)手指數(shù)目對需要進(jìn)一步判斷的圖像使用上述提出的手勢模型參數(shù),進(jìn)行最終判定。根據(jù)上節(jié)提出的手勢建模方法,對需要進(jìn)一步判別的手勢圖像進(jìn)行特征提取,構(gòu)建手指包圍盒,計算指間距以及指間夾角,得到手勢特征值。本文以圖4所示的手勢圖作為標(biāo)準(zhǔn)手勢圖像,采用相同方法計算標(biāo)準(zhǔn)手勢特征值Ki-j,同時考慮到個體的差異對于手勢特征值提取帶來的誤差,對實際獲得的手勢特征K′i-j按照表1中設(shè)置的閾值對手勢進(jìn)行判定。
表1 手勢特征范圍劃分
圖5 手勢特征值
首先按照本文的手指檢測算法可以成功獲得所有手指個數(shù),對編號為0、1、5的手勢識別率可以達(dá)到100%。然后對編號為2、3、4手勢進(jìn)行進(jìn)一步識別。如圖5所示,在第二層中,利用本文提出的分層手勢識別方法將手指數(shù)目為2、3、4的6種手勢分為3個小類,在每個小類下只有兩種手勢的存在,成功將多目標(biāo)分類利用分層策略變成兩項分類,降低了基于幾何特征的手勢識別難度。
為了對比實驗結(jié)果,使用傳統(tǒng)的基于Hu矩特征的模板匹配法[13]與本文方法進(jìn)行比較。同樣,模板匹配法也使用上述的手勢圖像組,并且取本文采集標(biāo)準(zhǔn)手勢特征所用的手勢圖像作為標(biāo)準(zhǔn)模板。計算手勢輪廓Hu矩值,取其中抗噪聲干擾較好的4個值作為手勢特征值,采用歐式距離作為模板匹配時的相似度評價,以最小值對應(yīng)的模板手勢作為識別結(jié)果,將此模板匹配法作為方法I。此外利用本文的手指數(shù)檢測方法先進(jìn)行手勢的初步分類,對于需進(jìn)一步分類的手勢使用模板匹配法進(jìn)行識別,將此方法作為方法II,進(jìn)行比較。表2給出了3種手勢識別方法對于9種手勢的最終識別結(jié)果。
表2 手勢識別率
從表2可以看出,在單獨使用Hu特征進(jìn)行模板匹配的方法I中,識別率隨著手勢的不同有著很大差距,總體處于一個相對較低水平。方法II利用分層的識別方法,在手指數(shù)識別的基礎(chǔ)上進(jìn)行模板匹配,只需與該數(shù)目下的兩個模板進(jìn)行相似度匹配,使得識別率相比較方法I得到了明顯的提高。然而在同樣進(jìn)行分層識別的情況下,模板匹配法的識別率不如本文構(gòu)建的手勢模型識別率高,雖然隨著手指數(shù)目的增多,每個小類下的兩種手勢的特征值差距會有所降低,但使用本文方法仍能夠保持識別率在90%以上。
本文對基于幾何特征的桌面靜態(tài)手勢識別方法進(jìn)行了研究。在簡單的桌面背景下,針對單一幾何特征對手勢識別準(zhǔn)確率帶來不利的影響,提出了分層的思想,將手勢識別分成兩個步驟。首先,利用膚色模型對手勢圖像進(jìn)行分割,其次根據(jù)設(shè)置的閾值統(tǒng)計封閉輪廓面積作為手指數(shù)。對于某些特定的手勢僅根據(jù)手指的數(shù)目多少就可以做出唯一判據(jù),直接輸出識別結(jié)果。否則,在此基礎(chǔ)上,構(gòu)建手勢模型,計算出手勢指間距以及指間夾角,并進(jìn)行模板匹配,從而得到最終的識別結(jié)果。本文設(shè)計的識別算法能夠識別預(yù)定義的9種自然手勢類型,簡單有效,能夠滿足桌面靜態(tài)手勢識別的需求。