这篇文章提出了从单张运动模糊图像中估计相机速度的方法,将模糊作为运动的线索而非噪声,此处的运动模糊是曝光时间内多个“虚拟图像”的叠加,其模糊轨迹可视为“虚拟光流”,蕴含了相机运动信息
Metadata
Image as an IMU: Estimating Camera Motion from a Single Motion-Blurred Image
文章来自2025ICCV,作者是Jerred Chen 和Ronald Clark,arxiv地址为
[2503.17358] Image as an IMU: Estimating Camera Motion from a Single Motion-Blurred Image
传统方法的问题
在机器人和VR/AR应用中,相机快速移动会导致严重的运动模糊(motion blur)。这种模糊会破坏传统视觉里程计(VO)和运动恢复结构(SfM)方法所依赖的图像特征匹配,导致这些方法失效
现有解决方案的缺陷:
- 丢弃模糊帧:简单粗暴,但是会丢失宝贵的运动信息。
- 融合IMU:虽然有效,但引入了额外的硬件成本、复杂的传感器同步问题以及IMU固有的漂移误差(drift)
前置知识
图像形成过程:在曝光时间 τ 内,相机不断移动,每个像素累积了来自不同场景点的光线。公式(1)给出了模糊图像 $I_B$ 的积分定义。
离散化近似:在实践中,将曝光时间离散化为 N 个瞬间,每个瞬间对应一个“虚拟图像”$I_{\nu_i}$ 。模糊图像是这些虚拟图像的平均。
核心直觉:一张模糊图像可以被视为由多个“虚拟图像”叠加而成。这些虚拟图像之间的像素对应关系,就编码了相机的运动信息。
虚拟对应关系:假设场景是刚性的,那么从第一个虚拟图像到最后一个虚拟图像 $I_{\nu_1}, \ldots, I_{\nu_N}$ 每个像素的位移就是一个“虚拟光流”。这个光流场直接关联到相机在曝光期间的相对运动。
结合深度:如果再知道场景的深度 D,就可以将2D的像素运动(光流)与3D的相机运动联系起来,从而求解出完整的6DoF相对位姿。
Method
Flow and Depth Prediction (光流与深度预测)
网络架构:采用 SegNeXt 作为共享编码器,两个独立的解码器分别输出光流 F 和深度 D。
光流定义:其中 p1 是第一个虚拟图像中的像素坐标,p2′ 是同一3D点投影到最后一个虚拟图像中的坐标。
损失函数:
对光流和深度分别施加L1损失。
引入重定向函数 hf解决训练歧义。因为无法确定哪个虚拟图像是“开始”,所以标签 F 会被设定为与预测方向 F 更接近的那个真实方向(正向 $F_{fw}$或反向$F_{bw}$确保训练稳定。
Differentiable Velocity Computation (可微分速度计算)
- 理论依据:采用Trucco and Verri的运动场方程,该方程建立了像素运动 (Fx,Fy)、深度 d、焦距 f 和相机6DoF运动 (θx,θy,θz,tx,ty,tz) 之间的数学关系。
线性系统:将运动场方程改写为标准的线性形式 Ax=b(公式8和9)。
- A 矩阵由像素坐标、深度和焦距构成。
- x 是待求解的6个运动参数。
- b 是预测的光流向量。
- 最小二乘求解:对于图像中的所有像素,系统是超定的。使用最小二乘法求解最优解
速度计算:将求得的相对位姿变化除以曝光时间 τ,即可得到瞬时速度 (ω,v)。
端到端训练:由于最小二乘求解是可微分的,可以将最终的速度预测误差(公式11中的 L2)反向传播,实现从输入图像到最终速度的端到端优化。
Direction Disambiguation (方向歧义性解决)
问题根源:运动模糊是时间对称的,无法区分正向和反向运动。
解决方案:
给定连续帧$I_{i-1}$, $I_i$, $I_{i+1}$,其中 $I_i$ 是模糊图像。
将预测的完整光流 $F_ i$ 按时间比例缩放,得到短时间光流 $F_{i’}$,然后用 $F_{i’}$扭曲$l_{i}$得到$l_{i’}$
计算两种可能方向(正向和反向)下的总光度误差 $e_{fw}$ 和 $e_{bw}$(i-1,i,i+1)。
选择误差更小的方向作为最终的运动方向。
数据集构建
合成数据集
模糊合成流程:
- 选取一个真实图像 $I_{i}$ 。
- 使用RIFE插值模型,在 $I_{i}$ 和后续的 N 个真实帧之间生成多个虚拟帧,形成一个序列$I$。
- 将序列 $I$转换到线性空间,取平均,再转回sRGB,得到模糊图像 $I_B$。
真值获取:
深度:使用PromptDA模型,结合第一个虚拟图像 $I_{\nu_1}$ 和ARKit稀疏深度,生成稠密深度图 D。
光流:利用深度图 D,将 $I_{\nu_1}$ 中的所有像素反投影到3D空间,再投影到 $I_{\nu_N}$,计算位移得到真值光流 F。
规模:约12万训练样本,1.2万验证样本
真实数据集
实验设置
为了评估模型的真实性能,作者在4个未见过的真实世界视频序列上进行了测试。评估的核心是相机的瞬时速度,因此需要精确的真值。
对于角速度(ω)的真值,直接采用了设备内置陀螺仪(gyroscope)的测量数据,这是最直接可靠的物理测量。对于线速度(v)的真值,由于没有直接的传感器,作者通过对ARKit系统估计出的相机位姿进行中心有限差分(centered finite-difference)计算来近似得到。
评价指标采用了各轴向的均方根误差(RMSE),单位分别为弧度每秒(rad/s)和米每秒(m/s)。作为对比的基线方法包括COLMAP、MASt3R和DROID-SLAM。由于这些方法本质上是估计多帧间的相对位姿而非瞬时速度,因此同样通过对它们输出的位姿序列进行有限差分来近似其速度估计,从而与本文方法进行公平比较。
一些注意
这篇论文虽然说“from a single motion-blurred image”,但其完整的方法流程(包括方向歧义解决)实际上隐含地假设了存在一个连续的视频流或至少能获取邻近帧。
例如系统正在实时接收视频帧。当检测到某一帧 ${I}_{i}$ 模糊时,它可以利用刚刚过去的 ${I}_{i-1}$ 和即将到来的 ${I}_{i+1}$来解决方向问题。