IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseRobustEstimator.h
1 // BaseRobustEstimator.h:
3 // ----------------------
4 //
15 
16 #ifndef __IPSDKMATH_BASEROBUSTESTIMATOR_H__
17 #define __IPSDKMATH_BASEROBUSTESTIMATOR_H__
18 
19 // suppression warnings
20 // warning C4251: 'ipsdk::math::BaseRobustEstimator::_pDataPartition': class 'boost::shared_ptr<ipsdk::math::BaseDataPartition>' needs to have dll-interface to be used by clients of class 'ipsdk::math::BaseRobustEstimator'
21 // warning C4275: interface non dll class 'boost::noncopyable_::noncopyable' utilisée comme base d'une interface dll class 'ipsdk::math::BaseRobustEstimator'
22 #pragma warning (push)
23 #pragma warning (disable : 4275 4251)
24 
27 #include <IPSDKUtil/Tools/ProcessingResult.h>
28 #include <boost/noncopyable.hpp>
29 
30 namespace ipsdk {
31 namespace math {
32 
35 
36 class IPSDKMATH_API BaseRobustEstimator : public boost::noncopyable
37 {
38 public:
42  virtual ~BaseRobustEstimator() = 0;
44 
45 // methods
46 public:
48  bool isInit() const;
49 
51  virtual ipReal64 getMaxOutlierRatio() const;
52 
54  ipReal64 getExpectedOutlierRatio() const;
55 
65  void setExpectedOutlierRatio(const ipReal64 expectedOutlierRatio);
66 
75  void setSuccessRatio(const ipReal64 successRatio);
76 
78  ipReal64 getSuccessRatio() const;
79 
84  void setDataPartition(const DataPartitionPtr& pDataPartition);
85 
87  const BaseDataPartition& getDataPartition() const;
88 
91  const BaseEstimator& getEstimator() const;
92 
95  ipUInt32 getNbMinDataForRobustEstimation() const;
96 
100  ipUInt32 getNbNeededRuns() const;
101 
104  bool isEstimationDone() const;
105 
108  // \return false in case of failure
109  BoolResult computeEstimation(const DataSet& dataSet);
110 
114  const ParameterType& getEstimParams() const;
115 
119  const OutlierFlags& getOutlierFlags() const;
120 
126  ipReal64 getEstimOutlierThreshold() const;
127 
129  void clearEstimation();
130 
131 protected:
137  void initBase(const EstimatorPtr& pEstimator);
138 
142  virtual ipReal64 computeOutlierThreshold(const ipReal64 bestScore,
143  const ipUInt32 nbData,
144  const ipUInt32 nbMinRequestedData) const = 0;
145 
148  virtual ipReal64 computeScore(const ResidualsSet& curResiduals) = 0;
149 
151  virtual void clearDerived() {};
152 
153 private:
156  void updateNbNeededRun();
157 
158 // attributes
159 protected:
167 
175 
179 
183 
186 
189 
192 
195 };
196 
199 
200 inline ipReal64
202 {
203  return _expectedOutlierRatio;
204 }
205 
206 inline ipReal64
208 {
209  return _successRatio;
210 }
211 
212 inline bool
214 {
215  return _pEstimator.get() != 0;
216 }
217 
218 inline const BaseDataPartition&
220 {
221  return *_pDataPartition;
222 }
223 
226 
227 } // end of namespace math
228 } // end of namespace ipsdk
229 
230 #pragma warning(pop)
231 
232 #endif // __IPSDKMATH_BASEROBUSTESTIMATOR_H__
Vector ParameterType
parameter type resulting from estimation
Definition: EstimationTypes.h:61
Definition of import/export macro for library.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
boost::shared_ptr< BaseDataPartition > DataPartitionPtr
shared pointer to BaseDataPartition class
Definition: DataPartitionTypes.h:46
OutlierFlags _outlierFlags
outlier flag collection associated to input data
Definition: BaseRobustEstimator.h:191
Base class for parametric estimation from data set.
Definition: BaseEstimator.h:35
bool isInit() const
check for object initialization
Definition: BaseRobustEstimator.h:213
std::vector< DataType > DataSet
collection of data associated to estimation
Definition: EstimationTypes.h:67
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
ipReal64 getSuccessRatio() const
retrieve algorithm statistical success ratio parameter
Definition: BaseRobustEstimator.h:207
DataPartitionPtr _pDataPartition
Definition: BaseRobustEstimator.h:178
ipReal64 getExpectedOutlierRatio() const
retrieve expected outlier ratio associated to data
Definition: BaseRobustEstimator.h:201
ipReal64 _expectedOutlierRatio
Definition: BaseRobustEstimator.h:166
const BaseDataPartition & getDataPartition() const
retrieve data partition object
Definition: BaseRobustEstimator.h:219
ipUInt32 _nbNeededRuns
Definition: BaseRobustEstimator.h:182
#define IPSDKMATH_API
Import/Export macro for library IPSDKMath.
Definition: IPSDKMathExports.h:27
Base class for parametric robust estimation from data set.
Definition: BaseRobustEstimator.h:36
virtual void clearDerived()
clear of data into derived class
Definition: BaseRobustEstimator.h:151
ipReal64 _estimOutlierThreshold
outlier threshold computed during processing
Definition: BaseRobustEstimator.h:194
boost::shared_ptr< BaseEstimator > EstimatorPtr
shared pointer to BaseEstimator class
Definition: EstimationTypes.h:76
ParameterType _estimParams
parameters estimated by robust algorithm
Definition: BaseRobustEstimator.h:188
Predefined types for parametric estimation from data set.
Base class for data partitioning.
Definition: BaseDataPartition.h:35
EstimatorPtr _pEstimator
shared pointer to used estimator
Definition: BaseRobustEstimator.h:185
std::vector< bool > OutlierFlags
collection of outliers flags
Definition: EstimationTypes.h:70
Vector ResidualsSet
residuals type resulting from estimation
Definition: EstimationTypes.h:64
ipReal64 _successRatio
Definition: BaseRobustEstimator.h:174
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53