基于Kinect的动作识别及其在虚拟漫游中的应用
2020-12-14李富芸符谋松
李富芸 符谋松
摘要:伴随计算机技术的发展,人机交互技术历经“命令行界面”—“图形用户界面”—“自然用户界面”的发展历程。该文探索使用低成本的Kinect体感器,在贴近人们习惯的前提下,让用户以便捷自然的动作与虚拟场景漫游系统交互,给用户带来无接触式漫游体验。
关键词:动作识别;虚拟漫游;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
随着科学技术的发展,虚拟漫游中使用鼠标、键盘等传统的交互设备已经不能满足人们的人机交互要求。鼠标、键盘来控制漫游的方式不免会让用户体验不佳,不能充分发挥虚拟漫游的沉浸感。也有为了增强沉浸感而采用可穿戴的设备,如数据手套、位置跟踪器等,但这些设备多数为特殊应用定制,软件平台不通用,难以在虚拟漫游中普及和推广。
Kinect体感器无须任何手持或可穿戴设备即可完成自然人机交互,即可通过肢体动作、手势、姿态、语音等自然方式與终端交互,这种自然的人机交互方式将会给用户带来自然真实的感受。
本文针对虚拟漫游中传统交互设备用户体验不佳的问题,基于Kinect设计了4种便捷动作,将每一种动作对应于一种命令,从而给用户带来无接触式漫游体验。
1 Kinect体感器获取动作信息
1.1 Kinect体感器
Kinect体感器是微软推出的智能体感外设,硬件主要由彩色摄像头、深度(红外)摄像头、红外线投射机和四元线性麦克风阵列组成,如图1所示。利用Kinect体感器可以获取到彩色图像数据、深度图像数据、骨骼数据以及音频数据。
1.2 Kinect体感器获取人体骨架
Kinect的骨骼跟踪是其核心技术之一,它可以对人体25个关节点进行准确标定和关节点位置的实时跟踪。骨骼跟踪是在深度图像的基础上,利用机器学习方法逐步实现的。第一步是人体轮廓分割,判断深度图像上的每个像素是否属于某一个用户,过滤背景像素。第二步是人体部位识别,从人体轮廓中识别出不同部位,例如头部、躯干、四肢等肢体。第三步是关节定位,从人体部位中定位25个关节点,生成骨骼图如图2所示。
2 动作交互控制
2.1动作设计
自然人机交互设计应该遵循如下原则:
(1)最大契合动作习惯:这一点正是自然交互的要求,让每一个交互动作都符合日常的动作习惯,比如抬腿表示走动、左右挥手表示切换等。
(2)最小相互干扰:无论算法多么精确,都会存在一定的误识别现象,尤其是相似的动作姿态。所以在交互设计的时候应该尽量避免相似的动作,尤其是避免在同一时刻用相似的动作表示不同的操作。
(3)最小识别时间:对于手势识别和语音识别的高误识别率来说,如果长时间开启,会将很多小动作、小声音误识别为目标操作。因此应该最大限度地缩小这种识别的持续时间,最好是利用姿态识别,仅仅在需要进行手势识别的时候才开启。
(4)让用户的肢体移动幅度尽可能小,减少交互给用户带来的疲劳度和厌烦感。
遵循上述原则,可以最大限度地提高Kinect应用的交互体验,并避免误操作,误识别[1]。本文遵循上述原则,设计的动作有如下4种:左手向左挥,右手向右挥,左脚向前伸,左脚向后伸,对应场景的效果如表1所示。
2.2动作识别算法
本文设计的4种动作,“左手向左挥、右手向右挥”此两种动作用到的是左肩关节点和左腕关节点,右肩关节点和右腕关节点。为了适应不同身高、不同体形的用户,使得软件具有用户自适应性,先利用左右肩关节点计算出用户的肩膀宽度,取肩膀宽度的一半作为阈值Threshhold。
若“左肩关节点X坐标”与“左腕关节点X坐标”的差值大于阈值,代码为:
(body.Joints[JointType.ShoulderLeft].Position.X - body.Joints[JointType.WristLeft].Position.X)>
Threshhold,则判断为“左手向左挥”;
若“右腕关节点X坐标”与“右肩关节点X坐标”的差值大于阈值,代码为:
(body.Joints[JointType.WristRight].Position.X-body.Joints[JointType.ShoulderRight].Position.X)>Threshhold,则判断为“右手向右挥”;
“左脚向前伸、左脚向后伸”此两种动作用到的是左右踝关节点。
若右踝关节点比左踝关节点的Z坐标大于阈值,代码为:
(body.Joints[JointType.AnkleRight].Position.Z-body.Joints[JointType. AnkleLeft].Position.Z)>Threshhold,则判断为“左脚向前伸”;
若左踝关节点比右踝关节点的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所示。本文使用动作交互代替传统的鼠标键盘交互,体验者从动作识别的准确性、动作设计的合理性、交互的实时性对场景漫游交互设计做出评价,感受在虚拟场景漫游过程中的体感交互效果,整体来说软件的综合体验效果比较理想。
4结语
本文設计并实现了在虚拟漫游系统中加入了动作交互控制方法,使系统脱离外接的控制硬件,真正实现了人与计算机的自然交互,给用户带来无接触式漫游体验,期待能为今后相关系统的开发提供参考。
参考文献:
[1] 吴国斌,李斌,阎骥洲.KINECT人机交互开发实践[M].北京:人民邮电出版社,2013.
[2] 刘开余,夏斌.基于Kinect的实时人体姿势识别[J].电子设计工程,2014,22(19):31-34.
[3] 谢亮,廖宏建,杨玉宝.基于Kinect的姿势识别与应用研究[J].计算机技术与发展,2013,23(5):258-260.
[4] 徐屹.基于自然人机交互技术的虚拟漫游系统设计[D].长沙:中南大学,2013.
[5] 毛雁明,章立亮.基于Kinect骨架追踪技术的PPT全自动控制方法研究[J].海南大学学报(自然科学版),2015,33(3):215-220.
【通联编辑:代影】