COLMAP
More actions
| COLMAP | |
|---|---|
| Information | |
| Type | 3D reconstruction software |
| Industry | Computer vision |
| Developer | Johannes L. Schönberger and the COLMAP contributors |
| Written In | C++ (Python bindings: PyCOLMAP) |
| Operating System | Windows, macOS, Linux |
| License | New BSD license (GPL before version 3.5) |
| Release Date | April 4, 2016 (version 1.0) |
| Website | https://colmap.github.io/ |
COLMAP is free, open-source software for image-based 3D reconstruction. Its documentation describes it as "a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface" that can reconstruct both ordered and unordered image collections.[1] From a set of overlapping photographs, COLMAP estimates the position, orientation and calibration of every camera together with a sparse point cloud of the scene (structure from motion), and can then compute per-image depth maps, a dense point cloud and a surface mesh (multi-view stereo).[2]
COLMAP was written by Johannes L. Schönberger, with funding from his PhD advisors Jan-Michael Frahm and Marc Pollefeys.[1] Its methods were published in two 2016 papers: "Structure-from-Motion Revisited" (Schönberger and Frahm, CVPR 2016) and "Pixelwise View Selection for Unstructured Multi-View Stereo" (Schönberger, Enliang Zheng, Pollefeys and Frahm, ECCV 2016).[3][4] It has been used to supply camera poses and starting geometry for neural radiance fields and Gaussian splatting, two methods for turning photographs of real scenes into viewable 3D scenes, and as a mapping component in research on visual localization for AR devices.[5][6][7]
History
The CVPR 2016 paper set out to address what its authors called the key problems of incremental SfM: "robustness, accuracy, completeness, and scalability". It contributed five techniques: a geometric verification strategy that augments the scene graph, a next-best-view selection method, a robust triangulation method, an iterative strategy combining bundle adjustment, re-triangulation and outlier filtering, and a more efficient bundle adjustment parameterization for dense photo collections ("redundant view mining"). The paper states that the code was contributed to the research community "as an open-source implementation named COLMAP".[3] The authors contrasted their contributions with Bundler (open source) and VisualSFM (closed source). In experiments that also included the global systems DISCO and Theia, the authors reported that their system was the most complete on every dataset, slightly slower than VisualSFM and more than 50 times faster than Bundler, while Theia was the fastest; their figure of central Rome shows 21,000 of 75,000 Internet photos registered.[3] The work was done at the University of North Carolina at Chapel Hill; Schönberger was also affiliated with ETH Zurich.[3]
The companion ECCV 2016 paper added the dense stage. Its contributions include joint estimation of depth and normal information, pixelwise view selection using photometric and geometric priors, and a multi-view geometric consistency term used for refinement and for fusing depth and normal maps. The authors reported state-of-the-art results on the Middlebury and Strecha benchmarks and released the algorithm as part of COLMAP.[4]
According to the project changelog, version 1.0 was released on 4 April 2016. The dense reconstruction pipeline arrived in version 2.0 (8 September 2016), and version 3.0 (22 May 2017) added an automatic end-to-end reconstruction tool. Version 3.5 (22 August 2018) moved COLMAP from the GPL to the BSD license.[8]
In 2024 Linfei Pan, Dániel Baráth, Pollefeys and Schönberger published GLOMAP, a general-purpose global SfM system, as opposed to COLMAP's incremental approach of registering images one at a time. They wrote that in accuracy and robustness it achieved results "on-par or superior to COLMAP" while running "orders of magnitude faster".[9] COLMAP 4.0.0 (March 2026) integrated GLOMAP "as a first-class alternative" to the incremental and hierarchical mappers, and GLOMAP has been maintained in the COLMAP repository since then.[8]
As of October 2026 the documentation lists Schönberger, Paul-Edouard Sarlin and Shaohui Liu as the core maintainers. The PyCOLMAP Python bindings were originally added by Mihai Dusmanu, Philipp Lindenberger and Sarlin.[1] The latest release is 4.2.1, dated 29 September 2026 in the changelog.[8]
Release history
| Version | Date (changelog) | Selected changes |
|---|---|---|
| 1.0 | 4 April 2016 | Initial release[8] |
| 2.0 | 8 September 2016 | Dense reconstruction pipeline; bundle adjuster for rigidly mounted multi-camera systems[8] |
| 3.0 | 22 May 2017 | Automatic end-to-end sparse and dense reconstruction tool; multi-GPU dense stereo and feature matching[8] |
| 3.4 | 29 January 2018 | Unified command-line interface (colmap [command])[8]
|
| 3.5 | 22 August 2018 | License changed from GPL to BSD; hierarchical mapper for large scenes; Delaunay meshing[8] |
| 3.11.0 | 28 November 2024 | Pose-prior mapper that can use GPS positions; camera model added "in support of Meta's Project Aria devices"[8] |
| 3.12.0 | 30 June 2025 | Support for sensor rigs, including multi-camera rigs and panoramas[8] |
| 4.0.0 | 14 March 2026 | GLOMAP global SfM integrated; ALIKED features and LightGlue matching; mesh simplification and texture mapping[8] |
| 4.1.0 | 26 June 2026 | Caspar GPU bundle adjustment backend; spherical (equirectangular) camera models for 360-degree images[8] |
| 4.2.0 | 31 August 2026 | Learned LoMa features and matching; ROCm/HIP dense stereo on supported AMD GPUs; browser-based 3D viewer[8] |
| 4.2.1 | 29 September 2026 | Bug fixes[8] |
Features
Reconstruction pipeline
COLMAP follows the two-stage approach its tutorial describes: SfM first recovers a sparse representation of the scene and the camera poses, and MVS then uses that output to compute a dense representation.[2] The sparse stage runs feature detection and extraction, feature matching with geometric verification, and incremental reconstruction, in which new images are registered (a Perspective-n-Point problem), new points are triangulated and the model is refined by bundle adjustment.[3] Besides the incremental mapper, current versions offer a hierarchical mapper for parallel reconstruction of large scenes (added in 3.5) and the GLOMAP-based global mapper (added in 4.0.0).[8]
In the dense stage, MVS computes depth and normal information for every pixel of each image, and fusing these maps produces a dense point cloud. Surface reconstruction methods such as screened Poisson reconstruction or advancing-front reconstruction then recover a mesh, which can be simplified by Quadric Error Metric decimation and textured by multi-view texture mapping.[2] The FAQ states that a computer without a CUDA-enabled GPU can use all COLMAP functions except dense reconstruction, and that other steps can be run on the CPU at a significant cost in speed.[10] Version 4.2.0 added ROCm/HIP acceleration for the patch-match stereo step, so that dense reconstruction can run on supported AMD GPUs in builds compiled with that option.[8]
Camera models and capture setups
The documentation describes "a wide range of camera models and multi-camera rig support for diverse capture setups".[1] Version 1.1 (May 2016) already added the FOV fisheye model used by Google's Project Tango.[8] Version 3.11.0 added a RAD_TAN_THIN_PRISM_FISHEYE model for Meta's Project Aria research glasses.[8] Version 4.1.0 added spherical (equirectangular) camera models; the changelog says this "enables native reconstruction of 360 panoramic images" and is generally faster but less accurate than reconstructing from rendered perspective views.[8]
Learned features
By default, COLMAP extracts SIFT features; the tutorial notes that GPU feature extraction has a mode that often produces higher-quality features for high-contrast images.[2] Version 4.0.0 added ALIKED feature extraction and LightGlue matching through ONNX, and version 4.2.0 added the learned LoMa extractor and matcher.[8]
Interfaces
COLMAP can be run from a graphical user interface, from a scriptable command-line interface, or as a C++ library linked into other programs. Most of its functions are also exposed in Python through PyCOLMAP.[11] PyCOLMAP wheels for Linux, macOS and Windows are published to PyPI at each release, with a CUDA 12 build for Linux available as a separate package.[12] The source code is written in C++ and hosted on GitHub.[13]
Supported platforms and license
Pre-built binaries for Windows include both the graphical and command-line executables. On macOS COLMAP can be installed through Homebrew, many Linux distributions package it, and a pre-built CUDA-enabled Docker image is available. The documentation notes that the packages in default Linux repositories do not include CUDA or HIP/ROCm support, which requires building from source.[11]
COLMAP itself is licensed under the new BSD license; the license page notes that its third-party dependencies are licensed separately and that building with them may affect the license of the result.[14] Earlier versions, up to 3.4, were released under the GPL.[8]
Use in VR and AR
Radiance fields and Gaussian splatting
COLMAP is the first step in several research pipelines that turn photos of a real place into a scene that can be viewed from new angles. The original NeRF paper (Ben Mildenhall and colleagues, ECCV 2020) used ground-truth camera parameters for synthetic scenes and "the COLMAP structure-from-motion package" to estimate camera poses, intrinsic parameters and scene bounds for real data.[5] 3D Gaussian splatting (Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler and George Drettakis, 2023) takes as input images "together with the corresponding cameras calibrated by SfM", citing Schönberger and Frahm's 2016 paper, and creates its initial 3D Gaussians from the sparse point cloud that SfM produces.[6] The reference implementation's training script reads COLMAP datasets, and its convert.py script calls a COLMAP installation to extract undistorted images and SfM data from a user's own photos.[15]
The open-source Nerfstudio framework also uses COLMAP and FFmpeg in its script for processing custom images and video. Its documentation warns that "COLMAP can be finicky" and advises capturing overlapping, non-blurry images. It lists ways to skip COLMAP, such as importing poses from the Polycam app or from Record3D captures that use the iPhone's LiDAR sensor.[16]
Mapping and localization for AR
AR devices need to know where they are relative to a stored map of a space so that virtual content stays anchored to the real world, a task closely related to visual positioning and SLAM. LaMAR, a benchmark for localization and mapping in augmented reality presented at ECCV 2022 by researchers from ETH Zurich and the Microsoft Mixed Reality & AI Lab in Zurich (Schönberger among them), was captured with Microsoft HoloLens 2 headsets and handheld iPhone and iPad devices. Its ground-truth pipeline triangulated feature tracks "within LO-RANSAC using COLMAP", and its baseline maps were sparse SfM models triangulated with COLMAP.[7] The benchmark's code lists COLMAP 3.8 and the hloc toolbox as requirements.[17] hloc, a toolbox for 6-DoF visual localization from ETH Zurich's Computer Vision and Geometry Lab, builds SfM maps through COLMAP; since hloc version 1.3 the PyCOLMAP bindings are enough and a separate COLMAP installation is not required.[18]
Reception
In the Tanks and Temples benchmark for large-scale scene reconstruction (Arno Knapitsch, Jaesik Park, Qian-Yi Zhou and Vladlen Koltun of Intel Labs, SIGGRAPH 2017), the authors evaluated 15 reconstruction pipelines against laser-scanned ground truth. They reported that COLMAP achieved "the lowest rank on both the intermediate and the advanced groups" of datasets, meaning the best average rank, which the authors treated as the primary measure of relative performance; it had the top F-score on four datasets in each group. On the intermediate group, Pix4D and OpenMVG with OpenMVS achieved similar aggregate performance, and Pix4D had the highest mean F-score.[19] In the same study, the authors used COLMAP as a reference pipeline when testing rolling-shutter cameras, and found that, with gimbal-stabilized cameras, it never performed worse on rolling-shutter sequences than on the corresponding global-shutter ones.[19]
In the GLOMAP paper, Schönberger and his co-authors described COLMAP as "the most widely used incremental SfM".[9] Nerfstudio's documentation describes installation and use as sometimes difficult ("COLMAP install issues are common!") and points users to capture practices and alternative pose sources when reconstruction fails.[16]
See also
References
- ↑ 1.0 1.1 1.2 1.3 "COLMAP: General-purpose Structure-from-Motion and Multi-View Stereo". COLMAP documentation. COLMAP Team. https://colmap.github.io/. Retrieved 2026-10-15.
- ↑ 2.0 2.1 2.2 2.3 "Tutorial". COLMAP documentation. COLMAP Team. https://colmap.github.io/tutorial.html. Retrieved 2026-10-15.
- ↑ 3.0 3.1 3.2 3.3 3.4 Johannes L. Schönberger, Jan-Michael Frahm (2016). "Structure-from-Motion Revisited". 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pp. 4104-4113. doi:10.1109/CVPR.2016.445. https://openaccess.thecvf.com/content_cvpr_2016/papers/Schonberger_Structure-From-Motion_Revisited_CVPR_2016_paper.pdf. Retrieved 2026-10-15.
- ↑ 4.0 4.1 Johannes L. Schönberger, Enliang Zheng, Marc Pollefeys, Jan-Michael Frahm (2016). "Pixelwise View Selection for Unstructured Multi-View Stereo". Computer Vision, ECCV 2016, Lecture Notes in Computer Science, pp. 501-518. Springer. doi:10.1007/978-3-319-46487-9_31. https://doi.org/10.1007/978-3-319-46487-9_31. Retrieved 2026-10-15.
- ↑ 5.0 5.1 Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, Ren Ng (2020). "NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis". Computer Vision, ECCV 2020, Lecture Notes in Computer Science, pp. 405-421. doi:10.1007/978-3-030-58452-8_24. https://arxiv.org/abs/2003.08934. Retrieved 2026-10-15.
- ↑ 6.0 6.1 Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler, George Drettakis (2023). "3D Gaussian Splatting for Real-Time Radiance Field Rendering". ACM Transactions on Graphics, vol. 42, no. 4. doi:10.1145/3592433. https://arxiv.org/abs/2308.04079. Retrieved 2026-10-15.
- ↑ 7.0 7.1 Paul-Edouard Sarlin, Mihai Dusmanu, Johannes L. Schönberger, Pablo Speciale, Lukas Gruber, Viktor Larsson, Ondrej Miksik, Marc Pollefeys (2022). "LaMAR: Benchmarking Localization and Mapping for Augmented Reality". European Conference on Computer Vision (ECCV) 2022. arXiv:2210.10770. https://arxiv.org/abs/2210.10770. Retrieved 2026-10-15.
- ↑ 8.00 8.01 8.02 8.03 8.04 8.05 8.06 8.07 8.08 8.09 8.10 8.11 8.12 8.13 8.14 8.15 8.16 8.17 8.18 8.19 8.20 "Changelog". COLMAP documentation. COLMAP Team. https://colmap.github.io/changelog.html. Retrieved 2026-10-15.
- ↑ 9.0 9.1 Linfei Pan, Dániel Baráth, Marc Pollefeys, Johannes L. Schönberger (2024). "Global Structure-from-Motion Revisited". European Conference on Computer Vision (ECCV) 2024. arXiv:2407.20219. https://arxiv.org/abs/2407.20219. Retrieved 2026-10-15.
- ↑ "Frequently Asked Questions". COLMAP documentation. COLMAP Team. https://colmap.github.io/faq.html. Retrieved 2026-10-15.
- ↑ 11.0 11.1 "Installation". COLMAP documentation. COLMAP Team. https://colmap.github.io/install.html. Retrieved 2026-10-15.
- ↑ "PyCOLMAP". COLMAP documentation. COLMAP Team. https://colmap.github.io/pycolmap/index.html. Retrieved 2026-10-15.
- ↑ "colmap/colmap: COLMAP - Structure-from-Motion and Multi-View Stereo". GitHub. COLMAP. https://github.com/colmap/colmap. Retrieved 2026-10-15.
- ↑ "License". COLMAP documentation. COLMAP Team. https://colmap.github.io/license.html. Retrieved 2026-10-15.
- ↑ "3D Gaussian Splatting for Real-Time Radiance Field Rendering (README)". GitHub. GRAPHDECO, Inria. https://github.com/graphdeco-inria/gaussian-splatting. Retrieved 2026-10-15.
- ↑ 16.0 16.1 "Using custom data". Nerfstudio documentation. https://docs.nerf.studio/quickstart/custom_dataset.html. Retrieved 2026-10-15.
- ↑ "LaMAR: Benchmarking Localization and Mapping for Augmented Reality (README)". GitHub. Microsoft. https://github.com/microsoft/lamar-benchmark. Retrieved 2026-10-15.
- ↑ "hloc - the hierarchical localization toolbox (README)". GitHub. Computer Vision and Geometry Lab, ETH Zurich. https://github.com/cvg/Hierarchical-Localization. Retrieved 2026-10-15.
- ↑ 19.0 19.1 Arno Knapitsch, Jaesik Park, Qian-Yi Zhou, Vladlen Koltun (2017). "Tanks and Temples: Benchmarking Large-Scale Scene Reconstruction". ACM Transactions on Graphics, vol. 36, no. 4. doi:10.1145/3072959.3073599. https://doi.org/10.1145/3072959.3073599. Retrieved 2026-10-15.