【视觉惯性SLAM:十二、ORB-SLAM2:局部建图线程】

news/2024/12/30 17:33:45/

局部建图线程是ORB-SLAM2的核心模块之一,其主要任务是以局部关键帧为中心,维护和优化局部地图,并不断生成新的地图点,使得地图能够逐渐扩展和保持鲁棒性。以下将从具体的几个方面介绍ORB-SLAM2中的局部建图线程,包括处理新的关键帧、删除不合格的地图点、生成新的地图点、检查并融合当前关键帧与相邻帧的地图点,以及关键帧的剔除。

局部建图线程流程

在这里插入图片描述

处理新的关键帧

局部建图线程的核心起点是处理新生成的关键帧。新的关键帧可以为局部地图提供更多约束,并扩展地图的范围。

背景及意义

  • 当跟踪线程认为当前帧是一个新的关键帧时,会将其传递给局部建图线程。
  • 关键帧是地图中最重要的组成部分,它记录了相机在某些关键位置的观测信息。
  • 处理新的关键帧是局部建图线程的第一步,也是局部地图更新的基础。

实现步骤

  • 提取当前关键帧的特征点和地图点:
    • 从当前关键帧中获取已经匹配的地图点。
    • 记录当前关键帧与共视关键帧的共视关系。
  • 更新局部地图的结构:
    • 将新的关键帧加入局部地图,并与周围的关键帧建立连接关系。
    • 更新局部关键帧的集合,选取与当前关键帧共视关系最强的若干关键帧。

删除不合格的地图点

地图点是SLAM系统中存储环境信息的核心数据结构,但其中可能存在误差较大的点,称为“不合格的地图点”。局部建图线程需要及时检测并剔除这些地图点。

背景及意义

  • 不合格的地图点可能源于错误的三角化、不正确的特征匹配或动态物体的影响。
  • 这些点如果不删除,会导致局部优化的误差增大,影响整个系统的精度。

删除标准

  • 观测次数过少:
    • 如果一个地图点仅被很少的关键帧观测到,则很可能是错误的点。
    • 系统通常会设置一个最小观测次数阈值。
  • 重投影误差过大:
    • 通过投影该地图点到观测它的图像帧,如果投影误差过大,则认为是误差点。
  • 视差太小:
    • 如果地图点的三角化视差过小,则深度估计的误差较大,通常被认为是低质量的地图点。

实现步骤

  • 遍历当前局部地图中的地图点。
  • 根据上述标准,标记不合格的地图点。
  • 从地图中剔除标记的点,释放内存并更新地图结构。

生成新的地图点

新的地图点可以通过当前关键帧和其他关键帧之间的视差进行三角化生成,为地图增加新的环境信息。

背景及意义

  • 局部地图需要不断扩展,以覆盖更大的环境范围。
  • 通过新的关键帧,系统能够生成更多的地图点,用于后续的跟踪和优化。

实现步骤

  • 搜索匹配的特征点对:
    • 在当前关键帧和共视关键帧之间,寻找匹配的ORB特征点对。
  • 进行三角化:
    • 使用匹配的特征点对,通过三角化方法计算其三维坐标。
    • 确保新生成的地图点满足视差和深度的约束条件。
  • 验证新地图点的质量:
    • 新生成的地图点必须具有足够的视差,并且能够被当前帧和其他关键帧有效观测。
  • 将新地图点加入局部地图:
    • 将符合条件的地图点加入到局部地图中,并与相关的关键帧建立连接关系。

检查并融合当前关键帧与相邻帧的地图点

地图点的重复会增加存储开销,并可能导致优化问题,因此局部建图线程需要检查地图点之间的冗余性,并进行融合。

背景及意义

  • 在实际场景中,不同关键帧可能观测到相同的三维点。
  • 融合冗余地图点可以减少冗余数据,提高地图的紧凑性和一致性。

实现步骤

  • 检测重复的地图点:
    • 根据地图点的三维坐标,如果两个点之间的欧几里得距离小于一定阈值,则认为是重复点。
  • 融合地图点:
    • 对于重复点,保留质量较高的地图点,并将其他点的观测信息合并到保留的点中。
  • 更新地图点的观测信息:
    • 重新更新与融合点相关的关键帧观测信息。

关键帧的剔除

随着地图的不断扩展,系统中存储的关键帧数量可能会快速增长。为了控制关键帧的数量,局部建图线程需要对关键帧进行剔除。

背景及意义

  • 剔除冗余关键帧可以减小计算开销,提高优化效率。
  • 被剔除的关键帧通常是对地图信息贡献较小或被其他关键帧代替的帧。

剔除标准

  • 覆盖率:
    • 如果一个关键帧的大部分地图点都被其他关键帧观测到,则认为它是冗余的。
  • 观测次数:
    • 如果一个关键帧的地图点大多被其他关键帧观测,则可以剔除该关键帧。
  • 连接关系:
    • 关键帧的共视关系较弱时,也可能被剔除。

实现步骤

  • 遍历局部地图中的关键帧。
  • 根据剔除标准,标记冗余关键帧。
  • 删除标记的关键帧,并更新共视图和地图点的观测关系。

局部建图线程的特点

  • 动态性:
    • 局部建图线程动态维护局部地图,包括添加新关键帧、新地图点、删除冗余信息等操作。
  • 高效性:
    • 局部建图线程利用多种剔除和融合机制,保证地图的质量与规模在可控范围内。
  • 鲁棒性:
    • 通过严格的地图点质量检测和局部优化,局部建图线程提高了ORB-SLAM2的跟踪稳定性和地图精度。

总结

任务作用实现方法
处理新的关键帧加入新的关键帧以扩展地图更新局部地图、共视关系
删除不合格的地图点保证地图点的质量和精度检测观测次数、投影误差和视差
生成新的地图点扩展局部地图,增加环境信息特征匹配、三角化、质量验证
检查并融合地图点删除冗余点,提高地图的一致性检测重复点并进行融合
关键帧的剔除减少冗余关键帧,控制系统开销检测覆盖率、观测次数和连接关系

http://www.ppmy.cn/news/1559066.html

相关文章

高德地图API使用规范

高德地图API的使用涉及多个步骤,包括注册与登录、创建应用、获取API Key、配置开发环境、调用API接口等。以下是一个详细的使用指南: 一、注册与登录 访问高德开放平台官网,点击右上角的“注册”按钮,进入注册页面。填写相关信息…

Bash Shell知识合集

1. chmod命令 创建一个bash shell脚本 hello.sh ~script $ touch hello.sh脚本创建完成后并不能直接执行,我们要用chmod命令授予它可执行的权限: ~script $ chmod 755 hello.sh授权后的脚本可以直接执行: ~script $ ./hello.sh2.指定运行…

界面控件DevExpress v24.2新版亮点 - 支持.NET9、增强跨平台性

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布,该版本拥有众多…

【论文阅读】DynamicControl :一种新的controlnet多条件控制方法

背景 现有方法要么处理条件效率低下,要么使用固定数量的条件,这并不能完全解决多个条件的复杂性及其潜在冲突。这强调了需要创新方法来有效管理多种条件,以实现更可靠和详细的图像合成。为了解决这个问题,我们提出了一个新的框架…

Flink窗口window详解(分类、生命周期、窗口分配器、窗口函数、触发器)

一、窗口的分类 时间窗口:滚动(窗口大小)、滑动(窗口大小、滑动步长)、会话(会话超时时间) 计数窗口:滚动、滑动 二、窗口window的四个关键组件 窗口操作一般在keyby之后调用wind…

什么是WebAssembly?怎么使用?

一、简述 WebAssembly,也称为Wasm,是基于堆栈的虚拟机的二进制指令格式。它被设计为一个可移植的目标,用于编译C、C和Rust等高级编程语言,允许代码以接近本机速度在web浏览器中运行。WebAssembly于2015年由包括谷歌、微软、Mozill…

Python 自动化 打开网站 填表登陆 例子

图样 简价: 简要说明这个程序的功能: 1. **基本功能**: - 自动打开网站 - 自动填写登录信息(号、公司名称、密码) - 显示半透明状态窗口实时提示操作进度 2. **操作流程**: - 打开网站后自动…

AT24C02学习笔记

看手册: AT24Cxx xx代表能写入xxK bit(xx K)/8 byte 内部写周期很关键,代表每一次页写或字节写结束后时间要大于5ms(延时5ms确保完成写周期),否则时序会出错。 页写:型不同号每一页可能写入不同大小的…