48 #ifndef BSFM_RANSAC_RANSAC_PROBLEM_H
49 #define BSFM_RANSAC_RANSAC_PROBLEM_H
53 #include "../util/disallow_copy_and_assign.h"
58 template <
typename DataType>
64 virtual double Error()
const = 0;
65 virtual bool IsGoodFit(
const DataType& data_point,
66 double error_tolerance) = 0;
70 template <
typename DataType,
typename ModelType>
76 virtual inline void SetModel(
const ModelType& model);
78 const std::vector<DataType>& data);
80 const std::vector<DataType>& inliers);
84 virtual inline const ModelType&
Model()
const;
85 virtual inline const std::vector<DataType>&
Inliers()
const;
88 virtual std::vector<DataType>
SampleData(
unsigned int num_samples) = 0;
90 unsigned int num_sampled_previously)
const = 0;
91 virtual ModelType
FitModel(
const std::vector<DataType>& input_data)
const = 0;
105 template <
typename DataType,
typename ModelType>
107 : model_(ModelType()), solution_found_(false) {}
109 template <
typename DataType,
typename ModelType>
114 template <
typename DataType,
typename ModelType>
116 const std::vector<DataType>& data) {
120 template <
typename DataType,
typename ModelType>
122 const std::vector<DataType>& inliers) {
126 template <
typename DataType,
typename ModelType>
128 solution_found_ = solution_found;
131 template <
typename DataType,
typename ModelType>
133 return solution_found_;
136 template <
typename DataType,
typename ModelType>
141 template <
typename DataType,
typename ModelType>
virtual void SetSolutionFound(bool solution_found)
virtual std::vector< DataType > RemainingData(unsigned int num_sampled_previously) const =0
virtual const ModelType & Model() const
virtual double Error() const =0
virtual void SetInliers(const std::vector< DataType > &inliers)
virtual bool IsGoodFit(const DataType &data_point, double error_tolerance)=0
virtual void SetModel(const ModelType &model)
std::vector< DataType > data_
virtual const std::vector< DataType > & Inliers() const
virtual std::vector< DataType > SampleData(unsigned int num_samples)=0
virtual ModelType FitModel(const std::vector< DataType > &input_data) const =0
virtual void SetData(const std::vector< DataType > &data)
virtual bool SolutionFound()
#define DISALLOW_COPY_AND_ASSIGN(TypeName)
std::vector< DataType > inliers_