1. 背景

无论是手机、运动相机、无人机、监控还是各种XR眼镜等,但凡涉及摄像头录像功能的设备,多多少少都要解决设备不稳定造成的画面抖动问题。

稳像能力作为影像技术的一个传统重要指标,已经有相对非常成熟的技术发展。从手机和运动相机的近几年的技术更迭过程中不难发现,视频稳像技术从硬件到软件的技术方案已经相当丰富。运动相机最为人称道的就是云台增稳技术,而对于手机侧而言OIS和EIS都是常被使用的方案,甚至还有sensor和镜头联合增稳的方案,来提高摄像头的稳像能力,保证画幅和防抖效果不受环境的影响。

而在EIS领域内,Gyroflow作为一款免费、开源、跨平台的视频防抖应用,可以称之为视频电子防抖的标准模板,利用相机内置IMU数据,对视频进行后处理稳像,效果堪比专业稳像视频,其中内嵌的一些开源算法技术方案,被各大厂商借鉴。

本指南专为新手打造,将从项目资源、系统下载、数据输入、入门使用、进阶技巧以及背后的技术原理等多个方面,带你一步步走进 Gyroflow。

2. 项目资源与学习链接

Gyroflow的官方网站是可以在国内访问的,里面有详细的文档说明,而在文档中的讨论社区国内是无法访问的。因此,在这里补充几个学习链接(分享gyroflow项目部署和代码详解)。

2.1 官方项目地址

  • GitHub 仓库Gyroflow GitHub —— 这里是项目的核心,你可以找到源代码、发布版本、问题追踪以及最新的开发动态。
  • 官方网站https://gyroflow.xyz/ —— 提供最权威的软件介绍、功能说明和下载链接。

2.2 学习与社区资源

  • 官方文档https://docs.gyroflow.xyz/app——描述了gyroflow的输入输出格式,支持的镜头文件,imu和算法坐标系的关系,如何安装、标定、参数调优、变量导出等方面的内容,可以说是新手入坑最佳的参考手册。
  • 知乎https://zhuanlan.zhihu.com/p/590828476——Clark从早期项目源码环境搭建、稳像核心pipeline各个模块的技术源码详解以及相关稳像论文分享等方面分享了很多的经验案例,对于不熟悉rust代码的用户及其友好,强烈推荐源码学习可以参考他的知乎文章。
    【注】:知乎中的项目源码并非最新版本,安装环境步骤相对复杂,我会在后期文章中补充最新版的部署方案,尽量简单高效,解决现有PC端安装会有的问题。
  • GitHub(Python)https://github.com/orgail/gyroflow-python——这是gyroflow的最早期原版,实现语言只有python和少部分C++代码,新人复现简单,安装环境依赖相对方便,没有过多兼容性问题,如果觉得rust版源码学习复杂,可以从python版入手,然后再学习rust版升级各个模块的算法。
  • **Bilibili **:B 站上有大量视频拍摄博主会使用gyroflow进行增稳调参,包括关键帧选取和图像防抖,可以参考学习如何使用官方app。

3. 安装和使用

Gyroflow 支持主流操作系统(包括Windows,Mac OS, Linux,Android和iOS五种),你可以根据自己的平台选择对应的安装包。同样,它也可以作为各种软件(Davinci Resolve / OpenFX, Adobe Premiere / After Effects, Final Cut Pro)的插件形式安装。本文以windows系统为例

3.1 Windows 系统

  • 访问 Gyroflow 官网下载页

  • 如下图所示,点击install for windows或者点击Download as .zip
    下载

  • 建议选择最新版v1.6.3相对比较稳定。

  • .exe 为安装程序,.zip 为绿色免安装版,下载后解压双击Gyroflow.exe即可使用。

  • 如果运行出现VCRUNTIME140.dll报错,则安装VC redist

提示:最小系统要求Windows 10 64-bit (1809 or later) 不支持Windows 7版本

3.2 输入和使用

Gyroflow的核心原理是利用陀螺仪元数据或者逐帧光流匹配进行视频稳像,而利用陀螺仪元数据的视频稳像方案可以解决大部分场景,如果视频中出现平移的抖动,可以将陀螺仪稳像后的视频用Gyroflow的图像稳像方法再处理一次。

3.2.1 支持的设备

Gyroflow文档中心/支持的相机——支持运动相机、手机以及部分索尼、佳能品牌相机。手机侧可以通过gyroflow的手机端应用录制来记录陀螺仪数据。

3.2.2 数据输入流程
  1. 录制素材:使用上述支持的设备拍摄视频
  2. 导入视频:打开Gyroflow,将视频文件直接拖入软件窗口,或者点击“打开文件”
    在这里插入图片描述
  3. 选择配置文件:如果你的视频是Gyroflow支持的相机录制的,Gyroflow会根据视频的meta数据自动匹配对应的镜头文件;如果你的视频并没有对应的meta数据,则需要你通过“创建新的”按钮标定当前镜头的相机内参,通过自动校准完成后导出镜头配置文件(标定的详细流程会在以后的文章中输出)。
    相机标定界面
  4. 准备运动数据:和配置文件一样,如果视频中带有陀螺仪的元数据,gyroflow会在视频导入的同时自动解析陀螺仪的运动数据,并在视频播放器正下方的时序图上显示IMU的原始数据或换算后的原始四元数。当然,陀螺仪数据如果是外置采集或者没有存放在视频中时,可以通过手动点击“打开文件”的方式,导入对应视频的陀螺仪数据(数据文件类型:.gcsv格式)。为保证视频数据中没有缺失运动数据,陀螺仪数据覆盖的时间范围要大于等于视频时间范围。

提示:运动数据的gcsv文件格式要求需要参考运动数据格式要求,后面的文章会对其进行详细补充说明。

3.3 快速入门

数据加载完成之后,对于支持的设备而言,基本上已经具有了初步的防抖效果,因为厂家生成的相机往往会在写入陀螺仪元数据的同时完成陀螺仪元数据和视频时间戳的对齐工作,只要通过点击下图所示的图标,即可看到增稳后的预览视频。
稳像按钮
当然,如果是不支持的设备,那么需要手动完成时间同步、平滑参数调节、卷帘快门的帧读出时间设置等等功能,使输出视频实现足够的稳像效果。

3.3.1 防抖参数配置
  1. 自动同步:在右侧的“同步”面板中,选择当前的默认配置,点击“自动同步”。需要注意的是,如果当前相机的sensor采用的是卷帘快门曝光(不是全局快门曝光)的话,下图中偏移方式应选为卷帘快门同步,同时需要在“稳定”面板中勾选卷帘快门校正,并填写正确的“帧读出时间”,这样才能让陀螺仪元数据和视频做到精准对齐,同样也能提高自动同步的精度。
    帧读出时间
  2. 调整平滑度:在“稳定”面板中,选择“默认”模式进行平滑,通过拖动平滑度来调整视频的增稳效果,点击下方的“高级选项”,可以按轴调整“平滑度”,也可以通过“最大平滑度”和“高速最大平滑度”来调节平滑曲线的光滑程度。这里的“最大平滑度”和“高速最大平滑度”在我理解来看可以类比成一个滤波器的通频带。一般默认即可,运动场景比较剧烈时推荐调整“高速最大平滑度”。
  3. 缩放模式:在防抖效果下,Gyroflow支持两种缩放(裁剪)模式,一种是静态缩放,主要是根据后处理视频中全局的原始四元数轨迹,计算出全时域下最大的fov裁剪比例,将其作为整个视频的裁剪比例,这样可以保证稳像效果的同时,视频帧不会出现黑边;而另一种则是动态缩放,为了解决拍摄过程中突然的剧烈抖动导致视频帧的有效裁剪比例过大,进而导致画幅的浪费问题,通过动态调整裁剪比例的方法,使得画面既有防抖效果,fov裁剪又不过剩,提高视频画幅的利用率。
3.3.2 导出流程
  1. 设置输出参数:在“导出设置”面板,选择你想要的编码格式,默认H.265/HEVC、分辨率和比特率,在高级选项中选择音频编码器和插值方法Lanczos4渲染界面

  2. 点击导出:点击“导出”按钮,选择保存路径,Gyroflow 将开始渲染稳定后的视频。

提示:Gyroflow渲染导出过程比肩耗时,建议在高级选项中选择Open CL或者Open GL进行渲染,有GPU的同学可以用GPU加速。

4. 总结

本文主要是入门Gyroflow工具进行视频防抖,而其中很多功能还未被详细介绍,后续笔者会在闲暇时间陆续更新记录gyroflow如何制作满足要求的原始数据、如何标定、各个模块的进阶功能、核心算法等。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐