解锁 6-DoF 运动: 事件相机如何在没有 IMU 的情况下感知旋转和平移

想象一下,尝试高速驾驶无人机穿过茂密的森林。标准相机通过拍摄快照工作——咔嚓,咔嚓,咔嚓。如果你在两次快门之间移动得太快,世界就会变得模糊,或者你完全错过了障碍物。

此时, 事件相机 (Event Camera) 登场了。它不像标准相机那样拍摄快照,而是模仿生物眼。它的像素独立工作,一旦检测到亮度变化就会发射信号 (一个“事件”) 。这产生了一个具有微秒级延迟、零运动模糊和高动态范围的连续数据流。

然而,利用这些数据来弄清楚相机本身是如何移动的 (即自我运动估计,egomotion estimation) 在数学上是非常困难的。直到最近,研究人员通常通过将相机与惯性测量单元 (IMU) 搭配使用来“作弊”,由 IMU 处理运动的旋转部分,留给相机只解决平移 (线速度) 问题。

在论文**“Full-DoF Egomotion Estimation for Event Cameras Using Geometric Solvers” (使用几何求解器进行事件相机的全自由度自我运动估计)** 中,研究人员提出了一项突破。他们引入了一种几何框架,可以纯粹从事件数据中恢复全自由度 (Full-DoF) ——包括旋转和平移——而不需要 IMU。

在这篇文章中,我们将拆解“事件流形 (event manifolds) ”的复杂几何结构,探索现实世界中的直线如何转化为数学约束,并了解我们如何优化这些约束来精确定位相机的速度。


核心问题: 分离旋转与滑动

当相机在静态场景中移动时,图像平面上物体的运动取决于两件事:

  1. 线速度 (Linear Velocity, \(\mathbf{v}\)) : 相机在 \(x, y, z\) 方向上平移 (滑动) 的速度有多快。
  2. 角速度 (Angular Velocity, \(\boldsymbol{\omega}\)) : 相机绕 \(x, y, z\) 轴旋转 (自旋) 的速度有多快。

对于标准相机,我们通过在帧之间匹配特征点来解决这个问题。对于事件相机,我们没有帧;我们只有一个异步的点流 \((x, y, t, p)\)。

以前针对事件相机的“稀疏几何求解器”做了一个简化的假设: 假设我们知道旋转 (感谢 IMU) 。 如果你移除了旋转,数学问题就变成了线性的,这很容易解决。但是如果你尝试同时求解 \(\mathbf{v}\) 和 \(\boldsymbol{\omega}\),问题就变成了非线性的,并且难得多。方程变得混乱,且存在“旋转-平移模糊性” (rotation-translation ambiguity,即将旋转误认为是平移) 的风险。

本文的作者通过利用直线的几何特性正面解决了这个问题。现实世界中的直线非常丰富 (桌子边缘、建筑物、窗户) ,并且随着相机的移动,它们在事件流中产生了非常特定的模式。


方法 1: 关联关系 (原始事件的几何)

提出的第一种方法使用关联关系 (Incidence Relation) 。 这是基于“eventail” (事件扇面或事件流形) 的概念。

让我们假设一个很短的时间窗口,其中相机的速度是恒定的。如果你观察空间中的一条 3D 直线,由该直线生成的每个事件在几何上都必须在空间和时间上与那条 3D 直线“相交”。

设定

请看下面的 图 1 。 浅蓝色的线 \(\mathbf{L}\) 是 3D 世界中实际的静态直线。

  • 相机中心正在移动 (由 \(t_j\) 时刻的 \(\mathbf{C}_j\) 表示) 。
  • 一个事件 \(e_j\) 在图像平面上发生。
  • 这产生了一个“方位向量 (bearing vector) ” \(\mathbf{f}'_j\) (从相机指向事件的方向) 。

图 1. 观测到的直线 L 与第 j 个事件的直线 L_j^e 之间的关联关系。直线 L_j^e 与方位向量 f_j’ 一致。向量 v 表示平移 v 在由向量 e_2^l 和 e_3^l 张成的平面上的投影,该平面由点状图案填充。由于孔径问题,只有 u_y^l 和 u_z^l 分量是可观测的。

几何约束很简单: 从相机发出并穿过事件的射线 (橙色的 \(\mathbf{L}_j^e\)) 必须触碰到真实的 3D 直线 \(\mathbf{L}\)。

数学约束

为了将这种几何直觉转化为数学,我们需要考虑相机的运动。相机旋转 \(\mathbf{R}_j\) 并平移 \(t_j \mathbf{v}\)。

论文推导出了一个特定的约束方程。如果我们定义一个附着在直线上的局部坐标系,我们可以表达事件方位向量、相机平移和直线参数之间的关系:

Equation 5

在这里,\(\mathbf{f}_j'\) 是方位向量,括号中的项涉及线速度分量 (\(u\)) 和直线的方向基向量 (\(\mathbf{e}\))。

这个方程的美妙之处在于,如果我们堆叠足够多的事件 (至少 8 个) ,我们可以形成一个方程组。如果我们将这些排列成一个依赖于我们未知旋转的矩阵 \(\mathbf{A}(\boldsymbol{\omega})\) 和一个包含平移及结构未知数的向量 \(\mathbf{x}\),我们得到:

Equation 6

求解旋转

方程 \(\mathbf{A}(\boldsymbol{\omega})\mathbf{x} = \mathbf{0}\) 意味着矩阵 \(\mathbf{A}(\boldsymbol{\omega})\) 必须是秩亏的 (rank-deficient) 。为了找到正确的角速度 \(\boldsymbol{\omega}\),我们要使这个矩阵尽可能地“接近”奇异矩阵。

在数学上,我们定义一个代价矩阵 \(\mathbf{M}(\boldsymbol{\omega})\):

Equation 7

然后我们搜索角速度 \(\boldsymbol{\omega}^*\),以最小化该矩阵的最小特征值 (\(\lambda_{\min}\)) :

Equation 8

简单来说: 我们调整旋转参数,直到几何约束 (关联关系) 被尽可能完美地满足。


方法 2: 共面关系 (法向流的几何)

作者提出了第二种替代方法。该方法不使用原始事件位置,而是使用法向流 (Normal Flow)

在事件视觉中,“法向流”描述了边缘垂直于自身的运动。如果你想象一条直线在屏幕上移动,你可以很容易地看出它横向移动的速度,但无法看出它沿自身长度滑动的速度。这种垂直运动就是法向流。

几何结构

考虑 图 2 。 它展示了事件如何生成一个平面。

  • 对于一个事件 \(e_j\),我们可以计算一个平面法向量 \(\mathbf{n}_j\)。
  • 这个向量源自事件的位置及其法向流 \(\mathbf{g}_j\)。

图 2. 平面法向量之间的共面关系。平面法向量 n_j 可以从事件 e_j 及其法向流 g_j 计算得出。图像平面中的直线方向向量 h_j 与图像平面内的 g_j 垂直。直线 L 正交于平面法向量集合 {n’_j}。

这里的关键洞察是: 由同一条移动的 3D 直线生成的所有平面法线,必须垂直于该 3D 直线的方向。

如果 \(\mathbf{d}\) 是 3D 直线的方向,而 \(\mathbf{n}'_j\) 是法向量 (经过相机旋转校正后) ,那么它们的点积必须为零。这这就产生了一个共面关系 (Coplanarity Relation)

数学约束

我们将所有法向量堆叠成一个矩阵 \(\mathbf{B}\)。约束条件声明直线方向 \(\mathbf{d}\) 与 \(\mathbf{B}\) 的所有行正交:

Equation 12

与关联方法类似,这允许我们将旋转与平移解耦。我们基于旋转校正后的法线构建一个矩阵 \(\mathbf{N}\):

Equation 14

同样,我们优化角速度 \(\boldsymbol{\omega}\) 以最小化该矩阵的最小特征值。

为什么要用两种方法?

  • 关联法 (方法 1) 使用原始事件。它是基础的,但会导致更大的优化问题 (6x6 矩阵) 。
  • 共面法 (方法 2) 使用法向流。它导致更小、更高效的问题 (3x3 矩阵) ,但依赖于流估计的质量。

“先有鸡还是先有蛋”的优化问题

我们有一个问题。为了检查旋转是否正确,我们需要构建这些矩阵 (\(\mathbf{A}\) 或 \(\mathbf{B}\)) 。但构建这些矩阵需要使用…我们试图寻找的那个旋转来旋转事件向量!

为了解决这个非线性优化循环,作者使用了 Adam 优化器 , 这是一种在深度学习中流行的算法,但在这里被应用于几何问题。

“级联”策略

计算精确的旋转矩阵 \(\mathbf{R} = \exp([t\boldsymbol{\omega}]_\times)\) 在计算上是昂贵的,因为它涉及三角函数和矩阵指数。为了加速这一过程,作者使用了一阶近似 (First-Order Approximation)

对于短时间间隔 (事件相机天生具有此特性) ,旋转角度非常微小。我们可以将旋转矩阵近似为:

Equation 20

这种线性近似使数学运算快得多。研究人员提出了一种级联 (Cascade) 方法:

  1. 初始化: 从零旋转开始。
  2. 粗略通过: 使用一阶近似运行优化器。这很快,能让我们接近解。
  3. 微调: 使用步骤 2 的结果作为精确旋转求解器的起点,以获得高精度。

实验与结果

它真的有效吗?研究人员在合成仿真和真实世界数据集上测试了求解器。

对噪声的鲁棒性

事件相机是有噪声的。时间戳会抖动,像素有时会随机触发。下面的 图 3 显示了当我们添加噪声或改变数据量时,角速度误差 (\(\varepsilon_{ang}\)) 和线速度误差 (\(\varepsilon_{lin}\)) 是如何变化的。

图 3. 合成数据上的结果展示了误差与各种因素之间的关系,例如事件数量、直线数量和噪声水平。

  • 图表 (a) & (b): 随着事件数量增加 (x 轴) ,误差 (y 轴) 迅速下降。
  • 图表 (e) - (h): 随着噪声增加,误差增加,但该方法保持稳定。
  • 洞察: 关联法 (蓝色) 通常在低噪声情况下处理得稍好,而共面法 (红色) 也具有竞争力。

多条直线的重要性

你不能只用场景中的一条直线来解决这个问题。单条直线会产生“旋转-平移模糊性”——你无法分辨你是平行于直线移动还是绕着它旋转。

图 4 可视化了代价函数 (我们试图最小化的值) 的“地形”。

图 4. 目标函数 lambda_min 的地形图。每条直线的事件数设置为 N = 100。为了更好的可视化,目标的伪彩色和色图使用了对数刻度。

看列 (a) “IncMin with 1 line”。深蓝色区域 (极小值) 是一个长长的山谷。没有单一的明确点;许多不同的速度看起来都是“正确的”。 现在看列 (c) 和 (e),其中使用了 2 或 3 条直线。山谷变成了一个碗。有一个清晰、单一的全局极小值。这证明了观测至少 2 条不平行的直线对于全自由度 (Full-DoF) 估计至关重要。

真实世界表现

作者将他们的方法应用于 VECtor 数据集。首先,他们从事件流中提取直线。

图 5. 从 VECtor 数据集的 desk-normal 序列中提取直线簇。(a) 通过累积事件生成的事件帧,其中红点和蓝点表示极性相反的事件。(b) 对应的图像。(c) 线段检测结果。(d) 通过关联线段附近的事件提取直线簇。

使用这些簇,他们估计了速度。

表 2. 真实世界实验结果。我们报告了 epsilon_ang 和 epsilon_lin 的中位误差。

表 2 中的结果表明,该方法在真实数据上有效,角速度误差约为 0.2,线性方向误差约为 20 度。虽然与带有 IMU 的系统相比这看起来可能较高,但请记住: 这是用困难模式完成的——使用视觉。 它证明了该概念在 IMU 可能失效或不可用的场景中是可行的。


结论

这篇论文标志着基于事件的视觉向前迈出了重要一步。通过对事件扇面 (eventail) (移动直线的时空曲面) 进行数学建模,作者创建了首个能够恢复全自由度 (Full-DoF) 自我运动而无需惯性传感器的稀疏几何求解器。

关键要点:

  1. 几何胜过假设: 我们不需要假设旋转是已知的;我们可以使用关联或共面约束来求解它。
  2. 直线是强大的: 简单的直线提供了足够的几何约束来将旋转与平移解耦。
  3. 优化很关键: 使用近似后精确的级联优化使得该问题可以实时求解。

这项工作为完全自主的基于事件的导航系统奠定了基础,这些系统更轻便、更简单,并且更接近生物视觉的实际工作方式。