[学习笔记-SLAM篇]视觉SLAM十四讲ch7

前面的内容基本都是基础内容,从第7讲开始变为实践应用,其实就是具体在SLAM中是如何完成各线程内容的。
按理说是实践部分,但还是坚持不实践呢。


2022-08,来更新一下。

注:
1)学习视频:【高翔】视觉SLAM十四讲 ch7-1,【高翔】视觉SLAM十四讲 ch7-2。

视觉SLAM十四讲

  • 第7讲
    • 7.1 理论部分
    • 7.2 实践部分

第7讲

7.1 理论部分

7-8讲均是视觉里程计的内容,主要区别在于前端原理不同,分别对应特征点法和直接法。
此外计算相机的运动,依据点的关系不同,采用不同方法。
2D-2D:对极几何;3D-3D:ICP;2D-3D:PnP

1)特征点法

  • 特征点由关键点和描述子组成。关键点提供位置、大小、朝向、评分等信息,描述子提供关键点周围像素信息;
  • 常用特征点有SIFT、SURF、ORB,描述精度依次下降,运行时长依次减少;
  • ORB特征点:由改进FAST角点和BRIEF描述子组成。原始FAST角点无方向性,简单来说就是判断一个像素 p p p周围半径为3的圆上16个像素中是否有连续N个像素灰度大于/小于某阈值改进FAST增加了尺度和方向描述:1)构建图像金字塔解决尺度问题(图像放大或缩小后同一角点无法被确认);2)利用灰度质心法得到方向向量(描述图像梯度指向)。原始BRIEF同样无方向信息,简单来说就是判断关键点周围X个点对的大小关系并表示为0或1。点对比较规则可以自己设定,随机或固定pattern。改进BRIEF增加上一步的方向信息,计算旋转后的Steer BRIEF信息;
  • ORB特征匹配:简单来说就是判断2个ORB特征的BRIEF描述子的汉明距离汉明距离就是所有二进制描述子异或的累加);
  • 特征匹配:解决SLAM中数据关联问题。一般有暴力匹配(全遍历)、快速近似最近邻(FLANN)等;

2)2D-2D对极几何

已知2张图像上的匹配点2D坐标,内参K ---> 求解2相机间R,t ---> 三角化求相机系下地标点3D坐标
  • 【第一步,确定约束关系】:对于2张图像,若含有一对成功匹配的点 p 1 p_1 p1 p 2 p_2 p2,则它们为同一空间点 P P P在两个成像平面上的投影。则一系列推导(主要涉及空间点和相机间内参、2相机间变换外参)后可以得到对极约束 x 2 T t   ^ R x 1 = 0 \pmb{x}^T_2\pmb{t}\ \hat{}\pmb{R}\pmb{x}_1=0 xx2Ttt ^RRxx1=0(有其他形式,一种是代入内参的,一种是含有基础矩阵 F \pmb{F} FF的,一种是含有本质矩阵 E \pmb{E} EE的),几何意义是空间点和2相机光心共面
  • 【第二步,判断特征点关系】:判断特征点是否共面,若共面用单应矩阵 H \pmb{H} HH恢复 R \pmb{R} RR t \pmb{t} tt。否则,用本质矩阵 E \pmb{E} EE或基础矩阵 F \pmb{F} FF恢复 R \pmb{R} RR t \pmb{t} tt
  • 【第三步,计算相机位姿】:(为简便起见一般用仅含有内参 R \pmb{R} RR的本质矩阵 E \pmb{E} EE)可通过下面2步,1)由匹配点恢复 E \pmb{E} EE,2)由 E \pmb{E} EE恢复 R \pmb{R} RR t \pmb{t} tt
  • 【第四步,利用三角化计算特征点的3D位置】(即深度)。
  • 如何由匹配点恢复 E \pmb{E} EE八点法(8对点满足秩为8的条件。解出来不是唯一解??)或五点法(由对极约束得知 E \pmb{E} EE只有5个自由度);
  • 如何由 E \pmb{E} EE恢复 R \pmb{R} RR t \pmb{t} ttSVD分解(存在4个解,判断深度(投影点的正负)选一个);
  • 八点法的说明:1)用于单目初始化(之后有3D点后会用PnP);2)多于8对点需要用最小二乘(解超定方程)或RANSAC(还可以剔除误匹配);3)存在尺度不确定性问题(归一化t或特征点平均深度);4)纯旋转问题, t = 0 \pmb{t}=0 tt=0无法求解,无法SVD分解(单目初始化要有平移);5)特征点共面退化问题(用单应矩阵恢复 R \pmb{R} RR t \pmb{t} tt);
  • 单应矩阵 H \pmb{H} HH常用于特征点共面或纯旋转引发的退化情况。计算类似八点法,先求解 H \pmb{H} HH,再恢复 R \pmb{R} RR t \pmb{t} tt n \pmb{n} nn(法向量), d d d(截距), K \pmb{K} KK
  • 简单归纳: E \pmb{E} EE 5点法、 F \pmb{F} FF 8或7点法、 H \pmb{H} HH 4点法。

3)三角测量

  • 三角测量(三角化)用于估计地图点的深度
  • 最简单的就是在归一化坐标关系 s 2 x 2 = s 1 R x 1 + t s_2\pmb{x}_2=s_1\pmb{R}\pmb{x}_1+\pmb{t} s2xx2=s1RRxx1+tt两侧左乘 x 2 ^ \pmb{x}_2\hat{} xx2^,求解 x 2 x_2 x2。但一般求的是最小二乘解。

最直接的思路是:找一个3D点与所有观测射线的距离都很近,以此作为特征点。
另一种思路觉得:误差来源于2D图像观测,所以把特征点投影到每个2D相机平面,最小化所有2D投影点到对应观测点之间的距离(重投影误差)。
第三种思路是:很多时候三角化是在线(Online)运行的,并不是全部观测都拿到以后再进行求解,而是一边获取观测一边估计特征点,所以用一个滤波器来估计特征点的概率分布(通常是Gaussian),旧的观测信息被隐式的存放在概率分布中,来了新的观测后,用新的观测来更新特征点的概率分布,这样能够节省很大的计算量,这就是滤波方法的朴素思想。
//参考VSLAM中的特征点三角化。

4)PnP

已知世界系下3D坐标,及其在相机图像上2D坐标,内参K ---> 求解世界系、相机系间R,t(相机位姿)
  • 一般有P3P、直接线性变换(DLT)、光束法平差(BA)方法来计算;
  • 直接线性变换DLT。同样的,先通过2D和3D点对应关系确定约束,然后通过最少6对(多于6对要求最小二乘)匹配点求解增广矩阵 T = [ R ∣ t ] \pmb{T}=[\pmb{R}|\pmb{t}] TT=[RRtt]QR分解得到 R \pmb{R} RR t \pmb{t} tt
  • P3P。首先通过3对(用不了多于3个的信息)匹配点构成三角形的余弦定理确定约束关系,代入匹配点信息求解得到相机系下3个点的3D坐标,转换为3D-3D点对匹配问题求解 R \pmb{R} RR t \pmb{t} tt
  • 光束法平差BA,指把相机和三维点一起优化的方法。已知与3D点匹配的实际2D像素投影位置 u i \pmb{u}_i uui,通过世界系下3D坐标,利用待优化 T \pmb{T} TT、内参 K \pmb{K} KK、深度 s i s_i si转换得到图像上的观测位置,作差得重投影误差BA优化就是最小化重投影误差,即求误差项关于优化量【相机位姿 T \pmb{T} TT、空间点P的位置】导数为0,对应书上2个导数矩阵。
  • 图优化做BA。图优化需要先设定节点节点为位姿 T \pmb{T} TT边为观测方程(3D点投影)。
  • 简单归纳: P 3 P \pmb{P3P} P3PP3P 3点法(3+1)、 E P n P \pmb{EPnP} EPnPEPnP 4点法、 D L T \pmb{DLT} DLTDLT 6点法、BA 是最小二乘。

5)ICP迭代最近邻

已知世界系下3D坐标,匹配的相机系下3D坐标 ---> 求解世界系、相机系间R,t(相机位姿)
  • 一般有SVD、非线性优化方法来计算;
  • SVD。推导比较复杂,见书上。
  • 非线性优化。类似PnP的BA优化,存在唯一解(求极小值)或无穷多解的问题。
  • 简单归纳: S V D \pmb{SVD} SVDSVD 3点法(不共线)、 非线性优化 \pmb{非线性优化} 非线性优化非线性优化 最小二乘。

7.2 实践部分

待续ing

你可能感兴趣的:(SLAM篇,算法,slam)