A Monocular SLAM System Leveraging Structural Regularity in Manhattan World
0 论文总概述
0.1 主要工作
针对低纹理环境,在曼哈顿世界中进行讨论,把线特征分为平行、正交,共面三种情况。先计算位姿的绝对变换,同时保留相对变换,并在后端对相对变换进行优化,最后修正绝对变换。得到旋转的先验值,在满足共面约束的情况洗,再使用最小二乘等方式计算平移部分。用平行、正交、共面的线进行地图构建,减少运算复杂度
做法概述:1.由点特征获取粗略的相对位姿,再用线特征进行修正。2.绝对位姿指的是相机坐标系旋转到世界坐标系
0.2 创新点
1.可以直接计算曼哈顿方向到相机坐标系的旋转,避免了旋转误差累积的影响
0.3 知识点
1.结构特征指的是世界中有三个方向正交
2.结构世界下,消失方向和当前相机中的一个曼哈顿方向相同
3.结构世界下,相机归一化平面的法向量分量方向和曼哈顿方向相同
4.人造环境比较常用的结构环境
5.结构环境相比与一般环境的优势是能提供更多的约束,从而提高准确度
6.消失点VP的变换,只能约束旋转向量
1 目前还不明白的问题
1.绝对旋转是世界坐标系下还是相机坐标系下?
答:绝对旋转指的是从相机坐标系转到世界坐标系
2.如何用平行、正交、共面的线进行地图构建,同时还能减少运算复杂度?
3.消失点怎么找?
4.是不是只有初始化曼哈顿坐标系,在
5.如何恢复尺度
6.开始是通过点特征计算旋转和平移吗
7.开始时的点特征计算旋转是用的什么方法?不会造成更大的耗时吗?
8.2.3.1怎么在过程中出现的单应矩阵,还有为什么单应矩阵相同需要剔除
9.其他论文也直接使用了Lm的方程,那直线不是也会发生变换吗?
2.论文内容
2.1 共面约束概述
2.1.1 变量命名:
:第i个相机 ;W世界坐标系
2.1.2 平行与正交结构约束
曼哈顿坐标系:
1.曼哈顿坐标系下的方向;
2.曼哈顿世界下,任意一条直线与曼哈顿坐标系的一个方向平行
消失点和曼哈顿方向的关系:
(曼哈顿世界中,所有平行直线荟聚于一个消失点)
消失点表示:(在像素归一化平面上)
消失点与曼哈顿方向满足的关系:为初始时曼哈顿方向
消失方向与曼哈顿方向关系:
消失方向:像素归一化平面相机归一化平面
(第三个消失方向可由其他两个消失方向正交得到,结构特征指的是世界中有三个方向正交)
示意图:
2.2 旋转优化
基于正交和旋转的关系进行优化
2.2.1 消失点的提取和曼哈顿方向的初始化
消失点提取:借鉴了Globally optimal consensus set maximization through rotation search的方法
曼哈顿方向提取:以第一帧为世界坐标系,计算曼哈顿方向。来源于,为归一化像素平面的消失点,其中I为单位矩阵。(只有在提取了两个消失点的帧,才进行方向初始化)
2.2.2 通过全局绑定优化绝对旋转
的初始值是通过点特征估计出来的,然后再通过消失点等进行全局优化
优化旋转的方程:
最右边的意义是使两者夹角最小,若果是正好的情况
其中,和都为单位向量,为的李代数(和都是先验信息,可以从每一帧图像直接获得)
使用LM的方法求解,将最开始估计得作为初值,先求取上面式子的雅可比矩阵: 具体求解为李代数的扰动求导,得到:
优势:通过上述计算R的方法,存在的优势为:直接计算出了从世界曼哈顿方向到当前帧的旋转,因此可以避免旋转误差累积的情况。
2.2.3 相对旋转优化绝对旋转
求解
使用两帧之间的相对旋转继续优化绝对旋转。使用还是消失方向,即与曼哈顿方向还是有关系
建立关系式:
自身叉乘为
因为存在扰动情况,上式不能保证一定成立,所以要建立最小二乘,同时把旋转矩阵用四元数表达,方便后序公式推导。
求解方法?
因为使用的消失方向,所以对于任意两帧都能计算出来很多(理想情况下一帧的消失点只有三个,但是实际中,会存在很多消失点)参与计算的消失点是只有三个还是很多?
利用求解
因为数量多于,为了有效使用所用,使用其他文章提出的一种旋转平均的计算方法。使用一阶近似,将从李群映射到李代数:
其中是已知的李代数,ω包含所有未知的{}待解(由初始化),E由两个单位矩阵I和多个空矩阵组成。
计算的方法?
再将映射会R
2.3 平移优化
在得到绝对旋转后,再计算平移信息。使用共面约束再归一化平面上得到平移向量,然后再检索尺度,从而恢复尺度
2.3.1 共面特征的识别与匹配
共面约束:
线面约束:,L为3D直线
点线约束:
匹配的线的集合表示:
共面的点满足约束:
线上的点满足约束:
结合上述方程,得到第一幅图的线和第二幅图线上点的约束:
点点约束:
匹配的点的集合表示:
本文方法介绍
目的:计算第一帧与第二帧之间匹配的共面直线和共面点
传统的共面匹配方法,如DLT-RANSAC没有考虑结构特征,会存在噪声等问题。因此本文提出一种新的方法
通过旋转优化部分知道,每一帧都将直线聚为三类,这三类与消失点有关系。
step1:在第i帧和第j帧使用V-junction描述子匹配直线;假设第i帧直线(属于)与第j帧的直线(属于)匹配,则与有关。
注意:假设,匹配,则所有属于这两个类的三维直线平行,但是不一定共面(在第i帧上,所有属于一个类的直线平行,在第j帧上,所有属于一个类的直线平行,二者之间存在相同直线,所以所有直线都是平行的)
把这些直线称为“候选的共面直线”
step2:使用特征线(CL)确定共面的直线。如果是共面的3D直线,那么2D的表达CL是相同的,否则CL表达是不一样的。(简单来说,每一个平面有一个独立的CL),通过CL可以将上述的“候选共面直线”划分到不同平面。
step3:合并直线.如果单应矩阵相同,可以合并(也就是剔除)
step4:由step3得到的单应矩阵H,计算第二帧中匹配的点。这个点怎么确定到底使用哪个单应矩阵?这个点是不是直线上的点
为什么3D的线一定要共面才行,而对点却没有这个要求?
按理来说两帧之间变换的单应矩阵只有一个,难不成两帧之间不同直线有多个单应矩阵?单应矩阵是怎么计算出来的?为什么会存在单应矩阵剔除的情况?
个人思考
对于一般的特征点方法,先假设所有点都位于一个平面,如在第i帧上的点变换到第j帧上的点,有旋转矩阵.经过三角测量,可以确定所有所有点的深度,此时就出现点并不一定位于同一平面。知道3D点P后,就可以得到从世界坐标到相机坐标系的旋转矩阵,即,故.简单来说,一般方法是先假设所有共面,再通过计算的深度把各个点分到不同平面
对于本文的方法,直接就假设了每一帧的直线不一定存在于同一平面,将属于统一平面的直线划分,再计算该平面对应的H矩阵。(因为计算H的前提条件是必须共面)简单来说,该方法是先把不同平面的直线划分,再分别对每个平面计算H矩阵。H矩阵应该是通过进行计算的。每一个平面只有一个H矩阵,因此需要将一个平面计算重复的H矩阵进行去除(4对匹配的点就可以计算一个H矩阵)
2.3.2 归一化平面的平移向量模型
d为光心到归一化平面的距离,n是平面的法向量
推导过程:用的和《视觉SLAM十四讲》中的单应矩阵推导相同。
假设存在两个匹配的特征点,归一化坐标系对应的点P,有 $$ n^TP+d=0\ -\frac{n^TP}{d}=1\ \
p_2=K(RP+t)\ =K(RP+t(-\frac{n^TP}{d}))\ =K(R-\frac{tn^T}{d})P\ =K(R-\frac{tnT}{d})K{-1}p_1
$$
公式中,和方向相同,因此可以固定,,为归一化平面上的位移
,如何确定每一个分量的具体大小?
线的约束
将带入,其中为直线上任意取得点,得到:
点的约束
对于点来说,理想情况下自身叉乘值为0。
q为齐次方程,秩为2,即和t有关的方程有2个。
将点线方程联立,得到,用最小二乘的方式进行求解。
2.3.3 相对平移优化绝对平移
利用上述得到的相对平移量,得到绝对平移量
采用平移的平均值,基于他人的在单位范数(范数指大小)相对平移的工作,改进在归一化平面上的平移(重点在得到的范数不一定为1)
方法介绍
定义一个因子,,值大小和大小一样,则得到,得到恢复了尺度的平移,计算和
形式和上面的旋转形式相同(左半部分可以理解为向量,即为
上式又是一个Ht=g的问题,H为稀疏矩阵,t是的矩阵,g是右半部分,再使用L1求解,最终得到
不知道怎么求出来的
2.4 三维结构图优化
使用得到R和t,利用平行、正交、共面的特性进行优化
平面表示:,n为法向量,d为光心到平面的垂直距离
直线普吕克矩阵表示:(到底是世界坐标系还是普吕克坐标系)
n为法向量,为方向向量
在空间坐标系下,直线的方向向量,直线所在平面的法向量是曼哈顿中的两个方向。可以重写直线与平面的约束方程:
因为上式直线L的矩阵表示秩为2(注意直线方向向量和直线法向量的点乘为0),而直线法向量的自由度为3,因此仅通过上面的式子不能唯一确定一条直线。直线的法向量与直线所处的平面有关,这里表现为光心距离平面的距离d,因为上述方程不能唯一确定一条直线,所以除了d之外还有一个影响因素k,下面分析该因素到底是什么。
为什么把变量定在了直线的法向量而不是方向向量?
直线的方向量通过在图像上就能直接确定,如两个端点,直线方程等。只有直线的法向量不能够直接获得,所以只讨论直线法向量的影响。
对于世界平面来说,法向量可以获得(同一平面的两条直线正交就可以得到),但是距离d是一个未知量。因此平面可以沿法线方向移动的距离。
对于直线来说,已经确定它在平面上,方向也以固定。所以能影响直线法向量大小的只有直线沿垂直方向移动,即上图的虚线(即使变换,直线依然可以在另一个平面的不同位置,保持直线法向量不变。因此,必然直线的位置发生变化才会影响