王 兵,董洪偉,張明敏,潘志庚
(1.江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫 214122;2.浙江大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310000;3.杭州師范大學(xué) 數(shù)字媒體與人機(jī)交互研究中心,浙江 杭州 310000)
手勢作為在人機(jī)交互和虛擬現(xiàn)實(shí)中的巨大作用,得到了很多學(xué)者的關(guān)注和研究。 Nurettin使用6個(gè)自由度的磁運(yùn)動跟蹤裝置捕獲人手的運(yùn)動軌跡,并通過8個(gè)不同的運(yùn)動方向來表示運(yùn)動手勢[1]; Kurakin A 使用了動作圖識別動態(tài)手勢[2]; Hsieh C C使用了Haar特征和支持向量機(jī)(support vector machine,SVM)識別動態(tài)手勢[3];陳鵬展等人提出了使用加速傳感器識別動態(tài)手勢[4];沈愛敏等人提出了使用手機(jī)加速傳感器的靜態(tài)手勢識別[5];王西穎等人[6]采用了隱馬爾可夫模型模糊神經(jīng)網(wǎng)絡(luò)(hidden Markov model-fuzzy neural network,HMM—FNN)模型識別復(fù)雜的動態(tài)手勢; Premaratne P[7]提出了使用手勢軌跡運(yùn)動方向變化的角度作為特征,并使用HMM識別動態(tài)手勢。Ren Z等人[8]利用了Kinect研究手勢識別。
指尖檢測目前算法很多,例如文獻(xiàn)[9]在手勢分割的基礎(chǔ)上采用模板匹配的指尖檢測方法實(shí)現(xiàn)手勢識別。文獻(xiàn)[10]通過基于曲率的指尖檢測方法。本文在實(shí)驗(yàn)中采用基于像素分類的指尖檢測方法[9,11],不僅能夠得到手指的個(gè)數(shù)還能得到指尖的位置。
本文針對手勢分割問題,利用靜態(tài)手勢作為一個(gè)動態(tài)手勢的開始點(diǎn)和結(jié)束點(diǎn);在特征選取上,使用Premaratne P[7]的軌跡的方向變化角度特征來識別動態(tài)手勢,但文獻(xiàn)[7]中直線段和軌跡擬合的方式來計(jì)算該角度,具有很大的局限性,本文首先利用Kinect獲取人手的位置,然后利用深度信息分割出人手的區(qū)域;隨后對該區(qū)域應(yīng)用基于像素分類的指尖檢測算法[9,11]得到指尖點(diǎn)的個(gè)數(shù)和位置,以左右兩只手的手指個(gè)數(shù)作為區(qū)分動態(tài)手勢的開始點(diǎn)和結(jié)束點(diǎn)。最后提取軌跡的方向變化角度作為特征,使用HMM來對動態(tài)手勢分類。
1)使用NITE庫找到手的中心點(diǎn)位置(Xc,Yc)和該點(diǎn)的深度值D。
2)(Xc,Yc)為中心,構(gòu)造2個(gè)包圍盒進(jìn)行手勢分割。第一個(gè)包圍盒針對深度方向,深度圖中深度值d在區(qū)域[D-Td,D+Td]范圍內(nèi),其中,Td設(shè)定的閾值;第二個(gè)包圍盒針對人手大小。深度圖上點(diǎn)P(X,Y)滿足
Xc-Tx≤X≤Xc+Tx
Yc-Ty≤Y≤Yc+Ty
式中Tx和Ty為需要設(shè)定的閾值。圖1為通過上述方法得到的人手區(qū)域。
圖1 手勢分割圖像
圖2 基于像素分類的指尖檢測
根據(jù)設(shè)定的2個(gè)閾值R1和R2將手勢分割之后的二值圖像分為5類,分別為:
1)非手指區(qū)域:根據(jù)手勢分割之后的二值圖像直接進(jìn)行判斷,如圖2(a)中的A點(diǎn);
2)手指邊緣區(qū)域:如圖2(a)中的B點(diǎn),在以B為圓心、R1為半徑的圓中,手指區(qū)域所占的比例較??;
3)手指指尖區(qū)域:如圖2(b)中的D點(diǎn),在以D為圓心、R1為半徑的圓中,手指區(qū)域所占的比例較大,同時(shí)在以D為圓心、R2為半徑的圓中,與手指區(qū)域交點(diǎn)僅有2個(gè);
4)手指非指尖區(qū)域:如圖2(a)中的C點(diǎn),在以C為圓心、R1為半徑的圓中,手指區(qū)域所占的比例較大,同時(shí)在以C為圓心、R2為半徑的圓中,與手指區(qū)域交點(diǎn)有4個(gè);
5)手掌區(qū)域:以R1為半徑的圓中,手指區(qū)域占得比例較大,但以R2為半徑的圓中,與手指區(qū)域沒有交點(diǎn)。
在對手勢分割之后的二值圖像進(jìn)行像素分類之后,根據(jù)手指指尖二值圖像查找指尖輪廓,并進(jìn)行橢圓擬合,得到指尖位置和指尖個(gè)數(shù)。
實(shí)驗(yàn)中,為了提高算法的運(yùn)行速度,將該算法在計(jì)算統(tǒng)一設(shè)備架構(gòu)(compute unified device architecture,CUDA)上實(shí)現(xiàn)。由于需要對所有的像素進(jìn)行分類,本文將每一個(gè)像素分類對應(yīng)著一個(gè)線程,最終在實(shí)驗(yàn)中每一個(gè)線程塊線程個(gè)數(shù)M=128,人手部區(qū)域像素個(gè)數(shù)設(shè)定為N=160×160,線程塊的個(gè)數(shù)為K=(N+M-1)/M。圖3顯示本文指尖檢測的效果。
圖3 指尖檢測效果
與文獻(xiàn)[7]不同,為了能夠識別更多的動態(tài)手勢,本文規(guī)定逆時(shí)針的角度為正,順時(shí)針的角度為負(fù)。通過分析軌跡計(jì)算手勢運(yùn)行軌跡中的角度變化點(diǎn)的位置,然后求出角度的值,實(shí)驗(yàn)中,該角度值的范圍為[-π,π];求出角度后需要對角度進(jìn)行編碼,便于識別。
2.1.1 運(yùn)動方向變化角度的計(jì)算
運(yùn)動方向變化角度(change-of-direction angle),即軌跡中存在的轉(zhuǎn)彎處角度。如圖4為本文定義的運(yùn)動方向變化角度。
圖4 運(yùn)動方向變化角度的定義
圖4(a)~圖4(c)為其中3種情況下的角度,圖4(a)為逆時(shí)針的-π/2,圖4(b)為π,圖4(c)為順時(shí)針的π/2。當(dāng)用戶在Kinect面前繪制完軌跡之后,使用以下步驟來計(jì)算軌跡的方向變化角度:
1)針對軌跡的X和Y坐標(biāo),分別使用均值濾波來降低噪聲。
(1)
(2)
(3)
(4)
(5)
Anglei=arccos(Ai×Bi)
(6)
式中ε=1×10-6,m=3。
3)對步驟(2)求得的角度進(jìn)行分析,找出其中的突變點(diǎn),然后將起始點(diǎn)、突變點(diǎn)和終點(diǎn)依次按順序計(jì)算突變點(diǎn)處的角度。
2.1.2 方向變化角度的編碼
求得軌跡的方向變化角度之后,對這些角度進(jìn)行編碼。具體編碼如表1。
表1 角度編碼
在定義的動態(tài)手勢(英文大寫字母)中,根據(jù)手勢的初始方向?qū)⒋髮懹⑽淖帜阜譃?組,具體如表2。
表2 手勢的初始方向
按照上面4組字母,構(gòu)造4組HMM,分別針對于4種手勢的初始方向。動態(tài)手勢模型(大寫英文字母)的訓(xùn)練使用Baum-Welch算法,對于每一個(gè)手勢HMM的狀態(tài)個(gè)數(shù)大多設(shè)置為方向變化的個(gè)數(shù),設(shè)置A為10,J為8,I為6,Z為3,F(xiàn)為4,其余均為方向變化的個(gè)數(shù)。在訓(xùn)練每一個(gè)動態(tài)手勢(大寫英文字母)模型之后,對于一個(gè)動態(tài)手勢的識別,先計(jì)算初始方向,再計(jì)算該方向下的每一個(gè)模型的概率,概率最大對應(yīng)的模型為得到的結(jié)果。
采用靜態(tài)手勢判斷一個(gè)動態(tài)手勢的開始和結(jié)束。當(dāng)左右手的手指個(gè)數(shù)均為5時(shí),認(rèn)為已定位好手在界面上的位置;當(dāng)左手手指個(gè)數(shù)為0,右手手指個(gè)數(shù)為5時(shí),規(guī)定清除屏幕上的軌跡;當(dāng)左手手指個(gè)數(shù)為0,右手手指個(gè)數(shù)為1的時(shí)候,手的運(yùn)動軌跡作為動態(tài)手勢;當(dāng)左手手指個(gè)數(shù)為5,右手手指個(gè)數(shù)為0的時(shí)候,對該軌跡提取拐角,并計(jì)算識別軌跡的語義,具體見表3。
表3 左右手手指個(gè)數(shù)的含義
采用了英文大寫字母中的16個(gè)字母,當(dāng)手在空中運(yùn)動時(shí)通過 Kinect獲取深度圖數(shù)據(jù),然后,通過NITE得到手的中心位置并通過深度信息得到手區(qū)域,圖1為本文得到的人手區(qū)域分割之后的效果圖;然后,通過CUDA計(jì)算左手和右手的手指個(gè)數(shù)和位置,表4為針對右手指尖個(gè)數(shù),分別為1,2,3,4,5時(shí),每一種均采集500幀統(tǒng)計(jì)指尖檢測的耗時(shí)和誤檢個(gè)數(shù),當(dāng)采集這500幀時(shí),令右手較大幅度的運(yùn)動。從表4中可以看出:該算法耗時(shí)較小,準(zhǔn)確性較高,可以保證系統(tǒng)的實(shí)時(shí)性和魯棒性;得到指尖個(gè)數(shù)后按照表3確定該靜態(tài)手勢的含義;當(dāng)確定當(dāng)前狀態(tài)屬于繪制的動態(tài)手勢(大寫英文字母)時(shí),記錄該動態(tài)手勢的軌跡,然后去噪,提取特征,圖5為對字母A,E,F(xiàn)和H求得的角度,圖6為計(jì)算方向變化的位置,從圖5和圖6可以看出:每一個(gè)字母的方向變化個(gè)數(shù)和角度變換圖的極值點(diǎn)個(gè)數(shù)一一對應(yīng)。實(shí)驗(yàn)中,針對每一個(gè)字母,采集了100個(gè)測試樣本,對每一個(gè)動態(tài)手勢進(jìn)行測試。統(tǒng)計(jì)實(shí)驗(yàn)結(jié)果,如表5~表8所示。
圖5 字母的方向變化角度特征
圖6 字母的點(diǎn)序列在每點(diǎn)處的角度變化
表4 指尖檢測耗時(shí)和誤檢情況
表5 A M N P R識別結(jié)果
表6 H K W X識別結(jié)果
表7 E F G識別結(jié)果
表8 Z J T I識別結(jié)果
針對動態(tài)手勢的軌跡,提取拐角并對角度編碼,取得了不錯(cuò)的效果,能夠識別16種大寫英文字母。但算法也面臨著如何計(jì)算曲線角度的問題,例如字母C,O等,正在考慮將運(yùn)動軌跡的方向變化角度和運(yùn)動方向結(jié)合來識別更多的動態(tài)手勢。
[1] Kiliboz N C,Güdükbay U.A hand gesture recognition technique for human-computer interaction[J].Journal of Visual Communication & Image Representation,2015,28:97-104.
[2] Kurakin A,Zhang Z,Liu Z.A real time system for dynamic hand gesture recognition with a depth sensor [C]∥2012 Proceedings of the 20th European Signal Processing Conference(EUSIPCO),IEEE,2012:1975-1979.
[3] Hsieh C C,Liou D H.Novel Haar features for real-time hand gesture recognition using SVM[J].Journal of Real-Time Image Processing,2015,10(2):357-370.
[4] 陳鵬展,羅 漫,李 杰.基于加速度傳感器的連續(xù)動態(tài)手勢識別[J].傳感器與微系統(tǒng),2016,35(1):39-42.
[5] 沈愛敏,張正道.基于手機(jī)加速度傳感器的靜態(tài)手勢身份認(rèn)證方法[J].傳感器與微系統(tǒng),2015,34(6):39-42.
[6] 王西穎,戴國忠,張習(xí)文,等.基于 HMM—FNN 模型的復(fù)雜動態(tài)手勢識別[J].軟件學(xué)報(bào),2008,19(9):2302-2312.
[7] Premaratne P,Yang S,Vial P,et al.Dynamic hand gesture recognition using centroid tracking[C]∥International Conference on Intelligent Computing,Springer International Publishing,2015:623-629.
[8] Ren Z,Meng J,Yuan J,et al.Robust hand gesture recognition with kinect sensor[C]∥Proceedings of the 19th ACM Inter-national Conference on Multimedia,ACM,2011:759-760.
[9] 晏 浩,張明敏,童 晶,等.基于 Kinect 的實(shí)時(shí)穩(wěn)定的三維多手指跟蹤算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2013,25(12):1801-1809.
[10] 李博男,林 凡.基于曲率的指尖檢測方法[J].南京航空航天大學(xué)學(xué)報(bào),2012,44(4):587-591.
[11] Letessier J,Bérard F.Visual tracking of bare fingers for inter-active surfaces[C]∥Proceedings of the 17th Annual ACM Symposium on User Interface Software and Technology,ACM,2004:119-122.
[12] Vezhnevets V,Sazonov V,Andreeva A.A survey on pixel-based skin color detection techiques[C]∥Proceedings of Graphicon,2003:85-92.