论文理解——从运动捕获数据中提取关键帧

论文提出了一种基于四元数距离的关键帧提取。首先注意两个计算公式:四元数距离和基于四元数的帧距离

四元数距离:

 首先如何用一个四元数表示一个旋转呢?

  这里用到四元数与被旋转向量的叉乘。设原始向量为p,四元数为q=[s,V]=[w,x,y,,z],那么将向量p 按照四元数旋转q的结果即为:

p'=[w,x,y,z] [0,p] [w,x,y,z]^(-1)   (最后一项代表四元数的逆)

【注】四元数的逆,其中,q的共轭为,q的二范数为

基于此,证明出了四元数距离的公式:

论文理解——从运动捕获数据中提取关键帧_第1张图片

帧距离:

人体运动的表示:


其中p(t)为根关节的评议运动。q为关节的旋转运动。

那么两帧之间的距离为:设m(t1),m(t2)分别为不同时刻t1,t2 上的两帧,他们之间的距离定义为:


其中αi 是关节的重要度。

接着引入了文章的算法一:关键帧提取

首先设置一个动态数组KeyArray记录关键帧,last表示最后得到的关键帧,T为总帧数,δ为事先设定的阈值

接着开始置为last=1,初始化循环变量t=2,文章采用阈值为1.105

然后判断t是否小于T,是的话按照帧距离计算dist=D(t,last),否则算法结束

然后判断dist>δ,成立就加入关键帧序列KeyArray

最后t=t+1,重复上面两步

基于算法一,提出了算法二去重建动画

这里有一个四元数插值的公式

论文理解——从运动捕获数据中提取关键帧_第2张图片


算法描述:

设num为关键帧数目

第一步初始化循环变量k=0

第二步若k>num-1,则算法停止,取其中两个关键帧t1=KeyArray[k],t2+KeyArray[k+1]

第三步对t1和t2之间的所有非关键帧进行插值,根平移线性插值,关节旋转角进行四元数插值。

第四步k=k+1,返回第二步

你可能感兴趣的:(论文理解——从运动捕获数据中提取关键帧)