江南才尽,年少无知!
志在九天不为乡愁换白发,偏偏年少白衣博天涯!
展开
-
(01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
通过上一篇博客对闭环线程中的Optimizer::OptimizeEssentialGraph→本质图优化进行了详细讲解。今天主要讲解ORB-SLAM2中的最后一个BA优化(g2o),即函数Optimizer::GlobalBundleAdjustemnt→全局优化。该函数在两个地方有被调用:①src/Tracking.cc 文件中的Tracking::CreateInitialMapMonocular() 函数;转载 2022-10-20 11:34:10 · 1393 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(60) 闭环线程→闭环矫正: CorrectLoop→地图点融合、共视关系更新
这里需要回顾一个前面的知识点,那就是 mvpCurrentMatchedPoints 这个变量。mvpCurrentMatchedPoints 记录的是经过 SearchBySim3 得到的已经匹配的点对(当前关键帧、闭环候选帧中有效的关键帧)。这里的匹配点我们认为是正确的,因为其是使用Sim3进行匹配的。另外再上一篇博客中,对地图点更新是不包含当前关键帧的,所以还需要对当前关键帧地图点进行更新。转载 2022-09-21 14:44:22 · 837 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(51) 局部建图线程→SearchInNeighbors():融合重复地图点
上一篇博对 CreateNewMapPoints() 函数进行了讲解,其主要功能为: 对当前关键帧与共视关键帧匹配的特征点,进行三角话,生成新的地图点。但是这样有一个后遗症,那就是会有很多冗余的地图点。比如共视关键帧 pKFi2 中的一个关键点 kp2 原本就存在对应的地图点 pMP,kp2 与当前关键帧中的关键点 kp1匹配,匹配关键点对 kp2 与 kp1 经过三角话之后,会形成一个新的地图点 new_pMP。转载 2022-08-17 15:35:58 · 657 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(47) 跟踪线程→局部地图跟踪TrackLocalMap():局部地图点过滤
首先这里再重诉一下追踪的核心思想:\color{red}{核心思想:}核心思想:在追踪的过程中,随着当前帧在一帧一帧的变化,可想而知,当前帧可以观测到的地图点也在变化,利用已经存在的地图点可以计算出相机位姿,同时当前帧会剩下一些未匹配上的关键点,那么这些关键点结合位姿则可以产生新的地图点,这些新的地图点可以提供给下一帧用于位姿估算。...转载 2022-08-03 11:47:13 · 698 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(45) EPnP 源代码分析(5)→ICP 求解相机位姿
讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件):(01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}转载 2022-07-28 18:58:23 · 766 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(44) EPnP 源代码分析(4)→PnPsolver::qr_solve():QR分解
通过上一篇博客建立了高斯牛顿增量方程AΔβ=ΔB(01)AΔβ=ΔB(01)那么接下来就是对该方程的求解,源码中使用的方法是 QR分解(豪斯霍尔德Householder变换),具体的推导过程可以参考博客:(01)ORB-SLAM2源码无死角解析-(40) EPnP 算法原理详解→理论基础四:QR分解(豪斯霍尔德Householder变换)输入:输入:向量x=(x1,x2,⋯,xn)T≠0x=(x1,x2,原创 2022-07-28 15:37:45 · 638 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(43) EPnP 源代码分析(3)→find_betas_approx(),gauss_newton()
上一篇博客对 src/PnPsolver.cc 文件中的 compute_pose() 函数分析,并且对其中调用的 choose_control_points(),compute_barycentric_coordinates() 进行了讲解,知道了代码中是如何求得 四个控制点,以及它们对应的系数,并且进一步求得了 相机坐标系下的控制点。有了这些信息,根据前面博客(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解N=4的情况:N=转载 2022-07-28 14:22:27 · 518 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(40) EPnP 算法原理详解→理论基础四:QR分解(豪斯霍尔德Householder变换)
JΔβΔyΔyfβLβ−ρ(01)JΔβΔyΔyfβLβ−ρ01显然,接下来的关键就是求解ΔβΔβ,EPnP 使用豪斯霍尔德变换进行 QR分解进而求得ΔβΔβAQR(02)AQR02其中Q\mathbf{Q}Q是正交矩阵,R\mathbf{R}R是非奇异上三角矩阵。通过上面的推导,我们对 QR分解,豪斯霍尔德Householder变换, 有了深层次的理解,Householder 变换的目的在于降低QR。原创 2022-07-26 15:22:55 · 702 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(42) EPnP 源代码分析(2)→compute_pose():控制点选取,系数计算
从上一篇博客中,以及了解了类 PnPsolver 总体流程与思路,并且分析其核心函数 PnPsolver::iterate(),再进行详细分析之前,把前面博客(01)ORB-SLAM2源码无死角解析-(37) EPnP 算法原理详解→理论基础一:控制点选取、透视投影约束推导出来的公式粘贴一下(标号没有改变)c1w=1n∑i=1npiw(01)c1w=n1i=1∑npiw(01)c2w=c1w+λ1wnv。转载 2022-07-22 10:47:57 · 662 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(39) EPnP 算法原理详解→理论基础三:高斯牛顿迭代
本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析-接如下:(01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{转载 2022-07-22 20:23:47 · 649 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解
讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件):(01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}原创 2022-07-17 12:09:06 · 764 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(35) 跟踪线程→恒速模型跟踪当前普通帧TrackWithMotionModel()
在上一篇博客中,讲解了如何通过关键帧来估算当前帧的位姿,但是其最重要的核心函数 Optimizer::PoseOptimization(&mCurrentFrame) 没有进行讲解,这个知识点暂且搁置一下,先来看看恒速模型跟踪普通帧是如何实现的,恒速模型跟踪也叫做视觉里程计(不是很明白的朋友可以百度一下)。使用这种方式追踪呢,其假设相机移动的速度是均匀的,进一步利用微分的实现,就是上一帧变换的位姿与当前帧变换位姿是相同(或者说接近相同)。转载 2022-05-30 16:57:28 · 1578 阅读 · 11 评论 -
(01)ORB-SLAM2源码无死角解析-(33) ORB特征匹配→局部建图BoW加速匹配,三角化SearchForTriangulation
前面两篇博客对 BoW 的构建,以及:BRIEF描述子转BoW向量进行了讲解。那么他有什么作用呢? 或者说,在什么地方可以得到应用。其实,利用到他的地方很多,比如局部建图线程搜索匹配三角化SearchForTriangulation。SearchForTriangulation 函数是在局部建图中被调用的,本来是后面才讲解的内容,但是为了更深一步了解 BoW 的应用,所以提前对其进行一个讲解。......转载 2022-05-24 12:51:02 · 1097 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(22) 特征点三角化、深度计算、三维点筛选
通过前面的博客,我们已经知道如何从 单应性矩阵Homography,或者 基本矩阵Fundamental 中恢复RtRt,但是这里存在一个比较尴尬的问题,其结果都存在多组解,也就是多组RtRt,比如从 Homography 中恢复RtRt存在8组解,从 Fundamental 中恢复 存在4组解。那么我们如何去判断那组解是最优的呢?转载 2022-04-22 16:31:03 · 1996 阅读 · 2 评论 -
(01)ORB-SLAM2源码无死角解析-(18) SVD奇异值分解→求解Homography,Fundamental矩阵,了解矩阵自由度
讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下:(01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{bl原创 2022-03-31 18:16:24 · 1613 阅读 · 1 评论