(01)ORB-SLAM2源码无死角解析-免费
文章平均质量分 93
应用领域:机器人、自动驾驶、增强现实、无人机。ORB-SLAM2是视觉SLAM中特征点法的开源代表作,是学习SLAM必学的第一个开源算法。同时支持单目、双目、RGBD相机,涵盖视觉SLAM领域核心算法,包括地图初始化、实时跟踪、局部建图、回环检测、BA优化,工程技巧等。
江南才尽,年少无知!
志在九天不为乡愁换白发,偏偏年少白衣博天涯!
展开
-
(01)ORB-SLAM2源码无死角解析-(65) BA优化(g2o)→闭环线程:Optimizer::OptimizeEssentialGraph→本质图优化
该篇博客主要的讲解的 src/Optimizer.cc 文件中的 Optimizer::OptimizeEssentialGraph→本质图优化。该函数在闭环线程中调用顺序为:LoopClosing::Run()→ CorrectLoop()→ Optimizer::OptimizeEssentialGraph()。(01)ORB-SLAM2源码无死角解析-(27) 共视图、本质图、拓展图。可以了解到,本质图具备如下几个特征:(1):(1):扩展树连接关系(2):(2)转载 2022-10-18 15:47:05 · 834 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(64) BA优化(g2o)→闭环线程:Optimizer::OptimizeSim3→Sim3变换优化
上一篇博客对建图线程:Optimizer::LocalBundleAdjustment→局部建图位姿与地图点优化进行了详细的讲解。那么接下来要讲解的,就是闭环线程中的 Optimizer::OptimizeSim3→Sim3变换优化。该函数实现于 src/Optimizer.cc 文件中,被 src/LoopClosing.cc 文件中的 LoopClosing::ComputeSim3() 调用。转载 2022-10-17 19:20:03 · 897 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(63) BA优化(g2o)→局部建图线程:Optimizer::LocalBundleAdjustment→位姿与地图点优化
在上一篇博客中,为大家讲解了 Optimizer::PoseOptimization→仅位姿优化,同时还分享了几篇g2o(图优化)博客,这篇博客讲 Optimizer::LocalBundleAdjustment,其在局部建图线程中被调,即 src/LocalMapping.cc 文件中 LocalMapping::Run() 函数。首先需要明白,优化的目标是→局部关键帧的位姿与地图点。转载 2022-10-14 15:54:09 · 999 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(62) BA优化(g2o)→追踪线程:Optimizer::PoseOptimization→仅位姿优化
本人讲解关于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-09-23 18:05:05 · 1251 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(61) 闭环线程→闭环矫正: CorrectLoop→全代码注释
在前面的博客中对 CorrectLoop 进行了比较细致的分析,本质图优化 Optimizer::OptimizeEssentialGraph() 以及 全局BA优化 RunGlobalBundleAdjustment()。但是代码是分段进行讲解的。为了方便大家通篇进行查看与梳理,这里给出全代码的注释有的朋友可能有疑问了,不是说本质图优化 Optimizer::OptimizeEssentialGraph() 以及 全局BA优化 RunGlobalBundleAdjustment()还没有讲解吗?转载 2022-09-23 14:54:32 · 553 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(59) 闭环线程→闭环矫正: CorrectLoop→位姿传播,地图点矫正
通过上一篇前面两篇博客,对计算 Sim3 的理论以及源码进行了详细的分析,也就是说 src/LoopClosing.cc 文件中被LoopClosing::Run() 调用的三个函数:DetectLoop(),ComputeSim3()已经梳理完成,接下来要讲解的函数就是 CorrectLoop() →闭环矫正。该函数还是十分复杂的。(1):(1):通过求解的Sim3以及相对姿态关系,调整与当前帧相连的关键帧位姿以及这些关键帧观测到的地图点位置(相连关键帧—当前帧)(2):(2。转载 2022-09-19 15:04:55 · 1090 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(58) 闭环线程→计算Sim3: 源码Sim3Solver::iterate()讲解
讲解关于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-09-08 15:27:30 · 656 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(57) 闭环线程→计算Sim3:理论推导(2)求解R,使用四元数
讲解关于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-09-06 15:31:32 · 593 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
原论文\color{red} 原论文原论文上一篇博客,对 ComputeSim3() 进行了整体的讲解,大致明白了了 sim3 的作用。但是应该如何求解相似变换(Similarity Transformation)呢?转载 2022-09-02 18:01:50 · 900 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(55) 闭环线程→计算Sim3:总体流程讲解ComputeSim3()
通过上一篇博客,对闭环检测进行了详细的讲解,通过闭环检测 LoopClosing::DetectLoop() 找到闭环候选关键帧,然后存储于 mvpEnoughConsistentCandidates 之中,根据 LoopClosing::Run() 函数的流程,执行完 DetectLoop() 之后,则会调用 ComputeSim3() 函数。该函数位于 src/LoopClosing.cc 文件中。问题:问题:这里首先出现的一个疑问就是,为什么我们要使用sim3?T=[Rt01]T。转载 2022-08-30 18:03:00 · 1013 阅读 · 3 评论 -
(01)ORB-SLAM2源码无死角解析-(53) 闭环线程→了解闭环检测、主体框架讲解:LoopClosing::Run
该部分的内容摘抄《视觉 SLAM 十四讲:从理论到实践》:通过前面的博客,可以知道,ORB-SLAM2在追踪的过程中,使用最多的跟踪方式为恒速模型跟踪当前普通帧TrackWithMotionModel(),其是视觉里程计追踪,也就是利用连续的图像序列来估计机器人移动距离的方法。然而,如果像视觉里程计那样仅考虑相邻时间上的关键帧,那么,之前产生的误差将不可避免地累积到下一个时刻,使得整个 SLAM 出现票积误差,长期估计的结果将不可靠,或者说,我们无法构建全局一致\color{red} 全局一致全局一致。转载 2022-08-25 17:50:04 · 1158 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(52) 局部建图线程→剔除关键帧KeyFrameCulling()、整体线程梳理
上一篇博客对 SearchInNeighbors() 函数进行了讲解,该函数的主要功能为检查并融合当前关键帧与相邻关键帧帧(两级相邻)中重复的地图点。接下来呢,原本是应该讲解一个重要的函数,那就是 Optimizer::LocalBundleAdjustment() 函数,其功能为局部优化。转载 2022-08-18 11:41:34 · 809 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(50) 局部建图线程→流程以及处理新关键帧:ProcessNewKeyFrame()
(01)ORB-SLAM2源码无死角解析-(24) 关键帧KeyFrame→判断系统目前是否需要关键帧(01)ORB-SLAM2源码无死角解析-(25) 关键帧KeyFrame→如何创建、插入关键帧两篇博客中对关键帧的需求判断以及创建过程都进行了十分细致的讲解。追踪线程中,会在合适的时候创建关键帧,这些关键帧除了追踪线程本身会用到,局部建图线程以及闭环线程都会用到,并且这里需要注意一个点:局部建图线程以及闭环线程不会对普通帧做处理,它们只关注关键帧。转载 2022-08-06 09:47:50 · 982 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(49) 局部建图线程→MapPointCulling,CreateNewMapPoints
通过上一篇博客,对 局部建图线程 LocalMapping::Run() 做了整体的介绍,然后分析了 ProcessNewKeyFrame() 函数,该函数主要功能为计算关键帧的BoW、更新观测、描述子、共视图,插入到地图等。下面主要是对 LocalMapping::Run() 中调用的 MapPointCulling() 函数进行讲解,其位于 src/LocalMapping.cc 文件中。...原创 2022-08-11 17:37:28 · 920 阅读 · 8 评论 -
(01)ORB-SLAM2源码无死角解析-(48) 不同跟踪方法的对比、梳理完整跟踪流程→Tracking::Track()
核心思想:\color{red}{核心思想:}核心思想:当前帧与上一帧(或者最近关键帧)进行特征点匹配,如果匹配点足够,则能计算出上一帧到当前帧的位姿变换,同时能够获得该关键点对在三维空间的坐标,显然易知对应的地图点。依次循环即可。但是大家需要注意一个点,只有关键帧产生的新关键点才会进行地图更新,普通帧(双目或者深度相机)生成新的地图点是临时地图点,主要用于优化位姿估算,不会参与到全局地图的更新。转载 2022-08-05 11:38:04 · 764 阅读 · 2 评论 -
(01)ORB-SLAM2源码无死角解析-(47) 跟踪线程→局部地图跟踪TrackLocalMap():局部地图更新
通过前面的博客,已经对 参考关键帧追踪TrackReferenceKeyFrame(),恒速模型跟踪当前普通帧TrackWithMotionModel() 以及 重定位跟踪 Relocalization()。他们分别适用于不同的情况,具体就不再这里提及了,因为在前面都进行了细致的分析,其中 恒速模型跟踪当前普通帧TrackWithMotionModel() 被使用得最多。也就是说,对当前帧进行追踪,是从上诉的三种选择一种进行追踪,或者说位姿估算。转载 2022-08-02 14:57:14 · 1170 阅读 · 1 评论 -
(01)ORB-SLAM2源码无死角解析-(41) EPnP 源代码分析(1)→PnPsolver总体流程与思路
通过前面的博客,相信大家 EPnP 的理论已经有了一些了解,那么接下来就是对其源码进行分析了。逻辑思路 : 先把 2 D图像点通过内参变换到相机坐标系下的 3 D点,然后用ICP来求解 3 D - 3 D的变换就得到了位姿。那么很明显,其难点在于如何通过2D信息,加上一些约束,来得到相机坐标系下的3D点。这里使用到的为:因为位姿变换是欧式空间下的刚体变换,所以点之间的相对距离信息在不同坐标系(世界坐标系与相机坐标系)下是不变的。转载 2022-07-21 17:29:52 · 953 阅读 · 1 评论 -
(01)ORB-SLAM2源码无死角解析-(37) EPnP 算法原理详解→理论基础一:控制点选取、透视投影约束
论文: Lepetit V , Fua M N . EPnP: An Accurate O(n) Solution to the PnP Problem[J]. International Journal of输入: 1. n个世界坐标的下的 3 D点,论文中称为 3 D参考点。2. 这n个 3 D点投影在图像上的 2 D坐标 3. 相机内参矩阵 ,包括焦距和主点输出 : 相机的位姿R , t应用:特征点的图像跟踪,需要实时处理有噪声的特征点,对计算精度和效率要求比较高,只需 4 对匹配点即可求解。原创 2022-07-14 17:57:25 · 1524 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(36) 跟踪线程→跟踪丢失后,重定位跟踪 Relocalization()
前面两篇博客讲解了考关键帧追踪TrackReferenceKeyFrame(),以及恒速模型跟踪当前普通帧TrackWithMotionModel()。完成初始化之后,以及添加关键帧之后,紧接着使用关键追踪。通常情况下都是恒速模型跟踪,如果恒速模型追踪失败,则使用参考关键帧跟踪,如果参考关键帧跟踪也失败了则认为跟踪丢失。那么此时使用重定位跟踪 Relocalization()。这就是本章博客需要讲解的详细的内容。该函数的实现位于 src/Tracking.cc 文件中。转载 2022-06-01 16:45:05 · 1440 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(34) 跟踪线程→初步了解跟踪线程,参考关键帧追踪TrackReferenceKeyFrame()
通过前面博客,相信大家已经了解很多 SLAM 的基础知识,比如ORB特征点、BRIEF描述子;根据Essential、Fundamental、Homography矩阵求解位姿;以及通过BoW加速特征匹配等。有了这些基础知识之后,下面就可以深入的了解 ORB-SLAM2 的整体架构了。ORB-SLAM2 的总体框架,图示如下:该图主要表达了三个线程: 跟踪线程、局部建图线程、闭环线程大致流程。可以看到跟踪线程主要包含了:提取ORB特征点\color{blue}{提取ORB特征点}提取ORB。.........转载 2022-05-26 18:03:24 · 1323 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(32) ORB特征匹配→跟踪线程BoW加速匹配,关键帧特征点跟踪SearchByBoW()
前面两篇博客对 BoW 的构建,以及:BRIEF描述子转BoW向量进行了讲解。那么他有什么作用呢?或者说,在什么地方可以得到应用。其实,利用到他的地方很多,比如跟踪线程中得关键帧特征点跟踪SearchByBoW()、局部建图线程中得搜索匹配三角化SearchForTriangulation。本来这个是后面进行讲解得内容,但是为了让大家了解源码是如何通过BoW加速匹配得。这里提前为大家分析这两个案例。这篇博客,就先来看看SearchByBoW()函数。转载 2022-05-27 16:28:36 · 1330 阅读 · 1 评论 -
(01)ORB-SLAM2源码无死角解析-(31) ORB特征匹配→词袋BoW:BRIEF描述子转BoW向量
通过上一篇博客,已经对 BoW 进行了理论讲解。其中有一个重要的图示:假设上述为构建好的 BoW词袋,那么如何把一个特征点的 BRIEF 转行成 BoW向量呢?src/Frame.cc 文件,找到函数 void Frame::ComputeBoW()。转载 2022-05-21 11:06:57 · 1421 阅读 · 1 评论 -
(01)ORB-SLAM2源码无死角解析-(30) ORB特征匹配→词袋BoW(bag of words):简介,优劣势分析
在上一篇博客中,对两张图像特征匹配进行了讲解,但是其匹配的过程默认所有特征点权重都是一样的,但是现实生活中,有的关键点是十分常见的,也就是说其辨识度是比较底的,但是有的特征点是非常罕见的,也就是就该特征点辨识度高,更具独特性。那么就来说说为什么要通过词袋(BoW)进行特征匹配。通过该篇博客,了解了词袋BoW(bag of words) 基本概念,以及其离线训练与构建结构。以及 BoW 为什么使用 BRIEF 描述子。当然,这些都是理论的知识,接下来就是对代码的讲解了。转载 2022-05-20 14:58:16 · 1521 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(29) ORB特征匹配→ORBmatcher,汉明距离(单目初始化为例)
在前面的文章中,已经对单目初始化进行了相对比较详细的介绍,比如针对于 src/Tracking.cc 文件中 MonocularInitialization() 函数讲解。但是之前主要讲解内容是如何求解相机的姿,以及特征点的三角化。直接略过了特征匹配的内容。那么现在来看看其中其中的具体内容,做一个细致的分析。转载 2022-05-19 09:23:03 · 1572 阅读 · 5 评论 -
(01)ORB-SLAM2源码无死角解析-(28) 双目Stereo相机立体匹配,SAD算法→深度求解
该篇博客主要对双目相机的立体匹配进行一个讲解,也就是通过双目相机提供的信息求解深度。详细讲解之前,我们需要了解一下双目相机的基本属性,下面是双目相机的一个原理视图:其上 Left 与 Right 分别表示两个相机的光心,他们的之间的距离也叫做基线 baseline (一般以米为单位),从上图可以看到真实世界上的一个黑点,映射成图像坐标分别为(x,y)(x,y)(x,y),(x′,y)(x',y)(x′,y),那么其视差disparity为x′−x。转载 2022-05-16 18:31:21 · 1668 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(27) 共视图、本质图、拓展图
该篇博客是为后面的讲解做一个铺垫、主要讲解的共视图、本质图、拓展图相关内容进行讲解,首先我们看一下下图:其上蓝色矩阵表示关键帧、绿色矩阵表示当前帧,红色小点表示当前帧的可视地图点,黑色点表示当前帧可观测到的地图点,绿色曲线是帧与帧之间的链接关系,也是前面博客提到的边。(a):(a):该图没有绘画帧与帧之间的连接关系,但是绘画了整个关键帧的轨迹。转载 2022-05-13 17:26:15 · 2037 阅读 · 2 评论 -
(01)ORB-SLAM2源码无死角解析-(26) 关键帧KeyFrame→如何创建、插入关键帧
通过上一篇博客,已经知道什么时候需要关键帧,那么接下来就是创建关键帧。其核心函数位于 src/Tracking.cc 的 Tracking::CreateNewKeyFrame() 函数中,分析如下。转载 2022-05-09 18:07:34 · 1669 阅读 · 1 评论 -
(01)ORB-SLAM2源码无死角解析-(25) 关键帧KeyFrame→判断系统目前是否需要关键帧
通过前面的博客,我们已经了解单目初始化的整个流程。但是这仅仅是追踪线程中的一部分,回到 src/Tracking.cc 文件 void Tracking::Track() 函数,很明显的看到,还有太多的东西需要讲解。在进行细致讲解之前,我们先来讲解一下 KeyFrame 相关的东西。在整个 ORB-SLAM2 系统中,关键帧 KeyFrame 起到了一个至关重要的作用,那么首先,我们来看看什么是关键帧 KeyFrame。通过该篇博客,知道 ORB-SLAM2 运行的时候,何时需要关键帧。转载 2022-05-09 15:06:42 · 1754 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(23) 单目SFM地图初始化→CreateInitialMapMonocular()-总体流程
通过前面的博客,已经知道如何从两帧图像提取特征点,进行特征值匹配(匹配的过程暂时还未进行详细的讲解),然后使用八点法求解单应性矩阵Homography,基本矩阵Fundamental,接着使用 SVD奇异值分解求得相机位姿 $\mathbf R\mathbf t$ 。这是前面博客中主要讲解的内容。然后我们来回顾一下,目前为止我们已经分析到了 src/Tracking.cc 文件中的 Tracking::MonocularInitialization() 函数,并且对于其中调用的 Frame 类对象,以及转载 2022-05-05 14:51:15 · 1431 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(21) 基本矩阵Fundamental→本质矩阵Essential 分解恢复 Rt
讲解关于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-04-16 12:06:58 · 1336 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(20) 分解Homography,恢复Rt→Faugeras SVD-based decomposition
通过前面的文章,知道了如何求解Homography 以及 Fundamental 矩阵。但是这是几个中间过程而已,求解 Homography 以及 Fundamental 是为了进一步求解旋转矩阵 $R$ 以及偏移矩阵 $t$, 通过 Homography 求解 $Rt$ 主要有以下两个方式:.........转载 2022-04-09 11:39:37 · 1663 阅读 · 1 评论 -
(01)ORB-SLAM2源码无死角解析-(19) 重投影误差,卡方检验→CheckFundamental,CheckHomography
(1):(1):Normalize() 归一化操作 ComputeH21() 八点法计算参考帧到当前帧的H矩阵 CheckHomography() 重投影误差评分(2):(2):Normalize() 归一化操作 ComputeF21() 八点法计算计算F矩阵 CheckFundamental() 重投影误差评分。转载 2022-08-19 12:48:15 · 1749 阅读 · 11 评论 -
(01)ORB-SLAM2源码无死角解析-(17) 单目初始化Initializer→八点发求解Fundamental矩阵
在上一篇博客中,我们讲解了 Homography 矩阵的求解过程,该篇博客主要对Fundamental 矩阵进行分析,再讲解之前,请大家详细阅读该篇博客史上最简SLAM零基础解读(2) - 对极约束→Essential矩阵、Fundamental矩阵推导通过该篇博客,我们可以了解到如果世界坐标PPP再两个相机成像平面I0I_0I0,I1I_1I1,图像坐标分别为p0=(x0y01)p1=(x1y11)x_0\\y_0\\1\\转载 2022-03-26 09:22:50 · 1122 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(16) 单目初始化Initializer→八点发求解Homography矩阵
这篇博客以及下篇博客,会分别讲解根据两张不同视角图特征点求解 Homography(单应性), 以及Fundamental(基本)矩阵,然后再讲解如何利用他们来求解相机位姿\color{red}{相机位姿}相机位姿。那么我们首先来看看什么是 Homography矩阵。1 、特征归一化 2 、随机选取八个点 3 、八点法求解H矩阵 4 、计算重投影误差 5 、选择最好的H矩阵,并且标记在线内的特征点下一篇博客我们再来看看 Fundamental 基本矩阵的求解方式。转载 2022-03-19 15:59:33 · 1436 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(15) 单目初始化MonocularInitialization()→Initializer
上一篇博客对 Tracking::MonocularInitialization() 进行了讲解。// 由当前帧构造初始器 sigma:1.0 iterations:200 mpInitializer = new Initializer(mCurrentFrame , 1.0 , 200);// Step 3 在mInitialFrame与mCurrentFrame中找匹配的特征点对 ORBmatcher matcher(0.9 , 0.7 true);转载 2022-03-19 10:52:54 · 1219 阅读 · 3 评论 -
(01)ORB-SLAM2源码无死角解析-(14) 地图初始化→单目初始化MonocularInitialization():尺度不确定性
上一篇博客我们讲解了 src/Tracking.cc 文件中: void Tracking::Track() 函数,我相信大家暂时都是蒙蔽了,不过没有关系,我们对其进行拆分,一个一个细节的来进行讲解。// Step 1:地图初始化 if(mState == NOT_INITIALIZED) {if(mSensor == System :: STEREO || mSensor == System :: RGBD) //双目RGBD相机的初始化共用一个函数 StereoInitialization();转载 2022-03-18 15:30:12 · 1720 阅读 · 1 评论 -
(01)ORB-SLAM2源码无死角解析-(13)追踪总体框架讲解→Tracking::Track()
通过前面的一系列博客,我们对 src/Frame.cc 中的 Frame 有了一定了解。那么我们回到(01)ORB-SLAM2源码无死角解析-(04)单目追踪_总体框架讲解TrackMonocular→GrabImageMonocular中讲解的 GrabImageMonocular() 函数。/*** @brief* 输入左目RGB或RGBA图像,输出世界坐标系到该帧相机坐标系的变换矩阵** @param[in] im 单目图像* @param[in] timestamp 时间戳*转载 2022-03-17 14:33:55 · 1663 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(12)图像、特征点、关键点去畸变
讲解关于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-03-16 17:39:09 · 1643 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(11)ORBextractor::operator()→BRIEF描述子
通过前面的博客,我们已经对FAST关键点做了详细的讲解。// Step 2 构建图像金字塔 ComputePyramid(image);//使用四叉树的方式计算每层图像的特征点并进行分配 ComputeKeyPointsOctTree(allKeypoints);转载 2022-03-15 14:21:29 · 1318 阅读 · 0 评论 -
(01)ORB-SLAM2源码无死角解析-(10)ORBextractor::operator()→灰度质心法
在上一篇博客中,我们讲解了关键点的均匀化,最后还提及到灰度质心法。那么什么是灰度质心法,其作用是用于什么?FAST关键点,是缺少角度信息的,其会对描述子产生影响,因为描述子需要具备旋转不变性(该内容的核心再后面的章节会进行讲解),我们首要的问题是为关键点提供角度信息。我们定义该区域图像的矩∑x,yxpyqI(x,y),p,q={0,1}x,y∑xpyqI(x,y),p,q={0,1}式中p,q。原创 2022-03-14 19:41:55 · 1005 阅读 · 0 评论