| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| colmap-arm64-macos.zip | 2026-09-01 | 82.7 MB | |
| colmap-x64-windows-nocuda.zip | 2026-09-01 | 127.5 MB | |
| colmap-x64-windows-cuda.zip | 2026-09-01 | 381.0 MB | |
| 4.2.0 source code.tar.gz | 2026-08-31 | 4.2 MB | |
| 4.2.0 source code.zip | 2026-08-31 | 6.1 MB | |
| README.md | 2026-08-31 | 6.9 kB | |
| Totals: 6 Items | 601.5 MB | 22 | |
New Features
- Added multi-component support to the global mapper. Disconnected view-graph
components are reconstructed independently and returned as separate models,
including components revealed after filtering outlier relative rotations.
The behavior is controlled by
GlobalMapper.multiple_modelsandGlobalMapper.min_model_sizeand is also available through pycolmap. - Added LoMa learned feature extraction and matching through ONNX, including
LOMA_BandLOMA_B128descriptors, brute-force matching, and multiple dedicated matcher variants. LoMa is available through the CLI, GUI, and pycolmap, with optional BF16 inference. - Added ROCm/HIP acceleration for
patch_match_stereo, enabling dense reconstruction on supported AMD GPUs through theHIP_ENABLEDbuild option. CUDA and HIP builds are mutually exclusive. - Added a browser-based, local-only 3D viewer for sparse binary reconstructions, including camera and point inspection, source images, and reprojections.
- Added incremental, global, and hierarchical mapper selection to the GUI, with mapper-specific configuration and progress rendering.
- Added complete pycolmap bindings for hierarchical mapping, including
hierarchical_mapping,HierarchicalPipeline, and scene-clustering options. Expanded the global pipeline bindings and callbacks. - Added 6-point shared-focal and one-sided-focal relative-pose solvers, improving reconstruction when camera intrinsics are unknown or only partially known.
- Added optional DEGENSAC fundamental-matrix estimation for scenes dominated
by a plane. It is disabled by default and available through
TwoViewGeometry.use_degensac. - Added nanosecond-resolution timestamps and conversion utilities in C++ and pycolmap.
- Added graceful shutdown for long-running CLI processing pipelines. A first
SIGINTorSIGTERMpreserves usable intermediate results, while a second signal terminates immediately. PyCOLMAP exposes the same cooperative cancellation throughCancellationToken.
Improvements
- Replaced Sampson error on camera bearings with pixel-consistent tangent Sampson error for calibrated two-view geometry, relative-pose refinement, guided matching, and generalized pose estimation. This particularly improves wide-field-of-view and spherical cameras.
- Added camera and image-space point overloads for
pycolmap.estimate_relative_poseandrefine_relative_posewhile retaining the camera-ray overloads for backwards compatibility. - Estimate homographies on camera rays for distorted and spherical cameras, enabling geometrically correct planar and panoramic detection.
- Refine fundamental matrices with Sampson error by default and use MSAC for robust two-view geometry estimation. Significantly improved accuracy for recovered two-view geometries with small improvements on e2e metrics.
- Added analytical reprojection Jacobians for every camera model and fixed-pose bundle adjustment. Benchmarks show approximately 1.2--1.55x faster incremental mapping for common pinhole and OpenCV camera configurations.
- Added selectable standard or Boost hash-map backends. Recent Boost versions can improve incremental-mapping performance, especially for large scenes.
- Optimized image warping for modest downscales, with reported 4--7x improvements in common undistortion cases. Added configurable nearest-neighbor or bilinear interpolation in C++ and pycolmap.
- Accelerated image preprocessing by using antialiased triangle filtering for bilinear bitmap downscaling and vectorizing RGB-to-grayscale conversion. Bitmap rescaling now also honors the requested bilinear or box filter.
- Added CoreML as an ONNX execution provider on macOS, with automatic CPU fallback for unsupported models.
- Added optional match-count weighting for global rotation averaging.
- Improved sequential pairing for camera rigs by avoiding unrelated cross-sensor temporal pairs.
- Added
SequentialMatching.loop_detection_min_index_distanceto exclude nearby frames from sequential loop detection without consuming the retrieval budget. - Added configurable loading of all images during image registration.
- Expanded reconstruction benchmarks with TartanAir panoramas, IMC2025 datasets, multi-seed comparisons, and end-to-end incremental-mapping benchmarks.
- Modernized the documentation site, deployment, landing page, mobile installation selector, and camera-model documentation.
Bug Fixes
- Fix pose-prior alignment and scale preservation for multi-camera rigs.
- Fix spatial matching with missing pose priors and large projected coordinates.
- Fix hierarchical clustering overlap propagation and leaf-size enforcement.
- Fix corrupted PatchMatch source textures when input images have different widths.
- Fix guided matching for spherical cameras.
- Fix Caspar option handling and the fixed-rotation stage of global bundle adjustment.
- Fall back to CPU Ceres bundle adjustment when CUDA support is compiled in but no compatible GPU is available.
- Fix reconstruction merges with inconsistent image ID/name mappings.
- Fix point-triangulator image-list handling.
- Restore the
gflags::gflagstarget for downstream CMake consumers. - Fix stale reconstruction statistics and elapsed time in the viewer after clearing a reconstruction.
- Fix dense reconstruction from the GUI in HIP-only builds.
- Fix pose-prior bundle adjustment changing rig poses configured as constant.
Breaking Changes
- The global mapper now reconstructs every connected component by default and
may therefore return multiple models for disconnected datasets. Set
GlobalMapper.multiple_modelsto false to retain the previous largest-component-only behavior. Models with fewer thanGlobalMapper.min_model_sizeregistered frames are discarded. - The
hierarchical_mapperoptionsnum_threads,num_workers,image_overlap, andleaf_max_num_imagesare now prefixed withHierarchicalMapper.. pycolmap.estimate_essential_matrixno longer returnsinlier_points3D.pycolmap.cost_functions.SampsonErrorCostnow accepts image-plane points instead of camera rays.- The C++
HierarchicalPipeline::Optionstype was renamed toHierarchicalPipelineOptions. - Several C++ relative-pose APIs now use
CamRayWithJac. PoseFromEssentialMatrixnow returns valid correspondence indices instead of triangulated points.- The C++
CameraModelIsFisheyefunction was renamed toCameraModelIsPerspectiveFisheye. - The global
std::hash<std::pair<...>>specializations were removed. Downstream unordered containers using pair keys should explicitly usecolmap::PairHash.