田 元,王學璠,王志鋒,陳 加,姚 璜
(華中師范大學 教育信息技術學院,湖北 武漢 430079)
在人機交互中,手勢能生動表達大量交互信息。目前,手勢識別主要有依靠穿戴設備的方法[1,2]和利用RGB攝像頭的方法[3-8]。依靠穿戴設備能準確提取手勢且有較高辨識度,如MAZUMDAR D提出的基于顏色手套的識別方法[1],用戶穿戴特殊紅色手套進行手勢識別,但這對手部活動造成不便,無法識別用戶指尖。利用RGB攝像頭的識別方法主要有:基于膚色模型和基于分類學習的識別方法。基于膚色模型的手識別方法通過皮膚顏色分割手部進行識別,如張文清等提出的一種基于手勢識別的智能輸入[5],雖然識別率較高但易把與膚色相近部位判斷為手部;俞博等提出的基于手指角度的方法[6],該方法依賴光照,易受背景影響。基于分類學習的識別方法主要運用HMM、Adaboost學習等算法結合SIFT等特征進行識別,識別率高,如李東潔等提出的BP神經網絡和PSO算法相結合的識別方法[7],這種方法需采集大量樣本、訓練時間長、效率較低。
許多研究者利用深度信息研究手勢識別[9-12],如劉鑫辰等提出的用RGB-D攝像頭獲取3D空間分析指尖數量[9],但當不同手勢指尖點數量相同時無法進行區分;談家譜等利用Kinect獲取骨骼信息跟蹤手部位置,結合膚色分割提取手部[10],這種方法受膚色分割法局限,難以保證手勢的旋轉、平移和縮放不變性,實時性不高。
為克服上述問題,本文提出一種基于Kinect的實時手勢識別方法,可以準確識別常用的10種計數手勢。首先利用Kinect獲取人體深度數據與骨骼位置,記錄手掌中心和手肘中心關節的坐標;然后根據關節點位置分析深度圖像快速得出人體手部區域,根據手部區域中閉合曲線的包圍面積篩選出準確的手部輪廓,并分析手部輪廓和手掌中心關節點位置修正手掌中心點;再根據手部輪廓查找手指指尖位置,判斷是否存在彎曲手指,確定手部特征點;最后通過特征點匹配進行手勢識別。該方法能夠在復雜背景下準確、高效地識別操控者的手勢,能夠克服光照變化和膚色差異的影響,并且算法簡便、具有良好的實時性,能夠識別彎曲手指,并保證手勢的旋轉、平移以及縮放不變性,可以適應體感交互的需求。
微軟的Kinect體感設備可實時獲取RGB彩色圖像、深度圖像以及人體關節點的三維坐標。本文利用Kinect獲取圖像的深度信息后,若檢測到人體,則分析深度圖像直方圖,根據閾值T,將圖像分為人體和背景兩部分,用白色區域表示人體,黑色區域表示背景。然后利用提取的人體骨骼中手掌中心t、手肘中心r、頭部中心點h和脖子中心點n的位置,計算頭部中心點h和脖子中心點n之間的歐式距離c。以手掌中心點t為中心在圖像中取一個半徑為0.8×c的圓形區域。剔除圓形區域外的人體信息以及區域內與手掌中心深度值相差0.1 m的人體信息,得到人體手部信息。將手部像素點填充白色,其余像素點填充黑色,獲得一幅只包含人體手部區域的二值圖I1。
提取I1中以t為中心、c為半徑的圓形鄰域,在鄰域內進行中值濾波,快速消除手部區域附近的噪聲,過濾部分非手部像素,平滑圖像邊緣,得到圖像I2。然后用Canny算法對圖像I2進行邊緣檢測,得到近似手形的曲線點集,即圖像邊緣曲線頂點序列。對所得的曲線頂點序列進行過濾,計算每條曲線所包圍的連通區域的面積,排除面積小的干擾區域,篩選出面積最大且頂點數大于等于3的曲線,即為手部輪廓。按以下步驟對手部輪廓進行多邊形逼近,得到一個多邊形的頂點序列pi(i為頂點序列號且i≥3)。
步驟1 連接輪廓上首尾兩點S和E,形成一條線段SE,即輪廓的弦;
步驟2 計算輪廓上到線段SE距離最大的點M,并求距離d;
步驟3 比較d與給定的閾值thr,若d≤thr,則SE就是輪廓的近似。
步驟4 若d≥thr,則將SE分為SM和EM兩條線段,然后分別對SM和EM重復進行步驟1~步驟3。
步驟5 重復上述步驟,直到所有線段分割完,依次連接每個M點,得到輪廓的近似多邊形。
多邊形逼近過程如圖1所示,圖1(a)為進行多邊形逼近前的手部輪廓,圖1(b)~圖1(d)為分割過程,圖1(e)為獲得的近似多邊形。從圖1(a)和圖1(e)的對比可以看出,該近似多邊形和手部輪廓形狀相似度高,但頂點數量較少,消耗的存儲空間更少,更平滑。

圖1 多邊形逼近過程
手部特征是手勢識別的依據與關鍵,特征提取算法的好壞直接影響著手勢識別的效率。根據人體手部形態特征,手指定位可以準確地描述手勢。目前有些研究者選取指尖點作為特征點,雖然能在一定程度上描述手勢,但難以在保證手勢旋轉、平移、縮放不變性的同時也能檢測到彎曲的手指。本文提出一種手部特征提取方法,首先求取手掌中心和手掌大小;然后逆時針掃描近似多邊形的頂點序列,檢測出近似多邊形的凸包點;再根據手掌大小和凸包點到手掌中心點的距離,計算比例閾值,查找出伸直的手指指尖和指根位置;最后結合手肘關節點位置,計算手掌中心點t到手肘中心點r的方向,由這個方向可以檢測到非伸直手指的特征點。具體方法如下:
(1)在多邊形的頂點序列中查找凸包點與凹陷點
首先,建立一個堆棧S,將多邊形頂點p0、p1壓入堆棧S。從i=2開始逆時針遍歷多邊形的頂點序列pi(2≤i<多邊形的頂點個數),根據由Sj-1指向Sj的向量判斷頂點pi的方向,方向判斷的方法如圖2所示,圖2(a)中pi的方向為向右轉,圖2(b)中pi的方向為向左轉。若方向向左轉,則將頂點pi壓入堆棧;若方向向右轉,則將Sj彈出堆棧。當算法終止時,堆棧S中僅包含多邊形凸包點中的頂點,其順序為個各頂點在邊界上出現的逆時針方向排列的順序。
然后,逆時針依次計算多邊形頂點序列上的兩個相鄰凸包點之間的每個點到兩個凸包點的歐氏距離,將距離最大的點存儲到凹陷點集中,得到多邊形的每個凸包點對應的凹陷點序列,如圖2(c)所示,圖中每一條實線段對應一對凸包點和凹陷點,其中距離手心較遠的點表示凸包點,距離手心較近點表示凹陷點。

圖2 查找凸包和計算指尖
(2)計算手掌中心點g和手掌大小maxdist
掃描圖像所有像素點,位于多邊形內并且與多邊形距離最大的點為最大內切圓圓心g,到多邊形的歐氏距離為內切圓的半徑maxdist。半徑為maxdist的圓大小近似等于手掌心的區域。
(3)修正手掌中心點t
由于人體體態差異和測量存在誤差,直接用Kinect獲取到的手掌關節點t不穩定也不準確,尤其在手指彎曲或者握拳的情況下對手掌中心的定位誤差很大。所以要利用前面計算得到的g來修正手掌中心點t,引入權重系數ω。計算方法如下
(1)
(4)計算指尖與指根
濾除手掌下部(如圖3(a)中矩形范圍內)的凸包點和凹陷點,并剔除圖2(c)中實線段長度過短或過長的凸包點和凹陷點。方法如下。

圖3 手掌下部和計算指尖
設向量A由手掌中心t指向凸包點f,向量B由手掌中心t指向手肘中心r。若向量A和向量B之間的夾角為銳角,即向量的點乘為正數,則剔除此手掌下部的凸包點f和它對應的凹陷點b(如圖3(a)中實心點f、b)。根據人體生理學,以手心面的視角看手掌占整個手部長度的3/5,以手背的視角看手指與四指比例相等。計算手掌上部的凸包點f與手掌中心點t的歐氏距離dis1和手掌上部的凹陷點b與手掌中心點t的歐氏距離dis2(如圖3(a)中空心點f、b),若滿足dis1>1.8×maxdist且dis2>maxdist,就將該凸包點與對應的凹陷點構成的線段記錄為手指,凸包點對應指尖部分,凹陷點對應指根部分,如圖3(b)所示。并計算手指個數N。此方法可以保持旋轉、平移和縮放不變性。
(5)獲取多邊形的包圍特征點
沿手掌中心點t到手肘中心點r的方向掃描圖像,計算多邊形的最高點坐標o、最內點坐標e。如圖4所示,虛線表示掃描線,空心點表示最高點o,實心點表示最內點e。

圖4 獲取包圍特征點
本文所提出的方法可以識別如圖5所示的10種傳統計數手勢。手勢一到六以及手勢八都是伸直手指的手勢,手勢七和手勢九是半伸直手指的手勢,而且手勢九存在彎曲手指的特征,手勢十沒有伸出手指。根據以上描述結合提取的特征數據N、f、b、t、r、e、o、maxdist,可以將其量化為以下六級分類標準。

圖5 本文識別的傳統計數手勢
第一級分類標準是手指個數N(0≤N≤5)。
第二級分類標準是圖像坐標系中每個手指對應的指尖點f與手掌中心點t和手肘中心點r連線的垂直距離Distance,如圖6所示。計算方法如下
(2)
(3)

圖6 Distance
第三級分類標準是每個指尖間的歐式距離Fingdis。
第四級分類標準是每個手指的指根點和手掌中心t的相對位置dotZ。設向量A由手掌中心t指向指根點b,向量B由手掌中心t指向手肘中心r。計算方法如下
dotZ=(bx-rx)×(rx-tx)+(by-ry)×(ry-ty)
(4)
第五級分類標準是多邊形的包圍特征點e、o和多邊形最大內接圓maxdist的關系rEO。判斷方法如下
(5)
第六級分類標準是凹洞檢測,方法如下:掃描多邊形的包圍特征點o和e之間的點,若全部位于多邊形內部,則判定為無凹洞;否則,判定有凹洞,如圖7所示,白色粗線表示被掃描的像素,空心點表示o,實心點表示e,圖7(a)和圖7(c)為左右手手勢七且無凹洞的情況,圖7(b)和圖7(d)為左右手手勢九且有凹洞的情況。

圖7 凹洞檢測
手勢識別方法如下:
步驟1 若N=0且rEO=1,則判定手勢為十;若N=0且rEO≠1,進行凹洞檢測。若有凹洞,則判定為手勢九;若無凹洞,則判定為手勢七;否則執行步驟9;
步驟2 若N=1,且滿足以下條件:-25 步驟3 若N=2,且兩個手指都滿足條件:-20 步驟4 若N=2,且其中一個手指滿足以下條件條件:-50 步驟5 若N=2,且其中一個手指滿足以下條件:-50 步驟6 若N=3,且3個手指都滿足以下條件:-30 步驟7 若N=4,且4個手指都滿足以下條件:-30 步驟8 若N=5,則判定為手勢五;否則執行步驟9; 步驟9 獲取下一幀圖像數據,重復步驟1到步驟8。 本文實驗的硬件設備為一臺二代Kinect體感設備XBOX ONE,計算機處理器為Intel Core i5-5200U@2.20 GHz,4 GB內存。實驗的軟件環境為:Windows 10操作系統、Microsoft Visual Studio2013和OpenCV以及Kinect for Windows SDK 2.0軟件開發包。實驗中所有圖像分辨率為512×424。 本文隨機選取了10個人進行測試,測試者需要將手心方向正對攝像頭,站在距離體感設備0.5m-1m的范圍內,每人左右手各測試10種手勢10次,每個手勢共測試100次。測試結果見表1。 表1 實驗結果 從表1可以看出,此方法對手勢二、三、四、八、九的識別率較高,接近100%,對手勢一、五、六、七、十的識別率也能達到95%以上,所有手勢的平均識別率為98.7%。 文獻[6]提出構造手指尖到手掌中心的線段作為手部骨架,計算手部骨架間的角度;以角度的大小和檢查指尖數量進行分類的方法。可以識別手勢一到九,但手勢七和九定義為伸直手指的手勢。文獻[10]提出利用Kinect獲取手部位置,結合膚色分割法提取手部。然后利用行像素變化次數獲取掌心,并通過分析輪廓與掌心間的距離曲線來提取指尖點,通過靜態手勢特征分析識別手勢。 將本文方法與文獻[6]和文獻[10]提出的方法進行對比,結果見表2。由表2可以得出,文獻[6]的平均識別率為96.78%,文獻[10]對手勢一到九的平均識別率為98.43%,本文方法的平均識別率為98.83%。而且,文獻[6]中的手勢七和八以及九都定義為伸直手指的手勢,并不是日常約定俗成的手勢,雖然容易識別但降低了實用性與舒適感,不能滿足自然人機交互方式的要求。文獻[10]雖然能識別彎曲手指,但不能保證手勢的旋轉,影響了操縱者的交互體驗,帶來很大不便。本文方法克服了以上不足,能夠在手勢旋轉的情況下得到正確的識別結果。 表2 3種識別方法對比 為了證明本文方法的旋轉、平移、縮放不變性,分別在操縱者手部旋轉、平移以及前進后退的情況下進行了實驗。實驗結果如圖8所示。由圖8可以看出,手勢在發生平移、旋轉、縮放的情況下,也能獲得正確的識別結果。 圖8 平移、旋轉、縮放測試 為了證明本文方法在光照發生明顯變化條件下的魯棒性,在實驗過程中使光線由明到暗發生變化,實驗結果如圖9(a)所示,第一行為真實的測試場景,第二行為對應的識別結果。從圖中可以看出,當光線由正常光照變化到嚴重不足時,本文方法也能正確識別手勢。 圖9 光照條件變化和復雜背景測試 為了證明本文方法在復雜背景環境下的魯棒性,本文在復雜環境下進行了實驗。實驗結果如圖9(b)所示,測試者在實驗過程中不斷有其他人出現甚至有其他的人手進行干擾,在這種情況下,本文方法也能準確的識別手勢。 在實驗的過程中,本文讓測試者戴上白色的棉布手套,如圖10所示。在這種情況下,若采用基于膚色模型的手勢識別方法,識別正確率會受到手套顏色的影響而大大降低,而采用本文的方法能夠準確的識別手勢。 圖10 戴白布手套測試 在實時性方面,本文方法的平均處理速度為每秒20~30幀,具有良好的實時性,各個步驟的平均處理時間見表3。 表3 各個步驟平均處理時間 本文主要研究了一種基于Kinect的實時手勢識別方法。主要通過運用Kinect體感設備獲取深度信息和骨骼位置信息,然后提取人體手部信息并分析手部輪廓,再提取手掌中心點和指尖、指根以及包圍特征,并結合手肘關節點的位置進行分析與手勢匹配,能夠準確實時的識別10種常用的計數手勢。通過實驗結果可以得出,手勢二、三、四、八、九的平均識別率為99.7%,手勢一、五、六、七、十的平均識別率為97.7%。除此之外,本文方法還能消除復雜背景和顏色差異以及光照變化的干擾,允許手勢發生旋轉、平移以及縮放,具有良好魯棒性。本文的手勢方法識別可以應用在很多領域中,如數字教學、虛擬游戲、智能家庭等。在未來的工作中,可以與動作識別相結合,實現更豐富的手勢識別。 參考文獻: [1]Zhu Y,Yang Z,Yuan B.Vision based hand gesture recognition[C]//Proceedings of the International Conferenceon Ser-vice Sciences.Washington:IEEE Computer Society,2013:260-265. [2]Mubashira Zaman,Soweba Rahman,Tooba Rafique,et al.Hand gesture recognition using color markers[C]//Procee-dings of the 16th International Conference on Hybrid Intelligent Systems.New York:Springer-Verlag New York Inc,2017:1-10. [3]Jeong J,Jang Y.Max-min hand cropping method for robust hand region extraction in the image-based hand gesture recognition[J].Soft Computing,2015,19(4):815-818. [4]Nasri S,Behrad A,Razzazi F.Spatio-temporal 3D surface matching for hand gesture recognition using ICP algorithm[J].Signal Image & Video Processing,2015,9(5):1205-1220. [5]ZHANG Wenqing,LI Fenlan,OU Haiyan.Intelligent input with gesture recognition[J].Computer Systems & Applications,2014,23(10):167-171(in Chinese) [張文清,李芬蘭,歐海燕.基于手勢識別的智能輸入[J].計算機系統應用,2014,23(10):167-171.] [6]YU Bo,CHEN Yongqiang,WANG Shuangyi,et al.Static gesture recognition algorithm based on characteristics of finger angle[J].Journal of Xihua University Natural Science,2014,33(1):69-71(in Chinese).[俞博,陳永強,王雙一,等.基于手指角度特征的靜態手勢識別算法[J].西華大學學報(自然科學版),2014,33(1):69-71.] [7]LI Dongjie,LI Junxiang,ZHANG Yue,et al.Gesture recognition of data glove based on PSO-improved BP neural network[J].Electric Machines and Control,2014,18(8):87-93(in Chinese).[李東潔,李君祥,張越,等.基于PSO改進的BP神經網絡數據手套手勢識別[J].電機與控制學報,2014,18(8):87-93.] [8]CHEN Qijun,ZHU Zhenjiao,GU Shuang.Hand gesture re-cognition based on Fourier description and HMM[J].Control Engineering of China,2012,19(4):634-638(in Chinese).[陳啟軍,朱振嬌,顧爽.基于傅立葉描述子和HMM的手勢識別[J].控制工程,2012,19(4):634-638.] [9]LIU Xinchen,FU Huiyuan,MA Huadong.Real-time fingertip tracking and gesture recognition using RGB-D camera[J].Computer Science,2014,41(10):50-52(in Chinese).[劉鑫辰,傅慧源,馬華東.基于RGB-D攝像頭的實時手指跟蹤與手勢識別[J].計算機科學,2014,41(10):50-52.] [10]TAN Jiapu,XU Wensheng.Fingertip detection and gesture recognition method based on Kinect[J].Journal of Computer Applications,2015,35(6):1795-1800(in Chinese).[談家譜,徐文勝.基于Kinect的指尖檢測與手勢識別方法[J].計算機應用,2015,35(6):1795-1800.] [11]FU Qian,SHEN Junchen,ZHANG Qianying,et al.Gesture recognition with Kinect for automated sign language translation[J].Journal of Beijing Normal University(Natural Science),2013,49(6):586-592(in Chinese).[付倩,沈俊辰,張茜穎,等.面向手語自動翻譯的基于Kinect的手勢識別[J].北京師范大學學報(自然科學版),2013,49(6):586-592.] [12]ZHAO Aifang,PEI Dong,WANG Quanzhou,et al.Gesture recognition fused with multi-information in complex environment[J].Computer Engineering and Applications,2014,50(5):180-184(in Chinese).[趙愛芳,裴東,王全州,等.復雜環境中多信息融合的手勢識別[J].計算機工程與應用,2014,50(5):180-184.]4 實驗結果分析






5 結束語