SLAM面试笔记(3) - 视觉SLAM
目录
1 紧耦合、松耦合的区别
(1)紧耦合和松耦合的区别
(2)紧耦合和松耦合的分类
(3)为什么要使用紧耦合
2 SIFT和SUFT的区别
3 视差与深度的关系
4 闭环检测常用方法
5 描述PnP算法
6 梯度下降法、牛顿法、高斯-牛顿法的区别
7 什么是极线约束
8 单目视觉SLAM中尺寸漂移是怎么产生的
9 描述特征点法和直接法的优缺点
10 边缘检测算子有哪些?
11 为什么进行视觉和惯性传感器的融合?
12 卡尔曼滤波
13 ORB SLAM有什么缺点?
14 评价轨迹误差的指标
15 ORB SLAM里面的Local Map和VINS-mono里面的滑窗法有什么区别?
16 SLAM中采用逆深度的原因?
17 ORB-SLAM中的特征是如何提取的?如何均匀化的?
18 解释SLAM中的绑架问题
19 EKF和BA的区别
20 如何求解 A x = b 的问题
21 边缘检测算子有哪些?
22 介绍下你熟悉的非线性优化库
23 室内SLAM与自动驾驶SLAM有什么区别?
24 重定位和回环检测的区别是什么?
25 单应矩阵H和基础矩阵F的区别是什么?
26 视觉SLAM方法的分类和对应的特点分析
27 关键帧的作用是什么?
28 如何选择关键帧?
29 相机传感器的分类及其优缺点是什么?
30 ROS中rosrun和roslaunch的区别是什么?
31 请描述视觉SLAM的框架以及各个模块的作用是什么?
32 SLAM中的绑架问题是什么?
33 SLAM后端有滤波方法和非线性优化方法,这两种方法的优缺点是什么?
34 什么是BA优化?
35 描述一下RANSAC算法
36 欧氏变换、相似变换、仿射变换、射影变换的区别?
37 ICP算法的原理是什么?简要叙述一下
38 四元数的相关概念是什么,请解释一下。
39 点云配准算法目前有哪些?
参考文章 12023最新SLAM面试题汇总(随时更新中) - 知乎
1 紧耦合、松耦合的区别
(1) 紧耦合和松耦合的区别
紧耦合: IMU与相机共同建立运动与观测方程组后进行状态估计。其优势是可以避免中间状态的累积误差从而提升精度但会导致系统状态向量维度急剧上升并带来较大的计算负担。松耦合: IMU与相机各自完成自身运动估计随后对位姿估计结果进行融合。这种方案的优势在于计算量相对较小但容易积累误差。实现方式上: 松耦合一般采用卡尔曼滤波算法而紧耦合则可选择基于滤波框架或利用ceres、g2o等优化库。

(2)紧耦合和松耦合的分类
同步视觉惯性 odometry方法基于滤波优化技术
(3)为什么要使用紧耦合
在单一条件下(单目视觉或IMU),都无法单独完成Pose估计任务:视觉传感器存在尺度不确定性问题、而IMU系统则会因零偏而导致定位漂移。
在弱coupling框架下(松耦合中),视觉内部的BA优化阶段缺少相应的IMU信息,在整体优化层面并不能达到最优解。
采用强coupling框架(紧耦合)能够实现对所有运动参数和测量数据进行全面建模,从而显著提升优化效果。
2 SIFT和SUFT的区别
构建图像金字塔:
SIFT特征基于不同尺寸图像与高斯差分滤波器进行卷积运算生成;
SURF特征则基于原始图像与不同尺寸方框滤波器进行卷积操作生成。特征描述子:
SIFT特征求得128维描述子(4×4×8),而SURF特征求得64维描述子(4×4×4)。特征点检测方法:
SIFT首先执行非极大值抑制去噪,
进而剔除低对比度噪声点,
最后通过Hessian矩阵进一步去除边缘响应异常大的点;
SURF则先基于Hessian矩阵确定候选关键点,
最后执行非极大值抑制筛选出最终的关键点。特征点主方向:
SIFT特征求取正方形区域内的梯度幅值直方图,
直方图中最大值对应主方向(可有多重主方向);
SURF特求则在圆形区域内计算各扇形范围内的x、y方向Haar小波响应模,
模最大的扇形区域方向作为主方向对应于最大的直方图 bins。
3 视差与深度的关系
在相机完成校正后,则有 d / b = f / z,其中

代表左右图像横坐标之差的变量被称为视差,
其中b代表基线长度,
f为相机的焦距参数,
z代表物体的深度。
记住这个公式相对容易,
当物体深度和相机焦距固定时,
增加基线长度将导致观察到的视差增大。

4 闭环检测常用方法
ORB SLAM主要通过词袋模型进行闭环检测,并从中选出候选帧。
然后通过求解Sim3算法来确定最合适的关键帧。LSD SLAM中的闭环检测主要依据视差及关键帧之间的连接关系来确定候选帧。
然后对每个候选帧与其测试的关键帧分别进行双向Sim3跟踪计算。
5 描述PnP算法
在空间直角坐标系中已知一组三维点及其二维图像像素位置的前提下,通过内参矩阵参数求解相机的姿态与位置信息。

目前一共有两种解法
目前存在两大核心场景
6 梯度下降法、牛顿法、高斯-牛顿法的区别
在BA优化、PnP、直接法中都涉及到了非线性优化问题;这些方法都是针对非线性最优化问题提出的;通过对该类问题进行详细阐述,则可以得到梯度下降法和牛顿法。

梯度下降法 是一种一次最优化算法,并被称为最速下降法。 为了找到函数局部极小值的目的,在当前点计算其梯度(或其近似值),然后沿负梯度方向以指定步长移动至下一个迭代点以完成迭代搜索过程。因此主要利用当前点的一阶导数信息。该方法具有贪心特性容易陷入锯齿状路径。

该方法属于二阶最优化技术,在优化过程中主要基于迭代点处的一阶导数(梯度)和二阶梯度(Hessian矩阵)对目标函数进行二次多项式近似。这种基于高斯-牛顿模型的方法不仅能够有效求解非线性方程组的解集问题,并且能够自然地扩展至多维空间中的非线性方程组求解问题。然而其主要缺陷在于计算Hessian矩阵的开销过大。

对于非线性问题,在解决时通常会采用一阶泰勒展开的方法,并对其进行平方运算。而对于《高斯-牛顿法》,其基本思路是对目标函数在初始猜测点附近进行一次泰勒展开,并对变量Δx求导。

对牛顿法的H矩阵进行替换,但是

有可能为奇异矩阵或变态,Δ x也会造成结果不稳定,因此稳定性差。

列文博格法 是一种通过向高斯-牛顿法中加入信赖区域来限定Δx的变化范围的方法。其基本思想是通过引入拉格朗日乘子来解决约束优化问题,在这种情况下,优化目标是从Δx的信赖区域内寻找最速下降方向。


7 什么是极线约束
极线约束涉及同一个点在两个不同视角图像上的投射关系
已知左图中对应于p1的特征点p2也存在,则右图中对应的特征点p2必然位于相对于p1的位置所确定的一条特定直线上**(如图所示)。
两相机中心连线O₁O₂被称为基线(baseline),其与各像平面image₁和平面image₂分别相交于基底中心e₁和平面image₂处则构成了相应的基本参数(base-line parameters)。
极平面(epipolar plane)PO₁O₂与各像平面image₁和平面image₂分别相交于两条直线e₁P₁和平面e₂P₂这两条直线即为所谓的两条极线(epipolar lines)。
如果未知世界空间中的一个三维物体某一点P在image₁中的二维特征对应坐标为(x,y),那么该物体空间中的该三维空间位置必然满足上述几何关系条件(如前所述)**。

8 单目视觉SLAM中尺寸漂移是怎么产生的
原文链接:
单目SLAM中的尺度漂移是什么
- 在使用单目相机估计相机姿态和3D坐标时,需要对极几何、三角化估计,这个过程中会产生累积误差,进而导致尺度的不一致,产生尺度漂移。
- 单目SLAM产生尺度漂移的根本原因是单目相机无法根据一张图片就会的图中物体的大小信息,这就是尺度漂移的根源。
解决办法
9 描述特征点法和直接法的优缺点
特征点法
- 优点: 1. 避免了传统方法的过强假设,并具有更高的准确性;2. 能适应快速运动环境,并较之直接法实现较快的工作效率;3. 该方法与鲍德温算法相比具有的显著优势在于其良好的鲁棒性。
- 缺点: 1. 计算开销较大,在实际应用中存在一定的局限性;2. 在仅有较少关键点的情况下可能难以有效运行;3. 该方法仅能生成稀疏的地图表示。
直接法
10 为什么进行视觉和惯性传感器的融合?
利用可获取的视觉信息弥补IMU产生的零偏差,并通过相应的算法处理降低由于零偏差引起的位姿发散和累积误差。同时为视觉系统提供实时可靠的定位能力。
11 卡尔曼滤波
该方法主要通过运动学模型推导出系统状态的概率分布参数。
随后融合观测信息与预测误差协方差矩阵计算出最优卡尔曼增益。
随后利用这一增益对状态估计量及误差协方差矩阵进行更新以得到更为精确的状态估计结果。
该方法的基本思路是基于以下假设建立了一种改进型的状态估计算法

构真实值和估计值之间的协方差矩阵,然后通过对对角线元素求和获得方差表达式,我们的修正公式是需要使得方差最小,因此把方差表达式对求导就可以获得卡尔曼增益的表达式,然后从先验到预测值的方差公式可以通过求预测值和真实值的协方差矩阵获得。
粒子滤波:
粒子滤波最常用的是SIR,其算法是用运动方程获得粒子的状态采样,然后用观测方程进行权值更新,通过新的粒子加权平均就获得新的估计状态,最后非常重要的一步就是重采用。
粒子滤波的推导中概念有很多,最重要的推导过程是重要性采样过程,其思路就是我原本的采样分布是不知道的,我如何从一个已知的分布中采样,通过加权的方式使得从已知的分布中采样的粒子分布和原本未知的分布中采样的粒子分布结果一致,从而引入SIS粒子滤波,再进一步加入重采样后就引入了SIR粒子滤波。
12 ORB SLAM有什么缺点?
- 特征点和描述子的提取速度相对较低,在将ORB SLAM移植到手机等嵌入式设备时无法实现实时处理
- 地图呈现为稀疏的三维点云数据结构
- 该算法对运动物体具有较高的检测灵敏度
13 评价轨迹误差的指标
在工程实践中

,和真实轨迹

,其中

,那么我们可以定义一些误差指标来描述它们之间的差别。
(1)绝对轨迹误差(Absolute Trajectory Error,ATE)

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

其中trans表示取括号内部变量的平移部分。
【(3)Relative Position and Orientation Error (RPE)
其中trans表示取括号内部变量的平移部分。

14 ORB SLAM里面的Local Map和VINS-mono里面的滑窗法有什么区别?
- Local Map主要致力于优化当前帧及其共视关系的关键帧的位姿,并结合当前帧与各共视帧所获取的地图点信息,在此过程中未进行边缘化处理以保留先验信息。
- 相比之下,VINS-mono采用了较为复杂的滑动窗口机制,需要通过边缘化方法来保留必要的先验信息。
15 SLAM中采用逆深度的原因?
逆深度(Inverse depth)是一种近年来在SLAM研究领域广泛应用的重要参数化方法。
在极线搜索与块匹配的过程中,默认假设深度值服从高斯分布。
然而经过深入思考后发现:
- 在一些室外应用环境中可能会遇到位于极远处甚至无限远处的点;这些情况难以用高斯分布准确描述;
- 同时,在Bundle Adjustment过程中,默认假设参数空间呈现高度非线性和多维的特点;其中对于3D特征点的优化会导致计算负担显著增加;
当这些特征点远离观察者的位置时会带来更大的误差;因此为了有效降低代价函数的变化幅度;必须对该类特征点进行较为激进的调整;
于是,在仿真过程中发现了这一概念。人们通过实验研究发现:当将深度数据取其倒数(称为逆深度)时能够获得较为均匀的空间分布。随后随着应用范围的扩展到各种复杂场景中去,在这种情况下逆深度展现出良好的数值稳定性。这使得它在多个领域都得到了广泛应用。
16 ORB-SLAM中的特征是如何提取的?如何均匀化的?
ORB描述子的提取流程:
(1)将输入图像预处理后转换为灰度图像;
(2)设置参数包括特征点数量nfeatures、尺度scaleFactor、金字塔层数nlevel、初始阈值iniThFAST以及最小阈值minTh FAST等参数;
(3)构建金字塔图像采用8层结构缩放因子为1.2通过多级缩放原图可以获得8层金字塔结构;
(4)计算特征点:首先将图像划分为网格单元每个单元格大小设定为WW=3030像素随后遍历每一个网格单元对其中的区域应用FAST算法首先尝试使用设定的初始阈值ini Th FAST若在该区域无法找到足够的关键点则切换至较小的最小阈值min Th FAST继续搜索以确保能够检测到特征点。
(5)对所有提取到的关键点利用四叉树进行特征点均匀化
四叉树进行特征点均匀化:<>
(6)对上述所保存的所有节点中的特征点计算主方向,利用灰度质心的方法计算主方向
(7)对图像中每个关键点计算其描述子,值得注意的是,为了将主方向融入BRIEF中,在计算描述子时,ORB将pattern进行旋转,使得其具备旋转不变性;
17 解释SLAM中的绑架问题
绑架问题就是重定位, 是指机器人在缺少之前位置信息的情况下,如何去确定当前位姿。
例如当机器人被安置在一个已经构建好地图的环境中,但是并不知道它在地图中的相对位置,或者在移动过程中,由于传感器的暂时性功能故障或相机的快速移动,都导致机器人先前的位置信息的丢失,在这种情况下如何重新确定自己的位置。
初始化绑架可以阐述为一种通常状况初始化问题,可使用蒙特卡洛估计器,即粒子滤波方法,重新分散粒子到三维位形空间里面,被里程信息和随机扰动不断更新,初始化粒子聚集到/收敛到可解释观察结果的区域。追踪丢失状态绑架,即在绑架发生之前,系统已经保存当前状态,则可以使用除视觉传感器之外的其他的传感器作为候补测量设备。
18 EKF和BA的区别
(1)基于马尔可夫假设实现了一种非线性滤波算法,在其运行过程中只考虑当前时刻的状态信息与前一时刻之间的关系。采用全部的历史数据完成全局定位与建图。
(2)为了提高计算精度,在实现过程中进行了局部线性化处理,在工作点附近进行了一阶泰勒展开近似,并且此方法仅适用于工作点附近的情况。在每次迭代过程中会更新状态估计值,并通过新的估计值重新构建对应的泰勒展开模型;因此我们可以将Bundle Adjustment视为仅执行一次迭代更新的状态估计。
19 如何求解 A x = b 的问题
20 边缘检测算子有哪些?
边缘检测一般分为三步: 分别是滤波、增强、检测。基本原理都是用高斯滤波器进行去噪,之后在用卷积内核寻找像素梯度。
常用有三种算法: canny算子,sobel算子,laplacian算子
- canny算子:一种完善的边缘检测算法,抗噪能力强,用高斯滤波平滑图像,用一阶偏导的有限差分计算梯度的幅值和方向,对梯度幅值进行非极大值抑制,采用双阈值检测和连接边缘。
- sobel算子:一阶导数算子,引入局部平均运算,对噪声具有平滑作用,抗噪声能力强,计算量较大,但定位精度不高,得到的边缘比较粗,适用于精度要求不高的场合。
- laplacian算子:二阶微分算子,具有旋转不变性,容易受噪声影响,不能检测边缘的方向,一般不直接用于检测边缘,而是判断明暗变化。
21 介绍下你熟悉的非线性优化库
22 室内SLAM与自动驾驶SLAM有什么区别?
室内SLAM
- 应用场景: 主要应用于室内环境中的机器人定位和导航,比如服务机器人和清洁机器人等。
- 应用环境: 室内的话,光照会稳定些,特征点一般也很少在无穷远。但是室内可能会有比较多的白墙,所以点特征可能不够,有的时候需要提取线特征作为辅助。
- 传感器种类: 它通常使用激光雷达、摄像头等传感器进行定位和建图,实现精度较高的室内导航。
自动驾驶SLAM
- 应用场景: 则是应用于汽车等车辆的自主驾驶技术中的一个重要组成部分。
- 应用环境: 室外光照变化会比较多,因此对相机的高动态效果有比较高的要求,而且一般自动曝光的曝光时间差异也会比较大。另外室外的特征很多点离相机的距离会比较远,这些离得很远的特征点能够提供很好的对姿态的约束,但是对平移的约束却不够。
- 传感器种类: 它需要利用多种传感器,如激光雷达、摄像头、雷达等,对车辆周围的环境进行感知和建图,并实时更新车辆的位置和姿态信息,以实现自主驾驶。
23 重定位和回环检测的区别是什么?
重定位 是跟丢以后重新找回当前的姿态,通过当前帧和关键帧之间的特征匹配,定位当前帧的相机位姿。重定位就是重新定位,当前图像因为和最近的图像或者局部地图之间缺乏足够的匹配,导致机器人无法确定自己的位姿。此时机器人需要观察周围环境,并且从已有地图中寻找可靠的匹配关系,一般是关键帧信息,这样就可以根据已有信息“重新”估计机器人的姿态。
回环检测 是为了解决位置估计随时间漂移的问题。主要是通过识别曾经到过的场景,将其与当前帧对应,优化整个地图信息,包括3D路标点、相机位姿和相对尺度信息。回环的主要目的是降低机器人随时间增加,轨迹中累积的漂移,一般发生在建图过程中。
重定位和回环检测的区别: 重定位主要为了恢复姿态估计,而回环是为了解决漂移,提高全局精度。二者容易混淆的原因是重定位通常也需要找到与之前帧的对应关系求解出姿态,而这可以通过回环来完成,很多算法是可以共享的。
24 单应矩阵H和基础矩阵F的区别是什么?
(1)基础矩阵F和单应矩阵H所求相机获取图像状态不同而选择不同的矩阵。
(2)本质矩阵E和基础矩阵F之间相差相机内参K的运算。
(3)只旋转不平移求出F并分解出的R,T和真实差距大不准确,能求H并分解得R。
25 视觉SLAM方法的分类和对应的特点分析
视觉SLAM主要包含基于提取和匹配特征点的方法用于估计相机运动,并旨在最小化重投影误差实现较高的精度,在实际应用中表现出对光照变化具有较好的鲁棒性。这类方法的主要代表算法包括如ORB-SLAM等开源解决方案。
此外,在相机模型的基础上建立基于亮度信息的方法可直接用于实时SLAM任务实现快速定位与环境重建。这类方案无需计算关键特征点及其描述符即可完成运动估计工作,并且其优化目标均是基于光度误差进行迭代求解以提升定位精度。
进一步地,在实际应用中根据所使用的像素数量不同将这类方法进一步分为稀疏、半稠密及稠密三种类别,并且针对不同场景需求采用了相应的自适应策略以提高算法性能。
26 关键帧的作用是什么?
关键帧是一种广泛应用的技术手段,在降低需要进行优化的帧的数量的同时,并且能够反映相邻的帧。
27 如何选择关键帧?
选取关键帧的指标:
(1)距离上一关键帧的帧数是否足够多(时间)。运动很慢的时候,就会选择大量相似的关键帧,冗余、运动快的时候又丢失了很多重要的帧。
(2)距离最近关键帧的距离是否足够远(空间)运动。相邻帧根据姿态计算运动的相对大小,可以是位移,也可以是旋转,或者二者都考虑了。
(3)跟踪质量(主要根据跟踪过程中搜索到的点数和搜索的点数比例)/共视特征点。这种方法记录了当前视角下的特征点数或者视角,当相机离开当前场景时才会新建关键帧,避免了上一种方法存在的问题,缺点是比较复杂。
28 相机传感器的分类及其优缺点是什么?
在视觉SLAM领域中广泛使用的相机主要有单目相机、双目相机以及深度相机。
单目相机
单目相机的优势主要体现在以下几个方面:
(1)应用最为广泛且价格相对较低。
(2)体积小巧且标定过程较为简单,并且硬件搭建相对简便。
(3)在具备良好光照条件下能够适应内外不同环境需求。
然而该种方式也存在一些局限性:
(1)作为纯基于视觉传感器的工作特性,在光照变化较大、纹理特征不足以及快速运动导致模糊的情况下无法正常工作。
(2)在SLAM过程中由于缺乏尺度基准而存在初始化困难的问题。
双眼摄像头
双眼摄像头的优势主要体现在以下几个方面:
其主要缺陷包括:
深度感知设备
该类设备的优势主要体现在以下几个方面:
29 ROS中rosrun和roslaunch的区别是什么?
更多ROS面试题:[SLAM面试笔记(5) — ROS面试_几度春风里的博客-博客]( "SLAM面试笔记5 — ROS面试_几度春风里的博客-博客")
- roslaunch可以启动多个节点和包,而rosrun只能启动一个节点和包。
- roslaunch可以在启动节点时设置参数,而rosrun不能。
- roslaunch可以启动多个节点之间的依赖关系和顺序,而rosrun不能。
总结以上分析可知, 相较于rosrun, roslaunch更具灵活性与强大功能, 并且能够有效地组织ROS节点及包之间的关系
30 请描述视觉SLAM的框架以及各个模块的作用是什么?
(1)传感器信息读取。在视觉SLAM中主要是相机图像信息的读取和预处理,在机器人中,还会有码盘、惯性传感器等信息的读取和同步。
(2)视觉里程计就是前端,其任务是估算相邻图像间相机运动,以及局部地图的样子。
(3)后端优化。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。
(4)回环检测。判断机器人是否到达过去先前的位置,如果检测到回环,它会把信息提供给后端进行检测。
(5)建图。根据估计的轨迹,建立与任务要求对应的地图。
31 SLAM后端有滤波方法和非线性优化方法,这两种方法的优缺点是什么?
滤波方法
- 滤波方法的优点:当计算资源有限且估计量较为简单时(即待估计变量数量较少),EKF等滤波技术表现出色,并广泛应用于激光 SLAM 领域。
- 滤波方法的缺点:值得注意的是,在实际应用中存在一个关键挑战——存储效率呈现平方级增长(即存储量与状态维度的平方成正比),这使得传统滤波方法难以应对大规模场景。
此外,在视觉 SLAM 的方案中所涉及的数据具有较大的规模。
其中所涉及的数据具有较大的规模,
其中所涉及的数据具有较大的规模,
其中所涉及的数据具有较大的规模,
其中所涉及的数据具有较大的规模,
其中所涉及的数据具有较大的规模,
其中所涉及的数据具有较大的规模,
其中所涉及的数据具有较大的规模,
其中所涉及的数据具有较大的规模,
其中所涉及的数据具有较大的规模。
非线性优化技术
- 通常采用图优化技术作为基础,在这一过程中Bundle Adjustment(BA)算法占据核心地位。基于大量特征点和相机姿态的Bundle Adjustment(BA)算法计算量较大难以实现实时处理。随着研究的发展提出了SBA算法及其硬件加速方案实现了基于图优化的实时视觉SLAM技术。
32 什么是BA优化?
BA(Bundle Adjustment)优化 ,是指从视觉重建中计算出最优的 3D模型和相机参数(内参数和外参数)。从每一个特征点反射出来的几束光线(bundles of light rays),在我们把相机姿态和特征点空间位置做出最优的调整 (adjustment) 之后,最后收束到相机光心的这个过程。和重投影不同的是,BA优化是对多段相机的位姿和位姿下的路标点的空间坐标进行优化。
将误差表示为:

也就是:

可以计算出误差对位姿和路标坐标的偏导:


对于特征点位置p和m个位姿以及n个特征点,表示为:

上式中的右边简写为:


然后,将优化的目标函数表示为:

目标函数也可以表示为:

对于线性增量方程:

这里的

将雅克比矩阵分块为:

则:

33 描述一下RANSAC算法
随机抽样算法(RANSAC),采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。区别于最小二乘法,最小二乘法是考虑了所有的样本点拟合的曲线。而RANSAC是从样本点中选出几个点,拟合曲线方程,根据容忍范围来判断所“夹”住的点数,不断迭代,最终来确认目标曲线。它是根据曲线周边的样本点数,和阈值来确定的。在一定程度上,排除了最远的样本点影响。
RANSAC主要通过反复选择数据中的一组随机子集来达成目标,被选取的子集假设为局内点,验证步骤如下:
(1)一个模型适用于假设的局内点,也就是说所有的未知参数都能从假设的局内点计算得到。
(2)使用(1)中得到的模型测试所有其他数据,如果某个点适用于估计的模型,认为它也是局内点。
(3)如果有足够多的点被归类为假设的局内点,则估计的模型就足够合理。
(4)使用假设的局内点重新估计模型,因为它仅仅被初始的假设局内点估计。
(5)最终,通过估计局内点和模型的错误率估计模型。
34 欧氏变换、 相似变换、仿射变换、射影变换的区别**?**
欧氏变换: 欧氏变换保持了向量长度与夹角不变,并且类似于我们将一个刚体完整且无变形地进行了位移或旋转操作。这种操作不会影响物体的形状与结构。相比之下,其他的几何变换则会改变其形状。

相似变换: 与欧氏变换相比,相似变换多了自由度的数量。这种变换可使物体实现均匀比例缩放,并其数学表达式为...

请注意,在向量旋转的过程中多引入了一个缩放因子s,在x,y,z三个坐标轴方向上进行均匀放大或缩小操作。因此,在应用了缩放操作后...图形面积不再保持恒定。我们称所有满足上述条件的空间变换操作所构成的集合为三维相似变换群...Sim(3)。

不同于欧氏几何中的刚体变換(如平移、旋转等),仿射变換允许线性缩放和平移操作。其核心特征是仅要求其对应的矩阵A具有可逆性(即行列式不为零),无需满足正交性条件(即不需要满足AAᵀ=I)。在执行仿射变換后虽然立方体不再是严格的长方体形状;然而其各个面仍保持平行四边形的特性。
在投影几何中进行投影视觉得一种特殊的仿射变換,在这种变式下三维空间中的物体可以通过二维平面实现保形投影视觉得过程。
投影变換: 投影变转换是一种更为普遍的线性变式,在投影空间中进行投影视觉得过程通常表示为:
\mathbf{x}' = \mathbf{P}\mathbf{x}
其中\mathbf{P}代表一个m \times n阶的投影矩陣;这种线性变式被称为投影变式。

它的左上角为可逆矩阵A,右上角为平移t,左下角为缩放

基于齐次坐标体系的方法下进行二维射影变换时会有八个自由度参数可调,在三维空间中则包含十五个自由度参数。经过射影投影后,在近大远小的原则下其形状往往不再是严格的平行四边形而是呈现出一种更为复杂的不规则变形四边形特征。
35 ICP算法的原理是什么?简要叙述一下
ICP算法的核心原理如下:分别对目标点云P和源点云Q进行处理,在这些数据集中基于特定的限制条件确定对应的最近邻点对(pi, qi),并求解最佳配准参数R和平移量t以使误差函数E(R,t)达到最小值。其中的误差函数定义如下:
E(R,t) = \sum_{i=1}^{n} \| R \cdot p_i + t - q_i \|^2

其中n代表最邻近配对的数量,在目标点集P中选取一点pi,在其对应的源空间Q中找到最近邻居qi,并利用旋转变换矩阵R和平移向量t完成配准过程。
ICP算法的具体实现分为以下五个关键步骤:
- 在目标空间中随机选择一个初始样本集合。
- 根据当前迭代的状态信息确定候选配准参数。
- 计算最优配准参数以最小化配准误差。
- 应用刚性变换模型更新当前状态信息。
- 计算新的配准结果并判断收敛条件是否满足。

(6)若d低于某一设定的阈值或超过预定的最大迭代次数,则终止迭代计算。
否则转至第2步直至满足收敛条件时。
(6)若d低于某一设定的阈值或超过预定的最大迭代次数,则终止迭代计算。
否则转至第2步直至满足收敛条件时。
36 四元数的相关概念是什么,请解释一下。
旋转矩阵由9个参数表示3自由度的旋转操作,并存在冗余性;而欧拉角与旋转向量虽然在紧凑性上较为高效但不可避免地会引入奇异性的问题。
四元数(Quaternion)是由哈密尔顿提出的一种扩展复数概念它在保证无奇异性的特点的同时实现了对三维空间中旋转操作的有效描述。
需要注意的是尽管四元数在某些方面不如其他表示方法直观但在运算复杂度上确实有所提升。
一个四元数q则包含一个实部与三个虚部:

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

这里的s 被称为四元数的实部而v 被称为它的虚部分析:将"称为"替换为"被称为"以增加表达方式的变化同时保持了原意;将"如果"改为"若"并调整了语序以达到更详细的表述;最后将"反之"改为"相反地"以进一步避免重复并提高可读性
37 点云配准算法目前有哪些?
ICP: ICP算法简洁明了且计算复杂度较低,在刚性点云配准领域广受欢迎。该算法基于最近邻距离准则迭代匹配对应关系,并通过最小二乘法求解两个点集之间的刚体变换矩阵直至收敛最优解。为了提高效率,在每次迭代中都会重新确定对应关系并持续优化直到达到最优解状态。
KC: KC算法采用了稳健统计与测量技术相结合的方法论基础进行研究与实现工作流程设计。“KC”名称来源于Tsin与Kanade两位学者在1994年提出的基于核密度估计的概率密度匹配理论模型。
RPM: 为了克服传统ICP对初始匹配精度敏感的问题,RPM采用概率论框架下的回溯算法改进方案。
基于形状描述符的方法: 在初始匹配精度较差的前提下仍然能够较好地完成点云配准任务的前提假设是被匹配点云具有均匀分布特征,否则当存在噪声干扰或者局部区域存在明显结构缺失时,可能导致无法获得理想结果。
UPF/UKF: UPF方法在小规模数据集上能够精确实现配准效果,然而其粒子数量需求较大导致计算复杂度较高,难以适用于大规模点云数据处理工作流。
为了避免这种局限性,UKF方法被提出采用单峰分布假设简化问题模型,从而降低了计算复杂度,提高了运行效率。
为了进一步提升适用范围,针对多峰分布情况提出了改进型解决方案。
38 相机畸变模型
相机畸变主要分为两种:
- 径向畸变(枕形、桶形): 光线在远离透镜中心的地方比靠近透镜中心的地方更加弯曲。

- 切向畸变: 切向畸变源于透镜本身与相机传感器平面(图像表面)或图像平面倾斜于的情况。这种情况主要由于透镜安装在镜头模组上时存在一定的**安装误差而产生。
39 g2o优化步骤
第1步: 创建一个线性求解器 (LinearSolver)
第2步: 创建块求解器 (Bocksolver ),并用上面定义的线性求解器初始化
第3步: 创建总求解器 (solver ),并从 GN、LM、DogLeg 中选择一个,再用上述块求解器初始化
第4步: 创建稀疏优化器 ( SparseOptimizer ),SparseOptimizer是一个优化图OptimizableGraph,也是一个超图,包含许多顶点和边
第5步: 定义图的顶点,并添加到优化器中
第6步: 定义图的边,并添加到优化器中
第7步: 设置优化参数,开始执行优化
40 Ceres优化步骤
ceres使用流程

第1步:构建优化模型(ceres::Problem)
第2步:设置目标函数(ceres::CostFunction)或损失项(residual)
第3步:配置优化组件:通过ceres::Problem::AddResidualBlock添加状态量块(state quantity)、损失函数以及相关的成本项
第4步:配置求解器选项(ceres::Solver::Options)
第5步:执行求解操作(ceres::Solve(options, &problem, &summary))
参考文章:[【SLAM
41 ORB-SLAM2算法流程
ORB-SLAM2 算法框架如图所示

输人: 有 3 种输人模式可以选择,单目相机模式、双目相机模式和 RGB-D模式。
跟踪线程: ORB-SLAM2 地图初始化成功后,会分成两个阶段来跟踪。
- 第一阶段跟踪:主要目的是“跟得上”,包括恒速模型跟踪、参考关键帧跟踪和重定位跟踪。首先会选择参考关键帧跟踪,在得到速度之后,后面主要使用的跟踪方式是恒速模型跟踪。当跟踪丢失时,启动重定位跟踪。在经过以卜跟踪后,可以得到初始位姿。
- 第二阶段跟踪:局部地图跟踪,目的是对位姿进一步优化。最后根据设定条件判断是否需要将当前帧创建为关建帧。
局部建图线程: 输入的关键帧是跟踪线程中新建的关键帧。为了增加地图点键帧。的数目,在局部建图线程中共视关键帧之间会重新匹配特征,生成新的地图点。局部 BA 会同时优化共视图中的关键位姿和地图点,优化后也会删险不准确的地图点和冗余的关键帧。
闭环线程: 首先通过词袋查询关键帧数据库,找到和当前关键帧可能发生闭环的候选关键帧,然后求解它们之间的 Sim(3)变换,最后执行闭环矫正和本质图优化,使得所有关键帧的位姿更准确。
全局 BA: 优化地图中所有的关键帧及其地图点。参考书籍: 《视觉惯性SLAM理论与源码解析》
