@iStarLee
2021-08-25T15:43:56.000000Z
字数 7366
阅读 1527
SLAM-VisualSLAM
LSD(Line Segment Detector)是一种能在线性时间内得到亚像素级精度的局部提取线段的算法,其核心思路是将梯度方向相近的像素点合并。
空间点坐标
空间点的齐次坐标 , where
面的齐次坐标
直线上任意两个点可以构成直线方程约束一条直线。将直线方程看成是两个空间点的齐次坐标,这两空间点的齐次坐标作为的行向量构成2×4矩阵:
然而这是一种非紧凑的表示,具有多余的4个参数,在优化问题中会引入额外的约束,在表达点线、线面相交以及相机投影时不太便利。这里引入其他两种空间直线的表示。
普吕克坐标由两空间点确定,其齐次坐标分别为和。
这个齐次坐标里面的表示直线3维坐标的模,也就是
根据以上性质,可以知道因为6个非零元素只有5个是有意义的,另外由于,所以普吕克矩阵实际自由度为4。
普吕克坐标即由普吕克矩阵中6个非零的元素,将其按照一定的顺序排列成的一个六维向量,这里采用Bartoli论文中记号
几何意义理解:
普吕克坐标与普吕克矩阵的关系如下:
普吕克坐标在表达坐标变换和重投影时具有线性的形式,其中坐标变换的公式为
将空间直线投影到当前相机图像中,得到其投影直线方程为:
这个推导过程很简单,就是比较繁琐,
空间直线上的两个点变换到相机坐标系下得到,这两个点也可以构成。
首先将相机坐标系下的两个点分别按照如下投影关系投影到相机平面,
得到两个二维平面点,然后得到两点的平面直线方程,将方程统一成的形式,就可以得到相机坐标系下直线投影到图像坐标系下的投影关系。
这里推导谢晓佳的硕士论文时,发现他的这个投影矩阵中第三行第二列少写了一个负号,在贺一家博士的PLVIO论文中印证了我的推导,hiahia,论推公式的重要性呀~
然而这种6参数的形式大于空间直线自由度,且存在正交约束,因此普吕克坐标是一种过参数化的表示。因此Bartoli提出了一种4参数的最小化表示方法,称之为正交表示。
将组成如下曾广矩阵,然后进行QR矩阵分解如下:
令 , 其中,对应的
正交表示可以很容易地转为普吕克坐标:
空间直线的正交表示属于积流形(product manifold),因此可以利用切空间上的元素定义其增量。设增量为
中的4个参数具有具体的几何意义,隐含了的比值,也就是原点到空间直线的距离,因此第4个参数调节空间直线到远点的距离。距离确定的时候,调节空间直线绕3个轴的旋转,在图中分别用橙色、绿色和蓝色的直线簇表示,其中黑色直线为更新前的空间直线。
然而正交表示并不能像普吕克坐标一样很好地表示坐标变换和重投影,因此在本文中除了在后端优化中采用正交表示,其他情况下均采用普吕克坐标。
空间直线的观测模型存在多种定义方式,可以通过3D.3D的方式定义空间直线与匹配空间直线的误差,也可以通过3D.2D的方式定义空间直线与匹配图像直线的误差,通常采用后一种方法精度更高。
3D-2D的方式首先将空间直线重投影到图像上,然后计算投影直线和图像中的匹配线段的误差,图像中的线特征也可以用两个端点表示,分别为。
Bartoli列出了几种误差的定义方式,如
由于孔径问题以及在连续帧的图像中空间直线端点不准确,只有匹配线段垂直于投影直线这部分才能提供有效信息,而平行于投影直线方向可能存在很大的误差,因此使用该模型作为观测模型是比较合理的。
下表总结三维点和空间直线的坐标变换和投影方程,采用了齐次坐标的表示使得式子更加简洁,其中第三行表示将空间特征投影到双目的右图像中
将三维点和空间直线进行重投影后的结果如图
这两种误差的表示形式如下:
在假设观测误差为高斯分布的情况下,可以得到最后的代价函数:
需要求解直线重投影误差关于位姿增量和空间直线正交表示增量的雅可比矩阵。
求导思路是使用链式法则
这里直接给出结果,详细推导请参看该论文
这里使用ORB点特征描述子和LBD直线特征描述子,由于它们都是256位的二进制描述子,因此把它们放在同一个视觉词典里,可以简化建立视觉字典的过程以及进行回环检测时所进行的操作。通常图像中的点特征多和线特征少,点线特征在视觉词典里要区别对待,因此为ORB描述子添加标志位0,为LBD描述子添加标志位1,用标志位便可区分点特征与直线特征。
这个地方涉及到回环问题,先占坑。。。。。。。。。。。。。。
基于ORB-SLAM