DPLVO: Direct Point-Line Monocular Visual Odometry
0 论文总概述
0.1 存在的问题
1.普吕克坐标系下点与直线的距离
2.DSO中,2D点怎么计算深度?
3.为什么说共线信息是先验的,怎么利用的
4.特征点是角点还是光流法的形式
5.怎么在anchor image中用普吕克表示法记录,如何得到的法向量和方向向量
6.后端优化 具体是一个什么过程
7.如何实现的直线匹配?
8.什么情况下
0.2 创新点
0.3 知识点
1需要解决的问题
2论文内容
前言:
直线的表示:普吕克坐标系的表示 L=[m;d]
普吕克坐标系下点线距离:(相当于OX向量)
为什么要用m去减
假设直线为AB,点为X
考虑特殊情况,X在在AB的线段上
大小为、边组成的平行四边形的面积,,(叉乘计算要考虑方向)
普吕克坐标系下的位姿变换矩阵:
普吕克坐标系下直线的变换
2.1直接法
A.光度误差
是仿射亮度变换系数?和是第i和j帧的曝光时间?是依赖于梯度的权重因子 是特征点p周围的点 是Huber核
所有关键帧的误差为:
为第i帧的所有特征点,obs(p)为观测值
B.共线约束
(1)3D线段表示
线特征第一次出现的帧为anchor image,其余的帧为associate images
在anchor image中用普吕克表示法记录
先对图像去畸变,相机内参为K。是L在像素坐标系下(还是归一化平面?)的表示,是端点的齐次坐标,是L的端点
像素坐标系下的直线方程:
L的方向向量:
像素平面的法向量:
e1端点的向量(到底是哪个平面?):
到的角度;相机光心到直线的距离
3D直线L的普吕克表示:(当方向向量是单位向量时,方向量大小就是原点到直线的距离)
其中
(2)Anchor Image中的共线约束
是带有深度信息的在l上的点 在anchor image的Ii下
线上的点在三维下的表示:
这个点的共线约束:
线上的各个点,可以写成如下结果:
(3)Associate Image 的共线约束
lj 的各个采样点
(4)共线约束:
因为图像的运动模糊等问题,线段可能在某个区域模糊,不能确定。把这个区域定位 (大小怎么确定?)
用衡量共线约束
没有像其他人一样对每个直线提取相同的采样点,文章使用固定的长度去分割直线,把分割的线段中梯度最大(点怎么看梯度)的点当作采样点
目的:由于较长的直线一般对其参数的不确定性较小,这种抽样方法可以通过引入更多的点来增加较长直线的权重。
观测到该直线的帧的待定区域,的待定区域
C.误差整体函数
每一个2D直线选3个点?(这里怎么又固定了点的个数?)通过适当的调整可以发现,上述式子构成的矩阵也是稀疏的,因此可以高效求解
D.滑窗优化
(1)边缘化
点特征:采用常规的Schur的边缘化策略。
线特征:没有对线采用边缘化,把过去的观测当作约束,进而优化直线。同时,当anchor image和associate images移出时,添加先验共线约束
(2)先验共线约束
L'是世界坐标系下的直线,Xk 为L的采样点
整个直线的先验为:
假设直上有N个采样点,那么f的大小为3N?
(3)简化上述的先验信息
当直线L的anchor image或者associate images关键帧移出滑动窗口时,的矩阵会变大,下面论证此矩阵和N的大小无关
引理1:
A是3N*6, B是6 *2
其中L是线的普吕克表示,由下列式子得到
证明:将(4)
代入(16)
得:
将(8)
带入上式子,得:
通过上面式子求的雅可比矩阵,写成分母布局的形式
把每一个点的残差合并起来,写成下面形式:
引理2:定义 ;拆解为是
定义的精简版为,大小和线段上点的个数无关,gL 可以在高斯牛顿算法中替代fL
高斯牛顿方法中,gL 中迭代的各项分别为,大小为,N的数量越大,矩阵尺寸越小,计算速度越快
(4)ML的增量计算:为了计算gL ,需要先计算ML ,当N变大时,计算速度会减慢。因此采用一种增量的方式计算ML
前端
检测并初始化用于后端点、线、关键帧位姿
A.线的检测与管理
a.直线检测
包括了线的检测,初始化和匹配
b.合并直线
角度小于阈值且与原点间距离差不多