Advertisement

视觉SLAM算法框架解析(3) SVO

阅读量:

版权声明:本文为博主原创文章,未经博主允许不得转载。

SVO(Semi-direct Visual Odometry)[1]顾名思义是一套视觉里程计(VO)算法。相比于ORB-SLAM,它省去了回环检测和重定位的功能,不追求建立、维护一个全局地图,更看重tracking的效果,追求高计算速度、低CPU占用率,所以SVO非常适合在计算资源有限的移动设备上使用。SVO对PTAM的改进主要在两个方面:1)高效的特征匹配;2)鲁棒的深度滤波器。SVO比PTAM、ORB-SLAM计算速度快很多的最主要原因是SVO不需要每一帧都提取特征点。在tracking线程,当前帧的特征点是从上一帧用光流法传递到过来的,只有在mapping线程插入新关键帧时才需要提取特征点。另一个原因是SVO使用了深度滤波器,PTAM和ORB-SLAM只用两帧图像三角化出地图点,只要地图点没有被判定为外点,就固定不变了(除非BA阶段调整),而SVO的深度滤波器会根据多帧图片不断收敛地图点的不确定度,从而得到更可靠的地图点。因为地图点更可靠,所以SVO只需要维护更少的地图点(PTAM一般维护约160到220个特征点,SVO在fast模式下维护约120个地图点),从而加快了计算速度。

在tracking线程中开发了一套三阶段的方法论将前一帧对应的地图点投射至当前帧初始状态为单位阵随后比较前一帧特征点与当前帧投影区域(patch)之间的像素灰度差异以最小化photometric error求解出当前帧的姿态由于该步骤属于粗略估算故选择4*4大小的patch并省略仿射变换从金字塔顶层开始逐步计算直至达到第三层

由于前两步估计方法在某种程度上相似于直接法(如LSD-SLAM、DSO等),它们都旨在最小化光度误差;而第三步与基于特征点的方法(如PTAM、ORB-SLAM等)相仿,在某种程度上也相似于这些方法中使用的重投影误差最小化技术。如果不执行第一步...将会耗费更多时间;因为如果不执行第一步...将会耗费更多时间;因为如果不执行第一步...将会耗费更多时间;如果不执行第一步...将会耗费更多时间;如果不执行第一步...将会耗费更多时间;如果不执行第一步...将会耗费更多时间;如果不执行第一步...将会耗费更多时间;而不执行第二和第三步骤会导致较大的累计偏移

在mapping线程中,SVO首先判断当前帧是否为关键帧(即追踪成功特征点数量少于阈值则插入新关键帧)。如果是关键帧,则执行特征点提取及深度滤波器初始化;若非关键帧,则更新现有深度滤波器以观察其收敛性。若收敛,则生成新地图点辅助tracking线程计算SVO值;否则继续迭代优化直至满足精度要求。SVO采用与ORB-SLAM相似的方式提取特征点:构建金字塔结构后划分子网格区域并提取FAST角点(当无法获取足够显著 FAST角点时, SVO2.0会利用梯度最大的像素作为 edgelet特征点)。每个特征点对应一个独立深度滤波器,其深度值由高斯分布与均匀分布加权叠加而成(作者论证这种混合模型优于单一高斯假设,详细解析可见参考文献 REMODE)。初始阶段深度滤波器具有较大不确定性( stereo 或 RGBD相机可直接提供接近真实值的初值,从而加速收敛过程);随后每计算一新帧位置姿态,即可沿极线方向进行特征匹配并依据三角测量原理更新后验深度估计,直至不确定度低于设定阈值才建立地图点,随后立即用于运动估计计算

参考文献:

[1] Forster C, Pizzoli M, Scaramuzza D. SVO: Fast semi-direct monocular visual odometry[C]// IEEE International Conference on Robotics and Automation. IEEE, 2014:15-22.

[2] Forster C et al., SVO: Semidirect Visual Odometry for the Analysis of Single or Multiple Camera Platforms[J]. IEEE Transactions on Robotics, 2017, 33(2):249-265.

转载于:https://www.cnblogs.com/zonghaochen/p/8448620.html

全部评论 (0)

还没有任何评论哟~