Ocean
Ocean::Geometry::NonLinearOptimizationOrientation Class Reference

This class implements least square or robust optimization algorithms for orientations. More...

Inheritance diagram for Ocean::Geometry::NonLinearOptimizationOrientation:

Static Public Member Functions

static bool optimizeOrientation (const AnyCamera &camera, const SquareMatrix3 &world_R_camera, const ConstIndexedAccessor< ObjectPoint > &objectPoints, const ConstIndexedAccessor< ImagePoint > &imagePoints, SquareMatrix3 &world_R_optimizedCamera, const unsigned int iterations, const Estimator::EstimatorType estimator=Estimator::ET_SQUARE, const Scalar lambda=Scalar(0.001), const Scalar lambdaFactor=Scalar(5), Scalar *initialError=nullptr, Scalar *finalError=nullptr, const Matrix *invertedCovariances=nullptr, Scalars *intermediateErrors=nullptr)
 Minimizes the projection error of a given 3DOF orientation. More...
 
static bool optimizeOrientationIF (const AnyCamera &camera, const SquareMatrix3 &flippedCamera_R_world, const ConstIndexedAccessor< ObjectPoint > &objectPoints, const ConstIndexedAccessor< ImagePoint > &imagePoints, SquareMatrix3 &optimizedFlippedCamera_R_world, const unsigned int iterations, const Estimator::EstimatorType estimator=Estimator::ET_SQUARE, const Scalar lambda=Scalar(0.001), const Scalar lambdaFactor=Scalar(5), Scalar *initialError=nullptr, Scalar *finalError=nullptr, const Matrix *invertedCovariances=nullptr, Scalars *intermediateErrors=nullptr)
 Minimizes the projection error of a given inverted and flipped 3DOF orientation. More...
 
static bool optimizeCameraOrientation (const PinholeCamera &pinholeCamera, const SquareMatrix3 &world_R_camera, const ConstIndexedAccessor< ObjectPoint > &objectPoints, const ConstIndexedAccessor< ImagePoint > &imagePoints, const bool distortImagePoints, SquareMatrix3 &world_R_optimizedCamera, PinholeCamera &optimizedCamera, const unsigned int iterations, const Estimator::EstimatorType estimator=Estimator::ET_SQUARE, const Scalar lambda=Scalar(0.001), const Scalar lambdaFactor=Scalar(5), Scalar *initialError=nullptr, Scalar *finalError=nullptr, const Matrix *invertedCovariances=nullptr, Scalars *intermediateErrors=nullptr)
 Minimizes the projection error of a given 3DOF orientation and the entire camera parameters (intrinsic and distortion). More...
 
static bool optimizeCameraOrientationIF (const PinholeCamera &pinholeCamera, const SquareMatrix3 &flippedCamera_R_world, const ConstIndexedAccessor< ObjectPoint > &objectPoints, const ConstIndexedAccessor< ImagePoint > &imagePoints, const bool distortImagePoints, SquareMatrix3 &optimizedFlippedCamera_R_world, PinholeCamera &optimizedCamera, const unsigned int iterations, const Estimator::EstimatorType estimator=Estimator::ET_SQUARE, const Scalar lambda=Scalar(0.001), const Scalar lambdaFactor=Scalar(5), Scalar *initialError=nullptr, Scalar *finalError=nullptr, const Matrix *invertedCovariances=nullptr, Scalars *intermediateErrors=nullptr)
 Minimizes the projection error of a given inverted and flipped 3DOF orientation and the entire camera parameters (intrinsic and distortion). More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from Ocean::Geometry::NonLinearOptimization
template<typename T >
static bool denseOptimization (T &provider, const unsigned int iterations=5u, const Estimator::EstimatorType estimator=Estimator::ET_SQUARE, Scalar lambda=Scalar(0.001), const Scalar lambdaFactor=Scalar(5), Scalar *initialError=nullptr, Scalar *finalError=nullptr, const Matrix *invertedCovariances=nullptr, Scalars *intermediateErrors=nullptr)
 Invokes the optimization of a dense (matrix) optimization problem. More...
 
template<typename T , Estimator::EstimatorType tEstimator>
static bool denseOptimization (T &provider, const unsigned int iterations=5u, Scalar lambda=Scalar(0.001), const Scalar lambdaFactor=Scalar(5), Scalar *initialError=nullptr, Scalar *finalError=nullptr, const Matrix *invertedCovariances=nullptr, Scalars *intermediateErrors=nullptr)
 Invokes the optimization of a dense (matrix) optimization problem. More...
 
template<typename T >
static bool sparseOptimization (T &provider, const unsigned int iterations=5u, const Estimator::EstimatorType estimator=Estimator::ET_SQUARE, Scalar lambda=Scalar(0.001), const Scalar lambdaFactor=Scalar(5), Scalar *initialError=nullptr, Scalar *finalError=nullptr, const Matrix *invertedCovariances=nullptr, Scalars *intermediateErrors=nullptr)
 Invokes the optimization of a sparse (matrix) optimization problem. More...
 
template<typename T , Estimator::EstimatorType tEstimator>
static bool sparseOptimization (T &provider, const unsigned int iterations=5u, Scalar lambda=Scalar(0.001), const Scalar lambdaFactor=Scalar(5), Scalar *initialError=nullptr, Scalar *finalError=nullptr, const Matrix *invertedCovariances=nullptr, Scalars *intermediateErrors=nullptr)
 Invokes the optimization of a sparse (matrix) optimization problem. More...
 
template<typename T >
static bool advancedDenseOptimization (T &advancedDenseProvider, const unsigned int iterations, Scalar lambda, const Scalar lambdaFactor, Scalar *initialError=nullptr, Scalar *finalError=nullptr, Scalars *intermediateErrors=nullptr)
 Invokes the optimization of a dense (matrix) optimization problem using an advanced optimization provider. More...
 
template<typename T >
static bool advancedSparseOptimization (T &advancedSparseProvider, const unsigned int iterations, Scalar lambda, const Scalar lambdaFactor, Scalar *initialError=nullptr, Scalar *finalError=nullptr, Scalars *intermediateErrors=nullptr)
 Invokes the optimization of a sparse (matrix) optimization problem using an advanced optimization provider. More...
 
template<Estimator::EstimatorType tEstimator>
static Scalar sqrErrors2robustErrors2 (const Scalars &sqrErrors, const size_t modelParameters, Vector2 *weightedErrors, Vector2 *weightVectors, const SquareMatrix2 *transposedInvertedCovariances)
 Translates the n/2 squared errors that correspond to n elements in the error vector to robust errors. More...
 
template<Estimator::EstimatorType tEstimator, size_t tDimension>
static Scalar sqrErrors2robustErrors (const Scalars &sqrErrors, const size_t modelParameters, StaticBuffer< Scalar, tDimension > *weightedErrors, StaticBuffer< Scalar, tDimension > *weightVectors, const Matrix *transposedInvertedCovariances)
 Translates the n/i squared errors that correspond to n elements in the error vector to robust errors. More...
 
template<Estimator::EstimatorType tEstimator>
static Scalar sqrErrors2robustErrors_i (const Scalars &sqrErrors, const size_t modelParameters, const size_t dimension, Scalar *weightedErrors_i, Scalar *weightVectors_i, const Matrix *transposedInvertedCovariances_i)
 Translates the n/i squared errors that correspond to n elements in the error vector to robust errors. More...
 
static Scalar sqrErrors2robustErrors2 (const Estimator::EstimatorType estimator, const Scalars &sqrErrors, const size_t modelParameters, Vector2 *weightedErrors, Vector2 *weightVectors, const SquareMatrix2 *transposedInvertedCovariances)
 Translates the n/2 squared errors that correspond to n elements in the error vector to robust errors. More...
 
template<size_t tDimension>
static Scalar sqrErrors2robustErrors (const Estimator::EstimatorType estimator, const Scalars &sqrErrors, const size_t modelParameters, StaticBuffer< Scalar, tDimension > *weightedErrors, StaticBuffer< Scalar, tDimension > *weightVectors, const Matrix *transposedInvertedCovariances)
 Translates the n/i squared errors that correspond to n elements in the error vector to robust errors. More...
 
static Scalar sqrErrors2robustErrors_i (const Estimator::EstimatorType estimator, const Scalars &sqrErrors, const size_t modelParameters, const size_t dimension, Scalar *weightedErrors_i, Scalar *weightVectors_i, const Matrix *transposedInvertedCovariances_i)
 Translates the n/i squared errors that correspond to n elements in the error vector to robust errors. More...
 

Detailed Description

This class implements least square or robust optimization algorithms for orientations.

Member Function Documentation

◆ optimizeCameraOrientation()

bool Ocean::Geometry::NonLinearOptimizationOrientation::optimizeCameraOrientation ( const PinholeCamera pinholeCamera,
const SquareMatrix3 world_R_camera,
const ConstIndexedAccessor< ObjectPoint > &  objectPoints,
const ConstIndexedAccessor< ImagePoint > &  imagePoints,
const bool  distortImagePoints,
SquareMatrix3 world_R_optimizedCamera,
PinholeCamera optimizedCamera,
const unsigned int  iterations,
const Estimator::EstimatorType  estimator = Estimator::ET_SQUARE,
const Scalar  lambda = Scalar(0.001),
const Scalar  lambdaFactor = Scalar(5),
Scalar initialError = nullptr,
Scalar finalError = nullptr,
const Matrix invertedCovariances = nullptr,
Scalars intermediateErrors = nullptr 
)
inlinestatic

Minimizes the projection error of a given 3DOF orientation and the entire camera parameters (intrinsic and distortion).

The given 3DOF orientation is the rotational part of a standard extrinsic camera matrix.

Parameters
pinholeCameraThe pinhole camera object defining the projection between 3D object points and 2D image points
world_R_camera3DOF orientation to minimize the projection error for
objectPointsThe accessor providing the 3D object points to be projected into the camera plane
imagePointsThe accessor providing the 2D image points corresponding to the object points, the image points may be distorted or undistorted depending on the usage of the distortImagePoints state
distortImagePointsTrue, to force the usage of the distortion parameters of the given camera object to distort the projected 2D image points before error determination
world_R_optimizedCameraResulting optimized 3DOF orientation
optimizedCameraThe resulting optimized camera with modified intrinsic camera parameters and distortion parameters
iterationsNumber of iterations to be applied at most, if no convergence can be reached
estimatorRobust error estimator to be used
lambdaInitial Levenberg-Marquardt damping value which may be changed after each iteration using the damping factor, with range [0, infinity)
lambdaFactorLevenberg-Marquardt damping factor to be applied to the damping value, with range [1, infinity)
initialErrorOptional resulting averaged robust pixel error for the given initial parameters depending on the selected estimator
finalErrorOptional resulting averaged robust pixel error for the final optimized parameters depending on the selected estimator
invertedCovariancesOptional set of 2x2 inverted covariance matrices that represent the uncertainties of the image points (a 2*n x 2 matrix)
intermediateErrorsOptional resulting intermediate (improving) errors
Returns
True, if the optimization succeeded
See also
optimizeOrientationIF().

◆ optimizeCameraOrientationIF()

static bool Ocean::Geometry::NonLinearOptimizationOrientation::optimizeCameraOrientationIF ( const PinholeCamera pinholeCamera,
const SquareMatrix3 flippedCamera_R_world,
const ConstIndexedAccessor< ObjectPoint > &  objectPoints,
const ConstIndexedAccessor< ImagePoint > &  imagePoints,
const bool  distortImagePoints,
SquareMatrix3 optimizedFlippedCamera_R_world,
PinholeCamera optimizedCamera,
const unsigned int  iterations,
const Estimator::EstimatorType  estimator = Estimator::ET_SQUARE,
const Scalar  lambda = Scalar(0.001),
const Scalar  lambdaFactor = Scalar(5),
Scalar initialError = nullptr,
Scalar finalError = nullptr,
const Matrix invertedCovariances = nullptr,
Scalars intermediateErrors = nullptr 
)
static

Minimizes the projection error of a given inverted and flipped 3DOF orientation and the entire camera parameters (intrinsic and distortion).

Beware: The given inverted and flipped 3DOF orientation is not equivalent to the rotational part of a standard extrinsic camera matrix.

Parameters
pinholeCameraThe pinhole camera object defining the projection between 3D object points and 2D image points
flippedCamera_R_world3DOF orientation to minimize the projection error for (inverted and flipped)
objectPointsThe accessor providing the 3D object points to be projected into the camera plane
imagePointsThe accessor providing the 2D image points corresponding to the object points, the image points may be distorted or undistorted depending on the usage of the distortImagePoints state
distortImagePointsTrue, to force the usage of the distortion parameters of the given camera object to distort the projected 2D image points before error determination
optimizedFlippedCamera_R_worldResulting optimized 3DOF orientation (inverted and flipped)
optimizedCameraThe resulting optimized camera with modified intrinsic camera parameters and distortion parameters
iterationsNumber of iterations to be applied at most, if no convergence can be reached
estimatorRobust error estimator to be used
lambdaInitial Levenberg-Marquardt damping value which may be changed after each iteration using the damping factor, with range [0, infinity)
lambdaFactorLevenberg-Marquardt damping factor to be applied to the damping value, with range [1, infinity)
initialErrorOptional resulting averaged robust pixel error for the given initial parameters depending on the selected estimator
finalErrorOptional resulting averaged robust pixel error for the final optimized parameters depending on the selected estimator
invertedCovariancesOptional set of 2x2 inverted covariance matrices that represent the uncertainties of the image points (a 2*n x 2 matrix)
intermediateErrorsOptional resulting intermediate (improving) errors
Returns
True, if the optimization succeeded
See also
optimizeOrientationIF().

◆ optimizeOrientation()

bool Ocean::Geometry::NonLinearOptimizationOrientation::optimizeOrientation ( const AnyCamera camera,
const SquareMatrix3 world_R_camera,
const ConstIndexedAccessor< ObjectPoint > &  objectPoints,
const ConstIndexedAccessor< ImagePoint > &  imagePoints,
SquareMatrix3 world_R_optimizedCamera,
const unsigned int  iterations,
const Estimator::EstimatorType  estimator = Estimator::ET_SQUARE,
const Scalar  lambda = Scalar(0.001),
const Scalar  lambdaFactor = Scalar(5),
Scalar initialError = nullptr,
Scalar finalError = nullptr,
const Matrix invertedCovariances = nullptr,
Scalars intermediateErrors = nullptr 
)
inlinestatic

Minimizes the projection error of a given 3DOF orientation.

The given 3DOF orientation is the rotational part of a standard extrinsic camera matrix.

Parameters
cameraThe camera profile defining the projection, must be valid
world_R_camera3DOF pose to minimize the projection error for
objectPointsThe accessor providing the 3D object points to be projected into the camera plane
imagePointsThe accessor providing the 2D image points corresponding to the object points, the image points may be distorted or undistorted depending on the usage of the distortImagePoints state
world_R_optimizedCameraResulting optimized 3DOF orientation
iterationsNumber of iterations to be applied at most, if no convergence can be reached
estimatorRobust error estimator to be used
lambdaInitial Levenberg-Marquardt damping value which may be changed after each iteration using the damping factor, with range [0, infinity)
lambdaFactorLevenberg-Marquardt damping factor to be applied to the damping value, with range [1, infinity)
initialErrorOptional resulting averaged robust pixel error for the given initial parameters depending on the selected estimator
finalErrorOptional resulting averaged robust pixel error for the final optimized parameters depending on the selected estimator
invertedCovariancesOptional set of 2x2 inverted covariance matrices that represent the uncertainties of the image points (a 2*n x 2 matrix)
intermediateErrorsOptional resulting intermediate (improving) errors
Returns
True, if the optimization succeeded
See also
optimizeOrientationIF().

◆ optimizeOrientationIF()

static bool Ocean::Geometry::NonLinearOptimizationOrientation::optimizeOrientationIF ( const AnyCamera camera,
const SquareMatrix3 flippedCamera_R_world,
const ConstIndexedAccessor< ObjectPoint > &  objectPoints,
const ConstIndexedAccessor< ImagePoint > &  imagePoints,
SquareMatrix3 optimizedFlippedCamera_R_world,
const unsigned int  iterations,
const Estimator::EstimatorType  estimator = Estimator::ET_SQUARE,
const Scalar  lambda = Scalar(0.001),
const Scalar  lambdaFactor = Scalar(5),
Scalar initialError = nullptr,
Scalar finalError = nullptr,
const Matrix invertedCovariances = nullptr,
Scalars intermediateErrors = nullptr 
)
static

Minimizes the projection error of a given inverted and flipped 3DOF orientation.

Beware: The given inverted and flipped 3DOF orientation is not equivalent to the rotational part of a standard extrinsic camera matrix.

Parameters
cameraThe camera profile defining the projection, must be valid
flippedCamera_R_world3DOF orientation to minimize the projection error for (inverted and flipped)
objectPointsThe accessor providing the 3D object points to be projected into the camera plane
imagePointsThe accessor providing the 2D image points corresponding to the object points, the image points may be distorted or undistorted depending on the usage of the distortImagePoints state
optimizedFlippedCamera_R_worldResulting optimized 3DOF orientation (inverted and flipped)
iterationsNumber of iterations to be applied at most, if no convergence can be reached
estimatorRobust error estimator to be used
lambdaInitial Levenberg-Marquardt damping value which may be changed after each iteration using the damping factor, with range [0, infinity)
lambdaFactorLevenberg-Marquardt damping factor to be applied to the damping value, with range [1, infinity)
initialErrorOptional resulting averaged robust pixel error for the given initial parameters depending on the selected estimator
finalErrorOptional resulting averaged robust pixel error for the final optimized parameters depending on the selected estimator
invertedCovariancesOptional set of 2x2 inverted covariance matrices that represent the uncertainties of the image points (a 2*n x 2 matrix)
intermediateErrorsOptional resulting intermediate (improving) errors
Returns
True, if succeeded
See also
optimizeOrientation().

The documentation for this class was generated from the following file: