Changelog

COLMAP 3.11 (11/28/2024)

New Features

  • New pose prior based incremental mapper that can leverage absolute pose priors from e.g. GPS measurements.

  • New bundle adjustment covariance estimation functionality. Significantly faster and more robust than Ceres.

  • API documentation with auto-generated stubs for pycolmap.

  • Use PoseLib’s minimal solvers for faster performance and improved robustness.

  • Experimental support for CUDA-based bundle adjustment through Ceres (disabled by default).

  • Support for reading 16-bit PNG grayscale images.

  • New RAD_TAN_THIN_PRISM_FISHEYE camera model in support of Meta’s Project Aria devices.

  • Replace numerical with analytical Jacobian in image undistortion for better convergence.

  • Many more performance optimizations and other improvements. See full list of changes below.

Bug Fixes

  • Fixed non-deterministic behavior of CUDA SIFT feature extractor. Broken since 3.10 release.

  • Fixed orientation detection of covariant/affine SIFT feature extractor. Broken since initial release.

  • Fixed point triangulator crashing due to bug in observation manager. Broken since 3.10 release.

  • Fixed sequential feature matcher overlap missing the farthest image. Broken since initial release.

  • Fixed rare deadlock during matching due to concurrent database access. Broken since 3.10 release.

  • Fixed little/big endian detection. Broken since 3.1 release.

  • For other bug fixes, see full list of changes below.

Breaking Changes

  • Dropped official support for Ubuntu 18.04, Visual Studio 2019.

  • Upgrade to C++17 standard in C++ and C++14 in CUDA source code.

  • New pose_priors table in database in support of pose prior based mapper.

  • PyCOLMAP API:

    • align_reconstrution_to_locations is renamed to align_reconstruction_to_locations (typo).

    • pycomap.cost_functions becomes a module and should be explicitly imported as import pycolmap.cost_functions.

    • Replaced Image.registered by Image.{has_pose,reset_pose}.

    • Replaced Image.{get_valid_point2D_ids,get_valid_points2D} by Image.{get_observation_point2D_idxs,get_observation_points2D}.

    • Replaced Track.{append,remove} by Track.{add_element,delete_element}.

    • AbsolutePoseErrorCost becomes AbsolutePosePriorCost.

    • MetricRelativePoseErrorCost becomes RelativePosePriorCost.

    • The signature of ReprojErrorCost and related cost functions was changed: arguments are reordered, the detection uncertainty is now a 2x2 covariance matrix.

    • BundleAdjuster becomes virtual and should be created with pycolmap.create_default_bundle_adjuster().

    • absolute_pose_estimation becomes estimate_and_refine_absolute_pose.

    • pose_refinement becomes refine_absolute_pose.

    • essential_matrix_estimation becomes estimate_essential_matrix.

    • fundamental_matrix_estimation becomes estimate_fundamental_matrix.

    • rig_absolute_pose_estimation becomes estimate_and_refine_generalized_absolute_pose.

    • homography_matrix_estimation becomes estimate_homography_matrix.

    • squared_sampson_error becomes compute_squared_sampson_error.

    • homography_decomposition becomes pose_from_homography_matrix.

    • Rigid3d.essential_matrix becomes pycolmap.essential_matrix_from_pose.

Full Change List (sorted temporally)

COLMAP 3.10 (07/23/2024)

COLMAP 3.9.1 (01/08/2024)

COLMAP 3.9 (01/06/2024)

COLMAP 3.8 (01/31/2023)

COLMAP 3.7 (01/26/2022)

COLMAP 3.6 (07/24/2020)

  • Improved robustness and faster incremental reconstruction process

  • Add image_deleter command to remove images from sparse model

  • Add image_filter command to filter bad registrations from sparse model

  • Add point_filtering command to filter sparse model point clouds

  • Add database_merger command to merge two databases, which is useful to parallelize matching across different machines

  • Add image_undistorter_standalone to enable undistorting images without a pre-existing full sparse model

  • Improved undistortion for fisheye cameras and FOV camera model

  • Support for masking input images in feature extraction stage

  • Improved HiDPI support in GUI for high-resolution monitors

  • Import sparse model when launching GUI from CLI

  • Faster CPU-based matching using approximate NN search

  • Support for bundle adjustment with fixed extrinsics

  • Support for fixing existing images when continuing reconstruction

  • Camera model colors in viewer can be customized

  • Support for latest GPU architectures in CUDA build

  • Support for writing sparse models in Python scripts

  • Scripts for building and running COLMAP in Docker

  • Many more bug fixes and improvements to code and documentation

COLMAP 3.5 (08/22/2018)

  • COLMAP is now released under the BSD license instead of the GPL

  • COLMAP is now installed as a library, whose headers can be included and libraries linked against from other C/C++ code

  • Add hierarchical mapper for parallelized reconstruction or large scenes

  • Add sparse and dense Delaunay meshing algorithms, which reconstruct a watertight surface using a graph cut on the Delaunay triangulation of the reconstructed sparse or dense point cloud

  • Improved robustness when merging different models

  • Improved pre-trained vocabulary trees available for download

  • Add COLMAP as a software entry under Linux desktop systems

  • Add support to compile COLMAP on ARM platforms

  • Add example Python script to read/write COLMAP database

  • Add region of interest (ROI) cropping in image undistortion

  • Several import bug fixes for spatial verification in image retrieval

  • Add more extensive continuous integration across more compilation scenarios

  • Many more bug fixes and improvements to code and documentation

COLMAP 3.4 (01/29/2018)

  • Unified command-line interface: The functionality of previous executables have been merged into the src/exe/colmap.cc executable. The GUI can now be started using the command colmap gui and other commands are available as colmap [command]. For example, the feature extractor is now available as colmap feature_extractor [args] while all command-line arguments stay the same as before. This should result in much faster project compile times and smaller disk space usage of the program. More details about the new interface are documented at https://colmap.github.io/cli.html

  • More complete depth and normal maps with larger patch sizes

  • Faster dense stereo computation by skipping rows/columns in patch match, improved random sampling in patch match, and faster bilateral NCC

  • Better high DPI screen support for the graphical user interface

  • Improved model viewer under Windows, which now requires Qt 5.4

  • Save computed two-view geometries in database

  • Images (keypoint/matches visualization, depth and normal maps) can now be saved from the graphical user interface

  • Support for PMVS format without sparse bundler file

  • Faster covariant feature detection

  • Many more bug fixes and improvements

COLMAP 3.3 (11/21/2017)

  • Add DSP (Domain Size Pooling) SIFT implementation. DSP-SIFT outperforms standard SIFT in most cases, as shown in “Comparative Evaluation of Hand-Crafted and Learned Local Features”, Schoenberger et al., CVPR 2017

  • Improved parameters dense reconstruction of smaller models

  • Improved compile times due to various code optimizations

  • Add option to specify camera model in automatic reconstruction

  • Add new model orientation alignment based on upright image assumption

  • Improved numerical stability for generalized absolute pose solver

  • Support for image range specification in PMVS dense reconstruction format

  • Support for older Python versions in automatic build script

  • Fix OpenCV Fisheye camera model to exactly match OpenCV specifications

COLMAP 3.2 (9/2/2017)

  • Fully automatic cross-platform build script (Windows, Mac, Linux)

  • Add multi-GPU feature extraction if multiple CUDA devices are available

  • Configurable dimension and data type for vocabulary tree implementation

  • Add new sequential matching mode for image sequences with high frame-rate

  • Add generalized relative pose solver for multi-camera systems

  • Add sparse least absolute deviation solver

  • Add CPU/GPU options to automatic reconstruction tool

  • Add continuous integration system under Windows, Mac, Linux through Github

  • Many more bug fixes and improvements

COLMAP 3.1 (6/15/2017)

  • Add fast spatial verification to image retrieval module

  • Add binary file format for sparse models by default. Old text format still fully compatible and possible conversion in GUI and CLI

  • Add cross-platform little endian binary file reading and writing

  • Faster and less memory hungry stereo fusion by computing consistency on demand and possible limitation of image size in fusion

  • Simpler geometric stereo processing interface. Now geometric stereo output can be computed using a single pass

  • Faster and multi-architecture CUDA compilation

  • Add medium quality option in automatic reconstructor

  • Many more bug fixes and improvements

COLMAP 3.0 (5/22/2017)

  • Add automatic end-to-end reconstruction tool that automatically performs sparse and dense reconstruction on a given set of images

  • Add multi-GPU dense stereo if multiple CUDA devices are available

  • Add multi-GPU feature matching if multiple CUDA devices are available

  • Add Manhattan-world / gravity alignment using line detection

  • Add CUDA-based feature extraction useful for usage on clusters

  • Add CPU-based feature matching for machines without GPU

  • Add new THIN_PRISM_FISHEYE camera model with tangential/radial correction

  • Add binary to triangulate existing/empty sparse reconstruction

  • Add binary to print summary statistics about sparse reconstruction

  • Add transitive feature matching to transitively complete match graph

  • Improved scalability of dense reconstruction by using caching

  • More stable GPU-based feature matching with informative warnings

  • Faster vocabulary tree matching using dynamic scheduling in FLANN

  • Faster spatial feature matching using linear index instead of kd-tree

  • More stable camera undistortion using numerical Newton iteration

  • Improved option parsing with some backwards incompatible option renaming

  • Faster compile times by optimizing includes and CUDA flags

  • More stable view selection for small baseline scenario in dense reconstruction

  • Many more bug fixes and improvements

COLMAP 2.1 (12/7/2016)

  • Support to only index and match specific images in vocabulary tree matching

  • Support to perform image retrieval using vocabulary tree

  • Several bug fixes and improvements for multi-view stereo module

  • Improved Structure-from-Motion initialization strategy

  • Support to only reconstruct the scene using specific images in the database

  • Add support to merge two models using overlapping registered images

  • Add support to geo-register/align models using known camera locations

  • Support to only extract specific images in feature extraction module

  • Support for snapshot model export during reconstruction

  • Skip already undistorted images if they exist in output directory

  • Support to limit the number of features in image retrieval for improved speed

  • Miscellaneous bug fixes and improvements

COLMAP 2.0 (9/8/2016)

  • Implementation of dense reconstruction pipeline

  • Improved feature matching performance

  • New bundle adjuster for rigidly mounted multi-camera systems

  • New generalized absolute pose solver for multi-camera systems

  • New executable to extract colors from all images

  • Boost can now be linked in shared and static mode

  • Various bug fixes and performance improvements

COLMAP 1.1 (5/19/2016)

  • Implementation of state-of-the-art image retrieval system using Hamming embedding for vocabulary tree matching. This should lead to much improved matching results as compared to the previous implementation.

  • Guided matching as an optional functionality.

  • New demo datasets for download.

  • Automatically switch to PBA if supported by the project.

  • Implementation of EPNP solver for local pose optimization in RANSAC.

  • Add option to extract upright SIFT features.

  • Saving JPEGs in superb quality by default in export.

  • Add option to clear matches and inlier matches in the project.

  • New fisheye camera models, including the FOV camera model used by Google Project Tango (Thomas Schoeps).

  • Extended documentation based on user feedback.

  • Fixed typo in documentation (Thomas Schoeps).

COLMAP 1.0 (4/4/2016)

  • Initial release of COLMAP.