DSO源码解析学习笔记(滑窗优化)

选择要边缘化掉的帧

在这里插入图片描述
对于关键帧的边缘化策略

  1. 活跃点只剩下5%的;
  2. 和最新关键帧曝光变化大于0.7;
  3. 距离最远的关键帧

遍历关键帧
通过保留的点和边缘化点的比例,以及光度变化比例判断是否要被边缘化。
在这里插入图片描述如果剩下的关键帧依然大于设定窗口的最大值,利用帧间距离(保证良好的空间结构)继续筛选marg的帧。
在这里插入图片描述

加入到关键帧序列

在这里插入图片描述setPrecalcValues()
在这里插入图片描述

构建之前关键帧与当前帧fh的残差(旧的)

在这里插入图片描述

激活所有关键帧上的部分未成熟点(构造新的残差)

在这里插入图片描述激活一些具备条件的imagepoint,因为重新插入关键帧和点,因此需要重新计算一下ID号,方面后面计算正规方程。

对滑窗内的关键帧进行优化

在这里插入图片描述optimize()
1.判断迭代次数
在这里插入图片描述2.判断两帧之间点的残差,是否线性化,每次先验化完成之后,边缘化的点以及被抛弃,因此存下的都是未线性化的点,都会加入到activeResiduals
在这里插入图片描述3.线性化、计算能量函数
在这里插入图片描述此时传入linearizeAll的参数为false,若为true,会把状态进行更新,并挑选出一些不好的状态,残差比较大的点添加到remove中,但是此时为第一次线性化,并没有进行优化,所以没有剔除的过程。
在这里插入图片描述
linearizeAll() ==> linearizeAll_Reductor() ==> linearize()
主要函数linearize对不同的状态进行求导(位姿、光度参数、内参、逆深度)
4.迭代求解(类似高斯牛顿)
在这里插入图片描述4.更新之后,重新线性化一次,此时参数仍是false,优化并未完成。
在这里插入图片描述
5.根据先验化完成之后的能量是否下降,判断是否接受这次更新,如果接受apply,不接受则加载之前备份的状态,继续进行线性化,以备下一次求解。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200411205813432.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MjY2MDY1,size_16,color_FFFFFF,t_70

6.把最新帧的位姿设为线性化点
在这里插入图片描述优化完成之后,此时linearizeAll参数为true。
7.把优化的结果, 给每个帧的shell, 注意这里其他帧的线性点是不更新的
在这里插入图片描述

去除外点, 把最新帧设置为参考帧

在这里插入图片描述

标记删除和边缘化的点, 并删除&边缘化

在这里插入图片描述flagPointsForRemoval()标记要移除点的状态, 边缘化or丢掉
在这里插入图片描述
在这里插入图片描述

生成新的点

在这里插入图片描述

边缘化掉关键帧

在这里插入图片描述marginalizeFrame()把边缘化的帧挪到最右边, 最下边。并计算舒尔补。更新编号。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃头队长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值