- 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.
- 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.
- 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 toalign_reconstruction_to_locations
(typo).pycomap.cost_functions
becomes a module and should be explicitly imported asimport pycolmap.cost_functions
.- Replaced
Image.registered
byImage.{has_pose,reset_pose}
. - Replaced
Image.{get_valid_point2D_ids,get_valid_points2D}
byImage.{get_observation_point2D_idxs,get_observation_points2D}
. - Replaced
Track.{append,remove}
byTrack.{add_element,delete_element}
. AbsolutePoseErrorCost
becomesAbsolutePosePriorCost
.MetricRelativePoseErrorCost
becomesRelativePosePriorCost
.- 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 withpycolmap.create_default_bundle_adjuster()
.absolute_pose_estimation
becomesestimate_and_refine_absolute_pose
.pose_refinement
becomesrefine_absolute_pose
.essential_matrix_estimation
becomesestimate_essential_matrix
.fundamental_matrix_estimation
becomesestimate_fundamental_matrix
.rig_absolute_pose_estimation
becomesestimate_and_refine_generalized_absolute_pose
.homography_matrix_estimation
becomesestimate_homography_matrix
.squared_sampson_error
becomescompute_squared_sampson_error
.homography_decomposition
becomespose_from_homography_matrix
.Rigid3d.essential_matrix
becomespycolmap.essential_matrix_from_pose
.
- Updates for pycolmap by @ahojnnes in colmap#2672
- Trigger CI on release/* branches by @ahojnnes in colmap#2673
- Use consistent versioning scheme between C++/Python by @ahojnnes in colmap#2674
- Add cost function for 3D alignment (with covariance) by @B1ueber2y in colmap#2621
- Numpy 2 compatibility by @sarlinpe in colmap#2682
- Add fix for specifying the correct pycolmap CMake python development … by @fulkast in colmap#2683
- Remove non existant flags of model_aligner from docs by @TamirCohen in colmap#2696
- Reset CMAKE_MODULE_PATH to previous value by @mvieth in colmap#2699
- Robustify nchoosek against overflow by @ahojnnes in colmap#2706
- Observation manager needs to check if image_id exists before query operations by @bo-rc in colmap#2704
- Remove pose prior from database.py:add_image by @sarlinpe in colmap#2707
- Fix: sequential matcher overlap number should be inclusive by @flm8620 in colmap#2701
- Fix table mangled by clang-format by @sweber1 in colmap#2710
- Write out options to ini in full precision, relax bundle adjuster convergence by @ahojnnes in colmap#2713
- Tests for pairing library in feature matching by @ahojnnes in colmap#2711
- Rename IncrementalMapperOptions to IncrementalPipelineOptions by @B1ueber2y in colmap#2708
- Add support for CUDA sparse BA solver by @ahojnnes in colmap#2717
- Rename HierarchicalMapperController to HierarchicalPipeline by @ahojnnes in colmap#2718
- Make VisualIndex::Quantize const to improve readability by @IshitaTakeshi in colmap#2723
- Fix CUDA_ENABLED macro in new bundle adjustment code by @drkoller in colmap#2725
- Automatically generate stub files by @sarlinpe in colmap#2721
- Add CUDA-based dense BA solver by @ahojnnes in colmap#2732
- Improved and simplified caching in feature matching by @ahojnnes in colmap#2731
- Fix colmap namespace in the macro support of logging. by @B1ueber2y in colmap#2733
- Add callbacks by move by @ahojnnes in colmap#2734
- Implement transitive matcher with pair generator + tests by @ahojnnes in colmap#2735
- Provide reasonable defaults for some estimator options by @sarlinpe in colmap#2745
- Fix mismatched Delaunay meshing options by @sarlinpe in colmap#2748
- PyCOLMAP API documentation by @sarlinpe in colmap#2749
- Improved pycolmap coverage and docs by @sarlinpe in colmap#2752
- Follow-up fixes in pycolmap by @sarlinpe in colmap#2755
- Report errors in import_images by @sarlinpe in colmap#2750
- Further simplification of feature matcher code by @ahojnnes in colmap#2744
- Add missing ClearModifiedPoints3D by @sarlinpe in colmap#2761
- Store shared camera ptr for reconstruction images by @ahojnnes in colmap#2762
- Avoid unnecessary copy of queue in IncrementalTriangulator::Complete() by @ahojnnes in colmap#2764
- Branch prediction for THROW_CHECK_NOTNULL by @ahojnnes in colmap#2765
- Use shared camera pointer in more places by @ahojnnes in colmap#2763
- Support switching camera directly with camera pointer by @B1ueber2y in colmap#2767
- Add test for MergeReconstructions by @B1ueber2y in colmap#2766
- Fix little/big endian detection by @ahojnnes in colmap#2768
- Fix options for CUDA sparse BA solver by @whuaegeanse in colmap#2758
- Rename SupperMeasurer::Compare for improved readability by @ahojnnes in colmap#2774
- Improvements for install docs by @ahojnnes in colmap#2773
- fixed typo of align_reconstrution_to_locations to align_reconstructio… by @TamirCohen in colmap#2776
- Fix missing camera ptr for Reconstruction.DeleteAllPoints2DAndPoints3D() by @B1ueber2y in colmap#2779
- Rename remaining proj_matrix instances to cam_from_world by @ahojnnes in colmap#2780
- Relative pose decomposition uses Rigid3d by @ahojnnes in colmap#2781
- Minor renaming on pycolmap point2d and point3d filenames by @B1ueber2y in colmap#2784
- Add validity check for pixel coordinate in the Fisheye camera. Fix tests. by @B1ueber2y in colmap#2790
- Use branch prediction in PRNG functions by @ahojnnes in colmap#2796
- Implementation of Aria Fisheye camera model by @nushakrishnan in colmap#2786
- Upgrade to C++ 17 by @B1ueber2y in colmap#2801
- Pose Prior based Incremental Mapper by @ferreram in colmap#2660
- Expose UpdatePoint3DErrors to pycolmap by @theartful in colmap#2805
- Switch to the Ruff Python formatter by @sarlinpe in colmap#2803
- Add mixed Python-C++ PyCOLMAP package by @sarlinpe in colmap#2747
- Enable Ruff linter for Python by @sarlinpe in colmap#2806
- Use C++17 structured bindings in some places by @ahojnnes in colmap#2808
- Add RAD_TAN_THIN_PRISM_FISHEYE to camera docs by @ahojnnes in colmap#2810
- Customized cost functions should be functors instead by @B1ueber2y in colmap#2811
- Install and use newer clang-format from pypi by @ahojnnes in colmap#2812
- Return a reference in Reconstruction.image/camera/point3D by @sarlinpe in colmap#2814
- Add test for PositionPriorErrorCostFunctor. by @ferreram in colmap#2815
- Replace boost/filesystem with standard library by @ahojnnes in colmap#2809
- Fix selection of BA solver type when there is no cuda by @ahojnnes in colmap#2822
- More informative exception if invalid access of image/camera/point3D by @sarlinpe in colmap#2825
- Use minimal solvers from poselib by @ahojnnes in colmap#2288
- Disable -march=native flags in poselib by @ahojnnes in colmap#2828
- Make
Image::cam_from_world_
optional by @sarlinpe in colmap#2824 - Remove warning in configure step by @sarlinpe in colmap#2830
- Fix coordinate notation in EstimateAbsolutePose by @ahojnnes in colmap#2833
- Return success status in low-level triangulation functions by @ahojnnes in colmap#2834
- Pin mypy version for tests by @ahojnnes in colmap#2849
- Suppress CMP0167 warning for FindBoost under CMake 3.30 or newer by @ahojnnes in colmap#2853
- Reconstruction reader/writer tests and scene class repr by @ahojnnes in colmap#2842
- Select CUDA device when bundle adjustment uses GPU by @ahojnnes in colmap#2846
- Fix copying behaviors of Reconstruction regarding camera pointers by @B1ueber2y in colmap#2841
- Use the C++ string representation for Python dataclass objects by @sarlinpe in colmap#2855
- Various improvements for pycolmap bindings by @ahojnnes in colmap#2854
- Use analytical Jacobian in IterativeUndistortion. Add trust region by @B1ueber2y in colmap#2857
- Improve the conditioning of covariance estimation by @B1ueber2y in colmap#2860
- Avoid unnecessary copy of RANSAC inlier masks by @ahojnnes in colmap#2863
- Various improvements for cost functors by @ahojnnes in colmap#2867
- Rename
*_mapper
to*_pipeline
files by @ahojnnes in colmap#2870 - Update the manylinux CI to GCC 10 by @sarlinpe in colmap#2873
- Fix rare deadlock during matching due to concurrent database access by @ahojnnes in colmap#2876
- Add new and missing options to automatic reconstructor by @ahojnnes in colmap#2877
- Shared auto diff cost function creation by @ahojnnes in colmap#2878
- Enable model alignment to reference model by @ahojnnes in colmap#2879
- Add covariance weighted cost functor by @ahojnnes in colmap#2880
- Fix unused variable warnings under MSVC by @ahojnnes in colmap#2884
- Skip all but latest Python version in PR builds by @ahojnnes in colmap#2881
- [doc] Fix path to example in README.md by @kielnino in colmap#2886
- Update Github actions versions by @ahojnnes in colmap#2887
- [doc] Fix typo for gui menu item by @kielnino in colmap#2885
- Fix input type for automatic stereo fusion on extreme quality setting by @ahojnnes in colmap#2893
- Make target with all sources optional by @HernandoR in colmap#2889
- Gracefully handle missing image pose in viewer by @ahojnnes in colmap#2894
- Update to latest vcpkg release 2024.10.21 by @ahojnnes in colmap#2908
- Fix conversion from CUDA texture references to objects in SIFT feature extraction by @ahojnnes in colmap#2911
- Modernized bundle adjustment interface by @ahojnnes in colmap#2896
- Add missing unit tests for reconstruction alignment functions by @ahojnnes in colmap#2913
- Do not test EstimateManhattanWorldFrame if LSD is disabled by @sarlinpe in colmap#2920
- Custom macro for enum to string support by @B1ueber2y in colmap#2918
- Bind the estimation of Sim3d by @sarlinpe in colmap#2903
- Initialize glog in custom gmock main function by @ahojnnes in colmap#2916
- Update ccache for faster windows CI builds by @ahojnnes in colmap#2922
- Fixes for Windows ARM64 support by @ahojnnes in colmap#2921
- Move geometry implementation of
__repr__
,__eq__
overloads to C++ side by @ahojnnes in colmap#2915 - Consistent interface and various improvements for pycolmap/estimators by @ahojnnes in colmap#2923
- Exclude DetectLineSegments if LSD is disabled by @sarlinpe in colmap#2927
- Enable reading 16bit/channel (png) images to grayscale by @Ediolot in colmap#2924
- Cleanup of remaining pycolmap interfaces by @ahojnnes in colmap#2925
- Fix affine SIFT feature orientation detection by @ahojnnes in colmap#2929
- Improvements to deprecated pycolmap members by @sarlinpe in colmap#2932
- Fix pkgconf installation in Mac CI by @ahojnnes in colmap#2936
- Make sphinx show the pycolmap constructors by @sarlinpe in colmap#2935
- Bind synthetic dataset functionality in pycolmap by @ahojnnes in colmap#2938
- Cleaner import of C++ symbols by @sarlinpe in colmap#2933
- Fix pycolmap breakage for Python 3.8 by @sarlinpe in colmap#2941
- Remove legacy boost test macro by @ahojnnes in colmap#2940
- Drop support for VS 2019 CI checks by @ahojnnes in colmap#2943
- Fix CI cache thrashing by inconsistent vcpkg binary caching by @ahojnnes in colmap#2942
- Introduce gmock Eigen matrix matchers by @ahojnnes in colmap#2939
- Prevent double initialization of glog for <=0.5 by @sarlinpe in colmap#2945
- Fixes and refactoring for bundle adjustment covariance estimation by @ahojnnes in colmap#2788
- Fix duplicate library warnings in linking stage by @ahojnnes in colmap#2871
- Add test for Python mapping pipeline by @ahojnnes in colmap#2946
- Add helper script for incremental pycolmap build by @ahojnnes in colmap#2947
- Fix and consistently define Qt window flags by @ahojnnes in colmap#2949
- Cross platform usage of monospace font by @ahojnnes in colmap#2950
- Update to latest pybind11 version by @ahojnnes in colmap#2952
- Update install instructions for Mac using homebrew by @ahojnnes in colmap#2953
- Add missing "include <memory>" needed for unique_ptr by @Tobias-Fischer in colmap#2338
- Support decoding multi-byte characters in Python script by @jot-jt in colmap#2344
- Split Dockerfile in two stages: builder and runtime. by @pablospe in colmap#2347
- Dockerfile improvements by @pablospe in colmap#2356
- Update VCPKG commit in Windows CI by @sarlinpe in colmap#2365
- Simplify the creation of reprojection error cost functions by @sarlinpe in colmap#2364
- Migrate pycolmap by @sarlinpe in colmap#2367
- Rename master -> main in pycolmap CI by @sarlinpe in colmap#2370
- Bind SetPRNGSeed by @sarlinpe in colmap#2369
- Encapsulate freeimage usage from pycolmap in colmap bitmap by @ahojnnes in colmap#2372
- Re-generate version info on git changes by @ahojnnes in colmap#2373
- Consolidate colmap/pycolmap readmes, updated acknowledgements, etc. by @ahojnnes in colmap#2374
- Fix crashing pycolmap CI on Windows by @sarlinpe in colmap#2383
- Add costs for pose graph optimization by @sarlinpe in colmap#2378
- Switch to exception checks - v2 by @sarlinpe in colmap#2376
- Cleanup checks in pycolmap by @sarlinpe in colmap#2388
- Add RigReprojErrorConstantRigCostFunction by @sarlinpe in colmap#2377
- Add cost functions to pycolmap by @sarlinpe in colmap#2393
- Fix warning C4722 by @whuaegeanse in colmap#2391
- Move reconstruction IO utils to a new file by @sarlinpe in colmap#2399
- Acquire the GIL before returning None by @sarlinpe in colmap#2400
- Disentangle the controller from threading and integrate the new logic into IncrementalMapperController by @B1ueber2y in colmap#2392
- Simplify the low-level triangulation API by @sarlinpe in colmap#2402
- Initialize glog in pycolmap only if not already done by @sarlinpe in colmap#2405
- Adapt all the controllers to inherit from BaseController rather than Thread (except for feature extraction and matching) by @B1ueber2y in colmap#2406
- Update path to models.h in database docs by @diffner in colmap#2412
- Migrate Ubuntu CI pipelines from ADO to Github by @ahojnnes in colmap#2411
- Build wheels for Python 3.12 by @sarlinpe in colmap#2416
- Migrate MacOS CI pipeline from ADO to Github by @ahojnnes in colmap#2418
- Improve bindings of Database by @sarlinpe in colmap#2413
- Migrate Windows CI pipeline from ADO to Github by @ahojnnes in colmap#2419
- Reduce logging during incremental mapping by @sarlinpe in colmap#2420
- Migrate Docker CI from ADO to Github, remove ADO pipelines by @ahojnnes in colmap#2422
- Simplify IncrementalMapperController by @sarlinpe in colmap#2421
- Fix for glog 0.7.0 by @sarlinpe in colmap#2428
- Fix typo by @whuaegeanse in colmap#2430
- Fix RunMapper by @whuaegeanse in colmap#2431
- Do triangulation in the IncrementalMapperController by @sarlinpe in colmap#2429
- Only push a new Docker image on release by @sarlinpe in colmap#2436
- model aligner with type "custom" does not update reconstruction by @lpanaf in colmap#2433
- Define vcpkg manifest by @ahojnnes in colmap#2426
- Fix ordering of keyword arguments in pycolmap.rig_absolute_pose_estimation by @sarlinpe in colmap#2440
- Reduce the build time of pycolmap by @sarlinpe in colmap#2443
- Improve bindings of CorrespondenceGraph by @sarlinpe in colmap#2476
- Bind Reconstruction::{SetUp,ImagePairStats} by @sarlinpe in colmap#2477
- Add bindings for substeps of incremental mapper with a python example by @B1ueber2y in colmap#2478
- Debug crashing VCPKG-based CI builds by @sarlinpe in colmap#2508
- Upgrade to pybind11 v2.12. Fix bind_map and reconstruction.points3D by @B1ueber2y in colmap#2502
- Minor fix on logging for the pycolmap customized runner by @B1ueber2y in colmap#2503
- Fix missing public link deps, break circular feature-scene dependency by @ahojnnes in colmap#2497
- Avoid duplicate image allocation during undistortion by @fseegraeber in colmap#2520
- Fix reconstruction.points3D by @B1ueber2y in colmap#2523
- Fix 'std::out_of_range' error when using hierarchical_mapper by @GrayMask in colmap#2526
- Fix binding for std::vector<Point2D> by @sarlinpe in colmap#2533
- Include pybind eigen header by @tmnku in colmap#2510
- Fix pycolmap python pipeline for multiple models by @B1ueber2y in colmap#2531
- make two view geometry writable by @tmnku in colmap#2540
- Customized python interface for bundle adjustment by @B1ueber2y in colmap#2509
- Fix typos by @MaximSmolskiy in colmap#2553
- Implicitly convert iterator to ListPoint2D by @sarlinpe in colmap#2558
- Fix model_cropper not resetting image.num_points3D of cropped_rec by @ArneSchulzTUBS in colmap#2557
- Split pair generation and matching by @sarlinpe in colmap#2573
- Add ObservationManager by @sarlinpe in colmap#2575
- Log info about created feature extractor/matcher types by @ahojnnes in colmap#2579
- LSD: making the AGPL dependency optional by @zap150 in colmap#2578
- Disable LSD when building pycolmap wheels by @sarlinpe in colmap#2580
- Synthesize full two-view geometry and raw matches by @ahojnnes in colmap#2595
- Support Adjoint matrix computation for Rigid3d by @B1ueber2y in colmap#2598
- Fix cost functions for pose graph optimization by @B1ueber2y in colmap#2601
- Fix python bundle adjustment example with pyceres by @B1ueber2y in colmap#2606
- Faster homography estimator by @ahojnnes in colmap#2603
- Add function to find real cubic polynomial roots by @ahojnnes in colmap#2609
- Align with the convention of ceres doc on SqrtInformation. by @B1ueber2y in colmap#2611
- Faster 7-point fundamental matrix estimator by @ahojnnes in colmap#2612
- Faster 8-point fundamental matrix estimator by @ahojnnes in colmap#2613
- Covariance estimation for bundle adjustment with Schur elimination by @B1ueber2y in colmap#2610
- Mac OS improvements by @BSVogler in colmap#2622
- Update cibuildwheel to 2.19.2 by @ahojnnes in colmap#2632
- Faster essential matrix estimators by @ahojnnes in colmap#2618
- Remove CamFromWorldPrior and create LocationPrior by @sarlinpe in colmap#2620
- Add option to disable uninstall target, restore CI pipeline by @ahojnnes in colmap#2634
- Faster covariance computation for small blocks by @B1ueber2y in colmap#2633
- Fix optimal point algorithm by @morrishelle in colmap#2640
- Add shell script helper for profiling by @ahojnnes in colmap#2635
- Declare PosePrior::IsValid as const by @ahojnnes in colmap#2653
- Add CI build for Windows CUDA by @ahojnnes in colmap#2651
- Publish windows binaries from CI by @ahojnnes in colmap#2663
- Version 3.9 changelog by @ahojnnes in colmap#2325
- Fully encapsulate freeimage in bitmap library (#2332) by @ahojnnes in colmap#2334
- clang format all code and require clang-format-14 by @ahojnnes in colmap#1785
- Fix compilation for vcpkg windows build by @ahojnnes in colmap#1791
- Increment version number to 3.9 by @ahojnnes in colmap#1794
- Remove unnecessary /arch:sse2 flag for MSVC by @ahojnnes in colmap#1798
- Updated faq.rst by @CGCooke in colmap#1801
- Fixed mistake in code comment for OpenCV Fisheye camera by @CGCooke in colmap#1802
- Replace deprecated cudaThreadSynchronize with cudaDeviceSynchronize by @ahojnnes in colmap#1806
- Replace deprecated Cuda texture references with texture objects by @ahojnnes in colmap#1809
- Remove unused SIFT GPU cuda texture reference by @ahojnnes in colmap#1823
- Upgrade SiftGPU to use CUDA texture objects by @ahojnnes in colmap#1838
- Remove PBA as bundle adjustment backend to support CUDA 12+ by @ahojnnes in colmap#1840
- Replace deprecated CUDA sature function call by @ahojnnes in colmap#1841
- Avoid unnecessary mallocs during sampling by @ahojnnes in colmap#1842
- Cleaned up docker readme and scripts by @ahojnnes in colmap#1852
- add "Shared intrinsics per sub-folder" checkbox to automatic reconstruction window by @kenshi84 in colmap#1853
- Update vcpkg by @ahojnnes in colmap#1925
- Log the name of the file that causes Mat::Read() to checkfail by @SomeAlphabetGuy in colmap#1923
- check Z_index correctly in ReadPly by @countywest in colmap#1896
- Don't re-open files when reading and writing matrices by @SomeAlphabetGuy in colmap#1926
- Update vcpkg to latest commit by @ahojnnes in colmap#1948
- Remove unnecessary custom Eigen aligned allocator macros by @ahojnnes in colmap#1947
- Prefix internal sources/includes with colmap by @ahojnnes in colmap#1949
- Simplify clang-format config and sort includes by @ahojnnes in colmap#1950
- Handle possible overflow in median function by @ahojnnes in colmap#1951
- Run ASan pipeline under Ubuntu 22.04 by @ahojnnes in colmap#1952
- Fix Ceres version test by @drkoller in colmap#1954
- Fix deprecation warning for Qt font metrics width by @ahojnnes in colmap#1958
- Setup clang-tidy and enable perf warnings by @ahojnnes in colmap#1959
- VCPKG binary caching for windows CI by @ahojnnes in colmap#1957
- Cosmetics for VS dev shell script by @ahojnnes in colmap#1965
- Enable clang-tidy concurrency checks by @ahojnnes in colmap#1967
- [Bug] fix finding shared points3D in FindLocalBundle by @wesleyliwei in colmap#1963
- Enable compiler caching in CI by @ahojnnes in colmap#1972
- Set number of features for different quality levels by @ahojnnes in colmap#1975
- Specify parameter name using inline comment by @ahojnnes in colmap#1976
- Fix Windows CCache by @ahojnnes in colmap#1977
- Add e2e tests in CI pipeline using ETH3D datasets by @ahojnnes in colmap#1397
- [feature] print verbose information for model analyzer by @wesleyliwei in colmap#1978
- Add a missing include to compile with gcc13 by @EstebanDugueperoux2 in colmap#1984
- Speed up snapshot construct in RigBundleAdjuster by @wesleyliwei in colmap#1988
- Update outdated docker cuda image tag by @ahojnnes in colmap#1992
- Add boulders ETH3D dataset to CI E2E tests by @ahojnnes in colmap#1991
- Update executable paths in documentation by @ahojnnes in colmap#1993
- Avoid unnecessary copy in ExtractTopScaleFeatures by @ahojnnes in colmap#1994
- Move related code under new image library folder by @ahojnnes in colmap#1995
- Move related code under new camera folder by @ahojnnes in colmap#1996
- Added a virtual destructor to Sampler by @SomeAlphabetGuy in colmap#2000
- Add a few more clang-tidy checks by @ahojnnes in colmap#2001
- Move related code to new geometry module by @ahojnnes in colmap#2006
- Use #pragma once as include guard by @ahojnnes in colmap#2007
- Add bugprone-* clang-tidy checks by @ahojnnes in colmap#2010
- Avoid const params in declarations by @ahojnnes in colmap#2011
- Set and require C++14 by @ahojnnes in colmap#2012
- Cleanup math functions that are now part of eigen/stdlib by @ahojnnes in colmap#2013
- Add clang-analyzer checks by @ahojnnes in colmap#2014
- Replace CMake provided find_package scripts and modern CMake targets by @ahojnnes in colmap#2016
- Switch from Boost unit tests to Gtest by @ahojnnes in colmap#2017
- Fix ccache restore keys in pipeline caching by @ahojnnes in colmap#2018
- Add missing cacheHitVar to fix ccache by @ahojnnes in colmap#2020
- Add missing Boost::graph import by @sarlinpe in colmap#2021
- Compressed/flattened correspondence graph for faster triangulation / less memory by @ahojnnes in colmap#2019
- Fix window ccache key by @ahojnnes in colmap#2024
- Consistently use shared_ptr for shared pointers for SFM objects by @ahojnnes in colmap#2023
- Remove check on Qt version by @sarlinpe in colmap#2022
- Synthetics for E2E incremental mapper tests by @ahojnnes in colmap#2025
- New math module by @ahojnnes in colmap#2028
- Simplify similarity transform and more tests by @ahojnnes in colmap#2030
- Extract reconstruction alignment functions into new file by @ahojnnes in colmap#2032
- Add E2E hierarchical mapper tests by @ahojnnes in colmap#2033
- Rename SimilarityTransform3 to Sim3d by @ahojnnes in colmap#2034
- Add Rigid3d transform class by @ahojnnes in colmap#2035
- Consolidate and simplify Rigid3d and Sim3d by @ahojnnes in colmap#2037
- Some small improvements/cleanup for rigid3d/sim3d usage by @ahojnnes in colmap#2041
- CamFromWorld replaces qvec/tvec by @ahojnnes in colmap#2039
- Retry download of ETH3D datasets by @ahojnnes in colmap#2043
- WorldToImage becomes CamToImg by @ahojnnes in colmap#2044
- Camera models operate on camera rays by @ahojnnes in colmap#2045
- Ignore directory .vs by @whuaegeanse in colmap#2046
- Use the reference of Rigid3d to reduce memory consumption by @whuaegeanse in colmap#2047
- Inline point to image projection by @ahojnnes in colmap#2050
- Point2D becomes simpler pure data struct by @ahojnnes in colmap#2051
- Use Eigen math for estimator utils by @ahojnnes in colmap#2052
- Move cost functions under geometry module and rename by @ahojnnes in colmap#2053
- Bundle adjuster is an estimator by @ahojnnes in colmap#2054
- Remaining base targets move to new scene module by @ahojnnes in colmap#2055
- Vote and verify improvements/speedup by @ahojnnes in colmap#2056
- Generate version info in .cc file to reduce number of recompilations by @ahojnnes in colmap#2057
- Option manager moves to controllers to disentangle circular deps by @ahojnnes in colmap#2058
- Granular CMake modules and build targets by @ahojnnes in colmap#2059
- Fix docker build by @ahojnnes in colmap#2069
- Remove warnings about duplicated marco NOMINMAX by @whuaegeanse in colmap#2067
- lib folder becomes thirdparty folder by @ahojnnes in colmap#2068
- Remove unnecessary checks in image pair conversion by @ahojnnes in colmap#2074
- Replace flaky ETH3D terrace with courtyard dataset by @ahojnnes in colmap#2075
- Synthesize chained match graph for more mapper tests by @ahojnnes in colmap#2076
- Introduce abstract feature extractor by @ahojnnes in colmap#2077
- Avoid unnecessary data copies in feature conversion utils by @ahojnnes in colmap#2078
- Abstract feature matcher by @ahojnnes in colmap#2082
- Encapsulate feature matching controller/worker implementations by @ahojnnes in colmap#2085
- Some cosmetics for util/feature types by @ahojnnes in colmap#2084
- Use std:: when cmath included by @whuaegeanse in colmap#2081
- Encapsulate feature extraction controller/worker implementations by @ahojnnes in colmap#2086
- Reenable VS2022 CI pipeline by @ahojnnes in colmap#1689
- Consistent transform convention for CenterAndNormalizeImagePoints by @ahojnnes in colmap#2092
- Retire Mac 11 CI build by @ahojnnes in colmap#2094
- Add ReprojErrorConstantPoint3DCostFunction to speed up the RefineAbsolutePose function by @whuaegeanse in colmap#2089
- Numeric differentiation of camera model using partial piv LU by @ahojnnes in colmap#2100
- cmake: add testing.cc to colmap_util only if TESTS_ENABLED=ON by @NeroBurner in colmap#2102
- Set CUDA_STANDARD to 14 by @ahojnnes in colmap#2108
- Transform back to existing images positions after mapper processing if set fixed by @ferreram in colmap#2095
- Update documentation with new branch policy by @ahojnnes in colmap#2110
- Update CMake find dependencies for vcpkg by @ahojnnes in colmap#2116
- Decouple SIFT match from two view geometry options by @ahojnnes in colmap#2118
- Fix docker build by @vnmsklnk in colmap#2122
- Trigger build pipeline on main branch by @ahojnnes in colmap#2123
- Update Linux install documentation with new branch policy by @joshuaoreilly in colmap#2126
- Fix link in camera model documentation by @CFretter in colmap#2152
- [Bugfix] Fix GUI_ENABLED=OFF and skip SiftGPU if no GUI and no CUDA by @sarlinpe in colmap#2151
- [Bugfix] Properly handle CGAL_ENABLED by @sarlinpe in colmap#2149
- Refinement of intrinsics in the point_triangulator by @tsattler in colmap#2144
- Bugfix in handling COLMAP_GPU_ENABLED by @sarlinpe in colmap#2163
- Expose exe as libs by @sarlinpe in colmap#2165
- Add Sim3d::FromMatrix by @sarlinpe in colmap#2147
- Check code format in CI by @ahojnnes in colmap#2171
- Clean up dependencies by @sarlinpe in colmap#2173
- Move tests into anonymous namespaces by @ahojnnes in colmap#2175
- Fix glew/qopengl conflict warning by @ahojnnes in colmap#2176
- Update documentation with new link to GitHub discussions by @ahojnnes in colmap#2177
- Restore GLEW include by @sarlinpe in colmap#2178
- Align reconstructions via shared 3D points by @sarlinpe in colmap#2169
- Add clang-tidy-cachein CI by @ahojnnes in colmap#2182
- Disable GUI build in one CI config by @ahojnnes in colmap#2181
- Show verbose ccache stats by @ahojnnes in colmap#2183
- Add EstimateGeneralizedAbsolutePose by @sarlinpe in colmap#2174
- Fix bug in ReconstructionManagerWidget::Update by @whuaegeanse in colmap#2186
- Fix missing retrieval dependency by @ahojnnes in colmap#2189
- Removing clustering_options and mapper_options in Hierarchical Mapper Controller by @Serenitysmk in colmap#2193
- Publish docker image to docker hub by @ahojnnes in colmap#2195
- Fix Cuda architecture in docker build by @ahojnnes in colmap#2196
- Fix all-major cuda arch missing in CMake < 3.23 by @ahojnnes in colmap#2197
- Update triangulation.cc by @RayShark0605 in colmap#2205
- Update author and acknowledgements by @ahojnnes in colmap#2207
- Code formatting for Python by @ahojnnes in colmap#2208
- Retire outdated build script by @ahojnnes in colmap#2217
- Remove mention of deprecated build script by @sarlinpe in colmap#2220
- Improve word spelling by @zchrissirhcz in colmap#2235
- Stack allocate camera param idx arrays by @ahojnnes in colmap#2234
- fix: typo in colmap/src/colmap/ui/project_widget.cc by @varundhand in colmap#2241
- Update reconstruction.cc by @RayShark0605 in colmap#2238
- Update to Docker CUDA 12.2.2 by @ahojnnes in colmap#2244
- Stop setting C++ standard flags manually by @AdrianBunk in colmap#2251
- Setting clear_points to true per default in point_triangulator by @tsattler in colmap#2252
- Update cameras.rst to fix link to code by @tsattler in colmap#2246
- Fix matching of imported features without descriptors by @ahojnnes in colmap#2269
- Consistent versioning between documentation and code by @ahojnnes in colmap#2275
- Reduce mallocs for RANSAC estimator models by @ahojnnes in colmap#2283
- Migrate to glog logging by @ahojnnes in colmap#2172
- Turn Point3D into simple data struct by @ahojnnes in colmap#2285
- Camera becomes simple data struct by @ahojnnes in colmap#2286
- Recover custom Eigen std::vector allocator for Eigen <3.4 support by @ahojnnes in colmap#2293
- Replace result_of with invoke_result_t by @sarlinpe in colmap#2300
- Allow getters FocalLength{X,Y} for isotropic models by @sarlinpe in colmap#2301
- Add missing Boost targets and cleanup includes by @sarlinpe in colmap#2304
- Expose IncrementalMapperOptions::{mapper,triangulation} by @sarlinpe in colmap#2308
- Update install instructions for Mac by @Dawars in colmap#2310
- Remove unused ceres reference in doc by @ahojnnes in colmap#2315
- Fix typo by @whuaegeanse in colmap#2317
- Stable version 3.9 release by @ahojnnes in colmap#2319
- Updating geo-registration doc. by @ferreram in colmap#1410
- Adding user-specified option for reconstructing purely planar scene. … by @ferreram in colmap#1408
- Only apply sqlite vacuum command when elements are deleted from the database. by @ferreram in colmap#1414
- Replace Graclus with Metis dependency by @ahojnnes in colmap#1422
- Update ceres download URL in build script by @whuaegeanse in colmap#1430
- Fix type errors when building colmap with build.py in windows by @whuaegeanse in colmap#1440
- Fix bug in the computation of the statistics Global/Local BA by @whuaegeanse in colmap#1449
- Add RefineGeneralizedAbsolutePose and covariance estimation by @Skydes in colmap#1464
- Update docker image definition by @ahojnnes in colmap#1478
- Upgrade deprecated ceres parameterizations to manifolds by @ahojnnes in colmap#1477
- Use masks for stereo fusion on automatic reconstruction by @ibrarmalik in colmap#1488
- fix random seed set failed from external interface by @WZG3661 in colmap#1498
- Replace deprecated Eigen nonZeros() call for most recent Eigen versions. by @nackjaylor in colmap#1494
- Fix ceres-solver folder name by @f-fl0 in colmap#1501
- Improved convergence criterion for XYZ to ELL conversion by @ahojnnes in colmap#1505
- Fix bug in the function SetPtr of Bitmap by @whuaegeanse in colmap#1525
- Avoid the calling of copy constructor/assignment by @whuaegeanse in colmap#1524
- Avoid calling copy constructors of FeatureKeypoints and FeatureDescriptors by @whuaegeanse in colmap#1540
- Initialize freeimage if statically linked by @ahojnnes in colmap#1549
- Avoid hard crash if Jacobian matrix is rank deficient by @mihaidusmanu in colmap#1557
- visualize_model.py: added FULL_OPENCV model by @soeroesg in colmap#1552
- Update vcpkg version to fix CI pipeline by @ahojnnes in colmap#1568
- Replace deprecated Mac OS 10.15 with Mac OS 12 build in CI by @ahojnnes in colmap#1569
- Fix inconsistent between the actual executed image reader option and the saved project.ini file by @XuChengHUST in colmap#1564
- checkout the expected version of ceres solver by @scott-vsi in colmap#1576
- use default qt5 brew install directory #1573 by @catapulta in colmap#1574
- Fix image undistortion with nested image folders by @ahojnnes in colmap#1606
- Fix source file permissions by @ahojnnes in colmap#1607
- Fixed the collection of arguments in colmap.bat by @tdegraaff in colmap#1121
- Add OpenMP to COLMAP_EXTERNAL_LIBRARIES if enabled by @logchan in colmap#1632
- Fix output tile reconstructions are the same as the input reconstruction in RunModelSplitter (#1513) by @Serenitysmk in colmap#1531
- add libmetis-dev to solve METIS_INCLUDE_DIRS. by @FavorMylikes in colmap#1672
- Update install.rst by @tomer-grin in colmap#1671
- Update freeimage links. by @Yulv-git in colmap#1675
- fix small typo by @skal65535 in colmap#1668
- Update build.py with new glew link by @aghand0ur in colmap#1658
- Add use_cache in fusion options GUI by @hrflr in colmap#1655
- Add CI pipeline for Ubuntu 22.04 by @ahojnnes in colmap#1688
- Avoid unnecessary copies of data by @ahojnnes in colmap#1691
- Reduce memory allocations in correspondence graph search by @ahojnnes in colmap#1692
- Use FindCUDAToolkit when available. by @hanseuljun in colmap#1693
- Fixed a crash due to inconsistent undistortion by @SomeAlphabetGuy in colmap#1698
- Add CUDA Ubuntu 22.04 CI build by @ahojnnes in colmap#1705
- Delete the redundancy install of libmetis-dev by @thomas-graphopti in colmap#1721
- Fix broken loading of image masks on macOS by @buesma in colmap#1639
- Update install instructions with latest hints and known issues by @ahojnnes in colmap#1736
- Modernize smart pointer initialization, fix alloc/dealloc mismatch by @ahojnnes in colmap#1737
- Fix typo in cli.rst by @ojhernandez in colmap#1747
- Fix inconsistent image resizing between CPU/GPU implementations of SIFT by @Yzhbuaa in colmap#1642
- Reduce number of SIFT test features to make tests run under WSL by @ahojnnes in colmap#1748
- Tag documentation version with dev by @ahojnnes in colmap#1749
- Update copyright to 2023 by @ahojnnes in colmap#1750
- Fix max image dimension for positive first_octave by @ahojnnes in colmap#1751
- Fix SIFT GPU match creation by @ahojnnes in colmap#1757
- Fix SIFT tests for OpenGL by @ahojnnes in colmap#1762
- Suppress CUDA stack size warning for ptxas by @ahojnnes in colmap#1770
- Simplify CUDA CMake configuration by @ahojnnes in colmap#1776
- Fixes for CUDA compilation by @ahojnnes in colmap#1777
- Improvements to dockerfile and build pipeline by @ahojnnes in colmap#1778
- Explicitly require CMAKE_CUDA_ARCHITECTURES to be defined by @ahojnnes in colmap#1781
- Depend on system installed FLANN by @ahojnnes in colmap#1782
- Option to store relative pose between two cameras in database by @yanxke in colmap#1774
- Depend on system installed SQLite3 by @ahojnnes in colmap#1783
- Allow to save fused point cloud in colmap format when using command line by @boitumeloruf in colmap#799
- Fix typos in image.h by @Pascal-So in colmap#936
- Fix for EPnP estimator by @vlarsson in colmap#943
- Visualize models using Python in Open3D by @ahojnnes in colmap#948
- Update tutorial.rst by @ignacio-rocco in colmap#953
- 8 point algorithm internal contraint fix by @mihaidusmanu in colmap#982
- Python script for writing depth/normal arrays by @SBCV in colmap#957
- BuildImageModel: use std::vector instead of numbered arguments by @Pascal-So in colmap#949
- Fix bugs of sift feature matching by @whuaegeanse in colmap#985
- script for modifying fused results by @SBCV in colmap#984
- fix camera model query by @Pascal-So in colmap#997
- fixed small bug in visualize_model.py by @sniklaus in colmap#1007
- Update .travis.yml by @srinivas32 in colmap#989
- Ensure DecomposeHomographyMatrix() always returns rotations by @daithimaco in colmap#1040
- Remove deprecated qt foreach by @UncleGene in colmap#1039
- Fix AMD/Windows GUI visualization bug by @drkoller in colmap#1079
- include colmap_cuda in COLMAP_LIBRARIES when compiled with cuda by @ClementPinard in colmap#1084
- Fix runtime crash when sparsesuite is missing from ceres by @anmatako in colmap#1115
- Store relative poses in two_view_geometry table by @Ahmed-Salama in colmap#1103
- search src images for patch_match from all set, not only referenced subset by @DaniilSNikulin in colmap#1038
- Replace Travis CI with Azure Pipelines for Linux/Mac builds by @ahojnnes in colmap#1119
- Allow ReadPly to handle double precision files by @anmatako in colmap#1131
- Update GPSTransform calculations to improve accuracy by @anmatako in colmap#1132
- Add scale template flag in SimilarityTransform3::Estimate by @anmatako in colmap#1133
- Add CopyFile utility that can copy or hard/soft-link files by @anmatako in colmap#1134
- Expose BA options in IncrementalMapper by @anmatako in colmap#1139
- Allow configurable paths for mvs::Model by @anmatako in colmap#1141
- Change ReconstructionMaanger to write larger recons first by @anmatako in colmap#1137
- Setup Azure pipelines for Windows build by @ahojnnes in colmap#1150
- Add fixed extrinsics in rig config by @anmatako in colmap#1144
- Allow custom config and missing dependencies for patch-match by @anmatako in colmap#1142
- Update print statements for Python 3 compatibility by @UncleGene in colmap#1126
- Allow cleanup of SQLite tables using new database_cleaner command by @anmatako in colmap#1136
- Extend SceneClustering to support non-hierarchical (flat) clusters by @anmatako in colmap#1140
- Support more formats in model_converter by @anmatako in colmap#1147
- Fix Mac 10.15 build due to changed Qt5 path by @ahojnnes in colmap#1157
- Fix bug in ReadCameraRigConfig when reading extrinsics by @anmatako in colmap#1158
- Add utility to compare poses between two sparse models by @ahojnnes in colmap#1159
- Modularize executable main functions into separate sources by @ahojnnes in colmap#1160
- Fix unnecessary copies in for range loops by @ahojnnes in colmap#1162
- Add script to clang-format all source code by @ahojnnes in colmap#1163
- Add back new options and formats for model_converter by @anmatako in colmap#1164
- ImageReder new option and bug fix in GPS priors by @anmatako in colmap#1146
- Parallelize stereo fusion; needs pre-loading of entire workspace by @anmatako in colmap#1148
- Refactoring and new functionality in Reconstruction class by @anmatako in colmap#1169
- Add new functionality in image_undistorter by @anmatako in colmap#1168
- Add new CMake option to disable GUI by @anmatako in colmap#1165
- Fix the memory leak caused by not releasing the memory of the PRNG at the end of the thread by @whuaegeanse in colmap#1170
- Fix fusion segfault bug by @anmatako in colmap#1176
- Update SiftGPU to use floorf for floats by @anmatako in colmap#1182
- fix typo in extraction.cc by @iuk in colmap#1191
- Improvements to NVM, Cam, Recon3D, and Bundler exporters by @drkoller in colmap#1187
- Update model_aligner functionality by @anmatako in colmap#1177
- Add new model_cropper and model_splitter commands by @anmatako in colmap#1179
- use type point2D_t instead of image_t by @iuk in colmap#1199
- Fix radial distortion in Cam format exporter by @drkoller in colmap#1196
- Add new model_transformer command by @anmatako in colmap#1178
- Fix error of using urllib to download eigen from gitlab by @whuaegeanse in colmap#1194
- Multi-line string fix in Python model script by @mihaidusmanu in colmap#1217
- added visibility_sigma to CLI input options for delaunay_mesher. by @Matstah in colmap#1236
- Backwards compatibility of model_aligner by @tsattler in colmap#1240
- [update undistortion] update dumped commands by @hiakru in colmap#1276
- Compute reprojection error in generalized absolute solver by @Skydes in colmap#1257
- Modifying scripts/python/flickr_downloader.py to create files with correct extensions by @snavely in colmap#1275
- revise Dockerfile and readme. by @MasahiroOgawa in colmap#1281
- Update to latest vcpkg version by @ahojnnes in colmap#1319
- Fix compiler warnings reported by GCC by @ahojnnes in colmap#1317
- Auto-rotate JPEG images based on EXIF orientation by @ahojnnes in colmap#1318
- Upgrade vcpkg to fix CI build issues by @ahojnnes in colmap#1331
- Added descriptor normalization argument to feature_extractor. by @mihaidusmanu in colmap#1332
- Fix memory leak in the function of StringAppendV by @whuaegeanse in colmap#1337
- Add CUDA_SAFE_CALL to cudaGetDeviceCount. by @chpatrick in colmap#1334
- Add missing include in case CUDA/GUI is not available by @ahojnnes in colmap#1329
- Fix wrong WGS84 model and test cases in GPSTransform by @Freeverc in colmap#1333
- Fixes bug in sprt.cc: num_inliers was not set. by @rmbrualla in colmap#1360
- Prevent a divide by zero corner case. by @rmbrualla in colmap#1361
- Adds missing header. by @rmbrualla in colmap#1362
- Require Qt in COLMAPConfig only if GUI is enabled by @Skydes in colmap#1365
- Keep precision in the process of storing in text. by @whuaegeanse in colmap#1363
- Expose exe internals by @Skydes in colmap#1366
- Fix inliers matches extraction in EstimateUncalibrated function. by @ferreram in colmap#1369
- Expose exe internals - fix by @Skydes in colmap#1368
- Remove deprecated Mac OSX 10.14 image in ADO pipeline by @ahojnnes in colmap#1383
- Add Mac OSX 11 ADO pipeline job by @ahojnnes in colmap#1384
- Fix warnings for latest compiler/libraries by @ahojnnes in colmap#1382
- Fix clang compiler warnings by @ahojnnes in colmap#1387
- Add Address Sanitizer options and fix reported issues by @ahojnnes in colmap#1390
- User/joschonb/asan cleanup by @ahojnnes in colmap#1391
- Add ADO pipeline for Visual Studio 2022 by @ahojnnes in colmap#1392
- Add ccache option by @ahojnnes in colmap#1395
- Update ModelAligner to handle GPS and custom coords. and more by @ferreram in colmap#1371
- 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 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
- 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 commandcolmap gui
and other commands are available ascolmap [command]
. For example, the feature extractor is now available ascolmap 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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).
- Initial release of COLMAP.