SLAM面试笔记(1) -《视觉SLAM十四讲》
目录
第2讲:初识SLAM
问题1: 简述经典的SLAM框架
问题2: 视觉里程计的作用和存在的问题
问题3: 后端优化的作用
问题4: 回环检测的作用
第3讲:三维空间刚体运动
问题5:描述四元数的定义
第4讲:李群与李代数
问题6:评价轨迹误差的指标
第5讲:相机与图像
问题7:针孔相机模型与畸变模型
问题8:双目相机模型
问题9:RGB-D相机模型
第6讲:非线性优化
问题10:状态估计问题处理方法分类
问题11:SFM基本概念
第7讲:视觉里程计1
问题12:视觉里程计算法分类和简介
问题13:特征点概念
问题14:几种常用的特征点提取方法
问题15:非极大值抑制
问题16:ORB特征提取过程
问题17:FAST关键点提取过程
问题18:图像金字塔
问题19:灰度质心法
问题20:BRIEF描述子
问题21:如何计算相机运动
问题22:对极几何求解步骤
问题23:相机位置估计步骤
问题24:本质矩阵的性质
问题25:八点法求解本质矩阵
问题26:对极几何约束的局限性
问题27:初始化的纯旋转问题
问题28:单目SLAM如何获取像素点深度?
问题29:视差的概念
问题30:PnP的概念与求解方法
(1)PnP的概念
(2)PnP的求解方法
问题31:PnP的求解方法中DLT、P3P需要多少对求解点
问题32:P3P求解思路和缺点
第8讲 视觉里程计2
问题28:特征点法的缺点和解决办法
(1)特征点法的缺点
(2)特征点法缺点的解决办法
问题29:直接法简介
问题30:2D光流
问题31:Lucas-Kanade光流
问题32:多层光流
问题33:直接法
(1)直接法的思路
(2)直接法的分类
(3)直接法优缺点
问题34:光流法和直接法的区别?优化的变量是什么?
第9讲 后端1
问题35:滑动窗口法
(1)滑动窗口法定义
(2)滑动窗口法步骤
问题36:共视图
第10讲 后端2
第11讲 回环检测
问题37:回环检测意义
第12讲 建图
问题38:逆深度
第2讲:初识SLAM
问题1: 简述经典的SLAM框架

整个视觉 SLAM 流程包含以下关键步骤:
- 【传感器信息获取
经过一段时间的研究积累,
经典的视觉 SIAM 框架属于近年来的重要研究成果。
这一核心框架及其内部算法已趋于成熟,
并广泛应用于多个领域。
借助这些算法基础,
我们可以开发出一个基于视觉SLAM的技术平台,
在常规工作环境中实现精确的实时定位与建图能力。
问题2: 视觉里程计的作用和存在的问题
视觉里程计作用: 能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构。
视觉里程计存在的问题: 仅通过视觉里程计来估计轨迹,将不可避免地出现累积漂移(Accumulating Drift)。这是由于视觉里程计在最简单的情况下只估计两个图像间的运动造成的。每次估计都带有一定的误差,而由于里程计的工作方式,先前时刻的误差将会传递到下一时刻,导致经过一段时间之后,估计的轨迹将不再准确。为了解决漂移问题,我们还需要两种技术:后端优化 和回环检测 。回环检测负责把“机器人回到原始位置”的事情检测出来,而后端优化则根据该信息,校正整个轨迹的形状。
问题3: 后端优化的作用
系统性地分析而言,在SLAM过程中实现数据质量的波动性问题得到合理处理是后端优化体系的核心任务之一。在实际应用中,后端优化需要解决的关键问题是:如何从这些带有噪声的数据中推断出系统的真实运动状态并同时评估这种推断结果的质量?这个问题可以通过最大后验概率估计(MAP)方法来进行建模与求解。其中系统状态不仅涉及机器人自身运动轨迹的描述还涵盖了环境地图信息。
问题4: 回环检测的作用
回路检测法也被广泛称为闭环定位技术,在处理位置估计随着时间推移而产生的偏差问题方面表现突出。该方法通过分析图像间的相似性来进行定位计算。
第3讲:三维空间刚体运动
问题5:描述四元数的定义
回想之前学习过的知识, 我们用集合C来表示二维平面中的向量, 而这种表示法在二维平面中也对应着一种运算——旋转. 具体来说, 乘以虚数单位i相当于将该向量逆时针方向旋转90度. 类似地, 在三维空间中, 我们可以使用一种类似于二维平面中的代数系统——四元数组来实现旋转变换. 四元数组是由英国数学家哈密尔顿发现的一种扩展形式的二维数组. 它不仅具备精炼的形式特征, 而且能够避免出现奇异性的缺陷. 然而, 作为缺点的是, 这种数据结构不够直观易懂, 并且其相关运算相对复杂.
一个四元数组q由四个分数组成: 实部Re(q) 和三个虚部Im(q), 可以表示为:
q = a + bi + cj + dk
其中a,b,c,d∈R.

其中,i,j,k为四元数的三个虚部。这三个虚部满足以下关系式:

也可以用一个标量和一个向量来表达四元数:

在这里,在该四元数中,
s 被认为是其实部部分,
而 t 则被视为其实部以外的部分。
当一个四元数中的t部分等于零时,
则称其为实四元数;
相反地,
当s部分等于零时,
则称其为纯虚四元素。
第4讲:李群与李代数
问题6:评价轨迹误差的指标
在工程实践中,通常会测定某算法在预测轨道与实际轨道之间存在的差距以评估该算法的有效性。
对于某条特定预测轨道,
此时我们需要计算其预测轨道与实际轨道之间的距离并将其作为该算法有效性的量化指标。

,和真实轨迹

,其中

为了表征这些点之间的差异性关系,在此基础上我们能够定义某些指标来评估这种差异。

(2)绝对平移误差(Average Translational Error )

其中trans表示取括号内部变量的平移部分。
(3)相对位姿误差(Relative Pose Error,RPE)

第5讲:相机与图像
问题7:针孔相机模型与畸变模型
(1) 针孔相机模型
关于推导公式参阅书本
相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用
一个几何模型进行描述。这个模型有很多种,其中最简单的称为针孔模型 。针孔模型是很常用而且有效的模型,它描述了一束光线通过针孔之后,在针孔背面投影成像的关系。

以O-x-y-z表示相机坐标系,在此约定中我们令z轴指向相机前方方向,并规定x轴向右侧延伸(建议从图形左侧观察右侧空间)。其中O点作为摄像机的光心,在针孔模型中即为投影中心点。在现实世界中任意空间点P经由镜头小孔O成像后会投射至物理成像平面O'-x'-y'-z'上,并形成影像点P'。
(2) 畸变模型
为获得高质量成像效果,在相机前方安装了凸形镜头以改善光路控制。
镜头引入的变化主要体现在两个方面:其一为镜头自身物理结构对其所折射光线传播路径的影响;其二则源于镜头与成像平面在装配过程中并非严格平行造成的光线聚焦位置变化。
由镜头形状引起的图像变形现象被称为径向畸变。
在针孔模型下,摄像机镜头通常会将实际环境中的一条直线转换为曲线。
这一现象尤其在图像边缘表现得更为明显。
由于制造过程中的对称性特点,在实际应用中常见的是径向对称类型的畸变。

由于透镜形状的原因而导致径向畸变出现;而相机组装过程中镜头与成像平面无法保持严格平行状态,则会导致切向畸变发生

问题8:双目相机模型
针孔相机模型用于描述单个相机的成像机制。但仅有单一像素信息不足以确定该空间点的确切位置。
由于从镜头中心到归一化平面的所有连线上的点都可以投射至该像素上。
只有当点P的空间深度得以确定时(例如借助双目或RGB-D摄像头),才能准确判定其在空间中的具体位置。双目摄像头的工作原理是同步获取左右两组图像并计算视差以估计每个像素处物体的距离。
双目摄像头的工作原理如图所示。

双目相机的成像模型。

,

为左右光圈中心,方框为成像平面,

为焦距。

和

为成像平面的坐标。请注意,按照图中坐标定义,

应该是负数,所以图中标出的距离为

,两者之间的距离称为双目相机的基线(记作b),是双目相机的重要参数

该技术被称为立体视觉中的视差法原理。其中d被定义为基于左图像的视差参数,在此基础之上我们能够计算出单个像素与相机之间的距离关系。根据几何关系可知:当物距增大时(即物体离相机更远),其对应的像距会减小;反之亦然。具体而言,在实际应用中由于最小的视差点间距至少达到一个像素的标准限制,则理论上双目系统能够达到的最大深度由b参数决定;观察发现当基线长度增加时(即两镜头间的距离增大),双目系统能够测量的最大物距也会随之提升;相反地若采用小型双目装置则其测距精度将受限于较小的基线长度而只能捕捉到较近范围内的目标物体。
问题9:RGB-D相机模型
相较于基于视差计算深度的双目相机而言,在这种方案中系统能够主动地对每个像素进行深度测量。目前市场上的RGB-D相机主要可分为两大类:
(1)基于红外结构光(Structured Light)的技术来测定各像素的距离。
(2)利用飞行时间(Time-of-Flight,ToF)的方法测定各像素的距离。

在红外结构光原理中,相机根据返回的结构光图案,计算物体与自身之间的距离。而在ToF原理中,相机向目标发射脉冲光,然后根据发送到返回之间的光束飞行时间,确定物体与自身的距离。
RGBD相机缺点: RGBD相机能够实时地测量每个像素点的距离。但是,由于使用这种发射一接收的测量方式,其使用范围比较受限。用红外光进行深度值测量的RGB-D相机,容易受到日光或其他传感器发射的红外光干扰,因此不能在室外使用。在没有调制的情况下,同时使用多个RGB-D相机时也会相互干扰。对于透射材质的物体,因为接收不到反射光,所以无法测量这些点的位置。此外,RGB-D相机在成本、功耗方面,都有一些劣势。
第6讲:非线性优化
问题10:状态估计问题处理方法分类
处理这个状态估计问题的方法大致分成两种,增量/渐进(incremental)的方法 和批量(batch)的方法。
- 增量/渐进(incremental)的方法: 或者叫滤波器,由于在SLAM过程中,这些数据是随时间逐渐到来的,所以,我们应该持有一个当前时刻的估计状态,然后用新的数据来更新它。在历史上很长一段时间内,研究者们使用滤波器,尤其是扩展卡尔曼滤波器及其衍生方法求解它。
- 批量(batch)的方法: 则是把数据“攒”起来一并处理。
基于这两种不同的处理策略衍生出多种估计手段。总体而言,在处理当前状态时增量方法更为集中化;相比之下,在更大范围内的优化能力使其被视为比传统滤波器更为有效的解决方案,并在视觉SLAM领域占据主导地位。
问题11:SFM基本概念
SFM(Structure from motion)基于包含视觉运动信息的一系列多幅二维图像(2D image sequences),能够推导出对应的三维模型(3D model)。该技术涉及计算机视觉与可视化技术的研究领域。值得注意的是,在这种情况下相机间的平移计算仅能得出相对位置关系,并不能直接获得实际尺寸信息;因此这种方法只能重建物体的几何框架结构。
第7讲:视觉里程计1
问题12:视觉里程计算法分类和简介
视觉里程计的核心问题是如何根据图像估计相机运动。首先,从图像中选取比较有代表性的点。这些点在相机视角发生少量变化后会保持不变,于是我们能在各个图像中找到相同的点。然后,在这些点的基础上,讨论相机位姿估计问题,以及这些点的定位问题。
视觉里程计的算法主要分为两个大类:特征点法 、光流法
特征点法: 提取图像特征点,计算特征点图像描述子(图像灰度/变化梯度等),通过描述子来匹配特征点,确定特征点的匹配关系,利用三角/对极几何/PnP等算法估算相机运动。计算精度高,但是耗时。
光流法: 提取图像特征点,与特征点法不同的是,光流法通过图像灰度值(RGB)值匹配特征点 ,光流描述了像素在图像中的运动,再利用三角/对极几何/PnP等算法估算相机运动。减少特征点匹配所需的计算量,精度也有保证。
- 直接法: 直接使用像素块,也可以提取图像角点(角点像素突出因此能够进行更好的匹配),通过计算灰度值(RGB)值直接解算得到运动估计(R,t)。利用像素移动直接计算得到相机的移动。一般需要位姿的初始估计,通过初始的位姿估计来得到匹配的图像特征点,通过灰度值(RGB)值优化位姿估计。运算速度快,但是由于灰度不变假设,过快的图像运动,容易陷入局部最优解。
- 半直接法: 以SVO为代表,将图像分块来做匹配。指通过对图像中的特征点图像块进行直接匹配来获取相机位姿,而不像直接匹配法那样对整个图像进行匹配。特
问题13:特征点概念
特征由**关键(Key)与符号(Symbol)**两部分构成,在图像中可寻觅其所在。
其中之关键不仅标示位置,
还可包含指向及尺度之类附加特质。描述符则常以矢量呈现,
以表征周边像素之细节。
问题14:几种常用的特征点提取方法
研究者们在长时间的研究中巧妙地设计出了多种更加稳定的局部图像特征,在应对光照变化、缩放变换以及旋转等问题时表现出极强的鲁棒性。
- SIFT(尺度不变特征变换):该算法在处理光照变化、缩放变换以及旋转等问题时表现出极强的鲁棒性。
- FAST关键点:作为一种计算速度非常快的关键点检测方法。
- ORB(Oriented FAST and Rotated BRIEF):作为一种目前应用最为广泛的实时图像特征检测技术。
问题15:非极大值抑制
Non-Maximum Suppression (NMS) 是一种用于图像处理中的特征检测方法,在特定区域中筛选出最大响应点以避免多个相邻特征点的情况发生。
意即 Non-Maximum Suppression(NMS)是一种通过限制局部最大值来消除多个相邻特征点的技术。
其中一个是邻域的维数(比如二维图像中是2),另一个是邻域大小(比如3x3窗口)。这不仅使描述更加清晰。
原文: https://www.cnblogs.com/makefile/p/nms.html © 康行天下
问题16:ORB特征提取过程
ORB特征由关键点 和描述子 两部分组成。它的关键点称为“Oriented FAST”,是一种改进的FAST角点,它的描述子称为BRIEF。提取ORB特征分为如下两个步骤:
- FAST角点提取: 找出图像中的“角点”。相较于原版的FAST,ORB中计算了特征点的主方向,为后续的BRIEF描述子增加了旋转不变特性。针对FAST角点不具有方向性和尺度的弱点,ORB添加了尺度和旋转的描述。尺度不变性由构建图像金字塔 ,并在金字塔的每一层上检测角点来实现。而特征的旋转是由灰度质心法(Intensity Centroid) 实现的。
- BRIEF描述子: 对前一步提取出特征点的周围图像区域进行描述。ORB对BRIEF进行了些改进,主要是指在BRIEF中使用了先前计算的方向信息。
问题17:FAST关键点提取过程
FAST角点主要识别局部区域亮度变化显著的地方。该方法通过比较各像素与其邻域的亮度差异来判断是否存在角点特征,并以其快速性使其在实际应用中备受关注。其基本思想在于:当一个像素与其周围的像素亮度差异显著时(表现为过亮或过暗),则该像素极有可能是图像中的一个角点。

- 在图像中选择一个像素p;设其亮度值为Ip。
- 设定一个阈值T;例如;令其等于Ip值的20%。
- 在以像素p为中心、半径为3的圆周上取16个采样点。
- 如果这些采样点中有连续N个点的亮度超出±T范围,则称该中心像素p具有特征性(其中N通常取值为12;这被称为FAST-12;其他常用方案分别为N=9和N=10;分别称为FAST-9和FAST-10)
- 将上述步骤依次执行并应用于图像中的每个像素。
FAST特征点的缺点: 其主要缺点在于仅通过像素间的亮度差值进行计算从而达到了极高的运算效率然而这一算法仍存在两个明显的不足之处一是无法提供角点处的方向信息二是由于其固定的半径参数设置为3可能导致在不同尺度下检测结果出现偏差:远距离观察时可能会误判某些区域为角点位置;而近距离观察时则可能不再被视为角点了。此外FAST算法还无法有效解决重复性不高以及分布不够均匀的问题因此在实际应用中可能会面临检测结果不够稳定的挑战
问题18:图像金字塔
金字塔底层是通过将原始图像按固定比例缩小得到,在各个层级上均存在相应的图像。在特征匹配算法中,在各个层级上均存在相应的图象,并以此实现尺度不变性的特性。

问题19:灰度质心法
该图像区域的质心点是基于各像素灰度值进行加权计算的结果。
其具体操作步骤如下:
在一个较小的目标区域B内,
定义图像块的矩为:
M(B) = \sum_{(x,y)\in B} g(x,y)

2. 通过矩可以找到图像块的质心:

将图像块的几何中心点O与其质心位置C相连, 从而生成一个方向向量; 因此特征点的方向可被定义为该方向向量.

问题20:BRIEF描述子
BRIEF是一种基于二进制的特征描述子
问题21:如何计算相机运动
根据匹配好的点对之间的匹配结果来推导相机的运动。
- 当相机仅具有单目镜头时,在仅有二维图像信息的基础上推导运动参数。该问题通常采用双视图几何方法求解。
- 当相机配置为双目、RGB-D系统或其他获取深度信息的方式时,在三维空间中推导运动参数的问题就变得容易处理了。该问题通常采用**迭代最近点算法(ICP)**进行求解。
- 当一组数据为三维空间中的点云信息而另一组数据为其在相机平面中的二维投影坐标时,在满足一定约束条件下同样能够推导出相机的姿态与运动参数。这个问题可以通过**平面内点云配准(PnP)**方法实现求解。
问题22:对极几何求解步骤
由单目相机分别在两个不同方位拍摄两幅二维图像,在完成基于ORB算法的特征点提取与匹配后,在这两幅图像中能够获得相应的对应关系。
根据这两组对应关系即可确定相机位姿参数(R,T)。其中:
- 可以利用这两副图象中的像素坐标变换关系来计算两幅图象之间的相对几何关系;
- 具体来说,
a) 可以用两副图象之间的相对变换关系来计算两副图象之间的相对几何关系;
b) 或者也可以用同一场景下多幅图象之间的几何约束条件来推导得到。
随后,
基于确定的相机位姿参数(R,T),可以在两幅图象中找到各对应区域的空间位置信息,
即为该区域在三维空间中的位置坐标信息。
问题23:相机位置估计步骤

我们称这个方程组为对极约束(Epipolar Constraint),它以其简洁的形式著称于世。在对极约束理论中不仅包含平移运动还包含旋转运动两种基本元素。其中不仅包含平移运动还包含旋转运动两种基本元素。为了便于后续分析我们将中间部分具体化为两个矩阵:即基础矩阵(Fundamental Matrix)F与本质矩阵(Essential Matrix)E这样一对特殊的矩阵组合能够完整地表征两幅图像之间的几何关系从而使得对极约束的形式更加简洁明了并且具有良好的数学性质。

对极约束明确描述了两个匹配点在空间中的位置关系。随后,相机姿态估计问题转化为以下两个步骤:
- 根据配对点的像素坐标计算出矩阵E或F。
- 基于得到的矩阵E或F计算相机旋转(R)和平移(t)参数。
问题24:本质矩阵的性质
本质矩阵

以下性质:
尺度一致性: 本质矩阵是由双视图几何模型所定义的一种数学关系表达式。基于这一特性可知,在不考虑外部标定条件下,在同一场景中仅通过相对运动即可推导出两幅图像之间的几何变换关系。因此,在不同尺度下进行缩放处理并不会影响到这一几何约束关系的本质属性。
本质矩阵的本质属性: 根据

可以证明,本质矩阵 E 的奇异值必定是

关于本质矩阵的自由度问题:
基于平移和旋转各有三个自由度,
因此 E 总共有六个自由度。
然而由于尺度等价性问题,
E 的实际可用自由度为五个。
这一事实表明,
最少需要五对对应点来确定 E。
但其本质上具有非线性属性,
在利用线性方程求解时会带来复杂性。
因此我们可以专注于其尺度等价特性,
并采用八对对应点来进行估计——这就是著名的八点算法。
随后我们通过奇异值分解方法,
求解出最终的结果值。
问题25:八点法求解本质矩阵
考虑一对匹配点,它们的归一化坐标为:

,根据对极约束,有:

我们把矩阵 E 展开,写成向量的形式:

那么对极约束可以写成与 e 有关的线性形式:

同样地,在其他点对上也具有类似的表示方式。将所有的点整合到一个方程中,则形成线性方程组。

上述线性方程组可通过奇异值分解(SVD)方法实现求解。具体步骤此处不做展开,请参考教材中的相关内容。
问题26:对极几何约束的局限性
尺度不确定性: 由于本质矩阵E存在尺度等价性特征,在其分解得到的位移向量t和平移矩阵R之间也会随之存在尺度等价性问题。通常情况下,在实际应用中常会对t向量进行归一化处理以消除这种不确定性的影响。
初始化中的纯旋转: 当从E分解得到旋转矩阵R和平移向量t的过程中,在发生纯旋转情况(即t=0)时,则无法唯一确定R矩阵的值。因此,在单目视觉系统中进行初始化操作时必须保证有一定的平移分量存在。
多于8点对的情况: 当提供的点对应对数量超过8对时,则可以通过构建最小二乘方程组并求解其最优解来获得更为准确的结果估计值。这种方法在一定程度上也能够有效抑制由于误匹配导致的估计偏差。
问题27:初始化的纯旋转问题
从E被分为R与t的过程中可以看出,当相机仅发生纯旋转时,t值将为零,这样会导致E也为零.这种情况下就无法求解出R矩阵.不过,此时我们可以借助H矩阵来计算出旋转参数,然而仅仅存在旋转而缺乏必要的平移运动,我们无法通过三角测量来估计特征点在空间中的位置.因此,可以得出结论:单目初始化过程中仅依赖于纯旋转是不够的,必须包含一定的平移分量才能实现有效的初始化.
问题28:单目SLAM如何获取像素点深度?
在单目SLAM框架下,在单一图像难以获取像素级深度信息的情况下,则需要借助三角测量(Triangulation)这一技术手段来估计地图点的深度位置。

三角测量基于平移生成,在存在平移的情况下才会形成对极几何中的三角形以开展三角测量工作。因此,在纯旋转状态下无法应用该方法,在本节中我们假设当平移量为零时对应的极约束始终消失。
问题29:视差的概念
为了提高三角化精度,在不显著增加计算成本的前提下可以通过提高特征点提取的精确度这一手段实现但这可能需要处理复杂的图像数据以确保准确性和稳定性。另一种可行的方法是增大物体间的平移距离但这种做法可能会引入新的挑战例如箱子被遮挡的部分将变得可见或者物体的整体光照状况会发生变化这可能影响到最终的效果评估与应用效果的可靠性因此,在实际操作中需要综合考虑平移量与匹配效果之间的平衡关系这样才能既保证足够的空间分辨率又能有效避免因视差带来的定位误差综上所述这是一个典型的矛盾关系我们将其统称为“视差”问题

问题30:PnP的概念与求解方法
(1)PnP的概念
PnP(Perspective-.n-Point)是求解3D到2D点对运动的方法。它描述了当知道n个3D空间点及其投影位置时,如何估计相机的位姿。如果两张图像中的一张特征点的3D位置已知,那么最少只需3个点对(以及至少一个额外点验证结果)就可以估计相机运动。在双目或RGB-D的视觉里程计中,我们可以直接使用PnP估计相机运动。而在单目视觉里程计中,必须先进行初始化,才能使用PnP。
(2)PnP的求解方法
PnP问题有很多种求解方法,例如,用3对点估计位姿的P3P、直接线性变换(DLT)、EPnP、UPnP等。此外,还能用非线性优化的方式,构建最小二乘问题并迭代求解,也就是光束法平差(Bundle Adjustment,BA)。
问题31:PnP的求解方法中DLT、P3P需要多少对求解点
DLT求解: t 为一个12维空间,在此框架下至少需要6组对应点以完成矩阵T的线性求解。若对应点数量超过6组,则可采用SVD等数值方法处理超定系统以获得最小二乘解。

P³P求解: P³P是一种解决PnP问题的方法,在实际应用中具有较高的效率和可靠性。该方法主要通过三角形相似性原理实现三维到二维坐标的转换,在具体实现过程中仅需使用三组匹配点即可建立必要的几何关系模型。其输入数据为三组三维与二维坐标之间的对应关系,并且该方法对数据要求较低,在实际应用中具有较高的适用性

问题32:P3P求解思路和缺点
从P³P原理的角度来看,在解决PnP(即平面到三维空间的标定)的过程中,则主要依赖于三角形相似性原理,在将投影点a、b、c转换为相机坐标系中的三维坐标位置后,并最终将其转化为三维空间中的姿态估计问题。
因此,在此基础之上不断提出了一系列其他的方法
第8讲 视觉里程计2
问题28:特征点法的缺点和解决办法
(1)特征点法的缺点
- 关键点的提取与描述子的计算非常耗时。
- 使用特征点时,忽略了除特征点以外的所有信息,只使用特征点丢弃了大部分可能有用的图像信息。
- 相机有时会运动到特征缺失的地方,这些地方往往没有明显的纹理信息。例如,有时我们会面对一堵白墙,或者一个空荡荡的走廊。这些场景下特征点数量会明显减少,我们可能找不到足够的匹配点来计算相机运动。
(2)特征点法缺点的解决办法
- 保留特征点,但只计算关键点,不计算描述子。同时,使用光流法(Optical Flow)跟踪特征点的运动。这样可以回避计算和匹配描述子带来的时间,而光流本身的计算时间要小于描述子的计算与匹配。
- 只计算关键点,不计算描述子。同时,使用直接法(Direct Method)计算特征点在下一时刻图像中的位置。这同样可以跳过描述子的计算过程,也省去了光流的计算时间。
问题29:直接法简介
直接法通过像素亮度信息推断相机运动,在处理时不需计算关键点及描述子参数即可实现对相机运动轨迹的有效估计。
因此,在处理时既省去了特征计算所需的时间又规避了因缺少关键特征而导致失败的可能性。
一旦场景中出现明暗变化(包括渐变情况),无论是否形成局部图像梯度都能成功应用。
基于所使用的像素数量不同,
直接法则分为稀疏、稠密以及介于两者之间的半稠密类型。
与基于关键点的方法仅能重建稀疏地图不同,
直接法则则具备重建这些结构的能力。
问题30:2D光流
光流是一种描述 pixels 随时间在 images 之间运动的方式。随着时间流逝, 同一个 pixel 在 images 中会移动, 而我们希望追踪它的运动轨迹。其中用于计算 part 的 pixel 运动的是稀疏光流 (Lucas-Kanade 光流), 而用于计算全部 pixel 的则是稠密光流 (Lucas-Kanade 光流, 亦称 LK 光流)。

问题31:Lucas-Kanade光流
灰度不变基本假设指出,在同一位置的空间点上,各幅图像中的像素灰度值均保持恒定。
在LK光流模型中认为,随着时光流逝,来自相机的画面会发生改变。画面可被视为时间函数:I(t)。具体而言,某一特定时刻t位于坐标(x,y)位置上的像素其灰度值可表示为:

考虑在时间t时位于坐标(x,y)的像素p,在经过时间间隔dt后移动至坐标(x+dx, y+dy)的位置q。由于灰度保持不变,则满足以下关系:

对左边进行泰勒展开,保留一阶项,得:

因为我们假设了灰度不变,于是下一个时刻的灰度等于之前的灰度,从而:

两边除以dt,得:

其中dc/dt代表像素沿x轴方向的运动速率(即像素在水平方向上的移动速度),而dy/dt则代表y轴方向的速度矢量(即垂直方向上的移动速度)。为了方便后续运算与引用,我们将其分别用u和v两个变量来进行表示(即u = dc/dt, v = dy/dt)。同时,在该点处沿x方向的空间变化率称为Iz(即图像在水平方向上的梯度),另一项则是在y方向的空间变化率称为Iy(即图像在垂直方向上的梯度)。为了便于后续分析与计算,在时间维度上考虑图像灰度的变化量,并将其表示为变量I,则可将上述关系式整理成矩阵形式如下:

该式为一个包含两个变量的一阶方程,在单独使用它的情况下无法求解出u和v的具体值。因此,在LK光流方法中必须引入额外的约束条件来完成计算过程。具体来说,在LK光流算法中我们假设在一个给定尺寸为w×w的像素窗口内所有像素都具有相同的运动模式。基于这一假设,在该窗口内我们可以建立w²个独立的运动约束方程。

于是整个方程为:

问题32:多层光流
将光流建模为优化问题,则必须假设初始估计值位于最优解的附近,并能在一定程度上保证算法收敛性。当相机运动速度较快时,在前后图像之间建立显著差异的情况下,单层图像光流法容易陷入局部极小值。此时单层图像光流法容易陷入局部极小值。为了改善这一情况,在计算光流时,通常从图像金字塔的顶层开始处理,并结合下一层的结果作为初始估计。
问题33:直接法
(1)直接法的思路
在直接法中,由于没有特征匹配,我们无从知道哪一个p2与P1对应着同一个点。直接法的思路是根据当前相机的位姿估计值寻找P2的位置。但若相机位姿不够好,p2的外观和p1会有明显差别。于是,为了减小这个差别,我们优化相机的位姿,来寻找与P1更相似的P2。这同样可以通过解一个优化问题完成,但此时最小化的不是重投影误差,而是光度误差,也就是P的两个像素的亮度误差。
(2)直接法的分类
- P来源于稀疏关键点,则被称为稀疏直接法 。这种方法无需计算描述子,并且仅使用数百个像素点进行处理。
- 当P由部分像素构成时,则称为半稠密(Semi-Dense)的直接法 。从式(8.19)可以看出,在 pixels 处梯度为零的情况下,
整项雅可比矩阵项值将趋近于零,在运动增量估计上不会产生显著影响。
因此可以考虑仅对具有明显梯度的方向进行采样,
从而实现半稠密级别的重构。- 当P由全部 pixels 组成时,则被称为稠密直接法 。这种方法需要对所有 pixels(通常涉及数十万到上百万个)进行计算,
因此其计算量极大,在现有 CPU 上无法实现实时运算,
必须依赖 GPU 加速才能完成。稠密重构虽然在运动估计中具有较高的精度要求,
但由于在这些区域中缺乏明显的梯度信息,
在实际应用中也难以获得精确的位置估计结果。
(3)直接法优缺点
优点:
- 可以省去计算特征点、描述子的时间。
- 只要求有像素梯度即可,不需要特征点。因此,直接法可以在特征缺失的场合下使用。比较极端的例子是只有渐变的一幅图像。它可能无法提取角点类特征,但可以用直接法估计它的运动。
- 可以构建半稠密乃至稠密的地图,这是特征点法无法做到的。
缺点:
- 高度非线性的影响 在相机姿态估计过程中 梯度下降方法被广泛应用于解决这一问题 但这种方法的核心在于最小化目标函数 该函数基于图像像素的空间分布特性具有高度非线性 特别是当相机发生平移运动时 这种特性会导致优化过程陷入局部极小值 特别是当运动幅度较大时 直接法可能无法收敛到全局最优解
- 缺乏独特特征 由于单一像素无法提供足够的特征信息 因此我们需要通过分析较大的图像区域或计算两组像素之间的相关性来提取有用的特征信息 这种方法在实际应用中具有较高的复杂性和计算开销
- 对光照变化敏感 灰度值不变这一假设在实际应用中过于理想化 当相机发生自动曝光调整时 整个图像会经历亮度的变化 这种变化会破坏灰度不变的基本假设 从而导致基于灰度差分的方法失效 针对这一问题 现实中的许多直接法都会引入额外的参数来估计曝光状态 从而保证算法在光照变化情况下的鲁棒性和有效性
问题34:光流法和直接法的区别?优化的变量是什么?
光流法和直接法的区别
- 光流法: 是一种描述像素随着时间在图像之间运动的方法。
- 直接法: 我们并不需要知道点与点之间的对应关系,而是通过最小化是光度误差来求得。
直接法源自光流变的发展。
光流表征了图像中像素的运动特性;
比较而言,在直接法中通常伴随着一个相机运动模型的估计过程。

光流主要估计了像素之间的纯平移运动,
然而,
它并未考虑到以下几点:
- 忽略了相机自身的几何结构信息
- 未考虑相机的旋转和平移变换以及图像的比例缩放
- 边缘像素通常难以准确计算光流
- 直接法则充分考虑了这些因素
光流法与直接法优化的相关变量
光流法旨在计算各特征点的空间变化量与时间变化量之间的关系,并通过建立约束方程实现对各参数的估计;
直接法则通过最小化观测数据与模型预测结果之间的差异来确定相机位姿T的具体值;
两者在不同层面实现了对同一场景几何特性的精确描述与建模。
第9讲 后端1
问题35:滑动窗口法
(1)滑动窗口法定义
控制计算规模的做法有很多,最简单的控制BA规模的思路,是仅保留离当前时刻最近的N个关键帧,去掉时间上更早的关键帧。于是,我们的BA将被固定在一个时间窗口内,离开这个窗口的则被丢弃,这种方法称为滑动窗口法 。
(2)滑动窗口法步骤
- 我们需要在窗口中新增一个关键帧,以及它观测到的路标点。
- 我们需要把窗口中一个旧的关键帧删除,也可能删除它观测到的路标点。
问题36:共视图
所谓共视图是指那些与当前相机共享观测的关键帧所形成的图表。在BA优化过程中我们依据特定原则从共视图中选取若干关键帧及路标进行优化计算
第10讲 后端2
第11讲 回环检测
问题37:回环检测意义
回环检测在SLAM系统中至关重要。一方面,在长时间内准确估计轨迹和地图是其关键问题之一。另一方面,在当前数据与所有历史数据之间建立了联系后,则能够通过回环检测实现精确定位。
第12讲 建图
问题38:逆深度
逆深度可用于减少远处物体所导致的误差(视差应较小),这有助于提高精度。
举个例子就能明白:自然场景中物体深度变化显著(如50米至100米),尽管视差很小(仅一两像素),但以深度值表示时差异明显(相差59米),而采用逆深度则差异缩小至微小数值。
若直接以深度值表示两者差异为59米(相差约一倍),而采用逆深度表示法则能将差距缩减至约4.76毫米。
这种情况下使用逆_depth_表示法能将差距从59米缩减至约4.76毫米。

