超详细解读ORB-SLAM3单目初始化(下篇)

本文详细解析ORB-SLAM3单目初始化过程,包括KannalaBrandt8::ReconstructWithTwoView的畸变校正和位姿估计。通过对特征点匹配、基础矩阵与单应性矩阵的计算,以及随机种子选择和八点法,推导基础矩阵,利用卡方检验筛选优质解,最终通过三角化得到初始地图点。文章介绍了旋转角度直方图的构建,以及对极几何、归一化、直接线性变换和统计分析在位姿估计中的应用。
摘要由CSDN通过智能技术生成

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

一 前言

本文承接ORB-SLAM3 细读单目初始化过程(上),ORBSLAM3单目视觉有很多知识点需要展开和深入,初始化过程是必然要经历的,而网上资料不够系统,因此本文主旨是从代码实现出发,把初始化过程系统化,建立起知识树,以把零碎的知识点串联起来,方便快速学习提升自己。注意,本文虽然从代码出发,但并非讲全部代码细节,如有需要建议直接看源代码,地址是:https://github.com/UZ-SLAMLab/ORB_SLAM3,我自己稍微做了点修改,可以跑数据集的版本,可以参考一下,地址是:https://github.com/shanpenghui/ORB_SLAM3_Fixed

二 初始化主要函数

ORBSLAM单目视觉SLAM的追踪器接口是函数TrackMonocular,调用了GrabImageMonocular,其下面有2个主要的函数:Frame::Frame()和Tracking::Track(),本文和上篇都是按照以下框架流程来分解单目初始化过程,上篇记录了Frame::Frame(),本文就记录Tracking::Track()。

1 Tracking作用

ORB-SLAM3的Tracking部分作用论文已提及,包含输入当前帧、初始化、相机位姿跟踪、局部地图跟踪、关键帧处理、姿态更新与保存等,如图。

2 两个主要函数

单目地图初始化函数是Tracking::MonocularInitialization,其主要是调用以下两个函数完成了初始化过程,ORBmatcher::SearchForInitialization和KannalaBrandt8::ReconstructWithTwoViews,前者用于参考帧和当前帧的特征点匹配,后者利用构建的虚拟相机模型,针对不同相机计算基础矩阵和单应性矩阵,选取最佳的模型来恢复出最开始两帧之间的相对姿态,并进行三角化得到初始地图点。

三 ORBmatcher::SearchForInitialization

这个函数的主要作用是构建旋转角度直方图,选取最优的三个Bin,也就是占据概率最大的三个Bin,如图(数字3被异形吃掉了^-^)。因为当前帧会提取到诸多特征点,每一个都可以作为图像旋转角度的测量值,我们希望能在诸多的角度值中,选出最能代表当前帧的旋转角度的测量值,这就是为什么要在旋转角度直方图中选最优的3个Bin的原因。这个旋转的角度哪来的呢?就是在计算描述子的时候算的,调用函数IC_Angle,代码是:ORBextractor.cc#L475

keypoint->angle = IC_Angle(image, keypoint->pt, umax);

感兴趣的同学想知道为什么要这么麻烦的选取最优3个角度,请从旋转不变性开始理解,原理参见:3-5-3如何保证描述子旋转不变性?

(https://blog.csdn.net/shanpenghui/article/details/109809723#t20)

四 KannalaBrandt8::ReconstructWithTwoView

1 畸变校正

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORB-SLAM3 是一种基于单目相机的稠密三维重建算法。它是从原始的 ORB-SLAM 系统发展而来,具有更高的精度和鲁棒性。ORB-SLAM3 使用了 ORB 特征点描述子和 Bag of Words 方法来进行特征匹配和地图构建。它还引入了位姿图优化和稠密重建模块,可以生成更准确的三维地图。 具体而言,ORB-SLAM3 的工作流程如下: 1. 特征提取与描述:首先,对输入的图像序列进行特征提取,使用 ORB 特征点检测器和描述子生成器获得关键点和描述子。 2. 建立初始化地图:通过对关键帧之间的特征匹配进行三角化,估计相机的初始位姿,并初始化地图点的位置。 3. 位姿估计与优化:使用非线性优化方法(例如,基于捆绑调整(bundle adjustment)的方法)对关键帧之间的相对位姿进行优化,同时优化地图点的位置。 4. 闭环检测与回环优化:通过检测到与先前访问过的关键帧之间的回环,进行闭环检测,并通过非线性优化来优化回环帧之间的位姿和地图点的位置。 5. 增量式地图更新:根据新的关键帧和它们与地图点之间的匹配,更新地图点的位置,并添加新的地图点。 6. 稠密重建:使用关键帧之间的视差信息,通过三角化和深度滤波,进行稠密地图重建。 通过这样的流程,ORB-SLAM3 能够实现单目相机下的三维重建。它在许多实际应用被广泛使用,如机器人导航、增强现实和虚拟现实等领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值