【代码阅读】MSC-VO

news2024/11/13 9:29:20

MSC-VO是ICRA2022的一篇点线视觉SLAM论文,本身是在ORBSLAM2的基础上改进的,改进的部分在于为SLAM系统引入了线段,并且使用了曼哈顿坐标系与结构化约束进行优化,之前看过的论文记录可以参考链接,年前把线段匹配和均匀化的内容试着做了一下,现在计划看一下这篇文章的代码看一下后续的代码应该如何实现。

一、初始化部分

MSC-VO本身是基于ORBSLAM2的改进,所以基本的代码框架还是ORBSLAM2的那些东西,一个比较大的区别在于MSC-VO更换了数据的内容,将图像换为了深度图,也就是RGBD图像,所以在MSC-VO的代码里面,如果输入内容不是RGBD图像,就会报错。

整个MSC-VO的主函数在Examples文件夹下的RGB-D下的rgbd-tum.cc文件,该文件内部写有整个框架的主函数,通过初始化SLAM对象来调用其余的内容,初始化的部分和ORBSLAM2几乎没有差别,这里不在展开说了,之后根据文件名读取RGBD图像,调用SLAM对象的TrackRGBD函数进行后续的处理。

二、Tracking线程

通过SLAM对象调用TrackRGBD函数,将图像与深度图传入到函数中。这里稍微补充一下,RGBD的数据集其实是两组图组合出来的,这里拿ORBSLAM使用的那个桌子的数据集来说,下载好的数据集内部其实包括这么几个部分:
在这里插入图片描述
其中rgb文件夹下的图像和我们平时用的单目相机图像是一样的,就是带颜色的相机图像,而depth文件夹则存放了深度图像,这里的深度图实际上是单通道的灰度图,用对应位置上的像素值来表示传感器感知到的深度值,深度图和RGB图像之间用提前存好的关系来进行对齐,从而实现深度的感知。
在这里插入图片描述
在TrackRGBD函数中,通过调用mpTracker对象(也就是tracking线程)的GrabImageRGBD函数来计算位姿,进入这个函数后通过cvtColor来进行通道的转换,将RGB图像转换为灰度图。转换好的图像用于初始化帧对象,由于使用了线段和曼哈顿坐标系,所以一些写法也发生了改变。
在这里插入图片描述
下图为ORBSLAM2代码中对应位置的写法:
在这里插入图片描述
可以看出,构造函数中增加了线段的提取器和曼哈顿距离的相关处理的内容,这几个对象都是在构造tracking对象的时候进行初始化的,位置在tracking对象的构造函数中:
在这里插入图片描述
在进入tracking线程之前,我们先简单看一下这两个对象的内容。

线段提取器对象

曼哈顿坐标系对象

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

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

相关文章

CMake的介绍

1.示例代码其实都非常简单,直接使用 GCC 编译器编译即可,连 Makefile 都不需要。在实际的项目中, 一个工程中可能包含几十、成百甚至上千个源文件, 这些源文件按照其类型、功能、模块分别放置在不同的目录中;面对这样的…

Kafka-生产者分区

一、分区的好处 便于合理使用存储资源,每个Partition在一个Broker上存储,可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务,可以实现负载均衡的效果。提高并行度,生产者可以以分区为单位发送数…

Git自学日记

添加暂存区 git add 提交本地库 git commit -m “日志信息” 修改文件 vim 修改文件名 按i进入编辑模式 按esc退出编辑摸模式 :wq 保存更改 历史版本 git reflog 查看版本信息 git log 查看版本详细信息 版本穿梭 git reset --hard 版本号 分支操作 创建分支: git br…

【数据结构】7.1 查找的基本概念

文章目录1. 查找表2. 关键字3. 查找4. 动态查找表和静态查找表5. 平均查找长度1. 查找表 问题:在哪里找? 答:在一个新的数据结构查找表上面找。 查找表: 查找表是由同一类型的数据元素(或记录)构成的集合…

操作系统真相还原_第5章第3节:加载内核(ELF格式分析)

文章目录用C语言写内核(例)二进制程序的运行方法ELF格式的二进制文件ELF文件格式数据类型ELF header的结构Elf32_Phdr的结构ELF文件实例分析将内核载入内存当前的OS信息当前内存规划源码boot.incmbr.sloader.s内核编译并写入硬盘用C语言写内核(例) 源码: int func…

图像处理 手写体英文字母的目标检测与识别 实验报告

获取本实验的项目代码和实验报告&#xff0c;请>点击此处< [0] 摘要 近年来&#xff0c;随着python的迅速崛起&#xff0c;人工智能、图像识别、计算机视觉等新兴学科变得火热起来。Python的发展也伴随着它的各种衍生库、衍生编辑器的发展&#xff0c;其中OpenCV是比较经…

恶意代码分析实战 7 WinDbg

配置WinDbg双机调试。 下载Windbg&#xff08;WDK&#xff09;。 事实上你自己的win10上应该会自带。 配置WinXP虚拟机的boot.ini 改成如图所示的样子 修改主机上Windb的属性。 修改成如图所示&#xff1a; 启动WinXP选择调试状态&#xff0c;启动Windbg即可开始调试。 7.…

【JavaWeb】JavaScript基础语法(下)

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:JavaScript基础语法(上)&#xff01; &#x1f680;&#x1f680;代码托管平台github&#xff1a;JavaWeb代码存放仓库&#xff01…

程序员的自我修养第七章——动态链接

继续更新《程序员的自我修养》这个系列&#xff0c;主要是夏天没把它看完&#xff0c;补上遗憾。本篇来自书中第七章。 再说动态链接前&#xff0c;我们先阐明为什么要动态链接&#xff1a; 动态链接的产生来自静态链接的局限性。随着静态链接的发展&#xff0c;其限制也越来越…

zookeeper可视化工具

参考资料&#xff1a; 参考网址 使用过程&#xff1a; 首先打开网址&#xff0c;将资源克隆下来解压压缩包 打开压缩目录下 startup.bat ,填入对应地ip即可&#xff08;记得优先启动zookeeper&#xff0c;否则会报错&#xff09;

我的1周年创作纪念日

机缘 我目前还是一名六年级小学生&#xff0c;下半年便升入初中了。 我是在2021年上半年&#xff08;我四年级下期时&#xff09;开始学习C的。后来我自己想做一些小游戏&#xff0c;便经常要在百度上搜索&#xff0c;后来就发现CSDN中的内容比较全面&#xff0c;便加入了CSD…

MacOS下在Pycharm中配置Pyqt5工具(2023年新版教程)

前提&#xff1a;使用Anaconda的包管理工具进行管理。创建environment&#xff0c;然后在该Environment上进行下载操作&#xff01;&#xff01;&#xff01;一、安装相关模块安装pyqt5、pyqt5-tools两个基础包&#xff0c;命令如下&#xff1a;pip install -i https://pypi.tu…

CSS文本与字体(文本格式化/对齐/装饰/转换/间距/阴影/字体/样式/大小/简写属性)

目录 文本颜色 文本颜色和背景色 文本对齐 文本方向 垂直对齐 文字装饰 文本转换 文字缩进 字母间距 行高 字间距 空白 文本阴影 所有 CSS 文本属性 字体选择很重要 通用字体族 Serif 和 Sans-serif 字体之间的区别 一些字体的例子 CSS font-family 属性 字…

vue-countTo不兼容vue3解决方案

我们想要做一个数值增长的过度效果可以使用vue-count-to 官网的地址&#xff1a;https://www.npmjs.com/package/vue-count-to 官网的截图 vue2的使用方式 cnpm install -S vue-count-to在main.js import vueCountTo from "vue-count-to"; Vue.component("C…

【JavaEE】如何开始基础的Servlet编程(基于Tomcat服务器)

如何开始最简单的Servlet编程&#xff1f;&#xff08;基于Tomcat服务器&#xff09;知道了如何借助Tomcat开始进行最简单的Servlet编程后&#xff0c;我们就可以进一步完善功能制作一个基础的网站了。在此之前我们先了解一下Servlet的生命周期。Servlet的生命周期初始化init -…

C++ list

目录 一. 初步了解 1.构造、析构、赋值 2.容量 3.元素访问 4.增删 二. 模拟实现 框架 push_back 迭代器 带参构造、析构、赋值 增删 反向迭代器 所有代码 说白了&#xff0c;就是一个双向循环带头链表&#xff0c;由于我们在数据结构中已经学习过链表的知识&a…

macOS Big Sur 11.7.3 (20G1116) Boot ISO 原版可引导镜像

本站下载的 macOS Big Sur 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。 请访问原文链接&#xff1a;https://sysin.org/blog/macOS-Big-Sur-boot-iso/&a…

Nginx学习整理|入门记录

目录 1. Nginx概述 1.1 Nginx介绍 1.2 Nginx下载和安装 1.3 Nginx目录结构 2. Nginx命令 3. Nginx配置文件结构 4. Nginx具体应用 4.1 部署静态资源 4.2 反向代理 4.3 负载均衡 1. Nginx概述 1.1 Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件…

积分电路的并联电阻、反向放大电路的并联电容的区别?

运放反相比例放大电路中反馈电阻两端经常并联一个电容&#xff0c;而运放积分电路的反馈电容上常常并联一个电阻&#xff0c;两者电路结构相似&#xff0c;如下所示&#xff08;隐去阻容值&#xff09;&#xff0c;二者有何区别呢&#xff1f;电阻、电容分别又起到什么作用&…

Catboost

CatBoost简介 CatBoost是俄罗斯搜索巨头Yandex在2017年开源的机器学习库&#xff0c;是Boosting算法的一种&#xff0c;CatBoost和XGBoost&#xff0c;Lightgbm并称为GBDT三大主流神器&#xff0c;都是在GBDT算法框架下的一种改进实现&#xff0c;XGBoost是被广泛应用于工业界…