当前位置: 首页 > news >正文

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

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 三维特征位置估计

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

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

…详情请参照古月居

http://www.lryc.cn/news/15938.html

相关文章:

  • 华为OD机试真题Python实现【字母计数】真题+解题思路+代码(20222023
  • 在中国市场,假如Teradata像Nutanix那样“退出操作”,谁来“接盘”呢?
  • 使用vs2022编译yolov5+tensorRT+cuda+cudnn代码进行混合编译
  • 记一次:request请求总结
  • 2023年全国最新会计专业技术资格精选真题及答案2
  • 每日英语-20230221
  • 学习系统编程No.4【环境变量】
  • 通过Docker部署rancher
  • 【二叉树】
  • 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】
  • 【设计模式】对象行为型模式
  • 「TCG 规范解读」第11章 TPM工作组 TCG算法注册表
  • 华为OD机试 - 事件推送(C++) | 附带编码思路 【2023】
  • Java ”框架 = 注解 + 反射 + 设计模式“ 之 注解详解
  • 【拦截器、过滤器、springAop】那些不为人知的隐秘
  • 记录charles手机端配置https的成功过程
  • 你知道这几种常见的JVM调优场景吗?
  • 华为OD机试真题Python实现【最长连续子串】真题+解题思路+代码(20222023)
  • Vue使用distpicker插件实现省市级下拉框三级联动
  • Unity Avatar Foot IK - Avatar Foot Placement Resolution
  • 是时候告别这些 Python 库了
  • nodejs基于vue论坛交流管理系统
  • 企业电子招投标采购系统源码之系统的首页设计
  • 华为OD机试真题Python实现【竖直四子棋】真题+解题思路+代码(20222023)
  • LeetCode 73. 矩阵置零
  • 「TCG 规范解读」第10章 TPM工作组 保护你的数字环境
  • 华为OD机试真题Python实现【 找字符】真题+解题思路+代码(20222023)
  • 如何解决多继承下的 菱形继承 问题
  • rk3288-android8.1-以太网ethernet和蓝牙Bluetooth
  • 算法比赛——必备的数论知识