基于Unity3D 与Kinect 的甩手疗法辅助训练系统

2018-08-01 01:10杨文璐李小瑞夏斌
现代计算机 2018年20期
关键词:特征值手臂角度

杨文璐,李小瑞,夏斌

(上海海事大学信息工程学院,上海 201306)

0 引言

甩手疗法又名“甩手功”,简称“甩手”,是一种简便易行的群众性自主医疗体育运动[1]。科学研究表明,甩手运动其功效一方面体现在加快血液流向肢体末梢,打通经络,加快血液回流,促进新陈代谢,增强机体对氧的摄录,提高心肺功能[2]。此外,甩手运动对于肩周炎[3]、心血管疾病以及肱骨外伤[4,5]引起的上肢功能性障碍具有良好的康复辅助作用。故甩手运动的推广对广大群众,尤其是中老年人的保健具有重要意义。

传统的甩手疗法主要通过视频或书面文字等形式进行传播教学,且甩手疗法动作单一,需要长时间坚持,才能达到康复理疗的效果。这些传统训练方式存在着训练过程枯燥乏味、动作规范性不够等不足,在没有监督的情况下,用户难以坚持自主学习及获得康复评价。近年来,随着Kinect体感器[6]的问世,众多科研人员将该技术运用于医学领域。在国外,Alessandro Scano等[7]人将Kinect体感器采集的上肢骨骼点数据与穿戴式设备采集的数据进行了比较,实验结果表明,Kinect采集数据的精度足以运用于肢体康复评估领域;Chang[8]等人研发的Kinect康复系统,通过判断患者关节点的位置等数据,评估患者的运动是否达到了康复的标准,17岁患有先天性脑瘫的彼得和16岁患有肌肉萎缩的西里分别在该系统下进行了基础阶段、干预阶段的训练,通过这两个阶段的康复训练后,彼得和西里的运动功能得到了明显的改善,证明了该研究系统的实用性。在国内,刘亚瑞[8]等将Kinect运用于手势识别领域,实现了5种手势的识别,平均识别率高达95.2%。薛智宏[9]等研发了基于Kinect的原地太极拳辅助系统,利用Kinect进行数据采集,使用动态时间规整算法(DTW)对动作进行评估,实现了对用户动作的引导及评估功能。

鉴于此,本文考虑到传统甩手疗法的训练过程枯燥乏味、用户动作规范性不够等不足之处,研发出一款基于Kinect骨骼跟踪技术和虚拟现实技术的甩手疗法辅助训练系统,该系统可以对手臂功能进行必要的评估,并通过Unity3D游戏引擎的动画系统[13]制作出3D引导动画,引导人们进行正确规范的甩手运动。

1 系统设计

系统的流程图如图1所示。首先,用户进入系统主界面后,选择进入评估场景或训练场景。以选择进入训练场景为例,用户在系统的提示下,根据3D人物引导动画进行训练,同时Kinect体感器实时采集人体25个骨骼点的三维坐标数据,并将三维坐标数据转换为相关关节点角度序列和距离序列。最后,对角度序列和距离序列进行数学分析,得出训练得分反馈给用户,从而辅助用户进行正确高效的甩手训练。

图1 系统流程图

1.1 甩手疗法动作简介

甩手疗法由来已久,同时吸取了中医和“易筋经”的某些理论,是一种科学化、大众化的群体性保健体育活动,曾风靡于江浙沪一带,著有《甩手三字诀》、《甩手十六决》等相关书籍[1]。甩手疗法具体步骤和要点如下:

(1)双脚与肩同宽,平行站立,呼吸自然,双手向前伸直,肩膀放松;

(2)双手往后来回甩动,甩动的时候肩膀放松,跟着节奏甩动,无需太用力;

(3)每甩手5次,双膝微蹲2次;

(4)循环(1)-(3)步骤,每次至少持续 30分钟。

1.2 评估动作的设定

根据甩手疗法的动作要领,可知主要运用到人体上肢功能,故在进行训练之前需对用户的上肢功能进行评估,以便后期观察训练效果。根据手功能康复学[12]的建议,上肢功能的评估主要通过手臂外展、前屈、后伸和外展四个动作,根据动作的活动范围可以将上肢功能分为三个等级,即正常(没有任何障碍)、基本(仅能满足工作生活等方面需求)和不合格(无法满足日常需求),具体活动范围如表1所示。本文通过对用户上述四个动作评估对用户上肢功能进行评估。

2 系统实现

表1 上肢功能活动要求

首先解析Kinect2.0体感器采集到的用户动作数据,然后提取手臂运动特征,最后分别实现评估场景和训练场景的各项得分策略。

2.1 数据获取

Kinect 2.0体感器是微软于2014年6月推出的全新一代人机交互传感器,该设备由彩色摄像头、红外投影机、深度传感器等硬件构成,不但可以获取彩色图像、深度图像和轮廓图像,还可以以30帧/秒实时获取人体25个骨骼节点的三维坐标数据[14]。

利用Kinect体感器获取如图2所示人体25个骨骼节点的空间坐标数据流,每一帧共包括25个三维坐标数据。

图2 Kinect捕捉的人体25个骨骼节点

2.2 特征提取

整个评估训练过程中,主要以手臂前后往复运动为主。描述手臂动作时,由肩关节和肘关节旋转特性决定的手臂空间位置对动作的表达起关键性作用[9]。因此,本文主要研究并提取肩关节与肘关节在运动过程中的旋转角度特征。根据Kinect体感器获取到的25个骨骼点坐标信息对本文涉及到动作特征描述的贡献程度不同,初步筛选出如表2所示的5个骨骼节点,其作用主要包括两个方面:(1)描述左右手臂运动姿态;(2)确定人体相对于体感器的位置。

表2 特征骨骼节点及其作用

(1)描述手臂运动姿态

将描述两侧手臂运动姿态的4个关节点,根据其自由度不同分成两类:

①ElbowLeft、ElbowRight只能在一个二维平面上旋转;

②ShoulderLeft、ShoulderRight可以在三维空间中旋转。

对于只能在一个平面上旋转的骨骼点,其角度范围是0°~180°,可以通过计算2个向量的夹角来确定。以计算左肘关节点ElbowLeft角度为例,如图3所示,选取HandLeft、ElbowLeft和ShoulderLeft三个关节点,分别记其三维坐为A、B和C,肘关节角度记为∂,则∂的相关计算公式如下:

图3 左肘角度计算

对于可以在三维空间中旋转的骨骼点。以左肩关节点ShoulderLeft为例,当手臂外展或者手臂前屈时,肩关节角度都是90°,若仍然使用计算向量夹角的方式提取其角度特征数据,则对于各个动作的描述不具有唯一性。针对这一问题,本文为了使角度特征数据能够唯一描述各个动作的状态,对于手臂外展、手臂前屈、手臂后伸、手臂上举4个动作的不同特征,采用计算线面夹角的方式分别提取它们的角度特征数据。以上4个动作肩关节特征角度如图4所示,计算线面夹角的相关公式如下所示:

其中,A→和B→是对应平面内的两个不共线的向量,n→为该平面的法向量,∂为手臂与该平面的夹角。

图4 肩关节角度特征提取

(2)确定人体位置

对于人体位置姿态,要保证用户在训练过程中垂直站立在Kinect体感器正前方2至3米的位置。本研究以SpineMid骨骼节点的位置表示人体所处位置,假设以O表示体感器位置,A表示SpineMid点,则人体距离体感器距离可表示为:

2.3 评估得分策略

计算评估得分主要有三步:首先提取评估特征值,然后计算各个特征值得分,最后经过加权平均计算最终评估得分。

提取评估特征值:评估得分旨在对用户手臂评估动作的准确性、稳定性以及协调性进行反馈。其中,准确性是指动作角度是否达到要求,稳定性是指用户进行动作时能否坚持一定时间,协调性是指用户双臂动作是否一致。系统分别采集了用户的4个评估动作10秒钟的特征角度数据序列,动作的准确性通过肩关节与肘关节能够达到的最大角度和10秒时间的平均角度表达;稳定性通过对应角度10秒钟角度序列的标准差来判定;协调性通过双臂之间的夹角来描述。综上所述,每个评估动作涉及到的特征共13个,记为Pa={c0,c1,c2…c12},其中 ci代表一种特征,具体对应关系如表3所示。

计算各个特征值得分:对特征值集合Pa中的每一项特征值进行百分制得分计算,本文使用阈值法求取得分,即参考表1中人体上肢活动范围情况,以满足“正常活动要求”的值为得分100分、以达到“基本活动要求”的值为及格60分设定阈值,最终以同比例转换的方式求取最后得分。记特征值独立得分集合为Ps={d0,d1,d2…d12},其中 di代表特征值变量 ci的得分,di值由公式(8)确定。

其中,i={0,1,2,…,12},M表示表1中不同动作对应的“正常活动要求”值,N表示表1中不同动作对应的“基本活动要求”值,D表示对应动作最小值。

计算最终评估得分:用户完成评估后,需向用户反馈最终得分情况,其中包括用户完成的4个动作的准确性、稳定性和协调性三方面得分以及最终的加权得分。如表4所示,为最终得分展示内容,其中Dij表示对应项的分数。以手臂外展为例,通过计算各个特征值得分,得到一个特征值独立得分集合Ps={d0,d1,d2,…,d12},经过多次实验后,发现不同di得分对于不同D0j分数结果的贡献度存在差异,本文通过计算加权平均数的方式得到D0j结果。以计算D00(左臂外展准确性得分)为例,该项得分主要考察用户左臂活动角度能否达到健康人标准,故对该得分起到决定性作用的特征值为c0(左肩最大角度)、c1(左肩平均角度)、c3(左肘最大角度)和c4(左肘平均角度),经过多次实验后,设置其权值集合为 W00={0.5,0.3,0,0.1,0.1,0,0,…,0},记为

表3 特征值变量与对应名称

表4 最终得分展示

3 系统演示与测试分析

3.1 系统演示

图5 评估系统界面

如图5(a)所示为评估系统场景效果图,用户进入系统后,根据系统提示进行相应的评估测试,评估结束后,系统会弹出“评估报告”,该报告共包括评估得分和评估过程中详细数据两部分,如图5(b)所示为评估得分部分,展示表3各项得分内容,如图5(c)所示为详细数据部分,展示表4各项特征值数据。

3.2 系统测试

为验证系统评分的普适性与准确性,本次测试共分为2部分:

(1)普适性测试与分析

为测试评分算法与受试者无关性,即系统评分的普适性,征集了5名健康的志愿者,其中2名女性,3名男性,年龄均在24岁左右,在系统的提示下尽可能正确地完成评估测试,5名志愿者的各项得分数据如图6所示。从图中数据可以看出,5名志愿者各项分数都集中在80至100分之间,达到了较高的标准,符合得分与数据的一致性。

图6 志愿者标准动作得分

(2)准确性测试与分析

为测试评分算法对受试者动作能够准确反馈,即系统评分准确性,对5名志愿者进行了第二次测试。在此次测试中,5名志愿者尽可能多地做出与系统要求不同的动作,最终得分与其标准动作得分对比如图7所示。从图中数据可以看出,两次不同的测试各项得分差距巨大,标准动作得分集中在较高水平,而乱做动作得分极低,验证了系统对数据的灵敏性以及准确性。

图7 志愿者对比动作得分数据

4 结语

本文以Unity游戏引擎为开发平台,构建了仿家居式评估训练场景,给予了康复训练游戏的代入感,吸引用户自主完成手臂功能评估训练,拥有较强的趣味性。本文提出的特征提取算法与评估得分算法具有较高的普适性和准确性,得分反馈可以引导用户更好地按标准调整正训练动作,最终达到较好的康复训练效果。

猜你喜欢
特征值手臂角度
利用LMedS算法与特征值法的点云平面拟合方法
单圈图关联矩阵的特征值
手臂上的抓痕
凯莱图的单特征值
一个涉及角度和的几何不等式链的改进
角度不同
人啊
求矩阵特征值的一个简单方法
完美的手臂
大树为什么有那么多手臂