Skip to content

OpenMVG data structures

Pierre Moulon edited this page Feb 9, 2020 · 6 revisions

OpenMVG is articulated around three data structures called SfM_Data, Regions and PairWiseMatches.

The SfM_data data structure is a generic container used to store relationships between:

  • Views image filename and reference to camera intrinsic and pose
  • Intrinsics camera internal parameters
  • Poses camera extrinsic parameters
  • Landmarks 3D Structure (3D points and their visibility information)
struct SfM_Data
{
  Views views;           /// reference to the used images (each image link to a pose and intrinsic camera id)
  Poses poses;           /// poses data (indexed by view.id_pose)
  Intrinsics intrinsics; /// intrinsics camera data (indexed by view.id_intrinsic)
  Landmarks structure;   /// Structure (3D points with their 2D observations)
...
};

The Regions data structure is a generic container used to store image descriptions:

  • Features (point-based)
  • Descriptors (could be a vector of scalars or binary values)

The PairWiseMatches data structure is used to store index of corresponding features between pair of images.

Notes:

  • SfM_data/Views are unique, while Intrinsics, Poses can be shared.
  • This SfM_Data structure IO can be JSON/XML/BINARY to ease interoperability with your tools or PLY (Output only) for visualization.

OpenMVG pipelines are articulated around two main concepts:

  • Abstract Data Providers
    • Features_provider
    • Regions_Provider
    • Matches_Provider
  • Abstract Processing Engines
    • ReconstructionEngine

This API allows to easily implement new pipeline and use any data format that a user wants to leverage.

Here an overview of OpenMVG data structures, data providers, binaries and pipeline system: image

Clone this wiki locally