【动捕小灶】光学动捕场地的扫场和标定

Xsens动作捕捉 2023-03-31 4462

【本篇文章部分理解有较大错误,对各位造成的误导非常抱歉,正在通过算法老师进行重新学习和理解这块的相关理论和实际操作之间的关系,后续将对文章进行修改,多谢各位的关注】

【20210409更新:已订正本文部分错误信息,如果有其他理解偏差,欢迎各位同行和算法老师指正】


一次分享了动捕系统的场地布置一些细节之后,收到了不少反馈,感觉大家疑惑的方向非常一致:同样的设备同样面积的场地,但是使用结果和官方的各种宣传和视频却具备着非常大的差距,因此这次会针对两个点来跟大家分享一下光学捕捉的两个场地问题。


第一个就是相机的布局问题,上一次分享了关于光学场地初始化的部分技巧之后,很多人对相机的布局还是存在一定的疑问,就是场地中的相机如何去做一个比较好的布局。

举个例子,我们现在有12个相机,和一个5X5的捕捉场地,我们将场地的核心捕捉区域定为4X4的话,就是一个这样的空间

【动捕小灶】光学动捕场地的扫场和标定  第1张

接着我们将12个相机分配给这四个区域,有些小伙伴采用了类似这样的布局

【动捕小灶】光学动捕场地的扫场和标定  第2张

看上去好像没毛病对不对?但是!相机的FOV是需要距离来展开的,尤其是一些高级的光学镜头,有超过30M的捕捉范围(不同捕捉范围对应不同规格的标记点,每个厂商的文档中会给出建议)

【动捕小灶】光学动捕场地的扫场和标定  第3张

这就是为什么,虽然相机数量一致,但是捕捉效果有相当的差距,因为相机的布局问题,减少了数倍的捕捉覆盖空间。因此,在相机布局的设计上,如果相机的性能足够强大的话,建议采用往对角偏移的位置来进行相机的锚定,这样才可以尽量大地提高单个相机的视角覆盖面积和利用率。(针对较小的场地,所有相机基本方向为场地中心,如果场地面积大到需要在中间加相机进行隔断的话,该原则不一定适合实际情况,补充说明:部分软件不支持隔断扫场,会导致场地状态出现错误,例如Motive。

通常来说,相机数量较少的情况下(<=24个),都会用减少有效范围,增大覆盖率的方式来优化捕捉效果

【动捕小灶】光学动捕场地的扫场和标定  第4张

单个Marker点捕捉生效的条件为同时被>=3个相机识别到(各个厂商可能存在算法差异,部分动捕软件可以自行调节这个数值),因此一定要确保在有效捕捉区域内,任意一个位置可以被尽量多的摄像头追踪到,这样可以确保数据的稳定性。除此之外,针对不同的相机和布局,官方通常会给到推荐使用的Marker点大小建议,类似下图(MotionAnalysis动捕设备的官方建议)

【动捕小灶】光学动捕场地的扫场和标定  第5张

因此,在调试相机的时候,就要提前对场地进行测试,调整相机的对焦等参数,来达到最满意的捕捉效果。

接下来说第二个大家比较关心的问题,也就是扫场,扫场的样本集会影响到软件对于场地的计算,动捕厂商的扫场机制和规则有一定的差异。我们可以拿三个当前常见的光捕厂商的扫场机制做一个分享:


Optitrack

Optitrack的扫场界面提供了每个相机的轨迹显示,Motive软件右侧的扫场面板可以看到每个相机的采样数量、覆盖率以及对当前扫场质量的判定。通常情况下,厂商会建议在进行人体捕捉的时候把采样数量扫到2000/相机,如果是用于VR大空间的话则扫到1000/相机,如果数值超出过大,可能会导致某个相机的计算速度过慢,一方面有可能是因为在采样的过程中获取到了不好的数据,导致相机算法优化结果不通过,所以在某个相机反复运算;另一方面,样本的增加本身也会对计算速度产生影响(样本越多,计算时间越长)。因此,虽然理论上样本的采集量和捕捉精度成正比,但是并不建议过多地进行采样,因为这样会极大地影响生产效率。Optitrack并不限定采集样本量的数量,因此只要没有停止扫场,样本数量会不停地累加下去,直到手动暂停为止。

【动捕小灶】光学动捕场地的扫场和标定  第6张

扫场结束后,软件会给出本次扫场的结果,包括计算结果最好/最差的相机、平均误差的大小、扫场结果的评分等等。Optitrack的扫场杆是三点,Vicon是四点,Qualisys是两点,虽然每个厂家的扫场和计算方式有细微的差别,但是本质上都是计算相机获取的2D图得到的扫场杆上Marker点的位置与我们在软件中实际设置的扫场杆参数之间的误差值。通过扫场这个操作来计算出各个相机之间的相对位置。

【动捕小灶】光学动捕场地的扫场和标定  第7张

如果不小心在使用的过程中误碰了某个相机的话,Optitrack提供了单个相机的校准程序,可以对单个光学镜头重新进行采样处理,软件会对该镜头单独进行运算和校准。


Vicon

Vicon的扫场和Optitrack存在一定的差别,基于上述我们提到的样本集数量的问题,Vicon直接在软件中对样本集进行了数量限定,当单个相机采集到足够的样本时,软件会自动停止对该相机的采样,从而达到控制样本集数量的目的。动捕的操作员也可以在软件中自行修改这一数字,增大/减少需要的样本数量,通常情况下,默认的参考值即可达到比较好的捕捉效果,满足大部分的使用需求。

【动捕小灶】光学动捕场地的扫场和标定  第8张

在扫场的过程中,可以看到每个相机样本以及该相机精度的一个采样数量的判定,当相机的颜色变为绿色的时候证明该相机已经获取到了比较理想数量的样本

【动捕小灶】光学动捕场地的扫场和标定  第9张

除此之外,由于Vicon相机中自带处理芯片,它可以支持在扫场后实时对相机位置进行检测和纠偏,也就是说,如果不小心在使用过程中不小心碰到了Vicon的镜头,只要静待一段时间,内置的算法会重新计算该相机的位置,并进行重新自我校准。但是需要注意的是,这样的校准肯定存在一定的误差,如果在镜头数量多的情况下影响不大,但是镜头少的话,个人还是建议重新做一次扫场处理。


Qualisys

相比市面上其他相机,Qualisys具备部分比较独立的特性,比如IP67级别的防水,水下捕捉的算法、提供了相机串联的连接方式等等。对于我们这次讨论的扫场,与其他厂家的设备不同的是,Qualisys的扫场杆为2点扫场杆,扫场机制是通过时长限定样本集数量,你可以在软件设置中调整需要进行多长时间的扫场软件提供了扫场提示,会在开始扫场以及在扫场结束的时候听到提示音。

【动捕小灶】光学动捕场地的扫场和标定  第10张

当然,这一操作本质目的还是为了获取相机2D信息上扫场杆Marker点像素位置,计算其与实际输入扫场杆数值的误差,同时通过算法还原各个相机之间的相对位置。QTM软件会在扫场结束后自动弹出扫场的采样数量和计算结果。

【动捕小灶】光学动捕场地的扫场和标定  第11张

扫场结束后可以通过可视化界面看到扫场的样本覆盖场地范围,这一功能在某些小场地的实际使用过程中时,可非常清晰地发现一些捕捉的死角,或者采样较差的区域,以便下次在扫场的时候对这个区域进行优化,或者调整相机的布局。原则上来说,内部允许存在部分小的区域没有完全覆盖,但是整体上扫场区域需要尽量覆盖整个捕捉场地以获取更为精准的扫场样本集。

【动捕小灶】光学动捕场地的扫场和标定  第12张

从上面的信息不难发现,不管是哪个厂家,其实扫场的方式都大同小异,通过一个预设的Marker点间距在场地中进行采样,然后通过算法和相机参数计算2D信息与实际间距之间产生的误差,并且还原三维场地信息,最后通过L形标定杆设定场地的水平位置和坐标轴(这一步并未详细描述,因为没有太大区别,操作上都是在场地上放一个L形带Marker点的标定杆,点一下标定按钮就完事了,所有的计算都是在一瞬间完成)。根据三家的不同标定机制,我们可以总结出一些扫场的经验和结论:

  1. 扫场并不是样本集越多越好,错误的样本集反而容易导致计算产生更大的误差,因此在扫场过程中,不需要过快挥杆,只要保障扫场杆尽量不要对地面产生碰撞,以及扫场杆上的Marker点稳定即可,入场的时候尽量摘掉眼镜以及检查身上可能带反光信息的材料;
  2. 每个相机的2D图像平均误差应该都在亚毫米级别,尽量使得相机的这一数值接近,有利于增加场地的捕捉精度,如果单个相机的参数有较大差异的,可以对该相机进行重新标定(个人更建议对整个场地进行重新扫场);
  3. 尽可能覆盖整个范围场地来进行样本集采样,这样有助于当捕捉位于边缘区域的时候尽量增加捕捉的精度;
  4. 针对当前一些特殊的业务,比如直播项目,有可能演员只会在非常小的范围内活动以及捕捉,对演员的站立位置进行更多数量的样本采集可以提高捕捉的稳定性和精度。当然对于提高稳定性最好的方式,依然是增加相机(狗头)。


更多关于动作捕捉的应用和分享,欢迎大家添加我的个人微信号进行交流。

The End