docs/sphinx/rst/software/SfM/IncrementalSfM.rst
openMVG_main_SfM --sfm_engine "INCREMENTAL"
The [ACSfM]_ SfM is an evolution of the implementation used for the paper "Adaptive Structure from Motion with a contrario model estimation" published at ACCV 2012.
The incremental pipeline is a growing reconstruction process. It starts from an initial two-view reconstruction (the seed) that is iteratively extended by adding new views and 3D points, using pose estimation and triangulation. Due to the incremental nature of the process, successive steps of non-linear refinement, like Bundle Adjustment (BA) and Levenberg-Marquardt steps, are performed to minimize the accumulated error (drift).
Algorithm of the Incremental/Sequential Structure from Motion
.. code-block:: c++
Require: internal camera calibration (possibly from EXIF data) Require: pairwise geometry consistent point correspondences Ensure: 3D point cloud Ensure: camera poses compute correspondence tracks t compute connectivity graph G (1 node per view, 1 edge when enough matches) pick an edge e in G with sufficient baseline
The chain is designed to run on a sfm_data.json file and some pre-computed matches.
.. code-block:: c++
$ openMVG_main_SfM --engine INCREMENTAL -i Dataset/matches/sfm_data.json -m Dataset/matches/ -o Dataset/out_Incremental_Reconstruction/
Arguments description:
Required parameters:
[-i|--input_file]
[-m|--match_dir]
[-o|--out_dir]
Optional parameters:
[-a|--initial_pair_a NAME]
[-b|--initial_pair_b NAME]
[-c|--camera_model]
The camera model type that will be used for views with unknown intrinsic:
[-f|--refine_intrinsic_config] User can control exactly which parameter will be considered as constant/variable and combine them by using the '|' operator.
ADJUST_ALL -> refine all existing parameters (default)
NONE -> intrinsic parameters are held as constant
ADJUST_FOCAL_LENGTH -> refine only the focal length
ADJUST_PRINCIPAL_POINT -> refine only the principal point position
ADJUST_DISTORTION -> refine only the distortion coefficient(s) (if any)
NOTE Options can be combined thanks to '|':
ADJUST_FOCAL_LENGTH|ADJUST_PRINCIPAL_POINT -> refine the focal length & the principal point position
ADJUST_FOCAL_LENGTH|ADJUST_DISTORTION -> refine the focal length & the distortion coefficient(s) (if any)
ADJUST_PRINCIPAL_POINT|ADJUST_DISTORTION -> refine the principal point position & the distortion coefficient(s) (if any)
IncrementalSfM2
INCREMENTALV2 is a more generic incremental pipeline than INCREMENTAL since it can:
The main features are:
SfMSceneInitializer.This new engine (SequentialSfMReconstructionEngine) is easier to read and to customize than SequentialSfMReconstructionEngine.
fast:
SequentialSfMReconstructionEngine.flexible:
The engine can extend a partial reconstruction, you can call this engine on the results of any other SfM Engine. For example, you can run GlobalSfM (to obtain the pose of the camera triplets) and then run SequentialSfMReconstructionEngine2 to localize the remaining images.
You can now initialize the reconstruction with a n-view reconstruction (Stellar [2]) and provide a very stable seed for the reconstruction.
For the moment three SfMSceneInitializer are implemented:
SfMSceneInitializer:
SfMSceneInitializerMaxPair:
SfMSceneInitializerStellar: