APP下载

基于信息冗余压缩的动作捕捉骨骼数据编码优化方法

2019-11-12石慧煊张同锋陈伟伟

网络安全技术与应用 2019年11期
关键词:体感精度节点

◆石慧煊 张同锋 陈伟伟

(中国电子科技集团公司第二十八研究所共性产品中心 江苏 210007)

动作捕捉是利用机械装置、光学或传感器等设备获取人体或其他物体运动数据,并将这些运动姿态重现的技术[1]。通过该技术将采集到的体感数据输入至虚拟仿真训练系统,驱动虚拟角色模型动作,形成虚实融合自然体感交互,是实现高沉浸感虚拟训练的主要手段[2]。

本文针对动作捕捉数据的采样频率高、单帧数据量大、不利于网络传输等问题,提出一种基于信息冗余压缩的动作捕捉骨骼数据编码优化方法,有效提升多人协同体感交互体验。

1 动作捕捉骨骼数据中的信息冗余

1.1 动作捕捉骨骼数据概述

体感数据指通过全身动作捕捉设备获取的身体各关键节点位置与旋转数据,每一帧数据表示全身关键节点的某个瞬时状态[3],体感数据采样率可达100Hz。

全身共19个关键节点,每个节点包含位置与旋转两部分信息,其中位置信息通过3个单精度浮点数记录,分别表示以米为单位的空间坐标X、Y、Z。旋转信息同样通过3个单精度浮点数记录,分别表示以X、Y、Z为旋转轴的欧拉角度值。

1.2 节点信息冗余

节点信息冗余是指身体关键节点信息中存在的信息冗余。由于节点之间并非互相独立,而是存在树形拓扑关系,子节点的位置及旋转信息与父节点存在相关性,在已知父节点位置及旋转后息的情况下,子节点位置及旋转信息可通过正向运动学公式计算得出。

1.3 采样频率冗余

采样频率冗余是指体感数据的硬件采样须率过高产生的信息冗余。一方面,训练过程中受训人员并非时刻都有肢体动作,举枪瞄准后的射击过程中身体基本保持静止,而等待与隐蔽也是战术协作中重要的一环;另一方面,在同一时间段内身体各关键节点的运动幅度与速度也存在不同,受训人员可能在腿部保持静止的同时上半身进行观察搜索,或上半身保持瞄准姿势的同时腿部快速前进。

1.4 数据精度冗余

数据精度冗余是指表示身体关键节点信息数据精度超出了实际精度而产生的信息冗余。动作捕捉设备测量的位置信息精度可达毫米级,旋转信息精度可达1度,在使用单精度浮点数表示位置信息时,小数点后第4位即达到毫米级精度,对于旋转信息,小数点后第4位可达到千分之一度,后续位数所表达的数据精度已远超动作捕捉设备能够采集的数据精度能力[4]。

2 动作捕捉骨骼数据编码优化方法

2.1 节点信息冗余压缩

令(Px,Py,Pz)为父节点位置信息,(Rx,Ry,Rz)为父节点旋转信息,R为父节点齐次旋转矩阵,v0为0度方向向量,d为子节点与父节点的距离,则子节点位置p为:

其中0度方向向量v0及节点间距离d均可在动作捕捉设备校准时确定,进行节点信息计算时视为常量。在需要还原全部19个身体关键节点的位置及旋转数据时,可从根节点出发,沿着节点间以树形拓扑关系构成的正向运动链,逐级计算子节点的位置信息。除根节点需要同时记录位置及旋转信息外,其余节点仅需要记录旋转信息,位置信息则在计算过程中逐级计算得到。

基于上述分析通过删除体感数据中的节点冗余信息,实现体感数据编码优化,除根节点外的其余节点,不将其位置信息加入编码,则完整记录单体感数据需要231字节,可实现约50%的编码数据量优化。

2.2 采样频率冗余压缩

根据体感数据的特点,可采用自适应降频采样算法,在节点位置及旋转信息变化速率较低时降低数据采样频率,在节点位置及旋转信息变化速率较高时相应保持较高的数据采样频率,对体感数据编码进行优化。

节点采样频率的动态自适应调整算法如下:

算法中,首先,计算节点数据变化量,该变化量采用节点数据向量间的欧式距离描述。其次,对该变化量进行归一化处理后,与自适应阈值进行比较,若变化量小于阈值,则根据节点数据变化量降低采样频率,否则根据节点数据变化量提高采样频率。采样率的降低与提高和节点数据变化量相关,使得最后对采样频率进行上下限约束后返回计算结果。

当对节点釆样时,将节点数据加入体感数据帧编码中,否则该节点数据为空。当体感数据帧编码中不存在任何节点数据时,不发送该帧数数据。

2.3 数据精度冗余压缩

4字节单精度浮点数的有效精度可达到小数点后7位,根据前述动作捕捉设备数据精度情况,单精度浮点数能够支持的数据精度已远超体感数据的实际精度,通过将单精度浮点数的小数点第4位后部分删除,对体感数据中的数据精度冗余进行压缩,可进一步优化体感数据编码。

IEEE-754规定单精度浮点数标准格式采用32位二进制表示。如图1所示:

图1 单精度浮点数二进制表示

第1位为符号位,表示浮点数的正负;之后8位为指数位,用计算2的乘方;最后23位为浮点数位,表示浮点数小数点后的数值。最终浮点数Float计算方法为:

Float=Sign(S)*1.FFF…FF*2EE…E

根据上式可知单精度浮点数的数据精度通过8位指数位与23位小数位共同控制。在取值范围已知的情况下,指数位通常为固定值,仅由小数位确定数据精度。身体关键节点的位置信息取值范围在0到2之间,指数位一直为0,可以在数据编码中直接忽略;旋转信息取值范围在0到360之间,指数位的可能取值在0到8之间,需要保留4位编码。

单精度浮点数的小数位可视作对数据的加权求和,小数位为1时权重为1,为0时权重也相应为0。各小数位对应的数值由其位置决定:第1位为0.5,第2位为0.25,第3位为0.125,第4位为0.0625,以此类推。小数位第10位以后的数据精度已经小于0.001,从10位至23位可以从数据编码中忽略。

身体关键节点的位置信息及旋转信息都是正数,因此可以进一步删除数据编码中的符号位。

基于上述分析,在已知数据取值范围的情况下,通过将浮点数转化为定点数,消除数据编码中的精度冗余,可以进一步优化体感数据编码。对单精度浮点数重新进行16位编码,将数据量压缩为原来的50%,重新编码后的二进制表示如图2所示:

图2 精度冗余优化后的二进制表示

重新解析数据时,首先将数据首位置0,表示正数;其次在4位指数位前补0,补齐8位;接着在12位小数位后补0,补齐23位;最后将数据按照单精度浮点数据格式解析。

2.4 动作捕捉骨骼数据编码

根据上述冗余压缩方法,对动作捕捉骨骼数据采用数据头加数据体的形式进行编码。数据头部分存储0度方向向量及关键节点之间的距离。数据体部分采用编码优化方法存储动作捕捉骨骼数据帧。

单帧数据帧编码最多包含:

(1)根节点的位置数据,需要3个浮点数,每个浮点数2字节,共6字节;

(2)全部19个节点的旋转数据,每个节点需要3个浮点数,每个浮点数2字节,共114字节;

(3)在降频采样情况下,使用3字节以比特位形式记录节点是否被正常采样,如果节点被正常采样,则比特位置1,否则置0。

在这样的编码机制下,每帧数据最多需要123字节,远小于原始数据编码。

3 结束语

本文提出了一种基于信息冗余压缩的动作捕捉骨骼数据编码优化方法。首先,研究动作捕捉骨骼数据的信息特性,分析骨骼数据中存在的节点信息、采样频率、数据精度等三类信息冗余;然后,针对三类信息冗余,分别提出对应的信息压缩方法;最终,汇总三类信息冗余压缩结果,形成动作捕捉骨骼数据编码优化方法。通过实验数据验证了该方法对动作捕捉骨骼数据编码具有良好的压缩效果,可有效降低数据尺寸,在多人协同实时体感交互应用中,能够有效提高动作捕捉数据的实时传输同步效率,优化交互体验,为进一步提升沉浸式虚拟仿真训练系统的训练效果打下基础。

猜你喜欢

体感精度节点
基于不同快速星历的GAMIT解算精度分析
热连轧机组粗轧机精度控制
体感交互技术在脑卒中康复中的应用
概念格的一种并行构造算法
结合概率路由的机会网络自私节点检测算法
采用贪婪启发式的异构WSNs 部分覆盖算法*
Crosstalk between gut microbiota and antidiabetic drug action
引入体感控制技术推动校园足球发展
以工匠精神凸显“中国精度”
电动车体感防盗系统