This module provides math and linear algebra utils that relies on [Eigen] library. Eigen is a C++ template library for linear algebra.
Basic idea is to provide to openMVG :
- a high level memory container for matrices and vectors,
- an easy matrices and vectors manipulation,
- a collection of numeric solvers and related algorithms.
Vector, Matrix containers¶
OpenMVG redefines some Eigen basis type (points, vectors, matrices) for code consitency and clarity:
Vec2a single 2d point stored as a column matrix (x,y),
Vec3a single 3d point stored as a column matrix (x,y,z),
Vec2f, Vec3ffloat version.
Veca vector of value (double precision),
Vecfa vector of floating point value,
Matthe generic matrix container,
Mat2Xa collection of 2d points stored by column,
Mat3Xa collection of 3d points stored as column.
Note: Default memory alignment is column major.
// Create a set of 2D points store as column Mat2X A(2, 5); A << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; A.col(); // return a column vector : (1,6)^T A.row(); // return a row vector : (1,2,3,4,5)
- SVD/QR/LU decomposition.
To know more¶
Please visit: http://eigen.tuxfamily.org/dox/group__QuickRefPage.html