顧 德,李 吉
江南大學 輕工過程先進控制教育部重點實驗室,江蘇 無錫 214062
使用手勢進行交流是人機交互(HCI)研究方面的一個流行領域,一些研究者提出使用手部運動軌跡[1-3]或者數據手套與媒體播放器進行交互操作。基于視覺的手勢識別系統也在文獻[4-5]被提出,并且多數研究方法需要使用者佩戴額外設備[6-10]。基于數據手套的方法雖然可以獲得較精確的手部或手指數據,但是使用者必須借助額外設備,這一顯著缺點使得該類方法在將來必然要被淘汰。而基于視覺進行手勢識別的方法易受光照變化及復雜背景影響,一直是一個未能落實的難點。為了解決這些問題,選擇基于深度信息的檢測方法,結構光技術采集的深度數據魯棒性好,精度高,并且可以實現實時檢測,是一個很有前景的研究方向。
近來,隨著傳感器技術的發展,基于深度信息的識別技術受到越來越多人的關注。TOF(飛行時間法)攝像機[11],結構光技術因為昂貴價格,使得該類深度技術一直未能被廣泛利用,直到微軟公司推出Kinect攝像機。Kinect使得在黑暗環境和復雜背景環境下進行廉價且穩定的手勢識別成為可能,這些基于深度信息的傳感器技術提供了相對穩定的深度信息。一些研究人員使用深度數據進行手勢軌跡的跟蹤研究,但是沒有多少研究者使用其提供手指跟蹤層次的人機交互方案。
Bergh等人[12]使用TOF攝像機增強識別,他們的系統可以識別6種手勢。基于RGB信息的識別精度為99.54%,基于深度信息的識別精度為99.07%,整合后的識別精度為99.54%。Yang等人[1]使用Kinect提供的深度信息產生一個手部運動軌跡識別系統,并應用在一個媒體播放程序中。手掌軌跡由一個3D特征向量進行檢測,手勢采用隱馬爾科夫模型進行識別。該系統論證了采用近紅外攝像頭進行非接觸式手勢識別的可行性,但是該系統不能偵測指尖數據。這使得它僅能用于跟蹤揮手、向上伸、向下伸、前推、后拉等基本的手掌運動軌跡。Tuntakurn等人[13]使用Kinect自帶的人體骨骼識別技術進行粗略的手掌位置判定,而后識別指尖并將手勢應用于一個醫療軟件。這樣使得當攝像頭不能完整識別一個人的上體骨骼時該算法便不能正常工作。
本文使用Kinect for Windows獲取使用者的手勢,將手勢和預先定義的手勢庫進行比較,并呈現相應的匹配結果。這個系統顯示了僅使用人手作為輸入介質進行人機交互的前景。本方案使用C#在Microsoft Visual Studio 2010下開發完成,用單手進行手勢信息的輸入。采用近紅外攝像頭獲取深度信息,因此光照條件、使用者的膚色和衣著,以及環境背景對于本系統幾乎不產生任何影響。若將本系統整合到其他各種應用程序中,它的識別精度和魯棒性必然可以在日常生活中大有作為。
設備輸出的深度圖像分辨率為640像素×480像素,320像素×240像素,80像素×60像素3檔,這里采用640像素×480像素分辨率。首先將Kinect放置于水平桌面,使用者的手離近紅外攝像頭距離約0.8 m,這樣設備可以提供一個大小恰當的手部深度圖像,也不會對手的運動空間有所約束。在整個系統運行前,需要用戶正對攝像頭張開五指提示設備開始手勢檢測,同時也獲取了手掌的尺寸S(見2.2節)。
本文的算法假設使用者的手掌與攝像頭的投射平面所成角度在正負30°內,在實踐中,此約束很少會影響操作,因為使用者的手掌直接面向傳感器操作是很正常的。
本文設計的系統包括3個主要組成部分:手部分割、特征提取、手勢識別。
第一步需要把手部圖像從背景中分離出來,假定使用者用于做手勢的手離攝像頭最近,為了去除手腕和部分手臂的深度圖像,需要對整個圖像進行閾值分割。首先使用深度值z=z0+σz分段前景背景,其中z0是探測到的所有像素點中離攝像頭最近的那一點的深度值,σz是一個和手掌尺寸S有關的閾值。
一個像素點的上、下、左、右4個相鄰點都存在時該點為內點,反之為輪廓點。為了避免之后計算輪廓和掌心時反復檢查矩陣,使用兩個無關的數組分別存儲輪廓點和內點。從左至右,從上到下,遍歷獲得的所有像素點的深度數據,直到獲取第一個可用的像素點數據。以該點為初始點,區分出手掌的內點和輪廓點,獲得輪廓數組。每當一個點添加到存儲輪廓點的數組時便被標記為已訪問,當完成了一個手的輪廓后,程序將通過剩下的輪廓點去尋找另一個手。使用的輪廓排序算法流程圖如圖1所示。

圖1 輪廓排序算法流程圖
獲取手部輪廓后,先尋找手掌的中心點。本文定義手掌的最大內切圓的圓心為手掌中心,相比于選取整個手掌輪廓的形心,這樣獲取的手掌中心坐標較為穩定。因為它避免了手指伸展或閉合對掌心坐標的影響。掌心滿足如下公式:

其中,Pb為輪廓點坐標,Pi為內點坐標,min{d(Pi,Pb)}為每一個內點與所有輪廓點之間距離的最小值,取其最大值的內點坐標為掌心坐標。手掌尺寸S定義為手掌中心點與距離最近的輪廓點之間的距離:

圖2中紅點為檢測到的指尖,黃點為非指尖點,綠點為指蹼,藍點為用于計算指尖的一對輪廓點。首先,沿著手部輪廓,對每一個輪廓上的P(i)點,尋找對應的P(i-k)點和P(i+k)點。獲取P(i-k)和P(i+k)之間的中點,并計算該中點與P(i)之間的距離。若距離大于一個閾值δ,則認為P(i)是一個潛在指尖點。在潛在指尖點中,需要舍去檢測出的指蹼,以便獲得真正的指尖點。例如,對于P(i)點首先計算P(i)點與掌心之間的距離,再計算P(i-k)和P(i)的中點與掌心之間的距離。如果前者大于后者,P(i)即為指尖,否則為指蹼。

圖2 指尖算法示意圖

圖3 指尖標定示意圖

圖4 手勢識別示意圖
此外,通過P(i)點做P(i-k)和P(i+k)之間中點的垂線可以獲得代表手指朝向的矢量。當P(i)點離掌心的距離大于閾值γ時,認為手指為伸展狀態,否則為彎曲狀態。γ為一個與手掌尺寸S成比例的標量。
本文采用指尖點的三維坐標進行手指標定。首先使用者需要正對攝像頭張開5指,當探測到5個指尖時系統開始手指標定(如圖3)。
(1)第一步先確定大拇指。一般而言,此刻5個手指中離攝像頭最近的為大拇指;也對系統進行人手外形訓練輔助探測大拇指。本文同時采用以上兩種方法檢測大拇指以提高標定正確率。
(2)在彼此相鄰的手指中,拇指和食指之間的距離最大。由此可以標定食指。
(3)在所有手指中,離大拇指最遠的是小指。
(4)因為已經獲取了食指坐標,離食指最近的為中指。
(5)剩下的便是無名指。
手指標定算法在輸入數據改變時會持續更新標定結果,如果在后一幀圖像中依舊可以檢測到相同目標,已標定的手指將不進行更新。
手指標定后便可以進行手勢識別,本文定義了3個分類器處理手勢數據。首先計算偵測到的手指數目,并確定其是伸展狀態或者彎曲狀態。如果偵測不到某根手指,默認該手指為閉合狀態,之后將信息發送給對應該手指數目的第二層分類器。如果在第二層分類器中僅有唯一的手勢匹配該手指數目,就將該手勢作為識別結果,否則繼續進行手指矢量匹配。矢量a和矢量b之間的夾角α由公式3定義:

手指矢量匹配對每一對伸展開的手指之間的夾角進行測量,然后映射到相應手勢,從而判別使用者輸入的是何種手勢。
比如對“I love you”手勢的識別(如圖4),系統首先探測到手指數目為3,且拇指、食指和小指均為伸展狀態,之后對拇指、食指及小指之間的矢量夾角進行測量;夾角在定義的閾值區間內便識別出該手勢,其他手勢同理可得。
為了考慮光照環境變化對本方案的影響,由5個手掌不同大小的人分別進行多次測試。使用Kinect Studio采集視頻流并對指尖識別結果進行驗證。圖5為使用編寫的程序進行實時指尖追蹤寫出字母“a”。
文獻[14]對手部圖像使用圓形過濾去除手掌部分獲得手指圖像,再取其中深度值最小的點為指尖。在檢測到掌心的情況下,指尖檢測正確率約為90%。文獻[15]采用基于形狀特征的方法進行手指檢測,正確率約為89%。表1為在實驗室內進行日光燈環境、復雜背景環境及陰暗環境下應用本文算法的指尖檢測識別率,約為95%,比文獻[14]的90%和文獻[15]的89%都高。

表1 不同光照環境下指尖識別率
選用了11個手勢來測試本文算法的可行性,每個手勢由5個手掌不同大小的人分別進行多次測試。手勢庫及不同光照環境下的識別率分別為圖6和表2所示,實驗結果表明本文的指尖探測和手勢識別在不同的光照環境下具有較好的魯棒性。

圖6 手勢識別示意圖

表2 不同光照環境下手勢識別率
本文提出了一個基于使用近紅外設備獲取的深度圖進行手勢識別的方案。首先利用近紅外攝像頭獲取可靠的深度信息,數值歸一化后使用深度數據分割手部前景。再使用K-curvature算法取得指尖坐標,同時計算獲得手指朝向,掌心坐標等手部特征值。之后采用指尖標定算法標定手指,并設計了3個分類器處理手勢數據以判定正確的手勢結果。實驗結果表明本文方案穩定且高效,基本不受背景光照條件變化的影響。該方案采用C#編寫,使用一臺CPU為Core-i3 3.30 GHz的臺式機進行測試。測試的深度數據來自微軟生產的Kinect for Windows,分辨率為640×480。今后的工作是通過改善算法去識別非正面手勢,來增強識別算法的穩定性。
[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,Fihl 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,Faisal 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.