基于Kinect的康复动作识别与评价系统
2024-01-16阮士峰孟瑶瑶吴明龄
袁 绪 阮士峰 孟瑶瑶 吴明龄
(安阳工学院飞行学院,河南 安阳 455000)
0 引言
传统的康复训练由患者与康复医生一对一进行,不仅会耗费大量时间,还因枯燥乏味,使患者容易对康复训练失去兴趣,导致患者难以实现康复。传统的康复训练还会给患者家庭带来比较大的经济负担,此外,医疗康复资源也相对匮乏[1]。针对这些问题,相关人员研发出多种康复动作评估系统。杨文璐等[2]通过Kinect2.0 体感设备来采集患者的康复动作序列信息,并提取相关特征值,再与标准动作进行对比,能准确计算出患者在康复训练中的动作准确度,但测量结果因遮挡而存在误差,且因康复训练过程比较枯燥,导致患者兴趣不高,患者很难坚持下去。韩志峰等[3]利用Kinect骨骼跟踪技术,结合Unity3D 技术,成功研发出一款3D 康复游戏系统。该系统是利用Kinect 来设计患者康复动作的引导轨迹,使患者在玩游戏的同时,进行康复训练。但该系统的康复训练项目较为单一,且在评估方面还存在不足。为满足患者需求,本研究设计出一款易于让患者接受,且易于上手的康复游戏。采用Kinect 和Unity3D 技术,改变以往游戏的单一性,体现人机互动的多元化,能有效避免因遮挡问题而导致的误差,增加了趣味性,让患者更容易坚持康复训练。
1 动作设计依据
为完成患者康复这一目标,从而制定出针对患者康复训练的评估方案,通过该方案来制定患者所需的康复动作。在设计康复动作时,参照康复医学的评测标准,见表1[4]。根据表1 中的评定范围来确定患者在玩游戏时所做动作的判定标准。
表1 关节活动度的评定
2 骨骼关键节点检测评估
人体姿态检测的本质是检测人体骨骼关键节点的具体位置,即通过骨骼关键节点的具体位置来展示人体姿态[5-6]。人体骨骼关键节点因数据集的不同而有不同的定义,本研究使用24 个骨骼关键节点,如图1所示。
图1 人体骨骼节点
以骨骼关节点的角度为一个具体的评估指标,对关节点角度进行计算,使用Kinect-V2 算法[7-9]将深度图像上的像素点转化为三维空间中的点,见式(1)。
式中:(X,Y,Z)为空间坐标;(dx,dy)为深度图像上的坐标;d为对应的深度值;Kfx、Kfy、Kcx、Kcy分别为相机内参矩阵中的参数。
经过计算,得到骨骼节点的位置信息,将骨骼位置信息转化为关节坐标系中的坐标值,见式(2)。
式中:(xj0,yj0,zj0)为关节坐标系中的原点坐标;Xj、Yj、Zj为骨骼节点在三维坐标中的坐标值。最终得到的(xj,yj,zj)即为关节的三维坐标点。
在得到关节坐标系中的坐标值后,还要将其转化为Kinect坐标系中的坐标值,见式(3)。
式中:(Xk,Yk,Zk)为Kinect坐标系中的坐标值;(xj,yj,zj)为关节的三维坐标点;Rij为旋转矩阵;tx、ty、tz为平移向量。上述参数可通过Kinect-V2 相机标定获得。
将Kinect 坐标系中的坐标值转化为彩色图像中的坐标值,见式(4)。
式中:(Xk,Yk,Zk)为Kinect 坐标系中的坐标值;(u,v) 为彩色图像上的像素坐标点;Kfx、Kfy、Kcx、Kcy分别为相机内参矩阵中的参数。
接下来计算关节角度,以人体右肘关节角度为例,见式(5)。
式中:velbow为右手肘向量;vsℎoulder为右肩膀向量;vwrist为右手腕向量。
这样就能得到所需的关节角度,并判断所作康复动作是否标准。通过对比标准动作来给出一个反馈评估,结果如图2所示。
图2 骨骼节点评价反馈
由于使用单个Kinect 来识别复杂动作时会出现关节点遮蔽现象,要对所做的动作进行实时检测,并反馈消息。对个人来说,该系统更加繁琐,不利于推广。康复训练中的动作需要患者反复进行,且每个人有不同的标准,无法总结出一个很好的评估标准体系。所以,设计出基于Kinect 和Unity3D的体感游戏来解决复杂动作关节点遮蔽问题,并在游戏中使患者能进行大量的反复训练,使用体感游戏得分来对康复动作进行评估。
3 系统设计
体感游戏康复训练流程如图3所示。
图3 体感康复训练流程
玩家站在系统摄像头前方,通过手势来操控游戏。玩家左手向右挥手表示屏幕上的项目向右滑动,玩家右手向左挥手表示屏幕上的项目向左滑动,玩家握拳表示选择,玩家左手臂向上伸直表示向左变道,玩家右手臂向上伸直表示向右变道,玩家双臂向上伸直表示向上跳跃。患者在玩游戏过程中,根据系统设置的游戏人物,患者需要做出相应动作,从而完成游戏任务。若正确,则加一分,若错误,则记录错误一次。错误累计五次,则闯关失败。正确分值达到60,则闯关成功。体感训练系统界面如图4所示。
图4 体感训练系统界面
该游戏可分为点评模块、闯关模块。点评模块可分为得分模块、误差模块、解析模块,闯关模块可分为初级模块、中级模块、高级模块。得分模块对患者做出的动作与标准数据库中的动作进行对比,从而给出患者所做动作的得分。误差模块会在患者做完动作,系统给出患者所做动作的得分后,与标准数据库中的动作进行对比,给出误差分析情况。解析模块是在患者做完动作后,将患者所做动作与标准数据库动作进行对比,对患者所做动作进行解析。
4 动作评估
玩家在通过闯关游戏后,选择游戏难度系数进行闯关,不同难度闯关成功后,患者恢复程度不同。闯关成功表示患者达到有效的康复训练,闯关难度系数越高,表示患者恢复得越好。
4.1 初级模块
初级模块中的康复训练动作只对患者上肢体进行锻炼,康复动作如下。①站立时,双臂向前伸直,与地面平行。②站立时,双臂伸直与地面平行,小臂与大臂夹角为90°。③站立时,双手十指交叉,举过头顶,双臂伸直,手心朝上。④站立时,双臂向前伸直,与身体夹角为60°。⑤站立时,双臂向后伸直,与身体夹角为60°。⑥站立时,双臂向上伸直,与地面夹角为60°。⑦站立时,双臂向前伸直,与地面平行。⑧站立时,左臂向前伸直,右臂向后伸直,二者与地面夹角均为60°。⑨站立时,左臂伸直与地面平行,右臂自然下垂。⑩站立时,左臂伸直与地面平行,小臂与大臂夹角为90°,右臂自然下垂。⑪站立时,左臂向前伸直,与身体夹角为60°,右臂自然下垂。⑫站立时,左臂向后伸直,与身体夹角为60°,右臂自然下垂。⑬站立时,左臂向上伸直,与地面夹角为60°,右臂自然下垂。⑭站立时,左臂向前伸直,与地面平行,右臂自然下垂。⑮站立时,右臂向前伸直,左臂向后伸直,二者与地面夹角均为60°。⑯站立时,右臂伸直与地面平行,左臂自然下垂。⑰站立时,右臂伸直与地面平行,小臂与大臂夹角为90°,左臂自然下垂。⑱站立时,右臂向前伸直,与身体夹角为60°,左臂自然下垂。⑲站立时,右臂向后伸直,与身体夹角为60°,左臂自然下垂。⑳站立时,右臂向上伸直与地面夹角为60°,左臂自然下垂。站立时,右臂向前伸直,与地面平行,左臂自然下垂。
4.2 中级模块
中级模块中的康复训练动作只对患者下肢进行康复锻炼,复动作如下。①站立时,抬起左腿伸直,与地面的夹角为60°。②站立时,抬起右腿伸直,与地面夹角为60°。③站立时,抬起左腿向左伸直,与地面夹角为60°。④站立时,抬起右腿向右伸直,与地面夹角为60°。⑤站立时,抬起左腿,大腿与地面平行,小腿自然下垂。⑥站立时,抬起右腿,大腿与地面平行,小腿自然下垂。⑦双腿分开,与肩同宽或大于肩宽,臀部慢慢往下坐,大腿与地面的夹角为60°。
4.3 高级模块
高级模块的康复训练动作涉及患者的上肢体和下肢体,对患者全身进行康复训练。康复动作是对初级模块和中级模块中的动作的随机结合,组合方法见式(6)。
式中:n为不同元素的个数;m(m≤n)为选取的元素个数。根据排列组合可得出,一共有=147个动作。
5 试验结果与分析
根据医院康复中心提供的信息,选取20 人分别进行训练。将释放气泡自由度由1 调整为10,分别对检测区的上半区和全区进行检测。试验采用分组测试,将20 个测试者分为2 组,每组10 人,分别为标准组和测试组。标准组的测试人员为健康的成年人,按照设置不同的气泡来产生位置和运动自由度,分别训练10 次,经运动系统测试得到完成度评分。对测试组的10 个试验者,采用同样的设置参数训练10 次。经动作识别算法计算得到运动能力数值后,通过数据拟合评估得到标准组和测试组的动作完成度。测试数据见表2、表3,表中的数据为每个动作自由度下的得分,没有实际单位,数值越高代表灵活度越高。
表2 在不同测试个体上不同自由度下的得分值
表3 在不同测试个体上不同自由度下的得分值
经过长期训练后得到的自由度评测分数见表4。4动作完成度曲线如图5所示。
表4 训练完成后测试结果
图5 4动作完成度曲线
6 结语
试验结果表明,受试者的运动速率平稳,能在规定时间内达到预定的击打数。通过试验验证了基于Kinect 和Unity3D 构建的康复动作识别与评估系统能帮助患者实现康复训练的目的。该系统通过对患者动作与标准动作库中的动作进行对比,得出对与错。由于该系统不受光照、患者穿戴和患病位置的影响,更易帮助患者进行康复训练,简单且易于上手。对患者来说,其价格还比较便宜,能减轻患者的经济负担。该系统设计的动作种类相对来说较多,动作难度一级比一级难,所以,患者在进行康复训练过程中,不会因为就只有几种动作而感到枯燥,增加了趣味性及挑战性。