3. 视觉里程计概述

视觉里程计(Visual Odometry,VO)是指利用单个或多个相机在连续运动过程中拍摄的图像序列,通过提取、匹配图像特征或直接比较像素亮度,估计相机在相邻时刻之间的位姿变化,并逐步累积形成运动轨迹的技术。它的核心思想可以概括为:用图像中的几何与光度信息,反推相机自身的运动。与依赖卫星信号的GNSS不同,视觉里程计完全依靠机载相机,因此在室内、峡谷、城市楼宇间等GNSS拒止环境中具有不可替代的价值。

一句话理解:视觉里程计回答的是“我从上一帧到这一帧移动了多少、转向了多少”,它只关心局部相对运动,不负责全局一致的地图构建。

一、核心原理与基本流程

无论采用特征点法还是直接法,视觉里程计的基本流程都包含以下几个环节:

  1. 图像获取与预处理:相机以固定频率采集图像,进行去畸变、灰度化、直方图均衡等操作。
  2. 特征提取与匹配:特征点法提取FAST、ORB、SIFT等角点,通过描述子进行帧间匹配;直接法则跳过描述子,直接利用像素梯度。
  3. 运动估计:根据匹配关系求解本质矩阵、单应矩阵或PnP问题,得到相机位姿变换。
  4. 尺度与优化:单目存在尺度不确定性,双目或RGB-D可直接恢复真实尺度;随后通过光束法平差(BA)或滑动窗口优化抑制漂移。
  5. 位姿累积:将相邻帧的相对位姿连乘,得到相对于起始点的运动轨迹。

下面这张图展示了视觉里程计从图像输入到轨迹输出的信号链与模块关系,同时标出了它与SLAM、VIO之间的边界。

视觉里程计信号链与SLAM/VIO关系示意 相机图像序列 单目 / 双目 / RGB-D 预处理 去畸变·灰度·均衡 特征提取 / 光度 ORB·FAST·直接法 帧间匹配 描述子·光流·极线 运动估计 E·H·PnP·ICP 局部优化 BA·滑动窗口 相对位姿 R, t 累积 运动轨迹 局部一致 SLAM 扩展层(VO 是其前端) 回环检测 · 全局位姿图优化 · 地图构建与重定位 VIO = VO + IMU预积分/紧耦合,提升尺度、鲁棒性与高频输出 图例 几何/位姿 优化/处理 特征/输出

二、发展历程:从火星车到无人机

视觉里程计并非新概念。早在20世纪80年代,NASA火星探测任务就推动了基于立体视觉的里程计研究,用于在无GPS的火星表面估计漫游车位移。2004年,Nister等人发表了具有里程碑意义的论文,首次系统提出基于单目和双目图像序列的实时视觉里程计框架,并引入五点法求解本质矩阵,使VO真正走向工程可用。

此后,VO沿着两条主线演进:一条是特征点法,以PTAM、ORB-SLAM为代表,强调几何可解释性与地图复用;另一条是直接法,以LSD-SLAM、DSO、SVO为代表,直接利用像素梯度,在弱纹理场景中表现更优。2015年后,随着IMU成本下降和算力提升,VIO成为主流,VINS-Mono、OKVIS、MSCKF等方案在无人机和AR/VR领域广泛落地。

阶段代表方法核心特点典型应用
1980s–2000s立体VO、五点法几何求解,离线或低频火星车、地面机器人
2007–2014PTAM、ORB-SLAM、LSD-SLAM实时特征/直接法,回环与地图AR、室内机器人
2015–至今VINS-Mono、OKVIS、MSCKF视觉惯性紧耦合,高鲁棒无人机、手机AR、自动驾驶

三、与SLAM、VIO的关系

很多初学者容易把VO、SLAM、VIO混为一谈。可以用一个比喻:VO是“短跑计时器”,SLAM是“带地图的导航系统”,VIO是“加了惯性传感器的增强版计时器”。

  • VO与SLAM:VO只估计局部相对运动,误差会随时间累积,不保证全局一致;SLAM在VO基础上增加回环检测、全局优化和地图构建,能够消除累积漂移并实现重定位。可以说,VO是SLAM的前端,SLAM是VO的完整形态。
  • VO与VIO:VIO在VO基础上融合IMU数据。IMU提供高频角速度和加速度,可在图像模糊、纹理缺失、快速运动时维持短时位姿输出,同时帮助恢复单目尺度。VIO通常采用紧耦合优化或滤波,鲁棒性显著优于纯VO。
  • 三者边界:纯VO可独立运行但易漂移;VIO适合无人机等动态平台;SLAM适合需要全局地图与长期运行的场景。

四、优缺点与适用条件

视觉里程计的优势在于传感器成本低、体积小、信息丰富,且不依赖外部基础设施。但它也有明显短板:单目尺度不可观、光照变化敏感、快速旋转易丢失跟踪、纯VO无回环导致长距离漂移。

常见误区:认为“视觉里程计可以替代GPS”。实际上VO输出的是局部相对轨迹,长时间运行必然漂移;在无人机航迹推算中,VO通常与IMU、气压计、磁力计甚至GNSS组合使用,而非单独承担全局定位。

适用条件可归纳为:场景纹理丰富、光照相对稳定、运动不过于剧烈、相机标定准确。若场景为白墙、水面、玻璃或强逆光,纯VO容易失效,此时应优先考虑VIO或引入激光雷达等互补传感器。

典型VO/VIO配置参数示例:
相机频率:20–30 Hz
IMU频率:200–1000 Hz
特征点数量:150–300
关键帧间隔:0.5–1.0 m 或 5–10 帧
优化窗口:10–20 帧
重投影误差阈值:1.0–2.0 px

五、案例与复盘:无人机室内航迹推算

假设一架四旋翼在无GPS的仓库内飞行,仅搭载单目相机和IMU。若只运行纯VO,起飞后前10米轨迹尚可,但绕货架飞行两圈后,轨迹会明显闭合不上,高度方向也因尺度漂移而失真。引入VIO后,IMU提供重力方向和短时高频约束,轨迹在30秒内保持较高精度;若再叠加回环检测,则可在回到起点时修正全局漂移。

复盘要点:第一,VO的漂移是累积性的,不能靠调参彻底消除;第二,VIO的鲁棒性来自视觉与惯性的互补,而非单纯算法更复杂;第三,工程中应根据任务时长、环境纹理和算力预算,在VO、VIO、SLAM之间做取舍,而不是盲目追求最重方案。

选型建议:短时、纹理丰富、算力受限 → 纯VO;无人机、快速运动、需要尺度 → VIO;长期运行、需要地图与重定位 → 完整SLAM。