ORB-SLAM3算法学习—Frame构造
迪丽瓦拉
2024-02-10 11:41:43
0

文章目录

  • 0总述
  • 1.检测ORB特征,并为每个特征点计算BREIF描述子
  • 2.特征点去畸变`UndistortKeyPoints()`
  • 3. 计算双目匹配(双目相机模式独有)
  • 4. 为每个特征点注册网格信息

0总述

目前ORB-SLAM3支持4种相机传感器,同时又根据是否与IMU融合分为纯视觉Frame对象的构造以及VI模式的Frame对象构造

对于每种传感器,visual和vi模式的Frame构造共用一个函数

可以在Frame.h中看到共有3中构造函数,对应单目,双目和RGB-D相机,其中双目相机和双单目相机又共用一个构造函数

在Frame构造过程中,主要完成以下几件事:

1.检测ORB特征,并为每个特征点计算BREIF描述子

Tracking.cc->ParseORBParamFile函数中可以看到,ORB-SLAM3为单目的初始化额外创建了一个ORB特征提取器mpIniORBextractor,和正常模式下的特征提取器相比,区别在与所提取的特征点数量是正常模式下的5倍,目的就是为了保证较为稳定的初始化结果。

详情戳:ORB-SLAM3算法学习—Frame构造—ORB特征提取和BRIEF描述子计算

2.特征点去畸变UndistortKeyPoints()

这里的去畸变是根据配置文件中的畸变系数来的,对于已经矫正好的图像配置文件中畸变系数均为0,函数直接返回。

对于双目相机,比如zed微软的D435i会有remap处理,同样不需要对特征点去畸变处理

ORB-SLAM3中去畸变调用的是cv中的函数cv::undistortPoints

3. 计算双目匹配(双目相机模式独有)

对于双目相机,作者并没有直接使用相机输出的深度信息,而是基于一种带状搜索的方法,根据左目图像特征点的坐标在右目图像上寻找对应特征点,经过SAD搜索和抛物线拟合获得左目特征点在右目上对应的亚像素级别的坐标,最终计算对应的深度信息。

4. 为每个特征点注册网格信息

将图像划分为若干个网格,记录每个网格中特征点的信息,目的主要是用于特征匹配搜索。

相关内容