经典文献阅读之--MSC-VO(曼哈顿和结构约束VIO)

news2025/2/23 23:53:11

0. 简介

对于视觉里程计而言,在面对低纹理场景时,往往会出现退化的问题,究其原因是人造环境往往很难找到足够数量的点特征。而其他的几何视觉线索则是比较容易找到,在城市等场景中,通常表现出结构规律,如平行性或正交性,满足曼哈顿世界的假设。之前我们已经在《经典文献阅读之–PL-SLAM》文中介绍了点线SLAM的形式,相关的具体代码我们可以在Github上找到
在这里插入图片描述

1. 文章贡献

在本文章中,我们则进一步介绍MSC-VO,一种基于rgb-d的视觉里程计方法,它结合了点和线特征,如果存在,可以利用这些结构规正和场景的曼哈顿轴。此外我们需要着重注意的是,这些结构约束最初被用来准确地估计提取的线的三维位置。这些约束还与估计的曼哈顿轴和点和线的重投影误差相结合,通过局部地图优化来细化相机姿态。这种组合使我们的方法即使在没有上述约束的情况下也能够运行,从而允许该方法在更广泛的场景中工作。具体的主要贡献如下

  1. 提出了一种鲁棒的针对低纹理环境的RGB-DVO框架,可以在场景中存在结构规律和MA对齐时提高姿态精度。否则,我们的解决方案仍然可以运行,这将在实验结果部分中显示。

  2. 一种基于场景中所呈现的结构信息的三维线端点计算方法。

  3. 一种精确、高效的三维局部地图优化策略,它将重投影误差与结构约束和MA对齐相结合。

  4. 一种新颖的MA初始化过程,通过在多图非线性最小二乘公式中使用多帧观测来改进传统采用的平均位移算法的估计。

2. 详细内容

MSC-VO建立在ORB-SLAM2[2]的跟踪和局部映射组件之上。因此,它包含两个并行运行的线程,如图2所示。其一开始结构和PL-SLAM类似,我们主要就介绍三维特征位置估计以及曼哈顿轴估计这两个部分。
在这里插入图片描述

2.1 三维特征位置估计

一旦检测到点和线并对其进行描述,就可以得到它们在摄像机坐标中的三维位置。将点 p i p_i pi I t d I^d_t Itd中的2D位置对应的值作为深度进行反向投影。由此得到的摄像机坐标中的3D位置表示为 P i c P^c_i Pic。由于线条比点更容易受到深度不连续性和遮挡的影响,这个简单的过程可能会导致不准确的3D线条。为了降低这种影响,提出了一种鲁棒的两步法来计算三维直线端点。

首先,对于每个线段 j j j,通过反向投影符合图像中直线的点子集,计算其端点的初始3D位置,记为 { S j c , E j c } \{S^c_j, E^c_j\} {Sjc,Ejc},然后执行[14]中的鲁棒拟合步骤。三维归一化直线 L j c L^c_j Ljc的计算类似于等式1。然后,利用场景的结构约束来细化每条检测到的直线;我们首先把平行线和垂直线联系起来。为此,对于当前图像中检测到的每一对直线 ( L m c , L n c ) (L^c_m, L^c_n) (Lmc,Lnc),我们通过点积计算两个方向向量之间夹角的余弦:
在这里插入图片描述
我们只选择那些余弦值接近0或1的线段对, ( L m c , L n c ) (L^c_m, L^c_n) (Lmc,Lnc)分别代表垂直线或平行线。对选定的直线对采用非线性优化方法优化其直线端点。为此,采用g2o[20]实现的Levenberg-Marquardt算法。形式上,我们定义直线 L m c L^c_m Lmc L n c L^c_n Lnc之间的方向差异 d d d为:
在这里插入图片描述
我们分别表示 L ⊥ \mathbb{L}_⊥ L L ∣ ∣ \mathbb{L}_{||} L∣∣为有效垂直线对和有效平行线对的集合。假设一对 ( L m c , L n c ) ∈ L ⊥ (L^c_m, L^c_n)∈\mathbb{L}_⊥ (Lmc,Lnc)L,误差项 L m , n ⊥ \mathbb{L}_{m,n}^⊥ Lm,n为:
在这里插入图片描述

…详情请参照古月居

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

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

相关文章

程序中的日期使用问题-格式转化:SimpleDateFormat、org.apache.commons.lang3.time.DateUtils

前言 日期使用问题主要是格式转换的问题 场景:通过excel导入数据,其中一个字段为出生日期,需要对字段值进行合法性校验 博客地址:芒果橙的个人博客 【http://mangocheng.com】 一、个人浅谈日期 时间日期作为一个基础的标识和维度…

Windows下使用git提交代码到gitee

Windows下使用git提交代码到gitee 1、下载安装git 2、或者参考Gitee初始仓库里面的配置代码 上传本地代码到gitee上 1、 在本要上传的代码文件夹,右键 选择:Git Bash Here 2、执行:git init 3、然后执行:git add 文件名。&…

深入Spring底层透析bean生命周期及循环引用的醍醐灌顶篇

目录前言一.Bean的生命周期1.1 Bean的实例化阶段1.2 Bean的初始化阶段(重点)1.3 Bean的完成阶段二.循环引用问题(面试常问题)三.Spring的三级缓存(重点来了)四.完整的Spring IoC整体总结前言 本篇是接着bean的创建基本…

人工智能详细笔记 :卷积神经网络(CNN)

卷积神经网络和深度学习1.卷积神经网络的结构2.卷积神经网络的卷积运算3.卷积神经网络中的关键技术BP神经网络存在的问题: 输入类型限制:BP神经网络以数值作为输入。如果需要计算图像相关的信息的话,首先需要从图像中提取特征。隐层数量限制…

直播预告 | 嵌入式BI如何将数据分析真正融入业务流程

在信息化高速发展的今天,数据成为企业最有价值的资产之一。而数据本身很难直接传递有价值的信息,只有通过对数据进行挖掘、分析,才能让数据真正成为生产力。 商业智能(BI)应运而生,可以帮助企业更好地从数…

ASP.NET MVC | 简介

目录 前提 1.教程 2.MVC 编程模式 最后 前提 在学习学过很多课程,但是最主要学的还是ASP.NET MVC这门课程,工作也是用的ASP.NET MVC,所以写一点ASP.NET MVC的东西,大家可以来看看,我自己不会的时候也不用找别的地方…

django项目实战六(django+bootstrap实现增删改查)进阶优化modelform类与视图

目录 一、将视图里面的modelform类分离出去 二、按模块迁移视图 1、新建views视图文件夹 2、views下新建对应模块文件,并从views.py当中迁移代码 三、删除views.py 四、修改url路由 接上一篇《django项目实战五(djangobootstrap实现增删改查&#xf…

数据结构-考研难点代码突破(C++实现树型查找 - 平衡二叉树(AVL树)的基本操作(增删))

文章目录1. 平衡二叉树的概念AVL树的插入AVL树查找效率AVL树的删除(了解)2. C代码3. 考研数据结构代码仓库1. 平衡二叉树的概念 二叉搜索树虽然可以提高搜索效率,但如果数据接近有序的话搜索二叉树的效率退化为链表了。为了解决这个问题&…

跨境群店安全运营神器—超级浏览器

有点跨境电商经验的跨境人都知道,物理隔离是比较安全稳妥的防关联办法。但是多台电脑多条网络的办公方式,不仅设备成本高,人员的费用也高得吓人。后来大家开始使用VPS来防关联。VPS是一种虚拟专用服务器,它是一种将一台服务器分割…

企业微信机器人发送消息

前言 随着科技的发展,各企业公司的业务不断发展,那么就需要强有力的沟通软件,其中企业微信、钉钉的能力得到了大众的认可,今天这篇文章就讲其中的一个功能-调用企业微信机器人(下文简称应用)进行消息传递。它的好处有哪些呢?自然是可以让相关人员及时追踪任务进度。 一、…

记住这12个要点,你也能打造出让HR和技术主管前一亮的前端简历

第一篇章:吸引HR 如果你想在众多简历中脱颖而出,需要注意以下几点: 1、突出你的亮点: 给你的简历一个吸引人的文件命名和头部,突出你的关键技能和经验。 2、采用简洁的语言: 用简单易懂的语言来描述你的…

JavaScript-XHR-深入理解

JavaScript-XHR-深入理解1. XHR(Asynchronous JavaScript And XML)初始1.1. xhr request demo1.2. status of XHRHttpRequest1.3. send synchronous request by xhr1.4. onload监听数据加载完成1.5. http status code1.6. get/post request with josn/form/urlcoded1.7. encaps…

mysql和sqlserver查询数据库表的数量的方法

一、mysql查询数据库表的数量 1、查询mysql下所有数据库表的数量 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; 2、查询指定数据库的表的数量 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHER…

LeetCode第494题-目标和-python实现-图解思路与手撕代码

LeetCode第494题-目标和-python实现-图解思路与手撕代码 文章目录一、题目描述二、解题思路与代码实现1.解题思路2.代码实现总结一、题目描述 二、解题思路与代码实现 1.解题思路 这道题可以进行递归,遍历数组,对于当前这个数字,要么加上要…

Revit项目浏览器的标准设置应用和快速视图样板?

一、Revit项目浏览器的标准设置应用 设计院阶段的BIM应用,主要是Revit出施工图方面,需要涉及到很多标准的制定方面的问题,而且这个标准不仅仅是一个命名标准,还有很多的符合本院的出图标准等等,本期就不做详细讨论&…

【论文阅读】SCRFD: Sample and Computation 重分配的高效人脸检测

原始题目Sample and Computation Redistribution for Efficient Face Detection中文名称采样和计算 重分配的 高效人脸检测发表时间2021年5月10日平台ICLR-2022来源Imperial College, InsightFace文章链接https://arxiv.org/pdf/2105.04714.pdf开源代码官方实现&…

重压之下,特斯拉并不心甘情愿地召回FSD

/ 导读 /近日,美国国家公路交通安全管理局(NHTSA)宣布,其将召回近37万辆已安装或待安装全自动驾驶测试版(FSD Beta)的汽车。其实早在今年1月份的时候,NHTSA就要求特斯拉提交召回申请。而特斯拉在…

LabVIEW快速创建事件插件

LabVIEW快速创建事件插件此插件包含在LabVIEW2018及更高版本中。如果使用的是LabVIEW2017或更早版本,则只需从此处下载并安装它。在控件和控制终端上添加新的“创建>事件结构”:选择此选项将在控件上为指定事件配置新的事件结构:一些附加说…

jupyter使用指北:如何打开.ipynb文件|修改jupyter notebook的默认路径|在jupyter按照包

文章目录打开.ipynb文件、修改jupyter的默认路径笨办法好办法用jupyter notebook直接安装包运行代码打开.ipynb文件、修改jupyter的默认路径 比如,在该目录下有一个.ipynb文件,想用jupyter notebook直接打开: 笨办法 先进入jupyter再把文…

FFMPEG自学二 ⾳频编码实战

一、FFmpeg编码流程二、流程关键函数avcodec_find_encoder:根据指定的AVCodecID查找注册的编码器。 avcodec_alloc_context3:为AVCodecContext分配内存。 avcodec_open2:打开编码器。 avcodec_send_frame:将AVFrame⾮压缩数据给…