Download Latest Version colmap-x64-windows-cuda.zip (448.6 MB)
Email in envelope

Get an email when there's a new version of COLMAP

Home / 4.0.0
Name Modified Size InfoDownloads / Week
Parent folder
4.0.0 source code.tar.gz 2026-03-15 4.1 MB
4.0.0 source code.zip 2026-03-15 5.1 MB
README.md 2026-03-15 52.3 kB
Totals: 3 Items   9.2 MB 0

New Features

  • Integrated GLOMAP global SfM pipeline into COLMAP as a first-class alternative to the incremental/hierarchical mappers, available via the global_mapper and automatic_reconstructor --mapper GLOBAL commands. Many fixes and improvements have been applied to the GLOMAP codebase as part of this migration. GLOMAP is maintained through the COLMAP repository going forward. The global pipeline uses view graph calibration to estimate intrinsics from two-view geometries, which may produce different camera parameters compared to the incremental pipeline's self-calibration.
  • Added ALIKED (N16Rot/N32) feature extraction through ONNX support. Support for brute-force and LightGlue matching as well as scalable matching with pre-trained vocabulary trees.
  • Added LightGlue ONNX feature matching for SIFT and ALIKED.
  • Added Python bindings for feature extractor and matcher.
  • Added support for reading image orientation from EXIF and auto-rotating images during feature extraction/matching for better robustness against rotational viewpoint changes.
  • Added structure-less image registration fallback using generalized relative pose estimator for registering images without 3-view overlap.
  • Added division camera models (SIMPLE_DIVISION, DIVISION).
  • Added fisheye camera model without distortion parameters (FISHEYE).
  • Improved Ceres bundle adjustment performance by ~10% through single pose parameter block.
  • Improved Ceres bundle adjustment performance by ~15% for SIMPLE_RADIAL camera model and trivial frames through analytical Jacobians.
  • Added abstract general bundle adjuster and solver summary in preparation for supporting different optimization backends.
  • Replaced FreeImage with OpenImageIO for ~2.5x faster image I/O, support for more image formats, and using an actively maintained dependency with security fixes, etc.
  • Added guided geometric verification using a known reconstruction.
  • Added view graph calibration as a new module.
  • Added model clustering to partition large reconstructions into smaller, manageable sub-models based on scene connectivity.
  • Added mesh simplification using Quadric Error Metric (QEM) decimation.
  • Added mesh texture mapping for producing textured meshes from calibrated images.
  • Added option to specify JPEG quality during image undistortion.
  • Added support for loading bitmaps with alpha channel.
  • Added option to control refinement of 3D points in bundle adjuster.
  • Added optional support for position prior in absolute pose refinement.
  • Added supernodal CHOLMOD L1 solver support.
  • Added multi-threading support for (LO)RANSAC loop.
  • Added support for custom SSL certificate locations through SSL_CERT_FILE and SSL_CERT_DIR environment variables.
  • Added support for static Windows builds with CUDA.
  • Exposed pycolmap.match_from_pairs for custom pair matching on GPU.
  • Added Python bindings for depth and normal maps.
  • Added Python type checking (mypy) for all code.
  • Improved incremental mapper and triangulator Python bindings.
  • Added support for visualizing (textured) meshes in the GUI.
  • Added drag-and-drop folder support for model import in the GUI.
  • Added drag-and-drop support for PLY import in the GUI.
  • Switched to native menu bar in GUI on macOS.
  • Added support for building shared libraries.
  • Improved patch match stereo performance by reading inputs in parallel.
  • Reduced model viewer memory usage in the GUI.
  • Added automatic fallback to BA CPU solver if GPU solver fails.
  • For other minor improvements, see full list of changes below.

Bug Fixes

  • Fixed guided matching for calibrated non-linear cameras.
  • Fixed database race conditions in mapping pipelines.
  • Fixed MSVC compatibility with isnan.
  • Fixed undefined behavior in feature match swapping.
  • Fixed SVD computation in affine transform.
  • Fixed 2D association issue at AddPoint3D with point3D_id.
  • Fixed several issues in database merging.
  • Fixed MVS workspace image downsizing.
  • Fixed pycolmap to respect fix_existing_frames option in the incremental pipeline.
  • Fixed transcription of image IDs in reconstruction from database.
  • Fixed BundleAdjustmentConfig::NumResiduals ignoring point statistics.
  • Fixed incorrect propagation of incremental options in automatic reconstructor.
  • Fixed triangulation angle computation in patch match sampling.
  • Fixed inverted units in ExifFocalLength metadata extraction.
  • Fixed slow performance of generalized absolute pose estimator verification.
  • Propagate exceptions from ThreadPool::Wait.
  • Fixed empty patch match results on CUDA compute >= 100 (Blackwell GPUs).
  • Fixed filter_frames_ usage in FindNextImages.
  • Fixed model_aligner crash by using new pose prior API.
  • For other bug fixes, see full list of changes below.

Breaking Changes

  • Replaced FreeImage with OpenImageIO for image I/O. There may be slight differences in terms of supported image formats and loaded pixel values.
  • Dropped support for Python 3.9 due to EOL.
  • TwoViewGeometry fields cam2_from_cam1, E, F, H are now std::optional.
  • Rigid3d and Sim3d parameters stored as single vector. Use rotation() and translation() accessor methods instead of direct member access.
  • Bundle adjustment cost functors use single pose parameter blocks.
  • BundleAdjuster now returns std::shared_ptr<BundleAdjusterSummary> instead of ceres::SolverSummary.
  • Ceres-related CLI options are prefixed with BundleAdjustmentCeres.*.
  • GPS/ENU coordinate conversion functionality cleaned up, breaking the Python interface.
  • Feature descriptors are now associated with a type that is propagated through the pipeline and storage. Fails matching if descriptor types are inconsistent.
  • Pose priors associated with generic sensor measurement data.
  • DatabaseCache initialization consolidated into a single options struct instead of scattered arguments.
  • Switched paths from std::string to std::filesystem::path throughout the C++ codebase. Python pathlib.Path objects are now automatically converted. No breaking impact on the Python interface.

Full Change List (sorted temporally)

New Contributors

Full Changelog: https://github.com/colmap/colmap/compare/3.12.0...4.0.0

Source: README.md, updated 2026-03-15