AliceVision
Photogrammetric Computer Vision Framework
Public Types | Public Member Functions | List of all members
aliceVision::multiview::TriangulationSphericalKernel Class Reference

#include <TriangulationSphericalKernel.hpp>

Inheritance diagram for aliceVision::multiview::TriangulationSphericalKernel:
aliceVision::robustEstimation::IRansacKernel< robustEstimation::MatrixModel< Vec4 > >

Public Types

using ModelT = robustEstimation::MatrixModel< Vec4 >
 

Public Member Functions

 TriangulationSphericalKernel (const std::vector< Vec2 > &observations, const std::vector< double > &weights, const std::vector< Eigen::Matrix4d > &poses, std::vector< std::shared_ptr< camera::IntrinsicBase >> &intrinsics)
 Constructor. More...
 
std::size_t getMinimumNbRequiredSamples () const override
 Return the minimum number of required samples. More...
 
std::size_t getMaximumNbModels () const override
 Return the maximum number of models. More...
 
std::size_t getMinimumNbRequiredSamplesLS () const override
 
void fit (const std::vector< std::size_t > &samples, std::vector< ModelT > &models) const override
 Triangulate 2 points. More...
 
void fitLS (const std::vector< std::size_t > &inliers, std::vector< ModelT > &models, const std::vector< double > *weights=nullptr) const override
 Triangulate N points using the least squared solver. More...
 
void computeWeights (const ModelT &model, const std::vector< std::size_t > &inliers, std::vector< double > &weights, const double eps=0.001) const override
 Compute the weights.. More...
 
double error (std::size_t sample, const ModelT &model) const override
 Error for the i-th observation. More...
 
void errors (const ModelT &model, std::vector< double > &errors) const override
 Error for each view. More...
 
void unnormalize (robustEstimation::MatrixModel< Vec4 > &model) const override
 Unnormalize the model. (not used) More...
 
std::size_t nbSamples () const override
 Return the number of view. More...
 
double logalpha0 () const override
 
double errorVectorDimension () const override
 
double unormalizeError (double val) const override
 
Mat3 normalizer1 () const override
 
double thresholdNormalizer () const override
 
- Public Member Functions inherited from aliceVision::robustEstimation::IRansacKernel< robustEstimation::MatrixModel< Vec4 > >
virtual std::size_t getMinimumNbRequiredSamples () const=0
 Return the minimum number of required samples for the solver. More...
 
virtual std::size_t getMinimumNbRequiredSamplesLS () const=0
 Return the minimum number of required samples for the solver Ls. More...
 
virtual std::size_t getMaximumNbModels () const=0
 Return the maximum number of models for the solver. More...
 
virtual void fit (const std::vector< std::size_t > &samples, std::vector< robustEstimation::MatrixModel< Vec4 > > &models) const=0
 This function is called to estimate the model from the minimum number of sample minSample (i.e. minimal problem solver). More...
 
virtual void fitLS (const std::vector< std::size_t > &inliers, std::vector< robustEstimation::MatrixModel< Vec4 > > &models, const std::vector< double > *weights=nullptr) const=0
 This function is called to estimate the model using a least squared algorithm from a minimum of minSampleLS. More...
 
virtual void computeWeights (const robustEstimation::MatrixModel< Vec4 > &model, const std::vector< std::size_t > &inliers, std::vector< double > &weights, const double eps=0.001) const=0
 Function used to estimate the weights, typically used by the least square algorithm. More...
 
virtual double error (std::size_t sample, const robustEstimation::MatrixModel< Vec4 > &model) const=0
 Function that computes the estimation error for a given model and a given element. More...
 
virtual void errors (const robustEstimation::MatrixModel< Vec4 > &model, std::vector< double > &errors) const=0
 Function that computes the estimation error for a given model and all the elements. More...
 
virtual std::size_t nbSamples () const=0
 The number of elements in the data. More...
 
virtual double logalpha0 () const=0
 Get logalpha0, Alpha0 is used to make the error adaptive to the image size. More...
 
virtual double errorVectorDimension () const=0
 
virtual Mat3 normalizer1 () const=0
 
virtual double thresholdNormalizer () const=0
 

Detailed Description

Triangulation kernel which works for any camera model. The estimation is done on lifted points but error is computed in pixels

Constructor & Destructor Documentation

◆ TriangulationSphericalKernel()

aliceVision::multiview::TriangulationSphericalKernel::TriangulationSphericalKernel ( const std::vector< Vec2 > &  observations,
const std::vector< double > &  weights,
const std::vector< Eigen::Matrix4d > &  poses,
std::vector< std::shared_ptr< camera::IntrinsicBase >> &  intrinsics 
)
inline

Constructor.

Parameters
[in]observationsThe observations 2d points in pixels.
[in]weightsThe observations weights.
[in]posesthe transformation for each observation.
[in]intrinsicsthe camera intrinsic for each observation.

Member Function Documentation

◆ computeWeights()

void aliceVision::multiview::TriangulationSphericalKernel::computeWeights ( const ModelT model,
const std::vector< std::size_t > &  inliers,
std::vector< double > &  weights,
const double  eps = 0.001 
) const
inlineoverride

Compute the weights..

Parameters
[in]modelThe 3D point for which the weights are computed.
[in]inliersThe array of the indices of the data to be used.
[out]vec_weightsThe array of weight of the same size as inliers.
[in]epsAn optional threshold to max out the value of the threshold (typically to avoid division by zero or too small numbers).

◆ error()

double aliceVision::multiview::TriangulationSphericalKernel::error ( std::size_t  sample,
const ModelT model 
) const
inlineoverride

Error for the i-th observation.

Parameters
[in]sampleThe index of the observation for which the error is computed.
[in]modelThe 3D point.
Returns
The estimation error for the given observation and 3D point.

◆ errors()

void aliceVision::multiview::TriangulationSphericalKernel::errors ( const ModelT model,
std::vector< double > &  errors 
) const
inlineoverride

Error for each view.

Parameters
[in]modelThe 3D point.
[out]vec_errorsThe vector containing all the estimation errors for every view.

◆ fit()

void aliceVision::multiview::TriangulationSphericalKernel::fit ( const std::vector< std::size_t > &  samples,
std::vector< ModelT > &  models 
) const
inlineoverride

Triangulate 2 points.

Parameters
[in]samplesThe index of two points to triangulate.
[out]modelsThe estimated 3D points.

◆ fitLS()

void aliceVision::multiview::TriangulationSphericalKernel::fitLS ( const std::vector< std::size_t > &  inliers,
std::vector< ModelT > &  models,
const std::vector< double > *  weights = nullptr 
) const
inlineoverride

Triangulate N points using the least squared solver.

Parameters
[in]inliersThe index of the N points to triangulate.
[out]modelsThe estimated 3D point.
[in]weightsThe optional array of weight for each of the N points.

◆ getMaximumNbModels()

std::size_t aliceVision::multiview::TriangulationSphericalKernel::getMaximumNbModels ( ) const
inlineoverride

Return the maximum number of models.

Returns
maximum number of models

◆ getMinimumNbRequiredSamples()

std::size_t aliceVision::multiview::TriangulationSphericalKernel::getMinimumNbRequiredSamples ( ) const
inlineoverride

Return the minimum number of required samples.

Returns
minimum number of required samples

◆ nbSamples()

std::size_t aliceVision::multiview::TriangulationSphericalKernel::nbSamples ( ) const
inlineoverride

Return the number of view.

Returns
the number of view.

◆ unnormalize()

void aliceVision::multiview::TriangulationSphericalKernel::unnormalize ( robustEstimation::MatrixModel< Vec4 > &  model) const
inlineoverridevirtual

Unnormalize the model. (not used)

Parameters
[in,out]modelthe 3D point.

Implements aliceVision::robustEstimation::IRansacKernel< robustEstimation::MatrixModel< Vec4 > >.


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