Changelog
=========

-------------------------
COLMAP 4.1.1 (07/17/2026)
-------------------------

Improvements
------------
* Load the mapper database lazily instead of at GUI startup, avoiding a
  redundant database read when opening the GUI or a project.
* Tint UI icons to the palette for improved dark theme legibility.
* Show image/point viewer metadata when the source images are missing on disk.
* Fail the Caspar build early with a clear error on CUDA architectures below 7.0.

Bug Fixes
---------
* Fix feature matching slowdown (~4-6x) caused by a process-global OpenMP
  critical section in ``RANSAC``/``LORANSAC``.
* Fix rescaling of already-undistorted images when ``max_image_size`` is
  provided.
* Fix missing SVG icons in the distributed Windows binaries.
* Fix Caspar CUDA build with MSVC forced includes.
* Fix glog color support version detection.
* Fix typos in a user-facing help string and the FAQ.

Breaking Changes
----------------
* Renamed the misspelled pycolmap enum ``GPSTransfromEllipsoid`` to
  ``GPSTransformEllipsoid``. The old name has been removed without a
  backwards-compatible alias; update any references accordingly.

-------------------------
COLMAP 4.1.0 (06/26/2026)
-------------------------

New Features
------------
* Added Caspar, a GPU-accelerated bundle adjustment backend, selectable as an
  alternative to the default Ceres solver. Includes rig support, GPU device
  selection, and pycolmap bindings for choosing the bundle adjustment and mapper
  backends. Caspar is often 1-2 orders of magnitude faster than the Ceres CUDA
  backend for medium- to large-scale problems, leading to drastic speedups
  especially for the incremental mapper.
* Added the spherical (equirectangular) camera models. This enables native
  reconstruction of 360 panoramic images and is generally faster but less
  accurate than rendering perspective views, as performed in the
  ``panorama_sfm`` example.
* Extended the ``panorama_sfm`` example to now convert perspective cameras
  back to equirectangular and added global mapping support.
* Added Enhanced Unified Camera Model (EUCM).
* Added advancing-front surface reconstruction meshing.
* Added support for extracting gravity pose priors from EXIF orientation tags.
* Added ``CamRayFromImg`` bearing-vector unprojection interface and bindings.
* Estimate separate ``fx``/``fy`` in the p4pf solver for two-focal camera models.
* Added a new ``version`` CLI command to print the COLMAP version.
* Added ``MVS_ENABLED`` build option to compile without the MVS module.
* Added ``GlobalMapper.keep_max_num_tracks`` option to bound the number of
  established tracks.
* Added rotation averaging options to the GlobalMapper configuration.
* Added pycolmap bindings for ``ReprojectionErrorType`` and
  additional point filter methods.
* Added support for showing camera up vector in the viewer.
* Replaced the GUI icons with Material Symbols (Apache 2.0).
* Added keyboard shortcuts for model import/export in the GUI.

Improvements
------------
* Accelerated the exhaustive matcher by using ``IndexIVFScalarQuantizer``
  instead of ``IndexIVFFlat``.
* Accelerated extraction of colors through parallelization across all images.
* Accelerated incremental triangulator through reused BFS allocations and
  simplified ``merge_trials_``.
* Added and updated sensor specs to the camera database.
* Avoided a forced copy in ``mvs::Image::SetBitmap``.
* Support incremental ``CorrespondenceGraph`` and ``ObservationManager``
  construction, decoupling ``reg_stats`` from ``ObservationManager``.
* Return ``std::optional`` from ``Bitmap::GetPixel``/``Interpolate*``.
* Refit missing E/F/H in ``MaybeDecomposeRelativePoses`` for old databases.
* Inherit all bundle adjustment options in the global mapper.
* Guard against frame mutation after reconstruction insertion via
  ``FinalizeDataIds()``.
* Move semantics for ``SetPoints2D`` (take ``Point2D`` vector by value).
* Conditional initialization of Google logging.
* Numerous benchmarking improvements: live progress display, ``--fast`` mode,
  better parallelism and per-step logging, per-dataset/overall summary rows,
  GT-covisibility-based filtering, and dynamic scheduling.
* Added compiler warning flags and a ``WERROR`` option to the pycolmap build.
* Robustified gravity-aligned rotation averaging against 180deg flips.
* Clipping extreme pixels in fisheye undistortion.
* Various tutorial and docstring improvements.
* For other minor improvements, see the full list of changes below.

Bug Fixes
---------
* Fix sequential matching hang with loop detection verification.
* Fix SiftGPU device selection to include device 0.
* Fix vocab tree selection in the UI.
* Fix broken integration of SIFT features with the LightGlue matcher.
* Fix ``global_mapper`` ``point3D.error`` units for ``model_analyzer``.
* Fix ``PoissonRecon`` ``num_threads`` handling and undefined behavior.
* Fix ``pycolmap.Database()`` abort on garbage collection.
* Fix Windows Unicode path handling in ``Bitmap::Read``/``Bitmap::Write``.
* Fix NaN failures in rotation averaging from non-PD Cholesky.
* Fix rotation averaging crash with multi-image rigs.
* Fix missing rig pose manifold in ``RefineGeneralizedAbsolutePose`` and only
  set the manifold when residuals exist.
* Fix applying ``refine_sensor_from_rig`` to all stages of the global mapper.
* Fix ``mesh_texturer`` occlusion check edge case.
* Fix SIGABRT in ``RegisterNextStructureLessImage`` when ``NumRegImages < 2``.
* Fix thread pool worker processes crashing on shutdown.
* Fix onnxruntime DLL copy error in ``Findonnxruntime.cmake``.
* Change ``std::filesystem::relative`` to ``lexically_relative`` for
  ``NormalizePath``.
* Fix crash in ``AdjustGlobalBundle`` after aggressive frame filtering.
* Fix stale ``reg_stats``/observation stats and add underflow guards in mapper
  bookkeeping, and clear ``num_reg_images``.
* Fix empty PatchMatch results on Blackwell GPUs (sm_100+).
* Fix locale-dependent float parsing/formatting.
* Fix thread oversubscription in the hierarchical mapper.
* Fix mask usage log never printing in the feature writer thread.
* Fix ``pyceres`` ``.problem`` attribute on ``CeresBundleAdjuster`` factory.
* Fix conditional Eigen alignment for the 3.4.0 pre-release version.
* Fix optional access in guided matching.
* Fix reading of dynamic matrices in the SQLite database.
* Fix using the ALIKED feature extractor with pycolmap and ALIKED ``min_score``
  keypoint filtering.
* Fix various pycolmap and PoissonRecon installation/build issues.
* Fix missing mesh simplification reset and duplicate sources.
* Add destructor to ``ModelViewerWidget`` to call ``makeCurrent()``.
* Fix checks in the ``GpuMat`` constructor.
* Add missing LightGlue matcher type to the GUI.
* Log an error instead of crashing on unknown EXIF orientation.

-------------------------
COLMAP 4.0.4 (04/27/2026)
-------------------------

Bug Fixes
---------
* Log an error instead of crash on unknown EXIF orientation
* Fix crash in AdjustGlobalBundle after aggressive frame filtering
* Change std::filesystem::relative to lexically_relative for NormalizePath
* Fix onnxruntime DLL copy error under Windows in Findonnxruntime.cmake

-------------------------
COLMAP 4.0.3 (04/06/2026)
-------------------------

Bug Fixes
---------
* Fix various issues in incremental mapper's reg_stats bookkeeping
* Fix reading of dynamic matrices in SQLite3 database
* Fix optional access in guided matching
* Fix conditional Eigen alignment for 3.4.0 pre-release version
* Fix ceres::GradientChecker constructor for older Ceres versions
* Fix for pycolmap installation related to ONNX
* Fix bug where num_reg_images was not cleared
* Fix mask usage log never printing in feature writer thread
* Fix undefined behavior in PoissonRecon
* Fix locale-dependent float parsing/formatting
* Fix empty PatchMatch results on Blackwell GPUs (sm_100+)
* Fix pyceres .problem attribute on CeresBundleAdjuster returned by factory functions
* Fix missing rotation averaging options to global mapper
* Fix piping of bundle adjustment options in global mapper

Improvements
------------
* Handle CHOLMOD includes not being in a subdirectory
* Use non-deprecated SQLite3::SQLite3 CMake target
* Reduce thread oversubscription in hierarchical mapper

-------------------------
COLMAP 4.0.2 (03/18/2026)
-------------------------

Bug Fixes
---------
* Fix ALIKED keypoint score filtering
* Fix ALIKED extraction with pycolmap
* Fix missing reset of mesh simplification options

-------------------------
COLMAP 4.0.1 (03/15/2026)
-------------------------

Bug Fixes
---------
* Add missing LightGlue matcher type to GUI
* Fix checks in GpuMat constructor
* Add destructor to ModelViewerWidget to call makeCurrent()

-------------------------
COLMAP 4.0.0 (03/14/2026)
-------------------------

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

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

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

Full Change List (sorted temporally)
------------------------------------
* Fix MSVC compatibility with ``isnan`` by @nharbiso in https://github.com/colmap/colmap/pull/3720
* Include v3.13 to legacy dropdown. by @B1ueber2y in https://github.com/colmap/colmap/pull/3724
* (bugfix) initializing added_two_view_geometry_options to false by @AlePuglisi in https://github.com/colmap/colmap/pull/3727
* Update the tag of the doc submodule to the latest commit. by @B1ueber2y in https://github.com/colmap/colmap/pull/3729
* Fix duplicated parameters for pycolmap.extract_features and fix pycolmap README. by @B1ueber2y in https://github.com/colmap/colmap/pull/3728
* Document how to speed up bundle adjustment by @StonerLing in https://github.com/colmap/colmap/pull/3730
* Fix reconstruction benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/3731
* Remove doc submodule for easier maintenance. by @B1ueber2y in https://github.com/colmap/colmap/pull/3732
* Fix undefined behavior in feature match swapping by @ahojnnes in https://github.com/colmap/colmap/pull/3733
* Fix SVD computation in affine transform by @ahojnnes in https://github.com/colmap/colmap/pull/3734
* Fix random seed stability tests for incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/3735
* Structure-less image registration using generalized relative pose estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2829
* Add supernodal cholmod L1 solver support and more tests by @ahojnnes in https://github.com/colmap/colmap/pull/3737
* Add union-find implementation by @ahojnnes in https://github.com/colmap/colmap/pull/3738
* Add unit tests for base controller by @ahojnnes in https://github.com/colmap/colmap/pull/3739
* Add unit tests for PLY utils by @ahojnnes in https://github.com/colmap/colmap/pull/3742
* Inline SQLite3 utils in database implementation by @ahojnnes in https://github.com/colmap/colmap/pull/3741
* Allow reuse of cholesky decomposition in L1 solver by @ahojnnes in https://github.com/colmap/colmap/pull/3743
* Add unit tests for controller thread by @ahojnnes in https://github.com/colmap/colmap/pull/3740
* Add drag-and-drop folder support for model import in the GUI by @StonerLing in https://github.com/colmap/colmap/pull/3744
* Update to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/3745
* Include instructions to update documentation after new releases by @chipironcin in https://github.com/colmap/colmap/pull/3716
* Remove unused CMake warning level variable by @ahojnnes in https://github.com/colmap/colmap/pull/3747
* Import of GLOMAP source code by @ahojnnes in https://github.com/colmap/colmap/pull/3748
* Correct the spelling of GeometricVerifier. by @B1ueber2y in https://github.com/colmap/colmap/pull/3749
* Update Windows ccache to 4.12.1 by @ahojnnes in https://github.com/colmap/colmap/pull/3750
* Remove custom glomap constants by @ahojnnes in https://github.com/colmap/colmap/pull/3751
* Remove unnecessary glomap Camera by @ahojnnes in https://github.com/colmap/colmap/pull/3753
* Misc code quality improvements for max spanning tree by @ahojnnes in https://github.com/colmap/colmap/pull/3755
* Configure clang-format for glomap code by @ahojnnes in https://github.com/colmap/colmap/pull/3756
* Support two view geometry with empty inlier matches in the database. by @B1ueber2y in https://github.com/colmap/colmap/pull/3754
* Modularize glomap libraries by @ahojnnes in https://github.com/colmap/colmap/pull/3757
* Use colmap reconstruction matchers in global mapper tests by @ahojnnes in https://github.com/colmap/colmap/pull/3758
* Fix WriteTwoViewGeometry when inlier matches are empty. by @B1ueber2y in https://github.com/colmap/colmap/pull/3761
* Add support for geometric verification given known reconstruction. by @B1ueber2y in https://github.com/colmap/colmap/pull/3752
* Enable glomap tests in CI by @ahojnnes in https://github.com/colmap/colmap/pull/3759
* Replace custom glomap Track with colmap Point3D by @ahojnnes in https://github.com/colmap/colmap/pull/3762
* Add missing option: FeatureMatching.skip_image_pairs_in_same_frame by @B1ueber2y in https://github.com/colmap/colmap/pull/3765
* Use fundamental/essential matrix utils from colmap by @ahojnnes in https://github.com/colmap/colmap/pull/3768
* Clean up redundant/unnecessary glomap rigid3d helper functions by @ahojnnes in https://github.com/colmap/colmap/pull/3764
* Add option to skip geometric verification at feature matching. by @B1ueber2y in https://github.com/colmap/colmap/pull/3766
* Fix missing colmap namespace in util/file.h macro. by @B1ueber2y in https://github.com/colmap/colmap/pull/3770
* Add missing header for the enum macros and remove colmap namespace. by @B1ueber2y in https://github.com/colmap/colmap/pull/3771
* Upgrade to latest vcpkg. by @B1ueber2y in https://github.com/colmap/colmap/pull/3774
* Add convenience method for filtering data by sensor type by @ahojnnes in https://github.com/colmap/colmap/pull/3776
* Cleanup redundant sqlite database merge implementation, consistent variable naming by @ahojnnes in https://github.com/colmap/colmap/pull/3778
* Add missing bindings for Bitmap and cleanup by @sarlinpe in https://github.com/colmap/colmap/pull/3780
* Set frame_id when reading database images by @ahojnnes in https://github.com/colmap/colmap/pull/3779
* Handle near zero matrices or identity transformations in gmock matchers by @ahojnnes in https://github.com/colmap/colmap/pull/3782
* Fix pycolmap to respect fix_existing_frames option by @S-o-T in https://github.com/colmap/colmap/pull/3781
* Add non-inserting FindIfExists to UnionFind by @B1ueber2y in https://github.com/colmap/colmap/pull/3783
* Use existing ceres function to stringify termination type by @ahojnnes in https://github.com/colmap/colmap/pull/3784
* Add convenience Python constructors for data_t/sensor_t by @ahojnnes in https://github.com/colmap/colmap/pull/3785
* Add utility function to compute Rigid3d origin by @ahojnnes in https://github.com/colmap/colmap/pull/3773
* Allow running glomap from colmap main executable by @ahojnnes in https://github.com/colmap/colmap/pull/3769
* Associate pose priors to generic sensor measurement data by @ahojnnes in https://github.com/colmap/colmap/pull/3777
* Enable compiler warnings as errors in GCC/CLang CI builds by @ahojnnes in https://github.com/colmap/colmap/pull/3788
* Remove debug log statement in db management widget by @ahojnnes in https://github.com/colmap/colmap/pull/3789
* Rename PosePrior::IsValid to HasPosition by @ahojnnes in https://github.com/colmap/colmap/pull/3786
* Add gravity to pose prior by @ahojnnes in https://github.com/colmap/colmap/pull/3787
* Disable editing of images in database management widget by @ahojnnes in https://github.com/colmap/colmap/pull/3792
* Fix and simplify database pose prior migration by @ahojnnes in https://github.com/colmap/colmap/pull/3791
* Synthesize gravities and move pose prior noise synthesis by @ahojnnes in https://github.com/colmap/colmap/pull/3795
* Replace FreeImage with OpenImageIO by @ahojnnes in https://github.com/colmap/colmap/pull/3459
* Add support on adding camera/image with trivial rig/frame to reconstruction. by @B1ueber2y in https://github.com/colmap/colmap/pull/3800
* Rename HasTrivialFrame to IsRefInFrame. by @B1ueber2y in https://github.com/colmap/colmap/pull/3801
* Ensure that the rig has only one sensor at AddImageWithTrivialFrame. by @B1ueber2y in https://github.com/colmap/colmap/pull/3802
* Fix meta data cloning when cloning bitmap by @ahojnnes in https://github.com/colmap/colmap/pull/3812
* Remove unused includes in MVS image by @ahojnnes in https://github.com/colmap/colmap/pull/3813
* Create global mapper pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/3808
* Fix stand-alone python visualizer. by @B1ueber2y in https://github.com/colmap/colmap/pull/3816
* Remove the deprecated read_write_model.py from colmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3817
* refactor: Replace OpenSqliteDatabase with Database::Open by @whuaegeanse in https://github.com/colmap/colmap/pull/3818
* Replace glomap gravity info with pose prior by @ahojnnes in https://github.com/colmap/colmap/pull/3794
* Relax CUDA requirements in Python wheels by @sarlinpe in https://github.com/colmap/colmap/pull/3799
* Fix copying behaviors of empty bitmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3823
* Don't build CUDA wheels for all Python versions in PRs by @sarlinpe in https://github.com/colmap/colmap/pull/3824
* Fix NumResiduals ignore point statistics and update test assertion by @whuaegeanse in https://github.com/colmap/colmap/pull/3820
* Add unit tests for MVS workspace by @ahojnnes in https://github.com/colmap/colmap/pull/3825
* Fix transcription of image IDs in reconstruction from database by @ahojnnes in https://github.com/colmap/colmap/pull/3826
* Towards removing custom glomap image class by @ahojnnes in https://github.com/colmap/colmap/pull/3805
* Add unit tests for MVS image by @ahojnnes in https://github.com/colmap/colmap/pull/3828
* Remove unused includes in MVS fusion by @ahojnnes in https://github.com/colmap/colmap/pull/3829
* Add simple integration test for MVS fusion by @ahojnnes in https://github.com/colmap/colmap/pull/3830
* Remove custom glomap image class by @ahojnnes in https://github.com/colmap/colmap/pull/3835
* Add integration tests for meshing, update poisson recon library to 18.75 by @ahojnnes in https://github.com/colmap/colmap/pull/3834
* Consolidate calculation of angle between vectors by @ahojnnes in https://github.com/colmap/colmap/pull/3836
* Clean up unused includes from geometry folder by @ahojnnes in https://github.com/colmap/colmap/pull/3837
* Clean up redundant glomap executable by @ahojnnes in https://github.com/colmap/colmap/pull/3838
* Update FAQ on dense stereo stage requirements by @The-Cyber-Captain in https://github.com/colmap/colmap/pull/3840
* Improve glomap cost function, add tests by @ahojnnes in https://github.com/colmap/colmap/pull/3839
* Refactor general cost function utils and add NormalPriorCost and NormalErrorCost. by @B1ueber2y in https://github.com/colmap/colmap/pull/3843
* Various improvements and fixes on glomap gravity impl. by @B1ueber2y in https://github.com/colmap/colmap/pull/3844
* Fix misleading logging for structure-less registration. by @B1ueber2y in https://github.com/colmap/colmap/pull/3848
* Remove glomap types_sfm.h and only include necessary headers. by @B1ueber2y in https://github.com/colmap/colmap/pull/3849
* Improvements and fixes on glomap two view geometry. by @B1ueber2y in https://github.com/colmap/colmap/pull/3847
* Move cluster id logic to top level and remove custom glomap Frame class. by @B1ueber2y in https://github.com/colmap/colmap/pull/3850
* Migrate glomap gravity utilities into colmap and add tests. by @B1ueber2y in https://github.com/colmap/colmap/pull/3845
* Move InlierThresholdOptions and remove unnecessary includes. by @B1ueber2y in https://github.com/colmap/colmap/pull/3851
* Minor: throw instead of LOG(ERROR) when SQLITE3_EXEC fails. by @B1ueber2y in https://github.com/colmap/colmap/pull/3855
* Add integration tests for image undistorters by @ahojnnes in https://github.com/colmap/colmap/pull/3856
* Pass database as pointer instead of reference in global mapper. Drop GlobalMapperResume. by @B1ueber2y in https://github.com/colmap/colmap/pull/3846
* Use colmap::Reconstruction instead of scattered variables in glomap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3853
* Use temporary storage for camera centers in global positioning. by @B1ueber2y in https://github.com/colmap/colmap/pull/3854
* Fix workspace image downsizing and improve tests by @ahojnnes in https://github.com/colmap/colmap/pull/3857
* Fix bitmap copy assignment test by @ahojnnes in https://github.com/colmap/colmap/pull/3859
* Add test for BitmapColor printing by @ahojnnes in https://github.com/colmap/colmap/pull/3860
* [Improve RA] Add PairConstraint, remove image_id_to_idx and improve naming/comments. by @B1ueber2y in https://github.com/colmap/colmap/pull/3858
* Add test for spatial verification in image retrieval, fix crash for invalid transformations by @ahojnnes in https://github.com/colmap/colmap/pull/3862
* Attempt to make visual index spatial verification tests deterministic by @ahojnnes in https://github.com/colmap/colmap/pull/3870
* Minor: rename glomap cost_function.h to cost_functions.h. by @B1ueber2y in https://github.com/colmap/colmap/pull/3872
* Fix 2D association issue at AddPoint3D with point3D_id. by @B1ueber2y in https://github.com/colmap/colmap/pull/3867
* [Improve RA] Abstract RotationAveragingProblem and RotationAveragingSolver. by @B1ueber2y in https://github.com/colmap/colmap/pull/3861
* Move relative pose filtering utilities into ViewGraph. by @B1ueber2y in https://github.com/colmap/colmap/pull/3864
* Fix database race conditions in mapping pipelines by @ahojnnes in https://github.com/colmap/colmap/pull/3865
* Improve stability of visual index spatial verification test by @ahojnnes in https://github.com/colmap/colmap/pull/3874
* Fix glomap track retriangulation refinement termination status by @ahojnnes in https://github.com/colmap/colmap/pull/3873
* Propagate exceptions from ThreadPool::Wait by @ahojnnes in https://github.com/colmap/colmap/pull/3869
* Catch AggregateException for ThreadPool. by @B1ueber2y in https://github.com/colmap/colmap/pull/3875
* Use DeRegisterFrame over ResetPose in view graph and track retriangulation. by @B1ueber2y in https://github.com/colmap/colmap/pull/3877
* Add Reconstruction::IsValid to check if a reconstruction object is not broken. by @B1ueber2y in https://github.com/colmap/colmap/pull/3878
* Improve the horrendous logic and naming in rotation initializer. by @B1ueber2y in https://github.com/colmap/colmap/pull/3876
* Use colmap ObservationManager for track filtering in glomap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3871
* Centralize random logic to use colmap SetPRNGSeed. Add deterministic test. by @B1ueber2y in https://github.com/colmap/colmap/pull/3879
* Abstract general minimum spanning tree algorithm in colmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3883
* Use logging over std::cout in glomap to avoid flooding logs in gtest. by @B1ueber2y in https://github.com/colmap/colmap/pull/3880
* Abstract base option manager and consolidate usage. by @B1ueber2y in https://github.com/colmap/colmap/pull/3881
* [Improve RA] Move stratified logic into estimators and only keep one option class. by @B1ueber2y in https://github.com/colmap/colmap/pull/3863
* ImagePair inherits colmap::TwoViewGeometry. Remove image id fields. by @B1ueber2y in https://github.com/colmap/colmap/pull/3882
* Further cleanup of std::cout in the codebase. by @B1ueber2y in https://github.com/colmap/colmap/pull/3884
* Rename SwapImagePair to ShouldSwapImagePair. by @B1ueber2y in https://github.com/colmap/colmap/pull/3887
* Move validity logic into ViewGraph and use filter_view in ValidImagePairs. by @B1ueber2y in https://github.com/colmap/colmap/pull/3885
* Directly use COLMAP bundle adjustment interface for glomap BA. by @B1ueber2y in https://github.com/colmap/colmap/pull/3868
* Add rotation averaging controller in colmap and consolidate glomap exe functions. by @B1ueber2y in https://github.com/colmap/colmap/pull/3888
* Remove legacy logging in global positioning. by @B1ueber2y in https://github.com/colmap/colmap/pull/3892
* Minor: improve the namings in global mapper options. by @B1ueber2y in https://github.com/colmap/colmap/pull/3891
* Add type annotations to python example scripts by @ahojnnes in https://github.com/colmap/colmap/pull/3889
* Remove OptimizationBase and use colmap::GetEffectiveNumThreads(). by @B1ueber2y in https://github.com/colmap/colmap/pull/3890
* Simplify the logic and naming of reconstruction pruning. by @B1ueber2y in https://github.com/colmap/colmap/pull/3886
* Fix wrongly migrated cuda option in glomap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3895
* Centralize poselib type conversion. by @B1ueber2y in https://github.com/colmap/colmap/pull/3896
* Drop weight support for different relative poses in rotation averaging. by @B1ueber2y in https://github.com/colmap/colmap/pull/3897
* Simplify colmap_io in glomap thanks to the unification. by @B1ueber2y in https://github.com/colmap/colmap/pull/3900
* Reduce code duplication in pycolmap MVS bindings by @sarlinpe in https://github.com/colmap/colmap/pull/3899
* Use colmap IterativeGlobalRefinement for retriangulation and refinement in glomap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3902
* Drop support for Python 3.9 due to EOL by @ahojnnes in https://github.com/colmap/colmap/pull/3910
* Add single-thread deterministic test for global mapper and rotation averaging controller. by @B1ueber2y in https://github.com/colmap/colmap/pull/3906
* Replace the usage of inliers in ImagePair with inlier_matches. by @B1ueber2y in https://github.com/colmap/colmap/pull/3909
* Update global mapper signature to align with colmap::IncrementalMapper. by @B1ueber2y in https://github.com/colmap/colmap/pull/3904
* Implement AddAndRegisterDefaultEnumOption and propagate to codebase. by @B1ueber2y in https://github.com/colmap/colmap/pull/3903
* Cleanup unused method declaration in GlobalMapper. by @B1ueber2y in https://github.com/colmap/colmap/pull/3912
* Refactor view graph calibration. by @B1ueber2y in https://github.com/colmap/colmap/pull/3911
* Delete legacy Python scripts by @ahojnnes in https://github.com/colmap/colmap/pull/3914
* Add support for computing recall scores by @ahojnnes in https://github.com/colmap/colmap/pull/3913
* Add Python bindings for depth and normal maps, retire legacy scripts by @ahojnnes in https://github.com/colmap/colmap/pull/3916
* Update and improve formatting of pycolmap readme by @ahojnnes in https://github.com/colmap/colmap/pull/3917
* Add Python type checking for all code by @ahojnnes in https://github.com/colmap/colmap/pull/3893
* Recompute F from E in the top level of CalibrateViewGraph. by @B1ueber2y in https://github.com/colmap/colmap/pull/3915
* Make DatabaseCache::Load/Create args optional except database. by @B1ueber2y in https://github.com/colmap/colmap/pull/3919
* Use DatabaseCache to load reconstruction in glomap and remove the custom loader. by @B1ueber2y in https://github.com/colmap/colmap/pull/3918
* Bugfix for the rotation averaging CLI. by @B1ueber2y in https://github.com/colmap/colmap/pull/3927
* Drop database member in SfM controllers for better modularity and safety. by @B1ueber2y in https://github.com/colmap/colmap/pull/3926
* Add tests for reconstruction benchmark utils by @ahojnnes in https://github.com/colmap/colmap/pull/3930
* Use new optional typing by @ahojnnes in https://github.com/colmap/colmap/pull/3931
* Switch to colmap backend for two view re-estimation after view graph calibration. by @B1ueber2y in https://github.com/colmap/colmap/pull/3923
* Fix sign of GPS longitude from EXIF by @ahojnnes in https://github.com/colmap/colmap/pull/3935
* Fix camera prior loading in benchmark code. by @B1ueber2y in https://github.com/colmap/colmap/pull/3933
* Remove Database::Clone method by @ahojnnes in https://github.com/colmap/colmap/pull/3929
* Cleanup unused glomap includes by @ahojnnes in https://github.com/colmap/colmap/pull/3937
* Improved code for view graph calibration cost functions by @ahojnnes in https://github.com/colmap/colmap/pull/3936
* Move and type annotate model visualization example by @ahojnnes in https://github.com/colmap/colmap/pull/3939
* Move end to end regression test script and annotate types by @ahojnnes in https://github.com/colmap/colmap/pull/3938
* Delete more legacy Python scripts by @ahojnnes in https://github.com/colmap/colmap/pull/3940
* Move and type annotate flickr downloader by @ahojnnes in https://github.com/colmap/colmap/pull/3941
* Add option to evaluate self-calibration in reconstruction benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/3942
* Use std::optional for cam2_from_cam1 in TwoViewGeometry. by @B1ueber2y in https://github.com/colmap/colmap/pull/3932
* Use custom two view options for global pipeline in automatic reconstructor. by @B1ueber2y in https://github.com/colmap/colmap/pull/3943
* Add tests for estimating multiple two view geometries and minor perf optimization by @ahojnnes in https://github.com/colmap/colmap/pull/3947
* Add tests for uncovered edge cases in polynomial solvers by @ahojnnes in https://github.com/colmap/colmap/pull/3946
* Add unit tests for export to various external reconstruction formats by @ahojnnes in https://github.com/colmap/colmap/pull/3945
* Only create QApplication or OpenGL context if needed by @ahojnnes in https://github.com/colmap/colmap/pull/3944
* Simplify CSVToVector and add tests by @ahojnnes in https://github.com/colmap/colmap/pull/3953
* Migrate glomap exe into colmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3952
* Add unit tests for colmap version helpers by @ahojnnes in https://github.com/colmap/colmap/pull/3955
* Use make_unique instead of new by @ahojnnes in https://github.com/colmap/colmap/pull/3957
* Early exit pycolmap windows build on errors by @ahojnnes in https://github.com/colmap/colmap/pull/3958
* Make view graph calibration a stand-alone estimator module on colmap::Database and add CLI. by @B1ueber2y in https://github.com/colmap/colmap/pull/3951
* Replace ImagePair with RelativePoseData and rename ViewGraph to PoseGraph. by @B1ueber2y in https://github.com/colmap/colmap/pull/3954
* Make rotation averaging work with reconstruction with frames unregistered. by @B1ueber2y in https://github.com/colmap/colmap/pull/3949
* Replace 3-level option names with 2-level names for INI compatibility. by @B1ueber2y in https://github.com/colmap/colmap/pull/3962
* Add test for reading/writing options from ini by @ahojnnes in https://github.com/colmap/colmap/pull/3963
* Add relative poses to DatabaseCache and update the signature of global mapper. by @B1ueber2y in https://github.com/colmap/colmap/pull/3960
* Move module-specific functional methods outside PoseGraph. by @B1ueber2y in https://github.com/colmap/colmap/pull/3964
* Add tests for file utils, use enum utils by @ahojnnes in https://github.com/colmap/colmap/pull/3956
* Always try to decompose relative poses at the start of global pipeline. by @B1ueber2y in https://github.com/colmap/colmap/pull/3966
* Add unit tests for incremental triangulator by @ahojnnes in https://github.com/colmap/colmap/pull/3967
* Bugfix in pose decomposition interface. Update pipeline tests. by @B1ueber2y in https://github.com/colmap/colmap/pull/3969
* Switch paths from std::string to std::filesystem::path by @sarlinpe in https://github.com/colmap/colmap/pull/3901
* Add option to synthesize sparse view graph by @ahojnnes in https://github.com/colmap/colmap/pull/3968
* Optionally include runtime benchmarks in main project by @ahojnnes in https://github.com/colmap/colmap/pull/3970
* Refactor and improve track establishment. by @B1ueber2y in https://github.com/colmap/colmap/pull/3965
* Inline track establishment logic into GlobalMapper. by @B1ueber2y in https://github.com/colmap/colmap/pull/3972
* Minor: inline gravity cost functor into gravity refinement. by @B1ueber2y in https://github.com/colmap/colmap/pull/3973
* Store two view geometries in correspondence graph by @ahojnnes in https://github.com/colmap/colmap/pull/3975
* Support custom SSL certificate locations by @ahojnnes in https://github.com/colmap/colmap/pull/3976
* Fix database merging and improve tests by @ahojnnes in https://github.com/colmap/colmap/pull/3977
* Support loading bitmaps with alpha channel by @ahojnnes in https://github.com/colmap/colmap/pull/3978
* Reorder fields of core data structs for better packing by @ahojnnes in https://github.com/colmap/colmap/pull/3979
* Add tests for reading/writing bitmaps in popular image formats. by @ahojnnes in https://github.com/colmap/colmap/pull/3980
* Fix includes in feature index/matcher by @ahojnnes in https://github.com/colmap/colmap/pull/3982
* Do not store inlier matches in pose graph by @ahojnnes in https://github.com/colmap/colmap/pull/3981
* Setup priors when loading database, filter watermarks when creating database cache from another cache by @ahojnnes in https://github.com/colmap/colmap/pull/3983
* Fix guided matching for calibrated non-linear cameras by @ahojnnes in https://github.com/colmap/colmap/pull/3986
* Clear and log OpenImageIO errors by @ahojnnes in https://github.com/colmap/colmap/pull/3987
* Misc view graph calibration and global mapper improvements by @ahojnnes in https://github.com/colmap/colmap/pull/3985
* Do not crash but return error on unknown sensor_from_rig poses in incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/3988
* Consistent and improved logging of headings by @ahojnnes in https://github.com/colmap/colmap/pull/3991
* Fix faiss linker warning under MSVC by @ahojnnes in https://github.com/colmap/colmap/pull/3994
* Make E F H optional in TwoViewGeometry struct. by @B1ueber2y in https://github.com/colmap/colmap/pull/3989
* Update Python incremental pipeline to match C++ by @ahojnnes in https://github.com/colmap/colmap/pull/3993
* Improve Reconstruction::NumRegImages from O(N) to O(1) by @ahojnnes in https://github.com/colmap/colmap/pull/3996
* Reduce incremental mapper's minimum size for small models by @ahojnnes in https://github.com/colmap/colmap/pull/3992
* Switch to Python 3.11 in the PR build. Disable mypy for Python 3.10. by @B1ueber2y in https://github.com/colmap/colmap/pull/3998
* Add missing Python bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3997
* Do not override test commands for Python 3.10 on windows. by @B1ueber2y in https://github.com/colmap/colmap/pull/4000
* Rename num_iterations_ba to ba_num_iterations for consistency by @ahojnnes in https://github.com/colmap/colmap/pull/4001
* Return std::optional from Bitmap::Exif* methods by @ahojnnes in https://github.com/colmap/colmap/pull/4002
* Use database in rotation averaging CLI. Add a python example for legacy format. by @B1ueber2y in https://github.com/colmap/colmap/pull/3990
* Cleanup some includes in sfm folder by @ahojnnes in https://github.com/colmap/colmap/pull/4005
* Switch paths from std::string to std::filesystem::path (continued) by @sarlinpe in https://github.com/colmap/colmap/pull/4004
* Remove dangling declaration of JoinPaths. by @B1ueber2y in https://github.com/colmap/colmap/pull/4009
* Make reconstruction clustering logic a stand-alone module by @lpanaf in https://github.com/colmap/colmap/pull/4008
* Switch to perform clustering on all registered frames by @lpanaf in https://github.com/colmap/colmap/pull/4007
* Add option to control refinement of points 3D in bundle adjuster by @ahojnnes in https://github.com/colmap/colmap/pull/4012
* Minor code improvement in triangulation estimator by @ahojnnes in https://github.com/colmap/colmap/pull/4015
* Add support for division camera models by @ahojnnes in https://github.com/colmap/colmap/pull/4013
* Add nominal tests on reconstruction accuracy for bundle adjustment. by @B1ueber2y in https://github.com/colmap/colmap/pull/4019
* Use colmap::BundleAdjustmentOptions in global pipeline and drop custom option class. by @B1ueber2y in https://github.com/colmap/colmap/pull/4016
* Add test for and fix bitmap jpeg quality setting by @ahojnnes in https://github.com/colmap/colmap/pull/4025
* Remove unimplemented GetFileSize function by @ahojnnes in https://github.com/colmap/colmap/pull/4026
* Drop experimental modes in global positioning. Add module signature and improve naming. by @B1ueber2y in https://github.com/colmap/colmap/pull/3920
* Add option to specify jpeg quality during undistortion by @ahojnnes in https://github.com/colmap/colmap/pull/4027
* Analytical Jacobians for reprojection error cost function with SimpleRadial cameras by @ahojnnes in https://github.com/colmap/colmap/pull/4017
* Fix backwards compatibility of reading database created before Jul 2023. by @B1ueber2y in https://github.com/colmap/colmap/pull/4030
* Bug fix for generalized absolute pose estimator. by @B1ueber2y in https://github.com/colmap/colmap/pull/4031
* Clear model outputs in all estimators and RANSACs by @ahojnnes in https://github.com/colmap/colmap/pull/4032
* Move undistortion controllers to controllers folder by @ahojnnes in https://github.com/colmap/colmap/pull/4033
* Remove the iterative logic for reconstruction clustering and use directly the strongly connected component by @lpanaf in https://github.com/colmap/colmap/pull/4035
* Add rig scale alignment support for the global pipeline. by @B1ueber2y in https://github.com/colmap/colmap/pull/4038
* Performance improvement on generalized absolute pose. by @B1ueber2y in https://github.com/colmap/colmap/pull/4037
* Bundle adjustment benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/4022
* Add fisheye (equidistant) camera model by @lpanaf in https://github.com/colmap/colmap/pull/4039
* Store Rigid3/Sim3 params as single vector by @ahojnnes in https://github.com/colmap/colmap/pull/4041
* Move minimal solvers in estimators to sub-folder by @ahojnnes in https://github.com/colmap/colmap/pull/4047
* Move generalized absolute pose solver to sub-folder by @ahojnnes in https://github.com/colmap/colmap/pull/4048
* Use static Eigen array segment sizes in rotation averaging by @ahojnnes in https://github.com/colmap/colmap/pull/4049
* Single pose parameter block and angle axis for BA cost functions by @ahojnnes in https://github.com/colmap/colmap/pull/4029
* Automatically deep copy feature extraction/matching options by @ahojnnes in https://github.com/colmap/colmap/pull/4051
* Add test for rig verification and fixes by @ahojnnes in https://github.com/colmap/colmap/pull/4052
* Improve test coverage for image reader by @ahojnnes in https://github.com/colmap/colmap/pull/4053
* Abstract general bundle adjuster and solver summary. by @B1ueber2y in https://github.com/colmap/colmap/pull/4042
* Change test target names and file names by @ahojnnes in https://github.com/colmap/colmap/pull/4034
* Add nominal test and runtime benchmarking for global positioning. by @B1ueber2y in https://github.com/colmap/colmap/pull/4050
* Modularize cost functions by @ahojnnes in https://github.com/colmap/colmap/pull/4054
* Fix incorrect macOS install instruction by @sarlinpe in https://github.com/colmap/colmap/pull/4055
* Move glomap sources to colmap and replace glomap with colmap namespace by @ahojnnes in https://github.com/colmap/colmap/pull/4057
* Move motion averaging cost functions to sub-folder by @ahojnnes in https://github.com/colmap/colmap/pull/4058
* Move glomap Python bindings to colmap folder by @ahojnnes in https://github.com/colmap/colmap/pull/4059
* Add GLOMAP paper to list of citations by @ahojnnes in https://github.com/colmap/colmap/pull/4060
* Add test for reconstruction_clustering and sort cluster id by cluster size by @lpanaf in https://github.com/colmap/colmap/pull/4003
* Improve Fetzer cost implementation and tests by @ahojnnes in https://github.com/colmap/colmap/pull/4061
* Remove unused GetFileSize function by @ahojnnes in https://github.com/colmap/colmap/pull/4064
* Add function to read PLY mesh and add roundtrip tests by @ahojnnes in https://github.com/colmap/colmap/pull/4065
* Remove unused GLError function by @ahojnnes in https://github.com/colmap/colmap/pull/4066
* Modernize code using structured bindings by @ahojnnes in https://github.com/colmap/colmap/pull/4067
* Reuse sorting of initial images by @ahojnnes in https://github.com/colmap/colmap/pull/4069
* Clean up messy GPS conversion functionality by @ahojnnes in https://github.com/colmap/colmap/pull/4063
* Reuse code in camera by @ahojnnes in https://github.com/colmap/colmap/pull/4068
* Support static windows build with CUDA by @ahojnnes in https://github.com/colmap/colmap/pull/4072
* Use enum instead of #define in model viewer widget by @ahojnnes in https://github.com/colmap/colmap/pull/4073
* Extract some algorithmic logic from exe and add tests by @ahojnnes in https://github.com/colmap/colmap/pull/4074
* Cleanup outdated pycolmap deprecations by @ahojnnes in https://github.com/colmap/colmap/pull/4081
* Associate feature descriptors with type and propagate through pipeline and storage by @ahojnnes in https://github.com/colmap/colmap/pull/4080
* Fix pycolmap compiler warnings by @ahojnnes in https://github.com/colmap/colmap/pull/4082
* Update clang-format to 21.1.8 by @ahojnnes in https://github.com/colmap/colmap/pull/4085
* Update project dependencies by @ahojnnes in https://github.com/colmap/colmap/pull/4086
* Move instructions to build documentation to install.rst instead of root README by @ahojnnes in https://github.com/colmap/colmap/pull/4091
* Fix doc ordering for sphinx==0.9.1 by @sarlinpe in https://github.com/colmap/colmap/pull/4092
* Update to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/4075
* Extract loading of random descriptors and sample randomly across images by @ahojnnes in https://github.com/colmap/colmap/pull/4096
* Fix duplicate word typos in observation manager and rig docstring. by @B1ueber2y in https://github.com/colmap/colmap/pull/4097
* Add LightGlue ONNX feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/4098
* Improve incremental mapper/triangulator bindings by @ahojnnes in https://github.com/colmap/colmap/pull/4101
* Use native menu bar on Mac by @ahojnnes in https://github.com/colmap/colmap/pull/4102
* Avoid unnecessary copies by @ahojnnes in https://github.com/colmap/colmap/pull/4103
* Expose pycolmap.match_from_pairs to support custom pair matching on GPU by @samuelm2 in https://github.com/colmap/colmap/pull/4056
* Update onnxruntime FetchContent for ARM64 support by @johnnynunez in https://github.com/colmap/colmap/pull/4106
* Early exit incremental initialization if there are no points by @ahojnnes in https://github.com/colmap/colmap/pull/4108
* Fix incorrect propagation of incremental options in automatic reconstructor by @sarlinpe in https://github.com/colmap/colmap/pull/4111
* Fix triangulation angle computation in patch match sampling by @ahojnnes in https://github.com/colmap/colmap/pull/4110
* Correctly set the rpath in CMake by @sarlinpe in https://github.com/colmap/colmap/pull/4114
* Fix inverted units in ExifFocalLength metadata extraction by @MAX4ARCH in https://github.com/colmap/colmap/pull/4113
* Add vocab tree for ALIKED N16 rot feature by @ahojnnes in https://github.com/colmap/colmap/pull/4119
* Add track_length option in synthetic tooling and report ms/iter in BA benchmark. by @B1ueber2y in https://github.com/colmap/colmap/pull/4118
* Fix install destination for onnxruntime by @ahojnnes in https://github.com/colmap/colmap/pull/4120
* Read image orientation from EXIF and extract upright features by @sarlinpe in https://github.com/colmap/colmap/pull/4122
* Fix and improve documentation by @ahojnnes in https://github.com/colmap/colmap/pull/4123
* Optimize includes in MVS folder by @ahojnnes in https://github.com/colmap/colmap/pull/4125
* Follow-up fixes on EXIF auto-rotation by @sarlinpe in https://github.com/colmap/colmap/pull/4126
* Replace typedefs with using by @ahojnnes in https://github.com/colmap/colmap/pull/4128
* Add optional position prior support to RefineGeneralizedAbsolutePose by @ahojnnes in https://github.com/colmap/colmap/pull/4129
* Add Python bindings for feature extractor by @ahojnnes in https://github.com/colmap/colmap/pull/4130
* Add Python bindings for feature matcher by @ahojnnes in https://github.com/colmap/colmap/pull/4131
* Rotate LightGlue inputs based on gravity by @sarlinpe in https://github.com/colmap/colmap/pull/4132
* Fixing OpenGL profiles on Linux (Ubuntu 25.10) by @martin-pr in https://github.com/colmap/colmap/pull/4133
* Add pre-trained vocabulary tree for ALIKED N32 variant by @ahojnnes in https://github.com/colmap/colmap/pull/4134
* Untie circular dependency between feature and scene libraries by @ahojnnes in https://github.com/colmap/colmap/pull/4135
* Add tests for matcher cache by @ahojnnes in https://github.com/colmap/colmap/pull/4136
* Explicitly accept dragMoveEvent to fix broken drag-and-drop in Qt6 by @StonerLing in https://github.com/colmap/colmap/pull/4139
* Parse unregistered config options with warning instead of error by @StonerLing in https://github.com/colmap/colmap/pull/4140
* Revamp logging configuration and fix UI log sink formatting by @StonerLing in https://github.com/colmap/colmap/pull/4141
* Make view graph calibration a standalone module by @ahojnnes in https://github.com/colmap/colmap/pull/4143
* Refactor ONNX runtime configuration handling in CMake files by @whuaegeanse in https://github.com/colmap/colmap/pull/4144
* Relative pose decomposition operates in-memory on database cache by @ahojnnes in https://github.com/colmap/colmap/pull/4146
* Enforce compile-time type checking for option registration by @StonerLing in https://github.com/colmap/colmap/pull/4148
* Relax assertion for the global bundle adjustment by @lpanaf in https://github.com/colmap/colmap/pull/4149
* Expose more logging options in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/4150
* Load keypoints for all images to database cache for triangulation by @B1ueber2y in https://github.com/colmap/colmap/pull/4151
* Add separate trial counter for structure-less registration by @B1ueber2y in https://github.com/colmap/colmap/pull/4152
* Fix the usage of filter_frames in FindNextImages by @B1ueber2y in https://github.com/colmap/colmap/pull/4153
* Read inputs in parallel in patch match by @ahojnnes in https://github.com/colmap/colmap/pull/4154
* Improved caching for faster and more reliable CI by @ahojnnes in https://github.com/colmap/colmap/pull/4156
* Add retries for more reliable file download by @ahojnnes in https://github.com/colmap/colmap/pull/4157
* Add support for building shared libraries by @ahojnnes in https://github.com/colmap/colmap/pull/4158
* Fix missing colmap namespace in file macro by @B1ueber2y in https://github.com/colmap/colmap/pull/4159
* Fix file THROW_CHECK_* macros from double evaluation of path expressions by @ahojnnes in https://github.com/colmap/colmap/pull/4160
* Fix empty patch match results on CUDA compute >= 100 (Blackwell GPUs) by @ahojnnes in https://github.com/colmap/colmap/pull/4161
* Add AGENTS.md file by @ahojnnes in https://github.com/colmap/colmap/pull/4162
* Fix docker action caching by @ahojnnes in https://github.com/colmap/colmap/pull/4163
* Add compiler caching for CUDA code by @ahojnnes in https://github.com/colmap/colmap/pull/4164
* Improve ONNX Runtime error handling and CUDA compatibility warnings by @StonerLing in https://github.com/colmap/colmap/pull/4167
* Add structureless fallback options to reconstruction widget by @ahojnnes in https://github.com/colmap/colmap/pull/4168
* Add multi-threading support for (LO)RANSAC loop by @ahojnnes in https://github.com/colmap/colmap/pull/4169
* Add missing estimate sub-folder sources to cmake project by @ahojnnes in https://github.com/colmap/colmap/pull/4171
* Improve bundle adjustment test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4172
* Improve test coverage for coordinate frame estimators by @ahojnnes in https://github.com/colmap/colmap/pull/4173
* Improve test coverage for MVS consistency graph by @ahojnnes in https://github.com/colmap/colmap/pull/4174
* Add tests for SPRT sampler by @ahojnnes in https://github.com/colmap/colmap/pull/4175
* Improve reconstruction test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4176
* Add tests for MVS model by @ahojnnes in https://github.com/colmap/colmap/pull/4177
* Add tests for incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/4178
* Add tests for feature matching utils by @ahojnnes in https://github.com/colmap/colmap/pull/4179
* Expand meshing test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4180
* Expand pose_graph_test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4181
* Expand extractor_test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4182
* Expand matcher_test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4183
* Add more log options in GUI by @StonerLing in https://github.com/colmap/colmap/pull/4186
* Add test for EstimateManhattanWorldFrame by @ahojnnes in https://github.com/colmap/colmap/pull/4187
* Fix ONNX model path handling for Windows by converting to UTF-8 by @whuaegeanse in https://github.com/colmap/colmap/pull/4188
* Add tests for rotation averaging edge cases by @ahojnnes in https://github.com/colmap/colmap/pull/4190
* Add mesh texture mapping by @ahojnnes in https://github.com/colmap/colmap/pull/4202
* Update install instructions for conda to mention Mamba by @ahojnnes in https://github.com/colmap/colmap/pull/4204
* Homogenize undistorter options by @ahojnnes in https://github.com/colmap/colmap/pull/4205
* Add support for importing surface mesh in viewer by @ahojnnes in https://github.com/colmap/colmap/pull/4207
* Save memory by storing colors as uint8 instead of float32 by @ahojnnes in https://github.com/colmap/colmap/pull/4210
* Configure Delaunay meshing num_threads in automatic reconstruction, more logging by @ahojnnes in https://github.com/colmap/colmap/pull/4211
* Log image reader non-success status as warning by @ahojnnes in https://github.com/colmap/colmap/pull/4212
* Support drag-and-drop for PLY point cloud / surface mesh in viewer by @ahojnnes in https://github.com/colmap/colmap/pull/4214
* Fix broken panorama_sfm.py by @sarlinpe in https://github.com/colmap/colmap/pull/4215
* Add implementation of mesh simplification by @ahojnnes in https://github.com/colmap/colmap/pull/4216
* Tests for filtering logic for incremental mapping by @winterclincke in https://github.com/colmap/colmap/pull/4219
* Deduplicate SIFT tests by @ahojnnes in https://github.com/colmap/colmap/pull/4220
* Fix ONNX installation on Linux for lib64 target by @ahojnnes in https://github.com/colmap/colmap/pull/4221
* Misc safety improvements by @ahojnnes in https://github.com/colmap/colmap/pull/4222
* Improved test coverage for bitmap by @ahojnnes in https://github.com/colmap/colmap/pull/4224
* Fix 180-degree flipped solutions in gravity-aligned rotation averaging by @ahojnnes in https://github.com/colmap/colmap/pull/4225
* Improve docs regarding view graph calibrator in global pipeline by @B1ueber2y in https://github.com/colmap/colmap/pull/4226
* Remove legacy cluster_ids in the global pipeline by @B1ueber2y in https://github.com/colmap/colmap/pull/4227
* Fallback to BA CPU solver if GPU failed by @ahojnnes in https://github.com/colmap/colmap/pull/4230
* Log out BA failures as errors by @ahojnnes in https://github.com/colmap/colmap/pull/4231
* Fix dangling pointers in OptionManager after ResetOptions by @B1ueber2y in https://github.com/colmap/colmap/pull/4232
* Fix model_aligner crash by using new pose prior API by @B1ueber2y in https://github.com/colmap/colmap/pull/4233
* Prevent nested threading for ONNX by @ahojnnes in https://github.com/colmap/colmap/pull/4235
* Scale max_image_size proportionally by feature extractor type in quality presets by @ahojnnes in https://github.com/colmap/colmap/pull/4236
* Rename reconstruction clusterer command to model clusterer by @ahojnnes in https://github.com/colmap/colmap/pull/4237
* Fix CPU parallelization for ALIKED by @ahojnnes in https://github.com/colmap/colmap/pull/4238
* feat: Added global mapping bindings by @TannerGilbert in https://github.com/colmap/colmap/pull/4228

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