LSD主要分为三个线程:跟踪、深度地图估计、地图优化
流程图:
在整体线程开始之前先进行初始化:初始化一个有随机深度图和大方差的关键帧即可。在第一秒内给出足够的相机运动,算法就可以“lock”到某个确定的的配置,经过几个关键帧的传递之后,就会收敛到正确的深度配置。
1.初始化完成之后就开始进行帧间跟踪(Tracking):
帧间跟踪主要是通过最小化归一化光度误差完成的,具体的优化模型是:
这里位姿的求解是通过加权的高斯牛顿法进行的(推导过程在论文2.2部分)
2.在跟踪线程中对当前帧的位姿进行估计后,当前帧就被送到建图线程用于估计其参考关键帧的深度图(Depth Map Estimation)。主要是通过
(1)极线搜索在图像帧中找到与参考关键帧匹配的图像点
(2)通过新匹配的观测点对逆深度进行更新。
参考帧的选取:找到匹配点之前要寻找和关键帧做极限匹配的图像帧(即参考帧),这里尽可能选取视差