一种从动捕数据中提取关键帧并重构运动的方法和系统技术方案

技术编号:25692521 阅读:33 留言:0更新日期:2020-09-18 21:03
本发明专利技术公开了一种从动捕数据中提取关键帧并重构运动的方法和系统,本发明专利技术利用四元数之间的距离表示人体姿态差异,并将人体各关节上的总变化作为帧间距,以运动首帧作为第一个关键帧,通过不断迭代计算当前帧同最后一个关键帧之间的差异,消除差异小于阈值的帧,差异超过阈值的帧被当作关键帧并提取保存,然后对提取的关键帧集合采用四元数球面插值方法进行运动重构,对原始运动捕获数据既有较高的压缩率,又确保了原始动画还原的真实度和逼真度。

【技术实现步骤摘要】
一种从动捕数据中提取关键帧并重构运动的方法和系统
本专利技术涉及计算机动画制作
,具体涉及一种从动捕数据中提取关键帧并重构运动的方法和系统。
技术介绍
在计算机动画中,人体角色动画是很重要的组成部分,但由于人体运动自由度高,所以创建一个真实逼真的运动模型是非常困难的。目前制作人体角色动画主要采用基于运动学的动画制作、基于运动捕获数据(动捕数据)的动画制作等方法,其中基于运动捕获数据的动画制作方法应用最为广泛。但运动捕获数据是以较高的采样频率获得,平均每秒几十帧甚至上百帧,每一帧又包含了十几个甚至几十个关节点的旋转信息,得到的数据量庞大且有大量的数据冗余,非常不利于运动捕获数据的压缩、存储、检索以及进一步重用,所以需要提取出代表运动数据内容的关键帧。但现有的关键帧提取方法很难做到对关键帧的精准提取,导致根据关键帧重构的运动姿态真实度和逼真度不佳,无法应用到人体角色动画制作中。
技术实现思路
本专利技术的目的在于提供一种从动捕数据中提取关键帧并重构运动的方法和系统,以解决上述技术问题。为达此目的,本专利技术采用以下技术方案:提供一种从动捕数据中提取关键帧的方法,包括如下步骤:步骤S1,将运动序列的第一帧t0作为关键帧加入到关键帧集合keynum[j]中,并确定当前为止搜索到最后的关键帧为尾关键帧lastkey,并初始化循环变量x=2,所述循环变量x表示当前帧t和所述尾关键帧lastkey之间的帧数;j∈[1,2,3,…,keynum],keynum为提取关键帧的数量;r>步骤S2,判断所述循环变量x的变量值是否大于或等于所述运动序列的长度n,若是,则终止关键帧提取过程;若否,则进入步骤S3;步骤S3,计算当前帧t和当前为止搜索到最后的所述尾关键帧lastkey之间的帧间距离d;步骤S4,判断所述帧间距离d是否大于或等于一预设阈值δ,若是,则将第t帧作为关键帧被提取并保存在所述关键帧集合keynum[j]中,并使当前为止搜索到最后的所述尾关键帧lastkey为第t+1帧;若否,则将第t帧作为冗余帧过滤;步骤S5,将所述第t+1帧作为当前帧并返回所述步骤S2,直至完成对所述运动序列的关键帧的提取。作为本专利技术的一种优选方案,同一所述运动序列中的所述帧间距离d通过以下公式计算而得:上式中,d(qi(t1),qi(t2))表示所述运动序列的第t1帧的第i个关节旋转到第t2帧的四元数距离;wi表示各关节i对运动姿势影响程度的大小;i=1,2,…,m;m为关节i的数量;D(t1,t2)表示第t1帧和第t2帧之间的帧间距离。作为本专利技术的一种优选方案,运动序列A中的每一帧到运动序列B中的每一帧的所述帧间距离d通过以下公式计算而得:上式中,表示所述运动序列A的第k帧第i个关节到所述运动序列B的第k帧第i个关节之间的四元数距离;wi表示各关节i对运动姿势影响程度的大小;i=1,2,…,m;m为关节i的数量。本专利技术还提供了一种从动捕数据中提取关键帧的系统,可实现所述的方法,所述系统包括:运动序列获取模块,用于获取所述运动序列;运动序列长度计算模块,连接所述运动序列获取模块,用于计算所述运动序列的长度n;关键帧提取条件设置模块,用于提供给用户自主设定作为提取所述关键帧的提取条件的所述循环变量x的变量值;所述循环变量x的变量值用于表示当前帧t和当前为止搜索到最后的所述尾关键帧lastkey之间的帧数;关键帧提取条件达到与否判断模块,分别连接所述运动序列长度计算模块和所述关键帧提取条件设置模块,用于判断所述循环变量x的变量值是否大于或等于所述运动序列的长度n,若是,则视为关键帧提取条件未达到,并终止关键帧提取过程;若否,则生成帧间距计算指令并输出;帧间距计算模块,连接所述关键帧提取条件达到与否判断模块,用于根据接收到的所述帧间距计算指令计算当前帧t和当前为止搜索到最后的所述尾关键帧lastkey之间的所述帧间距离d;关键帧判断模块,连接所述帧间距计算模块,用于判断所述帧间距离d是否大于或等于一预设阈值δ,若是,则生成关键帧提取指令并输出;若否,则终止关键帧提取过程;关键帧提取模块,连接所述关键帧判断模块,用于根据接收到的所述关键帧提取指令将当前的第t帧作为关键帧提取并保存到所述关键帧集合keynum[j]中。作为本专利技术的一种优选方案,所述循环变量x的变量值为2。作为本专利技术的一种优选方案,所述帧间距离d通过以下公式计算而得:上式中,d(qi(t1),qi(t2))表示所述运动序列的第t1帧的第i个关节旋转到第t2帧的四元数距离;wi表示各关节i对运动姿势影响程度的大小;i=1,2,…,m;m为关节i的数量;D(t1,t2)表示第t1帧和第t2帧之间的帧间距离。本专利技术还提供了一种运动重构方法,基于所述从动捕数据中提取关键帧的系统提取的所述关键帧集合keynum[j]实现,该运动重构方法包括如下步骤:步骤L1,确定循环变量y的变量值范围,y∈[1,2,3,…,keynum],keynum为所述关键帧集合keynum[j]中的所述关键帧的数量;步骤L2,确定所述循环变量y的变量值;步骤L3,判断所述循环变量y的变量值是否大于或等于keynum-1,若是,则终止运动重构过程;若否,则提取相邻关键帧T1=keynum[y],R2=keynum[y+1];步骤L4,对所述关键帧T1和所述关键帧T2之间的非关键帧进行插值重建;步骤L5,返回所述步骤L2,直至完成对所述关键帧集合keynum[j]中的所有关键帧之间的非关键帧插值重建过程。作为本专利技术的一种优选方案,所述步骤L4中,对所述关键帧T1和所述关键帧T2之间的非关键帧进行插值重建包括针对根关节的一般线性插值重建和针对非根关节的四元数球面插值重建,其中针对根关节的所述一般线性插值重建通过以下公式实现:上式中,P1用于表示所述关键帧T1中根关节的所处位置的位置值;P2用于表示所述关键帧T1中的所述根关节在相邻的所述关键帧T2中的所处位置的位置值;Pt用于表示t时刻同个所述根关节的所处位置的位置值;t1<t<t2。作为本专利技术的一种优选方案,针对非根关节的所述四元数球面插值重建通过以下公式实现:上式中,slerp(q1,q2,t)表示从单位四元数q1到单位四元数q2的四元数球面插值;θ=arccos(q1×q2);t∈[0,1]。本专利技术还提供一种运动重构系统,可实现所述的运动重构方法,包括:运动重构条件设定模块,用于提供给用户自主设定重构运动的所述循环变量y的变量值范围;变量值确定模块,连接所述运动重构条件设定模块,用于在用户设定的所本文档来自技高网...

【技术保护点】
1.一种从动捕数据中提取关键帧的方法,其特征在于,包括如下步骤:/n步骤S1,将运动序列的第一帧t

【技术特征摘要】
1.一种从动捕数据中提取关键帧的方法,其特征在于,包括如下步骤:
步骤S1,将运动序列的第一帧t0作为关键帧加入到关键帧集合keynum[j]中,并确定当前为止搜索到最后的关键帧为尾关键帧lastkey,并初始化循环变量x=2,所述循环变量x表示当前帧t和所述尾关键帧lastkey之间的帧数;j∈[1,2,3,…,keynum],keynum为提取关键帧的数量;
步骤S2,判断所述循环变量x的变量值是否大于或等于所述运动序列的长度n,
若是,则终止关键帧提取过程;
若否,则进入步骤S3;
步骤S3,计算当前帧t和当前为止搜索到最后的所述尾关键帧lastkey之间的帧间距离d;
步骤S4,判断所述帧间距离d是否大于或等于一预设阈值δ,
若是,则将第t帧作为关键帧被提取并保存在所述关键帧集合keynum[j]中,并使当前为止搜索到最后的所述尾关键帧lastkey为第t+1帧;
若否,则将第t帧作为冗余帧过滤;
步骤S5,将所述第t+1帧作为当前帧并返回所述步骤S2,直至完成对所述运动序列的关键帧的提取。


2.如权利要求1所述的从动捕数据中提取关键帧的方法,其特征在于,同一所述运动序列中的所述帧间距离d通过以下公式计算而得:



上式中,d(qi(t1),qi(t2))表示所述运动序列的第t1帧的第i个关节旋转到第t2帧的四元数距离;
wi表示各关节i对运动姿势影响程度的大小;
i=1,2,…,m;m为关节i的数量;
D(t1,t2)表示第t1帧和第t2帧之间的帧间距离。


3.如权利要求1所述的从动捕数据中提取关键帧的方法,其特征在于,运动序列A中的每一帧到运动序列B中的每一帧的所述帧间距离d通过以下公式计算而得:



上式中,表示所述运动序列A的第k帧第i个关节到所述运动序列B的第k帧第i个关节之间的四元数距离;
wi表示各关节i对运动姿势影响程度的大小;
i=1,2,…,m;m为关节i的数量。


4.一种从动捕数据中提取关键帧的系统,可实现如权1~3任意一项所述的方法,其特征在于,包括:
运动序列获取模块,用于获取所述运动序列;
运动序列长度计算模块,连接所述运动序列获取模块,用于计算所述运动序列的长度n;
关键帧提取条件设置模块,用于提供给用户自主设定作为提取所述关键帧的提取条件的所述循环变量x的变量值;所述循环变量x的变量值用于表示当前帧t和当前为止搜索到最后的所述尾关键帧lastkey之间的帧数;
关键帧提取条件达到与否判断模块,分别连接所述运动序列长度计算模块和所述关键帧提取条件设置模块,用于判断所述循环变量x的变量值是否大于或等于所述运动序列的长度n,
若是,则视为关键帧提取条件未达到,并终止关键帧提取过程;
若否,则生成帧间距计算指令并输出;
帧间距计算模块,连接所述关键帧提取条件达到与否判断模块,用于根据接收到的所述帧间距计算指令计算当前帧t和当前为止搜索到最后的所述尾关键帧lastkey之间的所述帧间距离d;
关键帧判断模块,连接所述帧间距计算模块,用于判断所述帧间距离d是否大于或等于一预设阈值δ,
若是,则生成关键帧提取指令并输出;
若否,则终止关键帧提取过程;
关键帧提取模块,连接所述关键帧判断模块,用于根据接收到的所述关键帧提取指令将当前的第t帧作为关键帧提取并保存到所述关键帧集合keynum[j]中。


5.如权利要求4所述的...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:北京中科深智科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1