毛 堃 吴小敏 王超素
(1.衢州职业技术学院信息工程学院,浙江 衢州324000;2.温州医科大学附属衢州医院<衢州市人民医院>浙江 衢州324000)
针对人体动作的识别,目前主要有穿戴式传感器识别和基于视觉的非穿戴式识别两种方式,其中的基于视觉的识别方法无须佩戴任何传感器,操作简单方便,尤其是微软的Kinect融合了传统摄像头的视觉数据和深度传感器数据,能够实现3D识别,因此,许多研究人员都将其用于人体骨骼运动数据的采集。吉林大学的千承辉等人采用Kinect V2构建了一套能够实现对于患者进行运动康复评价的系统,采用了传统的DTW算法将实验动作与模板动作进行匹配,最终给出康复动作的评分[1];安徽大学的李顺等人基于Kinect V2体感传感器提出了一种基于关键帧和人体骨骼运动数据的动作识别方法,其中通过仅保留相邻帧信息改进DTW算法,降低了计算维度,最终实现了人体的实时动作识别,大幅提高了识别效率[2];中国矿业大学的赵小虎等人基于Kinect实现了对矿井人员的违规行为进行识别,提出了一种分段线性逼近结合的自适应权重的DTW算法,解决了传统DTW的奇异点问题,提高了系统的识别准确率[3];广东工业大学的吴齐云等人基于DTW和K-means实现到了对于人体动作的匹配和评价,实现了在降低计算维度的同时,具有较好的识别准确率[4];青岛科技大学的杨尊俭等人基于Kinect实现了对于仿真驾驶的手势识别,并通过每个关节点进行加权改进DTW,结合深度学习实现了较高的识别准确率[5]。
虽然现有的研究基于Kinect已经能够对于人体动作进行评价,但是在上肢康复运动评价过程中,患者运动往往存在一定的不确定因素,传统的DTW匹配算法并不能完全适应,在准确度上仍然存在一定的提升空间。因此,本文提出一种能够自动实现端点对齐的改进DTW的方法,从而实现提高匹配的准确度。
动态时间规整DTW(Dynamic Time Wraping)是一种能够实现对于两个时间序列相似性进行有效判断的方法[6],有效避免了传统基于欧氏距离匹配算法无法对两个在时间轴上存在拉伸或者压缩的序列进行匹配的缺点。动态时间规整算法的步骤和公式如下:
给定两个数据序列Q和S,分别为待匹配的骨骼运动数据序列和标准的模板骨骼运动数据序列,定义该骨骼运动的数据维度S=(x1,x2,...,xm)和Q=(y1,y2,...,yn)。两个骨骼运动数据序列的匹配距离定义为d(S,Q)。为了能够计算出该骨骼运动数据的DTW匹配距离,就需要找到一条最优的路径P={P1,P2,...,Pk}(max(n,m)≤K≤n+m+1),使得S和Q两者累积的距离达到最小,其中的PK表示路径中的元素在距离矩阵中所在的位置,即d(Pk)=d(i,j)k,与此同时,路径P还必须符合以下三个条件:
(1)边界性:P1=(1,1),PK=(m,n);
(2)单调性:给定Pk=(i,j)和Pk+1=(u,v),有u≥i,v≥j;
(3)连续性:给定Pk=(i,j)和Pk+1=(u,v),有u≤i+1,v≤j+1;
最终找到唯一的一条最优路径,使得累积的距离达到最小,即:
为求解公式(1),构造出一个代价矩阵R,矩阵的每个元素的计算公式如下:
其中i=1,2,...m,j=1,2,...n,R(0,0)=0,R(i,0)=R(0,j)=∞,
给出R中的所有元素R(i,j),最终由公式(3)的最小代价可知,d(S,Q)=R(m,n)。
整个动态时间规整算法的核心思想就是采用动态规划的方式,从而找到一条使得最终的累计路径最小,实现两个数据序列之间的匹配分析,相比其他匹配算法,其并不需要额外的训练,计算复杂度更低,在许多领域内得到了广泛的应用。
上肢康复运动训练时,患者的身体状态千差万别,而且由于年龄往往较大,因此,在进行运动数据采集过程中,往往反应较为迟钝,从而造成所采集到的运动数据在开始和结束阶段存在大量无效的运动数据。本文通过采用基于上肢运动速度设置阈值的方式对DTW算法进行改进,自动实现对于有效数据端点的自动识别,截取有效的运动数据,具体的算法思路如图1所示。
图1 本文的算法流程图
在Kinect V2进行实时采集患者的上肢康复运动数据时,对其中的腕部关节点的运动速度进行实时计算,并与阈值V1进行比较,当速度大于V1时,则记录此时的数据帧为康复动作的起始帧,也就是实际有效的康复动作的起点。阈值V1并不是一个固定不变的数值,而是可以根据不同的患者的运动特性而实现自适应的阈值,其计算的公式如下所示:
式中的vn代表的是第n+1帧时的腕部关节点的运动速度。
通常来说,人的反应时间一般在0.2~0.3 s,也就是200~300 ms之间,但是,对于年龄较大的患者来说,对于指令的反应时间往往会更长,因此,在300 ms的时间内可以较为准确地获得患者在自然状态下的运动特征,其中就包含了自然状态下腕部关节点的运动速度信息。又因为Kinect V2传感器每秒输出的骨骼运动数据为30帧,也就是每33.3 ms输出一帧数据,那么,计算可知,10帧的数据对应300 ms,即,此处n的取值范围设置为[1,10]。
对于终点数据帧的确定,采用通过对于患者在结束采集点前的10帧数据内进行运动特征的提取,并进行反向搜索整个康复动作的实际终点,即当腕部关节点的速度小于阈值V2时,则记录此时的数据帧为结束帧。阈值V2的计算公式如下:
式中的vm代表的是最后一帧时腕部关节点的运动速度,i的取值与V1中的n取值方法保持一致,采用最后的10帧数据对于腕部关节点的结束后的运动速度进行识别,i取值为9。
经过上述对于起点和终点的速度阈值V1和V2的确定后,最终通过比较计算得到最终有效的上肢康复运动数据,并通过DTW算法将其与模板数据进行匹配,得到上肢康复运动数据的标准程度。
整个实验通过在自行搭建的基于Kinect V2的上肢康复运动评价系统中进行,实验选取5人进行模拟患者的反应迟缓的状态,具体的实验步骤如下:
(1)实验者完成第一组动作,要求在开始实际运动之前进行随机的延时等待,而在整个动作结束之后,同样进行随机的延时等待;
(2)实验者完成第二组动作,要求流畅完成整个动作,没有任何延时和等待。
通过SQL数据库对整个实验过程的所有数据进行保存,并通过绘制匹配图对整个实验的运动数据与模板数据之间的匹配结果进行可视化展示,以第一位实验者的腕部X轴坐标值的匹配结果为例,如图2所示。
图2 实验者腕部X轴坐标值的基于DTW和基于改进DTW的匹配结果
通过图2中的实验结果可以看出,a中展示的DTW路径规划图中的路径在20帧之前几乎一直为一条直线,说明难以与标准动作进行有效匹配,实验者腕部X轴坐标值的取值一直在某个值的附近小幅波动;在第20~80帧之间,路径图整体表现出一条斜线,说明与标准动作具有较好的匹配度;而在第80帧之后,路径图再次出现了较长的水平段,说明实验者腕部X轴坐标值的取值同样也是在某个值附近小幅波动,从上述现象可知,这是实验者在做第一组动作,同时,也可以通过起点的第20帧和终点的80帧判断出,第一位实验者在开始动作之前延时了2/3秒,在动作实际结束后延时了约0.5 s(一共97帧)。很显然,传统的DTW并没有过滤运动序列两端的无效数据,强行将运动数据进行匹配。而从图2中的b中可以看出,端点两侧附近的无效数据已经被去除,只剩下了有效数据,DTW的路径图也呈现出长斜线,说明了本文改进的DTW算法能够有效识别出起点和终点附近的无效运动数据,自动提取出实际的运动数据,最后将有效的运动数据与模板数据进行DTW匹配。
本文提出了一种针对上肢康复运动评价的改进的DTW匹配算法,引入速度特征的自适应识别,实现自动定位实际有效的运动数据序列的起点和终点。实验结果表明,本文提出的改进DTW算法相比传统的DTW算法具有更高的匹配准确度,更能适应实际的上肢康复运动的评价,并为后续对于实际患者的上肢康复运动的精确评价研究提供了参考。