李富蕓 符謀松
摘要:伴隨計算機技術的發(fā)展,人機交互技術歷經“命令行界面”—“圖形用戶界面”—“自然用戶界面”的發(fā)展歷程。該文探索使用低成本的Kinect體感器,在貼近人們習慣的前提下,讓用戶以便捷自然的動作與虛擬場景漫游系統(tǒng)交互,給用戶帶來無接觸式漫游體驗。
關鍵詞:動作識別;虛擬漫游;Kinect;骨骼跟蹤;人機交互
中圖分類號:TP3 ? ? ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2020)28-0015-03
Abstract:With the development of computer technology, human-computer interaction technology has gone through the development process of "command line interface""graphical user interface" and "natural user interface". This paper explores the use of low-cost Kinect body sensor, in close to the premise of people's habits, let users interact with the virtual scene roaming system in convenient and natural actions, and brings users contactless roaming experience.
Key words: motion recognition;virtual roaming; Kinect; skeleton tracking; human-computer interaction
隨著科學技術的發(fā)展,虛擬漫游中使用鼠標、鍵盤等傳統(tǒng)的交互設備已經不能滿足人們的人機交互要求。鼠標、鍵盤來控制漫游的方式不免會讓用戶體驗不佳,不能充分發(fā)揮虛擬漫游的沉浸感。也有為了增強沉浸感而采用可穿戴的設備,如數據手套、位置跟蹤器等,但這些設備多數為特殊應用定制,軟件平臺不通用,難以在虛擬漫游中普及和推廣。
Kinect體感器無須任何手持或可穿戴設備即可完成自然人機交互,即可通過肢體動作、手勢、姿態(tài)、語音等自然方式與終端交互,這種自然的人機交互方式將會給用戶帶來自然真實的感受。
本文針對虛擬漫游中傳統(tǒng)交互設備用戶體驗不佳的問題,基于Kinect設計了4種便捷動作,將每一種動作對應于一種命令,從而給用戶帶來無接觸式漫游體驗。
1 Kinect體感器獲取動作信息
1.1 Kinect體感器
Kinect體感器是微軟推出的智能體感外設,硬件主要由彩色攝像頭、深度(紅外)攝像頭、紅外線投射機和四元線性麥克風陣列組成,如圖1所示。利用Kinect體感器可以獲取到彩色圖像數據、深度圖像數據、骨骼數據以及音頻數據。
1.2 Kinect體感器獲取人體骨架
Kinect的骨骼跟蹤是其核心技術之一,它可以對人體25個關節(jié)點進行準確標定和關節(jié)點位置的實時跟蹤。骨骼跟蹤是在深度圖像的基礎上,利用機器學習方法逐步實現的。第一步是人體輪廓分割,判斷深度圖像上的每個像素是否屬于某一個用戶,過濾背景像素。第二步是人體部位識別,從人體輪廓中識別出不同部位,例如頭部、軀干、四肢等肢體。第三步是關節(jié)定位,從人體部位中定位25個關節(jié)點,生成骨骼圖如圖2所示。
2 動作交互控制
2.1動作設計
自然人機交互設計應該遵循如下原則:
(1)最大契合動作習慣:這一點正是自然交互的要求,讓每一個交互動作都符合日常的動作習慣,比如抬腿表示走動、左右揮手表示切換等。
(2)最小相互干擾:無論算法多么精確,都會存在一定的誤識別現象,尤其是相似的動作姿態(tài)。所以在交互設計的時候應該盡量避免相似的動作,尤其是避免在同一時刻用相似的動作表示不同的操作。
(3)最小識別時間:對于手勢識別和語音識別的高誤識別率來說,如果長時間開啟,會將很多小動作、小聲音誤識別為目標操作。因此應該最大限度地縮小這種識別的持續(xù)時間,最好是利用姿態(tài)識別,僅僅在需要進行手勢識別的時候才開啟。
(4)讓用戶的肢體移動幅度盡可能小,減少交互給用戶帶來的疲勞度和厭煩感。
遵循上述原則,可以最大限度地提高Kinect應用的交互體驗,并避免誤操作,誤識別[1]。本文遵循上述原則,設計的動作有如下4種:左手向左揮,右手向右揮,左腳向前伸,左腳向后伸,對應場景的效果如表1所示。
2.2動作識別算法
本文設計的4種動作,“左手向左揮、右手向右揮”此兩種動作用到的是左肩關節(jié)點和左腕關節(jié)點,右肩關節(jié)點和右腕關節(jié)點。為了適應不同身高、不同體形的用戶,使得軟件具有用戶自適應性,先利用左右肩關節(jié)點計算出用戶的肩膀寬度,取肩膀寬度的一半作為閾值Threshhold。
若“左肩關節(jié)點X坐標”與“左腕關節(jié)點X坐標”的差值大于閾值,代碼為:
(body.Joints[JointType.ShoulderLeft].Position.X - body.Joints[JointType.WristLeft].Position.X)>
Threshhold,則判斷為“左手向左揮”;
若“右腕關節(jié)點X坐標”與“右肩關節(jié)點X坐標”的差值大于閾值,代碼為:
(body.Joints[JointType.WristRight].Position.X-body.Joints[JointType.ShoulderRight].Position.X)>Threshhold,則判斷為“右手向右揮”;
“左腳向前伸、左腳向后伸”此兩種動作用到的是左右踝關節(jié)點。
若右踝關節(jié)點比左踝關節(jié)點的Z坐標大于閾值,代碼為:
(body.Joints[JointType.AnkleRight].Position.Z-body.Joints[JointType. AnkleLeft].Position.Z)>Threshhold,則判斷為“左腳向前伸”;
若左踝關節(jié)點比右踝關節(jié)點的Z坐標大于閾值,代碼為:
(body.Joints[JointType. AnkleLeft].Position.Z-body.Joints[JointType. AnkleRight].Position.Z)>Threshhold,則判斷為“左腳向后伸”。
2.3漫游控制流程圖
2.4場景交互漫游
在漫游控制中,利用4種用戶動作控制相機視角變化。當檢測到“左腳向前伸、左腳向后伸”動作時,通過positon屬性設置相機的移動;當檢測到“左手向左揮、右手向右揮”動作時,通過rotation方法設置相機的旋轉。在相機旋轉時,設定相機沿Y軸旋轉來實現水平旋轉。
3用戶體驗與結果分析
測試時用戶面向攝像頭做出4種動作,以第一人稱視角對虛擬場景進行漫游,效果如圖4所示。本文使用動作交互代替?zhèn)鹘y(tǒng)的鼠標鍵盤交互,體驗者從動作識別的準確性、動作設計的合理性、交互的實時性對場景漫游交互設計做出評價,感受在虛擬場景漫游過程中的體感交互效果,整體來說軟件的綜合體驗效果比較理想。
4結語
本文設計并實現了在虛擬漫游系統(tǒng)中加入了動作交互控制方法,使系統(tǒng)脫離外接的控制硬件,真正實現了人與計算機的自然交互,給用戶帶來無接觸式漫游體驗,期待能為今后相關系統(tǒng)的開發(fā)提供參考。
參考文獻:
[1] 吳國斌,李斌,閻驥洲.KINECT人機交互開發(fā)實踐[M].北京:人民郵電出版社,2013.
[2] 劉開余,夏斌.基于Kinect的實時人體姿勢識別[J].電子設計工程,2014,22(19):31-34.
[3] 謝亮,廖宏建,楊玉寶.基于Kinect的姿勢識別與應用研究[J].計算機技術與發(fā)展,2013,23(5):258-260.
[4] 徐屹.基于自然人機交互技術的虛擬漫游系統(tǒng)設計[D].長沙:中南大學,2013.
[5] 毛雁明,章立亮.基于Kinect骨架追蹤技術的PPT全自動控制方法研究[J].海南大學學報(自然科學版),2015,33(3):215-220.
【通聯編輯:代影】