This class implements self-calibration for multiple views.
More...
#include <MultipleViewGeometry.h>
|
| static bool | findCommonIntrinsicsFromProjectionMatricesIF (const ConstIndexedAccessor< HomogenousMatrix4 > &iFlippedProjectionMatrices, SquareMatrix3 &cameraIntrinsics, SquareMatrix4 *Q=nullptr, SquareMatrix3 *omega=nullptr) |
| | Estimate the common intrinsic camera matrix based on an Absolute Conic omega (ω):
omega = K * K^T — (ω_j = ω = KK^T).
|
| |
| static bool | findCommonIntrinsicsFromProjectionMatricesIF (const ConstIndexedAccessor< HomogenousMatrix4 > &iFlippedProjectionMatrices, const unsigned int imageWidth, const unsigned int imageHeight, SquareMatrix3 &cameraIntrinsics, SquareMatrix4 *Q=nullptr, SquareMatrix3 *omega=nullptr) |
| | Estimate a common intrinsic camera matrix based on an Absolute Conic ω:
ω_j = ω = KK^T.
|
| |
| static bool | determineAbsoluteDualQuadricLinearIF (const ConstIndexedAccessor< HomogenousMatrix4 > &iFlippedProjectionMatrices, SquareMatrix4 &matrixQ, const unsigned int imageWidth, const unsigned int imageHeight, bool equalFxFy=true) |
| | Estimates the absolute dual quadric Q_infinity (Q∞) from several projection-pose matrices by solving a linear system:
omega = P_j * Q_infinity * P_j^T — (ω_j = P_j * Q∞ * P_j^T).
|
| |
| static bool | intrinsicsFromAbsoluteDualQuadricIF (const SquareMatrix4 &symmetricQ, const ConstIndexedAccessor< HomogenousMatrix4 > &iFlippedProjectionMatrices, SquareMatrix3 *intrinsics) |
| | Determines individual intrinsic camera matrices from a known absolute dual quadric Q_infinity (Q∞) and corresponding camera-projection-pose matrices:
omega_j = P_j * Q_infinity * P_J^T = K_j * K_j^T — (ω_j = P_j * Q∞ * P_J^T = K_j * K_j^T).
|
| |
| static bool | transformProjectiveToMetricIF (const SquareMatrix4 &Q, const ConstIndexedAccessor< HomogenousMatrix4 > &iFlippedProjectionMatrices, HomogenousMatrix4 *iFlippedMetricProjectionMatrices, SquareMatrix4 *transformation=nullptr) |
| | Transforms a projective reconstruction towards a metric reconstruction.
|
| |
| static bool | metricProjectionMatricesToPosesIF (const ConstIndexedAccessor< HomogenousMatrix4 > &metricProjectionsIF, const SquareMatrix3 &intrinsic, HomogenousMatrix4 *posesIF) |
| | Decomposes metric camera projection matrices all containing/sharing the same known camera matrix (intrinsic camera matrix) into (inverted and flipped) camera poses simply by applying the inverted intrinsic matrix.
|
| |
This class implements self-calibration for multiple views.
◆ createLinearSystemForAbsoluteDualQuadric()
| static Matrix Ocean::Geometry::AutoCalibration::createLinearSystemForAbsoluteDualQuadric |
( |
const unsigned int |
omegaRowIndex, |
|
|
const unsigned int |
omegaColumnIndex, |
|
|
const HomogenousMatrix4 & |
iFlippedProjectionMatrix |
|
) |
| |
|
staticprivate |
Creates a line for the linear system for the zero condition of absolute conic ω(i, j).
The line contains values of the upper triangle entities of absolute dual quadric matrix Q_infinity — (Q∞): ω(i, j) = [P * Q∞ * P^T](i, j) = 0
- Parameters
-
| omegaRowIndex | Row index of absolute conic ω |
| omegaColumnIndex | Column index of absolute conic ω |
| iFlippedProjectionMatrix | The inverted and flipped camera projection matrix, must be valid |
- Returns
- A line matrix [1x10] containing the values of the upper triangle entities of the symmetric matrix Q∞
◆ determineAbsoluteDualQuadricLinearIF()
| static bool Ocean::Geometry::AutoCalibration::determineAbsoluteDualQuadricLinearIF |
( |
const ConstIndexedAccessor< HomogenousMatrix4 > & |
iFlippedProjectionMatrices, |
|
|
SquareMatrix4 & |
matrixQ, |
|
|
const unsigned int |
imageWidth, |
|
|
const unsigned int |
imageHeight, |
|
|
bool |
equalFxFy = true |
|
) |
| |
|
static |
Estimates the absolute dual quadric Q_infinity (Q∞) from several projection-pose matrices by solving a linear system:
omega = P_j * Q_infinity * P_j^T — (ω_j = P_j * Q∞ * P_j^T).
Here, we assume no skew and the principle point in the center of the camera frame.
- Parameters
-
| iFlippedProjectionMatrices | The inverted and flipped camera projection matrices [K | P0], [K | P1], [K | P2], ..., with Pi = [Ri | ti], at least 3 |
| matrixQ | Resulting absolute dual quadric Q_infinity — (Q∞) |
| imageWidth | Width of the camera frame in pixel, with range [1, infinity) |
| imageHeight | Height of the camera frame in pixel, with range [1, infinity) |
| equalFxFy | Forces equal focal length in both dimension |
- Returns
- True, if succeeded
- See also
- findCommonIntrinsicsFromProjectionMatricesIF()
◆ findCommonIntrinsicsFromProjectionMatricesIF() [1/2]
Estimate a common intrinsic camera matrix based on an Absolute Conic ω:
ω_j = ω = KK^T.
Solve a linear system by assuming zero skew, a known principle point (centered in the camera frame) and equal focal length for each ω
- Parameters
-
| iFlippedProjectionMatrices | Inverted and flipped camera projection matrices [K | P0], [K | P1], [K | P2], ..., with Pi = [Ri | ti], at least 3 |
| imageWidth | Width of the camera frame in pixel, with range [1, infinity) |
| imageHeight | Height of the camera frame in pixel, with range [1, infinity) |
| cameraIntrinsics | Resulting camera intrinsics matrix |
| Q | Resulting absolute dual quadric Q∞, optionally |
| omega | Resulting absolute conic &omega, optionally |
- Returns
- True, if succeeded
- See also
- findAbsoluteDualQuadricLinear()
◆ findCommonIntrinsicsFromProjectionMatricesIF() [2/2]
Estimate the common intrinsic camera matrix based on an Absolute Conic omega (ω):
omega = K * K^T — (ω_j = ω = KK^T).
Solve a linear system by assuming equal entities in each ω
- Parameters
-
| iFlippedProjectionMatrices | The inverted and flipped camera projection matrices [K * P0], [K * P1], [K * P2], ..., with Pi = [Ri | ti], at least 3 |
| cameraIntrinsics | Resulting intrinsic camera matrix |
| Q | Optional resulting absolute dual quadric Q∞ |
| omega | Optional resulting absolute conic &omega |
- Returns
- True, if succeeded
- See also
- findAbsoluteDualQuadricLinear()
◆ getTransformProjectiveToMetricMatrix()
| static bool Ocean::Geometry::AutoCalibration::getTransformProjectiveToMetricMatrix |
( |
const SquareMatrix4 & |
Q, |
|
|
SquareMatrix4 & |
transformation |
|
) |
| |
|
staticprotected |
Determines the perspective transformation to get a metric reconstruction.
Q∞ = H * Î * H^T, factorized by eigen decomposition.
- Parameters
-
| Q | Absolute dual quadric Q∞ |
| transformation | Resulting perspective transformation H |
- Returns
- True, if succeeded
- See also
- transformProjectiveToMetric()
◆ intrinsicsFromAbsoluteDualQuadricIF()
Determines individual intrinsic camera matrices from a known absolute dual quadric Q_infinity (Q∞) and corresponding camera-projection-pose matrices:
omega_j = P_j * Q_infinity * P_J^T = K_j * K_j^T — (ω_j = P_j * Q∞ * P_J^T = K_j * K_j^T).
The Cholesky decomposition is applied to factorize omega into K.
- Parameters
-
| symmetricQ | The absolute dual quadric q_infinity which is symmetric |
| iFlippedProjectionMatrices | The inverted and flipped camera projection pose matrices |
| intrinsics | The resulting intrinsic camera matrices, one for each projection pose matrix |
- Returns
- True, if succeeded
- See also
- findAbsoluteDualQuadricLinear()
-
transformProjectionsZeroPrinciplePoint()
◆ metricProjectionMatricesToPosesIF()
Decomposes metric camera projection matrices all containing/sharing the same known camera matrix (intrinsic camera matrix) into (inverted and flipped) camera poses simply by applying the inverted intrinsic matrix.
Based on the following equation: P_metric = K * [R t] we can determine the camera poses by: [R t] = K^-1 * p_metric.
- Parameters
-
| metricProjectionsIF | The inverted and flipped metric camera projection matrices |
| intrinsic | The already known intrinsic camera matrix K |
| posesIF | The resulting inverted and flipped camera poses, one for each given camera projection matrix |
- Returns
- True, if succeeded
- See also
- transformProjectiveToMetric().
◆ transformProjectionsZeroPrinciplePoint()
Transforms an inverted and flipped camera projection matrix P = K * [R|t] in a way that the principle point of the camera profile (the camera intrinsics) is zero.
P' = T * P.
- Parameters
-
| iFlippedProjectionMatrices | Inverted and flipped camera projection matrices, at least one |
| imageWidth | Width of image in pixel, with range [1, infinity) |
| imageHeight | Height of image in pixel, with range [1, infinity) |
| iFlippedNormalizedProjectionMatrices | Resulting normalized inverted and flipped camera projection matrices, one for each given camera projection matrix |
| backTransformation | Optional resulting back transformation matrix T^-1 |
- Returns
- True, if succeeded
- See also
- transformProjectiveToMetric()
◆ transformProjectiveToMetricIF()
Transforms a projective reconstruction towards a metric reconstruction.
Q∞ = H * Î * H^T.
P_metric = P * H.
- Parameters
-
| Q | Absolute dual quadric Q∞ |
| iFlippedProjectionMatrices | The camera projection matrices (inverted flipped) |
| iFlippedMetricProjectionMatrices | Resulting metric projection matrices (inverted flipped) |
| transformation | Optional resulting perspective transformation matrix |
- Returns
- True, if succeeded
- See also
- getTransformProjectiveToMetricMatrix()
◆ upperTriangleCholeskyDecomposition()
| static bool Ocean::Geometry::AutoCalibration::upperTriangleCholeskyDecomposition |
( |
const SquareMatrix3 & |
omega, |
|
|
SquareMatrix3 & |
cameraIntrinsic |
|
) |
| |
|
staticprivate |
Performs the decomposition of an absolute conic omega (ω) into the intrinsic camera matrix:
omega = K * K^T — (ω = K * K^T), where K is the camera matrix (which is a upper triangular matrix).
The Cholesky decomposition is applied.
- Parameters
-
| omega | The (symmetric) absolute conic to be decomposed (ω) |
| cameraIntrinsic | The resulting intrinsic camera matrix |
- Returns
- True, if succeeded
The documentation for this class was generated from the following file: