0%

基于IMU传感器的视频稳定混合运动估计

原论文: < A Hybrid Motion Estimation for Video Stabilization Based on an IMU Sensor >

Abstract

在本文中,我们提出了一种混合方法来估计运动并通过切换函数稳定视频,该方法在 Kanade-Lucus-Tomasi (KLT) 跟踪器和 IMU 辅助运动估计器之间切换估计的运动。为了实现这一点,由于 KLT 跟踪器在较大运动期间的性能不佳,我们使用 KLT 跟踪器来校正低旋转的运动,并使用 IMU 辅助运动估计器来校正高旋转,此外,卡尔曼滤波器用于去除不需要的运动,从而平滑轨迹。

Introduction

在相机市场,光学图像稳定(OIS)系统安装在相机镜头或图像传感器上,价格相当昂贵[3]。另一方面,数字稳定系统通过在相机移动时补偿捕获图像的移动来处理图像,它可以分为三个步骤,即运动估计、运动平滑和图像扭曲[4,5]。

数字视频稳定中运动估计的常用技术是分别使用块匹配 [9]、KLT (Kanade-Lucus-Tomasi) 跟踪器 [10,11]、SIFT [12] 和 SURF [13]。最近,Dong et al. [14] and Lim等人 [15] 使用 KLT 跟踪器以高帧率和低计算成本实时估计运动, KLT 跟踪器通过 Good Feature to Track 检测特征点,并使用 Lucas-Kanade 方法估计连续帧的光流。该跟踪器在评估小运动中的运动方面取得了成功,但在局部运动和全局运动发生显着变化时失败[15],然而,可以通过使用 IMU(惯性测量单元)数据来估计大运动。

我们提出了一种混合函数来切换运动估计算法,以确定两个连续帧之间的转换。 在低运动的情况下,我们应用 KLT 跟踪器来计算两个连续帧上运动物体的光流。 然而,在快速旋转的情况下,来自 IMU 传感器的旋转数据用于通过计算来自预定义运动点和参考点的运动来估计运动。

Related Work

Karpenko 等人 [3]仅使用陀螺仪数据创建滚动快门以实现视频稳定。此外,一些研究分别包括 IMU 数据和特征跟踪,例如 Ryu 等人 [26] 提出了通过将旋转运动纳入 KLT 跟踪的运动估计,它使用来自 IMU 的位置来预测下一帧,从而证明速度和准确性。

Proposed Framework

本文的挑战是如何估计连续帧在移动相机上的运动,例如,由于相机旋转引起的大旋转和基于场景中运动物体的局部运动。 根据我们的目标,我们应用了一种混合方法来近似确定估计移动相机运动的方法,如图 1 中的流程图所示。

为了使用混合方法估计运动,我们采用由IMU传感器 \(w^{imu}\) 测量和相机\(w^{cam}\)的旋转速度来确定估计方法。 但是,这两个设备是不同的位置,因此我们需要将\(w^{imu}\)转换为具有相对方向 \(R^{ci}\)\(w^{cam}\)。 因此,相机的旋转速度定义为:

\[ w^{cam}(t+t_{off}) = R^{ci}(w^{imu}(t) + b^{imu}) \tag1 \]

其中 \(b^{imu}\) 是陀螺仪偏置,\(t_{off}\) 表示来自IMU的时间戳与Cam时间戳的时间偏移。相机和IMU传感器校准如下:

  • 使用OpenCV(开源计算机视觉)中的相机校准模块校准相机以找出焦距(f)
  • 校准陀螺仪以防止陀螺仪漂移问题与偏置偏移。我们可以通过测量陀螺仪长时间静止时的输出信号来评估偏置偏移,并通过卡尔曼滤波器降低噪声
  • 使用 Li 和 Ren [16] 提出的陀螺仪数据和光流之间的关系估计 \(R^{ci}\),使用 CC+LS13 方法
  • 确定陀螺仪和相机输入之间的 \(t_{off}\) 时间偏差。然后,我们可以正确估计\(w^{cam}\)

Motion Estimation

为了挑战每个环境中的运动估计,我们开发了一种可靠且有效的方法,用于通过混合算法切换算法,以计算连续帧的运动流。 该方法分为两个功能,其中包括 KLT 跟踪器和 IMU 辅助运动估计器。

A KLT Tracker

如果 \(w^{cam}\) z的绝对值小于 0.5 rad/s,则刚性变换由相应的特征点集估计。 我们使用 Good Feature to Track,这是一种实时计算光流的高效检测器。特征点由 Harris 角点检测器检测,该检测器使用强度差异对 (u, v) 在所有方向上的位移,定义如下:

\[ \varepsilon (u,v) = \sum_{x,y}^{} w(x,y)[I(x+u,y+v) - I(x,y)]^2 \\ \approx \begin{bmatrix} u & v\end{bmatrix} M \begin{bmatrix} u\\ v \end{bmatrix} \tag2 \]

其中 \(I(x, y)\) 表示来自参考图像的图像像素,而 \(I(x + u, y + v)\) 是下一张图像的图像像素。 \(w(x, y)\) 是一个高斯函数,它为周围的像素分配权重,\(M\) 是从特征点的指定邻域中函数的梯度导出的汇总矩阵。此外,由 Shi-Tomasi [29] 修改的 Harris 角点检测器得分函数是:

\[ R = min(\lambda _1,\lambda _2) \tag3 \]

其中 \(\lambda _1\)\(\lambda _2\) 是M的特征值。 R的结果可以分为三种情况:

  1. 如果\(\lambda _1\)\(\lambda _2\)都小,这意味着 R 也小,则该区域是平坦的;
  2. 如果\(\lambda _1\)大于\(\lambda _2\),则R为负,则该区域为边;
  3. 如果\(\lambda _1\)\(\lambda _2\)都大,则R大,区域为corner。

这种改进后的方法被称为 Good Feature to Track。

然而,为了实时运行算法,特征点和它们的匹配在计算时间内必须在两个连续的帧内。我们对拼接全景图进行了实验,以确认一定数量的特征点的效率,这对于单应矩阵来说是足够的。 图 2a 显示了拼接前的原始图像,图 2b、c 分别说明了使用 200 个特征点和 2000 个特征点的全景图像。 这些图像是相似的,但大特征点过度计算了拼接图像。因此,我们提出的方法使用少于 200 个特征点来允许对运动变换的合理估计。

两个连续帧之间的特征点匹配需要快速逼近,因此,我们使用光流来匹配检测到的角点。光流是图像对象在连续帧之间由于物体或相机的运动而产生的明显运动的模式。它表示角点在 dt 时间后从前一帧 \(I(x, y, t)\) 移动到当前帧时 2D 矢量场 \((dx, dy)\) 的位移。 光流假设亮度不变,则给出以下等式:

\[ I(x,y,t) = I(x+d_x, y+d_y, t+d_t) \tag4 \]

等式(4)可以通过去除公共项并在右手边采取泰勒级数近似后除以dt 以简单的形式表述。 我们获得了图像梯度 \(f_x\)\(f_y\) 以及沿时间 \(f_t\) 的梯度以编写以下等式:

\[ f_xu + f_yv + f_t = 0 \tag5 \]

\[ f_x = \frac{\partial f}{\partial x}; f_y = \frac{\partial f}{\partial y}; u = \frac{d_x}{d_t}; v = \frac{d_y}{d_t} \tag6 \]

然而,式(5) 在一个方程中有两个未知数 (u, v)。 一些研究人员提出了解决这个问题的方法,但我们使用了 Lucas-Kanade 方法,这是估计光流的标准方法。 Lucas-Kanade 通过在拐角点周围取 3 × 3 块的相邻像素解决了这个问题,假设所有 9 个点都具有相同的运动。 然后,可以使用最小二乘拟合方法求解具有正确方程的两个未知数,其定义如下:

\[ \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} \sum_{i}^{}f_{x_i}^2 & \sum_{i}^{}f_{x_i}f_{y_i} \\ \sum_{i}^{}f_{x_i}f_{y_i} & \sum_{i}^{}f_{y_i}^2 \end{bmatrix}^{-1} \begin{bmatrix} -\sum_{i}^{}f_{x_i}f_{t_i} \\ -\sum_{i}^{}f_{y_i}f_{t_i} \end{bmatrix} \tag7 \]

例如,图 3a、b 分别显示了在正常运动和快速运动期间来自 KLT 特征跟踪器的光流。 后一种运动情况是无序的,导致对单应矩阵的估计效率低下。在大运动期间,KLT 特征跟踪器确实失败了。因此,我们在大运动的情况下使用 IMU 辅助的运动估计器方法来减少任何运动矢量误差。

总之,KLT 跟踪器已经根据前一帧中的特征点和当前帧中移动到新位置的特征点创建了运动向量。 这两组来自 KLT 跟踪器的特征点用于估计刚性变换的单应矩阵以稳定图像帧。

An IMU-Aided Motion Estimator

\(w_{𝑧}^{𝑐𝑎𝑚}\) 的绝对值大于 0.5 rad/s 的情况下,IMU 传感器将估计运动。 首先,我们需要在第一张图像\(I_0(x_{ij}, y_{ij})\)上创建参考点的集合为如图 4 所示,由 \((i, j)\) 的对称分布点组成。 \((i, j)\) 的大小由 $(2e + 1) x(2f + 1), e , f = 1, 2, ..., n $计算,其中 e 和 f 应在5到30之间,以准确地近似运动 分别在 x 和 y 方向上的计算负载。

\(I_0(x_{ij}, y_{ij})\) 的所有参考点都位于图像中心 \((x0, y0)\) 的周围,由以下等式确定:

\[ \left\{\begin{matrix} x_{ij} = x_0 - \frac{x_{sp}(2e-1)}{2} + ix_{sp} \\ y_{ij} = y_0 - \frac{y_{sp}(2f-1)}{2} + jy_{sp} \end{matrix}\right. \tag8 \]

其中 \(x_{sp}\)\(y_{sp}\) 分别是 x 和 y 方向参考点之间的像素空间。下一帧上的运动点\(I_{imu}(p, q)\)可以从 (1)中 z 轴上的 \(w_{cam}\) 计算得出:

\[ \left\{\begin{matrix} p = (x_{ij} - \frac{H}{2} ) \cos \varphi + (y_{ij} - \frac{W}{2} ) \sin \varphi + \frac{H}{2} \\ Q = (x_{ij} - \frac{H}{2} ) \sin \varphi + (y_{ij} - \frac{W}{2} ) \cos \varphi + \frac{W}{2} \end{matrix}\right. \tag9 \]

其中 j 等于\(w_{z}^{cam}\) 除以输入视频的帧率,H 和 W 分别是图像的高度和宽度。然而,Li和Ren [16] 进行了z轴旋转运动具有抵消作用的运动点,表示如下:

\[ \varphi =\left\{\begin{matrix} -\frac{8}{F_{fps}}, w_{z}^{cam} < -6 \\ -\frac{4}{F_{fps}}, -6 \le w_{z}^{cam}\le -2\\ 0, 0.5 \le \left | w_{z}^{cam} \right | \le 2 \\ \frac{4}{F_{fps}}, 2 \le w_{z}^{cam}\le 6 \\ \frac{8}{F_{fps}}, w_{z}^{cam} > 6 \end{matrix}\right. \tag{10} \]

  1. 和 (10) 可以由来自 IMU 传感器的运动矢量合成。运动矢量的方向和大小取决于测量的旋转。 图 5 显示了从一组具有不同 φ 值的点计算的运动矢量,对于图 5a 中的低旋转速率,运动矢量在方向和大小方面相似。另外,快速旋转中运动矢量在不同的方向和大小上是有序的,如图5b,c

来自 IMU 传感器的一组参考点和新位置点被应用于估计刚性变换的单应性矩阵。两种方法的运动流比较运动矢量如图6所示,KLT跟踪器的光流为快速运动矢量如图6所示,同时组织从 IMU 数据估计运动。

上一步中参考图像(S0)和当前图像(Sn)的近似设定点用于定义运动模型。运动估计通过找到 2 × 2 矩阵 A 和 2 × 1 向量 t 来近似这些设定点之间的仿射变换 [A|t],其公式如下所示: \[ [A^*|t^*] = arg min\sum_{i}^{} \begin{Vmatrix} S_0[i] - AS_n[i]^T - t \end{Vmatrix}^2 \tag{11} \]

为了求解(11)中的 \([A|t]\),匹配对最少需要三对才能生成仿射变换。 因此,运动估计被发现为仿射变换,应用于 \(I(x, y)\)以映射变形图像\(I_{warp}(x', y')\)\[ \begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix} = \begin{bmatrix} S \cos \theta & -S \sin \theta & t_x\\ S \sin \theta & S \cos \theta & t_y\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} \tag{12} \]

自由度 (12) 包括标度 (S)、旋转角度 (q) 以及 x 轴和 y 轴上的平移\(t_x\)\(t_y\)。 因此,式(12)中的总自由度为4,称为相似变换。 然而,在本文中,我们使用刚性变换来扭曲稳定的框架,使尺度等于 1,以减少用于计算尺度向量的存储区域

Motion Smoothing and Image Warping

为了从估计的运动中去除噪声,我们使用卡尔曼滤波器来减少噪声并获得平滑的运动 [30]。 卡尔曼滤波器通过使用前一个状态 [31] 来近似下一个状态,这适合连续帧的动态系统。\(x_k\)的预测状态由下式给出:

\[ x_k = F_{x_{k-1}} + B_{u_k} + w_k \tag{13} \] 其中 F 矩阵是前一状态 \(x_{k−1}\) 中的状态转移模型,B 矩阵是控制输入模型,\(u_k\)是控制向量,\(w_k\)是高斯分布中的过程噪声。 系统状态\(x_k\)在时间k的状态\(z_k\)由下式给出: \[ z_k = H_kx_k + v_k \tag{14} \]

其中 \(H_k\)\(v_k\)分别是观测矩阵和观测噪声。 来自卡尔曼滤波器的过滤运动以平滑的轨迹扭曲了稳定的框架。 因此,刚性变换的校正可以发现为: \[ \begin{bmatrix} x_{sta} \\ y_{sta} \\ 1 \end{bmatrix} = \begin{bmatrix} \cos (\theta - \hat{\theta} ) & -\sin (\theta - \hat{\theta} ) & t_x - \hat{t_x}\\ \sin (\theta - \hat{\theta} ) & \cos (\theta - \hat{\theta} ) & t_y - \hat{t_y}\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} \tag{15} \] 其中 \((\hat{\theta},\hat{t_x},\hat{t_y})\)是来自卡尔曼滤波器的滤波后的运动。 稳定的视频是用这种校正运动和平滑轨迹创建的。

Experimental Results and Discussion

假设IMU和Camera之间的延迟是常数 [32]。它可以通过应用围绕 z 轴移动相机以测量 \(w_z^{cam}\) 所需的小正弦信号来识别偏移时间。然后,对光流和陀螺数据的平均幅度进行比较,如图9所示,光流是用图像插值算法[33]估计的,陀螺数据由等式(1)计算。 来自光流和陀螺仪数据的存档数据包含相同的相位,因此由\(t_{off}\) 表示的两个测量数据之间的最大相位滞后等于 -0.035 s,

我们提出的方法与独立的 KTL 跟踪器和 IMU 辅助运动估计器进行了比较。 为了合理的评估稳定视频的性能,我们使用帧间变换保真度(ITF)[34]通过总结峰值信噪比(PSNR)以单个值表示稳定视频的质量 ,由下式给出:

\[ ITF = \frac{1}{N_{max}-1} \sum_{k=1}^{N_{max}-1} PSNR \tag{16} \]

其中\(N_{max}\)是帧数,PSNR用于执行稳定方法的有效性,其定义为:

\[ PSNR(I_n, I_{n+1}) = 10log\frac{I_{max}^2}{MSE(I_n,I_{i+1})} \tag{17} \]

其中\(I_max\)是视频帧的最大像素强度,MSE是连续两个帧之间的均方误差,\(I_n\)\(I_{n+1}\),在稳定视频中连续帧的每个像素中计算,可以定义为:

\[ MSE(I_n,I_{i+1}) = \frac{1}{MN}\sum_{j=1}^{N}\sum_{i=1}^{M}(I_n(i,j) - I_{n+1}(i,j))^2 \tag{18} \]

其中 N 和 M 是视频尺寸。 ITF和PSNR的高代表稳定视频的质量。