【论文阅读】EDPLVO: Efficient Direct Point-Line Visual Odometry
一、公式及符号约定
这篇论文是将直接法的残差计算从点扩展到了线段,所以一些符号在第三章的部分提前做了约定。用Π表示投影的函数,也就是用像素坐标和内参矩阵以及深度信息,投影出点的空间坐标,反之Π-1表示的是将空间坐标投影到像素平面上。由此可以定义特征点的投影过程:
利用这个式子,我们可以得到前一帧上特征点投影到当前帧上的位置,用这个位置,就可以计算直接法中的光度误差:
14讲里面对光度误差的定义没有这个式子这么复杂,这个式子中引入了Ii、Ij、ai、aj、bi、bj这些表示仿射光照变化的参数,所以计算出来的光度误差是更加准确的,wx是一个权重,权重的取值与梯度值有关。通过这个式子,我们可以计算一个点的光度误差。
除了点的光度误差,这一章节还补充了线段的普朗克坐标,关于普朗克坐标,之前的博客中有总结,这里不再赘述。但是不同之处在于,这篇文章中的普朗克坐标做了一下归一化处理,原本的普朗克坐标是两个向量组成:线段的方向向量以及光心、线段组成平面的法向量,在这篇论文中对普朗克坐标的定义稍微改变了一下:
而一般的普朗克坐标定义是:d=p2−p1,m=p1×p2,也就是完全依赖于线段的两个端点,不过论文中的定义并不妨碍我们用普朗克坐标去对线段进行表示,经过验算其实这两种表达方法都是一样的。在普朗克坐标的基础上,可以用点的坐标和线段的普朗克坐标直接计算出点到空间线段的距离:
这个式子其实用面积取解释是最好理解的,这里我用最原始的普朗克坐标定义去解释,组成普朗克坐标的两个向量,d表示线段的方向,m的大小为围成三角形的面积的两倍,d的方向是围成平面的法向量方向。我们假设相机光心为o,线段的两个端点为p1p2,点为p,那么有下面的图:
对于这个图来说,L也就是空间线段P1P2,m的大小表示的是三角形OP1P2的面积的两倍,也就是图中矮一点的平行四边形的面积,而p也就是向量OP,其与d叉乘的,也就是OP与P1P2叉乘,其大小表示的是图中较高一点的平行四边形的面积,而这两个面积,底的大小是一样的,差别就是高,而这个高,反应的就是p到p1p2的距离。这里可能存在一些式子细节上的理解问题,但是个人感觉这样去解释是最方便的。
二、基于点线的直接法
A、线段上任一点的空间表示方法
对于一帧图像上的一条线段,两个端点的坐标可以用投影和逆深度来表示(论文没有提逆深度是怎么得到的,应该是用三角化):
利用这两个点,可以计算出线段的普朗克坐标:
那么对于2D线段上的任何一点,定义点的方向向量为:
这个定义看起来比较麻烦,从图里来看直接就是相机光心发出,经过点x的向量:
在定义这些量之后,我们可以得出下面的式子:
先说结论,通过推导,这个式子表明线段上任何一个点的空间坐标依赖于线段端点的逆深度。推导的过程在论文的附录里面,推导的过程其实不难,对于点的空间坐标px,由于px必然在线段p1p2上,所以点到线段的距离一定是0,此外p1px和p1p2一定是共线的,由此可以写出下面两个式子:
用[]表示向量的反对称矩阵形式,那么上面的式子可以整理为:
B、线段的光度误差计算
线段的光度误差可以分为两部分:端点的光度误差和线段上采样点的光度误差。
由于我们在上一节最后证明了,线段上任何一点的光度误差只取决于端点的逆深度,所以对于上面这个式子,其结果只取决于两个端点的逆深度。
看完DPLVO之后才发现,这个线段的光度误差是在DPLVO的基础上增加的,这也是改进点之一,原本在DPLVO里面只有点的重投影误差和共线约束两部分,这里又增加了线的重投影误差,其实本质上应该算是采样点的重投影误差,由于采样点的2d位置确定后,其3d位置只取决于起点终点的深度,所以在不增加参量的情况下,给残差增加了新的约束。
C、线段的共线约束
论文中使用的线段提取方法是LSD,而LSD本身存在的问题是受到运动模糊或者取整的影响,线段提取本身存在一定的不确定性,不确定性反应在线段的宽度上。这里个人理解是线段可能并不准确,会由于抖动、模糊等原因,让坐标不准确,也就是说提取出来的一条线段,其周围一定范围可能仍然属于这条线段。基于此,论文对线段增加了一个支持域,支持域宽度用ρ表示,以此来衡量线段的不确定性,ρ越大,说明线段提取结果周围很大的范围都可能是线段的一部分,所以不确定性大。
所谓共线约束,实际上就是指一条线段在所有观测到的图像上检测的2d线段,反过来投影其端点应该保持共线,利用这一点,可以写出公式:
这里的共线约束,应该和DPLVO里面的共线约束是一个东西,不过这里从公式来看,是没有区分锚图和关联图的,而是对所有图一视同仁,并且使用的不再是采样点,而是只使用的端点,要求端点到空间直线的距离尽可能小。应该是处于计算开销的简化处理。
D、完整的残差公式
完整的残差公式被定义为上式,可以简单分为三部分:特征点的光度误差、线段的光度误差以及线段的共线约束。
E、基于滑动窗口的优化策略
这篇论文采用了VINS同样的滑动窗口机制,目的是为了提高残差公式的优化效率以及准确性,优化的目标包括位姿和点线坐标。优化的细节论文没有明说,是直接参考了另一篇论文的内容。
F、两步优化策略
为了加速优化的速度,论文还补充了两步的LM优化,没太看明白,个人理解是将变量拆成两部分做优化,先优化线的坐标,之后固定线的坐标,优化位姿和逆深度信息。
三、前端
这一章论文介绍了3D线段的初始化以及2D线段的合并。线段的初始化部分,由于采用的是直接法,所以对于当前帧并没有进行特征提取的过程,所以使用的是一种跟踪策略,具体来说是先对线段上的点进行采样,每个采样点进行投影,投影得到的点拟合一条2D线段,之后利用两条线段的反向延长曲面,相交得到一个3D线段,从而完成初始化的过程。但是问题在于,这个初始化执行的时机,从这个初始化的过程可以看出,跟踪准确的前提是要一个准确的位姿,否则投影拟合出来的线段是不准确的,但是前面计算位姿的时候明明是有线段的对应关系的,这二者相互冲突了,这里看的不是很明白,因为论文是在同一作者上一篇论文中改进的,之后会查一下上一篇文章,也就是DPLVO,看看里面是怎么写的。
2D线段的合并这里个人看的也不是很清楚,论文说LSD提取出来的线段有时候许多断掉的小线段,如果直接合并,可能会让本来的两条线段误合并成一条,这显然是不合适的。
所以在这里论文提出了一些新的合并措施:
【论文阅读】EDPLVO: Efficient Direct Point-Line Visual Odometry相关推荐
- 【论文阅读】DPLVO: Direct Point-Line Monocular Visual Odometry
一.公式及符号约定 这篇文章与之前看的EDPLVO是同一个作者,EDPLVO是在这篇文章的基础上改进的,符号约定方面,DPLVO同样采用R和t表示旋转矩阵和平移向量,使用Π表示投影函数,利用R和t以及 ...
- 论文阅读—Relation-Aware Graph Attention Network for Visual Question Answering
论文阅读-Relation-Aware Graph Attention Network for Visual Question Answering 一.标题 用于视觉问答的关系感知图注意力网络 二.引 ...
- 【论文阅读】Cross-X Learning for Fine-Grained Visual Categorization
[论文阅读]Cross-X Learning for Fine-Grained Visual Categorization 摘要 具体实现 OSME模块 跨类别跨语义正则化(C3SC^{3} SC3S ...
- 【论文阅读】Efficient Reading of Papers in Science and Technology
Efficient Reading of Papers in Science and Technology 0. 引言:为什么阅读? 1. 确定阅读哪些论文及哪些内容 2.1 广度阅读:建立框架 2. ...
- 论文阅读:Efficient Estimation of Word Representations in Vector Space
目录 前言 Abstract 1.Introduction 1.1 Goals of the Paper 1.2 Previous Work 2. Model Architectures 2.1 Fe ...
- 《论文阅读》Efficient LiDAR Odometry for Autonomous Driving
留个笔记自用 Efficient LiDAR Odometry for Autonomous Driving 做什么 Lidar Odometry激光雷达里程计,里程计作为移动机器人相对定位的有效传感 ...
- 论文阅读笔记:(2015, ijrr) Keyframe-based visual–inertial odometry using nonlinear optimization
算是基于滑窗的VIO的必读文章吧,很详细地说了边缘化~ paper: http://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Vi ...
- 论文阅读——ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 改进版通道注意力 from CVPR2020 期 ...
- 论文阅读(4)--Part-Stacked CNN for Fine-Grained Visual Categorization
这篇文章是来自悉尼科技大学Shaoli Huang等人的工作,与前两篇文章的出发点类似,本篇文章也是在Parts上寻找Fine-Grained的线索,但与前两篇文章相比,在框架中人工的参与更少.同其它 ...
最新文章
- ScaleYViewPager
- getparameter java_java中getAttribute与getParameter方法的区别
- 经典排序算法 - 鸽巢排序Pigeonhole sort
- verilog中如何拆分一个数
- python mq_RabbitMQPython
- mysql 临时表增加主键_MySQL之重建表
- [水力建模]EPANET代码解读1
- Linux gpio相关函数
- node制作http服务器,NodeJS 搭建 HTTP 服务器
- 用标号跳出当前多重嵌套循环是否继续执行循环_在Java中如何跳出当前的多重嵌套循环?...
- HTML5+js+css3开心消消乐手机pc端通用源码|H5小游戏
- Android 显示原生Emoji
- C语言输出图形:宝塔形(三角形)字母。第一行A,第二行BB,第三行CCC……
- 大众点评文字反爬破解
- 泰坦尼克号预测python_泰坦尼克号生存预测(python)
- 谷歌地图(Google Maps)接入基础篇
- c语言转fpga原理,要想玩转FPGA,就必须理解FPGA内部的工作原理-可编程逻辑-与非网...
- 掌握4C原则,设计高效的系统架构
- 详细设计说明书--文档模板
- VR教程来了!谷歌设计师出品的VR设计入门指南
热门文章
- Windows10网络优化工具
- android 选择文件路径无效,Android使用MediaMetadataRetriever类获取视频帧时一直无法正确读取路径文件,iamge显示位null...
- 集装箱堆场建模调度计划(建模阶段)
- Ebistrategy亦策软件助力先烁oTMS物流运输创新模式
- 分享CC1310射频芯片的433M无线模块设计
- dell服务器维修点绵阳,绵阳戴尔电脑维修
- 推荐一个好用的免费开源的笔记本软件CherryTree
- windows缺少msvcp120.dll解决方案
- html开放式标签(单标签)斜杠书写问题
- 人工智能-算法入门-