视觉里程计

wen IT资讯 26

本文目录导读:

视觉里程计

  1. 什么是视觉里程计?
  2. 为什么需要视觉里程计?
  3. 视觉里程计的核心工作原理
  4. 视觉里程计的主要分类
  5. 视觉里程计 vs. 视觉SLAM
  6. 挑战与局限性

什么是视觉里程计?

视觉里程计(Visual Odometry,简称VO)是一种仅通过分析连续图像序列(例如来自摄像头),来估计自身运动(特别是位置和姿态)的技术。

可以这样理解:它就像一个“视觉导航员”,通过观察周围环境的变化(比如路边的树、墙角的纹理),来判断自己正在朝哪个方向移动,移动了多远。

核心目标: 增量式地恢复相机的运动轨迹,即计算出每一帧图像相对于上一帧的旋转矩阵 (\mathbf{R}) 和平移向量 (\mathbf{t})。

与里程计的关系: 这个名字借鉴了轮式里程计(Wheel Odometry)和惯性测量单元(IMU),传统的轮式里程计通过轮子转圈数推算距离,但容易打滑;VO 则通过“看”来推算,没有打滑问题,但受光照、纹理等影响。


为什么需要视觉里程计?

  1. 无GPS环境下的定位: 在室内、地下、水下、森林或太空等GPS信号弱或不可用的场景,VO是自主定位的核心方法。
  2. 辅助其他传感器: 可以与IMU、激光雷达、GPS等传感器融合(形成VIO、SLAM系统),提供更鲁棒、更精确的定位,VO可以在GPS短时失效时进行补充。
  3. 成本低、信息丰富: 相比激光雷达,摄像头非常便宜,而且图像包含了丰富的纹理和语义信息,可用于场景理解、目标检测等高级任务。
  4. 应用于机器人、无人机、AR/VR、自动驾驶: VO是这些领域实现自主导航、姿态跟踪的基础技术。

视觉里程计的核心工作原理

VO的核心工作流程通常遵循一个经典的 同步估计与映射 思路,但VO通常只专注于短期轨迹,而不会去维护一个全局一致的地图(那是SLAM的任务),典型的VO流程包含以下四个关键步骤:

  1. 图像获取与预处理:

    • 获取: 从摄像头(单目、双目或RGB-D)获取连续的图像帧。
    • 预处理: 去畸变、直方图均衡化、图像缩放等,以减少噪声和光照影响,提高后续步骤的鲁棒性。
  2. 特征提取与匹配(核心步骤):

    • 特征提取: 在每一帧图像中,找出一些具有显著性的点(角点、斑点等),并为其计算一个描述子(例如SIFT、SURF、ORB特征),这些点通常是图像中纹理丰富的区域(如墙角的边缘、书页上的文字)。
    • 特征匹配: 将当前帧提取的特征点与上一帧的特征点进行匹配,建立对应关系,这一步非常关键,错误的匹配会导致后续运动估计失败,常用的匹配算法包括暴力匹配、FLANN匹配,并会使用RANSAC(随机抽样一致性)来剔除误匹配。
  3. 运动估计(从2D到3D): 这是VO的核心数学过程,根据所用的摄像头类型,方法不同:

    • 2D-2D(单目VO的初始化或纯视觉):

      • 利用两帧之间匹配的2D像素点,通过对极几何约束来求解。
      • 需要求解基础矩阵 (\mathbf{F}) 或本质矩阵 (\mathbf{E})。
      • 输出: 两帧之间的旋转和平移,但平移的方向已知,尺度未知(单目相机存在尺度模糊性)。
    • 3D-2D(最常用的方法,双目或单目初始化后):

      • “3D”点来自上一帧恢复的深度(可通过双目视差或三角化已知的匹配点得到),“2D”点来自当前帧的观测。
      • 这是一个经典的PnP(Perspective-n-Point) 问题。
      • 输出: 可以直接求解出当前帧相对于上一帧的位姿,且尺度已知,这是最稳健和常用的方法。
    • 3D-3D(双目或RGB-D相机):

      • 两帧图像都已知完整的3D点云。
      • 通过ICP(Iterative Closest Point,迭代最近点) 算法来对齐两组点云,从而求解旋转和平移。
  4. 局部优化与轨迹更新:

    • 将估计出的相对位姿累积起来,形成完整的运动轨迹。
    • 局部光束法平差(Bundle Adjustment,BA): 为了避免误差累积,VO通常会维护一个小的、滑动窗口的优化问题,它会同时优化窗口内的所有相机位姿和地图点的3D位置,使得重投影误差最小化,这是提高精度的关键一步。
    • 输出: 更新后的、平滑的相机轨迹。

视觉里程计的主要分类

根据摄像头类型和算法重点,VO有不同分类:

  • 按摄像头类型:

    • 单目VO: 结构简单、成本低,但尺度不可知(无法知道物体真实大小),需要其他传感器或运动假设来恢复尺度,精度相对较低。
    • 双目VO: 通过基线距离可以直接计算深度,尺度已知,精度较高,但标定和计算量更大。
    • RGB-D VO: 直接提供深度图(例如Kinect),深度准确,适合室内场景,但受环境光影响大,室外效果差。
  • 按算法流派:

    • 特征点法VO: 主流方法,提取并匹配特征点(如ORB-SLAM中的ORB特征),优点是鲁棒性好,对光照、运动模糊有一定容忍度,缺点是特征提取和匹配耗时,可能丢失纹理弱的区域。
    • 直接法VO: 不提取特征点,而是直接基于图像的像素亮度来进行运动估计(如LSD-SLAM、DSO),优点是快速,在纹理丰富或运动模糊时表现好,能利用边缘和半稠密信息,缺点是对光照变化敏感,容易陷入局部最优。

视觉里程计 vs. 视觉SLAM

这是一个常见的模糊点,可以这样区分:

特性 视觉里程计 (VO) 视觉SLAM (V-SLAM)
核心目标 短期、增量式地估计运动轨迹,强调实时性和局部一致性。 同时估计相机轨迹和构建全局一致的地图,强调全局回环检测和地图修正。
地图 通常只维护一个短期、局部的地图或特征点云,用于跟踪。 维护一个全局的、持久的地图,并做回环检测来消除累积误差。
全局优化 有,但受限:通常只做局部的滑动窗口BA,不进行全局回环修正。 有,且是核心:进行全局的位姿图优化或BA,利用回环检测闭合全局误差。
典型输出 一条平滑的短期轨迹,用于局部导航或高频控制。 一个全局一致的地图 + 完整的、经全局修正的轨迹,用于导航、规划、建图。
容错性 相对较低,一旦跟踪丢失,只能重新初始化。 高,检测到回环后可以重新定位。

一句话总结: VO更侧重于高频、低延迟的局部运动估计,是SLAM的前端;而SLAM在VO基础上增加了全局优化和回环检测,解决累积误差。


挑战与局限性

  1. 累积误差: 即使每个小步骤误差很小,从第一帧到最后一帧的累积误差会越来越大,导致轨迹漂移(这是VO的核心弱点,也是SLAM通过回环解决的根本问题)。
  2. 光照和场景变化: 光照剧烈变化、快速运动模糊、低纹理区域(如白墙、雪地)、动态物体(行人、车辆)都会导致特征跟踪失败。
  3. 纯旋转: 如果相机只进行纯旋转(没有平移),无法通过2D-2D方法恢复深度和运动。
  4. 计算资源: 高分辨率、高帧率的图像处理、特征提取和BA优化对计算能力要求较高。

视觉里程计是一个优雅而强大的技术,它利用最直观的视觉信息解决了“我在哪,要去哪”的基本问题,它广泛应用于机器人、自动驾驶、AR/VR等领域。

  • 简单理解: 通过看连续的照片,计算出自己的运动轨迹。
  • 核心流程: 图像 -> 特征点 -> 匹配 -> 通过几何关系算出运动 -> 优化。
  • 重要分类: 单目(尺度未知)、双目(尺度已知)、特征点法(鲁棒)、直接法(快速)。
  • 和SLAM的关系: VO是SLAM的快速、短期的前端,而SLAM是有全局视野和记忆能力的完整系统。

希望这个回答能帮助你全面理解视觉里程计,如果你对某个具体步骤(比如对极几何、PnP解法、BA优化)或其应用(比如VIO)感兴趣,可以继续探讨。

上一篇IMU预积分

下一篇Occupancy预测

抱歉,评论功能暂时关闭!