话不多说,直接上流程图吧,一图胜千言(这张图是高翔博士博客里的,链接:https://zhuanlan.zhihu.com/p/29177540)
有了这张图,我们就对前端里程计有了清晰的整体认识,下面我们看具体的流程。
DSO的前端和后端在文件结构上分的比较清楚,前端里程计全在文件夹src/FullSystem中,其中里程计的主流程管理在FullSystem.cpp中,管理主流程的函数是addActiveFrame。
(下面介绍流程的部分内容来自博客https://blog.csdn.net/gbz3300255/article/details/90511237)
1. 初始化
初始化需要有两帧。
1.1 第一帧。
第一帧的处理在函数CoarseInitializer::setFirst中,它在影像的每一层选取点,作为后续第二帧匹配生成 pointHessians 和 immaturePoints 的候选点,这些点存储在 CoarseInitializer::points 中。每一层点之间都有联系,在 CoarseInitializer::makeNN 中计算每个点最邻近的10个点 neighbours,在上一层的最邻近点 parent。
1.2 第二帧
第二帧依然交由 CoarseInitializer。Co