一种运动数据失真恢复方法与流程

文档序号:14348264阅读:573来源:国知局
一种运动数据失真恢复方法与流程

本发明涉及三维运动数据处理领域,特别涉及一种运动数据失真恢复方法。



背景技术:

运动捕捉(mocap)是一种获取真实运动数据的技术,指通过传感设备记录人体在三维空间中的运动轨迹,并将其转化为抽象的运动数据,最后根据这些数据驱动物体或者虚拟人体运动的技术。随着虚拟现实技术的飞速发展,mocap已经广泛地应用于各个领域,例如计算机动画、电脑游戏、影视动画、教育医学、运动分析、体育训练、智能监控、运动仿真等领域。为了获得精确的数据,已经有很多mocap技术,其中基于光学传感器的运动捕捉技术是最为流行的技术,代表性的商业设备有motionanalysis和vicion。

但即使是专业的商业运动捕捉设备在捕捉数据时也会存在标记点缺失的情况。例如,采集数据时,标记点被物体或者身体的其他部位遮挡,或者在光线的不理想都会使得相机不能捕获该标记点,导致捕捉到的数据有缺失。为了避免光线对光学传感器的影响,cmu数据库中的数据都是在室内采集到的,大多只会有个别标记点的缺失,比较容易恢复。但有些特别的运动(如撑杆跳高等)需要在特定的室外场地进行数据采集,此时室外光线的存在导致基于红外光采集信息的设备捕捉标记点运动轨迹时会引起运动轨迹丢失或出现较大偏移。同时在室外采集时发现当一个标记点缺失时,其相邻的标记点常常也会缺失,并且这些缺失会在时间域持续一段时间。这会导致mocap数据的空间域和时间域相关信息都被破坏,所以失真恢复是mocap数据直接应用之前的重要处理步骤,而由于人体运动的复杂性和多样性又给失真恢复带来了难度。

针对上述标记点缺失的问题,商业设备常用的算法是插值算法,这些算法适用处理小规模标记点缺失,对标记点连续缺失的情况恢复效果较差。为了提高mocap数据的恢复效果,国内外人员提出了许多恢复方法。现有的mocap数据失真恢复算法可以分为以下三类:第一类:基于信号处理的算法。包括高斯滤波、dct变换、傅里叶变换、小波变换、卡尔曼滤波、线性动力系统(lds)。这些方法只是对每一个标记点进行独立的处理,忽略了人体结构潜在的相关性,也就是各标记点的相关性,在处理简单运动时是很有效的,但在处理复杂运动时效果欠佳。第二类:基于低秩填充的方法。可利用人体运动序列的近似低秩性,将mocap失真恢复问题转化为矩阵低秩填充问题,并用奇异值阈值法(svt)恢复缺失的数据。考虑到运动轨迹段数据矩阵具有更优良的低秩性,也可将运动序列重新组织为不同轨迹段的组合进行局部矩阵补全恢复(tsmc),从而达到较好的重构效果。还可以同时利用运动序列的低秩结构和相邻帧的时域稳定特性来恢复缺失的数据。但是由于运动序列实际上只是近似低秩,在利用奇异值阈值法恢复时舍去的较小奇异值必然造成误差,而这个误差就是低秩填充法理论上的误差下限。同时,实际恢复过程中,当出现数据连续缺失时恢复效果欠佳。第三类:基于数据驱动的方法。近年来,得益于新型运动捕捉设备的发展和捕捉技术的提高,mocap数据呈现出了爆发性的增长,为基于数据驱动的算法提供了足够多的样本,促进了这些算法的改善,使其能较充分考虑到人体运动的复杂性和多样性。利用稀疏表示的特性,根据同一字典下,每个点轨迹的观测数据和缺失数据具有相同的稀疏表示系数来恢复缺失的数据,充分利用了运动序列的时序特性,但是没有考虑人体自身的潜在的相关性。采用算法(srmmp)在逐帧恢复的同时,通过相邻帧和被选取最多的原子来利用帧与帧之间的相关性,可提高恢复效果。可进一步先对数据进行预处理,再通过重叠窗处理利用帧与帧之间的相关性,用训练得到的字典来恢复数据。由于人体的骨骼是刚体,所以在同一骨骼上的两个标记点之间的距离表示的就是骨骼的长度,这个长度在整个运动过程中近似常数,但是,在用上述方法进行恢复时,骨骼长度可能会发生变化,特别是当标记点连续很多帧缺失时,恢复后的骨骼长度误差较大。还可以首先通过运动数据中未缺失部分建立缺失数据预测概率模型,接着利用骨骼长度约束对运动数据进行恢复。由于该方法对同一段的其他标记点的依赖性较高,因此,难以进行标记点距离的准确测量。即使在矩阵填充的基础上利用骨骼长度不变这一约束,可进一步提高精确度,但是同样地具有低秩填充的固有近似误差。

上述算法在针对标记点连续缺失的情形时,都不能同时保持缺失点坐标恢复精度和骨骼长度恢复精度。



技术实现要素:

本发明提供了一种运动数据失真恢复方法,可以同时提高缺失点坐标恢复精度和骨骼长度恢复精度。

一种运动数据失真恢复方法,包括以下步骤:

步骤1:对运动数据坐标进行标准化处理;

步骤2:对经过步骤1处理后的人体不同部位进行分割组合;

步骤3:对步骤2分割组合好的数据分别进行时间轴上的滑动窗处理,获得相邻帧的数据序列;

步骤4:进行字典训练;

步骤5:由步骤4获得的字典构建目标函数恢复人体运动数据。

本发明针对的目标为运动物体,特别是指人体。

人体运动捕捉数据主要记录的是人体骨架标记点的空间位置及其运动轨迹信息,通常运动捕捉数据直接得到的是标记点在世界坐标系下的三维坐标。而后续的存储一般是通过储存每个标记的平移和旋转信息来储存数据,其中的旋转信息通过欧拉角表示。这些反映坐标变化的数据存储在amc文件中,而一些不变的数据,如标记点的初始位置,自由度和骨骼长度单独储存在asf文件中,这样的存储方式无疑避免了数据冗余。通过amc和asf文件能够解析出mocap数据在世界坐标系下的表示,从而能够利用和编辑mocap数据。

通过以上分析可知保持mocap数据中骨骼长度信息不变对后续的存储至关重要,同样,在编辑和利用mocap数据时保持骨骼长度不变也非常重要,否则会使创造出的人体模型畸变。由于在世界坐标系表示下的mocap数据,其坐标数值是复杂多变的,即使是相似的运动,在用世界坐标系表示时,其相应的各标记点的三维坐标值可能也会有很大的差异,因此需将坐标标准化法和按人体不同部位将数据分别处理。其中坐标标准化方法是通过平移和旋转变换将各标记点的坐标都转化为相对于root点的局部坐标,这样的坐标表示更能体现各运动数据的相似性。

优选的,步骤1中,对运动数据坐标进行标准化处理的具体步骤如下:

1-1将目标按结构划分为多个运动链接,其中至少包括躯干、左胳膊、右胳膊、左腿和和右腿,cn表示第n个运动链接,每个运动链接由6~8个关节点构成,关节点用k标记区分,k的取值范围1~31;

1-2由下述公式计算第k个关节点标准化处理后的坐标

上式中y(k)表示第k个关节点的三维坐标,是第k-1个关节点的子节点,lk,k-1表示第k个关节点与第k-1个关节点之间的标准骨骼长度;式中的δy(k-1)=yc(k-1)-y(k-1),且取yc(1)=y(1);则为第k个关节点标准化处理后的坐标;

1-3将目标运动数据进行标准化处理后的坐标进行排列构成矩阵f=[f1,f2,...,fn];

其中n表示运动捕捉数据的总帧数,

fi=[xi,1,yi,1,zi,1,xi,2,yi,2,zi,2,...,xi,d,yi,d,zi,d]t表示第i帧数据,i取值范围为1到n,d表示第i帧有d个点,xi,j,yi,j,zi,j分别表示第i帧的第j个点的x轴,y轴,z轴坐标;

1-4将f里的坐标进一步变换为局部坐标f1,变换后的f1里的坐标表示整个运动序列中由同一根骨骼连接的标记点的坐标之差;

以第i帧中的数据为例,假设点1与点2、点2与点3分别在同一根骨骼上,点d和点(d-1)在同一根骨骼上,则f1i由下式计算:

变换后的坐标表示的是同一骨骼上相邻标记点的坐标差,反映了各标记点相对位置。

1-5对步骤1-4中的f1进行下式给出的运算获得新的坐标矩阵f2;

f2=sign(f1)⊙(f1⊙f1)

上式中的⊙表示哈达玛乘积。f2即为标准化后的坐标。经过以上处理得到的f2为坐标标准化后的数据,可以体现运动数据的本质特征,使相似运动数据的差异性变小。

因为人体进行不同种类运动时,人体的某个部位的运动往往是相似的,所以按人体不同部位划分后分别处理可以更好地体现mocap数据的局部特征。优选的,步骤2中,对经过步骤1处理后的目标不同部位进行分割组合的具体步骤如下:

2-1按照步骤1-1的划分规则将目标分割;

2-2再将步骤2-1分割成的部分每相连的三部分进行组合获得新的多个组合,表示第m个组合,其中的n表示第n帧;新的五个组合f31、f32、f33、f34、f35分别为:左胳膊、躯干、左腿;左胳膊、躯干、右胳膊;左胳膊、躯干、左腿;右胳膊、躯干、右腿;躯干、左腿、右腿。

如果对mocap进行逐帧独立处理,将会忽略了帧与帧之间的相关性,所以用滑动窗处理数据,将连续几帧的数据合为一列。这样就充分发掘了相邻帧之间的相关性。优选的,步骤3中,对步骤2分割组合好的数据分别进行时间轴上的滑动窗处理,获得相邻帧的数据序列具体步骤为:

3-1对步骤2-2中的f3m用大小为m的滑动窗进行数据重组,m取值范围为4~8帧,产生s=n-m+1个有重叠的序列,其中第j个序列为:

3-2将写成列向量,记为

3-3则所有的运动捕捉数据进行步骤3-1和步骤3-2的处理后可用下式表示:

可以从cmu数据库中选取3种不同的运动:run,boxing,basketball,在每一类运动中随机选取两个序列做测试集,其余的作为训练集。当对测试集进行预处理时,由于标记点有缺失,同一骨骼上的标记点坐标相减时,会导致缺失点变多,如果点2分别与点1和点3在同一根骨骼上,那么当点2缺失时,点2与点3,点2与点1的坐标之差都无法计算,即视为缺失。如果原数据缺失的标记点成随机分布,那么预处理后的数据的缺失会大大增加,极端情况会导致缺失数据翻倍。本发明针对的是实际采集数据过程中经常出现的同一帧中相邻标记点在空间域和时间域连续缺失的问题,而对这样的缺失数据进行坐标标准化处理,不会导致处理后的数据增加过多额外的缺失。优选的,步骤4中,进行字典训练具体步骤如下:

4-1选定字典训练的目标函数:

将最小化整个运动序列的重构误差作为目标函数,如下式所示:

其中表示与ym(此处的ym与步骤3-3中的ym相同)中每一帧相对应的退化算子,wm为稀疏表示向量,dm表示字典,λ1为正则参数,取值为下述五个数值之一:10-2,10-3,10-4,10-5,10-6

为了减小重构误差,要进行字典训练得到合适的字典。字典训练的目标函数是最小化观测部分和缺失部分的稀疏表示的差异,也就是最小化重构误差。本发明不仅最小化缺失部分的重构误差,还考虑到观测部分的轻微噪声,为了训练出能精确地重构观测部分的字典,将观测部分的重构误差也考虑进来,所以本发明字典训练的目标函数是上述最小化整个运动序列的重构误差。

4-2得到定义损失函数为:

4-3构造骨骼长度约束为:

bml=bmtdmwm

其中:bm为与退化算子am对应的骨骼提取算子,作用是提取骨骼矩阵中的缺失部分,bml表示缺失部分的骨骼长度矩阵,bmt为已知的骨骼长度矩阵;l表示的是已知的骨骼矩阵,右边tdmwm表示的是恢复后的骨骼矩阵;

4-4在步骤4-2给出的损失函数中加入步骤4-3给出的骨骼长度约束项,来最小化骨骼长度恢复误差:

定义pm,qm:

从而获得字典训练的目标函数如下:

式中λ2从集合{0.1,0.2,0.3,0.4,0.5,0.6,0.7}中选取;原子个数km选为[5001500]中的整数,h表示字典中原子的序号;

4-5依据步骤4-4给出的字典训练的目标函数交替求解wm和dm

固定稀疏wm,步骤4-4给出的字典训练的目标函数变为:

采用拉格朗日对偶求解上式,得到字典dm

固定字典dm,步骤4-4给出的字典训练的目标函数变为

上式是一个l1范数最小化问题,可以用增广拉格朗日对偶法求解或用近端梯度下降法求解。

通过交替求解步骤4-5中的两个目标函数,从而得到能有效用于重构数据的字典d。

优选的,步骤5中,由步骤4获得的字典构建目标函数恢复人体运动数据具体步骤如下:

5-1构建如下目标函数:

其中:y表示步骤1到步骤3处理后的测试样本的某一帧,a、w,分别表示相应的退化算子和待求系数,y1=aw表示已知的观测到的数据。b为骨骼提取算子,bl表示缺失部分的骨骼长度矩阵。

5-2求解目标函数,步骤如下:

5-2-1为了去除观测数据的轻微噪声,通过骨骼约束项来影响系数w,修改步骤5-1的目标函数如下:

5-2-2为简化计算,将5-2-1修改后的目标函数写成无约束的拉格朗日形式,同时用l1范数近似非凸的l0范数,如下式所示:

5-2-3用近端梯度下降法求解,将步骤5-2-2中的目标函数写为:

其中:h(w)=λ1||w||1;

5-2-4对于任意的凸函数f(w),定义近端投影(proximalmap)算子;

如下:

其中:t为步长;

5-2-5wk的迭代公式为:

其中wk表示w第k次迭代的值,tk表示第k次迭代的步长。

5-2-6将步骤5-2-5给出的迭代公式代入步骤5-2-4给出的公式:

5-2-7利用软阈值得到:

步长t的更新如下式所示:

tk=min(αtk-1,max(βtk-1,thk))

其中α和β为给定常数;

交替求解步骤5-2-6中的公式和上式得到w,再由w求得yr;求得yr后通过求重叠部分的平均值消除延迟窗的作用,将得到的数据作为步骤1-5中的f2,通过对步骤1-5进行逆变换,求得运动数据的局部坐标f1,再对f1进行一次反变换得到非局部坐标f(步骤1-4的逆向过程),然后组合各部分获得完整的数据,再通过骨骼标准化算法最终得到原始的数据xr。

本发明方法根据mocap数据的的特性,首先对数据进行坐标标准化和分割组合处理,使变换后的数据表示的是相邻标记点的相对位置的变化,由此得到骨骼长度约束项。然后在字典训练时,加入骨骼长度约束项,使训练得到的字典在重构运动序列时能够保持人体骨骼长度不变的特性。最后再利用训练得到的字典和骨骼长度约束项,对失真数据进行恢复。通过加入骨骼长度约束项,来提高缺失标记点坐标的恢复精度和运动序列骨骼长度的恢复精度,便于后续对mocap数据的储存和处理。

本发明方法首先对运动数据坐标进行标准化处理,将各标记点坐标从原始世界坐标系下的坐标转化为表示相邻标记点坐标差的局部坐标,减小运动数据的差异性,使不同运动序列的局部运动也具有相似性。为了充分利用局部运动的相似性,又将运动序列按人体部位进行分割组合处理。在字典训练时,通过重叠窗处理充分利用了帧与帧之间的相关性,使恢复的运动序列更具连续性。通过最小化重构误差来获得训练字典的目标函数,同时加入骨骼约束项,使训练的字典在重构运动序列时能保持骨骼长度的不变的特性。在得到字典后,通过近端梯度下降法来求得解系数,从而获得重构的运动数据,最后通过步骤和1-4相反的过程获得最终的运动序列。

本发明的有益效果:

本发明的运动数据失真恢复方法能在保持良好的恢复效果的同时,保持骨骼长度不变性,这使得恢复的运动序列更加自然,也便于数据后续的存储。

附图说明

图1为本发明方法的线框流程图。

图2为人体捕捉数据的marker点结构图。

图3为缺失3个标记点的运动恢复序列比较图。

图4为缺失6个标记点的运动恢复序列比较图。

图5为每帧缺失3个标记点时不同算法的误差。

图6为每帧缺失6个标记点时不同算法的误差。

图7为不同算法的坐标恢复误差变化图。

具体实施方式

如图1所示,本实施例以人体为例,运动数据失真恢复方法包括以下步骤:

步骤1:对运动数据坐标进行标准化处理;

人体运动捕捉数据主要记录的是人体骨架标记点的空间位置及其运动轨迹信息,通常运动捕捉数据直接得到的是标记点在世界坐标系下的三维坐标。而后续的存储一般是通过储存每个标记的平移和旋转信息来储存数据,其中的旋转信息通过欧拉角表示。这些反映坐标变化的数据存储在amc文件中,而一些不变的数据,如标记点的初始位置,自由度和骨骼长度单独储存在asf文件中,这样的存储方式无疑避免了数据冗余。通过amc和asf文件能够解析出mocap数据在世界坐标系下的表示,从而能够利用和编辑mocap数据。

通过以上分析可知保持mocap数据中骨骼长度信息不变对后续的存储至关重要,同样,在编辑和利用mocap数据时保持骨骼长度不变也非常重要,否则会使创造出的人体模型畸变。由于在世界坐标系表示下的mocap数据,其坐标数值是复杂多变的,即使是相似的运动,在用世界坐标系表示时,其相应的各标记点的三维坐标值可能也会有很大的差异,因此需将坐标标准化法和按人体不同部位将数据分别处理。其中坐标标准化方法是通过平移和旋转变换将各标记点的坐标都转化为相对于root点的局部坐标,这样的坐标表示更能体现各运动数据的相似性。

步骤2:对经过步骤1处理后的人体不同部位进行分割组合;

因为人体进行不同种类运动时,人体的某个部位的运动往往是相似的,所以按人体不同部位划分后分别处理可以更好地体现mocap数据的局部特征。

假设人体捕捉数据的marker点结构图如图2所示。

步骤3:对步骤2分割组合好的数据分别进行时间轴上的滑动窗处理,获得相邻帧的数据序列;

如果对mocap进行逐帧独立处理,将会忽略了帧与帧之间的相关性,所以用滑动窗处理数据,将连续几帧的数据合为一列。这样就充分发掘了相邻帧之间的相关性。

步骤4:进行字典训练;

步骤5:由步骤4获得的字典构建目标函数恢复人体运动数据。

其中,步骤1中,对运动数据坐标进行标准化处理的具体步骤如下:

1-1将人体按结构划分为5个运动链接分别为躯干、左胳膊、右胳膊、左腿和和右腿,cn表示第n个运动链接,每个运动链接由6~8个关节点构成,关节点用k标记区分,k的取值范围1~31;

1-2由下述公式计算第k个关节点标准化处理后的坐标

上式中y(k)表示第k个关节点的三维坐标,是第k-1个关节点的子节点,lk,k-1表示第k个关节点与第k-1个关节点之间的标准骨骼长度;式中的δy(k-1)=yc(k-1)-y(k-1),且取yc(1)=y(1);则为第k个关节点标准化处理后的坐标;

1-3将目标运动数据进行标准化处理后的坐标进行排列构成矩阵f=[f1,f2,...,fn];

其中n表示运动捕捉数据的总帧数,

fi=[xi,1,yi,1,zi,1,xi,2,yi,2,zi,2,...,xi,d,yi,d,zi,d]t表示第i帧数据,i取值范围为1到n,d表示第i帧有d个点,xi,j,yi,j,zi,j分别表示第i帧的第j个点的x轴,y轴,z轴坐标;

1-4将f里的坐标进一步变换为局部坐标f1,变换后的f1里的坐标表示整个运动序列中由同一根骨骼连接的标记点的坐标之差;

以第i帧中的数据为例,假设点1与点2、点2与点3分别在同一根骨骼上,点d和点(d-1)在同一根骨骼上,则f1i由下式计算:

变换后的坐标表示的是同一骨骼上相邻标记点的坐标差,反映了各标记点相对位置。

1-5对步骤1-4中的f1进行下式给出的运算获得新的坐标矩阵f2;

f2=sign(f1)⊙(f1⊙f1)

上式中的⊙表示哈达玛乘积。f2即为标准化后的坐标。经过以上处理得到的f2为坐标标准化后的数据,可以体现运动数据的本质特征,使相似运动数据的差异性变小。

步骤2中,对经过步骤1处理后的目标不同部位进行分割组合的具体步骤如下:

2-1将人体分割为躯干、左胳膊、右胳膊、左腿、右腿;将人体结构图划分为五个部分,称为五个运动链接,每个链接都是一个关节点集合:c1={1,2,3,4,5,6},c2={1,7,8,9,10,11},c3={1,12,13,14,15,16,17},c4={14,25,26,27,28,29,30,31},c5={14,18,19,20,21,22,23,24},集合中的数字对应图2中的标记点。

这样的分割处理可能引起某一部分因为遮挡等原因导致标记点缺失很多,甚至可能全部缺失的情况,因此需要进行步骤2-2的进一步分割;

2-2再将步骤2-1分割成的部分每相连的三部分进行组合获得新的多个组合,表示第m个组合,其中的n表示第n帧;新的五个组合f31、f32、f33、f34、f35分别为:左胳膊、躯干、左腿;左胳膊、躯干、右胳膊;左胳膊、躯干、左腿;右胳膊、躯干、右腿;躯干、左腿、右腿。

步骤3中,对步骤2分割组合好的数据分别进行时间轴上的滑动窗处理,获得相邻帧的数据序列具体步骤为:

3-1对步骤2-2中的f3m用大小为m的滑动窗进行数据重组,m取值范围为4~8帧,产生s=n-m+1个有重叠的序列,其中第j个序列为:

3-2将写成列向量,记为

3-3则所有的运动捕捉数据进行步骤3-1和步骤3-2的处理后可用下式表示:

步骤4中,进行字典训练具体步骤如下:

从cmu数据库中选取3种不同的运动:run,boxing,basketball,在每一类运动中随机选取两个序列做测试集,其余的作为训练集。

当对测试集进行预处理时,由于标记点有缺失,同一骨骼上的标记点坐标相减时,会导致缺失点变多,如图2所示,如果点2分别与点1和点3在同一根骨骼上,那么当点2缺失时,点2与点3,点2与点1的坐标之差都无法计算,即视为缺失。如果原数据缺失的标记点成随机分布,那么预处理后的数据的缺失会大大增加,极端情况会导致缺失数据翻倍。本发明针对的是实际采集数据过程中经常出现的同一帧中相邻标记点在空间域和时间域连续缺失的问题,而对这样的缺失数据进行坐标标准化处理,不会导致处理后的数据增加过多额外的缺失。

4-1选定字典训练的目标函数:

将最小化整个运动序列的重构误差作为目标函数,如下式所示:

其中表示与ym(此处的ym与步骤3-3中的ym相同)中每一帧相对应的退化算子,wm为稀疏表示向量,dm表示字典,λ1为正则参数,取值为下述五个数值之一:10-2,10-3,10-4,10-5,10-6

为了减小重构误差,要进行字典训练得到合适的字典。字典训练的目标函数是最小化观测部分和缺失部分的稀疏表示的差异,也就是最小化重构误差。本发明不仅最小化缺失部分的重构误差,还考虑到观测部分的轻微噪声,为了训练出能精确地重构观测部分的字典,将观测部分的重构误差也考虑进来,所以本发明字典训练的目标函数是上述最小化整个运动序列的重构误差。

4-2得到定义损失函数为:

4-3构造骨骼长度约束为:

bml=bmtdmwm

其中:bm为与退化算子am对应的骨骼提取算子,作用是提取骨骼矩阵中的缺失部分,bml表示缺失部分的骨骼长度矩阵,bmt为已知的骨骼长度矩阵;l表示的是已知的骨骼矩阵,右边tdmwm表示的是恢复后的骨骼矩阵;

4-4在步骤4-2给出的损失函数中加入步骤4-3给出的骨骼长度约束项,来最小化骨骼长度恢复误差:

定义pm,qm:

从而获得字典训练的目标函数如下:

式中λ2从集合{0.1,0.2,0.3,0.4,0.5,0.6,0.7}中选取;原子个数km选为1000,h表示字典中原子的序号;

4-5依据步骤4-4给出的字典训练的目标函数交替求解wm和dm

固定稀疏wm,步骤4-4给出的字典训练的目标函数变为:

采用拉格朗日对偶求解上式,得到字典dm

固定字典dm,步骤4-4给出的字典训练的目标函数变为

上式是一个l1范数最小化问题,可以用增广拉格朗日对偶法求解或用近端梯度下降法求解。

通过交替求解步骤4-5中的两个目标函数,从而得到能有效用于重构数据的字典d。

步骤5中,由步骤4获得的字典构建目标函数恢复人体运动数据具体步骤如下:

5-1构建如下目标函数:

s.t.ay=adw,bl=btdw

其中:y表示步骤1到步骤3处理后的测试样本的某一帧,a、w,分别表示相应的退化算子和待求系数,y1=aw表示已知的观测到的数据。b为骨骼提取算子,bl表示缺失部分的骨骼长度矩阵。

5-2求解目标函数,步骤如下:

5-2-1为了去除观测数据的轻微噪声,通过骨骼约束项来影响系数w,修改步骤5-1的目标函数如下:

5-2-2为简化计算,将5-2-1修改后的目标函数写成无约束的拉格朗日形式,同时用l1范数近似非凸的l0范数,如下式所示:

5-2-3用近端梯度下降法求解,将步骤5-2-2中的目标函数写为:

其中:h(w)=λ1||w||1,g(w)是凸的,可微的,h(w)是闭凸的。

5-2-4对于任意的凸函数f(w),定义近端投影(proximalmap)算子;

如下:

其中:t为步长;

5-2-5wk的迭代公式为:

其中wk表示w第k次迭代的值,tk表示第k次迭代的步长。

5-2-6将步骤5-2-5给出的迭代公式代入步骤5-2-4给出的公式:

5-2-7利用软阈值得到:

步长t的更新如下式所示:

tk=min(αtk-1,max(βtk-1,thk))

其中α和β为给定常数;

交替求解步骤5-2-6中的公式和上式得到w,再由w求得yr;求得yr后通过求重叠部分的平均值消除延迟窗的作用,将得到的数据作为步骤1-5中的f2,通过对步骤1-5进行逆变换,求得运动数据的局部坐标f1,再对f1进行一次反变换得到非局部坐标f(步骤1-4的逆向过程),然后组合各部分获得完整的数据,再通过骨骼标准化算法最终得到原始的数据xr。

图3和图4分别表示cmu数据库中序列09_01(run)每一帧缺失3个标记点和6个标记点时的恢复情况,图中从上到下分别为真实的序列,缺失的序列和用本实施例算法恢复的序列。

用rootmeansquarederror(rmse)从数值上来衡量恢复误差:

x为真实数据,xr为实验恢复的数据,np为缺失的数据的总个数。

图5和图6分别表示在缺失标记点数目为3和6(包括各种不同缺失位置的情形),连续缺失帧数为整个序列帧数40%的情况下,三种运动在tsmc算法,smbs算法和本实施例算法恢复下的平均坐标恢复误差。

本实施例还比较了不同算法的坐标恢复误差随着缺失率增加的变化情况,图7为cmu数据库中序列06_02(basketball)在缺失标记点数为6时的误差变化图。

由图7可知,tsmc算法对缺失率变化很敏感,随着缺失率的增加,坐标恢复误差会明显增加;而smbs算法和本发明算法对不同的缺失率的恢复效果很稳定。这是因为smbs算法和本发明算法都利用了同一帧标记点之间的相关性,而tsmc算法主要是利用数据的统计特性,连续缺失率的增加会破坏数据的统计特性。另一方面本发明利用了骨骼约束,会提高坐标恢复的稳定性。

由图5到图7可知,本实施例算法在坐标恢复精度上明显好于tsmc算法,当缺失率小于0.4时,本实施例算法和smbs算法恢复效果相当,但随着缺失率的增加,本文算法将好于smbs算法。

本实施例还比较了在不同算法下恢复的骨骼长度误差。用下式来表示骨骼长度误差

其中:nl为总的骨骼数,lr为恢复数据的骨骼矩阵。表1为每帧标记点缺失数为6时的比较结果(单位为cm)。

表1各算法骨骼长度误差

通过表1可知本实施例提出的算法恢复的骨骼长度误差远小于其它两种算法,精确度达到10-4cm。

综合上述可知,本实施例提出的算法同时提高了坐标恢复精度和骨骼长度恢复精度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1