OpenMVG Versions Save

open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.

v2.1

4 months ago

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 20ef483700c14b31cc011a6b3680c5d4f433e516

Software

  • Add python examples
    • to use Kornia ML features with openMVG 8df4af8e0af11b354ab4482724a85a00ba9924c9
    • to export sfm_data.json scene to rerun #2245

Continuous Integration

  • Add CodeQL workflow #2135

New Contributors

What's Changed

Full Changelog: https://github.com/openMVG/openMVG/compare/v2.0...v2.1

v2.0

2 years ago

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

3 years ago

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

  • Add HNSWL2 matcher [5] @rjanvier #1665

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

[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

4 years ago

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
    • fix possible infinite loop #1241
    • enhance resection stability #1399
  • 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)

  • Add a Kmeans implementation (Llyod) @rperrot #1476

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

5 years ago

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).
  • Sfm Data Colorization refactoring #1252 #1256

  • 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

  • Improve build and geodesy documentation #1337 #1346 #1251

UI

  • Fix some minor issues #1224

v1.3

6 years ago

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

6 years ago

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 https://github.com/openMVG/openMVG/issues/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

7 years ago

OpenMVG "Otocinclus" v1.1 is out.

What's new:

OpenMVG core:

Features:

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

8 years ago

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

8 years ago

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

Thanks to @baritone, @cbalint13, @davidli43, @fcastan, @KevinCain, @LMescheder, @ORNis, @pranny, @pyp22, @rhiestan, @rperrot, @simogasp for testing and feedback.