视觉SLAM常见面试题 (上)

文章目录

        • 1、 视觉SLAM方法一般分为 特征点法、直接法、和光流法,简述概念,及优缺点。
          • 特征点法
          • 直接法
          • 光流法
        • 2、 视觉SLAM常用相机包括:单目,双目,RGB-D相机,简述优缺点、常用的相机型号?
          • 单目
          • 双目
          • RGB-D
        • 3、 关键帧是什么?作用?如何选择关键帧?
        • 4、 SLAM中为什么要引入李群李代数?关系?
        • 5、 对极约束(对极几何)、PnP、ICP 。 P3P求解过程,缺点及改进 EPNP 概述
          • 对极约束
          • PNP
          • ICP
          • P3P求解过程:
        • 6、 单目SLAM初始化过程?单目SLAM流程?
        • 7、 三角测量不稳定性的缓解方法?
        • 8、 单目视觉SLAM尺寸漂移产生原因?解决办法?
        • 9、 RANSAC和鲁棒核函数区别?
        • 10、 SLAM后端一般有两种方法:滤波方法和非线性优化方法,优缺点?
          • 滤波
          • 优化
        • 11、 SLAM中回环检测(闭环检测)目的?方法?
        • 12、 SLAM中的kidnap(绑架问题)?
        • 13、 词袋模型在回环检测和重定位中的区别?
        • 14、 地图点的构建方法?

1、 视觉SLAM方法一般分为 特征点法、直接法、和光流法,简述概念,及优缺点。

特征点法

——根据提取和匹配特征点来估计相机运动,优化的是重投影误差,对光照变化不敏感,是比较成熟的方案。常见的开源方案:ORB_SLAM
优点:
① 特征点本身对光照、运动、旋转比较不敏感,所以较稳定
② 相机运动较快(相对直接法来说)也能跟踪成功,鲁棒性较好
③ 研究时间较久,方案较成熟
缺点:
① 关键点提取、描述子计算、特征点匹配耗时长
② 特征点丢失场景无法使用
③ 只能构建稀疏地图
④ 只使用特征点,丢弃大量可能有用的信息

直接法

——根据相机的亮度信息估计相机运动,可以不需要计算关键点和描述子,优化的是光度误差,根据使用像素数量可以分为稀疏、半稠密、稠密。常见的开源方案:SVO、LSD_SLAM
优点:
① 速度快,可以省去特征点提取、计算、匹配时间
② 只要图像有深度即可
③ 可以用在特征缺失的场合,比如白墙(特征点法在该情况下会急速变差)
④ 可以构建稀疏、半稠密、稠密地图
缺点:
① 灰度不变假设,易受光照影响
② 要求相机运动较慢,或相机采样频率较高(可以用图像金字塔改善)
③ 单个像素或像素块区分度不强,采用的是数量代替质量的策略

光流法

——用光流跟踪代替描述子计算和特征点匹配,估计相机运动。
优点:
① 不需要计算描述子和匹配特征点
② 只会特征跟丢,很少会误匹配
缺点
① LK光流的结果依赖于图像梯度,局部梯度不能预测长期图像走向 (可以用多层光流来解决)
② 图像边界的点,光流不好追踪 (直接法弥补了这个缺点)
③ 灰度不变假设,易受光照影响

2、 视觉SLAM常用相机包括:单目,双目,RGB-D相机,简述优缺点、常用的相机型号?

单目

——种类多
优点
① 应用广,成本低
② 体积小,标定简单,硬件搭建简单
③ 可用于室内、外 (适当光照下)
缺点
① 纯视觉传感器通病:光照变化较大、纹理特征缺失、快速运动导致模糊的情况下无法使用
② 尺度不确定性,需要专门初始化
③ 必须通过运动估计深度 (帧间匹配三角化)

双目

——ZED、小觅、Indemind
优点
① 相比单目,静止时能根据左右相机视差计算深度
② 基线距离越大,测量距离越远
③ 可用于室内、外 (适当光照下)
缺点
④ 纯视觉传感器通病:光照变化较大、纹理特征缺失、快速运动导致模糊的情况下无法使用
① 双目标定计算复杂
② 用视差计算深度比较耗资源

RGB-D

——Kinect系列、realsence系列、Orbbec
优点:
① 使用物理测距方法测量深度,在无光照、快速运动时都可以测距
② 相对双目,输出帧率较高,更适合运动场景
③ 深度值较准 (结合RGB信息,容易实现手势识别、人体姿态估计等应用)
缺点:
① 测量范围窄,易受日光影响,只能用于室内
② 标定较复杂
③ 分辨率不能很高 (VGA:640x480)
④ 遇到透射材料、反光表面、黑色物体时表现不好,造成深度图缺失

3、 关键帧是什么?作用?如何选择关键帧?

概念:在局部一系列普通帧中选出一帧作为局部帧的代表。(班长就是关键帧)
作用:面向后端优化的算力与精度的折中
选择标准
① 如果当前帧和最新关键帧之间跟踪的特征点的平均视差超出某个特定阈值,则将该帧视为新关键帧 【避免关键帧太密集】;
② 跟踪点的特征数量低于某一阈值 【避免跟踪特征完全丢失】
:当出现纯旋转的时候特征点无法被三角化,无法计算出旋转值,也就无法计算跟踪点间的平均视差。为了解决这一问题,采用短时的陀螺仪观测值来补偿旋转,从而计算出视差,这一过程只应用到平均视差的计算,不会影响真实的旋转结果。

4、 SLAM中为什么要引入李群李代数?关系?

原因:旋转矩阵自身是带有约束的,R是正交矩阵且行列式为1,他们作为优化变量时,会引入额外的约束,优化变的困难。通过李群李代数的转换关系,把位姿估计变成无约束的优化问题。
关系
① 李群—对数变换—》李代数;李群《—指数变换—李代数
② 李群——矩阵;李代数——向量
③ 矩阵求导,加法不封闭;而李代数向量,加法封闭

5、 对极约束(对极几何)、PnP、ICP 。 P3P求解过程,缺点及改进 EPNP 概述

**

对极约束

——(单目)一般使用八点法计算本质矩阵E.然后通过SVD分解出相机的运动R和t;再通过三角测量求解三维点的坐标
概念:相机在不同位置拍摄了两幅图像,如果一个空间点P在两幅图像上分别有两个成像点。已知左图成像点为p1,那么右图成像点P2一定在 相对于p1的极线上 (可以简洁的给出匹配点的空间位置关系,相对暴力匹配极大减少待匹配的点的数量)。
RANSAC:有外点(误匹配)时

PNP

——输入数据为3对3D-2D匹配点;利用三角形的相似性,求解3个2D投影点在相机坐标系下的3D坐标;然后根据3D-3D的点对,计算相机的运动R,t。
线性方法:先求相机位姿,再求空间点位置;非线性优化:把它们都看成优化变量,放在一起优化

ICP

—— 对于一副点云中的每个点,用迭代最近法,在另一副点云中计算匹配点;极小化匹配点间的匹配误差,计算位姿R和t;然后将位姿作用于点云,再重新计算匹配点

**

P3P求解过程:

——输入数据为3对3D-2D匹配点;利用三角形的相似性,求解3个2D投影点在相机坐标系下的3D坐标;然后根据3D-3D的点对,计算相机的运动R,t。
P3P缺点:只利用3个点的信息,难以利用更多信息;受噪声或者误匹配影响
P3P改进: EPNP——利用更多信息,且迭代的方式对相机位姿进行优化,以消除噪声影响

6、 单目SLAM初始化过程?单目SLAM流程?

单目SLAM初始化过程:是通过前两帧之间2D-2D匹配点,使用对极几何计算出相机的R、t;并将该t初始化为单位1,解决单目的尺度不确定性问题。且在初始化时,要保证两帧图片之间的运动必须包括平移(不能只是纯旋转)。
单目SLAM流程:单目初始化—PnP—三角化—PnP—三角化……。具体方法是依赖对极几何的相关知识,根据2D-2D匹配点对计算本质矩阵(或基本矩阵),并对其进行分解得到相机运动,再依据三角化原理计算特征点深度。至此即得到3D-2D匹配点对,后续的相机位姿的估计就是PnP问题了,后续3D点的计算仍采用三角化方式。

7、 三角测量不稳定性的缓解方法?

方法:
① 使用可信的位移t,使角度变换限制在一个可信范围
② 使用深度滤波器。假设特征点误差分别符合高斯分布,多次观测方差会不断缩小,即滤波

8、 单目视觉SLAM尺寸漂移产生原因?解决办法?

产生原因:使用单目估计相机位姿和3D点坐标时,需要通过对极几何、三角化进行估计,在这个过程中会产生误差(特征点精度误差、计算误差);经过多帧累积,误差变大,造成尺度漂移
解决办法
① 视觉与IMU融合,借助IMU测得的高帧率的加速度、角速度对视觉进行修正、补充;
② 后端优化时,把尺度作为一个优化变量进行优化,可以减少尺度漂移。

9、 RANSAC和鲁棒核函数区别?

:都是为了解决outlier的问题
RANSAC:从数据中选择正确的匹配进行估计
鲁棒核函数:剔除野值。直接作用在残差上,对残差进行饱和函数运算,限制野值对误差函数的影响

10、 SLAM后端一般有两种方法:滤波方法和非线性优化方法,优缺点?

滤波

思路:假设马尔科夫性,认为k时刻状态只与k-1时刻状态有关,而与再之前的无关。用前一个时刻的值来估计下一个时刻,以EKF为代表。
优点
① 形式简洁、应用广泛;
② 在计算资源受限、待估计量较简单时,EKF为代表的滤波比较有效,常用于激光SLAM。
缺点
① 滤波器方法基于马尔科夫性,对于很久之前时刻的数据难以处理;
② 存在非线性误差,扩展卡尔曼滤波器只在固定点作一次线性化,但在离开工作点较远处不一定能够近似整个函数;
③ 不适用于大型场景,扩展卡尔曼滤波需要存储状态量的均值和方差,并对其更新维护,若状态中加入路标,存储量是相当大。

优化

思路:考虑k时刻状态与之前所有状态的关系,把所有状态看成变量,把运动方程和观测方程看成变量间的约束,构造误差函数,然后最小化这个误差的二次型。
优点
① 把所有数据放在一起优化,可以实现全局优化
② 根据BA的稀疏性和边缘化,通过图优化可以实现实时
缺点
① 包含大量特征点和相机位姿的稠密BA计算量很大,受硬件资源的影响,无法实时;
② 早期通过梯度下降法求解BA,矩阵求逆的时间复杂度为O(n3)。

11、 SLAM中回环检测(闭环检测)目的?方法?

目的:有效地检测相机经过同一个地方,然后构建一个约束,从而减少累积误差
方法:利用词袋来进行回环检测,通过单词来度量图像间的相似性评分 (图像的相似性=word的相似性)
词袋(DBoW)——就是一个大的数据库字典,通过对图像提取特征点然后训练成不同的单词,用单词来描述一幅图像。
单词选择:k-means——从图像中提取了N个特征点,需要分成k个单词的字典。我们可以先随机选取k个中心点;对N个特征点,计算最近的k点作为聚类;再对每一类重新计算中心点;如果中心点收敛了,则退出;否则继续迭代。
k-means缺点——效率低。所以:用kd-tree解决——每一个根节点分为k个分支,深度为d,可容纳k^d个单词;对数级别查找效率

12、 SLAM中的kidnap(绑架问题)?

绑架问题——重定位问题。指机器人在 缺少之前位置信息 的情况下,或 跟踪丢失 的情况下,如何进行重定位,确定当前位姿。

13、 词袋模型在回环检测和重定位中的区别?

词袋模型在SLAM中的应用:当前帧与关键帧的特征匹配、重定位的特征匹配、回环检测的特征匹配;(第一个是后两个的基本原理,后两个是应用场景)
:连续帧间特征匹配采用的并不是词袋模型。
(1)重定位:主要是通过当前帧与关键帧的特征匹配,定位当前帧的相机位姿。
(2)回环检测:优化整个地图信息,包括3D路标点、及相机位姿、相对尺度信息。回环检测提供了当前帧与所有历史帧的关系

14、 地图点的构建方法?

单目:关键帧匹配构造、普通帧构造
双目:立体匹配、快匹配
RGB-D:彩色深度图对齐得到深度d,再根据彩色(u,v)坐标,根据相机投影公式计算3D点坐标

你可能感兴趣的:(视觉SLAM)