三维人体运动数据关键帧提取方法

文档序号:6556636阅读:332来源:国知局
专利名称:三维人体运动数据关键帧提取方法
技术领域
本发明涉及计算机三维动画技术及多媒体数据处理领域,尤其涉及一种三维人体运动数据关键帧提取方法。
背景技术
近年来随着运动捕获设备的广泛使用,生成大量具有真实感的三维人体运动数据,这些数据被广泛应用于计算机游戏、动画生成及医学仿真等多个领域。由于人体运动是以较高的采样频率被捕获,为了便于大量三维人体运动数据的压缩存储、检索、浏览及更进一步的运动编辑,对运动数据进行关键(姿势)帧提取是非常有用的。
关键帧提取是一种被广泛应用于视频分析与检索领域的技术,如基于镜头边界、颜色特征、运动分析及基于聚类等视频关键帧提取方法。与二维时序视频数据中的关键帧不同,在人体运动数据中,关键帧指能够代表运动序列的三维骨架数据。现有人体运动数据关键帧提取方法主要分为两大类等间隔采样及自适应采样。等间隔采样容易在运动缓慢部分过采样,造成数据冗余;在运动激烈部分欠采样,丢失运动细节。自适应采样正好解决了这一问题。《计算机视觉与图像理解》杂志2003年第二期中(Computer Vision and ImageUnderstanding,2003,92(2-3)265-284)公布了一种基于聚类的关键帧提取方法以实现自适应采样将N帧运动数据聚类到K个群集合中,取各集合中的首帧作为关键帧。《计算机辅助设计与图形学学报》2004年第五期中(2004,16(5)719-732)公布的方法将人体各关节上总的旋转变化作为帧间距,通过逐帧比较帧间距变化情况来确定关键帧。IEEE医学与生物工程2001年会论文集中(In Proceedings of 23rdAnnual International Conference ofthe IEEE Engineering in Medicine and Biology Society(EMBC),2001,21167-1169)公布的方法将原始人体运动数据的每一帧看成高维空间中的一点,通过按序连接整段数据中的数据点,将原始运动视为高维空间中的一段曲线,然后采用曲线简化算法提取关键帧。这些自适应关键帧提取方法主要关注两个方面,一是运动特征的表达,二是如何对关键帧提取方法进行量化分析。
为了对运动捕获数据进行处理,已有多种运动特征表示方法被提出如《计算机视觉与图像理解》杂志2003年第二期中(Computer Vision and Image Understanding,2003,92(2-3)265-284)公布的方法采用层次化运动描述,把人的关节点分为五层表示;《美国计算机学会计算机图形专业组’02年会议论文集》(ACM SIGGRAPH’02 ConferenceProceedings,pp.491-500)公布了一种两层运动特征表示方法,底层用马尔可夫模型表达运动特征,捕获运动细节,高层是运动数据的归纳,表征帧的分布和转换。这两种运动特征表示方法,对原始运动数据进行了归纳,但所表示的运动物理特征不明显。《可视化通讯与图像表示学报》2004年第三期中(Journal of Visual Communication and Image Representation,2004,15(3)446-466)公布方法所提取的特征是人体骨架包括九个主要骨骼段及根关节的朝向信息。这种表示方式减少了运动特征的维数,但由于每段骨骼均采用两个参数表示,不利于对人体骨架各部分姿势进行观察。《美国计算机学会图形学学报》2005年第三期中(ACMTransactions on Graphics 2005,24(3)677-685)公布的方法根据人体关节之间的空间几何关系总结出31种人体运动的几何特征来表示人体运动。这种运动特征表示方法虽然能很好地表示出运动的物理特征,但是特征类型过多,计算量大。
为了对关键帧提取方法进行量化分析,一些学者提出误差率和压缩比等量化指标如计算机视觉与图像理解》杂志2003年第二期中(Computer Vision and Image Understanding,2003,92(2-3)265-284)公布的方法需要一个阈值判断当前帧是否属于现有聚类;《计算机辅助设计与图形学学报》2004年第五期中(2004,16(5)719-732)公布的方法通过判断当前帧与关键帧集合中最后一帧的距离是否大于某一阈值确定当前帧是否为关键帧;IEEE医学与生物工程2001年会论文集中(In Proceedings of 23rdAnnual International Conferenceof the IEEE Engineering in Medicine and Biology Society(EMBC),2001,21167-1169)公布的方法采用曲线简化提取关键帧,需要设置误差参数作为曲线逼近的条件。以上误差(阈值)参数体现了这些算法的误差要求,用户需要根据不同误差来设置算法参数以获得不同的原始数据压缩比。然而,由于不同运动序列在运动速度及运动风格等方面的差异,使得误差要求与压缩比之间不存在绝对的一一对应关系。这样,对于只关注关键帧数目(压缩比)的用户来说,如果采用上述关键帧提取算法提取关键帧,需要反复尝试不同的误差要求以满足自己需要,这个过程相当耗时。

发明内容
本发明为克服上述现有方法运算效率和精确度不高的缺点,提供了一种高效、自动的三维人体运动数据关键帧提取方法。
三维人体运动数据关键帧提取方法包括以下步骤(1)首先采用骨骼夹角作为三维人体运动数据序列的特征表示;(2)基于骨骼夹角特征,从三维人体运动数据序列中提取候选关键帧集合;(3)以三维人体运动数据的骨骼夹角特征序列、候选关键帧集合及误差参数为输入,采用分层曲线简化算法提取最终关键帧集合;(4)基于用户输入的关键帧数目及分层曲线简化算法返回的实际关键帧数目,误差参数自适应调节方法能够不断反馈正确的误差参数,以便于获取最终的满足用户要求的关键帧数量。
所述采用骨骼夹角作为三维人体运动数据序列的特征表示是将人体骨架中四肢部分的八段骨骼作为特征表示对象,提取这八段骨骼与由根关节和胸关节组成的中心骨骼之间的夹角作为运动特征。定义段骨骼 为由该段骨骼中位于人体骨架较高层关节Ni指向较低层关节Nj的向量,即B→(k)=NiNj→=(p→(j)-p→(i)),]]>其中, 是关节Ni和Nj在三维空间中的坐标。因此,在给定帧时刻i,任意段四肢骨骼与中心骨骼夹角的公式计算为θik=cos-1(B‾ik·B‾i(center)|B‾ik||B‾i(center)|),k=1,...,8]]>其中, 表示中心骨骼,θ的取值范围为
。这样,对于任意帧时刻i,采用上述运动特征表示法,人体姿势可以表示为八元组Fi=(θi(1),...,θi(8)),]]>不仅实现原始运动捕获数据的高维降维,而且有效反映了运动的物理含义。
所述基于骨骼夹角特征从三维人体运动数据序列中提取候选关键帧集合是指人体骨架四肢中其各自两段骨骼与中心骨骼的夹角变化情况共同反映了该肢体的运动情况,综合人体所有四肢骨骼夹角变化情况,取它们的极值所在帧的并集,可以得到候选关键帧集合。
所述分层曲线简化算法提取最终关键帧集合是指给定一个有序数据集M,M={Fi|i=1,...,N},Fi=(xi(1),...,xi(m)),]]>按序连接M中所有数据点,形成一个m维空间中的曲线;求满足一定误差要求的M的真子集K逼近曲线M,同时,K中的元素应尽可能多地属于集合CCM且F1,FN∈C。为了解决这个问题,将M用一个两层的数据结构来表示第一层(下层)为M,第二层(上层)为M的真子集C。首先在上层运用单层曲线简化算法,若简化结果未能满足误差要求,降到下层运用单层曲线简化算法,并把得到的分裂点加入到上层中,继续在上层进行曲线简化,如此反复,直到求得满足条件的集合K。在这个方法中,两个数组c_num和pair被分别使用。数组c_num记录集合C中元素在M中的位置,按元素位置从小到大的顺序排序。数据pair标记M中元素是否属于集合K若不属于,值为0;若属于,值指向K中下一个元素在M中的位置。在单层曲线简化算法中,计算集合M中第i个元素到由第n1个元素和第n2个元素(n1<i<n2)连成的直线的最短距离,可以由以下公式得到di=Σk=1m(xi(k)-xn1(k))2-(Σk=1m(xn2(k)-xn1(k))(xi(k)-xn1(k)))2Σk=1mxn2(k)-xn1(k))2]]>分层曲线简化算法步骤如下
输入数据集M,M={Fi|i=1,...,N},Fi=(xi(1),...,xi(m));]]>集合CCM且F1,FN∈C;误差参数 输出数组kfSet,kfSet={i|Fi∈M&Fi∈K,i=1,...,N};步骤1初始化,n为集合C的元素个数,c_num={i|Fi∈M&Fi∈C,1≤i≤N},pair(1)=N,pair(N)=1,trackMark=1,标记当前处理到的C中元素的位置,lastMark=0,标记上一次处理到的C中元素的位置;步骤2若pair(trackMark)=1,转步骤5,否则计算集合C中在元素trackMark和pair(trackMark)之间的子集subSet={c_num(i)|trackMark<c_num(i)<pair(trackMark),1≤i≤n},若subSet长度大于0,转步骤3,否则,转步骤4;步骤3上层曲线简化(1)按公式(1)计算subSet中每一点到直线|Fpair(trackMark)FtrackMark|的距离,记最大距离为max_dist,其对应的元素为max_ind;(2)计算ratio=max_dist/‖Fpair(trackMark)-FtrackMark‖,若ratio>δ,令pair(max_ind)=pair(trackMark),pair(trackMark)=max_ind,否则trackMark=pair(trackMark);(3)转步骤2;步骤4下层曲线简化(1)令subSet=[trackMarkpair(trackMark)];(2)按公式(1)计算subSet中每一点到直线|Fpair(trackMark)FtrackMark|的距离,记最大距离为max_dist,其对应的元素为max_ind;(3)计算ratio=max_dist/‖Fpair(trackMark)-FtrackMark‖,若ratio>δ,C=C∪{Fmax_ind},重置c_num和n,令pair(max_ind)=pair(trackMark),pair(trackMark)=max_ind,转步骤2,否则trackMark=pair(trackMark);(4)转步骤2;步骤5kfSet={i|pair(i)≠0,1≤i≤N}。
所述误差参数自适应调节方法是指根据关键帧数目的实际值与目标值之差动态调节误差参数δ。若关键帧数目的实际值大于目标值,δ增加,增加比率为δ_inc(δ_inc∈(0,1));若关键帧数目的实际值小于目标值,δ减小,减小比率为δ_dec(δ_dec∈(0,1))。进一步,对δ的增减率dδ(dδ∈{δ_inc,δ_des},dδ∈(0,1))采用动态调节的略策。若连续两次循环中关键帧数目当前值在目标值的同一侧(δ的变化同向),则增加dδ,以加快δ向同方向变化;否则,即是关键帧数目的实际值在目标值左右邻域进行振荡,此时应减小dδ,以减小振荡的幅度。dδ的增减变化函数分别为finc(dδ)=1-(dδ-1)2,fdec(dδ)=1-1-dδ2.]]>此外,为振荡次数给定最大阈值epoch,将其作为算法中循环结束的一个条件。
本发明所述的三维人体运动数据关键帧提取方法具有如下特点1.该方法计算复杂度较低,在给定长时间三维人体运动序列的条件下,能够高效提取出满足用户要求的三维人体运动数据关键帧集合。
2.该方法自动化程度高,给定一段三维人体运动数据序列,用户只需要指定所需提取关键帧的数量,即可得到最终关键帧集合,输入参数直观,且避免了输入大量抽象计算参数的问题。
3.该方法能够根据实际三维人体运动数据序列及用户指定的关键帧数目,自动调节计算误差参数,实现参数的自动调整。


图1是本发明所采用的人体骨架模型图;图2是本发明候选关键帧选取方法示意图;图3是本发明的人体运动数据关键帧提取方法工作流程图;图4是对一段打拳运动序列提取关键帧的实例图;图5是对一段上楼梯运动提取不同关键帧数量的实例图。
具体实施例方式
本发明的三维人体运动数据关键帧提取方法具体实施的技术方案及步骤如下1.运动特征表示本发明采用如附图1所示的人体骨架模型。该模型由16个关节组成,各关节点采用树形结构组织,根关节点为树形人体骨架的根结点,从根关节点向人体骨架的各个末端关节逐层延伸形成根结点的各个子树。考虑到人体骨架四肢部分在人体运动中变化最明显,本发明将描述运动的方法从关节层上升到骨骼层,将人体骨架中四肢部分的八段骨骼作为特征表示对象,提取这八段骨骼与由根关节和胸关节组成的中心骨骼之间的夹角作为运动特征。定义段骨骼 为由该段骨骼中位于人体骨架较高层关节Ni指向较低层关节Nj的向量,即B→(k)=NiNj→=(p→(j)-p→(i)),]]>其中, 是关节Ni和Nj在三维空间中的坐标。因此,在给定帧时刻i,任意段四肢骨骼与中心骨骼夹角的公式计算为θik=cos-1(B‾ik·B‾i(center)|B‾ik||B‾i(center)|),k=1,...,8]]>其中, 表示中心骨骼,θ的取值范围为
。这样,对于任意帧时刻i,采用上述运动特征表示法,人体姿势可以表示为八元组Fi=(θi(1),...,θi(8)),]]>不仅实现原始运动捕获数据的高维降维,而且有效反映了运动的物理含义。
2.候选关键帧选取通过观察发现,在人体运动过程中,各骨骼夹角的运动轨迹会出现某些极值情况。在附图2所示为一段20帧长的走路运动中,右腿的骨骼夹角运动轨迹。从图中可以看出,当运动到达第8帧、第12帧和第17帧时,运动轨迹出现局部极值点。这三个极值点所在帧分别对应为人体向前运动过程中的三个时刻右腿抬到最高点、右腿第一次落地及身体重心完全落在右腿上。由如上分析可知,右大腿及右小腿骨骼夹角的变化轨迹共同反映了运动过程中人体右腿的变化情况,在曲线达到局部极值时,正好为右腿运动过程中的“边界”姿势。将这些达到局部极值时的姿势作为关键姿势,对右腿运动的表达具有代表性。
与以上情况类似,人体骨架四肢中其各自两段骨骼与中心骨骼的夹角变化情况共同反映了该肢体的运动情况。综合人体所有四肢骨骼夹角变化情况,取它们的极值所在帧的并集,可以得到候选关键帧集合。由于这些候选关键帧是四肢各部分在运动中出现“边界”姿势(帧)的并集,所以它们几乎包括了角色在运动过程中可能出现的所有“边界”姿势。
3.基于分层曲线简化算法的关键帧集合获取对于人体运动来说,不同骨骼夹角得到的极值点可能并不一定出现在同一时刻,而更多的是出现在某个时间邻域内。同时,采用运动捕获设备对人体运动进行捕获时,一定噪声的存在会对人体运动造成姿势上的小变化。这两种情况的存在,将使得初步搜索得到候选关键帧集合中出现一些相隔很近的候选关键帧,使得提取的关键帧存在冗余。对于某些较低误差要求(较高压缩比)的情况,需要对这类候选关键帧的相邻部分进行“合并”。另一方面,在相对较长时间内保持同一姿势变化趋势的运动序列,其候选关键帧相隔较远。为了增强对原始运动的概括能力及满足某些较高误差要求,需要将这类候选关键帧中相邻部分进行“分解”,即在它们之间再选出一个或多个姿势帧作为关键帧。也就是说,在实时提取运动关键帧中,要针对不同的误差需求,对候选关键帧集合进行精选再处理。
本发明提出一种新的分层曲线简化算法来对候选关键帧集合进行精选。算法描述给定一个有序数据集M,M={Fi|i=1,...,N},Fi=(xi(1),...,xi(m)),]]>按序连接M中所有数据点,形成一个m维空间中的曲线;求满足一定误差要求的M的真子集K逼近曲线M,同时,K中的元素应尽可能多地属于集合CCM且F1,FN∈C。为了解决这个问题,将M用一个两层的数据结构来表示第一层(下层)为M,第二层(上层)为M的真子集C。首先在上层运用单层曲线简化算法,若简化结果未能满足误差要求,降到下层运用单层曲线简化算法,并把得到的分裂点加入到上层中,继续在上层进行曲线简化,如此反复,直到求得满足条件的集合K。在这个方法中,两个数组c_num和pair被分别使用。数组c_num记录集合C中元素在M中的位置,按元素位置从小到大的顺序排序。数据pair标记M中元素是否属于集合k若不属于,值为0;若属于,值指向K中下一个元素在M中的位置。在单层曲线简化算法中,计算集合M中第i个元素到由第n1个元素和第n2个元素(n1<i<n2)连成的直线的最短距离,可以由以下公式得到di=Σk=1m(xi(k)-xn1(k))2-(Σk=1m(xn2(k)-xn1(k))(xi(k)-xn1(k)))2Σk=1mxn2(k)-xn1(k))2]]>分层曲线简化算法输入数据集M,M={Fi|i=1,...,N},Fi=(xi(1),...,xi(m));]]>集合CCM且F1,FN∈C;误差参数 输出数组kfSet,kfSet={i|Fi∈M&Fi∈K,i=1,...,N};步骤1初始化,n为集合C的元素个数,c_num={i|Fi∈M&Fi∈C,1≤i≤N},pair(1)=N,pair(N)=1,trackMark=1,标记当前处理到的C中元素的位置,lastMark=0,标记上一次处理到的C中元素的位置;步骤2若pair(trackMark)=1,转步骤5,否则计算集合C中在元素trackMark和pair(trackMark)之间的子集subSet={c_num(i)|trackMark<c_num(i)<pair(trackMark),1≤i≤n},若subSet长度大于0,转步骤3,否则,转步骤4;步骤3上层曲线简化(1)按公式(1)计算subSet中每一点到直线|Fpair(trackMark)FtrackMark|的距离,记最大距离为max_dist,其对应的元素为max_ind;(2)计算ratio=max_dist/‖Fpair(trackMark)-FtrackMark‖,若ratio>δ,令pair(max_ind)=pair(trackMark),pair(trackMark)=max_ind,否则trackMark=pair(trackMark);(3)转步骤2;步骤4下层曲线简化(1)令subSet=[trackMarkpair(trackMark)];(2)按公式(1)计算subSet中每一点到直线|Fpair(trackMark)FtrackMark|的距离,记最大距离为max_dist,其对应的元素为max_ind;(3)计算ratio=max_dist/‖Fpair(trackMark)-FtrackMark‖,若ratio>δ,C=C∪{Fmax_ind},重置c_num和n,令pair(max_ind)=pair(trackMark),pair(trackMark)=max_ind,转步骤2,否则trackMark=pair(trackMark);(4)转步骤2;步骤5kfSet={i|pair(i)≠0,1≤i≤N}。
采用上述分层曲线简化算法对候选关键帧集合进行精选骨骼夹角8元组表示的运动数据对应集合M,候选关键帧集合对应集合C。在分层曲线简化过程中,对上层和下层进行简化分别对应对候选关键帧集合进行“合并”和“分解”操作。这样,通过分层曲线简化算法,能够对候选关键帧集合进行精选,最终得到满足一定误差要求的关键帧集合,同时保证了人体运动过程中的“边界”姿势帧尽可以多地出现在关键帧集合中。
4.误差参数自适应调节方法从关键帧提取算法可以看出,选取不同的误差参数δ能够获得不同的候选关键帧集合的精选程度,即压缩比。然而在某些实际应用中,用户往往只关注提取的关键帧数目却并不知道其对应的误差参数值。为了解决这个问题,本发明通过自适应调节误差参数的方法来满足不同压缩比的需要。
误差参数自适应调节的基本思想是根据关键帧数目的实际值与目标值之差动态调节误差参数δ。若关键帧数目的实际值大于目标值,δ增加,增加比率为δ_inc(δ_inc∈(0,1));若关键帧数目的实际值小于目标值,δ减小,减小比率为δ_dec(δ_dec∈(0,1))。值得注意的是,关键帧数目的收敛可能受到以下几个方面的影响(1)δ初始值过大或过小,而δ的增减率过小,使得关键帧数目收敛缓慢。
(2)δ的增减率过大,使得关键帧数目的实际值在目标值邻域内进行剧烈大振幅振荡。
(3)关键帧数目的实际值在目标值的较小邻域内无限振荡,即实际值无法等于目标值。
为了解决前两种情况的问题,对δ的增减率dδ(dδ∈{δ_inc,δ_des},dδ∈(0,1))采用动态调节的略策。若连续两次循环中关键帧数目当前值在目标值的同一侧(δ的变化同向),则增加dδ,以加快δ向同方向变化;否则,即是关键帧数目的实际值在目标值左右邻域进行振荡,此时应减小dδ,以减小振荡的幅度。dδ的增减变化函数分别为finc(dδ)=1-(dδ-1)2,fdec(dδ)=1-1-dδ2.]]>dδ的增加与减小分别解决了上述第一种及第二种情况产生的问题。针对第三种情况,为振荡次数给定最大阈值epoch,将其作为算法中循环结束的一个条件。
附图3给出了本发明的人体运动数据关键帧提取方法工作流程图。该方法的具体实施流程包括三维人体运动数据输入10、数据预处理20、用户指定关键帧数目30、候选关键帧选取40、关键帧提取50及误差参数自适应调节60。
三维人体运动数据输入10,这里的三维人体运动数据包括通过光学运动捕获设备及相关专业软件(如Maya,Motion Builder等)产生的各种格式的三维人体运动数据,如本例采用美国Motion Analysis公司生产的捕获设备MotionAnalysis Hawk采集各种类型的三维人体运动数据。
数据预处理20,对用户输入的各种格式的三维人体运一动数据进行格式转换,将不同拓扑结构的骨骼转换为本发明中使用的人体骨骼模型,并提取骨骼夹角作为三维人体运动数据的特征表示。
用户指定关键帧数目30,用户使用键盘、鼠标等输入设备为本方法指定最终需要输出的关键帧数目,该参数用来指导关键帧提取算法50及误差参数自适应调节算法60的运行。
候选关键帧选取40,从数据预处理20处接受采用骨骼夹角特征表示的三维人体运动数据序列,然后采用候选关键帧选取方法从三维运动数据序列中选取候选关键帧集合。
关键帧提取50,该步骤基于候选关键帧选取40给定的候选关键帧集合,用分层曲线简化算法从三维人体运动数据特征序列提取最终关键帧集合,其间需要用到误差参数自适应调节60给出的误差参数反馈信息。
误差参数自适应调节60,该步骤与步骤50交替运行,其主要作用是根据步骤50给出的实际关键帧数目与步骤30给出的用户指定关键帧数目进行自适应误差参数调节,反馈给步骤50并得到最终的关键帧集合。
实施例1如附图4所示,给出了对一段打拳运动提取关键帧的实例。下面结合本发明的方法详细说明该实例实施的具体步骤,如下(1)采用光学运动捕获系统捕获一段长度为100帧的打拳运动数据;(2)以步骤(1)中捕获得到的TRC格式原始运动数据作为输入,采用已有的运动数据转换方法将TRC数据转换为满足本发明定义的具有16个关节点的旋转数据表示格式;(3)以步骤(2)得到的标准人体模型及旋转运动数据为基础,采用权利要求中的公式(1)计算四肢骨骼与中心骨骼之间的夹角,形成表示人体姿态的八元组序列Fi;(4)用户指定所需提取的关键帧数量n,在本例中为n=8;(5)将步骤(4)中得到的表示人体姿态的八元组序列看作是分布在8维空间中的高维曲线,采用本发明所述的候选关键帧提取方法得到整个打拳运动序列的候选关键帧集合C;(6)以人体姿态八元组序列Fi、步骤(4)中用户指定的关键帧数目n及步骤(5)中得到候选关键帧集合C维输入,采用本发明所述的分层曲线简化算法经过迭代运算得到最终的关键帧集合K。
本实例的运行结果在附图4中显示,其中整个打拳运动序列长度为100帧,用户指定提取关键帧数目为8,通过本发明所述方法得到的关键帧用绿色表示,可以看到得到的最终关键帧集合体现了整个运动序列中的一些关键极限姿态及重要过渡运动姿态,很好的表示了原运动序列的特点。
实施例2如图5所示,给出了对一段上楼梯运动数据提取不同关键帧数目的实例。下面结合本发明的方法详细说明本实例实施的具体步骤,如下
(1)输入的是一段采用光学运动捕获系统获取的长度为85帧的上楼梯运动序列,数据文件为TRC格式的原始运动数据;(2)采用已有的数据格式转换方法将TRC格式的运动数据转换为满足本发明要求的具有16个标准关节点的旋转运动数据,即具有16个指定关节点的BVH数据格式;(3)以步骤(2)得到的BVH格式数据为基础,采用权利要求中的公式(1)计算四肢骨骼与中心骨骼之间的夹角,形成表示人体姿态的八元组序列Fi;(4)用户指定所需提取的关键帧数量n,在本例中为n分别被赋值为14,10,7,5;(5)将步骤(4)中得到的表示人体姿态的八元组序列看作是分布在8维空间中的高维曲线,采用本发明所述的候选关键帧提取方法得到整个打拳运动序列的候选关键帧集合C;(6)以人体姿态八元组序列Fi、步骤(4)中用户指定的关键帧数目n及步骤(5)中得到候选关键帧集合C维输入,采用本发明所述的分层曲线简化算法经过迭代运算得到最终的关键帧集合K;(7)回到步骤(4),选用新的关键帧数目,计算新的关键帧集合。
本实例的运行结果在附图5中显示,其中整个上楼梯运动序列长度为85帧,用户指定提取关键帧数目为分别为14,10,7,5,从下到上分为4行显示。可以看到,通过本发明所述方法,能够让用户自由指定需要提取的关键帧数目,从而得到整个运动序列中的一些关键极限姿态及重要过渡运动姿态,很好的表示了原运动序列的特点并在不同误差要求下对原始运动数据序列进行概括。
权利要求
1.一种三维人体运动数据关键帧提取方法,其特征在于包括以下步骤(1)首先采用骨骼夹角作为三维人体运动数据序列的特征表示;(2)基于骨骼夹角特征从三维人体运动数据序列中提取候选关键帧集合;(3)以三维人体运动数据的骨骼夹角特征序列、候选关键帧集合及误差参数为输入,采用分层曲线简化算法提取最终关键帧集合;(4)基于用户输入的关键帧数目及分层曲线简化算法返回的实际关键帧数目,误差参数自适应调节方法能够不断反馈正确的误差参数,以便于获取最终的满足用户要求的关键帧数量。
2.根据权利要求1所述的一种三维人体运动数据关键帧提取方法,其特征在于所述采用骨骼夹角作为三维人体运动数据序列的特征表示是将人体骨架中四肢部分的八段骨骼作为特征表示对象,提取这八段骨骼与由根关节和胸关节组成的中心骨骼之间的夹角作为运动特征,定义段骨骼 为由该段骨骼中位于人体骨架较高层关节Ni指向较低层关节Nj的向量,即B→(k)=NiNj→=(p→(j)-p→(i)),]]>其中, 是关节Ni和Nj在三维空间中的坐标,因此,在给定帧时刻i,任意段四肢骨骼与中心骨骼夹角的公式计算为θik=cos-1(B‾ik·B‾i(center)|B‾ik||B‾i(center)|),k=1,...,8---1]]>其中, 表示中心骨骼,θ的取值范围为
,这样,对于任意帧时刻i,采用上述运动特征表示法,人体姿势可以表示为八元组Fi=(θi(1),...,θi(8)),]]>不仅实现原始运动捕获数据的高维降维,而且有效反映了运动的物理含义。
3.根据权利要求1所述的一种三维人体运动数据关键帧提取方法,其特征在于所述基于骨骼夹角特征从三维人体运动数据序列中提取候选关键帧集合是指人体骨架四肢中其各自两段骨骼与中心骨骼的夹角变化情况共同反映了该肢体的运动情况,综合人体所有四肢骨骼夹角变化情况,取它们的极值所在帧的并集,可以得到候选关键帧集合。
4.根据权利要求1所述的一种三维人体运动数据关键帧提取方法,其特征在于所述基于采用分层曲线简化算法提取最终关键帧集合是指给定一个有序数据集M,M={Fi|i=1,...,N},]]>Fi=(xi(1),...,xi(m)),]]>按序连接M中所有数据点,形成一个m维空间中的曲线,求满足一定误差要求的M的真子集K逼近曲线M,同时,K中的元素应尽可能多地属于集合CCM且F1,FN∈C,为了解决这个问题,将M用一个两层的数据结构来表示,下层为M,上层为M的真子集C,首先在上层运用单层曲线简化算法,若简化结果未能满足误差要求,降到下层运用单层曲线简化算法,并把得到的分裂点加入到上层中,继续在上层进行曲线简化,如此反复,直到求得满足条件的集合K,在这个方法中,两个数组c_num和pair被分别使用,数组c_num记录集合C中元素在M中的位置,按元素位置从小到大的顺序排序,数据pair标记M中元素是否属于集合k,若不属于,值为0,若属于,值指向K中下一个元素在M中的位置,在单层曲线简化算法中,计算集合M中第i个元素到由第n1个元素和第n2个元素(n1<i<n2)连成的直线的最短距离,可以由以下公式得到di=Σk=1m(xi(k)-xn1(k))2-(Σk=1m(xn2(k)-xn1(k))(xi(k)-xn1(k)))2Σk=1mxn2(k)-xn1(k))2---2]]>分层曲线简化算法步骤如下输入数据集M,M={Fi|i=1,...,N},]]>Fi=(xi(1),...,xi(m));]]>集合CCM且F1,FN∈C;误差参数 输出数组kfSet,kfSet={i|Fi∈M&Fi∈K,i=1,...,N};步骤1初始化,n为集合C的元素个数,c_num={i|Fi∈M&Fi∈C,1≤i≤N},pair(1)=N,pair(N)=1,trackMark=1,标记当前处理到的C中元素的位置,lastMark=0,标记上一次处理到的C中元素的位置;步骤2若pair(trackMark)=1,转步骤5,否则计算集合C中在元素trackMark和pairr(trackMark)之间的子集subSet={c_num(i)|trackMark<c_num(i)<pair(trackMark),1≤i≤n},若subSet长度大于0,转步骤3,否则,转步骤4;步骤3上层曲线简化(1)按公式(1)计算subSet中每一点到直线|Fpair(trackMark)FtrackMark|的距离,记最大距离为max_dist,其对应的元素为max_ind;(2)计算ratio=max_dist/‖Fpair(trackMark)-FtrackMark‖,若ratio>δ,令pair(max_ind)=pair(trackMark),pair(trackMark)=max_ind,否则trackMark=pair(trackMark);(3)转步骤2;步骤4下层曲线简化(1)令subSet=[trackMarkpair(trackMark)];(2)按公式(1)计算subSet中每一点到直线|Fpair(trackMark)FtrackMark|的距离,记最大距离为max_dist,其对应的元素为max_ind;(3)计算ratio=max_dist/‖Fpair(trackMark)-FtrackMark‖,若ratio>δ,C=C∪{Fmax_ind},重置c_num和n,令pair(max_ind)=pair(trackMark),pair(trackMark)=max_ind,转步骤2,否则trackMark=pair(trackMark);(4)转步骤2;步骤5kfSet={i|pair(i)≠0,1≤i≤N}。
5.根据权利要求1所述的一种三维人体运动数据关键帧提取方法,其特征在于所述误差参数自适应调节方法是指根据关键帧数目的实际值与目标值之差动态调节误差参数δ,若关键帧数目的实际值大于目标值,δ增加,增加比率为δ_inc(δ_inc∈(0,1)),若关键帧数目的实际值小于目标值,δ减小,减小比率为δ_dec(δ_dec∈(0,1)),进一步,对δ的增减率dδ(dδ∈{δ_inc,δ_des},dδ∈(0,1))采用动态调节的略策,若连续两次循环中关键帧数目当前值在目标值的同一侧(δ的变化同向),则增加dδ,以加快δ向同方向变化,否则,即是关键帧数目的实际值在目标值左右邻域进行振荡,此时应减小dδ,以减小振荡的幅度,dδ的增减变化函数分别为finc(dδ)=1-(dδ-1)2,]]>fdec(dδ)=1-1-dδ2,]]>此外,为振荡次数给定最大阈值epoch,将其作为算法中循环结束的一个条件。
全文摘要
本发明公开了一种对人体运动数据自动提取关键帧的方法。在数据表示上采用人体四肢骨骼与中心骨骼夹角作为运动特征并以此来表征三维人体运动数据,然后根据骨骼夹角的运动轨迹确定运动时可能存在的“边界”姿势作为候选关键帧集合,最后采用分层曲线简化算法精选候关键帧获得最终关键帧集合。同时,本发明还提出一种自适应误差参数调整方法以满足不同压缩率要求。使用该方法对人体运动数据具有良好的关键帧提取、压缩效果,以及较强的运动概括能力,并在一定程度上保证了同类运动关键帧集合之间的一致性。
文档编号G06T7/00GK1967525SQ200610053399
公开日2007年5月23日 申请日期2006年9月14日 优先权日2006年9月14日
发明者庄越挺, 肖俊, 吴飞, 杨涛 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1