道格拉斯―普客算法在动作捕捉数据优化中的应用

时间:2022-09-30 07:09:41

道格拉斯―普客算法在动作捕捉数据优化中的应用

摘 要:数据手套因为其逼真的人机交互方式,在虚拟现实中越来越广泛地得到应用,尤其在工业装配、仿真手术、控制及手势识别等多个领域。通过分析数据手套的数据特征,运用道格拉斯普客算法,解决了大数据量下的数据手套交互时间延迟问题。通过改进优化数据方法,实现了数据在输入设备采集时大量数据的优化,将数据手套的数据进行优化在数据平滑上进行了处理,得到逼真的虚拟空间虚拟手或者机械手的交互效果,改善了虚拟手在仿真时的颤抖错误,实现了稳定的虚拟手交互效果。

关键词:虚拟现实;数据手套;道格拉斯-普客

1 数据手套的工作方式

数据手套在虚拟现实系统中占据重要位置,是一种非常昂贵的人机接口设备,其功能可以实时在虚拟系统中获取人手的各个关节空间坐标,以便在虚拟环境中再现人手动作,达到仿真的人机交互目的。数据手套有很多种类,以cyber数据手套为例,可以对手部主要骨骼部位的关节运动进行实时测量。系统可根据反向运动学原理测算出手指关节的位置,并将数据施加到相应的骨骼上。由于惯性传感器主要依赖无处不在的地球重力和磁场,所以捕捉服在任何地点都可以正常使用,无需事先作任何准备工作。每个传感器将即时数据通过发射盒以蓝牙或红外方式发射,执行标准为802.15.4 915兆赫。在计算机中,利用蓝牙驱动即可直接读取蓝牙传输的数据。采用惯性传感器无需铺设特殊装置,无需进行长时间校准。相对其它光学动作捕捉系统,不会出现由标记物闭塞而造成的数据损失。

数据手套实现的关键在于各个生物器官如手指各关节的各个有效部位的弯曲、外展等测量。并形成在此基础上的手势的表现。完成表现不取决于人体手部姿态的建模,而是取决于确定传感器测量数据和手指各关节运动姿态的对应关系。对一个具体的数据手套应用过程,可设由手部各弯角组成的向量f=(f1,f2,…,fn)与对应传感器示数组成的向量d=(d1,d2,…,dn)。显然f和d之间存在着映射关系。数据手套的实现即是根据向量d,找出原映射关系的逆映射,从而表现出手部各部位的姿态[2]。手部软组织的存在,是人手和机械手区别的主要差异,使得人手无法和普通的刚性杆铰链相比,这就加大了问题求解的复杂性。手部某一关节的运动,不仅会作用于对应的传感器的示数发生变化,而且通过软组织的相互作用,使其他的传感器示数也发生变化。如果要求保证一定的精度,必须对求得的逆映射进行解耦计算。由于数据手套的传感器数目较多,而且响应的标定和解耦计算十分复杂,进行实时处理时困难较大,因此,目前数据手套的发展与应用只是处于初级阶段,还不十分成熟。

2 数据手套的数据

对于人手来说,最低要求也必须满足每个关节有三个方向的自由度位移和三个方向自由度的旋转。一般最少采用14个惯性传感器,每个传感器分别采集每块骨骼的三个方向的自由度位移和三个方向自由度的旋转相关数据,如果虚拟现实的效果达到逼真的效果,就必须和PAL电视制式相同,最少达到25f/s。所以1秒钟产生的数据量为:14*9*25=3150个。传感器的数据更新频率是100赫兹,实际产生的数据量远远大于3150个。由于反馈的效果需要实时,系统需要处理将大量的运动数据,对于虚拟现实平台来说不可能把所有的CPU资源都用来计算虚拟手,所以数据量过大一直是虚拟手亟待解决的问题。从信息传输单元(负责把从信息捕捉单元捕捉的手部的运动位置数据快速准确地传输到计算机进行处理)得到的每一个关节的数据在导入计算机中时,以关节为基数建立一个数组,将位移、旋转、放缩的X、Y、Z的值作为一个三行三列的数组来存储,如图1所示。

图1 单个手部关节的反馈数据格式

图中,tx,ty,tz为位移X、Y、Z的值;rx,ry,rz为旋转的X、Y、Z值; sx,sy,sz为放缩的X、Y、Z值。另外,数据手套在人手上不能完美的附着手部,在快速运动时,指关节等处有明显的侧滑和位移。此时的数据会导致虚拟现实中的人手出现关节的“滑抖”现象。而这些数据量中间经常会有关节“滑抖”出现,在虚拟现实仿真中成为最后显示效果的主要问题。

3 道格拉斯-普客算法优化数据

道格拉斯-普客(Douglas-Peucker)算法是矢量曲线压缩的经典算法,它从整体角度考虑一条完整的线或某一确定的线段。首先选取线段的两个端点,然后计算线段内其余各点到连接两端点的直线距离。如果这些点到直线的垂直距离中最大值仍小于设定阈值,则所有这些点都被舍去;若最大距离大于设定阈值,则此点保留,并以此点将线段分为两段,对这两段重复计算垂距,分别检查最大垂距是否大于设定阈值。重复此过程直到没有多余的点需要被舍去为止。

根据上述算法的核心思想,通过对比来决定哪个数据点是合理的。首先分别计算出Joint三个方向上(x,y,z)相邻点的平均值,由于手部动作的连贯性,无论是位移还是旋转都是应该平滑的运动曲线,当相邻点的平均值有较大变化时,一般都是因为捕捉模块在手部上的滑动造成的。在动做捕捉的起始时间,计算相邻的数据的差,利用公式tx(k)=tx(k)-tx(k-1),k为自然数。比如tx1=tx1-tx0, tx2=tx2-tx1。

其次根据经验,当(tx2-tx1)∈{-T,T},其中T就是阀值[5],通过调整阀值来控制运动曲线的的优化量。当超出阀值规定范围时,直接将导致此偏差的临近值中最大的删除。最大值Maxo和最小值Mixo与阀值的数据上限Zs和下限Zx进行对比,如果超过专家数据的上限,即Maxo>Zs,就直接删除;反之,负数的值也一样,即-Mix

+1)=(tx(J+2)+tx(J+3))/2,

tx(J+2)=(tx(J+4)+tx(J+5))/2,…在控制虚拟手的时候时直接应用tx序列,而不是原来的tx,这样就在得到的位移结果总量上少了一半,并且防止了滑抖现象。

4 结束语

本文分析了基于磁性感应器的数据手套工作原理,并根据原理获得了数据的采集格式和方法。对各个手关节的数据总量进行估算,并指出大量指关节数据采集中所遇到的问题和困难。通过分析指关节数据,在矢量中定义了阀值,利用道格拉斯算法的精髓,将大量冗余数据进行中值滤波,使得数据量大量减少并减少了错误偏移,通过实验证明在人手的虚拟仿真中效果大为改善。

参考文献

[1]高国阳,徐超,周东翔.虚拟手的远程控制实现[J].计算机工程与应用,2011,47(23):79-83.

[2]孙静静,焦学健,柴山.基于数据手套的虚拟手的实现[J].农业装备与车辆工程,2012(2):54-57.

作者简介:孙浩鹏(1975-),男,汉,吉林长春人,硕士,讲师,研究方向:虚拟现实。

上一篇:浅析城市文化建设过程中的问题及对策 下一篇:CEMS在300MW火电机组中的应用