TL;DR: We present an offline python SLAM by leveraging the advantages of both COLMAP and ORB-SLAM.
Simultaneous localization and mapping (SLAM) and Structure from Motion (SfM) are two highly overlapping tasks for building a 3d mapping and getting a trajectory of cameras, with the difference that SLAM processes sequential images very efficiently in real-time and focuses mainly on the trajectory, while SfM processes unordered images and focuses on the 3d mapping, but is significantly slower. Despite their differences, they have both found positions in an enormous range of applications. However, if one wants to build a large-scale reconstruction like for cities, SLAM is fast but does not provide good enough 3d mapping because it focuses mainly on the trajectory. SfM has a good 3d mapping but is too slow and takes too long to reconstruct a large-scale scene. The appropriate trade-off between these two methods should be an offline but not too slow system that can build a sufficiently good reconstruction for video sequences.
Our SLAM pipeline is composed of four modules: initialization, tracking, local mapping, and loop closure. After initialization, we perform tracking for each frame and pass each selected keyframe to local mapping, loop detection, and loop closure.