2.3 基于消除时空域数据冗余的方法
基于消除时空域数据冗余的方法又可细分为基于曲线拟合、基于数据降维、基于信号处理、基于四元数空间稀疏表达和基于关键帧提取的方法。
2.3.1 基于曲线拟合的方法
Khan等[32]将人体运动平移及旋转数据作为N维欧氏空间的曲线,采用二次贝塞尔曲线最小二乘进行拟合。Arikan[13]和Lin等[21]则首先将运动数据进行分割,然后采用三次贝塞尔曲线对分割后的片段进行拟合。不同的是,Arikan[13]采用等间隔分割策略,而Lin等[21]则依据数据的连续性情况进行非等间隔分割。Han[33]提出利用多项式曲线拟合的方法对人体运动数据进行精简表示,从而使人体运动数据可存储及应用在功耗要求较苛刻的移动设备上。
2.3.2 基于数据降维的方法
Liu等[15]首先基于概率主成分分析运动分割方法[22]对运动进行分割,将运动数据分割成短小的片段。使每个片段都在一个低维空间,这样有利于进行主成分分析处理。对每个片段进行主成分分析处理后,运用自适应的基于三次样条曲线的关键帧提取方法进行关键帧提取。然后将这些关键帧的数据投射到主成分分析的少数主元上,就能显著地压缩数据。为了消除累积误差,Váša等[27]提出分析人体运动各局部节点误差与目标误差矩阵的关系,引入拉格朗日乘子来最优地平衡压缩比与误差。进一步将以一段姿态集(预设参数为120帧)为单位进行主成分分析的降维。最后采用熵编码对降维后的数据进行编码压缩。
主测地线分析是主成分分析在黎曼流形上的扩展,Tournier等[16]运用主测地线分析对人体运动进行降维,并利用IK对主测地线分析的参数进行匹配和优化;最后只需要保留末端效应器及根节点轨迹的相关参数,就能有效地对数据进行还原,从而有效地压缩数据。
2.3.3 基于信号处理的方法
基于数据降维的方法利用了关节之间的冗余,在压缩的过程中,各自由度是互相关联的。而基于信号处理的方法(如小波技术)通常将各自由度作为相互独立的信号进行处理。也有一些方法利用了各自由度之间的关系,如Chew等[36]将人体运动看作帧数和自由度数两个维度的图像。
(1)基于小波变换的方法
Beaudoin等[17]根据运动捕获数据特点,将优化的小波技术应用到人体运动捕获数据的压缩中。他们定义了一个变形矩阵来度量压缩前后的误差变化,对每个自由度选择使变形矩阵最小的优化小波系数。通过这种优化,能够很大程度地提高压缩质量,并在解码速度上优于Arikan等[13]的方法,该算法适合对短小运动片段进行压缩。Li等[29]观察到,人体运动中低频分量对运动的影响较小,舍弃一些此类分量,对应的小波系数对人体运动影响很小。基于此,他们提出基于小波变换与正向运动学结合的渐进压缩方法。
针对Beaudoin等[17]的方法计算复杂的缺点,Lee等[28]基于其之前的工作[45,46]设计了一种基于多分辨率小波的压缩方法。他们基于自适应的误差估计矩阵来平衡需保留的小波系数与视觉效果,以达到使用最少的小波系数得到符合要求的视觉效果。Firouzmanesh等[30]则根据每个自由度在人眼视觉上的重要程度来确定应保留的小波系数。
(2)基于压缩MPEG-BAP数据的方法
MPEG-4中定义了人体运动数据的BAP组织形式以及具体的压缩编码标准[18],该标准包括基于线性预测和基于离散余弦变换(DCT,discrete cosine transform)两种压缩方案。在线性预测方案中,运动数据中的I帧不需预测,而后续的P帧则用之前的I帧或P帧作为预测值。随后对预测校正值运用算术编码进行编码压缩。在DCT方案中,16个连续的帧运用DCT对数据进行变换;然后直流和交流系数被分别编码,其中直流值用前面的直流值作为预测值进行编码,而交流值则直接编码。需要注意的是,在以上两种方案中,都有对数据的量化处理。
MPEG-4中未充分利用人体运动数据的特点,因此,编码压缩比不高。针对这种情况,Chattopadhyay等[20]提出了一种在移动设备上压缩和传输BAP数据的算法——BAP-Indexing。该算法利用人体骨骼的层次结构来智能地索引运动数据,根据运动矩阵的浮点数分布情况将数据放入不同的“桶”中,使每个浮点数都可用一个索引来表示,从而有效地压缩了数据。该算法利用3个预先定义的质量控制参数就能有效地控制压缩质量与压缩比的平衡。由于要针对移动设备,所以充分考虑了解码效率和客户端的电力消耗。相比于MPEG-4标准中的压缩算法,BAP-Indexing算法有效地降低了网络带宽和功耗。
(3)基于运动数据图像映射的方法
Chew等[36]提出了基于虚拟角色动画图像的算法。首先以图形的帧数和自由度数作为图像的两个维度,将人体运动数据投射成一个16位的image maps。然后对其中的每一帧,采用模糊C均值聚类方法进行分组。聚类后的人体数据能充分平衡关节空间的连续性和人体运动时序的连续性,从而为编码算法更有效地减少数据冗余打下基础;最后采用J2K标准[47]对聚类后的数据进行编码。图2.3[36]给出了652帧运动数据在自由度数为62时的image maps,其中,横轴是帧数,竖轴是自由度数。由于652不能整除62,所以最后一个map不完全;而且因量化及传输错误等原因,解压得到的人体运动数据需要进一步处理以消除其中的伪迹(artifact),可采用MMF算法进行平滑处理。该算法在保证存在较小的视觉误差的基础上取得了最高120:1的压缩比,而算法的一个缺点是针对整个运动信号的规格化分析需要较大的时间开销。
图2.3 652帧运动数据在自由度数为62时的image maps
2.3.4 基于四元数空间稀疏表达的方法
Zhu等[19]观察到当前的稀疏表达大多不是为四元数空间而设计,因此,提出在四元数空间中直接进行人体运动的稀疏分解(QSSD,quaternion space sparse decomposition)的方法,它将人体的旋转数据分解成字典和带稀疏约束的权重两个部分。这样,欧拉空间中的线性组合及权重操作就分别转变成了四元数空间的乘以及幂操作。在压缩之前,首先提取参考姿态、根节点信息以及所有节点的旋转信息,并利用Tournier等[16]提出的方法对根节点及旋转信息进行压缩;然后将压缩后的节点旋转信息利用QSSD方法进行分解;最后利用算术编码进行编码压缩[37]。该算法的思想也可用于对运动数据的检索。
2.3.5 基于关键帧提取的方法
对人体运动进行等间隔采样时,由于运动激烈程度不同造成运动缓慢部分过采样,而运动激烈部分则欠采样。因此,关键帧提取的主要目标是自适应地从人体运动中发现可最大程度概括该运动的帧序列。严格来说,关键帧提取方法不是人体运动压缩方法的分支,但部分关键帧提取方法可作为人体运动压缩流程的一个环节,甚至可直接改造成人体运动压缩方法。
朱登明等[48]将原始高维数据映射到低维状态空间,然后进行运动数据的聚类分割,并将分割点作为关键帧的采样点。Lim等[49]则将人体运动看作高维曲线,采用曲线简化方法提取曲线上距离两端连线最远的点作为关键帧点。杨涛等[50]和Wang等[51]则基于Lim等[49]的方法分别进一步进行分层处理及GPU(graphics processing unit)加速。沈军行等[52]首先将第一帧看作关键帧,然后求后面帧与最新关键帧的距离。如果此距离小于某个阈值,则删除该帧;否则保留为关键帧。Matsuda等[53]将手写字迹优化的方法引入到关键帧提取中。刘云根等[54]则定义重建误差为关键帧提取有效性的度量标准,根据重建误差的大小来决定关键帧的取舍;它能提取出具有最小重建误差的关键帧,从而有利于运动数据的压缩。蔡美玲等[55]将关键帧提取分为帧预选和基于重建误差优化的精选两个阶段。在精选阶段,定义最小重建误差作为关键帧提取过程中的优化目标。Liu等[56]和Zhang等[57]将遗传算法应用到人体运动关键帧提取中,基于遗传算法与单纯形法结合的运动关键帧提取方法[56]也以重构误差最小为目标。Bulut等[26]则将网格动画中的curve saliency[58]运用到人体捕获数据中,以度量运动帧的重要程度,然后采用聚类方法将相似的帧进行聚集,通过选取聚类中有限数量的帧来进一步实现关键帧的提取。