陀螺仪防抖术语
fov 视场角
drift 零偏
MotionFusion即运动传感器的融合补偿,对陀螺仪、加速度计等运动测量器件的数据
进行预处理,通过标定和补偿,为防抖提供校准后的陀螺仪数据
ratio 系数
gyro 陀螺仪
calibration 校准 标定
DIS( Digital Image Stabilization)数字图像防抖
DIS是对图像进行数字处理的过程,采用防抖算法计算出当前图像的运动偏移,然后根
据计算得到的运动偏移对当前图像进行平移、旋转等变换,从而起到防抖的效果。
IMU( Inertial Measurement Unit)惯性测量单元
IMU是测量物体x、 y、 z三轴姿态角(或角速率)以及加速度的装置,包含了陀螺仪(GYRO)和
加速计(ACC)。
GME算法
GME(Global Motion Estimation)算法是通过提取图像特征,计算当前帧图像和参
考帧图像之间的运动偏移。采用GME算法处理后的图像较稳定,有较好的防抖效
果,但当画面中大面积拍摄物体在移动时,画面也会出现背景拖拽现象。这是因
为GME无法完全区分出画面物体移动还是摄像机移动,从而可能造成误判。另外
在低照度情况下,由于图像的特征模糊, GME算法防抖效果存在下降的可能。
陀螺仪算法
陀螺仪算法是根据陀螺仪产生的数据计算当前帧图像的运动偏移,采用陀螺仪算
法能够较好解决误判和低照度情况下无防抖效果等现象。
crop_ratio
DIS输出图像的裁剪比例。其取值范围为[50, 98]。通常设置为80,即防抖处理后只输
出图像的80%。假设输入图像宽高为1920*1080,设置crop_ratio为80,即裁掉输入图
像左右边缘和上下边缘的各10%,裁剪后的图像宽为( 1920-2192010%) =1536,
高为( 1080-2108010%) =864。
mode
在DIS算法中会使用到自由度( dof, degree of freedom)的概念。
● 从用户角度来看:
自由度的概念就是三维空间, X、 Y、 Z 三个轴,每个轴可以有两种动作:平动、
转动。一共产生6种运动。这也是通常所说的6轴防抖。
● 从算法角度来看:
自由度表示仿射变换的3x3矩阵中使用的算子数目。
不同自由度数目对图像进行仿射变换的操作也不一样。
4_DOF与6_DOF的区别:
● 4_DOF:算法中使用了4个算子,主要是对图像进行平移、旋转和放大操作。相对
于6_DOF,少了2个算子,计算算子越少,也更不容易造成误判,其也能较好的防
住大面积物体移动造成的背景拖拽现象, rollingshutter现象较明显。
● 6_DOF:算法中使用了6个算子,主要是对图像进行平移、旋转、放大、改变图像
宽高比及错切。优点是防抖效果较好,能够对平行四边形进行校正,缺点是容易
引起背景拖拽等异常现象。
motion_level
Camera的运动级别分为: OT_DIS_MOTION_LEVEL_LOW、OT_DIS_MOTION_LEVEL_NORM和OT_DIS_MOTION_LEVEL_HIGH。
● OT_DIS_MOTION_LEVEL_LOW是指低级别运动,镜头小幅度运动。
● OT_DIS_MOTION_LEVEL_NORM是指正常级别运动,镜头正常幅度运动。
● OT_DIS_MOTION_LEVEL_HIGH是指高级别运动,镜头大幅度运动。
通常设置为OT_DIS_MOTION_LEVEL_NORM,请根据实际运动幅度进行调整
pdt_type
防抖支持的产品形态。当前支持三种产品形态,分别是录像机、 DV和无人机。请根据
实际产品形态配置产品类型
camera_steady
镜头是否是固定静止的开关键。该参数只在录像机产品形态才会起作用,在DV和无人
机产品形态下,该参数不起作用,默认设置为TD_FALSE
matrix
旋转矩阵, 3x3的矩阵。该参数在ss_mpi_mfusion_set_gyro_six_side_calibration接口
中设置。用于Gyro sensor坐标系和图像坐标系的方向的转换,算法参考的是图像的坐
标系,陀螺仪的不同安装位置对应坐标系方向不一样,因此需要将陀螺仪坐标系与图
像坐标系方向进行转换。另外在安装陀螺仪时请确保陀螺仪芯片与image sensor位置
保持水平或垂直方向
moving_subject_level
用于判断拍摄物体是否是运动的级别,取值范围为[0, 6],该参数主要是防止背景拖
拽。背景拖拽和和防抖效果两者是相互权衡的。
● 值越小时,运动过程中越稳定,但更容易出现背景拖拽情况;
● 值较大时,运动过程中防抖效果较弱,但是能够较好的改善背景拖拽现象;
rolling_shutter_coef
校正rollingshutter强度的参数,取值范围为[0,1000]。此参数适用于相机一直朝向一
个方向长时运动的场景,如火车上拍摄外景等。对于来回抖动带来的rolling shutter现
象,算法会自适应的检测和做相关的矫正并改善rolling shutter现象,建议配置此参数
为0。
timelag/time_delay
当前帧起始上报中断的时间点 (t_vsync)和当前帧第一行有效图像数据读出(t_readout)
的时间点之间的时间差,单位为us。如果陀螺仪有开启低通滤波(通常建议开启),为
了让陀螺仪和图像数据的时间戳对齐,则需要在timelag上额外加上陀螺仪低通滤波的
延时( t_gyro_lpf_delay,这个值通常会在陀螺仪厂商提供的数据手册中有描述)。
timelag = ( t_vsync– t_readout) + t_gyro_lpf_delay
在正常的Sensor序列配置的情况下, t_vsync与t_readout相差不远,所以此时间参数会
在t_gyro_lpf_delay附近。下图简单的描述了timelag在sensor时序上的位置
hor_limit 和 ver_limit
水平偏移和垂直偏移限制,取值范围[0,1000]。当大面积物体经过引起背景拖拽的水
平偏移超过一定幅度时就不进行防抖。偏移幅度计算: 2047* hor_limit/1000。
该参数需和camera_steady配合使用,该参数只在camera_steady为TD_TRUE时生效。
当camera_steady为TD_FALSE时,默认设置为1000
still_crop
该开关的作用是关闭DIS防抖效果,但图像依旧保持裁剪比例输出。打开该开关后,
DIS输出图像没有防抖效果,但是输出图像的裁剪比例还是跟有防抖效果的输出图像的
裁剪比例一致的。通常该参数设置为TD_FALSE,如有需要时设置该值为TD_TRUE
strength
背景:摄像机在照度偏低时,开启DIS看起来运动物体边缘看起来比关闭DIS抖动更明
显。这是由于照度偏低,且剧烈运动时,快门时间过长,导致运动物体边缘模糊,由
于抖动的周期性,运动是一个大小不同的周期变化,造成运动边缘的模糊程度也是在
周期变化的,运动主体静止(防抖生效)时,边缘的周期变化就比较吸引人的眼球,
加之防抖需要放大图像,使得现象更明显了。
strength是DIS陀螺仪防抖的强度控制,仅对GyroDIS有效,最大强度为1024
large_motion_stable_coef
背景:在大幅度抖动的场景下,如果将防抖开得太强,可能会导致画面裁剪到边但是
还没法满足防抖的需求,从而导致卡顿的现象。
此参数主要是对大幅度的运动进行防抖衰减,从而减少裁剪到边导致的卡顿现象。参
数范围为[0, 100], 设置到100为防抖不衰减的状态,正常情况下防抖效果最好,但是
可能在大幅度抖动下会裁剪到边。将参数调小可以衰减大幅度抖动的防抖,从而在防
抖效果和裁剪到边带来的卡顿现象中间进行权衡,设置到0将牺牲所有防抖效果。默认
参数100。
low_freq_motion_preserve
由于运动DV会进行低频运动估计,在消除高频抖动的同时,保留低频的主动运动。此
参数的目的是对低频运动的保留程度进行调节,调节范围在[0, 100]。设置成100对应
保留全部低频运动;设置成0则完全不保留低频运动,如果抖动范围不超过裁剪比例,
则画面预期静止,但是一旦有相对大的主动运动的积累,将容易裁剪到边,带来卡顿
现象。默认参数10。
low_freq_motion_freq
由于运动DV会进行低频运动估计,在消除高频抖动的同时,保留低频的主动运动。此
参数描述的低频运动的频率。调节范围为[0, 100]。设置成0表示保留最少量的低频频
率,理论上能达到最稳定的效果,但是十分容易导致裁剪切边从而带来卡顿现象。设
置成100表示低频运动的截止频率最高,保留最多的低频分量。默认参数100
在防抖中使用陀螺仪的目的主要是:
使用GyroDIS提升防抖效果
GyroDIS可以根据镜头畸变特性对图像的抖动进行反校正,在存在较大的畸变的时
候仍可以获得更好的防抖效果,对图像局部抖动程度不一致有明显的防抖提升。
● 防止背景拖拽问题
在很多情况下GME算法是无法判断是前景在动还是镜头在动。例如当有大面积物
体在镜头前移动,而镜头是静止的。此时算法可能会发生误判,将前景运动判断
为镜头运动会进行防抖,从而造成背景拖拽现象。陀螺仪可以反映机器自身的运
动状态,增加陀螺仪可以很好的弥补了该缺陷。
● 在低照度或者特征点较少的场景中有防抖效果
在低照度情况下由于图像背景较暗,对于GME算法来说无法提取到特征点,从而
低照度情况下几乎无防抖效果,采用陀螺仪的话上述问题就迎刃而解