DSO-2-跟踪与建图

DSO-2-跟踪与建图

跟踪

运动假设

上面说的旋转运动各有3种:

  • 绕x轴: 逆时针转,顺时针转,不转 (3种)
  • 绕y轴: 逆时针转,顺时针转,不转 (3种)
  • 绕z轴: 逆时针转,顺时针转,不转 (3种)

最终,有 3x3x3-1=26种 ,因为3个轴都不做旋转的时候,就相当于匀速模型了。

激活点跟踪

  • 从顶层开始,向底层遍历:
    • 如果某一层的大于能量阈值的点>60%,(有用的点太少了),则放大外点阈值,然后使用LM来优化,该层再进行优化一次,一共2次
    • 如果某一层能量值>1.5倍能量最小值,认为跟踪失败
    • 直到遍历到第0层(原图)
  • 第0层的优化结果<小于阈值的时候,就停止优化,把目前最好的优化结果作为下一次跟踪的阈值?(相当于使用动态阈值,提高鲁棒性)

需要注意的是:

  • 第一节-初始化的时候,对光度参数求导,由于参考帧的光度参数\(t_i e^{a_i},b_i\)和当前帧的光度参数\(t_j e^{a_j},b_j\)都是不知道的,于是在初始化的时候把两帧的光度参数看做是一个整体来进行求导

初始化时对光度参数的求导(最终求得的是相对的光度参数的导数):

  • 在跟踪的时候,参考关键帧的光度参数\(t_i e^{a_i},b_i\)是已知的(通过初始化进行固定,然后通过初始化得到的相对光度参数计算得到?),我们只希望得到关于当前帧j的光度参数的导数,而不是作为一个整体的相对光度参数导数,于是有:

关键帧筛选

建图

候选点跟踪

如果新的一帧被认为是关键帧,并且在这一帧提取了一些点出来,但是这些点的逆深度是不知道的,这些点都被作为Immatture未成熟点,一般的做法是使用后面的帧如(t+1)帧来对这些点进行跟踪优化,得到这些Immatture未成熟点的逆深度。

  • 上面的步骤得到了Immatture未成熟点在后一帧(t+1)帧的匹配点的像素坐标,现在需要反求出逆深度

下面是极线筛选的原理

候选点激活

  • 上面是距离地图
  • 为了控制激活候选点的密度和均匀性,如果某个候选点所在的距离地图的值很小(表明与某个激活点很近了),就不激活这个候选点了

  • 上面的极线搜索、激活都只是得到了候选点逆深度的范围\([d_{min},d_{max}]\)
  • 下面需要使用LM算法来得到具体的逆深度值

DSO的加速方法