DSO源码解析学习笔记(初始化)

FullSystem.cpp入口

main 主线程用于显示

  • ImageFolderReader文件读取 支持从zip压缩文件读取
    在这里插入图片描述
  • getUndistorterForFile读取相机配置文件
    对配置文件按行读取,会根据参数的个数判断相机畸变。
    例如在函数UndisttorRadTan会利用readFromFile函数(使用配置文件参数地址configFileName)进行读取。
    在这里插入图片描述
    第一行相机模型参数,第二行相机像素大小。通过参数个数判断模型类型。
    在这里插入图片描述
    在选取图像像素点坐标时会减去0.5,不使用网格焦点而使用中点位置,思想类似中值定理,计算残差效果可能会更好。
    在这里插入图片描述
    第三行相机图像类别,是否裁剪。参数读完之后,判断是否需要重新计算内参,是否需要裁切(畸变是否严重)。
    在这里插入图片描述
    配置文件第四行,裁剪之后的图像大小。通过remapX,Y将畸变前和畸变后的坐标对应,裁剪之后通过函数makeOptimalK_crop重新求解内参。
  • makeOptimalK_crop
    找到图像最大值和最小值范围,使其畸变矫正后的点都能在原图像中找到。由于不知道内参,只能在单位平面上操作。
    从-5到5保证精度小,足够满足相机覆盖。
    在这里插入图片描述
    求出最大最小XY之后进行加畸变操作,目的是判断该点是否在原图像内。如果不在图像内便更新范围。
    校正畸变后,得到新的相机内参。
    在这里插入图片描述
  • 接下来读入相机的光度标定参数,通过调用函数PhotometricUndistorter进行光读校正。
    在这里插入图片描述
    在这里插入图片描述
  • PhotometricUndistorter
    读取响应函数G
    在这里插入图片描述
    读取衰减系数,为了便于去掉衰减系数,对其取逆。
    在这里插入图片描述
    至此读取已经配置文件结束,得到reader。
    在这里插入图片描述
  • 接下来获取图像,使用函数getImage
    在这里插入图片描述
    使用getImage函数之后调用去畸变函数。
    在这里插入图片描述
    在去畸变函数中,使用自定义的图像类型,使用数组,在其中多存了一个曝光参数。(噪声添加为了测试)最终返回一个新图像。
    在这里插入图片描述
    在得到新图像之后,传到函数addActiveFram中,是整个系统的入口函数(FullSystem.cpp)。
    在这里插入图片描述
  • addActiveFram
    首先创建基本的数据类型,并进行响应的初始化
    在这里插入图片描述
    FrameShell类型相当于FrameHessian的简化版,存储位姿等。接下来判断是否初始化,如果没有初始化则进入初始化过程。
  • 初始化过程
    如果初始化时没有设置第一帧的话则加入第一帧。
    CalibHessian* HCalib 相机内参类通过makeK函数得到相机内参。
    在这里插入图片描述
    针对不同层数选择大梯度像素, 第0层比较复杂1d, 2d, 4d大小block来选择3个层次的像素
    在这里插入图片描述
    第0层在提取特征像素时,首先计算梯度直方图,根据阈值选择不同层上的点,然后根据提取的点数量进行删减或增加。(最终如果还是较多可以随机删除一些点)。
    其他层根据稀疏系数,对于高层(0层以上)选择梯度最大的位置点。然后判断是否满足要求,通过改变网格进行叠代。
    在这里插入图片描述
    在选出的像素中, 添加点信息,通过makeNN函数生成每一层点的KDTree,求取父节点或者邻接点集。最后将一些参数初始化变完成了第一帧的设置。
    在这里插入图片描述
  • 接下来图像也通过addActiveFram函数进入,但此时已经设置好第一帧,接下来进入跟踪。
    首先将当前帧放进显示线程中。
    在这里插入图片描述
    第二步判断位移是否足够大,如果不满足要求则重新初始化,参数snapped在设置第一帧最后被确定。
    在这里插入图片描述
    从顶层到底成层,由粗到精优化。求解正定方程返回残差。
    求解增量,更新状态。更新后计算残差,若能量减少则接受更新。
    优化后赋值位姿,从底层计算上层点深度。
  • 如果更新成功,从初始化中提取信息用于跟踪。此时完成初始化过程。
  • 在这里插入图片描述
    注释版DSO:https://github.com/alalagong/DSO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秃头队长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值