基于matlab处理 RGB-D图像数据以构建室内环境地图并估计相机的轨迹(附源码)

一、前言

视觉同步定位和映射 (vSLAM) 是指计算摄像机相对于周围环境的位置和方向,同时映射环境的过程。

您可以使用单眼摄像头执行 vSLAM。但是,深度无法准确计算,估计的轨迹未知,并且随着时间的推移而漂移。要生成无法从第一帧开始三角测量的初始地图,必须使用单眼相机的多个视图。更好、更可靠的解决方案是使用 RGB-D 相机,它由一个 RGB 彩色图像和一个深度图像组成。

此示例演示如何处理 RGB-D 图像数据以构建室内环境地图并估计相机的轨迹。

二、处理管道概述

RGB-D vSLAM 的管道与单目视觉同时定位和映射示例中的单目 vSLAM 管道非常相似。主要区别在于,在地图初始化阶段,3-D 地图点是从一对由一个彩色图像和一个深度图像组成的图像创建的,而不是由两帧彩色图像组成的。

  • 地图初始化:初始三维世界点可以通过从彩色图像中提取ORB特征点,然后从深度图像中计算其三维世界位置来构建。彩色图像存储为第一个关键帧。

  • 跟踪:初始化地图后,通过将彩色图像中的特征与最后一个关键帧中的特征进行匹配,估计每个新 RGB-D 图像的相机姿势。

  • 局部映射:如果将当前彩色图像标识为关键帧,则会从深度图像计算新的三维地图点。在此阶段,使用束调整通过调整相机姿势和 3D 点来最小化重投影错误。

  • 闭环:通过使用功能袋方法将每个关键帧与所有先前的关键帧进行比较来检测每个关键帧的循环。一旦检测到闭环,就会优化姿势图以优化所有关键帧的相机姿势。

三、下载并浏览输入图像序列

此示例中使用的数据来自 TUM RGB-D 基准。可以使用 Web 浏览器或运行以下代码将数据下载到临时文件夹。创建两个图像数据存储对象以分别存储颜色和深度图像。请注意,颜色和深度图像在数据集中以不同步的方式生成。因此,我们需要根据时间戳将彩色图像与深度图像相关联。

四、地图初始化

管道首先初始化包含三维世界点的地图。此步骤至关重要,对最终 SLAM 结果的准确性有重大影响。初始 ORB 特征点是使用辅助程序检测和提取特征从第一个彩色图像中提取的。它们对应的 3-D 世界位置可以使用从特征点的像素坐标和深度值计算出来.

五、初始化地点识别数据库

循环检测是使用词袋方法执行的。表示为对象的视觉词汇表是离线创建的,其 ORB 描述符是从数据集中的大量图像中提取的,闭环过程以增量方式构建一个数据库,表示为倒置对象,该数据库存储基于 ORB 特征包的可视单词到图像映射。

六、数据管理和可视化

使用第一对颜色和深度图像初始化地图后,可以存储第一个关键帧和相应的地图点,跟踪过程使用每个 RGB-D 图像执行,并确定何时插入新关键帧。

每个帧的处理方式如下:

  1. 为每个新的彩色图像提取 ORB 特征,然后匹配,与最后一个关键帧中具有已知相应 3-D 地图点的特征进行匹配。

  2. 使用透视n点算法估计相机姿势该算法估计给定一组3D点及其相应的2D投影的校准相机的姿势。

  3. 给定照相机姿势,将最后一个关键帧观测到的地图点投影到当前帧中,并搜索要素对应关系.

  4. 使用当前帧中的 3D 到 2-D 对应关系,通过执行仅运动束调整来优化相机姿势。

  5. 将本地地图点投影到当前帧中,以搜索更多要素对应关系,并再次优化相机姿势。

  6. 跟踪的最后一步是确定当前帧是否应为新的关键帧。如果同时满足以下两个条件,则帧是关键帧:

  • 自最后一个关键帧或当前帧跟踪的地图点少于 20 个或参考关键帧追踪的点的 100% 以来,至少已经过去了 25 个帧。

  • 当前帧追踪的地图点小于参考关键帧追踪点的 90%。

如果当前帧要成为关键帧,请继续执行本地映射过程。否则,请启动下一帧的跟踪。

最后,对基本图应用姿态图优化以校正漂移。基本图是通过删除共可见性图中少于匹配项的连接在内部创建的。姿势图优化后,使用优化的姿势更新地图点的三维位置。

七、与地面真相比较

您可以将优化的相机轨迹与地面实况进行比较,以评估精度。下载的数据包含一个文件,该文件存储了每帧相机姿势的基本事实。数据已以MAT文件的形式保存。您还可以计算轨迹估计值的均方根误差 (RMSE)。

八、深度图像的密集重建

给定改进的相机姿势,您可以将相关深度图像中的所有有效图像点重新投影回 3-D 空间以执行密集重建。

九、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

程序有偿获取:评论区下留言,博主看到会私信你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13963.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络术语解释

目录 Padding: 填充步幅(stride)Pooling Layer:池化层Batch NormalizationSeparable ConvolutionsREFERENCE Padding: 填充 在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比 如0等&#…

电动汽车充电站监控系统设计_kaic

1 绪论 1.1 引言 汽车工业的告诉发展,汽车带来的环境污染、能源短缺、资源枯竭和安全等方面的问题越来越突出。为了保持国民经济的可持续发展,保护人类居住环境和能源供给,各国政府不惜巨资,投入大量人力、物力,寻…

Ae 效果:CC Threshold RGB

风格化/CC Threshold RGB Stylize/CC Threshold RGB CC Threshold RGB(CC 阈值 RGB)效果可以为红、绿、蓝三个原色通道分别设置阈值,即,通道上高于此阈值时为纯白,低于此阈值时纯黑,以实现对原色通道的二值…

获取系统时间日期相关接口梳理

时间&日期 ##MyTime.hpp #pragma once #include <iostream> #include <ctime> #include <string>using namespace std;class MyTime { public:MyTime() {};~MyTime() {};time_t timeSec(void);uint64_t timeMs(void);string timeDate(void); };##MyTim…

大语言模型的百家齐放

基础语言模型 概念 基础语言模型是指只在大规模文本语料中进行了预训练的模型&#xff0c;未经过指令和下游任务微调、以及人类反馈等任何对齐优化。 如何理解 只包含纯粹的语言表示能力,没有指导性或特定目标。 只在大量无标注文本上进行无监督预训练,用于学习语言表示。 …

TCP连接管理(三次握手,四次挥手)

目录 一、回顾一下TCP包头二、连接的建立——“三次握手”三、连接的建立——“四次挥手”保活计时器 一、回顾一下TCP包头 源端口号&#xff08;Source Port&#xff09;&#xff1a;16 位字段&#xff0c;表示发送方的端口号。 目的端口号&#xff08;Destination Port&…

Python——爬虫入门

爬虫的流程 第一步:获取网页内容 浏览器访问网页时也是一样&#xff0c;都是先发个请求获取网页内容&#xff0c;但是浏览器多了个渲染的步骤。 程序获取的内容都是网页源代码 第二步:解析网页内容 第三步:储存或分析数据 要做数据集就存起来&#xff0c;要做数据分析就形…

IP 协议(网络层协议)

IP协议 IP 协议作用地址管理动态分配 IP 地址NAT 机制IPv6IP 地址的组成 路由选择 IP 协议作用 主要有两点 : 地址管理 为每个上网的设备分配一个唯一地址. 路由选择 两台主机间的信息交互, 具体走哪条线路. 地址管理 先来看看 IP协议 报文格式 : IP 协议最主要就是 32 位的…

web学习笔记1

计算机&#xff1a; 课程大纲&#xff1a;html&#xff08;五条猫结构&#xff09; 结构 css 表现 JavaScript 行为 html&#xff1a;超文本标记语言 超&#xff1a;超链接&#xff0c;能从一个网页跳转到另一个网页 标记&#xff1a;文本要变成超文本&#xff0c;就需要各…

Linux——进程信号(下)

目录 总结 一&#xff0c;信号保存 1.1 阻塞信号 2.2 信号在内核(操作系统)中的表示 2.3 系统接口 2.3.1 sigset_t信号集 2.3.2 信号集的操作函数 2.3.3 sigprocmask 2.3.4 sigpending 2.4 实验样例 三&#xff0c;信号处理 3.1 信号捕捉 3.2 sigaction接口 3.3 实验…

c++11 标准模板(STL)(std::basic_istream)(一)

定义于头文件 <istream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式…

3D空间的旋转的各种等价形式

旋转矩阵 欧拉轴和角度&#xff08;旋转矢量&#xff09; 欧拉旋转 四元数