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

news2024/12/28 20:56:58

一、前言

视觉同步定位和映射 (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.coloradmin.cn/o/727082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红帽恪守对开源的承诺:对 git.centos.org 变更的回应

导读红帽上周宣布了限制源代码访问性的政策,称其企业发行版 RHEL (Red Hat Enterprise Linux) 相关源码仅通过 CentOS Stream 公开,付费客户和合作伙伴可通过 Red Hat Customer Portal 访问到源代码。 此举引发了巨大争议,红帽甚至被指责 “背…

大数据开发环境-Hbase

1.启动之前需要确保hadoop启动 # 查看 Hadoop 是否已经正常启动 : start-all.sh jps 2.启动Hbase

运输层:TCP可靠传输

1.运输层:TCP可靠传输 笔记来源: 湖科大教书匠:TCP可靠传输 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 TCP实现可靠传输的方式:以字节为单位的滑动窗口 发送方将31 ~ 41号报文段发送 假设32 ~ 3…

React04-Hooks 详解

一、Hooks 1. Hooks 简介 Hooks,可以翻译成钩子。 在类组件中钩子函数就是生命周期函数,Hooks 主要用在函数组件。 在 react 中定义组件有2种方式:class 定义的类组件和 function 定义的函数组件。 在类组件中,钩子函数可以给…

学生适合用什么台灯护眼?暑假适合孩子学习的台灯分享

又要临近暑假了,孩子们又要开始整天围着手机、电视、平板等等,想想就感觉到头疼。也有些家长趁着暑假期间给孩子报一下兴趣班,培养一下孩子的技能和情操。不过也要注意孩子的视力健康,不少孩子就是因为在暑假期间没有注意用眼习惯…

Camtasia 2023.1.0免费版电脑视频录制和剪辑软件

Camtasia Studio是一套专业的屏幕录像软件,同时包含Camtasia 录像器、Camtasia Studio(编辑器)、Camtasia 菜单制作器、Camtasia 剧场、Camtasia 播放器和Screencast的内置功能。Camtasia 是一款专门捕捉屏幕影音的工具软件。它能在任何模式下…

企业金蝶云星空服务器数据库中了locked勒索病毒如何应对

近日,很多企业的金蝶云星空财务账套被locked勒索病毒攻击,财务系统内的许多重要数据被加密,无法正常打开,计算机内的所有文件的扩展名全部都变成了.locked后缀勒索病毒,导致服务器数据库被锁定。这种情况的出现与企业的…

云原生之深入解析K8S Istio Gateway服务的架构分析与实战操作

一、概述 Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控、网关等功能,而不需要对服务的代码做任何改动。 istio 适用于容器或虚拟机环境(特别是 k8s),兼容异构架构&#x…

6.1 计算机网络应用模式

6.1 计算机网络应用模式 计算机网络应用模式与计算机网络的发展密切相关,大体可以分为三个阶段 以大型机为中心的应用模式(mainframe-centric) 该应用模式也称为分时共享(time-sharing)模式,也就是面向终端…

配置IOC的方式(配置文件和注解)

目录 背景实现xml方式实现结果&#xff1a; 注解方式实现效果&#xff1a; 升华 背景 我们已经学些了IOC概念和原理详情请见 一篇文章解释清楚IOC和DI 下面说如何实现IOC容器的效果。 实现 首先引入jar包 <dependency><groupId>org.springframework</groupId…

Prometheus - Concept

一 Prometheus 是什么 Prometheus 是一个开源的 监控和报警系统 。该系统内置和基于时间序列地抓取、存储、查询、绘图数据、报警。 现在是一个开源项目&#xff0c;继 K8S 后的第二个云原生计算基金会的托管项目&#xff0c;可见其火爆程度。 二 Prometheus 的特征 Promet…

异构系统的对接互通,天翎低代码平台有高招

编者按&#xff1a;企业内部里&#xff0c;最难的就是跨系统、跨应用的对接问题&#xff0c;系统之间的阻隔是影响业务效率的重要原因之一&#xff0c;如今随着技术的发展&#xff0c;这个问题上天翎低代码平台在异构系统对接方面提供多元化、多层次的方式让企业高效低成本的打…

python处理yaml、ini和execl文件

一、yaml的初步了解 YAML 是一个被广泛使用的数据序列化和配置语言&#xff0c;后缀可以为yaml或yml, 支持#注释&#xff0c;通过缩进表示层级&#xff0c;区分大小写&#xff0c;读取出来之后是一个字典列表 yaml 的用途&#xff1a; 用于做配置文件 &#xff08;yaml &…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十八天 18/50【层序遍历二叉树(两个队列一个遍历上一层,一个记录下一层)】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

数字虚拟人物制作为多个行业中的智能应用场景赋能

虚拟人物制作的广义定义为数字化外形的虚拟人物&#xff0c;是“虚拟”(存在于非物理世界中)“数字”(由计算机图形学、图形染、动作捕捉、深度学习、语音合成等计算机手段创造及使用)“人”(具有多重人类特征&#xff0c;如外貌、人类表演/交互能力等)的综合产物。 制作一个虚…

Hbase drop 表卡住没有响应

在实际工作中遇到过重新创建一个hbase的hive外部表&#xff0c;在 disable table_name; drop table_name 在drop table_name卡住 最后有提示报错。 建议各位查看下表有无lock的情况&#xff0c; 查看和释放hbase lock可以通过如下方式来查看 pid获取&#xff1a; 在 Ma…

idea支持vue文件-设置对vue的支持

一、idea支持.vue文件 这一步其实就是安装vue.js插件&#xff0c;具体路径为&#xff1a;File ----> Settings ----> Plugins ----> 输入vue&#xff0c;点击搜索结果里的vue.js右边的install按钮&#xff0c;安装成功后重启idea&#xff0c;这样idea就能识别.vue文件…

惨痛面经,做个记录

今天的行情太难了&#xff0c;找工作的还是比较艰难的一个过程。不和哪些优秀的人对比&#xff0c;我就是普通二本院校&#xff0c;工作4年&#xff0c;能力一般般&#xff0c;努力奋斗的一个搬砖人。分享一个月比较惨痛的找工作经历。 简历这一块自己准备的时间比较长&#xf…

争夺数据黑匣子市场,谁将接盘这家Tier1的被动安全业务

在相继卖掉智驾软件算法资产&#xff08;高通收购&#xff09;、主动安全传感器及系统业务&#xff08;麦格纳收购&#xff09;后&#xff0c;Veoneer最后剩余的被动安全系统业务&#xff08;主要是安全气囊ECU&#xff09;也在寻找产业买家。 本周&#xff0c;美国私募股权公司…

Docker Swarm安装PXC高可用集群

docker安装PXC集群 创建数据卷创建集群专用网络创建证书 主流mysql高可用的方式有以下几种 准备三台服务器 hostIP说明node1192.168.31.130PXC集群1node2192.168.31.131PXC集群2node3192.168.31.132PXC集群3 创建docker swarm集群 主节点node1执行 #docker swarm init --ad…