【一文足以系列】ORB SLAM2完整详细算法流程

算法目的

位姿估计 + 建图
在建图的同时不断优化自身位姿 提高建图的准确度
为广大视觉SLAM算法打下了基础

算法应用场景

  1. 室内室外均可
  2. 有明显的并且数量合理的回环检测
  3. 单目、双目、RGBD
  4. 算法本身可能无法直接使用 但是为后续算法提供了模版框架

算法优点

  1. 室内室外均可
  2. 有明显的并且数量合理的回环检测
  3. 单目、双目、RGBD
  4. 算法本身可能无法直接使用 但是为后续算法提供了模版框架

相关概念点

特征点:提取的是ORB特征 包括特征点和它的描述子
关键帧:由若干帧中选出的重要的帧(依据选取间隔、特征点数量等)
参考关键帧:构建这个地图点的关键帧为参考关键帧。
地图点:由关键帧的特征点三角化出的地图点
BA:对位姿和地图点同时进行优化(EM)
BOW:词袋 是特征点的聚类
BOW向量:BOW相似度得分 用一个向量描述整个图像(图像中出现狗 猫 但是没有汽车 记为【1, 1, 0】)得分就是计算两个图像之间的差值
ORB特征点:如角点 边缘点 特征点法中ORB特征点 + 相对应的描述子
描述子:对ORB特征点的位置进行描述
光流法:最小化光度误差 估计相机的运动 不实用描述子但使用特征点
直接法:先估计相机的运动位姿 计算前后两帧相对应的像素点的灰度值 通过减小灰度值的差值 优化相机位姿(可以使用任意像素点而不一定使用特征点 更不需要描述子)

内涵算法

三角化:三角测量算法 根据两帧图像恢复出深度 即地图点
对极几何:根据两帧单目图像恢复出相机运动 生成对极约束 对极约束中包括基础矩阵和本质矩阵 实际中通过求解本质矩阵得到相机变换位姿更多 但本算法使用的是基础矩阵
单应矩阵:恢复相机运动 场景中的特征点都落在了同一平面上 则可以通过单应矩阵进行求解
PnP:已知一帧图像的三维点和另一帧图像的二维点计算出相机位姿
RANSAC:将图像中的外点刨除 外点会极大影响计算结果 多次迭代拟合保留内点
BA优化:e = z - h(T, p) z为像素坐标 T为相机位姿(外参)对应的李群 p为三维点坐标 优化变量:R、t和p坐标 已知:z
sim3:用三对关键帧对应的地图点进行位姿求解(包括旋转矩阵、平移矩阵、尺度变换)

算法实现

tracking线程

在这里插入图片描述
三大线程:跟踪线程(主线程)、局部建图线程、回环检测线程

步骤

  1. ORB 特征点提取
  2. 相机初始化
  3. 根据前一帧图片估计出当前帧的位姿
  4. 基于当前帧的位姿构建出局部地图 局部地图的作用是优化当前帧的位姿
  5. 决定是否生成关键帧

单目相机初始化

成功条件

连续两帧间成功三角化超过100个点,则初始化成功
初始化帧即为参考帧 第二帧的特征点个数要大与100

单目相机初始化器

当特征点共面或者相机发生纯旋转时 基础矩阵的自由度下降 如果此时继续使用基础矩阵进行求解 则求解结果会极大的受到噪声的影响 为了避免这种情况的发生 本算法采用H和F同时计算的方法 选取卡方检验得分较高的那个结果
单目相机初始化步骤:

  1. 若单目相机初始化器还没创建,则创建初始化器
  2. 若上一帧特征点数量足够但是当前帧的特征点数量过少 则匹配失败 删除初始化器
  3. 在初始化帧和当前帧进行特征匹配
  4. 若匹配的特征点数目太少,则匹配失败,删除初始化器
  5. 进行单目初始化
  6. 创建初始化地图
初始化后续
  1. 将两个关键帧插入地图
  2. 处理所有的地图点&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铃灵狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值