SLAM总结(四)-视觉前端


前端的主要功能一般是求解当前帧的位姿。前端需要保持与传感器帧率相同的频率,以达到实时性。相机和激光雷达都是观测外部环境的传感器,每来一帧,需要将帧与帧之间的点关联起来。数据关联之后进行姿态解算,求得当前帧的位姿。前端一般用于跟踪,只负责求解当前帧的位姿,不会生成新的路标点(路标点指具有在世界坐标系下3D坐标的特征点)和优化原有路标点。这样可以减少前端的计算量,从而达到实时性。

1.数据关联

1.特征法

特征包括点、线、面和物体等特征,常见的是点特征。特征法包括特征提取和特征匹配两步。特征法要求在旋转角度、尺度和实现角度等发生变化时也能正确和尽可能多地提取与匹配出各帧中共视的特征。
人工设计特征需具备以下几个特征:
1)可重复性:可以在不同图片中找出来
2)可区别性:不同特征之间差异较大
3)高效率:图片中特征点数量应远小于图像像素
4)局部性:特征只与一小片区域有关

1、点特征
点特征用其2D或3D坐标系表示即可。克服旋转不变性的方法是寻找点周围匹配区域的方向,克服尺度不变性的典型方法是图像金字塔。
a)特征提取
提取图像中的特征点有以下三种比较具有代表性的方法。
b)特征匹配
根据特征点周围小区域的像素构建的描述子进行匹配。
下面介绍几种典型的点特征:
1)SIFT:充分考虑光照、尺度和旋转等变化,但计算量大,普通PC无法实时运行。花费时间约5228.7ms。使用GPU加速可以满足实时性要求。
2) SURF:花费时间约217.3ms
3)ORB:改进FAST关键点,使其具有方向性,使用256位二进制BRIEF描述子。大大加速了特征提取与匹配,花费时间与15.3ms,使SLAM的实时运行成为可能,且利用特征点的方向和图像金字塔获得旋转和尺度不变性,在ORB-SLAM2、VINS-Mono都使用了ORB特征。特征提取步骤如下:
[1]遍历每个像素点p,设其亮度为Ip
[2]以点p为圆心,半径为3选取16个像素点
[3]若16个像素点中有连续N个点的亮度大于Ip+T或小于Ip-T(T=0.2Ip),N一般去9、11和12,则认为该点为特征点。加速匹配方法是先在16个点的1、5、9、13判断是否有3个点同时满足条件,不满足则说明不是特征点,满足则计算满足条件几个点之间的其他像素。
在这里插入图片描述

[4]若像素满足条件,计算特征点方向。首先使用下面公式计算特征点周围一小片区域B的质心,质心C为(m10/m00,m01/m00),注意这里xy都化成以p为坐标原点O,坐标系与图像坐标系平行;
在这里插入图片描述
以OC作为特征点方向,角度为θ=arctan(m01/m10)

一般会在图像上均匀的选取特征点,这样可以减少计算量和误匹配,提升算法性能
特征匹配
[1]计算所有特征点的描述子:以特征点方向作为x轴,比较该坐标系固定的256对像素(p,q)值大小,Ip>Iq,256位描述子对于位取1,Ip<Iq,256位描述子对于位取0
[2]得到两帧图像特征点和描述子后便是进行匹配,两描述子的汉明距离表示相似程度,匹配方法有暴力匹配、快速近似最近邻匹配(FLANN)分区域匹配和BoW匹配等方法,ORB-SLAM2提高了10种匹配方法,在ORB-SLAM2的源码解析再详细分析。
下面主要介绍一下BoW匹配方法的思想:待补充
[3]匹配完之后会存在一些误匹配,在之后算法中有很多地方有去除误匹配的操作,有RANSAC和鲁棒核等
4)光流法:随着相机运动,空间点对应像素点会在图像中运动,光流法用于最终像素点在图像中的运动。根据追踪点的数量,分为稀疏光流和稠密光流。典型方法是LK光流。跟踪角点更加稳定,跟踪边缘会出现滑动现象。而跟踪其他地方(区块)的点跳动频繁。计算时间稍小于描述子的计算和匹配。误匹配较少。相机运动越慢,采样频率越高越不容易跟丢。
提取SIFT、SURF和ORB点特征后,可以使用光流法进行跟踪。该方法适合连续出现的特征点,适合跟踪过程,不适合闭环检测,使用描述子的方法比较适合闭环检测。
具体方法如下:待补充
2、线特征
3、面特征
4、物体

2.直接法:

直接法要求已知各像素点在相机坐标系3D位置,深度相机已知深度可以直接获得该值,单目相机没有深度,需将深度一起优化,实现较复杂。然后,最小化整张图片地光度误差直接求解机体位姿。直接法适合低纹理(特征缺失)的地方,但受光照影响大。直接法工作的条件是场景存在明暗变化,可以是渐变,不存在局部的图像梯度。为增加算法鲁棒性,可以最小化图像块的灰度。直接法得到位姿后可考虑使用极线搜索的方法寻找特征点的匹配关系。
图像法的优点是可以在梯度渐变没有特征点的区域工作,缺点是灰度不变假设很强,要求相机是非自动曝光的。图像是非凸的,小块内凸性较强,适合位移较小的情况。需要大量像素点才能确定位姿。根据像素点数量可分为:
1)稀疏法:先提取特征点,在使用直接法最小化光度误差直接求解机体位姿。这种方法需提取特征点,称为半直接法(融合方法)。在CPU有实时运行的可能。
2)半稠密法:提取有梯度的像素,然后再使用直接法。没有梯度的地方不能起到优化作用。
3)稠密方法:对整幅图像像素点使用直接法。

2.姿态解算

已知两帧之间的匹配特征,求解两帧的相对位姿(R,t),那么随着源源不断地帧的到来,不断求解相对位姿,便能求解出所有帧相对第一帧的位姿,因为只有空间相近的帧共视的特征才会比较多,所以这个求解过程是增量式的,因此会存在累积误差。
1、2D-2D:至少需要多少对正确匹配?
点特征:
单目SLAM初始化时,经过特征提取和匹配,可以获得两帧中匹配的特征点对(几百),此时特征点在两帧中的3D位姿都是未知的,已知特征点在两帧中的2D像素坐标p1=(u1,v1)、p2=(u2,v2),故称2D-2D。其中可能存在一些误匹配。补充对极几何的重要概念:如下图,O1O2P称为极平面,O1O2与像平面I1、I2的交点称为极点,e1p1、和e2p2称为极线,O1O2称为基线。
2D-2D是已知大量匹配点对p1、p2求解像平面I1、I2的相对位姿和P的3D位姿。
当已知p1和像平面I1、I2的相对位姿,理想情况下P在I2的投影会落在e2p2上。
当已知P分别在像平面I1、I2的3D位姿时,理想情况下P会落在像平面I1、I2的p1、p2上。
摘自视觉SLAM十四讲

[1]使用这些匹配求出基础矩阵F和单应矩阵H:使用RANSAC和对极几何筛选出正确的匹配,求得F和H矩阵,至少需要5对匹配点才能求得F,因为噪声的存在和避免R中的非线性约束,一般使用8对匹配点求解最小二乘解求得F,要求8对点组成的系数矩阵秩为8。需要4对匹配点求得H。
F和E的推导:一般情况下,所有匹配点在3D空间并不共面
已知匹配点对p1、p2后,设旋转和位移为R21、t21,因为单目中t21的尺度是不确定的,故其只有2个自由度,故旋转和平移是5个自由度,至少需要5对匹配点求得。
将像素坐标转换到归一化平面
P1=K-1p1
P2=K-1p2
则有:
P2=R21P1+t21, 其中t21的模长不确定,比例确定
两边同乘t21,则t21t21可看成t21叉乘t21,故t21t21=0,有:
t21P2=t21R21P1
两边再同乘P2T,则P2Tt21P2可看成P2点乘t21P2,由叉乘知t21P2垂直P2,故P2Tt21P2=0,则:
P2Tt21R21P1=0
则有:
p2TK-Tt21R21K-1p2=0
上面这两个式子称为对极约束,它的几何意义是O1、O2、P三点共面
本质矩阵E取:E=t21R21
基础矩阵F取:F=K-Tt21R21K-1=K-TEK-1
其中,K一般是已知的

H的推导:有时所有特征点可能共面,F矩阵自由度下降,会出现退化,若共面的情况使用F矩阵方法来分解则结果可能不准确,最后三角化得到的3D点并不共面。
当空间点P共面时,设平面的法向量为n(平面指向光心)、光心到平面的距离为d,则有:
nTP1+d=0 得: -nTP1/d=1
F推导中有:P2=R21P1+t21(-nTP1/d)
则:
p2=K(R21P1+t21)=K[R21P1+t21(-nTP1/d)]=K(R21-t21n/d)P1=K(R21-t21n/d)K-1p1
令:H=K(R21-t21n/d)K-1
则有:p2=Hp1

[2]从E或H矩阵中分解出尺度不确定的两帧相对旋转和平移
选择[1]重投影误差或约束误差小的情况分解
E分解:待补充
(1)八点法求得的E一般不满足E的内在性质:E的奇异值为[σ,σ,0]T,先对E进行奇异值分解,求得E的奇异值为[σ123]T1>=σ2>=σ3),将奇异值改为[(σ12)/2,(σ12)/2,0]T,再求得E
(2)

H分解:待补充,非零因子,非零因子下成立?
[3]三角化:求得特征点的3D位姿。已知匹配点对p1、p2,通过前两步得到了世界坐标系到两帧的位姿T1w、T2w,求匹配点对对应路标点在世界坐标系下的3D位姿P(X,Y,Z)。初始化时以第一帧作为世界坐标系,是其中一个特列。求解步骤如下图。三角化时需选择合适的平移,平移越大,精度越高,但两帧视线角度越大,共视特征越少。增加相机分辨率也能提高精度,但会增大计算量。
在这里插入图片描述

[4]如果可以通过深度相机获得点的深度或IMU和编码器获得两帧的位移距离,便能恢复尺度

H分解:待补充,没有深度的情况下,n和d有什么意义?
2、3D-2D:
单目跟踪和重定位过程中,经过特征提取和匹配,可以获得两帧中匹配的特征点对,已知特征点在世界坐标系或第一帧中的3D位姿,在第二帧中的2D像素坐标,求解第二帧在世界坐标系或第一帧中的位姿,故称3D-2D。至少需要3对匹配点计算位姿,另外需要一对匹配点验证结果。方法有P3P(至少3对)、直接线性变换法(DLT)(至少6对)、EPnP、UPnP和非线性优化BA。**深度相机的每帧都有足够的3D点,可使用该方法求得两帧之间位移,可不使用2D-2D方法初始化。**在ORB-SLAM2中,跟踪未丢失时,有较好的初值,直接使用BA求解即可,跟踪丢失重定位时,则使用EPnP方法求解。在SLAM中,经常利用P3P、DLT、EPnP、UPnP等闭式求解方法求得初值,再使用BA做非线性优化。BA方法在后端会详细介绍,下面简单介绍一下其他方法,主要介绍一下EPnP(ORB-SLAM2、VINS-Mono和PL-VIO中使用)方法。
已知点在世界坐标系的坐标,和点在相机归一化平面的坐标。
[1]P3P:使用3对匹配点利用三角形相似关系列出二元二次方程求出点在相机坐标系的坐标。然后使用ICP求出相机坐标系相对于世界坐标系的位姿。
[2]DLT:先将齐次坐标系矩阵看成3x4的无约束的矩阵,利用6对匹配点构建12个方程直接求解矩阵中12个未知元素,然后再使用QR分解恢复旋转矩阵的正交性。
[3]BA:闭环求解方法求得的位姿、关键帧位姿或次新帧加速度预测位姿等作为初值,最小化重投影误差求解。
[4]EPnP:待补充
3、3D-3D:
闭环检测时,需要求得当前帧和闭环帧之间的匹配关系,已知特征点在两帧中的3D位姿,故称3D-3D。单目还存在尺度的漂移。虽然,特征点在世界坐标系的位置和相机的位姿经过长时间会存在较大漂移。但是特征点在相机坐标系系的位置精度较高,深度相机可直接得到,一般不存在漂移;单目相机局部优化最小化重投影误差,故特征点在相机坐标系的位置也是较准确的。为了消除单目的尺度漂移一般使用相似变换(sim)得到当前帧和闭环帧的相似变换。一般深度相机深度测量不太准确,使用3D-3D变换得到的相对位姿没那么准确,激光雷达精度较高,得到的相对位姿也较准确。但激光雷达两帧特征匹配和检测闭环较困难。下面主要介绍视觉SLAM中常用的3D-3D方法,其他方法在本系列激光SLAM前端再介绍。
[1]SVD方法:已知特征点分别在两帧相机坐标系中的3D坐标,求两帧的相对位姿。其中一帧也可以是世界坐标系,那么得到的便是该帧在世界坐标系的位姿。待补充。
[2]sim方法:待补充

3.初始化

2D-2D,对t归一化相当于固定了尺度。另一种固定尺度就是取t使所有点平均深度为1。以光心为旋转轴的纯旋转和沿光轴前后移动不利于初始化。在光轴垂直平面内移动有利于初始化。

4.局部地图

仅使用帧与帧之间运动估计运动,一般精度还不够。一般会维护局部地图来提高跟踪精度和鲁棒性。为了权衡精度和实时性,为了保证实时性,只能使用当前帧跟踪一部分帧,一般使用固定滑动窗口或ORB-SLAM2中使用的共视帧窗口,它们与当前帧共视点相对其他帧多很多。前端主要用于跟踪(得到当前帧位姿),据此选择关键帧交给后端,后端再进行三角化新的路标点、删错冗余和错误的路标点和帧、优化各帧位姿和路标点位姿(一般在世界坐标系表示)。

5.选取关键帧策略

选取关键帧需要权衡关键帧的间隔(一般指旋转、位移和时间)和跟踪质量。关键帧间隔越小,关键帧越多,前端更容易跟踪和重定位,跟踪质量越好;后端计算量会越大,优化时间会增加。

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《视觉SLAM讲》第三章主要介绍了视觉SLAM中的关键技术——特征提取和描述子。本章首先介绍了特征点的概念和特征点的选择原则。特征点即图像中具有鲁棒性和区分度的点,可以通过对其进行检测和描述来进行特征匹配和跟踪。在进行特征提取时,作者介绍了常见的特征检测算法,如Harris角点检测、SIFT和SURF算法等,并对其进行了比较和分析。 接着,本章详细阐述了特征描述子的概念和作用。特征描述子是对特征点周围区域的图像信息进行编码,以实现特征匹配和跟踪。常见的特征描述子包括SIFT、SURF和ORB等。作者从描述子的表示形式、计算方式和匹配方法等方面进行了介绍,并对它们进行了比较和评价。同时,还提到了基于二进制描述子的方法,如BRIEF、BRISK和FREAK等。 在特征匹配方面,本章介绍了特征描述子匹配的基本原理和流程。以基于特征点的视觉SLAM为例,作者详细解释了特征点的匹配过程,包括特征点的选择、特征点描述子匹配和筛选等步骤。并介绍了如何通过验证特征点的三角化和PnP求解来估计相机的位姿。 此外,本章还介绍了一些特定场景下的特征点选择和提取策略,如动态环境下的特征点追踪和关键帧选择等。 综上所述,《视觉SLAM讲》第三章主要介绍了特征提取和描述子在视觉SLAM中的重要性和应用。通过对特征点的检测和描述,可以实现特征匹配和跟踪,为后续的相机位姿估计和建图提供基础。该章内容详细且通俗易懂,对于学习和理解视觉SLAM有着重要的指导作用。 ### 回答2: 《视觉SLAM讲-Ch3》主要介绍了视觉SLAM(同时定位与建图)技术的基本原理和实现方法。本章主要涵盖了三维几何表示和变换、相机模型和相机姿态以及特征提取与匹配等内容。 首先,本章介绍了三维几何表示和变换的概念。通过介绍欧氏空间中的点、向量和坐标变换,深入解释了相机在三维空间中的位置和朝向的表示方式。同时,引入了齐次坐标和投影矩阵的概念,为后续的相机模型和姿态估计打下了基础。 其次,本章详细讲解了相机模型和相机姿态的原理与应用。其中,介绍了针孔相机模型,分析了图像坐标和相机坐标之间的映射关系。通过投影矩阵的推导,给出了透视投影和仿射投影的公式,并解释了相机焦距和主点的含义。此外,还介绍了如何通过计算相机的外参矩阵来估计相机的姿态,以及如何将图像坐标转换为相机坐标。 最后,本章介绍了特征提取与匹配的技术。首先,介绍了角点和边缘点的概念,以及如何利用差分和梯度计算来检测图像中的角点和边缘点。然后,介绍了如何通过特征描述符来表示图像中的特征点,并通过特征匹配算法找到两幅图像之间的对应关系。特征提取与匹配是视觉SLAM中非常重要的步骤,对于后续的相机定位和建图至关重要。 综上所述,《视觉SLAM讲-Ch3》通过系统地介绍了视觉SLAM技术的基本概念和实现方法,包括三维几何表示和变换、相机模型和相机姿态的原理与应用,以及特征提取与匹配的技术。这些内容为读者深入理解和掌握SLAM技术提供了很好的基础。 ### 回答3: 视觉SLAM(Simultaneous Localization and Mapping)是一种通过计算机视觉技术,实现机器智能的同时实时定位和地图构建的方法。在《视觉SLAM讲》第三讲中,主要介绍了视觉SLAM的基本概念和关键技术。 首先,讲解了视觉SLAM的理论基础,包括自我运动估计和地图构建两个部分。自我运动估计是通过相邻帧之间的视觉信息,计算相机在三维空间中的运动,从而实现机器的实时定位;地图构建是通过对场景中特征点的观测和跟踪,建立起一个三维空间中的地图。这两个过程相互影响,通过不断迭代优化,实现高精度的定位和地图构建。 接着,讲解了基于特征的视觉SLAM算法。特征提取与描述是建立视觉SLAM系统的关键步骤,通过提取场景中的特征点,并为其生成描述子,来实现特征点的匹配和跟踪。同时,还介绍了一些常用的特征点提取和匹配算法,如FAST、SIFT等。 在SLAM框架方面,本节还介绍了基于视觉前端和后端优化。前端主要负责实时的特征跟踪和估计相机运动,后端则是通过优化技术,对前端输出的轨迹和地图进行优化求解,从而提高系统的精度和鲁棒性。 最后,本节提到了几个视觉SLAM的应用场景,如自主导航、增强现实等。这些应用对于实时高精度的定位和地图建立都有着很高的要求,因此,视觉SLAM的技术在这些领域有着广泛的应用前景。 总的来说,《视觉SLAM讲》第三讲对视觉SLAM的基本概念和关键技术进行了系统的介绍。理论基础、特征提取与描述、SLAM框架和应用场景等方面的内容都给出了详细的解释和案例,有助于读者更好地理解和应用视觉SLAM技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值