Releases: openMVG/openMVG
v2.1 Sablefish
OpenMVG v2.1 "Sablefish" is out
What's new:
- 42 PR has been handled.
- 45 issues/features enhancement has been completed.
OpenMVG core:
Core
- Add implementation of linear global translation (LiGT) - Global translations from global rotations and track observations #2065
- Support for Ceres > 2.0 API #2162
- SVG module refactoring #2157
Build
- Improve support for non-x86 (Mac Silicon)
- Add pixi build pixi.toml rules to build OpenMVG in a local folder without contamination of your system 20ef483
Software
- Add python examples
Continuous Integration
- Add CodeQL workflow #2135
New Contributors
- @melhashash made their first contribution in #2010
- @rfabbri made their first contribution in #2038
- @p12tic made their first contribution in #2092
- @alkavan made their first contribution in #2101
- @BrentHuang made their first contribution in #2124
- @pwntester made their first contribution in #2135
- @StefanBruens made their first contribution in #2147
- @yanxke made their first contribution in #2159
- @kenshi84 made their first contribution in #2167
- @Sanheiii made their first contribution in #2168
- @awarebayes made their first contribution in #2257
- @konstantysz-samsung made their first contribution in #2261
- @jujimeizuo made their first contribution in #2259
What's Changed
- Fix ComputeMatches argument parser by @erikreed in #1950
- [build] Fix MSVC std::tolower error with std::locale by @pmoulon in #1952
- Fix main_SfM intrinsics flag usage by @erikreed in #1956
- VLAD Improvements by @rjanvier in #1964
- Improve P3P Nordberg (lambdatwist) by @rjanvier in #1972
- [Build] Modernize cmake openmp usage by @pmoulon in #1978
- Develop non-x86 - testCI by @pmoulon in #1979
- Develop cereal - test CI by @pmoulon in #1980
- Develop modernize openmp usage by @pmoulon in #1983
- Ensure we don't lose precision when exporting to txt by @melhashash in #2010
- builds on Mac OS 12 AppleClang + OpenMP by @rfabbri in #2038
- Add utm transfom support for software registration_to_exif_gps_position by @qingzhengzhuma in #1993
- Pull Request cxx20 by @pmoulon in #2049
- software: store relative paths in MVS scene by @cdcseacave in #2055
- Add implementation of linear global translation (LiGT) - Global translations from global rotations and track observations by @pmoulon in #2065
- Fix build againt cereal>1.3.0 by @bartoszek in #2071
- fix build error by @cdcseacave in #2085
- (trivial) Remove using namespace std and add std:: qualifications in few places where needed by @p12tic in #2092
- Adding missing GoPro cameras HERO8, HERO9, and HERO10. by @alkavan in #2101
- Fix inconsistency in spherical Intrinsic_Spherical projection functor by @rjanvier in #2087
- fix(image): fix png operation memleak by @BrentHuang in #2124
- Develop eigen sparse by @pmoulon in #2104
- Add CodeQL workflow by @pwntester in #2135
- Prefer CMake Config when looking for Flann by @StefanBruens in #2147
- Fix library install directories by @StefanBruens in #2148
- fix an error in colorHarmonize about eigen by @Yannnnnnnnnnnn in #1287
- [sfm] Update API to fit ceres::manifold for constant parameter group #2152 by @pmoulon in #2154
- [Samples] Add parameter to choose the relative pose solver by @pmoulon in #2155
- Fix inconsistency in spherical Intrinsic_Spherical projection functor by @pmoulon in #2156
- Add more cameras to DB by @yanxke in #2159
- [SVG] module refactoring by @pmoulon in #2157
- [3rParty] Update eigen to 3.4.0 rc1 to official release by @pmoulon in #2161
- [sfm] Update for ceres2.0 API and shared loss_function #1715 by @pmoulon in #2162
- [Experimental] Add a new SfM pipeline based on stellar reconstruction by @pmoulon in #2070
- [software/import] Add support of Multiface dataset by @kenshi84 in #2167
- Export masks to openMVS by @Sanheiii in #2168
- Add to camera db. by @yanxke in #2181
- Update Dockerfile by @awarebayes in #2257
- software: store relative paths for masks in MVS scene and fix global space IDs in #2193
- Add Samsung SM-S901B by @konstantysz-samsung in #2261
- fix: compilation for ubuntu22.04 arm64 by @jujimeizuo in #2259
- [Visualization] Add a ReRun sfm_data.json visualizer by @pmoulon in #2245
Full Changelog: v2.0...v2.1
v2.0 Rainbow Trout
OpenMVG v2.0 "Rainbow Trout" is out
What's new:
- 21 PR has been handled.
- 32 issues/features enhancement has been completed.
OpenMVG core:
Logging
- Centralized LOGGER OPENMVG_LOG_INFO/WARNING/ERROR
Matching
- CBIR - Content Based Image Retrieval
- VLAD global matching image indexing & retrieval enhancement [1,2,3]
- Pre-Emptive feature matching [4]
Software
- One SFM binary to rules them All
- access to Incremental, IncrementalV2 and Global from a single binary!
- Add utility to convert matches from .bin to .txt or .txt to .bin
- Improve OpenMVS interface
- ComputeStructureFromKnownPoses can now triangulate landmarks in sfm_data files (i.e computed by main_VO)
- Frustrum display
- Top face colored
- Add near/far bounds limits as command line parameters
- Dataset import
- Add support of BlendedMVS/MVG dataset
Third-party
- Update Eigen to 3.4.0
Benchmarking
- Add an image collection matching benchmark binary
Thank you to @rjanvier, @rperrot,@cdcseacave, @nguyengiang41, @yocabon, @tjdahlke, @cenit, @TongLing916, @csparker247, @Cecilimon, @mitjap, @qingzhengzhuma, @kimoktm, @LWisteria, @flosincapite, @yurivict, @Hiltona99
[1]"Aggregating local descriptors into compact codes". H. Jegou, F. Perronnin, M. Douze, J. Sanchez, and P. Perez., C. Schmid. PAMI, 2012.
[2] "All About VLAD". R. Arandjelovic and A. Zisserman. CVPR 2013.
[3] "Revisiting the VLAD image representation". J. Delhumeau, P.H. Gosselin, H. Jégou, P. and Pérez. ACM Multimedia 2013.
[4] "Towards Linear-time Incremental Structure from Motion" C. Wu, 3DV 2013
v1.6 Halibut
OpenMVG v1.6 "Halibut" is out
What's new:
- 24 PR has been handled.
- 22 issues/features enhancement has been completed.
OpenMVG core:
Graphics
- Add a helper class to manage to draw colors from gradient & heat bar/map #1594
- Add opacity support in svgStyle #1697
Multiview
- Add 3 two-view triangulation routines [1,2] Thx to @rjanvier #1623 #1645
- Add Upright Essential matrix solver [3] #1718
- Add relative upright up2p solver [4] Thx to @vlarsson #1721
Matching
Software/SfM
- Add ability to chose Triangulation and Resection/Pose method from command line #1729
- Add display of view-graph statistics in ComputeMatches #1662
- ExportToOpenMVS supports now grayscale images @junlinp #1709
- FrustrumExport top face is now colored @csparker247 #1702
Build enhancement
- Fix includes for GCC 9.2 #1666
Wiki
- Initiate a wiki https://github.com/openMVG/openMVG/wiki (with tutorials and description of OpenMVG data structures) #1675
[1] Triangulation: Why Optimize? - BMVC 2019
[2] Closed-Form Optimal Triangulation Based on Angular Errors - ICCV19
[3] Fast and Reliable Minimal Relative Pose Estimation under Planar Motion. Sunglok Choi, Jong-Hwan Kim, 2018
[4] Closed-form solutions to the minimal absolute pose problems with known vertical direction. Zuzana Kukelova, Martin Bujnak, Tomas Pajdla. ACCV 2010
[5] Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs Yu. A. Malkov, D. A. Yashunin. 2016
v1.5 Coho Salmon
OpenMVG v1.5 “Coho Salmon” is out
What's new:
- 21 PR has been handled.
- 29 issues/features enhancement has been completed.
OpenMVG core:
Multiview
- Add a new P3P solver "Lambda Twist: An Accurate Fast Robust Perspective Three Point (P3P) Solver, ECCV 2018. Thx to @rjanvier & @midjji #1500
SfM
- Enhancement to SequentialSfMReconstructionEngine2
- Enhanced unit test for robust triangulation #1520
Software/SfM
- Add Spherical SfM scene to Cubic SfM Scene converter to allow to use MVS on spherical SfM scene (Thx to @li.guan) #1505
Tracking
- add a unit test for union_find #1550
Clustering (NEW)
Build enhancement
- Fix a CMake build error related to OSI/CLP/COIN (regression) #1463
- Update Dockerfile to use ubuntu::bionic #1464
- Fix some CXX Flag transitivity with cmake build system #1176
- Enhance iOS build support #1300
Continuous Integration
- Update Travis.ci to build on macOS 10.13 and 10.14
- Faster windows CI (no debug build)
Documentation
- Update doc for Microsoft vcpkg #1531 (official port! ->
vcpkg install openmvg[core,openmp]
) - Update doc for the Docker interface
UI
- Fix GCP registration if the numbering is not continuous #1536
v1.4 Chinook Salmon
OpenMVG v1.4 “Chinook Salmon” is out
What's new:
- 14 PR has been handled.
- 22 issues/features enhancement has been completed.
OpenMVG core:
Matching:
- Fix SVG matches export when images have different width or height size #1216
- Use reference instead of a temporary in the function named MatchesPairToMat #1188
- Create a RegionMatcherFactory #1056
Multiview:
- Fix the CVPR 2017 resection solver #1253
- Add an orthographic essential matrix solver "Two-View Orthographic Epipolar Geometry: Minimal and Optimal Solvers", Magnus Oskarsson, Journal of Mathematical Imaging and Vision, 2017. #1246
Robust-Estimation:
- Add a GMS Filter (Grid-based Motion Statistics filter) "GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence, JiaWang Bian and al., CVPR2017 #1049
SfM:
-
Implement a new Incremental SfM pipeline, SequentialSfMReconstructionEngine2: #1241
- The reconstruction initialization is done thanks to an abstract interface, SfMSceneInitializer. The reconstruction can now start from 2 to n images (n-uplets or existing poses).
- The triangulation stage considers the entire scene tracks.
- The resection stage is based on 2d-3D matching confidence.
- The reconstruction can start with existing camera poses.
- This new engine is easier to read and to customize (compact and use more abstraction).
-
Fix a bug in ESfM_Data enum (behavior was a minor impact on control_point usage) #1306
software/localization:
- Extend the localization software to support any camera type in the command line #1210
software/SfM:
- Add openMVG_main_SfMInit_ImageListingFromKnownPoses to init OpenMVG sfm_data scene (views, intrinsics & poses) from GT dataset #1195:
- DTUMVS, ETH3D, Kitty, Middlebury, Strecha
- Remove useless code in IncrementalSfM #1254
- Add functions to export tracking data to sfm_data landmarks. enhancement #1292
- Move export2X and exportX binaries to software/SfM/export directory enhancement #1268
- Move the matcher out of a loop for to be more efficient in main_ListMatchingPairs.cpp #1172
Build enhancement
- User modern CMake recommendations #1176 #1146 #1235 #1147 #1221 #1269
- Fix shared libraries build #1339 #1293 #1286 #1358
- Enhance build documentation to support external libs build by Microsoft/VCPKG #1327
- Support Ceres-Solver 2.0 API changes #1323
- Enhance support of external JPEG, PNG, and TIFF libraries #1266
Samples
- Rewrite main_pano_converter.cpp to use the Spherical camera model enhancement #1314
Continuous Integration
- Enhance Travis XCode build #1170
Documentation
UI
- Fix some minor issues #1224
v1.3 "Yellowtail"
OpenMVG v1.3 “Yellowtail” is out
What's new:
OpenMVG core:
Cameras:
- Generalization of usage of bearing vectors (normalized camera ray vectors).
- Allow to use a common interface for essential matrix, triangulation, and resection with know intrinsic data (pinhole, spherical, …).
Geometry:
- Add a 3D plane solver.
- Add a 2D convex hull computation.
Graph:
- Faster method to list triplets of a graph.
Image:
- Add integral image computation.
- Fix a memory leak in JPG image header reader (@jby1993).
Features:
- Fix a mask filtering bug with AKAZE features.
Matching:
- Simplification of the Hamming distance metric code.
Bundle Adjustment:
- Fix usage of control points with Spherical cameras (@Joeppie).
Multiview:
- Faster Fundamental and Essential solvers.
- E solver is now usable with bearing vectors.
- Add a P3P solver (faster and more accurate - CVPR 2017).
- Simplification of the multiple view triangulation module.
Software:
- Add a new binary openMVG_main_ChangeLocalOrigin in order to normalize (re-center) GPS scene to be processed by MVS softwares @hcjghr.
Third party:
- Update ceres, cereal, eigen, stlplus, easy_exif.
General enhancement:
- 15 PR have been handled.
- 25 issues/features enhancement have been completed.
SfM:
- Incremental SfM supports spherical images,
- Enhanced SfM report (min, mean, max track length is now exported).
Build/Continuous integration:
- Enhanced Visual Studio continuous integration (VS2015/2017).
- Enhanced GCC and CLANG continuous integration.
UI:
- Enhanced GUI control for ui_openMVG_control_points_registration @trylle.
Code Style:
- Use more C++11 feature.
Congrats to @rjanvier, @rperrot, @rwiesenfarth, @hcjghr, @Joeppie, @jby1993, @whuaegeanse & al. for their valuable contributions!
v1.2 "Sockeye Salmon"
OpenMVG v1.2 “Sockeye Salmon” is out
What's new:
OpenMVG core:
Cameras:
- Add a spherical camera model
Matching:
- Add a super fast AVX2 L2 distance functor for SIFT matching (5x faster).
Bundle Adjustment:
- Add support for the spherical camera model.
Tracks:
- Fix a track generation bug
- Add a new fast method to compute common track between various views.
System:
- Add a runtime CPUID instruction set detection.
Software:
- Fix ComputeFeatures -n option. Fix the multithread feature extraction.
- Add triangulation of a match file in ComputeStructureFromKnownPoses (now 2 length tracks can be kept).
- Add a sfm_data scene clustering approach to split the scene in chunks for MVS post-processing.
- Add an adjacency matches matrix viewer #831.
- Add new GUI samples (2 view matches, distortion, VO tracking).
General enhancement:
- 31 PR have been handled
- 58 issues/features enhancement have been completed
Speed:
- Improve Incremental SfM speed
Build/Continuous integration:
- Faster and less memory hungry compilation (2X faster)
- Add OSX to the tested compilation and running targets
- Use codacity to detect codestyle error
- Add compilation time detection of CPU instruction set support for recent CPU
- Fix AVX/AVX2 VisualStudio enhanced instruction set support
- Add support for building a Ubuntu Snap package
Reproducibility:
- Random number generation is now seeded
Code Style:
- Use more C++11 feature
- Work on minimizing the includes, use forward declarations.
Congrats to @bjornpiltz & @hugbed & @rjanvier & @rperrot & @srivathsanmurali & al. for their valuable contributions!
v1.1 "Otocinclus"
OpenMVG "Otocinclus" v1.1 is out.
What's new:
OpenMVG core:
Features:
- Add an openMVG core sift implementation based on Anatomy of the SIFT Method IPOL2014, see the repeatability study here
Sfm:
- Geodesy: Enable usage of GPS position priors for rigid & non rigid registration doc.
Software:
- Geodesy: Enhance GCP registration support
- Enable the usage of a Cache system to handle large dataset on tiny computers {experimental feature} => see the -c option on main_ComputeFeatures and SfM softwares,
- Add a feature tracking demo (description based or local window based (KTL)).
- localization: the binary can now localize a collection of images
Samples:
- Add a sample that convert a spherical panoramic images into many pinhole images demo.
General enhancement:
Build/Continuous integration:
- Remove tinyThread optional dependency
- Use FLANN as a header only library
- Add a uninstall target
Speed:
- Improve Incremental SfM speed
Memory usage:
- Bundle Adjustment uses twice less memory,
- GlobalSfM use less memory (avoid storage of normalized feature coordinates).
Code Style:
- Use more C++11 feature (type alias)
- Work on minimising the includes, use forward declarations, clean #ifdef #define
Publication:
OpenMVG: Open Multiple View Geometry
Pierre Moulon, Pascal Monasse, Romuald Perrot, Renaud Marlet
RRPR 2016: 1st Workshop on Reproducible Research in Pattern Recognition
Congrats to @rperrot & @mitjap & @hcjghr & @sebastienchappuis & @bjornpiltz for their valuable contributions!
Thanks to the community for using the project and doing more & more challenging projects!
v1.0 "Pangio kuhlii"
OpenMVG "Pangio kuhlii" v1.0 is out.
What's new:
OpenMVG core:
-Geometry module:
- Enhanced HalfPhane object's intersection (add bounding box to camera frustum intersection)
- Cameras:
- Add a FishEye camera model (nice fit for GoPro images).
- Features:
- affine detector (MSER/TBMR),
- support of feature filtering thanks to image mask
easy removal of unwanted part (avoid specific image object like removing the car footprint in street mapping sequences)
- Multiview:
- faster rotation averaging,
- enhanced translation averaging (can handle any combination of n-uplet of relative translations).
2-view estimates can be mixed with 3-view and n-view estimates.
- SfM/Bundle Adjustment:
- optional usage of Weighted GCP,
- precise control over which intrinsic parameters will be optimized
(ex ADJUST_FOCAL_LENGTH|ADJUST_DISTORTION => will keep principal point fixed).
General enhancement:
Build:
- full support of ARM target (ready to be used on Raspberry & co.),
- added continuous integration for VISUAL STUDIO thanks to AppVeyor.
Speed:
- AC-RANSAC is 20-40% faster thanks to a residual error quantification,
- multi-threaded computation of features => see -n option on main_ComputeFeatures,
- faster Incremental & Global SfM pipelines,
- faster IO for the matches and sfm_data files.
Memory usage:
- make some parts use twice less memory than before.
OpenMVG exporter:
- OpenMVG provides its own exporter for OpenMVS.
Documentation:
- WIP: doxygen documentation
Congrats to @Ornis & @rperrot & @cdcseacave for their valuable contributions!
Thanks to @igorti & @pyp22 for dataset sharing for validation of the FishEye camera model.
Thanks to the community for using the project and realizing more & more challenging projects!
v0.9 "Corydoras sterbai"
OpenMVG "Corydoras sterbai" v0.9 is out.
It's recommended to checkout the master tree from the Git rather than download this archive (in order to get submodule updates).
What's new:
- New features:
- New Image Localization API:
- new demo: find image poses inside an existing SfM reconstruction.
- Matching API:
- add a generic CascadeHashing implementation that works on arbitrary descriptor type,
- Ground control point support:
- QT GUI application & Rigid Registration to GCP.
- Automatic pair selection for the sequential/incremental pipeline,
- New Camera Model:
- Brown-Conrady Radial3+tangential2.
- OpenMVG2MVE2:
- new exporter for MVE2.
- Add a sample for features & description repeatability evaluation.
- New Image Localization API:
- Enhancement:
- Build:
- enhanced cmake compilation (cmake report shows third party library version numbers)
- add ability to use 3rd libraries as external modules,
- OpenMVG is more easy to install and use in your own projects: Find_package(OpenMVG)
- Speed:
- faster Incremental & Global SfM pipelines,
- faster matching of image collections.
- Robustness:
- enhanced stability of the global SfM pipeline
- Build:
Thanks to
@Baritone, @cbalint13, @davidli43, @fcastan, @KevinCain,
@LMescheder, @Ornis, @pranny, @pyp22, @rhiestan, @rperrot, @simogasp
for testing and feedback.