下载
中文
注册

DIS功能介绍

DIS(Digital Image Stabilization)数字图像防抖是对图像进行数字处理的过程,采用防抖算法计算出当前图像的运动偏移,然后根据计算得到的运动偏移对当前图像进行平移、旋转等变换,从而起到防抖的效果。

摄像机在拍摄视频时由于环境或人为的影响,视频会出现抖动或不稳定现象,影响视频观看,比如在视频采集场景中由于摄像机可能受到风吹或汽车经过引起的振动,手持运动DV受到人为的影响,行车记录仪受到汽车的抖动,都会引起视频抖动,为了让客户观看更加稳定和更加舒服的视频,需要尽可能消除视频的抖动。

基本原理

DIS的基本原理是根据运动偏移对图像的二维仿射变换过程。仿射变换包括对图像的平移、旋转、放大和错切(可通俗理解为平行四边形变换)等,此变换可以用3*3的矩阵来表示。

3*3矩阵就是DIS算法中要计算的运动偏移,(x,y)表示原来图像的坐标位置,(x',y')是变换后的图像的坐标位置。

在对图像进行图像变换操作时,会改变图像像素的位置,使得图像的边缘可能会超出原有图像的宽高,会被平移出整个画面的位置。因此在DIS防抖时要对图像进行裁剪和放大。DIS防抖是要在完成变换操作后对图像按照一定的裁剪比例裁剪掉图像的边缘,然后再按原有宽高放大裁剪之后的图像,如下图所示。

图1 DIS 原理图

DIS计算运动偏移有两种算法:

  • GME算法

    GME(Global Motion Estimation)算法是通过提取图像特征,计算当前帧图像和参考帧图像之间的运动偏移。采用GME算法处理后的图像较稳定,有较好的防抖效果,但当画面中大面积拍摄物体在移动时,画面也会出现背景拖拽现象。这是因为GME无法完全区分出画面物体移动还是摄像机移动,从而可能造成误判。另外在低照度情况下,由于图像的特征模糊,GME算法防抖效果存在下降的可能。

  • 陀螺仪算法

    陀螺仪算法是根据陀螺仪产生的数据计算当前帧图像的运动偏移,采用陀螺仪算法能够较好解决误判和低照度情况下无防抖效果等现象。

接口调用流程

调试DIS功能涉及调整如下接口中的参数,接口及参数的详细说明请参见CANN AscendCL应用软件开发指南(C&C++)中的“AscendCL API参考>媒体数据处理V2>VI功能”章节下的接口说明。

  • hi_mpi_vi_set_chn_dis_config
  • hi_mpi_vi_set_chn_dis_attr
  • hi_mpi_vi_set_chn_dis_param

DIS功能集成在VI模块,参考VI通道功能框图如下:

图2 VI通道功能框图
  • DIS只支持在物理通道上运行。
  • DIS视频输入图像格式支持线性Semi-planar420和单分量,只支持非压缩图像。
  • DIS 视频输入图像辐型比(宽高比)支持范围为16:3~16:27
  • DIS处理过程中需要使用VGS/GDC模块,如果多个模块调用VGS或GDC,可能因VGS、GDC性能不足而导致DIS出现丢帧的现象。

基本概念

IMU(Inertial Measurement Unit) 惯性测量单元:IMU是测量物体x、y、z三轴姿态角(或角速率)以及加速度的装置,包含了陀螺仪和加速计。