千承辉,张昕昊,陶 锦,刘俊麟
(吉林大学 仪器科学与电气工程学院,长春 130061)
康复训练是医疗服务的重要组成部分,也一直是医疗领域的热点。目前,国内的医疗康复大部分采用的仍是传统的康复训练方式,但受制于训练场所,医疗器械,医师水平等,并不能起到很好的训练效果。国外已初步建成医疗康复大数据产业链:从传感器研发到智能可穿戴设备及检测设备到数据存储和大数据的智能分析都已经初具规模。随着科技的发展,新型交互技术步入人们的视线,越来越多的人使用该技术进行体感康复训练[1]。TAYLOR等[2]和王静等[3]证实Kinect在康复领域的可行性,WANN等[4]提出了可视化虚拟康复治疗。
实现新型康复训练的一个重要工作就是完成动作识别。目前流行的一些视觉识别各存在着一些问题,基于单目视觉的动作识别容易受到光照、颜色等环境因素的影响,而基于双目视觉的识别虽然能很大程度上避免这些影响,但是计算过程较为复杂[5]。并且传统的人体动作识别很难完成连续动作识别的任务[6],随着Kinect深度体感相机的出现,越来越多的研究者意识到,深度图像以及骨架信息能改变动作识别领域的应用现状。
研究一种高效准确的动作识别算法,把三维体感技术与计算机视觉算法相结合,是医疗康复领域的一种新的尝试。因此,笔者设计了一套基于Kinect的康复训练评估系统,将康复训练放到社区和家庭中。这样不但能减轻医护人员的工作,也让患者在康复训练中体验到更多乐趣,对整个康复训练过程产生积极影响。
该康复训练系统主要由4个子模块组成:训练指导模块、动作匹配模块、训练评估模块和动作库模块。图1给出了各个模块之间的相互关系。
图1 系统结构图
1)动作库模块。采用非特定人识别的模板训练法,由多人录入康复训练医师提供的标准动作,将多人的动作整合,提取共性,记录运动动作骨骼节点数据,形成标准动作模板。
2)训练指导模块。向患者提供已经录制好的标准动作视频,并在训练过程中同步提供相应的文字及语音指导,规范患者的训练动作。
3)动作识别模块。通过读取患者的实时骨骼节点数据,提取特征关节点的坐标,转化为角度序列,用DTW算法将角度序列与样本库中样本序列进行匹配,做出决策。
4)训练评估模块。收集患者所有动作数据,计算训练得分,并对康复训练数据进行分析与评价。将评估结果直接反馈给患者或治疗人员,并作为确定下一步治疗方案的依据。
将Kinect传感器与计算机通过数据线相接,并且安装在计算机显示屏的前方,人体在合适位置站直,让Kinect获取全身骨骼关节点。Kinect采集的数据通过接口函数传入前端系统,在计算机中得到人体骨骼图。
以相机空间建立Kinect的三维空间坐标系。以顺着Kinect的照射方向的左方向为X轴,照射方向的上方向为Y轴,照射方向为Z轴,在这个坐标系下获得人体各个骨骼关节点坐标。
由于Kinect实时获取的各关节点的坐标数据受个体差异影响较大,为减小此类误差,把运动过程中关节的坐标变化转换成角度变化研究,即选取角度作为动作特征。通过计算骨骼节点间的欧氏距离并利用三角形余弦定理 ,即可以求出两个关节点间的夹角。
欧氏距离(Euclidean Distance)是一个通常采用的距离定义,它是在n维空间中两个点之间的真实距离。假设有点x与点y,则这两点之间的欧氏距离[7]可用表示。以人体左臂运动为例,选取左肩关节点、左肘关节点和左腕关节点3个关节点,分别设为J1(x1,y1,z1)、J2(x2,y2,z2)、J3(x3,y3,z3)。设连接点J1和J2的长度为D1,连接点J2和J3的的长度为D2,连接点J1和J3的长度为D3,根据欧氏距离计算公式可得
(1)
图2 空间角度示意图
(2)
(3)
(4)
则由余弦定理即可计算出肘关节屈伸角β的值
(5)
动作过程可分解成一系列帧图像,每帧图像包含一个静态姿式,因此动态动作可视作一系列静态姿式的组合,这就意味着动作的表达具有时间持续属性[8]。Kinect每秒能获取30帧左右的数据,以每3帧为一个采样周期进行一次数据采集,取平均30帧作为动作模板的总长度。随着运动时间的推移,静态姿式在相同采样间隔下将产生一组由关节点角度标量组成的向量[7-9]。这组向量反映动作的变化过程。以左手抬起时左肩关节角度变化为例,图3只截取4帧(第1帧、10帧、20帧、30帧)以展示运动过程。
左肩关节角度变化曲线如图4所示。肢体运动过程中,随着关节角度在一段时间内的变化,将产生一条角度变化曲线,即关节角度时间序列,它是一个关于时间的一维向量。如同运动过程中四肢末端的运动轨迹一样,关节角度曲线可以反映出动作的变化趋势[10]。
图3 左手抬起动作示意图 图4 左肩关节角度变化曲线Fig.3 Schematic diagram of left hand lifting Fig.4 Angle change curve of left shoulder joint
因此,采用关节角度时间序列作为肢体运动的特征参量,若某动作的持维时间为X,则动态动作特征可抽象为
Ai=[θ1,…,θi,…,θM]
(6)
其中Ai代表某一关节的时间序列,是长度为X的列向量;M是选取全部关节点的个数。
康复医师根据患者的需求设计一套标准康复训练动作,多个人进行动作录入,提取动作特征,根据骨骼关节点间的坐标关系计算角度序列,作为标准动作模板[11]。并制作三维动画视频,在系统界面播放,对患者动作进行指导。该设计选取12个专业的康复训练动作,其中3个如表1所示。
表1 康复训练动作
若直接使用Kinect传感器采集的原始骨骼数据作为特征参量,则每帧就会产生3个维度的60个不同的坐标数据点,模型的计算复杂度高,且信息存在很高的冗余,导致样本的训练困难,影响识别算法的精度和时效性[12]。因此通过特征参量表示人体的各种行为姿态是一个需要思考的问题,如何准确地选取人体特征关节点,使其既能准确的描述人体的行为姿态,又不至数据冗余。
经过多次试验结果分析,肩关节、肘关节、膝关节、踝关节等8个关节点角度变化最大。因此在保证康复训练的效果和动作识别准确率的前提下,将其选为特征关节点,以提高评估的科学性[13]。其中3个特征关节点如表2所示。
表2 特征关节点
Kinect每秒能获取30帧左右的数据,以每3帧为一个采样周期进行一次数据采集,取平均30帧作为动作模板的总长度。选取表中关节角度,左右两侧共16个,按角度时序对运动进行分析。根据特征关节点的三维空间坐标,计算标准动作的特征关节点之间的角度,由此可形成角度时间序列。本设计的一个动作的动作序列模板结构可以表示为
A=[θ(1,1),θ(1,2),…,θ(1,16);θ(2,1),θ(2,2),…,
θ(2,16);…;θ(30,1),θ(30,2),…,θ(30,16)]
(7)
为使系统测试结果更稳定,标准动作模板的选取十分重要。该设计采用非特定人识别的模板训练法,根据康复训练医师提供的标准动作,采用多人进行录入,将多人动作整合,提取共性,形成标准动作模板,该系统采用逐步模糊聚类法提取动作模板。定义了8个动作共8类,选定8个聚类中心,其指标能反映该类的特征。录入标准动作,提取动作的角度序列数据,将样本向最近的聚类中心聚类。根据分类结果确定新的聚类中心,其各项指标为该类中所有样本的相应指标的平均值[14]。多人重复进行多次训练,直至标准动作样本足够多,动作库标准动作模板构建完成。
图5 3个不同测试者角度序列对比
测试样本与标准样本具有相似的特征,但由于不同患者的动作快慢不同,对应的测试样本长短也不同,因此用传统的欧氏距离无法比较二者的相似性。针对这一问题,该系统采用动态时间规整(DTW:Dynamic Time Warping)算法处理。
把测试样本和动作库中的标准样本角度序列定义为Q(q1,q2,…,qn)和C(c1,c2,…,cm),长度分别为n和m。构造一个n×m的矩阵网格,矩阵元素(i,j)表示qi和cj两个点的距离d(qi,cj),也就是这两点的相似度,距离越小则相似度越高。判断两个序列的相似度就转化为在此网络中寻找一条走向使Q和C之间的距离最小的路径[15]。
累计距离可通过迭代公式
γ(i,j)=d(qi,cj)+min{γ(i-1,j-1),γ(i-1,j),γ(i,j-1)}
(8)
计算。Q和C从起始(0,0)逐次匹配,选择最近的下一点,直到(n,m)为止,之前计算的距离都会累加,累计距离就是总距离,即为序列Q和C的相似度。系统计算最短距离值,若小于设定阈值则认为模板匹配,否则认为无模板匹配,将匹配到模板的相应动作名回显,完成一次动作识别过程。
阈值判断通过下式
(9)
确定。根据计算得到的最小距离d与设定的标准阈值D比较,获得K的数据并计算,当K为真是判断动作正确,当K为假时判断动作不正确。
康复医师根据患者的需求设计一套标准动作,将每个标准康复训练动作以视频形式依次播放,当识别到患者动作不正确或未达标,系统动作提示栏输出文字及语音提示,纠正患者动作。患者能完成此动作,则立即进入下一个动作的指导,若在规定时间内未完成,重复此动作,若仍未完成,自动进入下一个动作,以此实现对病患康复训练的辅助和指导。
图6 受试者实验界面
DTW距离可以衡量患者动作和标准动作的相似度,将DTW距离转化得到的每个动作得分作为参量。将康复训练动作的难度分配不同权重,采用参量评分加权的方式评估患者康复动作的效果。最终评估分数按区间分为5档,针对不同档给出相应训练评价和康复指导意见,训练结束后通过聊天窗口和PDF文档反馈训练结果的评价。
具体而言,不同动作的评估方法相同,但计算参量评分的阈值和计算得分的权值不同。将8个动作的DTW距离值设定为评估参量值,记为Di={d1,d2,…,d8}。系统动作评估参量的得分由Di计算得到。则其参量评分为
s=di-η
(10)
其中η为根据健康人多次试验后选取的阈值,可根据条件做出修改,它是一个经验值。参量阈值集合为H={η1,η2,η3,…,η8}。不同动作选不同的η,计算方法相同。
通过参量评分的计算,可以得到一个参量评分的集合Sp={s1,s2,s3,…,s8}。由于参量评分si不尽相同,而且它们对衡量动作评估结果的贡献度也存在差异,因此不能直接使用参量评分之和评估动作得分,可以通过给每个参量评分赋予不同的权重削减这种差异。权重值的设定要考虑每个参量在动作评估中的波动性,波动性大的设定的权值较大,波动性小的权值较小。经过多次试验,给每个参量评分匹配了相应的权重值,得到一个权重集合W={w1,w2,w3,…,w8},并使
(11)
根据各参量评分及其对应的权重,计算得到归一化得分
(12)
为检验系统的稳定性和可靠性,在系统初步测试中选取40名年龄在20~40岁的健康受试者,其中男生20名,女生20名,受试者站在距离Kinect设备大约2m处按照系统提示进行测试,地点开阔,无物体遮挡。对6个标准动作分别重复测试200次。对比动作识别和系统评估得分是否准确,测试结果如表3所示。由表3结果可以看出,6种动作的识别率都在94.0%以上,对测试样本数据进行评估计算,结果如图7所示,可见绝大部分评估结果都在90分以上。
表3 测试结果表
图7 评估结果图
笔者在使用Kinect设备提取人体骨架拓扑结构的基础上,提出了一种基于关节点角度序列提取人体运动特征的动作模型。充分分析了动作模型的特点,提取动作特征的共性,将具体的人体运动过程抽象,发现动作识别本质上要解决一维时变信号的分类问题。因此以人体运动过程中的关节点角度参量作为切入点,发现了角度时序与运动特征的关系。在此基础上,多方对比,最终以角度时序为参量,结合DTW算法实现了人体动作识别,完善并提高识别匹配的准确度。另外,笔者也在医学评估系统方面进行了尝试,结合较为科学的康复训练评估标准,设计了一套科学有效的康复训练评估系统。