[DEPRECATED] GLOMAP - Global Structured-from-Motion Revisited
[DEPRECATED] GLOMAP - Global Structured-from-Motion Revisited
⚠️ [DEPRECATED] This project is no longer maintained and has been fully migrated to COLMAP, where GLOMAP functionality is exposed as the "global" mapper.
GLOMAP is a general purpose global structure-from-motion pipeline for image-based reconstruction. GLOMAP requires a COLMAP database as input and outputs a COLMAP sparse reconstruction. As compared to COLMAP, this project provides a much more efficient and scalable reconstruction process, typically 1-2 orders of magnitude faster, with on-par or superior reconstruction quality.
If you use this project for your research, please cite
@inproceedings{pan2024glomap,
author={Pan, Linfei and Barath, Daniel and Pollefeys, Marc and Sch\"{o}nberger, Johannes Lutz},
title={{Global Structure-from-Motion Revisited}},
booktitle={European Conference on Computer Vision (ECCV)},
year={2024},
}To use the seperate rotation averaging module, refer to this README.
To build GLOMAP, first install COLMAP dependencies and then build GLOMAP using the following commands:
mkdir build
cd build
cmake .. -GNinja
ninja && ninja installPre-compiled Windows binaries can be downloaded from the official release page.
After installation, one can run GLOMAP by (starting from a database)
glomap mapper --database_path DATABASE_PATH --output_path OUTPUT_PATH --image_path IMAGE_PATHFor more details on the command line interface, one can type glomap -h or glomap mapper -h for help.
We also provide a guide on improving the obtained reconstruction, which can be found here.
Note:
FetchContent.
However, if a self-installed version is preferred, one can also disable the FETCH_COLMAP and FETCH_POSELIB CMake options.FetchContent, the minimum required version of cmake is 3.28. If a self-installed version is used, cmake can be downgraded to 3.10.wget https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1.tar.gz
tar xfvz cmake-3.30.1.tar.gz && cd cmake-3.30.1
./bootstrap && make -j$(nproc) && sudo make installIn this section, we will use datasets from this link as examples.
Download the datasets and put them under data folder.
If a COLMAP database already exists, GLOMAP can directly use it to perform mapping:
glomap mapper \
--database_path ./data/gerrard-hall/database.db \
--image_path ./data/gerrard-hall/images \
--output_path ./output/gerrard-hall/sparseTo obtain a reconstruction from images, the database needs to be established first. Here, we utilize the functions from COLMAP:
colmap feature_extractor \
--image_path ./data/south-building/images \
--database_path ./data/south-building/database.db
colmap exhaustive_matcher \
--database_path ./data/south-building/database.db
glomap mapper \
--database_path ./data/south-building/database.db \
--image_path ./data/south-building/images \
--output_path ./output/south-building/sparseThe results are written out in the COLMAP sparse reconstruction format. Please refer to COLMAP for more details.
The reconstruction can be visualized using the COLMAP GUI, for example:
colmap gui --import_path ./output/south-building/sparse/0Alternatives like rerun.io also enable visualization of COLMAP and GLOMAP outputs.
If you want to inspect the reconstruction programmatically, you can use
pycolmap in Python or link against COLMAP's C++ library interface.
sequential_matcher or
vocab_tree_matcher from COLMAP.colmap sequential_matcher --database_path DATABASE_PATH
colmap vocab_tree_matcher --database_path DATABASE_PATH --VocabTreeMatching.vocab_tree_path VOCAB_TREE_PATHWe are highly inspired by COLMAP, PoseLib, Theia. Please consider also citing them, if using GLOMAP in your work.
Please, use GitHub Discussions at https://github.com/colmap/glomap/discussions for questions and the GitHub issue tracker at https://github.com/colmap/glomap for bug reports, feature requests/additions, etc.
Contributions (bug reports, bug fixes, improvements, etc.) are very welcome and should be submitted in the form of new issues and/or pull requests on GitHub.
…No open issues yet, or sync has not completed.