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

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


2022-08,来更新一下。

注:
1)学习视频:【高翔】视觉SLAM十四讲 ch7-1【高翔】视觉SLAM十四讲 ch7-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

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
视觉SLAM十四》的第七章主要介绍了ORB特征的手写实现。ORB特征是一种基于FAST角点检测和BRIEF描述子的特征提取方法,它在计算效率和鲁棒性上表现出色,被广泛应用于视觉SLAM中。 第七章还介绍了ORB特征的主要步骤,包括角点检测、特征描述子计算和特征匹配。在角点检测中,通过FAST算法检测图像中的角点位置。然后,利用BRIEF描述子计算对应角点位置的特征描述子。最后,通过特征匹配算法将当前帧的ORB特征与地图中的ORB特征进行匹配,从而实现相机的位姿估计和地图构建。 除了手写ORB特征的实现,第七章还介绍了ORB-SLAM系统的整体框架和关键技术。该系统结合了特征点法和直接法,实现了在无GPS和IMU信息的情况下进行实时的视觉SLAM。通过利用ORB特征进行初始化、追踪和建图,ORB-SLAM系统在室内和室外环境下都取得了良好的效果。 总而言之,视觉SLAM的第七章《视觉SLAM十四》介绍了手写ORB特征的实现方法,并介绍了ORB-SLAM系统的整体框架和关键技术。这些内容对于理解和应用视觉SLAM具有重要意义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [视觉SLAM十四——ch7](https://blog.csdn.net/weixin_58021155/article/details/123496372)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [《视觉slam十四学习笔记——ch7实践部分 比较opencv库下的ORB特征的提取和手写ORB的区别](https://blog.csdn.net/weixin_70026476/article/details/127415318)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值