发明名称 一种基于kinect的动作训练方法
摘要 本发明是一种基于kinect的动作训练方法,通过kinect采集人体动作数据,实现无标记点的人体动作提取,使动作训练更加简单实用。基于kinect的动作训练方法分为在线动作训练和离线动作训练两种方式。在线动作训练能够自动把训练的动作划分为若干个阶段,用户通过跟随每一个阶段的提示,对动作进行学,通过用户动作的动能和势能判断用户是否完成每一个阶段的动作,并自动计算并提示用户该动作阶段重要的关节点。离线动作训练方法中,用户首先自主地完成整个动作,用户动作通过kinect捕捉后自动与标准动作进行匹配,通过对匹配的动作进行对比分析并根据用户动作与标准动作骨骼方向上的差距大小以不同的颜色进行标识,使用户能够更直观地发现差距所在。
申请公布号 CN102500094B 申请公布日期 2013.10.30
申请号 CN201110334909.7 申请日期 2011.10.28
申请人 北京航空航天大学 发明人 周忠;吴威;梁进明
分类号 A63B23/00(2006.01)I;A63B24/00(2006.01)I;G06F19/00(2011.01)I 主分类号 A63B23/00(2006.01)I
代理机构 北京科迪生专利代理有限责任公司 11251 代理人 许玉明;顾炜
主权项 1.一种基于kinect的动作训练方法,其特征在于如下步骤: (1)用户选择所使用训练模式,训练方法分为在线动作训练和离线动作训练两种模式;所述在线动作训练用户将跟随虚拟教练员的提示完成动作训练,动作将被分解成若干个阶段,用户跟随每一个阶段的提示完成动作训练;所述离线动作训练是由用户自主完成动作,用户动作通过kinect捕捉后自动与标准动作进行对比分析,并向提示用户动作的差距; (2)通过训练视图提示用户完成训练;所述训练视图分为动画视图及真实视图,动画视图中有两个角色模型,分别代表教练员及用户;教练员模型使用标准动作数据驱动,完成动作演示的功能,称之为虚拟教练员;用户模型使用采集的用户动作数据驱动,完成显示用户动作的功能;真实视图显示kinect采集的真实图片,在动作训练过程中用户能够通过真实视图观察自己的动作,真实视图还能在训练结束后回放用户动作; 所述在线动作训练的步骤如下: (1.a1)在线动作训练将一套将要进行训练的动作划分为若干个阶段,动作划分使用关键动作提取方法完成,并通过能量方法判断用户是否完成每一个阶段的动作;用户跟随动画视图中的虚拟教练员进行动作训练,当判断用户已经完成每个阶段的动作后,虚拟教练员自动提示下一个阶段的动作,用户通过跟随虚拟教练员依次完成每一个阶段的动作; (1.a2)对于每一个阶段的动作,向用户提示该阶段动作需要注意的关键点,通过标记出较为重要的关节点提醒用户注意;关键点通过计算每个阶段各个关节点位移的均方差得到,取均方差最大的若干个关节点作为关键点,并提醒用户注意每个阶段的关键点; 所述的关键动作提取方法的步骤为: 1.a1.1使用重要度计算方法评价每帧动作的重要程度,首先通过帧F<sup>t</sup>(k)的前一帧动作F<sup>t</sup>(k-1)与后一帧动作F<sup>t</sup>(k+1)插值得到F<sup>t</sup>(k)的插值帧IF<sup>t</sup>(k),然后计算帧F<sup>t</sup>(k)与IF<sup>t</sup>(k)的差距interplaterError,公式如下: <img file="FDA00003570430600011.GIF" wi="1496" he="162" />其中<img file="FDA00003570430600012.GIF" wi="58" he="72" />表示原始动作F<sup>t</sup>(k)的第j个关节点,<img file="FDA00003570430600013.GIF" wi="48" he="76" />表示插值得到的动作IF<sup>t</sup>(k)的第j个关节点,其中jointNumber为动作关节点的个数,关节点之间的距离采用欧氏距离计算;最后动作F<sup>t</sup>(k)的重要度D<sup>t</sup>(k)的计算公式为:D<sup>t</sup>(k)=(F<sup>t</sup>(k+1)-F<sup>t</sup>(k-1))×interplaterError(F<sup>t</sup>(k-1),F<sup>t</sup>(k),F<sup>t</sup>(k+1))/2; 1.a1.2关键动作提取算法通过不断删除重要度较低的动作最后得到关键动作,在删除动作的过程中,会对动作的重要度进行更新,并且每次都会选择重要度最低的动作删除; 1.a1.3使用基于静态双向链表和最小堆的复合堆数据结构进行优化,降低算法的时间复杂度; 所使用能量方法的步骤为: 通过动作的势能判断用户动作与教练员动作的差距,当用户已经完成某个阶段动作后,与教练员的动作差距应较小;使用动作动能判断用户动作的稳定程度,当用户完成某个阶段的动作后,应等待虚拟教练员提示下一个阶段的动作,此时用户动作应较为稳定;当用户的动作满足动能和势能分别小于预定阈值时,虚拟教练员将提示下一个阶段的动作; 所述离线动作训练的步骤为: (1.b1)进行训练时,虚拟教练员首先完成动作演示,然后用户自主完成动作,在动作过程中kinect自动采集用户动作数据,在用户完成动作后将用户动作与标准动作数据进行对比,并在动画视图中显示对比结果;对比结果分上下两排显示,上排为采样后的标准动作数据,下排为采样的用户动作,动作差距在用户模型骨骼上以不同的颜色标识; (1.b2)使用动态规划算法对用户动作与标准动作进行匹配;用户动作与标准动作要进行匹配后才能进行比较,离线动作训练以用户动作与标准动作的差距作为匹配代价,使用动态规划算法,对采集动作数据与标准动作数据进行匹配,使得两个动作序列进行匹配后的总代价最小; (1.b3)在计算用户动作与标准动作的差距时,将计算用户动作与标准动作所有对应骨骼的方向差距,方向差距使用骨骼长度进行加权,称之为加权差距;根据加权差距的大小,把用户动作与标准动作的差距分为无偏差、中等偏差、严重偏差,并分别使用绿色、蓝色、红色在对应的骨骼上进行标识。 
地址 100191 北京市海淀区海淀区学院路37号