基于unity和kinect的交警手势识别仿真系统的设计和实现
2016-11-23周天彤徐飞林张旖帆
周天彤,徐飞林,张旖帆,邹 凌
(1.常州大学信息科学与工程学院,江苏 常州 213164;2.常州市生物医学信息技术重点实验室,江苏 常州 213164)
基于unity和kinect的交警手势识别仿真系统的设计和实现
周天彤1,2,徐飞林1,张旖帆1,邹凌1,2
(1.常州大学信息科学与工程学院,江苏常州213164;2.常州市生物医学信息技术重点实验室,江苏常州213164)
为研究计算机辅助驾驶系统中交警手势的识别,搭建了一个虚拟驾驶场景的实验室研究仿真系统;采用了微软公司的Kinect设备采集人体骨骼数据,经由经验模型提取特征并使用模式识别对交警手势信号进行信号分类,使用unity公司的unity3D软件实现虚拟驾驶场景的三维重建;系统测试表明,使用kinect进行手势识别响应快,准确率高,使用unity作为虚拟驾驶场景的开发平台方便快捷,两者组合非常适宜搭建基于视觉的辅助驾驶系统的仿真环境。
骨骼跟踪;手势识别;计算机辅助驾驶;虚拟现实
0 引言
无人驾驶自动车辆是先进城市公交的一个重要发展方向,城市交通中与交警的交互是十分关键的。一般而言,交警通过交通手势来进行现场指挥,采集和识别交警的手势语言就成为了识别交警指令的重要环节。国内的研究者采用多种方法对交警手势识别进行了研究:Yuan Tao,Wang Ben等设计了一种交警-信号灯同步系统,该系统利用依附于交警双手手背的三轴加速度传感器并对所获得的数据进行手势运动学的加速度特征分析从而识别交警的手势信号[1];R.Sathyaa,M.Kalaiselvi Geethab等则采用了无随身设备的方案,该方案从对准交警的视频流中提取差分帧,针对焦点区域(ROI)提取累积区域强度特征(CBIV)作为特征进行分类和识别,从而提取交警指挥信号[2]。在信号识别方面,安云肖通过静态图像特征提取的方法提取了人体面积特征和骨架特征,针对特定交警手势进行建模,对现场采集到的交警图像进行模式匹配[3];吴巧,霍亮生等提取彩色摄影机的影像并预处理,使用图像的轮廓特征进行模式匹配[4]。
微软新近推出的kinect体感设备使用CMOS红外传感器,以30帧/秒的速度采集景深数据流,通过预置的机器学习系统后可以获得人体骨骼数据,从而大大降低了人体动作采集的成本,可以将研究人员的注意力更多地放到问题上来。淦创使用kinect通过追踪2个距离手部最近的关节点,再判断深度数据变化的方法来进行手势识别[5]。刘阳,尚赵伟等通过kinect的关节点的运动轨迹,使用特征加权动态时间规整算法(Feature Weighting-Dynamic Time Warping,FW-DTW)进行手势边界的分割和识别[6]。
虚拟现实是虚拟现实技术是现代仿真技术的一个重要发展方向,随着技术的发展,虚拟现实逐步发展到想象,交互,沉浸的3I技术[7]。而构建虚拟现实的技术手段也在与时俱进。刘保卫使用了3DSMAX作为虚拟现实的开发工具,对虚拟现实场景进行了研究[8];况迎辉等使用OpenGL作为虚拟现实的开发平台对虚拟矿道进行三维重建[9];赵美荣等使用kinect采集人手数据,在unity平台上对虚拟抓握的碰撞算法进行了研究[10]。
在研究kinect识别交警手势时,大多数研究者们采用了离线识别的方式,使用虚拟现实系统进行在线识别和三维重建,能直观地体现手势识别的效率和准确性,可以给研究人员以感性认识。在unity3D平台上将三维重建应用于kinect的交警手势识别,这方面的文献尚不多见。
1 使用unity3D设计手势识别仿真系统
交警手势识别仿真系统,如图1,中包含了对应于测试者的avatar对象和其他辅助测试对象,例如运动的小车和静止的交通灯等,这些主要对象处在一个事先定义的场景中,此外还有一些次要对象,例如光源,粒子系统等。仿真系统的原理是通过kinect for windows(2.0)通过红外景深摄像头可以获得景深数据,将这些深度数据转换为人体的空间坐标,辅以虚拟空间中各个对象进行互动,实现三维重建。其主要步骤为个体识别,人体部位分类及关节识别。Kinect内预置的机器学习模块先对人体部位分类,进而再推断出关节点的位置,最终将关节点坐标提供用户。unity3D和kinect的坐标空间并不相同,本设计采用了第三人称视角,将kinect获取的骨骼数据进行三维重建,然后在屏幕上进行反馈,因此需要对坐标系统进行转换,如图1。
图1 手势识别仿真系统
1.1kinect到unity3D坐标系的转换
Kinect包含3种坐标系:彩色图像二维坐标,深度图像空间坐标以及相机空间坐标系。骨骼跟踪使用的是相机空间坐标系。
参考卡耐基梅隆大学的开源项目Kinect Wrapper[7]的方法,要完成关节点从Kinect骨骼空间坐标系到unity世界坐标的转换,可以先假定以下条件:
1)Kinect放置在高度为1 m的地方sensor Height=1。
2)相对于地面Kinect被注册为0,0,0 KinectCenter=(0,0,2)。
3)相对于Kinect Center,Kinect传感器朝向的点,look At=(0,1,0,0)。
首先将关节点坐标变换到unity的世界坐标系中。从图1可以看出unity中世界坐标系与Kinect骨骼坐标系Z轴的方向刚好相反。所以先对关节点沿Z轴进行翻转。翻转矩阵为(1)式:
接着 建立平 移矩阵,以(-KinectCenter.x,sensor Height-KinectCenter.y,-KinectCenter.z)即以(0,1,-2)向量进行平移,得到平移矩阵(2)。
最后建立旋转矩阵,根据kinect帮助所提供的计算公式(3)
来计算旋转角度。由图(1)可以看到,在进行了z轴翻转以后,kinect的朝向和unity的朝向一致,得到旋转矩阵(4)式:
最后得到Kinect到世界坐标的转换矩阵(5):
通过使用MultiplyPoint3x4方法就可以完成位置变换。如图2所示A(0,0,0)点经矩阵变换为A'(0,1,2),B(1,1,1)经矩阵变换为B'(1,2,1)。
图2 世界坐标转换实例
1.2三维模型avatar与关节点的绑定
avatar是仿真系统中测试者/操作者的化身,使用kinect所获得的关节点运动数据来驱动虚拟人物模型。在unity3D系统中需要将关节点数据到绑定到avatar节点。通过自动适配(Automap)模式,unity3D自动识别人物结构并指定好骨骼结构。这样就可以快速方便的选中所需要的模型关节点。
在物理模型上绑定关节点数据后,需要在程序逻辑上关联这些关节数据。将Kinect捕捉获取到的关节点数据进行重定向处理后将这25个关节点的数据通过Kinect ModelControlle-r V2中提供的updata方法更新到虚拟角色模型的每一帧画面。
将关节点绑定好后,接下来就可以对其进行三维重建操作,图3介绍了重建流程。在初始化阶段,系统保存了avatar的世界坐标和状态向量,以及虚拟空间中各个对象例如随机产生的汽车的世界坐标,启动kinect开始获取互动者骨骼数据后,进入帧循环,将Kinect骨骼数据通过前述公式(5)映射到世界坐标,然后叠加到avatar的模型关节点。
图3 三维重建流程图
2 交警手势的识别
2.1kinect动作识别
广义上识别的包含有两种方式:静态姿势识别和动态手势识别,这两种识别优缺点与使用环境都不尽相同。静态识别方式是通过静态的图像帧来分析获得人体图像,其优点是算法成熟稳定性高,但是对于运动情况下的人体姿势识别率较低,适用场合较小;动态识别方式则通过连续的图像帧或差分帧来进行算法分析肢体的连续动作,其优点是适用场合较宽泛,使人更易与计算机进行交互,但是由于算法尚不稳定,各人动态行为具有个体特性较强,因此识别的出错率较高。
在本设计中,为了实现姿势识别的稳定性,采取对交警的静态姿势识别的方式来识别手势信号:首先从交警手势中选取特征姿势向量,然后把三维空间里的特征姿势投影到二维计算平面上,最后选取合适的关节点,进行向量夹角计算,以关节角作为特征通过经验模型进行模式识别,识别成功则触发预先定义好的动作事件。
2.2交警手势信号识别
交警手势信号识别的依据是《中华人民共和国道路交通安全法》及其实施条例。实施条例中包含了多个交警手势规范,图4为较典型的左转手势的识别。
条例规定了交警左转弯手势的动作规范为右臂向前平伸,掌心向前;左臂与手掌平直左转弯信号左转弯信号向右前方摆动,掌心向右。根据规定,经验模型的设计选取姿势在YZ面上的投影,以双肩中央(SpineShoulder)到脊柱中段(Spine-Mid)为向量一,以左肘关节(Elbowleft)到(Wristleft)为向量二,计算向量一与向量二之间的夹角,如果夹角在(35,55)之间,且身体右肩(Shoulder Right)与右肘(ElbowRight)的高度差小于0.15,则判断为左转手势。
图4 交警左转手势及相应数学模型
3 场景创建和互动对象的实现
本仿真系统中包含了一些互动对象,例如接受交警指挥行进的汽车和与交警手势同步的信号灯等。这些互动对象可分为动作对象和静止对象,对于动作对象,例如虚拟汽车,unity提供了由NVIDIA设计的可以执行复杂物理运算的PhysX物理引擎系统。
将物理引擎匹配到虚拟车辆时,需要给车辆添加刚体(Rigidbody)组件,这样车辆就会拥有质量属性,从而遵循万有引力定律,给车辆添加一个盒子碰撞器(Box Collider),可以与地面产生碰撞之后确保车辆不会下落。为使车辆产生运动效果,还需要在车辆上附加程控的车轮碰撞器(Wheel Collider)。在脚本程序中,控制车轮碰撞器组件的电机力矩(motor Torque)和转向角(steer Angle)就可以实现车辆的前进,后退,左转,右转,加速,减速等物理行为。
4 系统测试
仿真系统的测试分为两个步骤,首先是动作测试,其测试目的是测试avatar是否跟随操作者运动,以及随动效率。测试的动作选择动作幅度较大的抬腿动作,当测试者抬起右脚,kinect检测到测试者抬起右脚,虚拟人物模型就会跟随测试者动作抬起右脚,其响应效率极高,基本感觉不到动作延迟,说明微软的骨骼识别算法具有很高的效率。
仿真系统测试的第二个环节是手势识别有效性测试。测试者模仿交警各种交通指挥手势,系统检测到该手势信号,便控制虚拟场景中的互动元素做相应的行为。测试者模仿交警的直行放行手势时,虚拟场景中的汽车正在通过路口。测试结果表明当测试者动作幅度较缓慢时能够准确识别交警信号,然而测试者动作幅度较大时,有误识别现象。这证明了手势识别系统中,采用前述静态手势识别具有较好识别静态或者缓慢运动的体姿的特点,而在真正的辅助驾驶应用中,需要考虑动态体姿识别作为静态体姿识别的补充。
5 结论
本设计针对传统三维重建的方法方式具有成本高昂,结构复杂,开发周期长等问题,提出基于Kinect骨骼数据进行人体三维重建,并使用unity构建虚拟现实的手势识别仿真系统的方案,对该仿真系统的识别有效性,互动有效性和识别效率做了检验。构建仿真系统和测试实现的结论是使用kinect作为手势识别的技术和性,采用unity 3D作为虚拟现实的场景架构,具有开发方便,响应快捷,识别准确的特点,可以用于辅助驾驶或自动驾驶系统的的手势识别模块的研究。
[1]Yuan Tao,Wang Ben,et al.Accelerometer-based Chinese Traffic Police Gesture Recognition System[J].电子学报:英文版,2010:270-274.
[2]Sathya R,Geetha M K.Framework for Traffic Personnel Gesture Recognition[J].Procedia Computer Science,2015:1700-1707.
[3]安云肖.基于视觉静态交警手势识别算法的研究 [D].天津:河北工业大学,2009.
[4]吴巧,霍亮生.交警手势的图像处理与识别[J].北京工商大学学报:自然科学版,2009,27:33-36.
[5]淦创.基于3D体感技术的动态手势识别[J].光电技术应用,2012,27(4):55-58.
[6]刘阳,尚赵伟.基于Kinect骨架信息的交通警察手势识别[J].计算机工程与应用,2015:157-161.
[7]邹湘军,孙健,何汉武,等.虚拟现实技术的演变发展与展望[J].系统仿真学报,2004(9):1905-1909.
[8]刘保卫.虚拟现实场景的建模特点及生成效果[J].,计算机工程与应用,2014:137-141.
[9]况迎辉,王成,姜晓彤.基于虚拟现实技术的煤矿事故三维重现[J].计算机测量与控制,2010,18:2885-2887.
[10]赵美荣,田卫萍,熊风光,等.基于Kinect和Unity的虚拟手抓取碰撞检测算法[J].计算机测量与控制,2015(6):2076-2078.
Design and Implementation of Simulation System About Traffic Police Gesture's Recognition Based on Unity and Kinect
Zhou Tiantong1,2,Xu Feilin1,Zhang Yifan1,Zou Ling1,2
(1.Faculty of Information Science&Engineering,Changzhou University,Changzhou213164,China;2.Changzhou Key Laboratory of Biomedical Information Technology,Changzhou213164,China)
In order to study about traffic police gesture's recognition in computer aided driving system,a laboratory system is built to simulate on virtual traffic scene.The device Kinect produced by Microsoft is used to gather the body skeleton data,then features are extracted through experience mode,pattern recognition of traffic police gesture's is used for signal classification,a software Unity 3D produced by Unity is used to realize three-dimensional reconstruction of the virtual traffic scene.The system test shows that using Kinect to recognize gesture can get quickly response and high accuracy rate,and using unity 3D as development platform to realize virtual traffic scene can be convenient and efficient,the combination of both are very suitable for building the computer aided driving system based on visual simulation environment.
skeleton tracking;gesture recognition;computer aided driving;virtual reality
1671-4598(2016)05-0156-04
10.16526/j.cnki.11-4762/tp.2016.05.045
TP3
A
2015-09-25;
2015-12-07。
国家自然基金项目(61201096);常州市科技项目(CE20145055);江苏省青蓝工程资助。
周天彤(1972-),男,江苏常州人,讲师,主要从事脑-机接口方向的研究。
邹凌(1975-),女,辽宁辽阳人,教授,主要从事脑-机接口方向的研究。