AliceVision
Photogrammetric Computer Vision Framework
IRansacKernel.hpp
1 // This file is part of the AliceVision project.
2 // Copyright (c) 2016 AliceVision contributors.
3 // This Source Code Form is subject to the terms of the Mozilla Public License,
4 // v. 2.0. If a copy of the MPL was not distributed with this file,
5 // You can obtain one at https://mozilla.org/MPL/2.0/.
6 
7 #pragma once
8 
9 #include <aliceVision/numeric/numeric.hpp>
10 
11 #include <vector>
12 
13 namespace aliceVision {
14 namespace robustEstimation {
15 
23 template<typename ModelT>
25 {
26  public:
31  virtual std::size_t getMinimumNbRequiredSamples() const = 0;
32 
37  virtual std::size_t getMinimumNbRequiredSamplesLS() const = 0;
38 
43  virtual std::size_t getMaximumNbModels() const = 0;
44 
52  virtual void fit(const std::vector<std::size_t>& samples, std::vector<ModelT>& models) const = 0;
53 
61  virtual void fitLS(const std::vector<std::size_t>& inliers, std::vector<ModelT>& models, const std::vector<double>* weights = nullptr) const = 0;
62 
71  virtual void computeWeights(const ModelT& model,
72  const std::vector<std::size_t>& inliers,
73  std::vector<double>& weights,
74  const double eps = 0.001) const = 0;
75 
82  virtual double error(std::size_t sample, const ModelT& model) const = 0;
83 
89  virtual void errors(const ModelT& model, std::vector<double>& errors) const = 0;
90 
95  virtual void unnormalize(ModelT& model) const = 0;
96 
101  virtual std::size_t nbSamples() const = 0;
102 
107  virtual double logalpha0() const = 0;
108 
109  virtual double errorVectorDimension() const = 0;
110  virtual double unormalizeError(double val) const = 0;
111  virtual Mat3 normalizer1() const = 0;
112  virtual double thresholdNormalizer() const = 0;
113 };
114 
115 } // namespace robustEstimation
116 } // namespace aliceVision
aliceVision::robustEstimation::IRansacKernel::logalpha0
virtual double logalpha0() const =0
Get logalpha0, Alpha0 is used to make the error adaptive to the image size.
aliceVision::robustEstimation::IRansacKernel::fit
virtual void fit(const std::vector< std::size_t > &samples, std::vector< ModelT > &models) const =0
This function is called to estimate the model from the minimum number of sample minSample (i....
aliceVision::robustEstimation::IRansacKernel::errors
virtual void errors(const ModelT &model, std::vector< double > &errors) const =0
Function that computes the estimation error for a given model and all the elements.
aliceVision::robustEstimation::IRansacKernel::error
virtual double error(std::size_t sample, const ModelT &model) const =0
Function that computes the estimation error for a given model and a given element.
aliceVision::robustEstimation::IRansacKernel::getMinimumNbRequiredSamplesLS
virtual std::size_t getMinimumNbRequiredSamplesLS() const =0
Return the minimum number of required samples for the solver Ls.
aliceVision
Definition: checkerDetector.cpp:32
aliceVision::robustEstimation::IRansacKernel::nbSamples
virtual std::size_t nbSamples() const =0
The number of elements in the data.
aliceVision::robustEstimation::IRansacKernel::unnormalize
virtual void unnormalize(ModelT &model) const =0
Function used to unnormalize the model.
aliceVision::robustEstimation::IRansacKernel::getMaximumNbModels
virtual std::size_t getMaximumNbModels() const =0
Return the maximum number of models for the solver.
aliceVision::robustEstimation::IRansacKernel::fitLS
virtual void fitLS(const std::vector< std::size_t > &inliers, std::vector< ModelT > &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 minSa...
aliceVision::robustEstimation::IRansacKernel::computeWeights
virtual void computeWeights(const ModelT &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.
aliceVision::robustEstimation::IRansacKernel
A generic kernel used for the ACRANSAC / LORANSAC framework.
Definition: IRansacKernel.hpp:24
aliceVision::robustEstimation::IRansacKernel::getMinimumNbRequiredSamples
virtual std::size_t getMinimumNbRequiredSamples() const =0
Return the minimum number of required samples for the solver.