00001 /* 00002 Copyright (C) 2010 - 2014 Christoph Haenisch 00003 00004 Chair of Medical Engineering (mediTEC) 00005 RWTH Aachen University 00006 Pauwelsstr. 20 00007 52074 Aachen 00008 Germany 00009 00010 See license.txt for more information. 00011 00012 Version 0.1.0 (2012-03-29) 00013 */ 00014 00019 #ifndef RANSAC_GENERIC_FITTING_MODEL_HPP_2437670324 00020 #define RANSAC_GENERIC_FITTING_MODEL_HPP_2437670324 00021 00022 00023 #include "Fit.hpp" 00024 #include "Ransac.hpp" 00025 00026 00027 namespace TRTK 00028 { 00029 00142 template <class T> 00143 class RansacGenericFittingModel : public Ransac<T>::Model 00144 { 00145 public: 00146 00147 RansacGenericFittingModel(Fit<T> & estimator); 00148 virtual ~RansacGenericFittingModel(); 00149 00150 void compute(); 00151 T getDeviation(const Coordinate<T> & datum) const; 00152 unsigned getMinimumNumberOfItems() const; 00153 T getRMS() const; 00154 void setData(const std::vector<Coordinate<T> > & data); 00155 void setEstimator(Fit<T> & estimator); 00156 00157 private: 00158 00159 Fit<T> * estimator; 00160 }; 00161 00162 00168 template<class T> 00169 RansacGenericFittingModel<T>::RansacGenericFittingModel(Fit<T> & estimator) : estimator(&estimator) 00170 { 00171 } 00172 00173 00174 template<class T> 00175 RansacGenericFittingModel<T>::~RansacGenericFittingModel() 00176 { 00177 } 00178 00179 00180 template<class T> 00181 void RansacGenericFittingModel<T>::compute() 00182 { 00183 estimator->compute(); 00184 } 00185 00186 00187 template<class T> 00188 T RansacGenericFittingModel<T>::getDeviation(const Coordinate<T> & datum) const 00189 { 00190 return estimator->getDistanceTo(datum); 00191 } 00192 00193 00194 template<class T> 00195 unsigned RansacGenericFittingModel<T>::getMinimumNumberOfItems() const 00196 { 00197 return estimator->getNumberPointsRequired(); 00198 } 00199 00200 00201 template<class T> 00202 T RansacGenericFittingModel<T>::getRMS() const 00203 { 00204 return estimator->getRMS(); 00205 } 00206 00207 00208 template<class T> 00209 void RansacGenericFittingModel<T>::setData(const std::vector<Coordinate<T> > & data) 00210 { 00211 estimator->setPoints(data); 00212 } 00213 00214 00215 template<class T> 00216 void RansacGenericFittingModel<T>::setFittingModel(Fit<T> & estimator) 00217 { 00218 this->estimator = &estimator; 00219 } 00220 00221 00222 } // namespace TRTK 00223 00224 00225 #endif // RANSAC_GENERIC_FITTING_MODEL_HPP_2437670324
Documentation generated by Doxygen