基于机器学习的视频防抖处理

Posted 逸步行天下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于机器学习的视频防抖处理相关的知识,希望对你有一定的参考价值。

视频防抖动

一、图像质量评估指标PSNR和SSIM

PSNR(Peak Signal-to-Noise Ratio)峰值信噪比

定义原始图像(干净图像)I和噪声图像K,则有


二、Hybrid Neural Fusion for Full-frame Video Stabilization用于全帧视频稳定的混合神经融合


三、Deep Online Fused Video Stablization 深度在线融合视频稳定

gyroscope陀螺仪

  • 放在前面的知识

    • 什么是陀螺仪?
      陀螺仪说白了就是指示角度偏移的传感器,一般在机器人等设备中处于核心传感器,每一个陀螺仪均在每一秒产生一个输出,单位就是度/秒,表示特定时间内旋转速率的度量,度量越大代表机器人的旋转越快,机器人不会每一秒就输出一个旋转度数,而是输出一段时间内的数百个读数,计算得到角度变化,如下图所示:

    而机器人通电启动时候放置的方向将作为0度,如下图所示:

    随着时间的推移,机器人将会获得一个实际的偏移角度,对这种漂移影响最大的因素是陀螺仪的偏置稳定度规格,这是衡量陀螺仪在长时间段内测量结果稳定性的一个指标。如果将机器人开启一个小时并且不移动它,陀螺仪在一个小时结束时读取的数值就不是零。也就是说如果开电一个小时,机器人放置静止,一个小时后可能机器人会产生20-30度的偏转角度,而开电十分钟之内可能会产生3度左右的偏转,这些偏移角度都将是机器人前进方向相比较之前产生的偏转。这就是陀螺仪的漂移。

  • 陀螺仪数据校准

    零点偏移量,这个概念主要是飞控中对陀螺仪进行数据的校准必须掌握的概念。什么叫陀螺仪的数据校准:飞控所获得的数据减去零点偏移量集可,而零点偏移量就是采集到的数据的平均值。

  • 陀螺仪数据校准的目的

    根据陀螺仪计算得到的零点偏差对于水平稳定有着重要的作用,例如X轴产生0.2度/秒的零偏,那么通过X轴计算得到的角度也不会从0度开始,直接会导致姿态角产生一定的偏差,飞行过程中会很难控制水平。

  • 校准方法

    上电会自动校准,产生零偏,每次上电得到的零偏量是不同的。

    注意 陀螺仪上电校准需要静止一段时间,否则是一段错误的数值,这是因为陀螺仪的校准需要识别静止状态(两次采集到的数据差的和是否超过阈值,超过阈值则说明处于运动状态),否则代码将一直处于待机循环状态直至静止状态符合。

  • 陀螺仪的误差分析
    误差主要是两类:

    • 系统性误差

      本质上就是有规律的误差,可以实时补偿,常值偏移、轴安装误差、比例因子等

    • 随机误差

      本质上就是随机产生的噪声,一般情况下比较难拟合,没有固定的函数去拟合产生的噪声项,一般采用时间分析法对误差进行建模分析,再通过卡尔曼滤波等算法去减小噪声项的影响。(卡尔曼滤波,也就是通过前一时刻以及以往产生的误差来预计下一时刻物体的最佳位置或者可能出现位置)

  • 从物理意义以及误差来源可以将误差分为如下几种陀螺仪的误差:

    • 常值漂移 : 长时间不随时间变化的测试数据的均值(0偏移量)
    • 角度随机游走(Angle Rate Random Walk, ARRW): 光学陀螺具有速率积分的特性,由角速率随机白噪声积分引起的误差角增量具有随机游动的特性,这一误差被称为光学陀螺的角度随机游走(陀螺角随机游走(Angular Random Walk)是表征陀螺仪角速度输出白噪声大小的一项技术指标,ARW)。 这一误差的主要来源是:光子的自发辐射、探测器的散粒噪声、机械抖动;另外,其它相关时间比采样时间短得多的高频噪声,也引起光学陀螺的角度随机游走。对于采用抖动偏频的激光陀螺来说,由于交变偏频使激光陀螺频繁通过锁区,产生较大的角度随机游走误差,该误差成为激光陀螺的主要误差源。 角度随机游走噪声的带宽一般低于10Hz,处于大多数姿态控制系统的带宽之内。因此,若不能精确确定角度随机游走,它有可能成为限制姿态控制系统精度的主要误差源。
    • 速率随机游走
    • 量化噪声
    • 速率斜坡

四、图像防抖的算法本质

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

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

3. 光流 / o p t i c a l f l o w \\colorlime光流/optical flow 光流/opticalflow, 由于目标对象或者摄像机的移动造成的图像对象在连续两帧图像中的移动被称为光流。它是一个2D向量场,可以用来显示一个点从第一帧图像到第二帧图像之间的移动。

4. R A N S A C / 随机数一致 \\colorlimeRANSAC/随机数一致 RANSAC/随机数一致, 它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。两帧连续图像有各自的角点集合,RANSAC可以从含有噪声的数据中发现相互匹配的点集,进而计算出两帧图像的变换矩阵。

5. 运动平滑 \\colorlime运动平滑 运动平滑

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

5.2 轨迹平滑 \\colororange轨迹平滑 轨迹平滑。 这里一般使用滤波、拟合或最优化等方法来对曲线进行平滑

5.2.1 卡尔曼滤波 \\colorblue卡尔曼滤波 卡尔曼滤波,Kalman滤波在控制类场景中运用较多,使用前面的运动来预测下一个运动,消除采样噪声。由于Kalman只依赖前面的数据,所以更适合 软件实时防抖 \\colorred\\textbf软件实时防抖 软件实时防抖。在后期防抖中,得出的结果往往会有一些“惯性”,效果并非最佳。

5.2.2 中值滤波 \\colorblue中值滤波 中值滤波,一种最简单但有效的滤波方式。在防抖场景中的缺点是对结果缺乏掌控。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3H998oYw-1662002826701)(./images/中值.png)]

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

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


五、MeshFlow: Minimum Latency Online Video Stabilization 最小延迟在线视频稳定

本质上是 图像对齐 \\textcoloryellow\\textbf图像对齐 图像对齐的任务。视频稳定通过两种方式,离线和在线,离线方式就是诸如premire类似的后处理工具;在线视频稳定通过两种方式:单一运动参数模型(仿射、单适应性等)或者陀螺仪传感器。meshflow是一个空间平滑稀疏运动场,空间矢量只存在于空间网格的顶点,特别是,匹配特征点上的运动矢量被转移到其相应的附近网格顶点。网格流是通过两个中值滤波器为每个顶点指定一个唯一的运动矢量来生成的。
MeshFlow方法可以概括如下:在视频帧上放置一个规则的2D网格。我们会跟踪连续帧之间的图像特征角点,在每个特征角点位置处会生成一个运动矢量。接下来,将这些运动矢量转移到其相应的附近网格顶点,以便每个顶点从其周围特征累积若干运动。meshflow是由所有网格顶点运动组成的一个稀疏2D阵列

5.1 MeshFlow获取

(1) 网格 \\textcolorred网格 网格。首先在每一帧的图像上形成16x16的网格

(2) 获取 m o t i o n v e c t o r ( M V ) \\textcolorred获取motion vector(MV) 获取motionvector(MV)。特征提取图像,一般是获取到图像的特征角点集合(通过具体的方法函数获得FAST或者SIFT或者ORB特征角点集合),相邻帧匹配到的特征位置的差作为MV,特征差也就是运动矢量,反映后面的帧在前一帧上面的运动趋势。针对一对特征匹配点 P P P P ^ \\hatP P^,有运动矢量 V P = P − P ^ V_P=P-\\hatP VP=PP^

(3) 得到 M e s h F l o w \\textcolorred得到MeshFlow 得到MeshFlow,将MV关联到相邻的网格顶点,可以在下图中看出, p p p点以及 p ′ p^\\prime p分别表示当前帧以及上一帧上的某一个图像特征点位置,然后在当前帧上形成了16 × \\times × 16的网格,进一步在当前特征点所在的位置上形成一个椭圆区域,该区域包含了n个网格区域,将每一个网格区域的顶点均赋予特征点所在的运动矢量。

下述的流程表示了上述的三个步骤:

(4) 第一个中值滤波器 F 1 进行过滤 \\textcolorred第一个中值滤波器F1进行过滤 第一个中值滤波器F1进行过滤。一个网格顶点会关联到多个特征匹配的MV,用F1进行平滑处理得到规则化的meshflow。如图所示:

(5) 第二个中值滤波器 F 2 进行过滤 \\textcolorred第二个中值滤波器F2进行过滤 第二个中值滤波器F2进行过滤。在3 × \\times × 3的中值滤波器处理之后,去除离群点噪声,产生空间稀疏运动场。 黄色箭头 \\textcoloryellow黄色箭头 黄色箭头就是噪声流,而 橙色箭头 \\textcolororange橙色箭头 橙色箭头则是我们想要的网格顶点流,如图所示:

两个中值滤波器提供了必要的空间平滑,对于噪声流也就是不一致流的处理至关重要,噪声流上的运动补偿一般会造成空间视觉中不连续边界的渲染虚伪影,

(6) 顶点 p r o f i l e \\textcolorred顶点profile 顶点profile。每一个顶点MV路径内数据。

5.2 鲁棒估计

每一个网格产生多个MV,而角点响应了全局阈值的大小,阈值容易受到高纹理区域的偏移,因此,全局角点响应阈值->划分为小区域的局部响应阈值,旨在避免在语义信息少的区域(纹理较差的区域)采集不到MV,例如天空地面就很容易采集不到MV。根据网格划分,设置局部阈值,避免部分网格内检测不到合适数量的特征点的问题。

5.3 去除异常值 $

原图划分为4x4的子图,使用局部RANSAC排除离群点。由误匹配和动态目标产生的运动背离可以被成功去除,由深度变化和镜头rolling影响产生的小变化点可以被保留。中值滤波和RANSAC都对鲁棒的去处离群点很重要,前者局部作用,后者在更全局的范围作用。

5.4 pre-warping

在MehFlow之前,用全部匹配后的特征点计算出一个全局的单应性矩阵 F t F_t Ft用以表征全图的运动向量 V t V_t Vt,并用 F t F_t Ft P ^ \\hatP P^的坐标进行预矫正,即该点的局部运动向量为 V P ^ = P − F t P ^ \\hatV_P=P-F_t\\hatP VP^=PFtP^,该点的全部运动向量为 V P = V t + V P ^ V_P=V_t+\\hatV_P VP=Vt+VP^。warping 操作得到最后组合的全局和局部的组合图像帧。

计算一个基准速度

5.5 PAPS(Predicted Adaptive Path Smoothing)

5.5.1 离线自适应性平滑

O ( P ( t ) ) = ∑ t ( ∥ P ( t ) − C ( t ) ∥ 2 + λ t ∑ r ∈ Ω t w t , r ∥ P ( t ) − P ( r ) ∥ 2 ) \\mathcalO(\\mathbfP(t))=\\sum_t\\left(\\|\\mathbfP(t)-\\mathbfC(t)\\|^2+\\lambda_t \\sum_r \\in \\Omega_t w_t, r\\|\\mathbfP(t)-\\mathbfP(r)\\|^2\\right) O(P(t))=t(P(t)C(t)2+λtrΩtwt,rP(t)P(r)2)

上述的等式中, P ( t ) \\mathbfP(t) P(t)是优化路径,而 C ( t ) \\mathbfC(t) C(t)则是原始路径, λ t \\lambda_t λt是平衡参数也是最重要的参数,它如果值为0,表示视频帧没有发生任何的裁剪和抖动,因此设置它的值越小表示视频帧的裁剪和抖动程度将会越少。 ω t \\omega_t ωt是时序半径, w t , r w_t,r wt,r是高斯分布权重。前项约束优化path与原始path一致,后项约束序列窗口之间每一帧的平滑,离线场景依赖前后帧,每一帧求解一个最优解 λ t \\lambda_t λt

5.5.2 预测 λ t \\lambda_t λt

使用离线视频,预测出场景下适用的λt。使用两个相关标志元素,转移元素Tv(适合快速镜头移动),仿射组成元素Fa(适合复杂景深变换),两个都从相邻帧的全局homography中提取。其中,Tv转移元素的计算方式是计算前后帧之间的移,计算方式如下:

T v = ( v x 2 + v y 2 ) T_v=\\sqrt\\left(v_x^2+v_y^2\\right) Tv=(vx2+vy2)

机器学习入门

ML

视频

ML 方向众多,在此仅记录一些入门视频:

书籍

书籍推荐包括:西瓜书,公式推导南瓜书;机器学习方法(李航)

深度学习

深度学习是基于基于机器学习的延拓,深度学习和自然语言处理中(文本分析)都需要用到 Pytorch, Pytorch & Deep Learning

以上是关于基于机器学习的视频防抖处理的主要内容,如果未能解决你的问题,请参考以下文章

人工智能机器学习和深度学习,是如何影响视频监控的?

视频技术结合机器学习和人工智能的5种方式

2018最新人工智能全套视频课程|内含机器学习

机器学习入门

2018年某学院最新人工智能机器学习升级版视频教程

视频分类算法