Digital Video Stabilization and Rolling Shutter Correction using Gyroscope 论文笔记

Digital Video Stabilization and Rolling Shutter Correction using Gyroscope 论文笔记

@(sinbad)[360sinbad@gmail.com]

基于陀螺仪电子防抖简介

手机或运动相机由于其轻巧,手持拍摄视频会产生剧烈的相机抖动;另外目前手机相机大多属于卷帘门式相机,即每行扫描采用不同时间曝光,随之带来类似果冻效果。基于陀螺仪的电子防抖是当前主流的视频防抖方案,避免了之前纯视觉方案对场景特征点要求高、计算复杂度高的缺点,非常适合于自带陀螺仪和相机的手机平台。


大致画下论文流程图

image

一、了解原理

1.1 相机模型

image
针孔相机模型如上图所示,世界坐标系中一点X映射到图像坐标系中的点x关系为:
(x=KX), and (X=lambda K^{-1}x)
其中,(lambda)指尺度因子,(K)为相机内参矩阵
为简化模型,作者假设像素为方形且不考虑光学畸变,设置内参矩阵上对角都为1。
(K^{-1}=egin{bmatrix} 1 & 0 & -o_{x} \ 0 & 1 & -o_{y} \ 0 & 0 & fend{bmatrix})

1.2 相机运动

假设世界坐标和相机坐标重合(实际上大多情况不会发生,会有一个(T)的旋转),相机运动描述成t时刻自身的旋转(R_{t}),对于任意场景下的点(X),对应到(t)时刻图像上的点(x)
(x=KR(t)X.)
旋转矩阵(R(t))由相机变化角度(Delta heta(t))计算得出。采用SLERP(球面插值)获得平滑的相机方向,同时避免万向锁(但作者认为,实际上陀螺仪角度间采样足够小因此欧拉角处理跟旋转四元数效果一样)。读取陀螺仪轴角加速度(omega(t))数值获得旋转角度:
(Delta heta(t)=(omega(t+t_{d})+omega_{d})* Delta t )
(omega_{d})为陀螺仪的温漂,(t_{d})陀螺仪与帧间采样时间撮延时,这两个数值都需要通过标定得到。

1.3 卷帘快门补偿

卷帘快门相机是一种曝光策略,相机是一行一行的曝光形成全幅图像,曝光时相机旋转会影响到图像映射(卷帘快门在平移性抖动时不会严重影响图像映射,因为目标距离镜头很远)。如相机两边摇摆效果如下图。
image
这时每帧图像上的点映射关系依赖扫描到该点的时间
(t(i,y)=t_{i}+t_{s}* y/h) 其中 (x=(x,y,1)^{T})(t_{s})是扫描开始到最后一行所用的时长,该值为负值时表示扫描由下往上方式。这也是个需要标定的参数。

1.4 图像映射

对于两个不同旋转方向的相机来看同一个点的关系如下图。
image
两帧图像平面投影
(x_{i}=KR(t(i,y_{i}))X , and x_{j}=KR(t(j,y_{j}))X.)
联立两式即可得到两帧间点的映射关系:
(x_{j}=KR(t(j,y_{j}))R^{T}(t(i,y_{i}))K^{-1}x_{i})
因此,对于两帧间的每一点我们都可以求得对应映射关系,但这样计算量太大,为简化计算,将图像分成多个网格,每个网格对应一个映射关系式,这样计算量得到降低,另外有作者验证,当图像网格颗粒度达到10个等分以上时,artifacts最小。

二、理论验证

验证基于陀螺仪稳像的方式还是跟视觉方法配准结果对比,依次计算帧间的平移跟角度比较是否一致。作者假设:如果序列帧间的旋转角度小时,旋转带来的平移可以近似如下。
(dot{x}(t)approx f* hat{omega(t+t_{d})})
即x、y方向的平移是近似当前帧旋转角速度与焦距的乘积(如果是已经gyro与frame时间对齐,即gyro变为30Hz,也可以直接用旋转角度),而且这个理论也是作者标定参数的基础:两条曲线尽量重合一致。

三、落地问题总结

目前项目还进行中,初步归纳下

1、带OIS的处理方法,原本对于带OIS的防抖,是应该去除OIS的补偿,但试了多次依然抖动厉害,怀疑OIS读取的数据是相对零态的,不是相对上一帧的平移变化。


论文相应代码链接:
https://github.com/alexgo1/Video-Stabilization

原文地址:https://www.cnblogs.com/sinbad360/p/15017607.html