尺度模糊性
**尺度模糊性(Scale ambiguity)**是单目 SLAM 的根本性局限:仅凭图像本身,绝对的度量尺度是不可恢复的。以基线 观察距离为 的场景所产生的图像,与以基线 观察距离为 的场景所产生的图像完全相同,对任意正标量 均成立。近距离拍摄的玩偶屋与远距离拍摄的真实房屋,对于单个移动相机而言在几何上是无法区分的。
从数学上讲,单目重建所处的空间是相似变换空间 (旋转 + 平移 + 尺度,共 7 个自由度),而非欧氏空间 :极线约束固定了旋转和平移方向,但平移的模长——以及随之而来的整个地图尺度——是一个自由参数。单目系统只是在初始化时选定一个尺度(例如将第一段基线归一化为 1)。
从数学上看这个问题
考虑世界点 在位姿为 的相机中的投影:
现在将整个世界以及每个相机的平移都按 缩放:,。那么
因为投影意义下的相等忽略了整体因子 。每一个相机中的每一个图像测量都保持不变,因此没有任何光度或几何图像代价能够区分这两种重建——似然函数在尺度方向上恰好是平坦的。这也精确地指出了打破这种对称性所需要的条件:任何带有物理单位、且不会随 一起缩放的测量。加速度计的测量(m/s²)、立体基线(m)、轮式编码器的距离(m)、或深度读数(m),都拒绝按比例缩放,于是这个平坦方向就消失了——这正是下文列出的每一种尺度恢复技术的一句话解释。
同样的推理也解释了为什么这种模糊性恰好是一维的:旋转和平移方向被极线几何所固定,因此在 的 7 个自由度中,图像确定了 6 个相对自由度,只留下 是自由的(此外还有任意的全局规范自由度——世界原点放在哪里——这是每一种 SLAM 表述都存在的)。
比未知的全局尺度更麻烦的是尺度漂移:由于尺度本身不可观测,微小误差会让估计的尺度沿轨迹缓慢漂移,因此一个长的单目回环在返回起点时可能处于不同的尺度。这正是为什么像 ORB-SLAM 这样的单目系统要在 上执行回环检测——回环校正必须同时修正尺度和位姿。
尺度在实践中的恢复方式:
- IMU 融合(VIO):加速度计测量的是度量意义上的加速度,只要有足够的运动,尺度就变得可观测——这正是 VINS-Mono、ORB-SLAM3 惯性模式以及几乎所有手机/头显跟踪器所采用的方法。
- 双目或 RGB-D:已知的基线或直接的深度测量天然地提供了尺度。
- 已知物体尺寸/几何先验:识别出的物体(CubeSLAM)、已知的标记物、相机相对地平面的高度(在自动驾驶场景中常见)。
- 学习得到的深度先验:现代的度量单目深度网络(例如 Metric3D)以及以度量方式训练的 3D 基础模型(例如 MASt3R)能从单张图像预测出近似以米为单位的几何——这为单目流程提供了近似的绝对尺度,是一种学习到的先验而非几何上的保证,但在实践中往往效果不错。
对评估的影响与常见陷阱
由于单目轨迹没有定义好的单位,将其与真值进行评估时需要估计包括尺度的对齐关系:一个 (7 自由度)对齐,通常通过 Umeyama 的闭式方法求解,然后再计算 ATE。阅读评测数据时需要格外小心——一个用 7 自由度对齐评估的单目系统与一个用 6 自由度对齐评估的双目/VIO 系统,实际上是在不同的评判标准下打分,而单次全局尺度校正也无法掩盖尺度漂移,这就是为什么长距离的室外单目序列(KITTI)会如此明显地惩罚纯单目方法。
在被这些坑绊倒之前,值得了解的陷阱:
- 纯旋转没有尺度——甚至根本无法三角化:零基线意味着没有视差;单目初始化在纯旋转运动下会失败或退化,这也是初始化模块要等待足够视差(或单独建模单应性情形)的原因。
- 匀速运动同样会骗过 VIO 的尺度估计:只有在非零加速度下,尺度才能通过加速度计变得可观测;一架匀速巡航的无人机(或一辆定速巡航的汽车)没有提供任何激励,VIO 的尺度可能会一直漂移,直到下一次加速为止。
- 优化中的尺度坍缩:单目 BA 在尺度方向上存在一个平坦方向;如果不进行规范固定(锚定某个位姿对的距离或加入先验),数值漂移可能会在不同的优化运行之间使整张地图收缩或膨胀。
- 合并后的混合尺度地图:合并两个单目子地图(多会话或多机器人场景)需要估计相对的 ,而不是 ——在固定尺度下合并会悄无声息地扭曲其中一张地图去适配另一张。
- 学习得到的度量深度是先验,不是传感器:度量深度网络可能存在系统性偏差(源于不熟悉的焦距或场景类型带来的逐场景偏置);应把它们给出的尺度当作带有较大不确定性的测量,而不是真值。
对SLAM的意义
尺度模糊性决定了系统设计:这正是手机和头显要加装 IMU、汽车要加装双目/激光雷达的根本原因,也是单目论文只在与真值完成尺度对齐后才报告轨迹误差的原因。理解哪些测量能使尺度变得可观测——以及尺度漂移如何腐蚀长轨迹——对于读懂任何单目或视觉惯性 SLAM 论文都是必不可少的。