Changelog
=========

--------------------------
COLMAP 3.13.0 (11/07/2025)
--------------------------

New Features
------------
* Improved human-readable consistency checks when configuring a
  reconstruction with rigs, cameras, frames, and images.
* Improved multi-GPU feature extraction & matching performance by avoiding global mutex.
* Improved robustness of pose prior mapper against outlier priors.
* Improved the performance of reconstruction initialization through parallelization.
* Added CUDA-enabled pycolmap package for Linux and automatic publishing to PyPI.
* Make the reconstruction process fully deterministic with a new random_seed parameter.
* Added support for filtering stationary points in two-view geometry estimation.
* Added option to perform geometric verification with rig constraints.
* Added option to skip matching for image pairs within the same frame.
* Added option to keep specific cameras or rigs constant during the reconstruction.
* Added option to clean two-view geometries in database_cleaner.
* Added option to specify timeout for incremental mapper.
* Added an abstract database interface for easier integration with other database backends.
* Added experimental support for feature sub-selection for global BA.
* Added testing tools for synthetic reconstruction noise and image generation.
* Added official support for Python 3.14.
* Added support for Qt6 while still fully supporting Qt5.

Bug Fixes
---------
* Fixed various issues with new rig support.
* Fixed rare deadlocks in feature matching.
* Support for UTF-8 database paths in Windows.
* Fixed bundle adjustment performance regression due to changed Gauge behavior.
* Removed custom manifold from colmap to avoid issues with pyceres.
* Fixed rare crash of GUI when clearing the model viewer.
* Fixed focal length extraction from 35mm equivalent EXIF information.
* Fixed coordinate bug in ComputeEqualPartsBboxes.

Breaking Changes
----------------
* Dropped official support for Python 3.8.
* Dropped official support for MacOS x86.
* Upgraded to pybind11 3.X.
* Removed deprecated rig bundle adjuster command in favor of rig configurator and
  default bundle adjuster supporting the same functionality.
* Allow one-to-many matches in correspondence graph. Previously, only one-to-one matches were added
  to the correspondence graph and therefore other matches were not used during reconstruction.

Full Change List (sorted temporally)
------------------------------------
* Autoselect compatible nvidia for docker by @MasahiroOgawa in https://github.com/colmap/colmap/pull/3454
* Add 3.12.1 changelog to main by @ahojnnes in https://github.com/colmap/colmap/pull/3461
* Add min_num_neighbors constraint for spatial matching by @StonerLing in https://github.com/colmap/colmap/pull/3463
* Refactor feature extraction/matching to support other features by @ahojnnes in https://github.com/colmap/colmap/pull/3465
* Define VisualIndex::Read as static in python bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3467
* Only find C/CXX OpenMP components by @ahojnnes in https://github.com/colmap/colmap/pull/3469
* Remove unnecessary GPU checks in pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/3472
* Fix a bug affecting feature matching on GPU by @sarlinpe in https://github.com/colmap/colmap/pull/3473
* Add command line option for `TwoViewGeometry.detect_watermark` by @gareth-cross in https://github.com/colmap/colmap/pull/3476
* Add and test GetRelativePath by @sarlinpe in https://github.com/colmap/colmap/pull/3475
* Update GetPathBaseName to rely on std::filesystem by @sarlinpe in https://github.com/colmap/colmap/pull/3481
* Fix potential deadlock in job queue by @huluoboge in https://github.com/colmap/colmap/pull/3480
* Update FindMetis.cmake to also link GK_LIBRARIES by @yeicor in https://github.com/colmap/colmap/pull/3470
* Remove check in database_cache.cc that breaks backwards compatibility with image_list_file_path by @pd-karoly-harsanyi in https://github.com/colmap/colmap/pull/3478
* Fix docker run script for GUI by @MasahiroOgawa in https://github.com/colmap/colmap/pull/3483
* Ensure UTF-8 encoding for database paths passed to SQLite open by @StonerLing in https://github.com/colmap/colmap/pull/3482
* Add changelog for 3.12.2 release by @ahojnnes in https://github.com/colmap/colmap/pull/3488
* Add changelog for 3.12.3 release by @ahojnnes in https://github.com/colmap/colmap/pull/3490
* Fix BundleAdjustmentConfig::SetConstantRigFromWorldPose by @whuaegeanse in https://github.com/colmap/colmap/pull/3501
* Add random_seed option to RANSACOptions for reproducible TwoViewGeometry estimation by @StonerLing in https://github.com/colmap/colmap/pull/3492
* Configure trivial rigs for unconfigured images by @ahojnnes in https://github.com/colmap/colmap/pull/3497
* Fix pycolmap test command by @ahojnnes in https://github.com/colmap/colmap/pull/3506
* Pano SFM example improvements and fixes by @ahojnnes in https://github.com/colmap/colmap/pull/3503
* Support Python 3.14 and retire 3.8 by @ahojnnes in https://github.com/colmap/colmap/pull/3518
* Upgrade ruff and automatically apply fixes by @ahojnnes in https://github.com/colmap/colmap/pull/3515
* Update point3D errors after bundle adjustment or SfM by @whuaegeanse in https://github.com/colmap/colmap/pull/3500
* Add option to filter stationary points in two-view geometry estimation by @ahojnnes in https://github.com/colmap/colmap/pull/3521
* Add unit test for watermark detection by @ahojnnes in https://github.com/colmap/colmap/pull/3524
* Fix comment for FilterStationaryMatches by @sarlinpe in https://github.com/colmap/colmap/pull/3525
* Ignore compile_commands.json in git by @ahojnnes in https://github.com/colmap/colmap/pull/3526
* Fix bundle adjustment performance regression due to changed Gauge by @ahojnnes in https://github.com/colmap/colmap/pull/3527
* Bind CUDA utils in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3532
* Add explicit tests for fixing gauge freedom and bugfix by @ahojnnes in https://github.com/colmap/colmap/pull/3533
* Fix format specifier overflow in WriteSnapshot() timestamp by @StonerLing in https://github.com/colmap/colmap/pull/3534
* Change input in cost function to log scale and remove custom manifold from colmap.  by @B1ueber2y in https://github.com/colmap/colmap/pull/3538
* Throw exception when image.SetFramePtr() sets a frame without the image listed as its data. by @B1ueber2y in https://github.com/colmap/colmap/pull/3540
* Avoid frame having data from a sensor that does not exist in its associated rig.  by @B1ueber2y in https://github.com/colmap/colmap/pull/3543
* Revert scale changes for metric reconstruction in rig sfm. by @B1ueber2y in https://github.com/colmap/colmap/pull/3530
* Fix comment for C++20 support. by @B1ueber2y in https://github.com/colmap/colmap/pull/3547
* Clean up unused includes in scene folder by @ahojnnes in https://github.com/colmap/colmap/pull/3548
* Add random_seed to IncrementalMapper to control all RANSAC seeds for improved SfM reproducibility by @StonerLing in https://github.com/colmap/colmap/pull/3544
* Throw exception at counting registered images when an image in the frame does not exist in the reconstruction.  by @B1ueber2y in https://github.com/colmap/colmap/pull/3546
* Clean up unused includes in retrieval folder by @ahojnnes in https://github.com/colmap/colmap/pull/3549
* Clean up unused includes in optim folder by @ahojnnes in https://github.com/colmap/colmap/pull/3550
* Fix ModelViewerWidget::ClearReconstruction by @whuaegeanse in https://github.com/colmap/colmap/pull/3552
* Fix build with Boost 1.89.0 by @cho-m in https://github.com/colmap/colmap/pull/3553
* Clean up unused includes in util folder by @ahojnnes in https://github.com/colmap/colmap/pull/3551
* Retire Mac x86 support by @ahojnnes in https://github.com/colmap/colmap/pull/3555
* Update database bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3556
* Throw exception for Frame::SetRigId when rig pointer is available. by @B1ueber2y in https://github.com/colmap/colmap/pull/3558
* Fix rig configuration with differing IDs between database and reconstruction by @ahojnnes in https://github.com/colmap/colmap/pull/3557
* Removing the Global Lock in SiftGPUFeatureMatcher for CUDA backend by @yimingc in https://github.com/colmap/colmap/pull/3561
* Add option to skip matching for image pairs in same frame by @ahojnnes in https://github.com/colmap/colmap/pull/3563
* Add option to keep specific cameras constant by @ahojnnes in https://github.com/colmap/colmap/pull/3565
* Throw exception if any camera in the rig does not exist in the reconstruction. by @B1ueber2y in https://github.com/colmap/colmap/pull/3564
* Clean up unused includes in controllers folder by @ahojnnes in https://github.com/colmap/colmap/pull/3566
* Extract image pair conversion functions into type utils by @ahojnnes in https://github.com/colmap/colmap/pull/3568
* Clean up unused includes in estimators folder by @ahojnnes in https://github.com/colmap/colmap/pull/3567
* Expect error threshold for generalized relative pose in pixel space by @ahojnnes in https://github.com/colmap/colmap/pull/3571
* Add function to read number of matches by @ahojnnes in https://github.com/colmap/colmap/pull/3572
* Add a test to ensure THROW_CHECK conditions are evaluated exactly once by @ahojnnes in https://github.com/colmap/colmap/pull/3573
* Simplify and reuse feature matcher thread creation by @ahojnnes in https://github.com/colmap/colmap/pull/3575
* Increase exhaustive matching cache size by @ahojnnes in https://github.com/colmap/colmap/pull/3576
* Add option to clean two-view geometries by @ahojnnes in https://github.com/colmap/colmap/pull/3577
* Decouple feature matching and two-view geometry options by @ahojnnes in https://github.com/colmap/colmap/pull/3578
* Display CLI floating-point defaults with 3 significant digits by @StonerLing in https://github.com/colmap/colmap/pull/3579
* Make use_log_scale an option for Point3DAlignmentCost. by @B1ueber2y in https://github.com/colmap/colmap/pull/3574
* Cache max number of keypoints by @ahojnnes in https://github.com/colmap/colmap/pull/3583
* Add tool for geometric verification by @ahojnnes in https://github.com/colmap/colmap/pull/3581
* Minor perf and code quality improvements for visual inverted index by @ahojnnes in https://github.com/colmap/colmap/pull/3584
* Upgrade pybind11 to 3.0.0 by @ahojnnes in https://github.com/colmap/colmap/pull/3523
* Fix missing colmap namespace in sqlite3 macro. by @B1ueber2y in https://github.com/colmap/colmap/pull/3587
* Use pybind smart holder for all classes by @ahojnnes in https://github.com/colmap/colmap/pull/3542
* Add option to perform geometric verification with rig constraints by @ahojnnes in https://github.com/colmap/colmap/pull/3498
* Use Qt QSettings to remember last-used paths across file dialogs by @MotivaCG in https://github.com/colmap/colmap/pull/3585
* Fix MaybeLoadImages by @whuaegeanse in https://github.com/colmap/colmap/pull/3586
* Sync 3.12 changelog changes by @ahojnnes in https://github.com/colmap/colmap/pull/3591
* Document rig-related feature matching options and change rig verification defaults by @ahojnnes in https://github.com/colmap/colmap/pull/3592
* Abstract database interface and sqlite implementation by @ahojnnes in https://github.com/colmap/colmap/pull/3541
* Share feature extraction max_image_size option by @ahojnnes in https://github.com/colmap/colmap/pull/3600
* Support for reading RGB or grayscale images for feature extraction by @ahojnnes in https://github.com/colmap/colmap/pull/3603
* Support both Qt5 and Qt6 by @zhouzq-thu in https://github.com/colmap/colmap/pull/3597
* Add option to fix individual rigs by @ahojnnes in https://github.com/colmap/colmap/pull/3604
* Ensure download support on Ubuntu by installing libssl-dev for crypto by @ahojnnes in https://github.com/colmap/colmap/pull/3607
* Update pybind11 to 3.0.1 by @ahojnnes in https://github.com/colmap/colmap/pull/3609
* Fix focal length extraction from 35mm equivalent by @ahojnnes in https://github.com/colmap/colmap/pull/3617
* Update to Windows 2025 runners and pin pycolmap image versions by @ahojnnes in https://github.com/colmap/colmap/pull/3618
* Update to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/3619
* Add bindings for mvs::model for covisibility support in pycolmap by @B1ueber2y in https://github.com/colmap/colmap/pull/3621
* Fix inconsistent pycolmap naming for RegisterFrame and DeRegisterFrame. by @B1ueber2y in https://github.com/colmap/colmap/pull/3623
* Add Conda package installation instructions by @Tobias-Fischer in https://github.com/colmap/colmap/pull/3624
* Call Retriangulate irrespective of the logging level by @sarlinpe in https://github.com/colmap/colmap/pull/3626
* Add missing rig and frame interfaces for pycolmap database. by @B1ueber2y in https://github.com/colmap/colmap/pull/3629
* Throw exception when the rig configurations of the database and existing reconstruction are inconsistent.  by @B1ueber2y in https://github.com/colmap/colmap/pull/3628
* Improve the Gauge logic for fixing two views. by @B1ueber2y in https://github.com/colmap/colmap/pull/3627
* Add changelog for 3.12.6 release. by @B1ueber2y in https://github.com/colmap/colmap/pull/3632
* Ensure min/max_focal_length_ratio and max_extra_param are piped to triangulation by @ahojnnes in https://github.com/colmap/colmap/pull/3637
* Fix broken logic of removing cameras at Reconstruction::TearDown(). by @B1ueber2y in https://github.com/colmap/colmap/pull/3634
* Minor: resolve -Wsign-compare warning for min_num_inliers. by @B1ueber2y in https://github.com/colmap/colmap/pull/3639
* Remove redundant binding of feature module in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3640
* Remove plyfile python package copy due to GNU license by @ahojnnes in https://github.com/colmap/colmap/pull/3644
* rig_from_world and sensor_from_rig in pycolmap should return reference rather than copy. by @B1ueber2y in https://github.com/colmap/colmap/pull/3645
* Also replace mask file extension to .png instead of appending by @Dawars in https://github.com/colmap/colmap/pull/3611
* Fix crash when built without GPU support by @sarlinpe in https://github.com/colmap/colmap/pull/3649
* Replace custom filtering with image filter view by @ahojnnes in https://github.com/colmap/colmap/pull/3651
* Expose image_ids filter view in frame in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3652
* Simplify and fix updating cameras with priors in benchmarking by @ahojnnes in https://github.com/colmap/colmap/pull/3653
* Fix typo in patch match options documentation by @ahojnnes in https://github.com/colmap/colmap/pull/3655
* Consistently name local BA options and deduplicate local_ba_num_images by @ahojnnes in https://github.com/colmap/colmap/pull/3657
* Adjust reconstruction consistency checks by @ahojnnes in https://github.com/colmap/colmap/pull/3658
* Improve the doc for loop_detection_period. by @sarlinpe in https://github.com/colmap/colmap/pull/3661
* Expose comparison operators in Python bindings by @jhacsonmeza in https://github.com/colmap/colmap/pull/3663
* Feature sub-selection for global BA by @ahojnnes in https://github.com/colmap/colmap/pull/3650
* Compute alignment RANSAC max_error from RMS stddev and chi-square by @StonerLing in https://github.com/colmap/colmap/pull/3664
* Address clang-tidy 21 errors by @ahojnnes in https://github.com/colmap/colmap/pull/3668
* Extract synthetic reconstruction noise functionality into separate utility by @ahojnnes in https://github.com/colmap/colmap/pull/3670
* Fix copy assignment of image by @ahojnnes in https://github.com/colmap/colmap/pull/3671
* Add gmock matcher for checking approximate reconstruction equality by @ahojnnes in https://github.com/colmap/colmap/pull/3672
* Add gmock matcher for checking reconstruction equality by @ahojnnes in https://github.com/colmap/colmap/pull/3673
* Include cassert by @FlexW in https://github.com/colmap/colmap/pull/3674
* Parallelize incremental mapper initialization by @ahojnnes in https://github.com/colmap/colmap/pull/3675
* Add timeout option for incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/3676
* Implement equals operator for FeatureKeypoint/Match by @ahojnnes in https://github.com/colmap/colmap/pull/3678
* Add method to update keypoints in database by @ahojnnes in https://github.com/colmap/colmap/pull/3679
* Fix noise synthesis to consistently update database keypoints by @ahojnnes in https://github.com/colmap/colmap/pull/3680
* Add missing binding for Reconstruction::DeleteAllPoints2DAndPoints3D. by @B1ueber2y in https://github.com/colmap/colmap/pull/3682
* Fix BA convergence setting bug during initialization by @ahojnnes in https://github.com/colmap/colmap/pull/3677
* Add notice of the version of panorama_sfm.py by @sarlinpe in https://github.com/colmap/colmap/pull/3685
* Cuda-Enabled Pip Package (Linux x86-64 only) by @Tobias314 in https://github.com/colmap/colmap/pull/3608
* Update to CUDA 12.9.1 in CI by @ahojnnes in https://github.com/colmap/colmap/pull/3610
* Add test for BA controller by @ahojnnes in https://github.com/colmap/colmap/pull/3683
* Add tests for option manager by @ahojnnes in https://github.com/colmap/colmap/pull/3684
* Add tests for feature matching controllers by @ahojnnes in https://github.com/colmap/colmap/pull/3686
* Remove unused variable in reconstruction test by @ahojnnes in https://github.com/colmap/colmap/pull/3691
* Update the logic of duplicate correspondence to support one-to-many matches. by @B1ueber2y in https://github.com/colmap/colmap/pull/3681
* Some misc code improvements for ObservationManager by @ahojnnes in https://github.com/colmap/colmap/pull/3689
* Update PyPI publishing by @sarlinpe in https://github.com/colmap/colmap/pull/3692
* Update deprecated Eigen JacobiSVD usage by @ahojnnes in https://github.com/colmap/colmap/pull/3690
* Add unit test for feature extraction controller by @ahojnnes in https://github.com/colmap/colmap/pull/3693
* Update to latest clang-format 20.1.5 by @ahojnnes in https://github.com/colmap/colmap/pull/3694
* Add function to synthesize images by @ahojnnes in https://github.com/colmap/colmap/pull/3696
* Remove deprecated rig bundle adjuster by @B1ueber2y in https://github.com/colmap/colmap/pull/3698
* Fix coordinate bug in ComputeEqualPartsBboxes by @ahojnnes in https://github.com/colmap/colmap/pull/3700
* Create unit test for automatic reconstruction controller by @ahojnnes in https://github.com/colmap/colmap/pull/3697
* Add unit test for HammingDistanceWeightFunctor by @ahojnnes in https://github.com/colmap/colmap/pull/3702
* Add unit test for option manager parsing and move sys exit to call sites by @ahojnnes in https://github.com/colmap/colmap/pull/3703
* Add unit test for feature importer controller by @ahojnnes in https://github.com/colmap/colmap/pull/3704

--------------------------
COLMAP 3.12.6 (09/17/2025)
--------------------------

Improvements
------------
* Upgrade to pybind 3.0.1 and use smart holder for all classes.
* Support both Qt5 and Qt6.
* Ensure download support on Ubuntu by installing libssl-dev for crypto.
* Add bindings for mvs::model for covisibility support in pycolmap.
* Add missing rig and frame interfaces for pycolmap database.
* Throw exception when the rig configurations of the database and existing reconstruction are inconsistent.
* Improve the Gauge logic for fixing two views.

Bug Fixes
---------
* Fix focal length extraction from 35mm equivalent.
* Fix inconsistent pycolmap naming for RegisterFrame and DeRegisterFrame.
* Call Retriangulate irrespective of the logging level.
* Fix bundle adjustment with constant rig from world pose.

--------------------------
COLMAP 3.12.5 (08/22/2025)
--------------------------

Improvements
------------
* Add various safety checks with more understandable error messages
  when adding misconfigured rigs/cameras/frames/images to the reconstruction.
* Recover original metric reconstruction scale in case of configured rigs.

Bug Fixes
---------
* Fix incompatibilities due to redundant symbol definition in pycolmap/pyceres.
* Fix error threshold for generalized relative pose to be in pixel space.
* Fix rig configuration in case of inconsistent IDs in database/reconstruction.
* Fix missing colmap namespace in sqlite3 macro.
* Fix CMake configuration with Boost 1.89 or newer.
* Fix viewer crash when clearing the reconstruction.

--------------------------
COLMAP 3.12.4 (08/04/2025)
--------------------------

Bug Fixes
---------
* Fix global bundle adjustment performance regression due
  to changing gauge fixing mechanism by fixing points vs. cameras.

--------------------------
COLMAP 3.12.3 (07/16/2025)
--------------------------

Bug Fixes
---------
* Set correct version number

--------------------------
COLMAP 3.12.2 (07/16/2025)
--------------------------

Bug Fixes
---------
* Define VisualIndex::Read as static in python bindings
* Only find C/CXX OpenMP components to support new CMake versions
* Fix a bug affecting feature matching on GPU
* Fix potential deadlock in job queue
* Update FindMetis.cmake to also link GK_LIBRARIES
* Fix backwards compatibility in mapper with custom image list
* Fix docker run script for GUI

--------------------------
COLMAP 3.12.1 (07/05/2025)
--------------------------

Bug Fixes
---------
* Fix Docker runtime libraries
* Fix spatial matcher bug
* Minor fixes for documentation


--------------------------
COLMAP 3.12.0 (06/30/2025)
--------------------------

New Features
------------
* Support for modeling sensor rigs (and thus multi-camera rigs and panoramas).
  For more details and usage examples, see: https://colmap.github.io/rigs.html.
* Automatic download and caching of vocabulary trees and other resources.
* Support for converting between LLA and UTM coordinates.
* Improved minimal solvers for affine transform and generalized absolute/relative pose.
* Improved absolute pose estimation by minimizing pixel error in image space.
* Replaced FLANN with faiss for fast approximate nearest neighbor search
  for improved speed in CPU-based feature matching and vocabulary tree-based image retrieval.
* Support for propagating relative pose covariance.
* Support visualization of models with arbitrary origin and scale (e.g., in GPS space).
* Reconstruction benchmark for ETH3D, IMC, BlendedMVS datasets.
* Measure and report code test coverage in CI.

Bug Fixes
---------
* Fixed RANSAC stopping criterion, see https://arxiv.org/pdf/2503.07829.
* Fixed and improved two-view pose and triangulation angle estimation.
* Fix rare deadlock during vocab tree feature matching.
* For other bug fixes, see full list of changes below.

Breaking Changes
----------------
* Serialization of reconstruction and database contains a new abstraction: rigs and frames.
  The reconstruction output contains two new files `rigs.{bin,txt}` and `frames.{bin,txt}`.
  The database contains new tables: `rigs`, `rig_sensors`, `frames`, `frames_data`.
  Reading from existing reconstructions and databases (without rigs/frames) is fully backwards
  compatible and vice versa reading new reconstructions (with rigs/frames) using old code is
  fully forwards compatible.
* Sensor poses (and thus image poses) are now composed as:
  `sensor_from_world = sensor_from_rig * rig_from_world`. Previously, `image.cam_from_world`
  returned a reference to the pose parameters. Now it returns a copy of the pose composition:
  `image.cam_from_world() = image.frame.rig.sensor_from_rig(image.camera.sensor_id) * image.frame.rig_from_world`
  with the underlying pose parameters stored in the rig and frame objects.
* Default bundle adjuster supports sensor rigs and thus rig bundle adjuster is deprecated.
* FLANN-based vocabulary trees are incompatible with faiss. New trees automatically
  downloaded, if no vocab_tree_path is provided, otherwise manual download and update required.
* Removed official support for Ubuntu 20.04, MacOS 13, and Visual Studio 2019.

Full Change List (sorted temporally)
------------------------------------
* Cancel previous Github action runs upon push by @ahojnnes in https://github.com/colmap/colmap/pull/2998
* Fix ccache installation in pycolmap windows CI by @ahojnnes in https://github.com/colmap/colmap/pull/2997
* Use Azure blob storage as vcpkg binary cache by @ahojnnes in https://github.com/colmap/colmap/pull/2999
* Add missing openmp flags in retrieval for flann parallelization by @ahojnnes in https://github.com/colmap/colmap/pull/3018
* Separate read and write SAS tokens for vcpkg binary cache by @ahojnnes in https://github.com/colmap/colmap/pull/3027
* Define vcpkg binary cache source inline by @ahojnnes in https://github.com/colmap/colmap/pull/3028
* Fix conditional vcpkg binary cache config in bash by @ahojnnes in https://github.com/colmap/colmap/pull/3031
* Avoid absolute path for the include directory installation by @jhacsonmeza in https://github.com/colmap/colmap/pull/3024
* Add conversion between LLA and UTM coords. by @StonerLing in https://github.com/colmap/colmap/pull/3030
* Improve interface for ReadWriteBinaryBlob and add tests by @ahojnnes in https://github.com/colmap/colmap/pull/3033
* Add support for downloading files by @ahojnnes in https://github.com/colmap/colmap/pull/3022
* Add function to compute sha256 digest by @ahojnnes in https://github.com/colmap/colmap/pull/3035
* Automatically download and cache vocabulary tree by @ahojnnes in https://github.com/colmap/colmap/pull/3036
* Set vcpkg default features and synchronize to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/3038
* Avoid unnecessary copy of input elements in Percentile/Median by @ahojnnes in https://github.com/colmap/colmap/pull/3039
* Abstract algorithm class IncrementalMapperImpl by @B1ueber2y in https://github.com/colmap/colmap/pull/3040
* Perform linear interpolation in percentile computation by @ahojnnes in https://github.com/colmap/colmap/pull/3041
* Avoid dependent inputs in IncrementalMapperImpl by @B1ueber2y in https://github.com/colmap/colmap/pull/3043
* Reorder destructors for better safety in EndReconstruction by @B1ueber2y in https://github.com/colmap/colmap/pull/3046
* Improvements for reconstruction normalization / bbox / centroid by @ahojnnes in https://github.com/colmap/colmap/pull/3047
* Speedup affine transform minimal solver, create python bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3049
* Fix compilation with DOWNLOAD_ENABLED=OFF by @ahojnnes in https://github.com/colmap/colmap/pull/3053
* Consistent interface/tests for rigid3d/sim3d/affine2d, pycolmap bindings for rigid3d by @ahojnnes in https://github.com/colmap/colmap/pull/3051
* Improve logging for errors in masking during feature extraction by @Ambrosiussen in https://github.com/colmap/colmap/pull/3034
* Add copy constructor support for solver-related ceres bindings by @B1ueber2y in https://github.com/colmap/colmap/pull/3059
* Minor fix on using pycolmap bundle adjuster with pyceres by @B1ueber2y in https://github.com/colmap/colmap/pull/3060
* Re-enable interface support for covariance estimation from a Ceres::Problem instance by @B1ueber2y in https://github.com/colmap/colmap/pull/3061
* Only cancel CI runs in PRs and not in main/release branches by @ahojnnes in https://github.com/colmap/colmap/pull/3063
* Add binding support for invalid values in pycolmap id types by @B1ueber2y in https://github.com/colmap/colmap/pull/3072
* Fix custom quality level in ETH3D benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/3076
* Set max_num_features automatically per quality level by @ahojnnes in https://github.com/colmap/colmap/pull/3077
* Make it possible to build the MVS doc even when CUDA is not installed by @sarlinpe in https://github.com/colmap/colmap/pull/3078
* Temporarily disable ccache in the pycolmap macOS CI by @sarlinpe in https://github.com/colmap/colmap/pull/3084
* Add option to specify image list in automatic reconstruction by @ahojnnes in https://github.com/colmap/colmap/pull/3074
* Only create OpenGL context in automatic reconstruction if necessary by @ahojnnes in https://github.com/colmap/colmap/pull/3075
* Remove unnecessary braces around initializer in pycolmap/covariance by @ahojnnes in https://github.com/colmap/colmap/pull/3080
* Remove temporary fixes for macOS CI by @sarlinpe in https://github.com/colmap/colmap/pull/2954
* Reconstruction benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/2714
* Re-enable ccache in pycolmap Mac CI by @sarlinpe in https://github.com/colmap/colmap/pull/3085
* Fix transitive completion in incremental triangulator by @ahojnnes in https://github.com/colmap/colmap/pull/3094
* Fix image deletion, hide point viewer widget after deletion by @ahojnnes in https://github.com/colmap/colmap/pull/3098
* Fix download functionality under Windows by @ahojnnes in https://github.com/colmap/colmap/pull/3099
* Add back detailed logs for covariance estimation by @B1ueber2y in https://github.com/colmap/colmap/pull/3082
* Fix reprojection error in camera rig cost function by @binbin-xu in https://github.com/colmap/colmap/pull/3106
* Install missing libcurl4 runtime library in dockerfile by @ahojnnes in https://github.com/colmap/colmap/pull/3122
* Expose incremental mapper pose prior options in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3123
* Remove year from copyright by @ahojnnes in https://github.com/colmap/colmap/pull/3124
* Use poselib for generalized absolute pose minimal solver by @ahojnnes in https://github.com/colmap/colmap/pull/3125
* Add code coverage reporting by @ahojnnes in https://github.com/colmap/colmap/pull/3126
* Fix synthetic prior generation when stddev=0 by @ahojnnes in https://github.com/colmap/colmap/pull/3128
* Create temporary colmap test directy under system test directory by @ahojnnes in https://github.com/colmap/colmap/pull/3129
* Minor: pyceres is no longer a must for running pycolmap bundle adjuster by @B1ueber2y in https://github.com/colmap/colmap/pull/3130
* Fix cost functor convention for benchmarking by @B1ueber2y in https://github.com/colmap/colmap/pull/3131
* Support enum from string conversion by @ahojnnes in https://github.com/colmap/colmap/pull/3132
* More robustly handle degenerate triangulation angles by @ahojnnes in https://github.com/colmap/colmap/pull/3135
* Minor: add missing empty namespace in alignment testing script by @B1ueber2y in https://github.com/colmap/colmap/pull/3137
* Add frame impl for future rig support by @B1ueber2y in https://github.com/colmap/colmap/pull/2698
* Rename RigCalibration to RigCalib by @ahojnnes in https://github.com/colmap/colmap/pull/3142
* Fix and improve two-view pose and triangulation angle estimation by @ahojnnes in https://github.com/colmap/colmap/pull/3146
* Fix covariance propagation of pose inverse by @B1ueber2y in https://github.com/colmap/colmap/pull/3155
* [Spherical Camera Support] Change essential matrix estimation to use camera rays by @ahojnnes in https://github.com/colmap/colmap/pull/3159
* Improve incremental mapper initialization logic by @ahojnnes in https://github.com/colmap/colmap/pull/3161
* Improved RANSAC dependency injection by @ahojnnes in https://github.com/colmap/colmap/pull/3165
* Add docs on the left convention in COLMAP for covariance propagation. by @B1ueber2y in https://github.com/colmap/colmap/pull/3167
* Add docker instruction link to docs by @j3soon in https://github.com/colmap/colmap/pull/3169
* Compute absolute pose estimation error in image space by @ahojnnes in https://github.com/colmap/colmap/pull/3166
* Add support for propagating relative pose covariance. by @B1ueber2y in https://github.com/colmap/colmap/pull/3168
* Avoid using namespace in pycolmap headers by @ahojnnes in https://github.com/colmap/colmap/pull/3173
* Fix naming of cross covariance and add relative pose covariance interface by @B1ueber2y in https://github.com/colmap/colmap/pull/3170
* Camera models perform valid projection test by @ahojnnes in https://github.com/colmap/colmap/pull/3172
* Various improvements and extensions for pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3176
* Fix pycolmap ci build for pull requests by @B1ueber2y in https://github.com/colmap/colmap/pull/3178
* Change CamFromImg to return optional ray by @ahojnnes in https://github.com/colmap/colmap/pull/3180
* Triangulation operates on camera rays by @ahojnnes in https://github.com/colmap/colmap/pull/3184
* Python bindings for visual index by @ahojnnes in https://github.com/colmap/colmap/pull/3185
* Define bindings in the correct order by @sarlinpe in https://github.com/colmap/colmap/pull/3189
* Restore CamFromImg to return normalized camera coordinates instead of… by @ahojnnes in https://github.com/colmap/colmap/pull/3193
* Add Rig serialization support to reconstruction+database by @ahojnnes in https://github.com/colmap/colmap/pull/3143
* Pull changes from main branch by @ahojnnes in https://github.com/colmap/colmap/pull/3194
* Fix maybe-uninitialized warnings by @papjuli in https://github.com/colmap/colmap/pull/3199
* Fix compilation errors with PoissonRecon by @theartful in https://github.com/colmap/colmap/pull/3200
* Remove Ubuntu 20.04 from the CI by @sarlinpe in https://github.com/colmap/colmap/pull/3203
* Add support for frame serialization by @ahojnnes in https://github.com/colmap/colmap/pull/3202
* Handle non-trivial frames in bundle adjustment by @ahojnnes in https://github.com/colmap/colmap/pull/3214
* Update email address by @sarlinpe in https://github.com/colmap/colmap/pull/3223
* Change the root of the Python package by @sarlinpe in https://github.com/colmap/colmap/pull/3217
* Fix bug when toggling rendering by @ahojnnes in https://github.com/colmap/colmap/pull/3230
* Add convenience iterator for frame image ids by @ahojnnes in https://github.com/colmap/colmap/pull/3231
* Update feature/rig with main by @ahojnnes in https://github.com/colmap/colmap/pull/3241
* Update to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/3243
* Update feature/rig branch with latest changes in main by @ahojnnes in https://github.com/colmap/colmap/pull/3244
* Fix incremental pycolmap build script by @ahojnnes in https://github.com/colmap/colmap/pull/3245
* Logically group image reader options by @ahojnnes in https://github.com/colmap/colmap/pull/3246
* Fix chained match synthesis by @ahojnnes in https://github.com/colmap/colmap/pull/3248
* Retire Reconstruction::IsImageRegistered in favor of existing Image::HasPose by @ahojnnes in https://github.com/colmap/colmap/pull/3247
* Fix two-view geometry pose estimation for homography by @ahojnnes in https://github.com/colmap/colmap/pull/3250
* Fix uninitialized variable warnings by @ahojnnes in https://github.com/colmap/colmap/pull/3254
* Include Boost headers on build by @jonahjnewton in https://github.com/colmap/colmap/pull/3257
* Pull latest changes from main to feature/rig by @ahojnnes in https://github.com/colmap/colmap/pull/3262
* Support rigs/frames in incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/3238
* Rename FrameFromWorld to RigFromWorld pose by @ahojnnes in https://github.com/colmap/colmap/pull/3263
* Add pytest on the e2e python pipeline into CI. by @B1ueber2y in https://github.com/colmap/colmap/pull/3266
* Fix broken python interfaces by @B1ueber2y in https://github.com/colmap/colmap/pull/3267
* Use generalized absolute pose estimation for non-trivial frames by @ahojnnes in https://github.com/colmap/colmap/pull/3265
* Fix color extraction for rig frames by @ahojnnes in https://github.com/colmap/colmap/pull/3268
* Sequential matcher expands rig images by @ahojnnes in https://github.com/colmap/colmap/pull/3270
* Fix usage of deprecated pycolmap interfaces in pycolmap README. by @B1ueber2y in https://github.com/colmap/colmap/pull/3272
* Improved code/docs and tests for rig configuration by @ahojnnes in https://github.com/colmap/colmap/pull/3275
* Update vcpkg to pull in fixes for ceres by @ahojnnes in https://github.com/colmap/colmap/pull/3276
* Rig bundle adjuster uses default bundle adjustment routine by @ahojnnes in https://github.com/colmap/colmap/pull/3281
* Cleanup legacy camera rig code by @ahojnnes in https://github.com/colmap/colmap/pull/3283
* Store rig sensors and frame data in separate database tables by @ahojnnes in https://github.com/colmap/colmap/pull/3285
* Configure trivial rigs and frames during feature extraction by @ahojnnes in https://github.com/colmap/colmap/pull/3287
* [Bugfix] Center 2D points by principal point for absolute pose estimation with unknown focal length by @xjiangan in https://github.com/colmap/colmap/pull/3289
* Add bindings for rig configuration by @ahojnnes in https://github.com/colmap/colmap/pull/3291
* Documentation for rig support by @ahojnnes in https://github.com/colmap/colmap/pull/3290
* Fix documentation of rigs.txt by @sarlinpe in https://github.com/colmap/colmap/pull/3292
* Update feature/rig with latest changes in main by @ahojnnes in https://github.com/colmap/colmap/pull/3293
* Merge feature/rig branch into main by @ahojnnes in https://github.com/colmap/colmap/pull/3295
* improve clarity of the rig example by @B1ueber2y in https://github.com/colmap/colmap/pull/3297
* Bind missing SequentialMatchingOptions.loop_detection_period by @sarlinpe in https://github.com/colmap/colmap/pull/3299
* cleanup legacy comments for base controller. by @B1ueber2y in https://github.com/colmap/colmap/pull/3300
* Fix bug in grayscale Bitmap.to_array by @sarlinpe in https://github.com/colmap/colmap/pull/3301
* Handle errors in Bitmap.read by @sarlinpe in https://github.com/colmap/colmap/pull/3302
* Add an example script for SfM with 360 spherical images by @sarlinpe in https://github.com/colmap/colmap/pull/3304
* Recognize URIs for vocab_tree_path in GUI feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/3305
* Deterministic behavior for Python pipeline tests by @ahojnnes in https://github.com/colmap/colmap/pull/3306
* Move colmap/ui/main_window.h include to implementation by @ahojnnes in https://github.com/colmap/colmap/pull/3307
* Add Python 3.13 to pycolmap build matrix by @ahojnnes in https://github.com/colmap/colmap/pull/3308
* Add missing SiftMatchingOptions::cpu_brute_force_matcher to pycolmap bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3309
* Augment pinhole renders with GPS EXIFs of the panos by @sarlinpe in https://github.com/colmap/colmap/pull/3310
* Add missing cpu_brute_force_matcher to option manager by @ahojnnes in https://github.com/colmap/colmap/pull/3315
* Bind GPSTransform and make GPSTransform::Ellipsoid an enum class by @sarlinpe in https://github.com/colmap/colmap/pull/3311
* Update pose prior bundle adjuster to handle rigs by @ahojnnes in https://github.com/colmap/colmap/pull/3312
* Add support for running pose prior mapper from GUI by @ahojnnes in https://github.com/colmap/colmap/pull/3313
* Enable different matcher types and default to sequential in pano example by @ahojnnes in https://github.com/colmap/colmap/pull/3314
* Modularize reconstruction I/O formats into different libraries by @ahojnnes in https://github.com/colmap/colmap/pull/3317
* Fall back to P3P solver for panoramic generalized absolute pose by @ahojnnes in https://github.com/colmap/colmap/pull/3318
* Fix FLANN-based CPU feature matcher crash in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3320
* Update cibuildwheel to 2.23.2 by @ahojnnes in https://github.com/colmap/colmap/pull/3081
* Assume prior focal length for explicitly defined rig camera models by @ahojnnes in https://github.com/colmap/colmap/pull/3321
* Fix rig configuration with partial input reconstruction by @ahojnnes in https://github.com/colmap/colmap/pull/3322
* Use reference for image.camera and image.frame in pycolmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3323
* Use reference for frame.rig in pycolmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3324
* Cosmetic improvement on some geometry python bindings by @B1ueber2y in https://github.com/colmap/colmap/pull/3325
* Add unit test for EstimateAbsolutePose by @ahojnnes in https://github.com/colmap/colmap/pull/3327
* Add gmock matchers for rigid3 and sim3 by @ahojnnes in https://github.com/colmap/colmap/pull/3328
* Add unit tests for absolute pose refinement by @ahojnnes in https://github.com/colmap/colmap/pull/3330
* Cosmetic cleanup for absolute pose tests by @ahojnnes in https://github.com/colmap/colmap/pull/3333
* Add generalized relative pose estimation and pose binding cleanups by @ahojnnes in https://github.com/colmap/colmap/pull/3334
* Turn camera parameter access debug checks into throwing checks by @ahojnnes in https://github.com/colmap/colmap/pull/3337
* Handle panoramic rigs in generalized relative pose estimation by @ahojnnes in https://github.com/colmap/colmap/pull/3338
* Cosmetic variable name improvements to match conventions by @ahojnnes in https://github.com/colmap/colmap/pull/3341
* Add unit test for relative pose estimation by @ahojnnes in https://github.com/colmap/colmap/pull/3342
* Avoid nested parallelization for vocab tree pairing by @ahojnnes in https://github.com/colmap/colmap/pull/3343
* Fix rigid3/sim3 matchers for older eigen versions by @ahojnnes in https://github.com/colmap/colmap/pull/3344
* Deterministic homography test by @ahojnnes in https://github.com/colmap/colmap/pull/3346
* Add missing return statement in PyEstimateGeneralizedRelativePose by @ahojnnes in https://github.com/colmap/colmap/pull/3349
* Fix runtime error in panorama_sfm.py with sequential matching by @samuelm2 in https://github.com/colmap/colmap/pull/3351
* Fix race conditions in feature matcher cache by @ahojnnes in https://github.com/colmap/colmap/pull/3354
* Use shared lock in thread safe LRU cache by @ahojnnes in https://github.com/colmap/colmap/pull/3355
* Upgrade Jimver/cuda-toolkit GH actions task to 0.2.23 by @ahojnnes in https://github.com/colmap/colmap/pull/3358
* Upgrade to Ubuntu 24.04 / clang-18 in CI for ASan and ClangTidy builds by @ahojnnes in https://github.com/colmap/colmap/pull/3357
* Use add_compile_definitions instead of deprecated add_definitions by @ahojnnes in https://github.com/colmap/colmap/pull/3348
* Update Mac Github runners and fix pycolmap deployment targets by @ahojnnes in https://github.com/colmap/colmap/pull/3361
* Suppress CUDA warnings related constexpr host/device calls by @ahojnnes in https://github.com/colmap/colmap/pull/3362
* Update docker image to ubuntu 24.04 by @ahojnnes in https://github.com/colmap/colmap/pull/3363
* Fix benchmarking for rigs by @ahojnnes in https://github.com/colmap/colmap/pull/3364
* Add option to overwrite matches in benchmarking by @ahojnnes in https://github.com/colmap/colmap/pull/3365
* Replace flann with faiss by @ahojnnes in https://github.com/colmap/colmap/pull/3350
* Update docker with all major CUDA archs and updated boost version by @ahojnnes in https://github.com/colmap/colmap/pull/3369
* Retire remaining flann components and remove as dependency by @ahojnnes in https://github.com/colmap/colmap/pull/3370
* Update feature index to use float descriptors and distances by @ahojnnes in https://github.com/colmap/colmap/pull/3371
* Fix deadlock during feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/3373
* Warn user when reading legacy flann index by @ahojnnes in https://github.com/colmap/colmap/pull/3372
* expose loading database into database cache from DatabaseCache::Create. by @B1ueber2y in https://github.com/colmap/colmap/pull/3375
* minor: rename DatabaseCache::LoadDatabase to Load by @B1ueber2y in https://github.com/colmap/colmap/pull/3376
* Fix typo by @B1ueber2y in https://github.com/colmap/colmap/pull/3377
* Unit tests for image reader, remove redundant definition of database by @ahojnnes in https://github.com/colmap/colmap/pull/3383
* Fix trailing comma-separation when printing list contents by @ahojnnes in https://github.com/colmap/colmap/pull/3388
* Add missing VocabTreeMatching.num_threads in option manager by @ahojnnes in https://github.com/colmap/colmap/pull/3389
* Use OpenBLAS OpenMP version under Ubuntu to fix slow faiss by @ahojnnes in https://github.com/colmap/colmap/pull/3390
* Speedup database reads of rigs/frames with single SQL outer join query by @ahojnnes in https://github.com/colmap/colmap/pull/3387
* Introduce context manager to reset sqlite3 statements by @ahojnnes in https://github.com/colmap/colmap/pull/3392
* Add missing use_gpu options in pycolmap SIFT bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3397
* Add FeatureMatch python bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3398
* Add option to set log level in GUI by @ahojnnes in https://github.com/colmap/colmap/pull/3399
* Add docs to explain the concepts of rigs and frames. by @B1ueber2y in https://github.com/colmap/colmap/pull/3395
* Allow png mask without double extension by @MotivaCG in https://github.com/colmap/colmap/pull/3284
* Propagate macros to top-level CMakeLists.txt files by @jhacsonmeza in https://github.com/colmap/colmap/pull/3396
* Add a missing function implementation by @lpanaf in https://github.com/colmap/colmap/pull/3412
* Improved tests for reconstruction merging by @ahojnnes in https://github.com/colmap/colmap/pull/3413
* Use MKL as BLAS vendor for faiss by @ahojnnes in https://github.com/colmap/colmap/pull/3393
* Fix wrong doc for point covariance by @B1ueber2y in https://github.com/colmap/colmap/pull/3416
* Add legacy docs from 3.8 to 3.11. by @B1ueber2y in https://github.com/colmap/colmap/pull/3414
* Do not filter existing, fixed frames by @ahojnnes in https://github.com/colmap/colmap/pull/3403
* Tag commit id and date in the doc generation by @B1ueber2y in https://github.com/colmap/colmap/pull/3417
* Return bad initial pair when number of triangulation is less than abs_pose_min_num_inliers by @B1ueber2y in https://github.com/colmap/colmap/pull/3418
* Add option to build with thread sanitizer flags by @ahojnnes in https://github.com/colmap/colmap/pull/3420
* Add option to build with undefined behavior sanitizer flags by @ahojnnes in https://github.com/colmap/colmap/pull/3421
* Fix the RANSAC stopping criterion by @ahojnnes in https://github.com/colmap/colmap/pull/3425
* Replace incorrect call to nonZeros by @sarlinpe in https://github.com/colmap/colmap/pull/3426
* Add deprecation warning for rig_bundle_adjuster by @sarlinpe in https://github.com/colmap/colmap/pull/3427
* Fix incorrect include in euclidean_transform.h by @sarlinpe in https://github.com/colmap/colmap/pull/3428
* Add Frame::SetCamFromWorld in pycolmap and fix comment. by @B1ueber2y in https://github.com/colmap/colmap/pull/3429
* Estimate essential matrix using camera rays instead of points by @ahojnnes in https://github.com/colmap/colmap/pull/3423
* Fix FilterPoints3DWithSmallTriangulationAngle to return number of filtered observations by @whuaegeanse in https://github.com/colmap/colmap/pull/3424
* Update to latest vcpkg commit by @ahojnnes in https://github.com/colmap/colmap/pull/3430
* Initialize from non-trivial frame pairs using generalized relative pose by @ahojnnes in https://github.com/colmap/colmap/pull/3419
* Fix setup_ubuntu.sh for docker by @MasahiroOgawa in https://github.com/colmap/colmap/pull/3432
* Support visualization of models with arbitrary origin and scale by @ahojnnes in https://github.com/colmap/colmap/pull/3044
* Fix ReadPositionPriorData to return valid and numerically more stable Position prior data by @whuaegeanse https://github.com/colmap/colmap/pull/3438

--------------------------
COLMAP 3.11.1 (12/06/2024)
--------------------------

Bug Fixes
---------
* Fix typo in pycolmap function align_reconstruction_to_locations interface by @B1ueber2y in https://github.com/colmap/colmap/pull/2961
* Add back some ceres bindings to use pycolmap bundle adjustment without pyceres by @B1ueber2y in https://github.com/colmap/colmap/pull/2985
* Fix setting of RANSAC max error in pose prior BA alignment by @ahojnnes in https://github.com/colmap/colmap/pull/2993

--------------------------
COLMAP 3.11.0 (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)
------------------------------------
* Updates for pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/2672
* Trigger CI on release/* branches by @ahojnnes in https://github.com/colmap/colmap/pull/2673
* Use consistent versioning scheme between C++/Python by @ahojnnes in https://github.com/colmap/colmap/pull/2674
* Add cost function for 3D alignment (with covariance) by @B1ueber2y in https://github.com/colmap/colmap/pull/2621
* Numpy 2 compatibility by @sarlinpe in https://github.com/colmap/colmap/pull/2682
* Add fix for specifying the correct pycolmap CMake python development … by @fulkast in https://github.com/colmap/colmap/pull/2683
* Remove non existant flags of model_aligner from docs by @TamirCohen in https://github.com/colmap/colmap/pull/2696
* Reset CMAKE_MODULE_PATH to previous value by @mvieth in https://github.com/colmap/colmap/pull/2699
* Robustify nchoosek against overflow by @ahojnnes in https://github.com/colmap/colmap/pull/2706
* Observation manager needs to check if image_id exists before query operations by @bo-rc in https://github.com/colmap/colmap/pull/2704
* Remove pose prior from database.py:add_image by @sarlinpe in https://github.com/colmap/colmap/pull/2707
* Fix: sequential matcher overlap number should be inclusive by @flm8620 in https://github.com/colmap/colmap/pull/2701
* Fix table mangled by clang-format by @sweber1 in https://github.com/colmap/colmap/pull/2710
* Write out options to ini in full precision, relax bundle adjuster convergence by @ahojnnes in https://github.com/colmap/colmap/pull/2713
* Tests for pairing library in feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/2711
* Rename IncrementalMapperOptions to IncrementalPipelineOptions by @B1ueber2y in https://github.com/colmap/colmap/pull/2708
* Add support for CUDA sparse BA solver by @ahojnnes in https://github.com/colmap/colmap/pull/2717
* Rename HierarchicalMapperController to HierarchicalPipeline by @ahojnnes in https://github.com/colmap/colmap/pull/2718
* Make VisualIndex::Quantize const to improve readability by @IshitaTakeshi in https://github.com/colmap/colmap/pull/2723
* Fix CUDA_ENABLED macro in new bundle adjustment code by @drkoller in https://github.com/colmap/colmap/pull/2725
* Automatically generate stub files by @sarlinpe in https://github.com/colmap/colmap/pull/2721
* Add CUDA-based dense BA solver by @ahojnnes in https://github.com/colmap/colmap/pull/2732
* Improved and simplified caching in feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/2731
* Fix colmap namespace in the macro support of logging. by @B1ueber2y in https://github.com/colmap/colmap/pull/2733
* Add callbacks by move by @ahojnnes in https://github.com/colmap/colmap/pull/2734
* Implement transitive matcher with pair generator + tests by @ahojnnes in https://github.com/colmap/colmap/pull/2735
* Provide reasonable defaults for some estimator options by @sarlinpe in https://github.com/colmap/colmap/pull/2745
* Fix mismatched Delaunay meshing options by @sarlinpe in https://github.com/colmap/colmap/pull/2748
* PyCOLMAP API documentation by @sarlinpe in https://github.com/colmap/colmap/pull/2749
* Improved pycolmap coverage and docs by @sarlinpe in https://github.com/colmap/colmap/pull/2752
* Follow-up fixes in pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2755
* Report errors in import_images by @sarlinpe in https://github.com/colmap/colmap/pull/2750
* Further simplification of feature matcher code by @ahojnnes in https://github.com/colmap/colmap/pull/2744
* Add missing ClearModifiedPoints3D by @sarlinpe in https://github.com/colmap/colmap/pull/2761
* Store shared camera ptr for reconstruction images by @ahojnnes in https://github.com/colmap/colmap/pull/2762
* Avoid unnecessary copy of queue in IncrementalTriangulator::Complete() by @ahojnnes in https://github.com/colmap/colmap/pull/2764
* Branch prediction for THROW_CHECK_NOTNULL by @ahojnnes in https://github.com/colmap/colmap/pull/2765
* Use shared camera pointer in more places by @ahojnnes in https://github.com/colmap/colmap/pull/2763
* Support switching camera directly with camera pointer by @B1ueber2y in https://github.com/colmap/colmap/pull/2767
* Add test for MergeReconstructions by @B1ueber2y in https://github.com/colmap/colmap/pull/2766
* Fix little/big endian detection by @ahojnnes in https://github.com/colmap/colmap/pull/2768
* Fix options for CUDA sparse BA solver by @whuaegeanse in https://github.com/colmap/colmap/pull/2758
* Rename SupperMeasurer::Compare for improved readability by @ahojnnes in https://github.com/colmap/colmap/pull/2774
* Improvements for install docs by @ahojnnes in https://github.com/colmap/colmap/pull/2773
* fixed typo of align_reconstrution_to_locations to align_reconstructio… by @TamirCohen in https://github.com/colmap/colmap/pull/2776
* Fix missing camera ptr for Reconstruction.DeleteAllPoints2DAndPoints3D() by @B1ueber2y in https://github.com/colmap/colmap/pull/2779
* Rename remaining proj_matrix instances to cam_from_world by @ahojnnes in https://github.com/colmap/colmap/pull/2780
* Relative pose decomposition uses Rigid3d by @ahojnnes in https://github.com/colmap/colmap/pull/2781
* Minor renaming on pycolmap point2d and point3d filenames by @B1ueber2y in https://github.com/colmap/colmap/pull/2784
* Add validity check for pixel coordinate in the Fisheye camera. Fix tests.  by @B1ueber2y in https://github.com/colmap/colmap/pull/2790
* Use branch prediction in PRNG functions by @ahojnnes in https://github.com/colmap/colmap/pull/2796
* Implementation of Aria Fisheye camera model by @nushakrishnan in https://github.com/colmap/colmap/pull/2786
* Upgrade to C++ 17 by @B1ueber2y in https://github.com/colmap/colmap/pull/2801
* Pose Prior based Incremental Mapper by @ferreram in https://github.com/colmap/colmap/pull/2660
* Expose UpdatePoint3DErrors to pycolmap by @theartful in https://github.com/colmap/colmap/pull/2805
* Switch to the Ruff Python formatter by @sarlinpe in https://github.com/colmap/colmap/pull/2803
* Add mixed Python-C++ PyCOLMAP package by @sarlinpe in https://github.com/colmap/colmap/pull/2747
* Enable Ruff linter for Python by @sarlinpe in https://github.com/colmap/colmap/pull/2806
* Use C++17 structured bindings in some places by @ahojnnes in https://github.com/colmap/colmap/pull/2808
* Add RAD_TAN_THIN_PRISM_FISHEYE to camera docs by @ahojnnes in https://github.com/colmap/colmap/pull/2810
* Customized cost functions should be functors instead by @B1ueber2y in https://github.com/colmap/colmap/pull/2811
* Install and use newer clang-format from pypi by @ahojnnes in https://github.com/colmap/colmap/pull/2812
* Return a reference in Reconstruction.image/camera/point3D by @sarlinpe in https://github.com/colmap/colmap/pull/2814
* Add test for PositionPriorErrorCostFunctor. by @ferreram in https://github.com/colmap/colmap/pull/2815
* Replace boost/filesystem with standard library by @ahojnnes in https://github.com/colmap/colmap/pull/2809
* Fix selection of BA solver type when there is no cuda by @ahojnnes in https://github.com/colmap/colmap/pull/2822
* More informative exception if invalid access of image/camera/point3D by @sarlinpe in https://github.com/colmap/colmap/pull/2825
* Use minimal solvers from poselib by @ahojnnes in https://github.com/colmap/colmap/pull/2288
* Disable -march=native flags in poselib by @ahojnnes in https://github.com/colmap/colmap/pull/2828
* Make ``Image::cam_from_world_`` optional by @sarlinpe in https://github.com/colmap/colmap/pull/2824
* Remove warning in configure step by @sarlinpe in https://github.com/colmap/colmap/pull/2830
* Fix coordinate notation in EstimateAbsolutePose by @ahojnnes in https://github.com/colmap/colmap/pull/2833
* Return success status in low-level triangulation functions by @ahojnnes in https://github.com/colmap/colmap/pull/2834
* Pin mypy version for tests by @ahojnnes in https://github.com/colmap/colmap/pull/2849
* Suppress CMP0167 warning for FindBoost under CMake 3.30 or newer by @ahojnnes in https://github.com/colmap/colmap/pull/2853
* Reconstruction reader/writer tests and scene class repr by @ahojnnes in https://github.com/colmap/colmap/pull/2842
* Select CUDA device when bundle adjustment uses GPU by @ahojnnes in https://github.com/colmap/colmap/pull/2846
* Fix copying behaviors of Reconstruction regarding camera pointers by @B1ueber2y in https://github.com/colmap/colmap/pull/2841
* Use the C++ string representation for Python dataclass objects by @sarlinpe in https://github.com/colmap/colmap/pull/2855
* Various improvements for pycolmap bindings by @ahojnnes in https://github.com/colmap/colmap/pull/2854
* Use analytical Jacobian in IterativeUndistortion. Add trust region by @B1ueber2y in https://github.com/colmap/colmap/pull/2857
* Improve the conditioning of covariance estimation by @B1ueber2y in https://github.com/colmap/colmap/pull/2860
* Avoid unnecessary copy of RANSAC inlier masks by @ahojnnes in https://github.com/colmap/colmap/pull/2863
* Various improvements for cost functors by @ahojnnes in https://github.com/colmap/colmap/pull/2867
* Rename ``*_mapper`` to ``*_pipeline`` files by @ahojnnes in https://github.com/colmap/colmap/pull/2870
* Update the manylinux CI to GCC 10 by @sarlinpe in https://github.com/colmap/colmap/pull/2873
* Fix rare deadlock during matching due to concurrent database access by @ahojnnes in https://github.com/colmap/colmap/pull/2876
* Add new and missing options to automatic reconstructor by @ahojnnes in https://github.com/colmap/colmap/pull/2877
* Shared auto diff cost function creation by @ahojnnes in https://github.com/colmap/colmap/pull/2878
* Enable model alignment to reference model by @ahojnnes in https://github.com/colmap/colmap/pull/2879
* Add covariance weighted cost functor by @ahojnnes in https://github.com/colmap/colmap/pull/2880
* Fix unused variable warnings under MSVC by @ahojnnes in https://github.com/colmap/colmap/pull/2884
* Skip all but latest Python version in PR builds by @ahojnnes in https://github.com/colmap/colmap/pull/2881
* [doc] Fix path to example in README.md by @kielnino in https://github.com/colmap/colmap/pull/2886
* Update Github actions versions by @ahojnnes in https://github.com/colmap/colmap/pull/2887
* [doc] Fix typo for gui menu item by @kielnino in https://github.com/colmap/colmap/pull/2885
* Fix input type for automatic stereo fusion on extreme quality setting by @ahojnnes in https://github.com/colmap/colmap/pull/2893
* Make target with all sources optional by @HernandoR in https://github.com/colmap/colmap/pull/2889
* Gracefully handle missing image pose in viewer by @ahojnnes in https://github.com/colmap/colmap/pull/2894
* Update to latest vcpkg release 2024.10.21 by @ahojnnes in https://github.com/colmap/colmap/pull/2908
* Fix conversion from CUDA texture references to objects in SIFT feature extraction by @ahojnnes in https://github.com/colmap/colmap/pull/2911
* Modernized bundle adjustment interface by @ahojnnes in https://github.com/colmap/colmap/pull/2896
* Add missing unit tests for reconstruction alignment functions by @ahojnnes in https://github.com/colmap/colmap/pull/2913
* Do not test EstimateManhattanWorldFrame if LSD is disabled by @sarlinpe in https://github.com/colmap/colmap/pull/2920
* Custom macro for enum to string support by @B1ueber2y in https://github.com/colmap/colmap/pull/2918
* Bind the estimation of Sim3d by @sarlinpe in https://github.com/colmap/colmap/pull/2903
* Initialize glog in custom gmock main function by @ahojnnes in https://github.com/colmap/colmap/pull/2916
* Update ccache for faster windows CI builds by @ahojnnes in https://github.com/colmap/colmap/pull/2922
* Fixes for Windows ARM64 support by @ahojnnes in https://github.com/colmap/colmap/pull/2921
* Move geometry implementation of ``__repr__``, ``__eq__`` overloads to C++ side by @ahojnnes in https://github.com/colmap/colmap/pull/2915
* Consistent interface and various improvements for pycolmap/estimators by @ahojnnes in https://github.com/colmap/colmap/pull/2923
* Exclude DetectLineSegments if LSD is disabled by @sarlinpe in https://github.com/colmap/colmap/pull/2927
* Enable reading 16bit/channel (png) images to grayscale by @Ediolot in https://github.com/colmap/colmap/pull/2924
* Cleanup of remaining pycolmap interfaces by @ahojnnes in https://github.com/colmap/colmap/pull/2925
* Fix affine SIFT feature orientation detection by @ahojnnes in https://github.com/colmap/colmap/pull/2929
* Improvements to deprecated pycolmap members by @sarlinpe in https://github.com/colmap/colmap/pull/2932
* Fix pkgconf installation in Mac CI by @ahojnnes in https://github.com/colmap/colmap/pull/2936
* Make sphinx show the pycolmap constructors by @sarlinpe in https://github.com/colmap/colmap/pull/2935
* Bind synthetic dataset functionality in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/2938
* Cleaner import of C++ symbols by @sarlinpe in https://github.com/colmap/colmap/pull/2933
* Fix pycolmap breakage for Python 3.8 by @sarlinpe in https://github.com/colmap/colmap/pull/2941
* Remove legacy boost test macro by @ahojnnes in https://github.com/colmap/colmap/pull/2940
* Drop support for VS 2019 CI checks by @ahojnnes in https://github.com/colmap/colmap/pull/2943
* Fix CI cache thrashing by inconsistent vcpkg binary caching by @ahojnnes in https://github.com/colmap/colmap/pull/2942
* Introduce gmock Eigen matrix matchers by @ahojnnes in https://github.com/colmap/colmap/pull/2939
* Prevent double initialization of glog for <=0.5 by @sarlinpe in https://github.com/colmap/colmap/pull/2945
* Fixes and refactoring for bundle adjustment covariance estimation by @ahojnnes in https://github.com/colmap/colmap/pull/2788
* Fix duplicate library warnings in linking stage by @ahojnnes in https://github.com/colmap/colmap/pull/2871
* Add test for Python mapping pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/2946
* Add helper script for incremental pycolmap build by @ahojnnes in https://github.com/colmap/colmap/pull/2947
* Fix and consistently define Qt window flags by @ahojnnes in https://github.com/colmap/colmap/pull/2949
* Cross platform usage of monospace font by @ahojnnes in https://github.com/colmap/colmap/pull/2950
* Update to latest pybind11 version by @ahojnnes in https://github.com/colmap/colmap/pull/2952
* Update install instructions for Mac using homebrew by @ahojnnes in https://github.com/colmap/colmap/pull/2953

------------------------
COLMAP 3.10 (07/23/2024)
------------------------
* Add missing "include <memory>" needed for unique_ptr by @Tobias-Fischer in https://github.com/colmap/colmap/pull/2338
* Support decoding multi-byte characters in Python script by @jot-jt in https://github.com/colmap/colmap/pull/2344
* Split Dockerfile in two stages: builder and runtime. by @pablospe in https://github.com/colmap/colmap/pull/2347
* Dockerfile improvements by @pablospe in https://github.com/colmap/colmap/pull/2356
* Update VCPKG commit in Windows CI by @sarlinpe in https://github.com/colmap/colmap/pull/2365
* Simplify the creation of reprojection error cost functions by @sarlinpe in https://github.com/colmap/colmap/pull/2364
* Migrate pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2367
* Rename master -> main in pycolmap CI by @sarlinpe in https://github.com/colmap/colmap/pull/2370
* Bind SetPRNGSeed by @sarlinpe in https://github.com/colmap/colmap/pull/2369
* Encapsulate freeimage usage from pycolmap in colmap bitmap by @ahojnnes in https://github.com/colmap/colmap/pull/2372
* Re-generate version info on git changes by @ahojnnes in https://github.com/colmap/colmap/pull/2373
* Consolidate colmap/pycolmap readmes, updated acknowledgements, etc. by @ahojnnes in https://github.com/colmap/colmap/pull/2374
* Fix crashing pycolmap CI on Windows by @sarlinpe in https://github.com/colmap/colmap/pull/2383
* Add costs for pose graph optimization by @sarlinpe in https://github.com/colmap/colmap/pull/2378
* Switch to exception checks - v2 by @sarlinpe in https://github.com/colmap/colmap/pull/2376
* Cleanup checks in pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2388
* Add RigReprojErrorConstantRigCostFunction by @sarlinpe in https://github.com/colmap/colmap/pull/2377
* Add cost functions to pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2393
* Fix warning C4722 by @whuaegeanse in https://github.com/colmap/colmap/pull/2391
* Move reconstruction IO utils to a new file by @sarlinpe in https://github.com/colmap/colmap/pull/2399
* Acquire the GIL before returning None by @sarlinpe in https://github.com/colmap/colmap/pull/2400
* Disentangle the controller from threading and integrate the new logic into IncrementalMapperController by @B1ueber2y in https://github.com/colmap/colmap/pull/2392
* Simplify the low-level triangulation API by @sarlinpe in https://github.com/colmap/colmap/pull/2402
* Initialize glog in pycolmap only if not already done by @sarlinpe in https://github.com/colmap/colmap/pull/2405
* Adapt all the controllers to inherit from BaseController rather than Thread (except for feature extraction and matching) by @B1ueber2y in https://github.com/colmap/colmap/pull/2406
* Update path to models.h in database docs by @diffner in https://github.com/colmap/colmap/pull/2412
* Migrate Ubuntu CI pipelines from ADO to Github by @ahojnnes in https://github.com/colmap/colmap/pull/2411
* Build wheels for Python 3.12 by @sarlinpe in https://github.com/colmap/colmap/pull/2416
* Migrate MacOS CI pipeline from ADO to Github by @ahojnnes in https://github.com/colmap/colmap/pull/2418
* Improve bindings of Database by @sarlinpe in https://github.com/colmap/colmap/pull/2413
* Migrate Windows CI pipeline from ADO to Github by @ahojnnes in https://github.com/colmap/colmap/pull/2419
* Reduce logging during incremental mapping by @sarlinpe in https://github.com/colmap/colmap/pull/2420
* Migrate Docker CI from ADO to Github, remove ADO pipelines by @ahojnnes in https://github.com/colmap/colmap/pull/2422
* Simplify IncrementalMapperController by @sarlinpe in https://github.com/colmap/colmap/pull/2421
* Fix for glog 0.7.0 by @sarlinpe in https://github.com/colmap/colmap/pull/2428
* Fix typo by @whuaegeanse in https://github.com/colmap/colmap/pull/2430
* Fix RunMapper by @whuaegeanse in https://github.com/colmap/colmap/pull/2431
* Do triangulation in the IncrementalMapperController by @sarlinpe in https://github.com/colmap/colmap/pull/2429
* Only push a new Docker image on release by @sarlinpe in https://github.com/colmap/colmap/pull/2436
* model aligner with type "custom" does not update reconstruction by @lpanaf in https://github.com/colmap/colmap/pull/2433
* Define vcpkg manifest by @ahojnnes in https://github.com/colmap/colmap/pull/2426
* Fix ordering of keyword arguments in pycolmap.rig_absolute_pose_estimation by @sarlinpe in https://github.com/colmap/colmap/pull/2440
* Reduce the build time of pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2443
* Improve bindings of CorrespondenceGraph by @sarlinpe in https://github.com/colmap/colmap/pull/2476
* Bind Reconstruction::{SetUp,ImagePairStats} by @sarlinpe in https://github.com/colmap/colmap/pull/2477
* Add bindings for substeps of incremental mapper with a python example by @B1ueber2y in https://github.com/colmap/colmap/pull/2478
* Debug crashing VCPKG-based CI builds by @sarlinpe in https://github.com/colmap/colmap/pull/2508
* Upgrade to pybind11 v2.12. Fix bind_map and reconstruction.points3D by @B1ueber2y in https://github.com/colmap/colmap/pull/2502
* Minor fix on logging for the pycolmap customized runner by @B1ueber2y in https://github.com/colmap/colmap/pull/2503
* Fix missing public link deps, break circular feature-scene dependency by @ahojnnes in https://github.com/colmap/colmap/pull/2497
* Avoid duplicate image allocation during undistortion by @fseegraeber in https://github.com/colmap/colmap/pull/2520
* Fix reconstruction.points3D by @B1ueber2y in https://github.com/colmap/colmap/pull/2523
* Fix 'std::out_of_range' error when using hierarchical_mapper by @GrayMask in https://github.com/colmap/colmap/pull/2526
* Fix binding for std::vector<Point2D> by @sarlinpe in https://github.com/colmap/colmap/pull/2533
* Include pybind eigen header by @tmnku in https://github.com/colmap/colmap/pull/2510
* Fix pycolmap python pipeline for multiple models by @B1ueber2y in https://github.com/colmap/colmap/pull/2531
* make two view geometry writable by @tmnku in https://github.com/colmap/colmap/pull/2540
* Customized python interface for bundle adjustment by @B1ueber2y in https://github.com/colmap/colmap/pull/2509
* Fix typos by @MaximSmolskiy in https://github.com/colmap/colmap/pull/2553
* Implicitly convert iterator to ListPoint2D by @sarlinpe in https://github.com/colmap/colmap/pull/2558
* Fix model_cropper not resetting image.num_points3D of cropped_rec by @ArneSchulzTUBS in https://github.com/colmap/colmap/pull/2557
* Split pair generation and matching by @sarlinpe in https://github.com/colmap/colmap/pull/2573
* Add ObservationManager by @sarlinpe in https://github.com/colmap/colmap/pull/2575
* Log info about created feature extractor/matcher types by @ahojnnes in https://github.com/colmap/colmap/pull/2579
* LSD: making the AGPL dependency optional by @zap150 in https://github.com/colmap/colmap/pull/2578
* Disable LSD when building pycolmap wheels by @sarlinpe in https://github.com/colmap/colmap/pull/2580
* Synthesize full two-view geometry and raw matches by @ahojnnes in https://github.com/colmap/colmap/pull/2595
* Support Adjoint matrix computation for Rigid3d by @B1ueber2y in https://github.com/colmap/colmap/pull/2598
* Fix cost functions for pose graph optimization by @B1ueber2y in https://github.com/colmap/colmap/pull/2601
* Fix python bundle adjustment example with pyceres by @B1ueber2y in https://github.com/colmap/colmap/pull/2606
* Faster homography estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2603
* Add function to find real cubic polynomial roots by @ahojnnes in https://github.com/colmap/colmap/pull/2609
* Align with the convention of ceres doc on SqrtInformation. by @B1ueber2y in https://github.com/colmap/colmap/pull/2611
* Faster 7-point fundamental matrix estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2612
* Faster 8-point fundamental matrix estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2613
* Covariance estimation for bundle adjustment with Schur elimination by @B1ueber2y in https://github.com/colmap/colmap/pull/2610
* Mac OS improvements by @BSVogler in https://github.com/colmap/colmap/pull/2622
* Update cibuildwheel to 2.19.2 by @ahojnnes in https://github.com/colmap/colmap/pull/2632
* Faster essential matrix estimators by @ahojnnes in https://github.com/colmap/colmap/pull/2618
* Remove CamFromWorldPrior and create LocationPrior by @sarlinpe in https://github.com/colmap/colmap/pull/2620
* Add option to disable uninstall target, restore CI pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/2634
* Faster covariance computation for small blocks by @B1ueber2y in https://github.com/colmap/colmap/pull/2633
* Fix optimal point algorithm by @morrishelle in https://github.com/colmap/colmap/pull/2640
* Add shell script helper for profiling by @ahojnnes in https://github.com/colmap/colmap/pull/2635
* Declare PosePrior::IsValid as const by @ahojnnes in https://github.com/colmap/colmap/pull/2653
* Add CI build for Windows CUDA by @ahojnnes in https://github.com/colmap/colmap/pull/2651
* Publish windows binaries from CI by @ahojnnes in https://github.com/colmap/colmap/pull/2663

-------------------------
COLMAP 3.9.1 (01/08/2024)
-------------------------
* Version 3.9 changelog by @ahojnnes in https://github.com/colmap/colmap/pull/2325
* Fully encapsulate freeimage in bitmap library (#2332) by @ahojnnes in https://github.com/colmap/colmap/pull/2334

-----------------------
COLMAP 3.9 (01/06/2024)
-----------------------
* clang format all code and require clang-format-14 by @ahojnnes in https://github.com/colmap/colmap/pull/1785
* Fix compilation for vcpkg windows build by @ahojnnes in https://github.com/colmap/colmap/pull/1791
* Increment version number to 3.9 by @ahojnnes in https://github.com/colmap/colmap/pull/1794
* Remove unnecessary /arch:sse2 flag for MSVC by @ahojnnes in https://github.com/colmap/colmap/pull/1798
* Updated faq.rst by @CGCooke in https://github.com/colmap/colmap/pull/1801
* Fixed mistake in code comment for OpenCV Fisheye camera by @CGCooke in https://github.com/colmap/colmap/pull/1802
* Replace deprecated cudaThreadSynchronize with cudaDeviceSynchronize by @ahojnnes in https://github.com/colmap/colmap/pull/1806
* Replace deprecated Cuda texture references with texture objects by @ahojnnes in https://github.com/colmap/colmap/pull/1809
* Remove unused SIFT GPU cuda texture reference by @ahojnnes in https://github.com/colmap/colmap/pull/1823
* Upgrade SiftGPU to use CUDA texture objects by @ahojnnes in https://github.com/colmap/colmap/pull/1838
* Remove PBA as bundle adjustment backend to support CUDA 12+ by @ahojnnes in https://github.com/colmap/colmap/pull/1840
* Replace deprecated CUDA sature function call by @ahojnnes in https://github.com/colmap/colmap/pull/1841
* Avoid unnecessary mallocs during sampling by @ahojnnes in https://github.com/colmap/colmap/pull/1842
* Cleaned up docker readme and scripts by @ahojnnes in https://github.com/colmap/colmap/pull/1852
* add "Shared intrinsics per sub-folder" checkbox to automatic reconstruction window by @kenshi84 in https://github.com/colmap/colmap/pull/1853
* Update vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/1925
* Log the name of the file that causes Mat::Read() to checkfail by @SomeAlphabetGuy in https://github.com/colmap/colmap/pull/1923
* check Z_index correctly in ReadPly by @countywest in https://github.com/colmap/colmap/pull/1896
* Don't re-open files when reading and writing matrices by @SomeAlphabetGuy in https://github.com/colmap/colmap/pull/1926
* Update vcpkg to latest commit by @ahojnnes in https://github.com/colmap/colmap/pull/1948
* Remove unnecessary custom Eigen aligned allocator macros by @ahojnnes in https://github.com/colmap/colmap/pull/1947
* Prefix internal sources/includes with colmap by @ahojnnes in https://github.com/colmap/colmap/pull/1949
* Simplify clang-format config and sort includes by @ahojnnes in https://github.com/colmap/colmap/pull/1950
* Handle possible overflow in median function by @ahojnnes in https://github.com/colmap/colmap/pull/1951
* Run ASan pipeline under Ubuntu 22.04 by @ahojnnes in https://github.com/colmap/colmap/pull/1952
* Fix Ceres version test by @drkoller in https://github.com/colmap/colmap/pull/1954
* Fix deprecation warning for Qt font metrics width by @ahojnnes in https://github.com/colmap/colmap/pull/1958
* Setup clang-tidy and enable perf warnings by @ahojnnes in https://github.com/colmap/colmap/pull/1959
* VCPKG binary caching for windows CI by @ahojnnes in https://github.com/colmap/colmap/pull/1957
* Cosmetics for VS dev shell script by @ahojnnes in https://github.com/colmap/colmap/pull/1965
* Enable clang-tidy concurrency checks by @ahojnnes in https://github.com/colmap/colmap/pull/1967
* [Bug] fix finding shared points3D in FindLocalBundle by @wesleyliwei in https://github.com/colmap/colmap/pull/1963
* Enable compiler caching in CI by @ahojnnes in https://github.com/colmap/colmap/pull/1972
* Set number of features for different quality levels by @ahojnnes in https://github.com/colmap/colmap/pull/1975
* Specify parameter name using inline comment by @ahojnnes in https://github.com/colmap/colmap/pull/1976
* Fix Windows CCache by @ahojnnes in https://github.com/colmap/colmap/pull/1977
* Add e2e tests in CI pipeline using ETH3D datasets by @ahojnnes in https://github.com/colmap/colmap/pull/1397
* [feature] print verbose information for model analyzer by @wesleyliwei in https://github.com/colmap/colmap/pull/1978
* Add a missing include to compile with gcc13 by @EstebanDugueperoux2 in https://github.com/colmap/colmap/pull/1984
* Speed up snapshot construct in RigBundleAdjuster by @wesleyliwei in https://github.com/colmap/colmap/pull/1988
* Update outdated docker cuda image tag by @ahojnnes in https://github.com/colmap/colmap/pull/1992
* Add boulders ETH3D dataset to CI E2E tests by @ahojnnes in https://github.com/colmap/colmap/pull/1991
* Update executable paths in documentation by @ahojnnes in https://github.com/colmap/colmap/pull/1993
* Avoid unnecessary copy in ExtractTopScaleFeatures by @ahojnnes in https://github.com/colmap/colmap/pull/1994
* Move related code under new image library folder by @ahojnnes in https://github.com/colmap/colmap/pull/1995
* Move related code under new camera folder by @ahojnnes in https://github.com/colmap/colmap/pull/1996
* Added a virtual destructor to Sampler by @SomeAlphabetGuy in https://github.com/colmap/colmap/pull/2000
* Add a few more clang-tidy checks by @ahojnnes in https://github.com/colmap/colmap/pull/2001
* Move related code to new geometry module by @ahojnnes in https://github.com/colmap/colmap/pull/2006
* Use #pragma once as include guard by @ahojnnes in https://github.com/colmap/colmap/pull/2007
* Add bugprone-* clang-tidy checks by @ahojnnes in https://github.com/colmap/colmap/pull/2010
* Avoid const params in declarations by @ahojnnes in https://github.com/colmap/colmap/pull/2011
* Set and require C++14 by @ahojnnes in https://github.com/colmap/colmap/pull/2012
* Cleanup math functions that are now part of eigen/stdlib by @ahojnnes in https://github.com/colmap/colmap/pull/2013
* Add clang-analyzer checks by @ahojnnes in https://github.com/colmap/colmap/pull/2014
* Replace CMake provided find_package scripts and modern CMake targets by @ahojnnes in https://github.com/colmap/colmap/pull/2016
* Switch from Boost unit tests to Gtest by @ahojnnes in https://github.com/colmap/colmap/pull/2017
* Fix ccache restore keys in pipeline caching by @ahojnnes in https://github.com/colmap/colmap/pull/2018
* Add missing cacheHitVar to fix ccache by @ahojnnes in https://github.com/colmap/colmap/pull/2020
* Add missing Boost::graph import by @sarlinpe in https://github.com/colmap/colmap/pull/2021
* Compressed/flattened correspondence graph for faster triangulation / less memory by @ahojnnes in https://github.com/colmap/colmap/pull/2019
* Fix window ccache key by @ahojnnes in https://github.com/colmap/colmap/pull/2024
* Consistently use shared_ptr for shared pointers for SFM objects by @ahojnnes in https://github.com/colmap/colmap/pull/2023
* Remove check on Qt version by @sarlinpe in https://github.com/colmap/colmap/pull/2022
* Synthetics for E2E incremental mapper tests by @ahojnnes in https://github.com/colmap/colmap/pull/2025
* New math module by @ahojnnes in https://github.com/colmap/colmap/pull/2028
* Simplify similarity transform and more tests by @ahojnnes in https://github.com/colmap/colmap/pull/2030
* Extract reconstruction alignment functions into new file by @ahojnnes in https://github.com/colmap/colmap/pull/2032
* Add E2E hierarchical mapper tests by @ahojnnes in https://github.com/colmap/colmap/pull/2033
* Rename SimilarityTransform3 to Sim3d by @ahojnnes in https://github.com/colmap/colmap/pull/2034
* Add Rigid3d transform class by @ahojnnes in https://github.com/colmap/colmap/pull/2035
* Consolidate and simplify Rigid3d and Sim3d by @ahojnnes in https://github.com/colmap/colmap/pull/2037
* Some small improvements/cleanup for rigid3d/sim3d usage by @ahojnnes in https://github.com/colmap/colmap/pull/2041
* CamFromWorld replaces qvec/tvec by @ahojnnes in https://github.com/colmap/colmap/pull/2039
* Retry download of ETH3D datasets by @ahojnnes in https://github.com/colmap/colmap/pull/2043
* WorldToImage becomes CamToImg by @ahojnnes in https://github.com/colmap/colmap/pull/2044
* Camera models operate on camera rays by @ahojnnes in https://github.com/colmap/colmap/pull/2045
* Ignore directory .vs by @whuaegeanse in https://github.com/colmap/colmap/pull/2046
* Use the reference of Rigid3d to reduce memory consumption by @whuaegeanse in https://github.com/colmap/colmap/pull/2047
* Inline point to image projection by @ahojnnes in https://github.com/colmap/colmap/pull/2050
* Point2D becomes simpler pure data struct by @ahojnnes in https://github.com/colmap/colmap/pull/2051
* Use Eigen math for estimator utils by @ahojnnes in https://github.com/colmap/colmap/pull/2052
* Move cost functions under geometry module and rename by @ahojnnes in https://github.com/colmap/colmap/pull/2053
* Bundle adjuster is an estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2054
* Remaining base targets move to new scene module by @ahojnnes in https://github.com/colmap/colmap/pull/2055
* Vote and verify improvements/speedup by @ahojnnes in https://github.com/colmap/colmap/pull/2056
* Generate version info in .cc file to reduce number of recompilations by @ahojnnes in https://github.com/colmap/colmap/pull/2057
* Option manager moves to controllers to disentangle circular deps by @ahojnnes in https://github.com/colmap/colmap/pull/2058
* Granular CMake modules and build targets by @ahojnnes in https://github.com/colmap/colmap/pull/2059
* Fix docker build by @ahojnnes in https://github.com/colmap/colmap/pull/2069
* Remove warnings about duplicated marco NOMINMAX by @whuaegeanse in https://github.com/colmap/colmap/pull/2067
* lib folder becomes thirdparty folder by @ahojnnes in https://github.com/colmap/colmap/pull/2068
* Remove unnecessary checks in image pair conversion by @ahojnnes in https://github.com/colmap/colmap/pull/2074
* Replace flaky ETH3D terrace with courtyard dataset by @ahojnnes in https://github.com/colmap/colmap/pull/2075
* Synthesize chained match graph for more mapper tests by @ahojnnes in https://github.com/colmap/colmap/pull/2076
* Introduce abstract feature extractor by @ahojnnes in https://github.com/colmap/colmap/pull/2077
* Avoid unnecessary data copies in feature conversion utils by @ahojnnes in https://github.com/colmap/colmap/pull/2078
* Abstract feature matcher by @ahojnnes in https://github.com/colmap/colmap/pull/2082
* Encapsulate feature matching controller/worker implementations by @ahojnnes in https://github.com/colmap/colmap/pull/2085
* Some cosmetics for util/feature types by @ahojnnes in https://github.com/colmap/colmap/pull/2084
* Use std:: when cmath included by @whuaegeanse in https://github.com/colmap/colmap/pull/2081
* Encapsulate feature extraction controller/worker implementations by @ahojnnes in https://github.com/colmap/colmap/pull/2086
* Reenable VS2022 CI pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/1689
* Consistent transform convention for CenterAndNormalizeImagePoints by @ahojnnes in https://github.com/colmap/colmap/pull/2092
* Retire Mac 11 CI build by @ahojnnes in https://github.com/colmap/colmap/pull/2094
* Add ReprojErrorConstantPoint3DCostFunction to speed up the RefineAbsolutePose function by @whuaegeanse in https://github.com/colmap/colmap/pull/2089
* Numeric differentiation of camera model using partial piv LU by @ahojnnes in https://github.com/colmap/colmap/pull/2100
* cmake: add testing.cc to colmap_util only if TESTS_ENABLED=ON by @NeroBurner in https://github.com/colmap/colmap/pull/2102
* Set CUDA_STANDARD to 14 by @ahojnnes in https://github.com/colmap/colmap/pull/2108
* Transform back to existing images positions after mapper processing if set fixed by @ferreram in https://github.com/colmap/colmap/pull/2095
* Update documentation with new branch policy by @ahojnnes in https://github.com/colmap/colmap/pull/2110
* Update CMake find dependencies for vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/2116
* Decouple SIFT match from two view geometry options by @ahojnnes in https://github.com/colmap/colmap/pull/2118
* Fix docker build by @vnmsklnk in https://github.com/colmap/colmap/pull/2122
* Trigger build pipeline on main branch by @ahojnnes in https://github.com/colmap/colmap/pull/2123
* Update Linux install documentation with new branch policy by @joshuaoreilly in https://github.com/colmap/colmap/pull/2126
* Fix link in camera model documentation by @CFretter in https://github.com/colmap/colmap/pull/2152
* [Bugfix] Fix GUI_ENABLED=OFF and skip SiftGPU if no GUI and no CUDA by @sarlinpe in https://github.com/colmap/colmap/pull/2151
* [Bugfix] Properly handle CGAL_ENABLED by @sarlinpe in https://github.com/colmap/colmap/pull/2149
* Refinement of intrinsics in the point_triangulator by @tsattler in https://github.com/colmap/colmap/pull/2144
* Bugfix in handling COLMAP_GPU_ENABLED by @sarlinpe in https://github.com/colmap/colmap/pull/2163
* Expose exe as libs by @sarlinpe in https://github.com/colmap/colmap/pull/2165
* Add Sim3d::FromMatrix by @sarlinpe in https://github.com/colmap/colmap/pull/2147
* Check code format in CI by @ahojnnes in https://github.com/colmap/colmap/pull/2171
* Clean up dependencies by @sarlinpe in https://github.com/colmap/colmap/pull/2173
* Move tests into anonymous namespaces by @ahojnnes in https://github.com/colmap/colmap/pull/2175
* Fix glew/qopengl conflict warning by @ahojnnes in https://github.com/colmap/colmap/pull/2176
* Update documentation with new link to GitHub discussions by @ahojnnes in https://github.com/colmap/colmap/pull/2177
* Restore GLEW include by @sarlinpe in https://github.com/colmap/colmap/pull/2178
* Align reconstructions via shared 3D points by @sarlinpe in https://github.com/colmap/colmap/pull/2169
* Add clang-tidy-cachein CI by @ahojnnes in https://github.com/colmap/colmap/pull/2182
* Disable GUI build in one CI config by @ahojnnes in https://github.com/colmap/colmap/pull/2181
* Show verbose ccache stats by @ahojnnes in https://github.com/colmap/colmap/pull/2183
* Add EstimateGeneralizedAbsolutePose by @sarlinpe in https://github.com/colmap/colmap/pull/2174
* Fix bug in ReconstructionManagerWidget::Update by @whuaegeanse in https://github.com/colmap/colmap/pull/2186
* Fix missing retrieval dependency by @ahojnnes in https://github.com/colmap/colmap/pull/2189
* Removing clustering_options and mapper_options in Hierarchical Mapper Controller by @Serenitysmk in https://github.com/colmap/colmap/pull/2193
* Publish docker image to docker hub by @ahojnnes in https://github.com/colmap/colmap/pull/2195
* Fix Cuda architecture in docker build by @ahojnnes in https://github.com/colmap/colmap/pull/2196
* Fix all-major cuda arch missing in CMake < 3.23 by @ahojnnes in https://github.com/colmap/colmap/pull/2197
* Update triangulation.cc by @RayShark0605 in https://github.com/colmap/colmap/pull/2205
* Update author and acknowledgements by @ahojnnes in https://github.com/colmap/colmap/pull/2207
* Code formatting for Python by @ahojnnes in https://github.com/colmap/colmap/pull/2208
* Retire outdated build script by @ahojnnes in https://github.com/colmap/colmap/pull/2217
* Remove mention of deprecated build script by @sarlinpe in https://github.com/colmap/colmap/pull/2220
* Improve word spelling by @zchrissirhcz in https://github.com/colmap/colmap/pull/2235
* Stack allocate camera param idx arrays by @ahojnnes in https://github.com/colmap/colmap/pull/2234
* fix: typo in colmap/src/colmap/ui/project_widget.cc by @varundhand in https://github.com/colmap/colmap/pull/2241
* Update reconstruction.cc by @RayShark0605 in https://github.com/colmap/colmap/pull/2238
* Update to Docker CUDA 12.2.2 by @ahojnnes in https://github.com/colmap/colmap/pull/2244
* Stop setting C++ standard flags manually by @AdrianBunk in https://github.com/colmap/colmap/pull/2251
* Setting clear_points to true per default in point_triangulator by @tsattler in https://github.com/colmap/colmap/pull/2252
* Update cameras.rst to fix link to code by @tsattler in https://github.com/colmap/colmap/pull/2246
* Fix matching of imported features without descriptors by @ahojnnes in https://github.com/colmap/colmap/pull/2269
* Consistent versioning between documentation and code by @ahojnnes in https://github.com/colmap/colmap/pull/2275
* Reduce mallocs for RANSAC estimator models by @ahojnnes in https://github.com/colmap/colmap/pull/2283
* Migrate to glog logging by @ahojnnes in https://github.com/colmap/colmap/pull/2172
* Turn Point3D into simple data struct by @ahojnnes in https://github.com/colmap/colmap/pull/2285
* Camera becomes simple data struct by @ahojnnes in https://github.com/colmap/colmap/pull/2286
* Recover custom Eigen std::vector allocator for Eigen <3.4 support by @ahojnnes in https://github.com/colmap/colmap/pull/2293
* Replace result_of with invoke_result_t by @sarlinpe in https://github.com/colmap/colmap/pull/2300
* Allow getters FocalLength{X,Y} for isotropic models by @sarlinpe in https://github.com/colmap/colmap/pull/2301
* Add missing Boost targets and cleanup includes by @sarlinpe in https://github.com/colmap/colmap/pull/2304
* Expose IncrementalMapperOptions::{mapper,triangulation} by @sarlinpe in https://github.com/colmap/colmap/pull/2308
* Update install instructions for Mac by @Dawars in https://github.com/colmap/colmap/pull/2310
* Remove unused ceres reference in doc by @ahojnnes in https://github.com/colmap/colmap/pull/2315
* Fix typo by @whuaegeanse in https://github.com/colmap/colmap/pull/2317
* Stable version 3.9 release by @ahojnnes in https://github.com/colmap/colmap/pull/2319

-----------------------
COLMAP 3.8 (01/31/2023)
-----------------------
* Updating geo-registration doc. by @ferreram in https://github.com/colmap/colmap/pull/1410
* Adding user-specified option for reconstructing purely planar scene. … by @ferreram in https://github.com/colmap/colmap/pull/1408
* Only apply sqlite vacuum command when elements are deleted from the database. by @ferreram in https://github.com/colmap/colmap/pull/1414
* Replace Graclus with Metis dependency by @ahojnnes in https://github.com/colmap/colmap/pull/1422
* Update ceres download URL in build script by @whuaegeanse in https://github.com/colmap/colmap/pull/1430
* Fix type errors when building colmap with build.py in windows by @whuaegeanse in https://github.com/colmap/colmap/pull/1440
* Fix bug in the computation of the statistics Global/Local BA by @whuaegeanse in https://github.com/colmap/colmap/pull/1449
* Add RefineGeneralizedAbsolutePose and covariance estimation by @Skydes in https://github.com/colmap/colmap/pull/1464
* Update docker image definition by @ahojnnes in https://github.com/colmap/colmap/pull/1478
* Upgrade deprecated ceres parameterizations to manifolds by @ahojnnes in https://github.com/colmap/colmap/pull/1477
* Use masks for stereo fusion on automatic reconstruction by @ibrarmalik in https://github.com/colmap/colmap/pull/1488
* fix random seed set failed from external interface by @WZG3661 in https://github.com/colmap/colmap/pull/1498
* Replace deprecated Eigen nonZeros() call for most recent Eigen versions. by @nackjaylor in https://github.com/colmap/colmap/pull/1494
* Fix ceres-solver folder name by @f-fl0 in https://github.com/colmap/colmap/pull/1501
* Improved convergence criterion for XYZ to ELL conversion by @ahojnnes in https://github.com/colmap/colmap/pull/1505
* Fix bug in the function SetPtr of Bitmap by @whuaegeanse in https://github.com/colmap/colmap/pull/1525
* Avoid the calling of copy constructor/assignment by @whuaegeanse in https://github.com/colmap/colmap/pull/1524
* Avoid calling copy constructors of  FeatureKeypoints and FeatureDescriptors by @whuaegeanse in https://github.com/colmap/colmap/pull/1540
* Initialize freeimage if statically linked by @ahojnnes in https://github.com/colmap/colmap/pull/1549
* Avoid hard crash if Jacobian matrix is rank deficient by @mihaidusmanu in https://github.com/colmap/colmap/pull/1557
* visualize_model.py: added FULL_OPENCV model by @soeroesg in https://github.com/colmap/colmap/pull/1552
* Update vcpkg version to fix CI pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/1568
* Replace deprecated Mac OS 10.15 with Mac OS 12 build in CI by @ahojnnes in https://github.com/colmap/colmap/pull/1569
* Fix inconsistent between the actual executed image reader option and the saved project.ini file by @XuChengHUST in https://github.com/colmap/colmap/pull/1564
* checkout the expected version of ceres solver by @scott-vsi in https://github.com/colmap/colmap/pull/1576
* use default qt5 brew install directory #1573 by @catapulta in https://github.com/colmap/colmap/pull/1574
* Fix image undistortion with nested image folders by @ahojnnes in https://github.com/colmap/colmap/pull/1606
* Fix source file permissions by @ahojnnes in https://github.com/colmap/colmap/pull/1607
* Fixed the collection of arguments in colmap.bat by @tdegraaff in https://github.com/colmap/colmap/pull/1121
* Add OpenMP to COLMAP_EXTERNAL_LIBRARIES if enabled by @logchan in https://github.com/colmap/colmap/pull/1632
* Fix output tile reconstructions are the same as the input reconstruction in `RunModelSplitter` (#1513) by @Serenitysmk in https://github.com/colmap/colmap/pull/1531
* add `libmetis-dev` to solve `METIS_INCLUDE_DIRS`. by @FavorMylikes in https://github.com/colmap/colmap/pull/1672
* Update install.rst by @tomer-grin in https://github.com/colmap/colmap/pull/1671
* Update freeimage links. by @Yulv-git in https://github.com/colmap/colmap/pull/1675
* fix small typo by @skal65535 in https://github.com/colmap/colmap/pull/1668
* Update build.py with new glew link by @aghand0ur in https://github.com/colmap/colmap/pull/1658
* Add use_cache in fusion options GUI by @hrflr in https://github.com/colmap/colmap/pull/1655
* Add CI pipeline for Ubuntu 22.04 by @ahojnnes in https://github.com/colmap/colmap/pull/1688
* Avoid unnecessary copies of data by @ahojnnes in https://github.com/colmap/colmap/pull/1691
* Reduce memory allocations in correspondence graph search by @ahojnnes in https://github.com/colmap/colmap/pull/1692
* Use FindCUDAToolkit when available. by @hanseuljun in https://github.com/colmap/colmap/pull/1693
* Fixed a crash due to inconsistent undistortion by @SomeAlphabetGuy in https://github.com/colmap/colmap/pull/1698
* Add CUDA Ubuntu 22.04 CI build by @ahojnnes in https://github.com/colmap/colmap/pull/1705
* Delete the redundancy install of libmetis-dev by @thomas-graphopti in https://github.com/colmap/colmap/pull/1721
* Fix broken loading of image masks on macOS by @buesma in https://github.com/colmap/colmap/pull/1639
* Update install instructions with latest hints and known issues by @ahojnnes in https://github.com/colmap/colmap/pull/1736
* Modernize smart pointer initialization, fix alloc/dealloc mismatch by @ahojnnes in https://github.com/colmap/colmap/pull/1737
* Fix typo in cli.rst by @ojhernandez in https://github.com/colmap/colmap/pull/1747
* Fix inconsistent image resizing between CPU/GPU implementations of SIFT by @Yzhbuaa in https://github.com/colmap/colmap/pull/1642
* Reduce number of SIFT test features to make tests run under WSL by @ahojnnes in https://github.com/colmap/colmap/pull/1748
* Tag documentation version with dev by @ahojnnes in https://github.com/colmap/colmap/pull/1749
* Update copyright to 2023 by @ahojnnes in https://github.com/colmap/colmap/pull/1750
* Fix max image dimension for positive first_octave by @ahojnnes in https://github.com/colmap/colmap/pull/1751
* Fix SIFT GPU match creation by @ahojnnes in https://github.com/colmap/colmap/pull/1757
* Fix SIFT tests for OpenGL by @ahojnnes in https://github.com/colmap/colmap/pull/1762
* Suppress CUDA stack size warning for ptxas by @ahojnnes in https://github.com/colmap/colmap/pull/1770
* Simplify CUDA CMake configuration by @ahojnnes in https://github.com/colmap/colmap/pull/1776
* Fixes for CUDA compilation by @ahojnnes in https://github.com/colmap/colmap/pull/1777
* Improvements to dockerfile and build pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/1778
* Explicitly require CMAKE_CUDA_ARCHITECTURES to be defined by @ahojnnes in https://github.com/colmap/colmap/pull/1781
* Depend on system installed FLANN by @ahojnnes in https://github.com/colmap/colmap/pull/1782
* Option to store relative pose between two cameras in database by @yanxke in https://github.com/colmap/colmap/pull/1774
* Depend on system installed SQLite3 by @ahojnnes in https://github.com/colmap/colmap/pull/1783

-----------------------
COLMAP 3.7 (01/26/2022)
-----------------------
* Allow to save fused point cloud in colmap format when using command line by @boitumeloruf in https://github.com/colmap/colmap/pull/799
* Fix typos in image.h by @Pascal-So in https://github.com/colmap/colmap/pull/936
* Fix for EPnP estimator by @vlarsson in https://github.com/colmap/colmap/pull/943
* Visualize models using Python in Open3D by @ahojnnes in https://github.com/colmap/colmap/pull/948
* Update tutorial.rst by @ignacio-rocco in https://github.com/colmap/colmap/pull/953
* 8 point algorithm internal contraint fix by @mihaidusmanu in https://github.com/colmap/colmap/pull/982
* Python script for writing depth/normal arrays by @SBCV in https://github.com/colmap/colmap/pull/957
* BuildImageModel: use std::vector instead of numbered arguments by @Pascal-So in https://github.com/colmap/colmap/pull/949
* Fix bugs of sift feature matching by @whuaegeanse in https://github.com/colmap/colmap/pull/985
* script for modifying fused results by @SBCV in https://github.com/colmap/colmap/pull/984
* fix camera model query by @Pascal-So in https://github.com/colmap/colmap/pull/997
* fixed small bug in visualize_model.py by @sniklaus in https://github.com/colmap/colmap/pull/1007
* Update .travis.yml by @srinivas32 in https://github.com/colmap/colmap/pull/989
* Ensure DecomposeHomographyMatrix() always returns rotations by @daithimaco in https://github.com/colmap/colmap/pull/1040
* Remove deprecated qt foreach by @UncleGene in https://github.com/colmap/colmap/pull/1039
* Fix AMD/Windows GUI visualization bug by @drkoller in https://github.com/colmap/colmap/pull/1079
* include colmap_cuda in COLMAP_LIBRARIES when compiled with cuda by @ClementPinard in https://github.com/colmap/colmap/pull/1084
* Fix runtime crash when sparsesuite is missing from ceres by @anmatako in https://github.com/colmap/colmap/pull/1115
* Store relative poses in two_view_geometry table by @Ahmed-Salama in https://github.com/colmap/colmap/pull/1103
* search src images for patch_match from all set, not only referenced subset by @DaniilSNikulin in https://github.com/colmap/colmap/pull/1038
* Replace Travis CI with Azure Pipelines for Linux/Mac builds by @ahojnnes in https://github.com/colmap/colmap/pull/1119
* Allow ReadPly to handle double precision files by @anmatako in https://github.com/colmap/colmap/pull/1131
* Update GPSTransform calculations to improve accuracy by @anmatako in https://github.com/colmap/colmap/pull/1132
* Add scale template flag in SimilarityTransform3::Estimate by @anmatako in https://github.com/colmap/colmap/pull/1133
* Add CopyFile utility that can copy or hard/soft-link files by @anmatako in https://github.com/colmap/colmap/pull/1134
* Expose BA options in IncrementalMapper by @anmatako in https://github.com/colmap/colmap/pull/1139
* Allow configurable paths for mvs::Model by @anmatako in https://github.com/colmap/colmap/pull/1141
* Change ReconstructionMaanger to write larger recons first by @anmatako in https://github.com/colmap/colmap/pull/1137
* Setup Azure pipelines for Windows build by @ahojnnes in https://github.com/colmap/colmap/pull/1150
* Add fixed extrinsics in rig config by @anmatako in https://github.com/colmap/colmap/pull/1144
* Allow custom config and missing dependencies for patch-match by @anmatako in https://github.com/colmap/colmap/pull/1142
* Update print statements for Python 3 compatibility by @UncleGene in https://github.com/colmap/colmap/pull/1126
* Allow cleanup of SQLite tables using new database_cleaner command by @anmatako in https://github.com/colmap/colmap/pull/1136
* Extend SceneClustering to support non-hierarchical (flat) clusters by @anmatako in https://github.com/colmap/colmap/pull/1140
* Support more formats in model_converter by @anmatako in https://github.com/colmap/colmap/pull/1147
* Fix Mac 10.15 build due to changed Qt5 path by @ahojnnes in https://github.com/colmap/colmap/pull/1157
* Fix bug in ReadCameraRigConfig when reading extrinsics by @anmatako in https://github.com/colmap/colmap/pull/1158
* Add utility to compare poses between two sparse models by @ahojnnes in https://github.com/colmap/colmap/pull/1159
* Modularize executable main functions into separate sources by @ahojnnes in https://github.com/colmap/colmap/pull/1160
* Fix unnecessary copies in for range loops by @ahojnnes in https://github.com/colmap/colmap/pull/1162
* Add script to clang-format all source code by @ahojnnes in https://github.com/colmap/colmap/pull/1163
* Add back new options and formats for model_converter by @anmatako in https://github.com/colmap/colmap/pull/1164
* ImageReder new option and bug fix in GPS priors by @anmatako in https://github.com/colmap/colmap/pull/1146
* Parallelize stereo fusion; needs pre-loading of entire workspace by @anmatako in https://github.com/colmap/colmap/pull/1148
* Refactoring and new functionality in Reconstruction class by @anmatako in https://github.com/colmap/colmap/pull/1169
* Add new functionality in image_undistorter by @anmatako in https://github.com/colmap/colmap/pull/1168
* Add new CMake option to disable GUI by @anmatako in https://github.com/colmap/colmap/pull/1165
* Fix the memory leak caused by not releasing the memory of the PRNG at the end of the thread by @whuaegeanse in https://github.com/colmap/colmap/pull/1170
* Fix fusion segfault bug by @anmatako in https://github.com/colmap/colmap/pull/1176
* Update SiftGPU to use floorf for floats by @anmatako in https://github.com/colmap/colmap/pull/1182
* fix typo in extraction.cc by @iuk in https://github.com/colmap/colmap/pull/1191
* Improvements to NVM, Cam, Recon3D, and Bundler exporters by @drkoller in https://github.com/colmap/colmap/pull/1187
* Update model_aligner functionality by @anmatako in https://github.com/colmap/colmap/pull/1177
* Add new model_cropper and model_splitter commands by @anmatako in https://github.com/colmap/colmap/pull/1179
* use type point2D_t instead of image_t by @iuk in https://github.com/colmap/colmap/pull/1199
* Fix radial distortion in Cam format exporter by @drkoller in https://github.com/colmap/colmap/pull/1196
* Add new model_transformer command by @anmatako in https://github.com/colmap/colmap/pull/1178
* Fix error of using urllib to download eigen from gitlab by @whuaegeanse in https://github.com/colmap/colmap/pull/1194
* Multi-line string fix in Python model script by @mihaidusmanu in https://github.com/colmap/colmap/pull/1217
* added visibility_sigma to CLI input options for delaunay_mesher. by @Matstah in https://github.com/colmap/colmap/pull/1236
* Backwards compatibility of model_aligner by @tsattler in https://github.com/colmap/colmap/pull/1240
* [update undistortion] update dumped commands by @hiakru in https://github.com/colmap/colmap/pull/1276
* Compute reprojection error in generalized absolute solver by @Skydes in https://github.com/colmap/colmap/pull/1257
* Modifying scripts/python/flickr_downloader.py to create files with correct extensions by @snavely in https://github.com/colmap/colmap/pull/1275
* revise Dockerfile and readme. by @MasahiroOgawa in https://github.com/colmap/colmap/pull/1281
* Update to latest vcpkg version by @ahojnnes in https://github.com/colmap/colmap/pull/1319
* Fix compiler warnings reported by GCC by @ahojnnes in https://github.com/colmap/colmap/pull/1317
* Auto-rotate JPEG images based on EXIF orientation by @ahojnnes in https://github.com/colmap/colmap/pull/1318
* Upgrade vcpkg to fix CI build issues by @ahojnnes in https://github.com/colmap/colmap/pull/1331
* Added descriptor normalization argument to feature_extractor. by @mihaidusmanu in https://github.com/colmap/colmap/pull/1332
* Fix memory leak in the function of StringAppendV by @whuaegeanse in https://github.com/colmap/colmap/pull/1337
* Add CUDA_SAFE_CALL to cudaGetDeviceCount. by @chpatrick in https://github.com/colmap/colmap/pull/1334
* Add missing include in case CUDA/GUI is not available by @ahojnnes in https://github.com/colmap/colmap/pull/1329
* Fix wrong WGS84 model and test cases in GPSTransform by @Freeverc in https://github.com/colmap/colmap/pull/1333
* Fixes bug in sprt.cc: num_inliers was not set. by @rmbrualla in https://github.com/colmap/colmap/pull/1360
* Prevent a divide by zero corner case. by @rmbrualla in https://github.com/colmap/colmap/pull/1361
* Adds missing header. by @rmbrualla in https://github.com/colmap/colmap/pull/1362
* Require Qt in COLMAPConfig only if GUI is enabled by @Skydes in https://github.com/colmap/colmap/pull/1365
* Keep precision in the process of storing in text. by @whuaegeanse in https://github.com/colmap/colmap/pull/1363
* Expose exe internals by @Skydes in https://github.com/colmap/colmap/pull/1366
* Fix inliers matches extraction in EstimateUncalibrated function. by @ferreram in https://github.com/colmap/colmap/pull/1369
* Expose exe internals - fix by @Skydes in https://github.com/colmap/colmap/pull/1368
* Remove deprecated Mac OSX 10.14 image in ADO pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/1383
* Add Mac OSX 11 ADO pipeline job by @ahojnnes in https://github.com/colmap/colmap/pull/1384
* Fix warnings for latest compiler/libraries by @ahojnnes in https://github.com/colmap/colmap/pull/1382
* Fix clang compiler warnings by @ahojnnes in https://github.com/colmap/colmap/pull/1387
* Add Address Sanitizer options and fix reported issues by @ahojnnes in https://github.com/colmap/colmap/pull/1390
* User/joschonb/asan cleanup by @ahojnnes in https://github.com/colmap/colmap/pull/1391
* Add ADO pipeline for Visual Studio 2022 by @ahojnnes in https://github.com/colmap/colmap/pull/1392
* Add ccache option by @ahojnnes in https://github.com/colmap/colmap/pull/1395
* Update ModelAligner to handle GPS and custom coords. and more by @ferreram in https://github.com/colmap/colmap/pull/1371

-----------------------
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.
