Definition

Given images of fixed 3D points with , Structure from Motion jointly estimates the camera matrices (motion) and the 3D points (structure). Only the 2D observations are known.

flowchart LR
  A["Images"] -- "data association" --> B["Scene graph"] -- "SfM" --> C["Sparse model"] -- "MVS" --> D["Dense model"]

Typically the motion is estimated first (two-view geometry with the essential matrix), then the structure by triangulation, refined with bundle adjustment.

ParadigmIdeaEfficiency / Robustness / AccuracyExamples
Incrementalstart with two views, add one view per step (PnP, triangulate, BA)− / ++ / +COLMAP, OpenSfM
Globalall poses at once: rotation + translation averaging, then BA+ / + / +GLOMAP, OpenMVG, Theia
Hierarchicalcluster the scene graph, reconstruct clusters, merge++ / − / −

Trap

SfM is scale ambiguous: . The absolute size of the scene can’t be recovered from images alone.

Appears in