Advertisement

视觉SLAM笔记(43) 直接法

阅读量:

视觉SLAM中的直接法是一种基于灰度差分的方法,用于估计相机位姿而不依赖特征点或描述子。其核心思想是通过光度误差(Photometric Error)最小化来优化相机运动参数。该方法利用图像梯度信息和李代数扰动模型构建雅可比矩阵,并通过高斯-牛顿或列文森-马夸特算法求解优化问题。
优缺点分析:
优点:

  • 快速高效:无需特征提取和描述子匹配过程,显著减少计算开销。
  • 适用性强:依赖简单计算即可实现,在特征缺失或光照变化情况下仍能运行。
  • 灵活性:适用于从稀疏到稠密结构的不同场景需求。
    缺点:
  • 非凸性问题:容易陷入局部极小值导致估计不准确。
  • 对光照敏感:灰度不变假设在光照变化时失效。
  • 精度限制:在大位移或复杂场景下表现较差。
    应用场景:
    实时性要求高且资源有限的情况:如低端设备环境。
    动态环境处理:通过改进光度模型提升对光照变化的鲁棒性。
    总结而言,直接法则在实时性和资源效率方面表现出色,在特定条件下能够有效解决视觉SLAM中的相机运动估计问题。

视觉SLAM笔记(43) 直接法

  • 1. 直接法的推导
  • 2. 已知位置的空间点P
  • 3. 直接法分类
  • 4. 优缺点

1. 直接法的推导

以一个空间点 P 以及两个不同时刻的相机作为研究对象,
该空间点 P 的世界坐标为 X, Y, Z
在同一场景下,在两台相机上成像,
分别用非齐次像素坐标p_1p_2表示其对应的图像位置。
研究目标是旨在确定两台相机之间的相对姿态变化。

在这里插入图片描述

取第一个相机作为基准系,在此框架下定义第二个相机相对于第一个相机的旋转和平移参数R和t(其对应的李代数表示为ξ)。此外,两台摄像机具有相同的内参数矩阵K。为了便于后续推导使用,在此列出完整的投影方程形式。

在这里插入图片描述

其中 Z_1 代表点 P 在第一个相机空间中的深度参数,
Z_2 则表示该点在第二个相机坐标系中的深度信息。
具体来说,
这一深度值对应于矩阵运算结果中的第三维坐标分量。
考虑到齐次坐标的特性,
每次运算后都需要提取前三维数值作为有效信息。
这与之前介绍的相机模型部分的内容高度一致

在回忆特征点法中,在于通过描述子间的匹配关系得以确定目标区域中的特定关键点——即 p_1p_2 的具体像素坐标。因此能够推算出它们的重投影坐标。然而,在直接方法中,则由于缺乏基于特征的配准手段(即无法建立两点之间的对应关系),就无法确定哪一个 p_2p_1 实际上是同一个点所对应的像素位置。

直接法的核心在于利用当前相机的姿态估计结果来确定 p2 的位置。然而,在相机姿态精度不足的情况下(当相机姿态精度不足时),观察到的点之间的表观特征会发生显著差异(因此在优化过程中需要调整相机姿态以找到更接近于 p1 的特征)。同样地,在优化过程中我们不再追求重投影误差最小化的目标;相反地,则采用 光度误差 (Photometric Error)作为评价标准——即 P 像素点在两个观测中的亮度差异。

在这里插入图片描述

值得注意的是,在本研究中所讨论的变量 e 均被定义为标量值,并因此无需进行加粗处理

在这里插入图片描述

能够做这种优化的原因仍基于灰度不变假设。
在直接法中,在各个视角下的空间点成像亮度保持一致。
多个实例 P_i 被采集。
则可转化为:相机位姿估计问题即为确定这些空间点的位置与朝向。

在这里插入图片描述

在本问题中,优化变量为相机的位姿 ξ。为了有效解决这一优化问题,在分析误差 e 随着相机位姿 ξ 的变化规律时(此处可补充具体分析步骤),需要考察两者之间的导数关系。进而采用李代数框架中的扰动模型,在此基础上对相机位姿进行微小调整。可得:通过左乘一个微小扰动项(此处可进一步展开讨论),即可得到新的估计值。

在这里插入图片描述

记:

在这里插入图片描述

这里的变量 q 表示在施加扰动后相机所处的第二个相机坐标系中的位置坐标值,而 u 则为其对应的像素坐标信息。基于一阶泰勒展开式可知:

在这里插入图片描述

看到,一阶导数由于链式法则分成了三项,而这三项都是容易计算的:

\partialI2/\partialuu 处的像素梯度

该表达式代表了基于相机坐标系下三维空间点的投影方程的偏导数值。
我们定义变量 q = \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} 并参考视觉SLAM技术综述中的PnP解决方案推导得出:

在这里插入图片描述

该表达式\partial q/\partial δξ表示变换后三维点对变换的导数。这一概念已被详细阐述于视觉SLAM笔记(17) 李代数求导与扰动模型一文中

在这里插入图片描述

在实际应用中,通常仅涉及三维点 q 而与图像数据无关,并将其结合起来使用:

在这里插入图片描述

这个 2 × 6 的矩阵在上一讲中也出现过

于是,推导了误差相对于李代数的雅可比矩阵:

在这里插入图片描述

在涉及 N 个数据点的情况下, 可以采用该方法来求取优化问题中目标函数相对于变量向量的一阶导数矩阵(雅可比矩阵)。随后, 使用高斯-牛顿法或列文森-马夸特算法(G-N 或 L-M)来获取增量信息, 并逐步更新参数估计值以实现最优解。该方法完整阐述了直接法用于相机位姿估计的具体步骤。


2. 已知位置的空间点P

在推导过程中,P 是一个确定位置的空间点,在RGB-D相机系统中是如何形成的?
基于RGB-D摄像头系统,在推导过程中能够将任意像素点反向投影至三维空间中,并随后再将其投影至下一个图像平面。
而在单眼相机的情况下,则这一过程相对更加复杂,并且必须考虑到由 P 的深度所带来的不确定性因素。


3. 直接法分类

首先探讨当 P 深度已知时的情况。
基于 P 的来源信息,则可将直接法划分为若干类别。

P 基于稀疏关键点,并被称为 稀疏直接法
该方法通常采用数百至数千个关键点,并借鉴了 LK 光流的方法。
这种稀疏直接法则无需计算描述子,并仅依赖数百像素进行处理。
尽管如此,这种方法仅能处理稀疏重构。

  1. P 来源于部分像素数据,并被命名为 半稠密直接法
    观察上式可知:当像素点处的梯度为零时,则雅可比矩阵将完全退化为零矩阵。
    基于此,在实际应用中我们通常选择那些梯度显著的像素点来进行计算。
    通过这一方法处理后不仅能够消除对噪声敏感的问题还能有效减少计算复杂度
    从而能够有效重构出一个半稠密的空间结构。

  2. P 被定义为所有像素,并被称为 稠密直接法
    稠密重构必须计算每一个像素(通常涉及数十万到上百万个像素)
    由于现有 CPU 的处理能力限制,在实时性方面存在不足,因此通常需依赖 GPU 加速
    然而,在之前的讨论中已经指出,在运动估计过程中具有明显梯度的点往往占据主导地位,并且这些区域的重建效果最为显著

观察得知,在低至高密度的重构过程中均可应用高效直接算法;各种方法的计算量呈递增趋势;稀疏方法可迅速求解相机位姿,并使系统具备完整的空间感知能力;稠密方法则能构建全面的地图;具体选择哪一种方法,则取决于机器人所处的应用环境。

在低端计算平台
稀疏直接法具有极快的速度,在实时性要求高且计算资源有限的场景中表现突出。


4. 优缺点

大体来说,它的优点如下:

可以省去计算特征点、描述子的时间

仅需有像素梯度就可不需要特征点;
由此可见,在缺少特征的情况下应用直接法最典型的例子就是一张渐变的图片;
它难以提取角点类特征 但可以用直接法来估算其运动

可以构建半稠密乃至稠密的地图,这是特征点法无法做到的

另一方面,它的缺点也很明显:

基于非凸特性——直接法严重依赖于梯度下降方法,在减少目标函数值的过程中确定相机的位置和姿态
其中图像灰度值被纳入目标函数计算,并因这一特性导致图像能量表面呈现出强烈的非凸性
由于优化空间复杂性高,在处理复杂场景时可能会陷入局部极小值;然而即使微小运动情况下也能奏效

单个像素缺乏识别能力,在寻找类似特征时太过常见。
因此,在选择时需要权衡两方面的因素:一是图像块的整体性考量;二是复杂相关性的计算难度。
各个像素在反映相机运动参数方面存在不同的信息需求。
最终必须通过多数决策来平衡个体差异。

灰色级数保持恒定是一个严格的前提条件。
假设相机能够进行自适应曝光,则当其调整曝光参数时会导致图像亮度发生增减变化。
同样地,在光照强度发生变动的情况下也会出现类似现象。
特征点匹配算法对于光照的变化有一定的容错能力。
然而,在实际应用中直接采用差分计算的方法存在明显缺陷:整体图像亮度的变化会违背灰色级数恒定这一基本假设而导致算法失效。
针对此问题,在当前研究中逐渐发展出了一种改进型的方法:即改进后的直接法则采用了更为精细的光度校准方法,并能在相机曝光时间发生变动的情况下依然维持良好的处理效果。


参考:

《视觉SLAM十四讲》


相关推荐:

[视觉SLAM学习笔记(42) 基于光流的特征点追踪]
[视觉SLAM学习笔记(41) 光流算法研究]
[视觉SLAM学习笔记(40) 特征点缺陷分析]
[视觉SLAM学习笔记(39) 三维对三维ICP算法求解]
[视觉SLAM学习笔记(38) 三维对三维ICP算法研究]


全部评论 (0)

还没有任何评论哟~