【最终版本】SVO框架总结

SVO主要参考两篇博客:

  1. 白巧克力的SVO论文解析
  2. SVO深度解析
  3. SVO详细解读(从程序出发)-极品巧克力

SVO(Fast Semi-direct Monocular Visual Odometry)是一种半直接法的视觉里程计,主要有两个部分,一个是跟踪,一个是深度建图。

SVO的跟踪部分主要分为3步:

1.sparse model-based image alignment

首先假设上一帧特征点的深度已知,通过将k-1帧中的特征点,反投影,再投影到当前第k帧中,通过最小化重投影光度误差,利用高斯牛顿法优化得到T\, k,k-1

其中:

2. Relaxation Through Feature Alignment

 

由于通过上一步获得的投影过来的方块patch(4*4) 并不完全准确,所以将关键帧中的特征patch,和上一步获取的patch进行比较优化,优化当前帧的特征位置,使其更加准确。其中要计算彷射变换A\, i(因为3D点所在的keyframe可能离当前帧很远)。这样考虑到旋转的因素,比较的更加科学。关键帧的选取规则:当前帧距离上一个关键帧的平移量超过场景深度的12%。

3.Pose and Structure Refinement

因为第二步优化后的特征位置与第一步预测到的特征位置存在差异,所以需要重新构造优化函数。此时是将地图中的3D点投影到当前帧,

1.先是只优化当前帧相对于世界坐标系的位姿(Motion-only BA)

2.之后再优化三维点的坐标(x,y,z)(Structure-only BA),跟踪过程就结束了。

SVO的建图过程

1.深度滤波器简介

SVO深度滤波是先在关键帧中创建一些seed点,之后用一系列帧,来求取指定帧上每个像素深度,原因是在计算像素点深度时,单次匹配恢复的深度有误差,需要依靠多次深度测量值的融合,来恢复误差较小的深度值。SVO把像素的深度误差模型看做概率分布,有两个属性,一个是深度值服从高斯分布,另一个是局外点的概率服从Beta分布,同时融合这两种属性。

SVO深度滤波对深度进行渐进式融合(动态融合)。其过程可表述如下:关键帧上选取像素点(SVO是fast角点,REMODE是梯度点),作为种子(seed,种子就是深度未收敛的像素点),每来一帧图像,融合更新一下之前提取的种子,直至种子的深度收敛,这是个动态过程,类似于滤波,大概这就是叫深度滤波的原因吧。如果新的一帧是关键帧,那么再次提取新的像素点作为种子。

2.详细步骤:

2.1计算极线,首先初始深度为当前场景的平均深度,当前帧的位姿通过跟踪过程已知,所以可以计算出3D点在当前帧的极线。

2.2计算彷射矩阵,利用三点法计算两时刻两帧之间的彷射矩阵。目的是考虑到旋转因素。

2.3极线搜索匹配:通过8*8的patch块,两个patch块匹配的方式是ZMSSD(Zero mean Sum of Squared Differences ),类似于SSD( sum of squared difference),当极线小于两个像素的时候,直接用"第二步"feature alignment对齐,因为此时不确定度很小。在SVO中,深度的不确定被认为是,在匹配时,误匹配一个像素所带来的最大深度误差。

2.4深度融合的具体过程,和卡尔曼滤波有些像但不是,同样都是新的观测到来,更新\beta分布的a,b两个参数,更新权重c\, 1,c\, 2,根据权重和融合前深度和观测深度获得融合后的深度,同时更新融合后的深度的方差。最终如果融合后的方差小于一定阈值或者判断点是局外点的话就停止。

 

 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值