{"id":15039196,"url":"https://github.com/colmap/glomap","last_synced_at":"2025-05-14T11:10:58.608Z","repository":{"id":250725682,"uuid":"807674705","full_name":"colmap/glomap","owner":"colmap","description":"GLOMAP - Global Structured-from-Motion Revisited","archived":false,"fork":false,"pushed_at":"2025-05-06T08:57:56.000Z","size":284,"stargazers_count":1745,"open_issues_count":70,"forks_count":124,"subscribers_count":30,"default_branch":"main","last_synced_at":"2025-05-06T09:50:05.253Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/colmap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-29T14:56:44.000Z","updated_at":"2025-05-06T06:03:20.000Z","dependencies_parsed_at":"2024-10-01T01:41:10.710Z","dependency_job_id":"f9a641b1-f12a-4f12-82df-a24961e380dd","html_url":"https://github.com/colmap/glomap","commit_stats":{"total_commits":38,"total_committers":11,"mean_commits":"3.4545454545454546","dds":0.5526315789473684,"last_synced_commit":"18a70eed0e36eae7c42e1c5ef0ae6a6f8cdc6943"},"previous_names":["colmap/glomap"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colmap%2Fglomap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colmap%2Fglomap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colmap%2Fglomap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colmap%2Fglomap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/colmap","download_url":"https://codeload.github.com/colmap/glomap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254129492,"owners_count":22019628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-24T20:41:52.856Z","updated_at":"2025-05-14T11:10:58.591Z","avatar_url":"https://github.com/colmap.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GLOMAP: Global Structure-from-Motion Revisited\n\n[Project page](https://lpanaf.github.io/eccv24_glomap/) | [Paper](https://arxiv.org/pdf/2407.20219)\n---\n\n## About\n\nGLOMAP is a general purpose global structure-from-motion pipeline for\nimage-based reconstruction. GLOMAP requires a COLMAP database as input and\noutputs a COLMAP sparse reconstruction. As compared to COLMAP, this project\nprovides a much more efficient and scalable reconstruction process, typically\n1-2 orders of magnitude faster, with on-par or superior reconstruction quality.\n\nIf you use this project for your research, please cite\n```\n@inproceedings{pan2024glomap,\n    author={Pan, Linfei and Barath, Daniel and Pollefeys, Marc and Sch\\\"{o}nberger, Johannes Lutz},\n    title={{Global Structure-from-Motion Revisited}},\n    booktitle={European Conference on Computer Vision (ECCV)},\n    year={2024},\n}\n```\nTo use the seperate rotation averaging module, refer to [this README](docs/rotation_averager.md).\n\n## Getting Started\n\nTo build GLOMAP, first install [COLMAP](https://colmap.github.io/install.html#build-from-source)\ndependencies and then build GLOMAP using the following commands: \n```shell\nmkdir build\ncd build\ncmake .. -GNinja\nninja \u0026\u0026 ninja install\n```\nPre-compiled Windows binaries can be downloaded from the official\n[release page](https://github.com/colmap/glomap/releases).\n\nAfter installation, one can run GLOMAP by (starting from a database)\n```shell\nglomap mapper --database_path DATABASE_PATH --output_path OUTPUT_PATH --image_path IMAGE_PATH\n```\nFor more details on the command line interface, one can type `glomap -h` or `glomap mapper -h` for help.\n\nWe also provide a guide on improving the obtained reconstruction, which can be found [here](docs/getting_started.md).\n\nNote:\n- GLOMAP depends on two external libraries - [COLMAP](https://github.com/colmap/colmap) and [PoseLib](https://github.com/PoseLib/PoseLib).\n  With the default setting, the library is built automatically by GLOMAP via `FetchContent`.\n  However, if a self-installed version is preferred, one can also disable the `FETCH_COLMAP` and `FETCH_POSELIB` CMake options.\n- To use `FetchContent`, the minimum required version of `cmake` is 3.28. If a self-installed version is used, `cmake` can be downgraded to 3.10.\n- If your system does not provide a recent enough CMake version, you can install it as:\n  ```shell\n  wget https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1.tar.gz\n  tar xfvz cmake-3.30.1.tar.gz \u0026\u0026 cd cmake-3.30.1\n  ./bootstrap \u0026\u0026 make -j$(nproc) \u0026\u0026 sudo make install\n  ```\n\n## End-to-End Example\n\nIn this section, we will use datasets from [this link](https://demuc.de/colmap/datasets) as examples.\nDownload the datasets and put them under `data` folder.\n\n### From database\n\nIf a COLMAP database already exists, GLOMAP can directly use it to perform mapping:\n```shell\nglomap mapper \\\n    --database_path ./data/gerrard-hall/database.db \\\n    --image_path    ./data/gerrard-hall/images \\\n    --output_path   ./output/gerrard-hall/sparse\n```\n\n### From images\n\nTo obtain a reconstruction from images, the database needs to be established\nfirst. Here, we utilize the functions from COLMAP:\n```shell\ncolmap feature_extractor \\\n    --image_path    ./data/south-building/images \\\n    --database_path ./data/south-building/database.db\ncolmap exhaustive_matcher \\\n    --database_path ./data/south-building/database.db \nglomap mapper \\\n    --database_path ./data/south-building/database.db \\\n    --image_path    ./data/south-building/images \\\n    --output_path   ./output/south-building/sparse\n```\n\n### Visualize and use the results\n\nThe results are written out in the COLMAP sparse reconstruction format. Please\nrefer to [COLMAP](https://colmap.github.io/format.html#sparse-reconstruction)\nfor more details.\n\nThe reconstruction can be visualized using the COLMAP GUI, for example:\n```shell\ncolmap gui --import_path ./output/south-building/sparse/0\n```\nAlternatives like [rerun.io](https://rerun.io/examples/3d-reconstruction/glomap)\nalso enable visualization of COLMAP and GLOMAP outputs.\n\nIf you want to inspect the reconstruction programmatically, you can use\n`pycolmap` in Python or link against COLMAP's C++ library interface.\n\n### Notes\n\n- For larger scale datasets, it is recommended to use `sequential_matcher` or\n  `vocab_tree_matcher` from `COLMAP`.\n```shell\ncolmap sequential_matcher --database_path DATABASE_PATH\ncolmap vocab_tree_matcher --database_path DATABASE_PATH --VocabTreeMatching.vocab_tree_path VOCAB_TREE_PATH\n```\n- Alternatively, one can use\n  [hloc](https://github.com/cvg/Hierarchical-Localization/) for image retrieval\n  and matching with learning-based descriptors.\n\n\n\n## Acknowledgement\n\nWe are highly inspired by COLMAP, PoseLib, Theia. Please consider also citing\nthem, if using GLOMAP in your work.\n\n## Support\n\nPlease, use GitHub Discussions at https://github.com/colmap/glomap/discussions\nfor questions and the GitHub issue tracker at https://github.com/colmap/glomap\nfor bug reports, feature requests/additions, etc.\n\n## Contribution\n\nContributions (bug reports, bug fixes, improvements, etc.) are very welcome and\nshould be submitted in the form of new issues and/or pull requests on GitHub.\n\n## License\n\n```\nCopyright (c) 2024, ETH Zurich.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the name of ETH Zurich nor the names of its contributors may\n      be used to endorse or promote products derived from this software\n      without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\nINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\nARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolmap%2Fglomap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcolmap%2Fglomap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolmap%2Fglomap/lists"}