0 论文总概述:
0.1 存在的问题
1.线特征匹配和提取上消耗大量时间,不能实现实时性
2.线段容易误匹配和误检测
3.线特征提取时存在着遮挡、模糊等,造成断线
0.2 创新点
在PL-VINS上改进了直线提取和追踪,及重投影误差定义
1.短线融合(形成长线,增强线段的鲁棒性,同时一定程度上可以克服遮挡问题),线特征均匀化(防止线特征在某一区域大量重复提取),自适应调整线特征提取的阈值(为了在提取线段较少时,降低阈值,提取更多的线段)
2.改进线特征的光流法。
传统:由上一时刻线特征预测下一时刻可能出现的位置,在这个位置周围开始匹配(仍要对每个帧的线段进行提取和匹配)
本文:直接由上一时刻匹配下一时刻,方法是线段整体的光度误差最小
3.新的线特征重投影误差模型
不使用传统的线端点的方式
4.改进了EDLine线特征提取模型
5.自适应调整判断直线的阈值,避免了在某个场景提取的直线数目变少
0.3 知识点
1.线特征提取:Hough变换(HT)、感知聚类(LSD)和基于深度学习的方法
2.EDlines是LSD的改进,针对的是灰度图,速度更快
1 需要解决的问题
1.重复纹理下,如何解决特征误匹配
解:先按照小的线段提取,在把小的线段合并成一条长的线段。方式:1.两个小线段角度较小 2.两个线段共线 3.两个线段的端点的距离较小
2.文章说避免了线特征的提取和匹配,是怎么做到的?
解:答案在下面,即3
3.光流是用来跟踪点的运动,如何估算运动?
解:用光流法计算下一帧图像中特征的位置,再使用PnP和ICP或对极几何来估计相机运动。好处就是省去了特征的提取和匹配过程
4.如何估算的相机运动?
5.其中那个n~ 是怎么知道的</
解: n ~ \tilde{n} n~是通过光流法追踪到的像素平面上的观测直线
6.线端点如何影响残差
解:在一个滑动窗口中,同一直线在不同位姿下,得到的端点不一样
7.为什么要自适应调整判断线段的阈值
解:如果一个环境中阈值高的话,会导致提取的直线数量变少。因此为了保证获得足够多的直线,需要自适应调整
10.怎么区分观测到的直线和重投影产生的直线?
解:**特征匹配和投影过程是独立的。**特征匹配,找到的就是真实点投影到相机的位置,为观测值。但是重投影的过程,考虑到的是R与t,主要问题在于由二维合成三维的时候,合成的三维点与真实点是不一样的。
例:通过光流法跟踪到了特征点,但是三角化过程需要考虑(R和t,这个是不准确的),导致计算的当前帧下的深度不准确,进而影响pnp的过程,导致下一帧的深度也不准确。
2 论文内容
1.线特征提取:对EDLine检测进行改进
(1)线段融合
因为遮挡,可能导致一条直线被分成好几段进行提取,会影响光流跟踪的效果,所以要进行融合。
融合标准:两个线段共线且距离要足够近
(2)线段均匀化
类似于vins-mono的均匀化过程
(3)自适应调整阈值
保证获得足够多的直线,需要自适应调整判断直线的阈值
2.线流法
2.1 灰度不变假设(常规推导)
I (u + du, v + dv, t + dt) = I(u, v, t)
对上式泰勒展开:
2.2 线流法过程:
定义直线上的点:
其中lm 为直线上任意一点到(u1 ,v1 )的欧式距离
根据图中关系可写式子
因为g3 是一个很小的变化,ln 和 ln ’ 近似一样
带入推导:
得:
则有(光流法主要求得是u和v的变化)
上式写成矩阵的形式:
2.3 也将金字塔引入线流法中
2.4 线流法追踪的注意事项
(1)追踪前,去掉线段两个端点的一小段部分
(2)追踪后,检查线段两个两个端点是否满足直线的梯度,如果满足就将直线延长
3 线段重投影误差
3.1直线表示(普吕克表示法)
最后化为四个自由度(因为W中只有 θ \theta θ一个自由度
3.2 重投影误差表示(用法向量代替整个直线)
其中 n ~ \tilde{n} n~是光流法追踪到的线段(即像素平面的观测直线),n是使用位姿变换(R,t)得到的直线
对上式求导(x是z,o是x)
其中,这个式子就是对上面的r进行求导