基于Kinect的体育运动自训练系统

2019-04-19 05:18陈建新陈克坚周旭东
计算机技术与发展 2019年4期
关键词:关节点横杆下颌

李 鑫,陈建新,陈克坚,周旭东

(1.南京邮电大学 通信与信息工程学院,江苏 南京 210000;2.南京邮电大学 电子与光学工程学院、微电子学院,江苏 南京 210000)

0 引 言

学生体质健康评价是学校体育的重要组成部分,进行学生体质测试时需要严格依照《国家学生体质健康标准》[1]。近些年来,体感成为一个越来越重要的领域,它以躯体动作、声音等来驱动多媒体设备,给用户带来革命性的体验[2]。微软Kinect传感器作为一种价格低廉、可靠的无标记深度运动捕捉技术,引起了运动研究界的关注[3-5]。

到目前为止,作为一个通用深度相机,Kinect已经应用于运动训练领域以实现人机交互,国内外学者在这些方面也做了许多研究,主要内容是人脸识别、骨骼跟踪、深度图像等。例如,Muhammad Usama Islam等利用Kinect捕捉的关节连接点进行人体姿态识别,从而远程监控患者的瑜伽姿势[6];C. Sieluzycki等结合关节和整体特征研究Kinect在柔道中的应用[7];L. Zhang等利用深度数据实现Kinect在训练高尔夫中的应用[8];P. Payeur等使用Kinect实现指尖跟踪技术在钢琴中的应用[9];吴齐云结合人机交互、动作识别技术和移动医疗实现运动康复交互的功能[10];张利英利用Kinect的运动捕捉技术进行太极拳辅助训练[11]。

虽然体感交互在运动训练领域已经有过很多研究,但是这些都只针对运动员、病患等特定群体,并没有普及到学生和大众。因此,相较于已有的红外线检测方式,文中结合Kinect传感器讨论了体感交互在国家体质测试和自我训练中的应用。利用Kinect采集到的深度图像,依据视场和深度值确定横杠高度;利用骨骼跟踪技术确定下颌位置,根据手臂的三个关节点计算出手臂的弯曲角度;根据下颌与横杆之间的距离和手臂弯曲的角度对本次动作进行计数和打分。

1 系统简介

该系统采用微软公司的Kinect传感器提取图像中的信息进行数据分析,对引体向上动作进行计数和评分,从而实现自动化测试和自我训练的功能。

引体向上的测试方法要求受试者双手握杆且手臂自然伸直;手臂同时用力进行引体,当下颌过横杆后还原手臂伸直状态,为完成1次[12]。引体向上的细节动作中有两个要点,一是下颌过横杆,二是手臂伸直。因此,在进行引体向上测试时,首先要确定横杆的位置,其次要判断使用者的下颌位置和手臂的弯曲角度,并以此为依据进行计数和评分。当检测到下颌过横杆且手臂弯曲角度在一定的阈值范围内,计数一次并给出相应的得分;其他情况均不计数,并给出相应的得分。

该系统主要包括三个模块:横杆位置识别模块、用户骨骼跟踪模块、计数评分模块。横杆位置识别模块通过采集深度图像获取横杆深度值,根据视场和深度值,从而得到横杆的位置,并通过坐标变换将其显示在骨骼图像上;用户骨骼跟踪模块通过骨骼跟踪得到使用者的下颌位置,以及手臂的三个关节点位置;计数评分模块通过比较横杆和下颌的位置以及手臂三个关节点连线的角度,进行计数和打分。同时,使用者可根据视频的动作回放和评分情况来评估自己的动作,从而实现动作的规范。系统框图如图1所示。

2 实现原理

2.1 横杆位置识别

在骨骼图像中,无法识别出横杆的位置,因此使用深度图像来确定横杆的位置,并将其在骨骼图像中表示出来。

图1 系统框图

2.1.1 Kinect深度图像成像原理

Kinect通过发射近红外线光源来获得深度图,无论光线是否充足,Kinect都会主动追踪大字形物体。Kinect的深度图像由红外投影机和红外摄像头采集[13],且投影和接收相互重叠。有传送、捕捉、计算视觉重现的类似过程。

结构光是具有如点、线、面等模式图案的特定模式的光。基于结构光的深度图像获取原理是将结构光投射到场景中,并利用图像传感器获取结构光对应的图案。由于结构光会因物体的形状发生变化,因此利用三角形原理并结合获取的图案便可以计算出图像中各点的深度值信息。

微软Kinect深度思想采用了光编码技术,不同于传统的结构光投影二维图案的方法。Kinect光编码的红外线发射器发射三维深度编码。激光散斑是光编码的光源,是激光发生漫反射后的结果,即形成随机斑点,而且空间中任意处的斑点都不一样。因此每次光源标记后,所有的随机斑点都会被保存,当把物体放入该区域后,要是得到物体外貌的随机散斑,物体的方位就能被找到,从而获取该场景的深度图像。

2.1.2 坐标系转换

相机空间指的是Kinect使用的3D空间坐标。原点坐标(x=0,y=0,z=0)位于Kinect的红外相机的中心。x轴方向为顺着Kinect照射方向的左方向;y轴方向为顺着Kinect照射方向的上方向;z轴方向为顺着Kinect的照射方向。

深度图像的坐标系是以红外摄像头为坐标原点,x轴正方向和y轴正方向分别为水平向右和竖直向下,z轴为摄像头轴线方向,且满足右手螺旋准则的空间坐标系,其类型为DepthImagePoint(x,y,z)。彩色图像的坐标系是二维的,只有x轴,y轴,没有z轴,其类型为ColorImagePoint(x,y)。骨骼跟踪坐标系的点,其类型为SkeletonPoint(x,y,z),其中(x,y,z)为空间坐标系。骨骼关节点的三维坐标中只使用了x,y值,z值和物体至Kinect的距离有关,z值越小,距离越近,骨骼图像越大。

由于Kinect采集深度图像和彩色图像使用的不是同一个摄像头,因此对应的坐标系不同,所以需要对它们进行坐标系转换。Kinect SDK的核心类KinectSensor提供了MapDepthToSkeletonPoint、MapSkeletonPointToDepth、MapDepthToColorImagePoint、MapSkeletonPointToColor进行坐标系的转换。

2.1.3 横杆高度计算

深度图像中像素点的位置并不是一一对应于实际位置,因此需要利用三角形几何知识进行转换。相机视场的大小由焦距长度以及相机传感器的大小共同决定。Kinect相机的水平视场角为57°,垂直视场角为43°。如图2所示,可以将Kinect的视场看作是以深度值d为高、57°为顶角的等腰三角形。其中,设三角形底边的一半为b,横杆相对于红外摄像头的高度为h,H点的纵坐标为yH。由三角形几何关系可知:

b=d·tan28.5°

(1)

一个像素对应的实际宽度为:

(2)

则横杆的实际高度为:

h=(160-yH)×w

(3)

这个简化的公式虽然没有考虑到实际应用中的各种复杂情况,但是仍能满足在该系统中的应用。

图2 利用深度值计算横杆高度

2.2 用户骨骼跟踪

2.2.1 骨骼坐标系

目前,Kinect 2.0中的骨骼API最多可以提供6个人的详细姿势和骨骼点三维坐标信息,并且最多可以支持25个骨骼点。SDK中用Joint类型表示每个骨骼点,包含3个属性:JointType(骨骼点的类型)、Position(骨骼点的位置)、TrackingState(骨骼点的追踪状态)[14]。同时,最新的Kinect 2.0支持半身模式,即使人体的下半身受到其他物体遮挡以及由于其他原因而捕捉不到骨骼,也不影响对于上半身的识别。由于Kinect的视场角过小,无法识别出人体从最高点到最低点的全部骨骼数据,而在进行引体向上时不需要考虑下半身的动作,半身模式很好地解决了这个问题,极大地扩大了骨骼跟踪的范围[15]。

在骨骼坐标系中用(x,y,z)表示关节位置,其坐标系和深度图像坐标系相同。其中,x和y的范围是-1~1,z是深度值,即被识别物体与Kinect之间的距离。

2.2.2 骨骼跟踪

Kinect的核心技术是骨骼跟踪,这项技术可以使Kinect更好地捕捉人体的动作,是在实现深度信息提取的基础上进行的。微软Kinect采用Light Coding的深度测量技术,为获得关节点的空间位置,需要通过机器学习对深度图像中的人体进行分割[16],最后将深度图像转化为骨骼图像。从深度图像到骨骼图像转换的过程需要经过人体识别、人体部位识别和关节识别三个步骤。Kinect SDK可以对这25个骨骼点的3D坐标进行30帧/s的实时跟踪。Kinect 2.0能同时识别到6个人的位置信息,并同时完整地给出两个人的骨骼信息。用每个节点的三种状态:TRACKED(已追踪),NOT TRACKED(未追踪)和INFERRED(推测),便可以得到由25个关节点连接而成的完整的人体骨架图。

2.3 计数评分模块

评分模块首先利用Kinect模块提取使用者的动作信息,然后对数据进行角度特征和位置信息的提取。由于引体向上测试过程中没有时间限制,因此从判断使用者手臂是否伸直和下颌与横杆之间的位置关系两个方面预设评分标准和规则,计算出每次动作的得分。

2.3.1 判断下颌是否过横杆

首先考虑应用人脸识别技术获得下颌位置,但是当向上引体时会受到横杆遮挡的影响,无法进行人脸识别,从而无法准确判断当人体到达最高点时下颌与横杆的位置关系。

①《纸上的舞蹈》是绍兴文理学院兰亭书法艺术学院制作,由专业老师书写,专业摄录者拍摄的书法书写视频。视频因极其重视书写过程,受到书法爱好者和学习者的好评。

Kinect深度图像可以得到用户到Kinect摄像头的距离,然而在实际测试中,背景可能会非常复杂,因此需要对深度图像进行阈值分割,将人体与背景分离,然后再进行人体动作分析。骨骼跟踪可以获取人体各个关节的位置,因而可以根据关节坐标计算人体动作参数,从而识别人体动作识别。与深度图像相比,骨骼跟踪直接获取关节参数更加简便。

由于人脸跟踪和深度图像存在的上述问题,该项目采用骨骼跟踪用户关节点,将用户下颌点位置与已确定横杆的位置进行比较,以判断用户的下颌是否过横杆,当检测到下颌过横杆两次时,计数一次。

2.3.2 判断手臂伸直程度

利用Kinect可获取25个关节点的坐标信息,通过一个或几个坐标值可以提取出具体的动作信息。根据引体向上的动作特性,整个过程中,关节角度是评价手臂是否伸直的重要指标。

利用式4可将Kinect获得的人体的深度值draw转换成人体到Kinect的实际距离d,即

d=Ktan(Hdraw+L)-O

(4)

其中,H=3.5×10-4rad,K=12.36 cm,L=1.18 rad,O=3.7 cm。

深度图像素坐标(xa,ya,za)到实际坐标(xb,yb,zb)的变换公式[17]为:

(5)

其中,D=-10,F=0.002 1。Kinect的分辨率w×h为640×480,X(x1,x2,x3),Y(y1,y2,y3)为空间坐标系的2个点。利用式4和式5可以求出关节点的实际坐标,再利用欧氏距离公式(见式6)可以计算出两个关节点之间的距离。

(6)

利用三点法来求解这三个关节点连线的角度,即首先利用式5计算出的关节点的实际位置的坐标计算出三个关节点的距离[18]。

(7)

然后利用余弦定理求出关节点连线之间的角度大小,如下所示:

(8)

在进行测试引体向上的过程中,无法要求每个人的手臂完全伸直,因此设立了角度的阈值范围,即

(9)

其中,θi是实际测量角度;αi是预设得分对应的角度;T是相应的阈值。

2.3.3 得分计算

对引体向上动作进行评价的指标一共两个,即身体处于最高点时下颌与横杆之间的距离和动作结束时手臂的弯曲角度。

通过计算人体处于最高点时下颌的高度Heighti,与实际横杆高度之间的距离差ΔHeighti便可以计算得分Ascorei,即

Ascorei=ΔHeighti×δi

(10)

其中,δi为变量,用于确定在每个距离区间内打分的阈值。

计算手臂的弯曲角度和下颌与横杆之间的距离类似。通过测量第i次肘关节的弯曲角度与完全伸直(180°)时的角度差ΔAnglei,并对左右肘关节角度取平均,从而设置得分Bscorei,可以用函数f(x)来表示二者的关系,即

Bscorei=f(ΔAnglei)

(11)

由于在实际测试中,无法要求每个人的手臂完全伸直,因此设函数f(x)为分段函数,从而设置一定的阈值范围。在该系统中:

(12)

依据国家体育测试标准,对引体向上进行打分需要综合考虑下颌与横杆的距离和手臂的伸直程度,因此取两者的加权得出最后的得分,即

Scorei=αAscorei+βBscorei

(13)

其中,α和β分别是Ascorei和Bscorei的权重系数,通过选取不同的系数可改变两个指标的权重。该系统中取α=β=1。

3 性能分析

本项目依据使用者下颌与横杆的位置关系和手臂的弯曲角度两个方面,按照预设的标准进行计数和打分。当检测到下颌过横杆且手臂弯曲角度在一定的阈值范围内,计数一次并给出相应的得分;其他情况均不计数,并给出相应的得分。下面分别测试几种情况下的计数和打分结果(满分为10分)。

系统检测到使用者身体处于最高点时下颌过横杆,手臂还原时左臂弯曲角度172°,右臂弯曲角度163°,计数一次,并依据手臂弯曲角度判别其所在的得分区间。综合下颌与横杆的距离得到的分数Ascore和手臂弯曲角度对应区间的得分Bscore给出本次得分10分,如图3所示。

图3 下颌过横杆且手臂伸直示意

系统检测到使用者身体处于最高点时下颌过横杆,手臂还原时左臂弯曲角度151°,右臂弯曲角度148°,不计数,并依据手臂弯曲角度判别其所在的得分区间。综合下颌与横杆的距离得到的分数Ascore和手臂弯曲角度对应区间的得分Bscore给出本次得分5分,如图4所示。

图4 下颌过横杆且手臂不伸直示意

系统检测到使用者身体处于最高点时下颌没有过横杆,手臂还原时左臂弯曲角度171°,右臂弯曲角度160°,不计数,并依据手臂弯曲角度判别其所在的得分区间。综合下颌与横杆的距离得到的分数Ascore和手臂弯曲角度对应区间的得分Bscore给出本次得分6分,如图5所示。

图5 下颌不过横杆且手臂伸直示意

系统检测到使用者身体处于最高点时下颌没有过横杆,手臂还原时左臂弯曲角度159°,右臂弯曲角度160°,不计数,并依据手臂弯曲角度判别其所在的得分区间。综合下颌与横杆的距离得到的分数Ascore和手臂弯曲角度对应区间的得分Bscore给出本次得分2分,如图6所示。

图6 下颌不过横杆且手臂不伸直骨骼图像示意

4 结束语

本项目利用微软公司的Kinect传感器,通过提取图像中运动器材的位置信息和人体的动作信息进行数据分析处理,并根据结果进行评分,从而实现体育项目的自动测试和自我训练的功能。利用深度图像获取横杠深度值,依据视场和深度值确定横杠高度,并将其在骨骼图像上表示出来;利用骨骼跟踪确定使用者下颌的位置;利用下颌与横杆的距离和手臂的弯曲角度进行计数和评分,严格依照国家体质测试标准进行。后期系统可加上仰卧起坐、俯卧撑等多项体质测试项目,实现体质测试的全面自动化。

猜你喜欢
关节点横杆下颌
基于关节点数据关注RGB视频的双人交互行为识别
MDT诊疗模式在颞下颌关节盘不可复性盘前移位中的治疗效果
那根杆......
基于人体行为模型的跌倒行为检测方法①
迷人的下巴
迷人的下巴
结构化:向儿童思维更深处漫溯
背越式,令选手跳得更高
本性难移
有礼貌