樊景超 周國(guó)民
摘要
為了實(shí)現(xiàn)自然方便的人機(jī)交互,提高用戶體驗(yàn),嘗試引入微軟公司的一款體感周邊外設(shè)Kinect設(shè)備,利用Kinect 傳感器所獲取的人體骨骼跟蹤識(shí)別點(diǎn),通過(guò)對(duì)雙手在三維空間中的位置坐標(biāo)轉(zhuǎn)換,對(duì)縮放、旋轉(zhuǎn)的手勢(shì)進(jìn)行匹配,將合法的手勢(shì)信息轉(zhuǎn)換為識(shí)別結(jié)果,反饋給系統(tǒng)并完成相應(yīng)的控制指令輸出,實(shí)現(xiàn)與系統(tǒng)的交互控制。結(jié)果表明,該系統(tǒng)具有較高的精度和穩(wěn)定性,具有一定的借鑒意義。
關(guān)鍵詞 骨骼跟蹤;手勢(shì)識(shí)別;Kinect
中圖分類號(hào) S126 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 0517-6611(2014)11-03444-03
Abstract In order to achieve a natural humancomputer interaction to facilitate and improve the user experience, this research attempt to introduce a Microsofts peripheral Kinect somatosensory peripheral equipment. Using Kinect sensor acquired identification of the human skeleton tracking point, by the hands of the position in three dimensional space coordinate conversion for scaling, rotation gesture match. The information is converted into a valid gesture recognition result, the system and complete the feedback control command output, controlling interaction with the system. Experimental results show that the system has higher precision and stability, with a certain significance.
Key words Skeleton tracking; Gesture recognition; Kinect
鼠標(biāo)作為傳統(tǒng)的圖形人機(jī)交互界面的主要設(shè)備,長(zhǎng)期以來(lái)在計(jì)算機(jī)操作中處于主導(dǎo)地位,但是鼠標(biāo)只能用單手操作,無(wú)法將人自然生活的雙手操作技能應(yīng)用于人機(jī)交互之中[1]。這種操作系統(tǒng)需要操作由圖標(biāo)和菜單構(gòu)成的基于GUI 的應(yīng)用程序界面,導(dǎo)致這種界面通常具有陡峭的學(xué)習(xí)曲線[2]。理想的自然交互界面的發(fā)起者認(rèn)為交互界面的設(shè)計(jì)應(yīng)該對(duì)用戶非常直觀,使用用戶先天就會(huì)的行為來(lái)進(jìn)行交互是操作理想化的狀態(tài),用戶走到應(yīng)用程序前面就能夠開(kāi)始使用它[3]。在過(guò)去的幾年里,隨著觸摸功能在智能手機(jī)和平板電腦的流行,輕點(diǎn)(Taps)已經(jīng)成為觸摸平臺(tái)的核心,逐漸取代了鍵盤(pán)鼠標(biāo)[4]。當(dāng)看到孩子們開(kāi)始走到任何觸摸屏設(shè)備面前,用手去觸摸它,期待它的響應(yīng)時(shí),在這一點(diǎn)上看這一理念已經(jīng)逐步實(shí)現(xiàn)。
為此,筆者利用Kinect 傳感器的骨骼跟蹤技術(shù), 捕獲用戶手勢(shì)運(yùn)動(dòng)數(shù)據(jù)作為控制信號(hào),并反饋給相應(yīng)的控制軟件,再通過(guò)對(duì)手勢(shì)的特征匹配從而轉(zhuǎn)換為相應(yīng)的控制指令并完成操作, 從而實(shí)現(xiàn)雙手精準(zhǔn)的手勢(shì)操作來(lái)完成相應(yīng)的放大、縮小和旋轉(zhuǎn)功能。
1 Kinect簡(jiǎn)介
1.1 Kinect設(shè)備
Kinect是微軟在2010年6月14日對(duì)XBOX360體感周邊外設(shè)正式發(fā)布的名字,其設(shè)備如圖1所示。Kinect共有3個(gè)攝像頭,中間一個(gè)是RGB攝像頭用來(lái)獲取640×480的彩色圖像,每秒鐘最多獲取30幀圖像;兩邊的是深度傳感器,左側(cè)的是紅外線發(fā)射器,右側(cè)的是紅外線接收器,用來(lái)檢測(cè)玩家的相對(duì)位置。Kinect的兩側(cè)是一組四元麥克風(fēng)陣列,用于生源定位和語(yǔ)音識(shí)別;下方還有一個(gè)內(nèi)置馬達(dá)的底座,可以調(diào)整俯仰角[5]。
1.2 Kinect骨骼跟蹤技術(shù)
Kinect采集三維圖像的光學(xué)部分主要包括兩個(gè)部件:紅外線發(fā)射器和紅外線/VGA攝像頭組。其工作原理[6]是:紅外線發(fā)射器發(fā)出紅外線覆蓋整個(gè)Kinect的可視范圍,攝像頭組接收反射回光線來(lái)識(shí)別玩家的距離和特征。紅外攝像頭可以識(shí)別到的是物體的“深度場(chǎng)”(Depth Field),其中每一像素的顏色代表了那一點(diǎn)物體到攝像頭的距離。比如離攝像頭近的身體呈亮紅色、綠色等,而離攝像頭遠(yuǎn)的物體則呈暗灰色。
這是一種不同于傳統(tǒng)的TOF或者結(jié)構(gòu)光測(cè)量技術(shù)的光編碼(light coding)技術(shù),使用的是連續(xù)的照明(而非脈沖),也不需要特制的感光芯片,而只需要普通的CMOS感光芯片,這也大大降低了 Kinect的成本[7]。光編碼[8]是用光源照明給需要測(cè)量的空間編上碼的一種結(jié)構(gòu)光技術(shù)。但與傳統(tǒng)的結(jié)構(gòu)光方法不同,它投射出去的光源并不是一副周期性變化的二維的圖像編碼,而是一個(gè)具有三維縱深的“體編碼”,這種光源叫做激光散斑(laser speckle)。當(dāng)激光照射到粗糙物體或穿透毛玻璃后會(huì)形成隨機(jī)衍射斑點(diǎn),這些散斑具有高度的隨機(jī)性,而且會(huì)隨著距離的不同變換圖案,所以空間中任意兩處的散斑圖案都是不同的。通過(guò)這種激光散斑可以對(duì)整個(gè)空間進(jìn)行標(biāo)識(shí),然后根據(jù)物體上的散斑圖案就可以推測(cè)計(jì)算出物體的深度位。在進(jìn)行物體散斑識(shí)別前要對(duì)整個(gè)空間的散斑圖案進(jìn)行記錄和標(biāo)定。
骨骼追蹤技術(shù)通過(guò)處理景深數(shù)據(jù)來(lái)建立人體各個(gè)關(guān)節(jié)的坐標(biāo),骨骼追蹤能夠確定人體的各個(gè)部分,如哪部分是手、頭部以及身體。骨骼追蹤產(chǎn)生X、Y、Z數(shù)據(jù)來(lái)確定這些骨骼點(diǎn)。圖2是Kinect骨骼跟蹤技術(shù)對(duì)筆者進(jìn)行跟蹤顯示的20個(gè)關(guān)節(jié)骨骼信息。
2 多點(diǎn)觸控系統(tǒng)設(shè)計(jì)
2.1 縮放手勢(shì)定義
骨骼追蹤技術(shù)的初衷:通過(guò)人體骨骼的關(guān)節(jié)點(diǎn)來(lái)控制人體運(yùn)動(dòng)[10]。在多點(diǎn)觸控系統(tǒng)中縮放手勢(shì)包括放大、縮小和停止3個(gè)。3個(gè)手勢(shì)的共同特征是雙臂手關(guān)節(jié)都在肘關(guān)節(jié)以上,當(dāng)雙手不符合這一基本條件時(shí)認(rèn)為是非縮放手勢(shì)。3個(gè)手勢(shì)的主要差別是雙臂與肘關(guān)節(jié)垂直中線的夾角的不同,這里的夾角根據(jù)左右是對(duì)稱的關(guān)系,左手夾角的值要乘以-1來(lái)判定手臂運(yùn)動(dòng)的方向。據(jù)此定義多
點(diǎn)觸控系統(tǒng)中縮放手勢(shì)的識(shí)別算法如圖3所示。
步驟1:系統(tǒng)在檢測(cè)到人體的骨骼信息之后,首先判斷雙手節(jié)點(diǎn)是否在肘關(guān)節(jié)之上,如果是則進(jìn)入步驟2;否則重復(fù)步驟1。
步驟2:判斷當(dāng)前雙臂是否垂直作為縮放手勢(shì)的啟動(dòng)操作,是則進(jìn)入步驟3;否則退回到步驟1。2.2 旋轉(zhuǎn)手勢(shì)定義
在多點(diǎn)觸控系統(tǒng)中旋轉(zhuǎn)手勢(shì)包括順時(shí)針旋轉(zhuǎn)、逆時(shí)針旋轉(zhuǎn)和停止旋轉(zhuǎn)3個(gè)。3個(gè)手勢(shì)的共同特征是雙臂手關(guān)節(jié)都在肘關(guān)節(jié)的外側(cè),當(dāng)雙手不符合這一基本條件時(shí)認(rèn)為是非旋轉(zhuǎn)手勢(shì)。3個(gè)手勢(shì)的主要差別是雙臂與水平線的夾角的不同,這里的夾角根據(jù)左右是對(duì)稱的關(guān)系,左手夾角的值要乘以-1來(lái)判定手臂運(yùn)動(dòng)的方向。據(jù)此定義多點(diǎn)觸控系統(tǒng)中旋轉(zhuǎn)手勢(shì)的識(shí)別算法如圖7所示。
步驟1:系統(tǒng)在檢測(cè)到人體的骨骼信息之后,首先判斷雙手節(jié)點(diǎn)是否在肘關(guān)節(jié)外側(cè),如果是則進(jìn)入步驟2;否則重復(fù)步驟1。
步驟2:判斷當(dāng)前雙手是否水平作為旋轉(zhuǎn)手勢(shì)的啟動(dòng)操作,是則進(jìn)入步驟3;否則退回到步驟1。
步驟3:用戶揮動(dòng)雙手手臂進(jìn)行選擇操作,系統(tǒng)根據(jù)雙手與水平線的夾角判斷用戶的指令信息。當(dāng)15°≤夾角度數(shù)≤45°時(shí),認(rèn)為是逆時(shí)針旋轉(zhuǎn)手勢(shì);當(dāng)-15°≤夾角度數(shù)≤15°時(shí),認(rèn)為是停止旋轉(zhuǎn)手勢(shì);當(dāng)-45°≤夾角度數(shù)≤-15°時(shí),認(rèn)為是順時(shí)針旋轉(zhuǎn)手勢(shì)。
3 測(cè)試結(jié)果
在普通實(shí)驗(yàn)室環(huán)境下進(jìn)行試驗(yàn),測(cè)試平面表面最大起伏≤ 3 mm,Kinect距離平面垂直高度650 mm,垂直傾角42°,分別對(duì)處理效率和識(shí)別準(zhǔn)確率進(jìn)行了試驗(yàn),結(jié)果如表1所示。從測(cè)試的結(jié)果看,系統(tǒng)對(duì)肢體的幾何信息識(shí)別比較完整,精確度可以滿足手勢(shì)識(shí)別的需求。
4 結(jié)論
該研究基于Kinect精確捕獲被測(cè)對(duì)象骨骼信息空間坐標(biāo)數(shù)據(jù)的方法,實(shí)現(xiàn)了對(duì)人體手勢(shì)運(yùn)動(dòng)特征的識(shí)別。該設(shè)計(jì)所采用的硬件設(shè)備具有低成本、高效率、非依賴性等特點(diǎn)。隨著虛擬現(xiàn)實(shí)在實(shí)際應(yīng)用的進(jìn)一步推廣,自然交互技術(shù)在軟件中的應(yīng)用必將越來(lái)越深入, 交互方式也會(huì)更直觀、便捷。同時(shí)該研究還有一定的不足,由于Kinect 本身在環(huán)境光線較弱時(shí), 對(duì)識(shí)別對(duì)象的檢測(cè)沒(méi)有較好的防抖處理,所以在操作時(shí)會(huì)發(fā)生抖動(dòng)產(chǎn)生的誤差干擾,有待于進(jìn)一步完善。相信該研究必將在更廣闊的領(lǐng)域得到更深層次的應(yīng)用。
參考文獻(xiàn)
[1]
蔡睿妍.基于kinect多點(diǎn)觸控系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程應(yīng)用技術(shù),2012,8(16):3987-3989.
[2] [譯]Kinect for Windows SDK開(kāi)門(mén)入門(mén)(+):手勢(shì)識(shí)別上:基本概念[EB/OL].http://www.cnblogs.com/yangecnu/archive/2012/04/21/KinectSDK_GesturesDetection_part1_BasicConception.html.
[3] 呂開(kāi)陽(yáng).Kinect體感技術(shù)在動(dòng)物外科實(shí)驗(yàn)教學(xué)中的應(yīng)用及展望[J].中國(guó)醫(yī)學(xué)教育技術(shù),2012,26(2):171-173.
[4] 黃康泉,陳碧金,鄭博,等.Kinect在視頻會(huì)議系統(tǒng)中的應(yīng)用[J].廣西大學(xué)學(xué)報(bào):自然科學(xué)版,2011,36(S1):308-314.
[5] 吳國(guó)斌.Kinect人機(jī)交互開(kāi)發(fā)實(shí)踐[M].北京:人民郵電出版社,2013:4-5.
[6] 余濤.Kinect應(yīng)用開(kāi)發(fā)實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2012:41-45.
[7] 韓旭.應(yīng)用Kinect的人體行為識(shí)別方法研究與系統(tǒng)設(shè)計(jì)[D].濟(jì)南:山東大學(xué),2013:21-22.
[8] 鄧小園.基于Kinect運(yùn)動(dòng)捕捉的高爾夫揮桿分析與輔助訓(xùn)練系統(tǒng)的研制[D].北京:北京郵電大學(xué),2013:7-9.
[9] 楊林.基于Kinect的人體目標(biāo)檢測(cè)與跟蹤[D].大連:大連海事大學(xué),2013:8-15.
[10] 馬慶.基于Kinect的實(shí)時(shí)人體動(dòng)畫(huà)合成及重定向技術(shù)研究[D].杭州:浙江工業(yè)大學(xué),2012:11-15.
[11] 楊曉敏,張奇志,周亞麗.基于Kinect深度信息的人體運(yùn)動(dòng)跟蹤算法[J].北京信息科技大學(xué)學(xué)報(bào),2013,28(1): 33-36.
[12] 陶麗君,李翠華,張希婧,等.基于Kinect傳感器深度信息的動(dòng)態(tài)手勢(shì)識(shí)別[J].廈門(mén)大學(xué)學(xué)報(bào):自然科學(xué)版,2013,52(4):493.
[13] 黃露丹,嚴(yán)利民.基于Kinect深度數(shù)據(jù)的人物檢測(cè)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(4):121-124.