顧 德,李 吉
江南大學(xué) 輕工過(guò)程先進(jìn)控制教育部重點(diǎn)實(shí)驗(yàn)室,江蘇 無(wú)錫 214062
使用手勢(shì)進(jìn)行交流是人機(jī)交互(HCI)研究方面的一個(gè)流行領(lǐng)域,一些研究者提出使用手部運(yùn)動(dòng)軌跡[1-3]或者數(shù)據(jù)手套與媒體播放器進(jìn)行交互操作?;谝曈X(jué)的手勢(shì)識(shí)別系統(tǒng)也在文獻(xiàn)[4-5]被提出,并且多數(shù)研究方法需要使用者佩戴額外設(shè)備[6-10]?;跀?shù)據(jù)手套的方法雖然可以獲得較精確的手部或手指數(shù)據(jù),但是使用者必須借助額外設(shè)備,這一顯著缺點(diǎn)使得該類方法在將來(lái)必然要被淘汰。而基于視覺(jué)進(jìn)行手勢(shì)識(shí)別的方法易受光照變化及復(fù)雜背景影響,一直是一個(gè)未能落實(shí)的難點(diǎn)。為了解決這些問(wèn)題,選擇基于深度信息的檢測(cè)方法,結(jié)構(gòu)光技術(shù)采集的深度數(shù)據(jù)魯棒性好,精度高,并且可以實(shí)現(xiàn)實(shí)時(shí)檢測(cè),是一個(gè)很有前景的研究方向。
近來(lái),隨著傳感器技術(shù)的發(fā)展,基于深度信息的識(shí)別技術(shù)受到越來(lái)越多人的關(guān)注。TOF(飛行時(shí)間法)攝像機(jī)[11],結(jié)構(gòu)光技術(shù)因?yàn)榘嘿F價(jià)格,使得該類深度技術(shù)一直未能被廣泛利用,直到微軟公司推出Kinect攝像機(jī)。Kinect使得在黑暗環(huán)境和復(fù)雜背景環(huán)境下進(jìn)行廉價(jià)且穩(wěn)定的手勢(shì)識(shí)別成為可能,這些基于深度信息的傳感器技術(shù)提供了相對(duì)穩(wěn)定的深度信息。一些研究人員使用深度數(shù)據(jù)進(jìn)行手勢(shì)軌跡的跟蹤研究,但是沒(méi)有多少研究者使用其提供手指跟蹤層次的人機(jī)交互方案。
Bergh等人[12]使用TOF攝像機(jī)增強(qiáng)識(shí)別,他們的系統(tǒng)可以識(shí)別6種手勢(shì)?;赗GB信息的識(shí)別精度為99.54%,基于深度信息的識(shí)別精度為99.07%,整合后的識(shí)別精度為99.54%。Yang等人[1]使用Kinect提供的深度信息產(chǎn)生一個(gè)手部運(yùn)動(dòng)軌跡識(shí)別系統(tǒng),并應(yīng)用在一個(gè)媒體播放程序中。手掌軌跡由一個(gè)3D特征向量進(jìn)行檢測(cè),手勢(shì)采用隱馬爾科夫模型進(jìn)行識(shí)別。該系統(tǒng)論證了采用近紅外攝像頭進(jìn)行非接觸式手勢(shì)識(shí)別的可行性,但是該系統(tǒng)不能偵測(cè)指尖數(shù)據(jù)。這使得它僅能用于跟蹤揮手、向上伸、向下伸、前推、后拉等基本的手掌運(yùn)動(dòng)軌跡。Tuntakurn等人[13]使用Kinect自帶的人體骨骼識(shí)別技術(shù)進(jìn)行粗略的手掌位置判定,而后識(shí)別指尖并將手勢(shì)應(yīng)用于一個(gè)醫(yī)療軟件。這樣使得當(dāng)攝像頭不能完整識(shí)別一個(gè)人的上體骨骼時(shí)該算法便不能正常工作。
本文使用Kinect for Windows獲取使用者的手勢(shì),將手勢(shì)和預(yù)先定義的手勢(shì)庫(kù)進(jìn)行比較,并呈現(xiàn)相應(yīng)的匹配結(jié)果。這個(gè)系統(tǒng)顯示了僅使用人手作為輸入介質(zhì)進(jìn)行人機(jī)交互的前景。本方案使用C#在Microsoft Visual Studio 2010下開發(fā)完成,用單手進(jìn)行手勢(shì)信息的輸入。采用近紅外攝像頭獲取深度信息,因此光照條件、使用者的膚色和衣著,以及環(huán)境背景對(duì)于本系統(tǒng)幾乎不產(chǎn)生任何影響。若將本系統(tǒng)整合到其他各種應(yīng)用程序中,它的識(shí)別精度和魯棒性必然可以在日常生活中大有作為。
設(shè)備輸出的深度圖像分辨率為640像素×480像素,320像素×240像素,80像素×60像素3檔,這里采用640像素×480像素分辨率。首先將Kinect放置于水平桌面,使用者的手離近紅外攝像頭距離約0.8 m,這樣設(shè)備可以提供一個(gè)大小恰當(dāng)?shù)氖植可疃葓D像,也不會(huì)對(duì)手的運(yùn)動(dòng)空間有所約束。在整個(gè)系統(tǒng)運(yùn)行前,需要用戶正對(duì)攝像頭張開五指提示設(shè)備開始手勢(shì)檢測(cè),同時(shí)也獲取了手掌的尺寸S(見2.2節(jié))。
本文的算法假設(shè)使用者的手掌與攝像頭的投射平面所成角度在正負(fù)30°內(nèi),在實(shí)踐中,此約束很少會(huì)影響操作,因?yàn)槭褂谜叩氖终浦苯用嫦騻鞲衅鞑僮魇呛苷5摹?/p>
本文設(shè)計(jì)的系統(tǒng)包括3個(gè)主要組成部分:手部分割、特征提取、手勢(shì)識(shí)別。
第一步需要把手部圖像從背景中分離出來(lái),假定使用者用于做手勢(shì)的手離攝像頭最近,為了去除手腕和部分手臂的深度圖像,需要對(duì)整個(gè)圖像進(jìn)行閾值分割。首先使用深度值z(mì)=z0+σz分段前景背景,其中z0是探測(cè)到的所有像素點(diǎn)中離攝像頭最近的那一點(diǎn)的深度值,σz是一個(gè)和手掌尺寸S有關(guān)的閾值。
一個(gè)像素點(diǎn)的上、下、左、右4個(gè)相鄰點(diǎn)都存在時(shí)該點(diǎn)為內(nèi)點(diǎn),反之為輪廓點(diǎn)。為了避免之后計(jì)算輪廓和掌心時(shí)反復(fù)檢查矩陣,使用兩個(gè)無(wú)關(guān)的數(shù)組分別存儲(chǔ)輪廓點(diǎn)和內(nèi)點(diǎn)。從左至右,從上到下,遍歷獲得的所有像素點(diǎn)的深度數(shù)據(jù),直到獲取第一個(gè)可用的像素點(diǎn)數(shù)據(jù)。以該點(diǎn)為初始點(diǎn),區(qū)分出手掌的內(nèi)點(diǎn)和輪廓點(diǎn),獲得輪廓數(shù)組。每當(dāng)一個(gè)點(diǎn)添加到存儲(chǔ)輪廓點(diǎn)的數(shù)組時(shí)便被標(biāo)記為已訪問(wèn),當(dāng)完成了一個(gè)手的輪廓后,程序?qū)⑼ㄟ^(guò)剩下的輪廓點(diǎn)去尋找另一個(gè)手。使用的輪廓排序算法流程圖如圖1所示。
圖1 輪廓排序算法流程圖
獲取手部輪廓后,先尋找手掌的中心點(diǎn)。本文定義手掌的最大內(nèi)切圓的圓心為手掌中心,相比于選取整個(gè)手掌輪廓的形心,這樣獲取的手掌中心坐標(biāo)較為穩(wěn)定。因?yàn)樗苊饬耸种干煺够蜷]合對(duì)掌心坐標(biāo)的影響。掌心滿足如下公式:
其中,Pb為輪廓點(diǎn)坐標(biāo),Pi為內(nèi)點(diǎn)坐標(biāo),min{d(Pi,Pb)}為每一個(gè)內(nèi)點(diǎn)與所有輪廓點(diǎn)之間距離的最小值,取其最大值的內(nèi)點(diǎn)坐標(biāo)為掌心坐標(biāo)。手掌尺寸S定義為手掌中心點(diǎn)與距離最近的輪廓點(diǎn)之間的距離:
圖2中紅點(diǎn)為檢測(cè)到的指尖,黃點(diǎn)為非指尖點(diǎn),綠點(diǎn)為指蹼,藍(lán)點(diǎn)為用于計(jì)算指尖的一對(duì)輪廓點(diǎn)。首先,沿著手部輪廓,對(duì)每一個(gè)輪廓上的P(i)點(diǎn),尋找對(duì)應(yīng)的P(i-k)點(diǎn)和P(i+k)點(diǎn)。獲取P(i-k)和P(i+k)之間的中點(diǎn),并計(jì)算該中點(diǎn)與P(i)之間的距離。若距離大于一個(gè)閾值δ,則認(rèn)為P(i)是一個(gè)潛在指尖點(diǎn)。在潛在指尖點(diǎn)中,需要舍去檢測(cè)出的指蹼,以便獲得真正的指尖點(diǎn)。例如,對(duì)于P(i)點(diǎn)首先計(jì)算P(i)點(diǎn)與掌心之間的距離,再計(jì)算P(i-k)和P(i)的中點(diǎn)與掌心之間的距離。如果前者大于后者,P(i)即為指尖,否則為指蹼。
圖2 指尖算法示意圖
圖3 指尖標(biāo)定示意圖
圖4 手勢(shì)識(shí)別示意圖
此外,通過(guò)P(i)點(diǎn)做P(i-k)和P(i+k)之間中點(diǎn)的垂線可以獲得代表手指朝向的矢量。當(dāng)P(i)點(diǎn)離掌心的距離大于閾值γ時(shí),認(rèn)為手指為伸展?fàn)顟B(tài),否則為彎曲狀態(tài)。γ為一個(gè)與手掌尺寸S成比例的標(biāo)量。
本文采用指尖點(diǎn)的三維坐標(biāo)進(jìn)行手指標(biāo)定。首先使用者需要正對(duì)攝像頭張開5指,當(dāng)探測(cè)到5個(gè)指尖時(shí)系統(tǒng)開始手指標(biāo)定(如圖3)。
(1)第一步先確定大拇指。一般而言,此刻5個(gè)手指中離攝像頭最近的為大拇指;也對(duì)系統(tǒng)進(jìn)行人手外形訓(xùn)練輔助探測(cè)大拇指。本文同時(shí)采用以上兩種方法檢測(cè)大拇指以提高標(biāo)定正確率。
(2)在彼此相鄰的手指中,拇指和食指之間的距離最大。由此可以標(biāo)定食指。
(3)在所有手指中,離大拇指最遠(yuǎn)的是小指。
(4)因?yàn)橐呀?jīng)獲取了食指坐標(biāo),離食指最近的為中指。
(5)剩下的便是無(wú)名指。
手指標(biāo)定算法在輸入數(shù)據(jù)改變時(shí)會(huì)持續(xù)更新標(biāo)定結(jié)果,如果在后一幀圖像中依舊可以檢測(cè)到相同目標(biāo),已標(biāo)定的手指將不進(jìn)行更新。
手指標(biāo)定后便可以進(jìn)行手勢(shì)識(shí)別,本文定義了3個(gè)分類器處理手勢(shì)數(shù)據(jù)。首先計(jì)算偵測(cè)到的手指數(shù)目,并確定其是伸展?fàn)顟B(tài)或者彎曲狀態(tài)。如果偵測(cè)不到某根手指,默認(rèn)該手指為閉合狀態(tài),之后將信息發(fā)送給對(duì)應(yīng)該手指數(shù)目的第二層分類器。如果在第二層分類器中僅有唯一的手勢(shì)匹配該手指數(shù)目,就將該手勢(shì)作為識(shí)別結(jié)果,否則繼續(xù)進(jìn)行手指矢量匹配。矢量a和矢量b之間的夾角α由公式3定義:
手指矢量匹配對(duì)每一對(duì)伸展開的手指之間的夾角進(jìn)行測(cè)量,然后映射到相應(yīng)手勢(shì),從而判別使用者輸入的是何種手勢(shì)。
比如對(duì)“I love you”手勢(shì)的識(shí)別(如圖4),系統(tǒng)首先探測(cè)到手指數(shù)目為3,且拇指、食指和小指均為伸展?fàn)顟B(tài),之后對(duì)拇指、食指及小指之間的矢量夾角進(jìn)行測(cè)量;夾角在定義的閾值區(qū)間內(nèi)便識(shí)別出該手勢(shì),其他手勢(shì)同理可得。
為了考慮光照環(huán)境變化對(duì)本方案的影響,由5個(gè)手掌不同大小的人分別進(jìn)行多次測(cè)試。使用Kinect Studio采集視頻流并對(duì)指尖識(shí)別結(jié)果進(jìn)行驗(yàn)證。圖5為使用編寫的程序進(jìn)行實(shí)時(shí)指尖追蹤寫出字母“a”。
文獻(xiàn)[14]對(duì)手部圖像使用圓形過(guò)濾去除手掌部分獲得手指圖像,再取其中深度值最小的點(diǎn)為指尖。在檢測(cè)到掌心的情況下,指尖檢測(cè)正確率約為90%。文獻(xiàn)[15]采用基于形狀特征的方法進(jìn)行手指檢測(cè),正確率約為89%。表1為在實(shí)驗(yàn)室內(nèi)進(jìn)行日光燈環(huán)境、復(fù)雜背景環(huán)境及陰暗環(huán)境下應(yīng)用本文算法的指尖檢測(cè)識(shí)別率,約為95%,比文獻(xiàn)[14]的90%和文獻(xiàn)[15]的89%都高。
表1 不同光照環(huán)境下指尖識(shí)別率
選用了11個(gè)手勢(shì)來(lái)測(cè)試本文算法的可行性,每個(gè)手勢(shì)由5個(gè)手掌不同大小的人分別進(jìn)行多次測(cè)試。手勢(shì)庫(kù)及不同光照環(huán)境下的識(shí)別率分別為圖6和表2所示,實(shí)驗(yàn)結(jié)果表明本文的指尖探測(cè)和手勢(shì)識(shí)別在不同的光照環(huán)境下具有較好的魯棒性。
圖6 手勢(shì)識(shí)別示意圖
表2 不同光照環(huán)境下手勢(shì)識(shí)別率
本文提出了一個(gè)基于使用近紅外設(shè)備獲取的深度圖進(jìn)行手勢(shì)識(shí)別的方案。首先利用近紅外攝像頭獲取可靠的深度信息,數(shù)值歸一化后使用深度數(shù)據(jù)分割手部前景。再使用K-curvature算法取得指尖坐標(biāo),同時(shí)計(jì)算獲得手指朝向,掌心坐標(biāo)等手部特征值。之后采用指尖標(biāo)定算法標(biāo)定手指,并設(shè)計(jì)了3個(gè)分類器處理手勢(shì)數(shù)據(jù)以判定正確的手勢(shì)結(jié)果。實(shí)驗(yàn)結(jié)果表明本文方案穩(wěn)定且高效,基本不受背景光照條件變化的影響。該方案采用C#編寫,使用一臺(tái)CPU為Core-i3 3.30 GHz的臺(tái)式機(jī)進(jìn)行測(cè)試。測(cè)試的深度數(shù)據(jù)來(lái)自微軟生產(chǎn)的Kinect for Windows,分辨率為640×480。今后的工作是通過(guò)改善算法去識(shí)別非正面手勢(shì),來(lái)增強(qiáng)識(shí)別算法的穩(wěn)定性。
[1]Yang C,Jang Y,Beh J,et al.Gesture recognition using depth-based hand tracking for contactless controller application[C]//Proceedings of IEEE International Conference on Consumer Electronics(ICCE).[S.l.]:IEEE,2012:297-298.
[2]Silanon K,Suvonvorn N.Hand motion analysis for Thai alphabet recognition using HMM[J].International Journal of Information and Electronics Engineering,2011(1):65-71.[3]Holte M B,Moeslund T B,F(xiàn)ihl P.View-invariant gesture recognition using 3D optical flow and harmonic motion context[J].ComputerVision and ImageUnderstanding,2010,114(12):1353-1361.
[4]Chu S,Tanaka J.Hand gesture for taking self portrait[M]//Human-Computer Interaction Techniques and Environments.Berlin Heidelberg:Springer,2011:238-247.
[5]Wachs J P,K?lsch M,Stern H,et al.Vision-based handgesture applications[J].Communications of the ACM,2011,54(2):60-71.
[6]Harrison C,Benko H,Wilson A D.OmniTouch:wearable multitouch interaction everywhere[C]//Proceedings of the 24th Annual ACM Symposium on User Interface Software and Technology.[S.l.]:ACM,2011:441-450.
[7]Kenn H,Megen F V,Sugar R.A glove-based gesture interface for wearable computing applictions[C]//Proceedings of the 4th International Forum on Applied Wearable Computing(IFAWC),2007:1-10.
[8]Vicente A P,F(xiàn)aisal A A.Calibration of kinematic body sensor networks:Kinect-based gauging of data gloves“in the wild”[C]//Proceedings of IEEE International Conference on Body Sensor Networks(BSN).[S.l.]:IEEE,2013:1-6.
[9]Reddy K,Samraj A,Rajavel M,et al.Suitability analysis of gestures for emergency response communication by patients,elderly and disabled while using data gloves[C]//Proceedings of the 1st WSEAS International Conference on Information Technology and ComputerNetworks(ITCN’12),2012.
[10]Kumar P,Rautaray S S,Agrawal A.Hand data glove:A new generation real-time mouseforHuman-Computer Interaction[C]//Proceedings of the 1st International Conference on Recent Advances in Information Technology(RAIT).[S.l.]:IEEE,2012:750-755.
[11]Cui Y,Schuon S,Chan D,et al.3D shape scanning with a time-of-flight camera[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition(CVPR).[S.l.]:IEEE,2010:1173-1180.
[12]Van den Bergh M,Van Gool L.Combining RGB and ToF cameras for real-time 3D hand gesture interaction[C]//Proceedingsof IEEE Workshopon Applicationsof Computer Vision(WACV).[S.l.]:IEEE,2011:66-72.
[13]Tuntakurn A,Thongvigitmanee S S,Sa-Ing V,et al.Natural interactive 3D medical image viewer based on finger and arm gestures[C]//Proceedingsofthe 6th Biomedical Engineering International Conference(BMEiCON).[S.l.]:IEEE,2013:1-5.
[14]Raheja J L,Chaudhary A,Singal K.Tracking of fingertips and centers of palm using kinect[C]//Proceedings of the 3rd International Conference on Computational Intelligence,Modelling and Simulation(CIMSiM).[S.l.]:IEEE,2011:248-252.
[15]Song P,Yu H,Winkler S.Vision-based 3D finger interactions for mixed reality games with physics simulation[C]//Proceedings of the 7th ACM SIGGRAPH International Conference on Virtual-Reality Continuum and its Applications in Industry.[S.l.]:ACM,2008.