APP下载

基于Kinect的人体动作识别算法研究*

2017-11-03党宏社侯金良张梦腾

电子器件 2017年5期
关键词:关节点实时性骨骼

党宏社,侯金良,强 华,张梦腾

(陕西科技大学电气与信息工程学院,西安 710021)

基于Kinect的人体动作识别算法研究*

党宏社*,侯金良,强 华,张梦腾

(陕西科技大学电气与信息工程学院,西安 710021)

针对现有的复杂背景下人体动作识别中存在识别准确率不高和实时性不强等问题,提出基于Kinect骨骼数据的改进动作识别算法。通过Kinect获取骨骼数据,提取出人体关节的特征向量,然后用模板匹配的方法对人体动作进行识别。通过搭建机器人体感控制系统验证了算法的可行性。在相同实验条件下测得算法的平均识别率为95.2%,平均识别时间为32.5 ms。与其他动作识别算法比较,证明了算法的识别率较高、实时性较好。

模式识别;Kinect;骨骼数据;特征提取;模板匹配;

随着科技进步,特别是传感器技术和芯片制造技术的进步,工程师们正在不停的探索新的人机交互体验。已知的人机交互体验包括声音交互、脑电波交互、人体肢体姿态交互、手势交互等[1]。人体动作识别的研究在计算机视觉、人工智能等领域都具有重要意义,而人体动作识别面临的主要问题是动作的多变性和时空的复杂性。随着动作数量的增加,误识别问题也会凸显。目前,可通过穿戴式传感器如陀螺仪、加速度传感器等,采集人体运动参数对人体动作进行识别,这种方法准确性、实时性高,但附着传感器使穿戴者舒适感降低。在基于计算机视觉的方法中,当前的研究主要是基于2D视觉的动作识别,而系统受到计算机图像处理能力的极大制约,特别是实时图像处理,会受到光照、遮蔽、阴影等因素的制约,对最终的识别结果造成影响[2]。

现有的基于Kinect的人体动作识别算法,基于图像处理和特征匹配的识别算法,例如王艳等人[3]对Kinect的深度图像进行双阈值分割,获取手部图像,再对手部图像进行形态学处理,可实时对手势进行识别。战荫伟[4]等人首先对Kinect的深度图像进行局部梯度特征提取,再结合条件随机场(CRF)模型,提出一种新的人体行为分析方法实现了人体行为的识别。以上算法虽然准确性良好,但其算法过于复杂,模板匹配运算量太大需要大量设备进行并行处理,需要比较高端的处理器。基于滤波预测和轮廓匹配的算法,例如瞿畅等人[5]利用Kinect深度图像技术获取人体深度图像前景图,建立前景图三维包围盒,通过计算三维包围盒的长、宽、高数值以及数值的变化速度,判断人体跌倒是否发生。陈翰雄等人[6]利用Kinect所获取的彩色和深度图像,建立人体骨骼图来定位人体各个关节的位置,根据关节位置对人体动作进行识别。以上算法虽然消除了数据抖动,但其算法的鲁棒性不好,人物发生变化对识别效果有较大影响。

基于以上问题本文提出一种改进的Kinect动作识别算法,利用Kinect的骨骼追踪技术来获取操作者关键点三维坐标,提取出人体的关节向量进行模板匹配。此算法比基于图像处理和特征匹配的识别算法运算简单、实时性更好。比基于滤波预测和轮廓匹配的算法,鲁棒性更好,可对不同光照、不同人物的动作进行识别。

1 Kinect简介

Kinect是微软公司于2011年推出了的一款体感外设[7],如图1所示它主要由红外发射器、RGB摄像头、红外深度摄像头组成,它具有实时的全身骨骼跟踪、运动捕捉以及麦克风输入的功能。并能够通过深度图像来获得人的三维坐标,图像深度信息的获取通过红外线发射器和红外线CMOS摄像机共同来完成。红外线发射器发出红外光覆盖整个待检测区域,同时CMOS摄像机接收反射光线得到深度图像,得到的图像是一个“深度场”,其中每一个像素的颜色代表了那一点物体到摄像头的距离。深度采集范围为0.8 m~4.0 m,输出图像帧率为30,深度图分辨率为640×480。

图1 Kinect相机示意图

Kinect骨架追踪技术的原理:利用红外线传感器通过黑白光谱的方式来识别环境内容,黑与白分别对应着无穷远和无穷近,中间的灰色地带是表示着距离。Kinect利用分割策略将人从环境中分离出来,对于正在运动中的物体进行像素的分析,即在每个图像中建立起一个分割遮罩,将没用的物体去除,仅留下有用的图像。

2 算法实现

2.1 骨骼数据获取

利用Kinect骨架追踪技术,在输出之前会追踪人体的20个关节点来形成一副人体骨架系统,拿每个像素中的关节点与其相比较,这个方式可以准确的确定人体的关节部位。图2为Kinect实时追踪的人体的20个关键点的示意图。由图2可知,这20个关节点覆盖了整个人体,比基于图像处理的人体识别更快、更准确。而基于图像处理和特征匹配的识别算法一般要进行大量的图像处理运算才能得到人体关节点的坐标,运算复杂且误差较大。

图2 人体关键点示意图

通过Kinect的骨骼追踪技术获取的坐标为深度图像坐标,而人体动作识别要在世界坐标中进行,所以首先要将图像坐标换算为实际坐标。(ximage,yimage,zimage)到世界坐标(xworld,yworld,zworld)的变换公式:

(1)

式中:H=3.5×10-4rad,K=12.36 cm,L=1.18 rad,O=3.7 cm,D′=-10,F=0.002 1,那么现在利用以上公式就得到了人体20个关键点的世界三维坐标[7],是特征提取和模板匹配的基础。

2.2 特征提取

在Kinect不标定的情况下识别人体动作,而且操作者和操作者所在位置都可能随时发生变化。基于以上要求,本文算法提取的特征是骨骼关节点坐标的相对位置,即提取关节点坐标向量所成的角度特征,并将人体20个关键点坐标分为上下半身。

由于Kinect每秒钟获取30帧图像,也就是关键点的坐标每秒刷新30次,再加上人身体的抖动,所以Kinect骨骼追踪技术采集到的关节点坐标会有波动。所以首先采用加权递推平均滤波算法对坐标进行滤波,去除坐标的波动,在满足快速性的基础上可使提取的特征更稳定。把连续取N个采样值看成一个队列,队列的长度固定为N每次采样到新的数据放入队尾,并扔掉原来队首的一次数据(先进先出原则)。然后针对不同时刻采用不同的权值,最后把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。公式如下:

(2)

在滤波基础上计算角度特征,先由三维坐标计算出关键点之间的向量。将上下半身的向量分开计算,上半身需要计算9个向量,分别是:头部到颈部、颈部到脊柱、左肩到颈部、左肘到左肩、左腕到左肘、左手到左腕的向量,右臂同理。下半身需要计算6个向量,分别是:臀部到左膝部、左膝部到左脚踝、左脚踝到左脚的向量,右腿部同理。利用这些人体关节向量来提取角度特征,例如我们利用肩部坐标与肘部坐标相减得到向量Vi,用肘部坐标减去腕部坐标得到向量Vj,然后根据三维向量角度计算公式,计算角度特征。Vi与Vj之间的夹角θi-j可以表示为:

(3)

(4)

那么角度θi-j就是当前人体肘部的角度特征。根据以上公式,对整个人体的角度进行提取,上半身提取7个角度特征,下半身提取6个角度特征。抽取出的角度特征是一个相对的特征鲁棒性好,只与关键点相对位置有关,与光照、背景变化、操作者以及操作者的位置无关。

2.3 模板匹配

根据上述提取角度特征的方法,制作标准的人体动作模板。通过Kinect来采集标准动作下人体的关节点三维坐标,经过特征提取来得到标准动作的角度特征。利用角度特征来定义标准动作,并采用不同操作者对数据进行调整,将角度特征分为上半身和下半身。每一个人体标准动作对应上半身七维向量和下半身六维向量。本次设计Kinect采用Processing进行开发,采用Java语言编程,将计算好的动作模板输入到TXT文本中。

首先提取出当前动作的特征向量,分为上半身和下半身。判断上半身特征是否变化,如果变化就匹配上半身模板。然后判断下半身特征是否变化,如果变化就匹配下半身模板。最终将两个结果结合,得到识别结果。如果两个特征都没有变化,则确定动作是站立。模板匹配采用相似度函数来度量两个特征向量的相似度,得到匹配的百分比,其公式如下:

(5)

式中:S%代表相似度,Xi代表标准模板特征向量,Yi代表当前采样的特征向量。通过大量试验,最终将S%的阈值设定为10%,即若S%大于或等于10%则认为当前动作不是标准动作,只有当S%小于10%时才能匹配成功认为当前动作为标准动作。

3 算法验证

3.1 可行性验证

为了验证算法的可行性,搭建了基于Kinect的体感机器人控制系统,由Kinect动作识别算法的结果实时体感控制机器人。机器人由树莓派作为主控制器,PC通过WIFI通信与树莓派相连。机器人采用舵机结构,由两片Arduino完成8路舵机的PWM控制。树莓派通过USB接口向Arduino发送控制舵机的信号。本次设计Kinect采用Processing进行开发,动作模板保存在TXT文本中。在线测试时,Kinect将被测者的动作数据通过USB传入电脑,然后在Processing软件中对上述算法进行实现,实现的结果输出控制机器人动作。在不同背景和光照的情况下,识别不同的操作者的动作。经测试利用本文算法可对人体动作进行识别,并可实时体感控制机器人,如图3所示。

3.2 识别率验证

招募10名同学(5男5女),进行实验测试。Kinect设备水平放置,距离地面48 cm。背景是一面白墙,测试者面对着Kinect设备,全身处在视野范围内,距离其240 cm的位置,按顺序做完10种动作。对测试者每个动作进行采集,然后进行滤波和特征提取,最后进行模板匹配得到动作识别结果。

图3 在复杂背景下不同光照、不同操作者体感控制机器人示意图

将实验结果,与Jiang H等提出的基于一致性最大覆盖的单帧图像姿态估计方法以及文献[8]提出的基于Kinect骨骼数据的归一化匹配算法,在识别率方面进行了比较,结果如表1所示。实验表明本文算法的鲁棒性较好,对动作的识别率较高。

表1 识别率比较

3.3 实时性验证

将本文算法与文献[9]中Lin T Y等提出的基于Kinect骨架的姿势识别算法进行比较。在相同实验条件下,依次对8个动作进行多次识别,计算出每个动作的平均识别时间,实验结果如表2所示。

表2 实时性比较 单位:ms

由表2的实验数据可知,本文算法与LIN T Y等的识别算法相比较,平均识别时间都较短。后者对每种动作的平均识别时间为41.63 ms,而本文算法32.5 ms,证明本文算法的实时性较好。

4 结束语

针对现有复杂背景下动作识别算法实时性不好、识别率不高等问题,本文提出一种改进的Kinect动作识别算法。通过Kinect的骨骼追踪技术获得被测者的关节点三维坐标,首先进行平均值滤波,然后提取角度特征作为模板匹配的依据,通过相似度函数来确定识别结果。通过搭建体感控制机器人系统验证了算法的可行性和稳定性。与Jiang H等提出的识别方法以及李红波等人提出的识别算法进行比较,证明本文算法对人体动作的识别率较高。与LIN T Y等的识别算法进行比较,证明本文算法实时性较好。

[1] 辛义忠,邢志飞. 基于Kinect的人体动作识别方法[J]. 计算机工程与设计,2016,37(4):1056-1061.

[2] 吴晓雨,杨成,冯琦. 基于Kinect的手势识别算法研究及应用[J]. 计算机应用与软件,2015,32(7):173-176.

[3] 王艳,张奇志. 基于Kinect深度信息的手势识别[J]. 北京信息科技大学学报,2013,28(1):22-26.

[4] 战荫伟,张昊. 基于Kinect传感器的人体行为分析算法[J]. 传感器与微系统,2015,34(1):142-144.

[5] 瞿畅,孙杰,王君泽,等. 基于Kinect体感传感器的老年人跌倒自动检测[J]. 传感技术学报,2016,29(3):378-383.

[6] 陈翰雄,黄雅云,刘宇,等. 基于Kinect的空中手势跟踪识别的研究与实现[J]. 电视技术,2015,39(1):91-94.

[7] 王君泽,朱小龙,瞿畅. 基于Kinect骨骼追踪的人体摔倒自动检测[J]. 上海交通大学学报,2015,49(9):1359-1365.

[8] 李红波,李双生,孙舶源. 基于骨骼数据的人体动作姿势识别方法[J]. 计算机工程与设计,2016,37(4):969-975.

[9] Lin T Y,Hsieh C H,Lee J D. A Kinect-Based System for Physical Rehabilitation:Utilizing Tai Chi Exercises to Improve Movement Disorders in Patients with Balance Ability[C]//Proceedings of the 7th Asia Modelling Symposium. IEEE Computer Society,2013:149-153.

StudyonMotionRecognitionAlgorithmBasedonKinect*

DANGHongshe*,HOUJinliang,QIANGHua,ZHANGMengteng

(College of Electrical and Information Engineering,Shaanxi University of Science and Technology,Xi’an 710021,China)

Under the complex background,with the problem of low accuracy and real-time of the motion recognition algorithm,an improved algorithm was proposed based on Kinect skeleton data. Getting skeleton data through the Kinect,feature vector of human joints was extracted and then motions were recognized by using the method of template matching. The feasibility of the algorithm was verified by building the robot gesture control system. Under the same experimental conditions,the average recognition rate of the algorithm is 95.2% and the average recognition time is 32.5 ms. Compared with other motion recognition algorithm,higher recognition rate and better real-time property of the algorithm were proved.

pattern recognition;Kinect;skeleton data;feature extraction;template matching

10.3969/j.issn.1005-9490.2017.05.049

项目来源:陕西省社会发展科技攻关项目(2015SF275)

2016-11-09修改日期2017-01-15

TP242.6

A

1005-9490(2017)05-1309-05

党宏社(1962-),男,汉族,陕西武功人,陕西科技大学,教授,博士生导师,主要研究方向为工业过程与优化、多源信息融合、图像处理,hsdang@163.com;

候金良(1993-),男,汉族,内蒙古包头市人,陕西科技大学,硕士研究生,主要研究方向为机器视觉与机器人,1012063453@qq.com。

猜你喜欢

关节点实时性骨骼
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
基于规则实时性的端云动态分配方法研究
关节点连接历史图与卷积神经网络结合的双人交互动作识别
基于虚拟局域网的智能变电站通信网络实时性仿真
骨骼和肌肉
搞好新形势下军营美术活动需把握的关节点
RGBD人体行为识别中的自适应特征选择方法
航空电子AFDX与AVB传输实时性抗干扰对比