前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV视频后期防抖实战

OpenCV视频后期防抖实战

原创
作者头像
大福加冰
修改2019-07-29 11:04:05
4.5K2
修改2019-07-29 11:04:05
举报
文章被收录于专栏:大福的云大福的云

前言

点播、直播行业的蓬勃发展,使用户生产视频(UGC)逐渐替代了专家生产和平台生产的方式,成为了主流。由于广大用户不可能全都具备专业素质和专业器材,其产出的视频往往质量较差,最明显的特征就是存在抖动。

减少视频抖动有很多方法,包括

1. 使用专业摄影辅助器材,如三脚架

2. 使用带有物理防抖功能的镜头,如iphone

3. 使用带有实时防抖功能的软件

4. 使用Premiere,AfterEffects等视频软件进行后期防抖

以上几种方式,实践中都经常被采用。然而这些方法都各自存在缺陷。辅助器材笨重、不便携,成本较高;物理防抖设备成本较高;软件防抖对硬件性能要求较高,且会使镜头移动时有一种“笨重”感,体验不佳;软件后期防抖则只有专业人士才能进行。

针对上述问题,一个较好的解决方案是使用算法自动完成视频后期抖动处理。笔者通过学习OpenCV,从零开始初步实现了一套类似的系统。下文将逐步介绍此系统的工作流程。

算法流程

运动分析

视频抖动的本质是图像存在着微小、方向随机、频率较高的运动。首先要检测到图像帧与帧之间的运动方向。

角点检测

图像中的任何一个物体都通常含有独特的特征,但往往由大量的像素点构成。角点是能够准确描述这个物体的一个数量较少的点集。角点检测算法可以分析出图像最明显的特征点,用于物件识别和跟踪。

光流

由于目标对象或者摄像机的移动造成的图像对象在连续两帧图像中的移动被称为光流。它是一个2D向量场,可以用来显示一个点从第一帧图像到第二帧图像之间的移动。

RANSAC

RANSAC是“RANdomSAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。

两帧连续图像有各自的角点集合,RANSAC可以从含有噪声的数据中发现相互匹配的点集,进而计算出两帧图像的变换矩阵。

运动分析结果

中间的射线即为简化后的运动轨迹

运动平滑

维度选择

利用图像匹配算法,我们可以获得两幅图像之间的变换矩阵,矩阵包含了大量的信息。但在视频防抖需求中,我们需要关心的只有3个信息:水平位移、竖直位移和旋转角度。从矩阵中抽出相应的值,可以得到如下运动轨迹曲线。曲线中大量的“毛刺”就是我们要消除的抖动。

水平方向运动轨迹
水平方向运动轨迹
竖直方向运动轨迹
竖直方向运动轨迹
旋转角度
旋转角度

运动轨迹平滑

这里一般使用滤波、拟合或最优化等方法来对曲线进行平滑,下面是两种不同的算法得到的结果。

1. Kalman滤波

Kalman滤波在控制类场景中运用较多,使用前面的运动来预测下一个运动,消除采样噪声。

由于Kalman只依赖前面的数据,所以更适合软件实时防抖。在后期防抖中,得出的结果往往会有一些“惯性”,效果并非最佳。

2. 中值滤波

一种最简单但有效的滤波方式。在防抖场景中的缺点是对结果缺乏掌控。

修复运动计算

平滑轨迹与原始轨迹做差即可获得修复运动参数。

图像变换

仿射变换

仿射变换(Affine Transformation或 Affine Map)是一种二维坐标到二维坐标之间的线性变换,它可以保持图像的平直性和平行性。变换方式与矩阵参数的一些基本形式如下图。

结果输出

视频内容

其它示例

视频内容
视频内容
视频内容

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 算法流程
    • 运动分析
      • 角点检测
      • 光流
      • RANSAC
      • 运动分析结果
    • 运动平滑
      • 维度选择
      • 运动轨迹平滑
      • 修复运动计算
    • 图像变换
      • 仿射变换
      • 结果输出
  • 其它示例
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档