如何制作满足Gyroflow增稳的原始数据

背景

gyroflow工具固然好用,但一般都需要基于我们准备好视频和对应的imu数据,如果没有适配的imu数据,gyroflow也可以基于全局的光流匹配进行防抖,但效果不及陀螺仪防抖。
而目前市面上可以直接适配gyroflow软件视频元数据(嵌入imu数据或者积分四元数)解析的工具不多(见官网文档),而其中有些新产品机型已经不再提供原始数据,提供方式相对受限,需要在特定录像配置下才能提取,并不利于本地开发学习和效果验证。
为了解决上述问题,针对gyroflow不支持的设备,只能提供录像甚至imu数据和录像数据完全不在同一个设备上采集的情况,本文详细描述如何去设计合理的方案和数据格式,用来支持gyroflow解析,实现正常的防抖效果。

实现步骤

前提条件

对于gyroflow而言,它可以解析大部分视频格式。因此,只要满足正常编码格式的视频,基本都可以通过gyroflow解析视频图像帧、时间戳、帧率以及meta信息。考虑到大部分开发人员的摄像头模组来自供应商或者单独采购,meta数据少有进行二次开发叠加imu数据或者四元数信息,本博文作为入门指南,不在这里过多赘述。

除了准备视频之外,还需要对摄像头模组进行镜头参数标定。标定方法在之前的博文中也有说明,但工具内部默认的棋盘格并不常用,适用的标定模型是鱼眼模型,对于日常的广角镜头而言,畸变参数可能存在不适配的情况,进而导致画面扭曲。

如果你是以上情况,需要修改源码导入适配你镜头参数的模型,同步应用到后面的各个模块中去。

当然,如果你的模组源于软件支持的几家大厂,工具会根据视频参数自动适配,或者你在镜头文件中通过搜索设备、分辨率、帧率查找对应配置文件。

imu数据处理

在之前的文章中有讲过imu导入的文件格式’gcsv’以及数据内容相关格式,按照格式编写文件是工具成功识别的基础。

除此之外,本文重点强调以下几个注意事项,没有处理好会导致防抖失效。

  1. imu采集数据的时间需要覆盖视频时间,否则部分时间段视频会防抖失效。
  2. 存储文件中的readout time实际不会生效,需要在工具端手动配置,这里对readout time和exposure time时间的差异一定要搞清楚,混淆了会产生果冻效应。如果是全局快门默认readout time为0。
  3. 在做时间同步时,工具会从视频中解析时间戳和imu进行对其,为了避免同步时间偏大,imu的时间戳建议从0开始。当然,考虑到部分开发者可能不想用视频编解码的时间,可以通过修改源码并传入每帧sync+曝光时间/2+帧读出时间/2作为当前帧时间。
  4. 如果你拍摄的环境相对静止,或者很难通过光流得到准确的运动轨迹时,对当前开发系统进行imu和camera的软同步或硬同步,确保时间戳对齐。只有完成时间戳对齐,才能保证防抖有效。
  5. imu文件的坐标系建议和gyroflow的算法坐标系对齐(算法坐标系:X朝右,Y朝上,Z垂直镜头朝里,右手坐标系,可参考官方文档数据格式说明,有示意图),对齐的目的是避免坐标系不一致导致同步失败。
  6. 如果无法明确imu坐标系朝向,可以在运动转折点或者比较剧烈的时间段右键估算imu朝向。
  7. 如果是通过imu文件加载的数据,你可以选择合适的积分方法来提高运动估计的四元数精度,降低imu漂移产生的积分累积误差。

总结

完成以上数据准备工作后,基本上就可以进行gyroflow的调参工作了,甚至如果你已经完成了正确的时间同步,此时加载的稳像预览视频已经有了初步的稳像效果。通过增加卷帘快门配置,平滑参数调整,就可以得到实际想要的目标效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值