bioprocessing  5.1.2
cah.h
Go to the documentation of this file.
1 /* Copyright (C) 2000-2013 CEA
2  *
3  * This software and supporting documentation were developed by
4  * bioPICSEL
5  * CEA/DSV/I²BM/MIRCen/LMN, Batiment 61,
6  * 18, route du Panorama
7  * 92265 Fontenay-aux-Roses
8  * France
9  */
10 
11 #ifndef AIMS_CLASSIFICATION_CAH_H
12 #define AIMS_CLASSIFICATION_CAH_H
13 
14 #include <aims/vector/vector.h>
15 #include <aims/data/data_g.h>
16 #include <aims/classification/individuals.h>
17 #include <vector>
18 #include <aims/math/discriminantanalysis.h>
19 
20 namespace aims{
21  class ProbabilisticPcaElement ;
22 } ;
23 
24 template <typename T>
25 class Element{
26  public:
27  // Constructeur :
28  Element( int number, int card, const std::set<int>& constitutedFrom = std::set<int>() ) :
30  {
31  if( _constitutedFrom.empty() )
32  _constitutedFrom.insert(number) ;
33  }
34  virtual ~Element(){}
35 
36  int number() const { return _number ;}
37  void setNumber( int number ) { _number = number ;}
38 
39  int card() const { return _card ;}
40  void setCard( int card ) { _card = card ;}
41 
42  const std::set<int>& constitutedFrom() const { return _constitutedFrom ; }
43 
44  virtual float distanceTo( Element<T> * other,
45  const std::vector< std::list< Point3d > >& classes,
46  const AimsData<T>& data, const AimsData<float>& initDistances ) = 0 ;
47 
48  virtual Element<T> * agregateTo( Element<T> * other,
49  const std::vector< std::list< Point3d > >& classes,
50  const AimsData<T>& data, const AimsData<float>& initDistances, int newNb = -1 ) = 0 ;
51 
52  protected:
53  int _number;
54  int _card;
55  std::set<int> _constitutedFrom ;
56 } ;
57 
58 template <typename T>
59 class BaryElement : public Element<T>{
60  public:
61  // Constructeur :
62  BaryElement( int card, const aims::Individuals<float>& bary,
63  const std::set<int>& constitutedFrom = std::set<int>(), int number = -1 ) ;
64  BaryElement( const std::vector<std::list< Point3d > >& classes,
65  const AimsData<T>& data,
66  const std::set<int>& constitutedFrom = std::set<int>(), int number = -1 ) ;
67  virtual ~BaryElement(){}
68 
69  const std::vector<float> & baryValue() const { return _bary.value() ; }
70  const Point3df& baryPosition() const { return _bary.position() ; }
71 
72  virtual float distanceTo( Element<T> * other,
73  const std::vector< std::list< Point3d > >& classes,
74  const AimsData<T>& data, const AimsData<float>& initDistances ) ;
75 
76  virtual Element<T> * agregateTo( Element<T> * other,
77  const std::vector< std::list< Point3d > >& classes,
78  const AimsData<T>& data, const AimsData<float>& initDistances, int newNb = -1 ) ;
79 
80  private:
81  void computeBary( const std::vector<std::list< Point3d > >& classes,
82  const AimsData<T>& data ) ;
83 
84  aims::Individuals<float> _bary ;
85  //Individuals<T> _var ;
86 } ;
87 
88 template <typename T>
89 class PcaElement : public Element<T>{
90  public:
91  // Constructeur :
92  PcaElement( const std::vector<std::list< Point3d > >& classes,
93  const AimsData<T>& data, int numberOfSignificantVps,
94  const std::set<int>& constitutedFrom = std::set<int>(), int number = -1 ) ;
95  virtual ~PcaElement(){}
96 
97 
98  virtual float distanceTo( Element<T> * other,
99  const std::vector< std::list< Point3d > >& classes,
100  const AimsData<T>& data, const AimsData<float>& initDistances ) ;
101 
102  virtual Element<T> * agregateTo( Element<T> * other,
103  const std::vector< std::list< Point3d > >& classes,
104  const AimsData<T>& data, const AimsData<float>& initDistances, int newNb = -1 ) ;
105  float unreconstructedInertia() ;
106  float meanReconstructionError() ;
107  float varReconstructionError() ;
108 
109  const AimsData<float>& errorMatrix( ) { return _errorMatrix ; }
110 
111  protected:
112  void computeReconstructionError( const std::vector< std::list< Point3d > >& classes,
113  const AimsData<T>& data ) ;
114  float error( const Point3d& p, const AimsData<T>& data ) ;
117 
118  AimsData<float> _errorMatrix ;
119  std::vector<float> _mean ;
120 
123  //TO DEFINE
124  //Individual<T> _varIndividual ;
125 } ;
126 
127 template <typename T>
129  public:
130  // Constructeur :
131  PcaReprocReconsErrorElement( const std::vector<std::list< Point3d > >& classes,
132  const AimsData<T>& data, int numberOfSignificantVps,
133  const std::set<int>& constitutedFrom = std::set<int>(), int number = -1 ) ;
135 
136 
137  virtual float distanceTo( Element<T> * other,
138  const std::vector< std::list< Point3d > >& classes,
139  const AimsData<T>& data, const AimsData<float>& initDistances ) ;
140 
141  virtual Element<T> * agregateTo( Element<T> * other,
142  const std::vector< std::list< Point3d > >& classes,
143  const AimsData<T>& data, const AimsData<float>& initDistances, int newNb = -1 ) ;
144 
145  const AimsData<float>& errorMatrix( ) { return _errorMatrix ; }
146 
147  float unreconstructedInertia() ;
148  float meanReconstructionError() ;
149  float varReconstructionError() ;
150 
151  private:
152  void computeReconstructionError( const std::vector< std::list< Point3d > >& classes,
153  const AimsData<T>& data ) ;
154  float _meanReconstructionError ;
155  float _varReconstructionError ;
156 
157  AimsData<float> _errorMatrix ;
158  std::vector<float> _mean ;
159 
160  float _unreconstructedInertia ;
161  int _numberOfSignificantVps ;
162  //TO DEFINE
163  //Individual<T> _varIndividual ;
164 } ;
165 
166 template <typename T>
167 class PPcaElement : public Element<T>{
168  public:
169  // Constructeur :
170  PPcaElement( const std::vector<std::list< Point3d > >& classes,
171  const AimsData<T>& data, int numberOfSignificantVps,
172  const std::set<int>& constitutedFrom = std::set<int>(), int number = -1 ) ;
173  virtual ~PPcaElement(){}
174 
175 
176  virtual float distanceTo( Element<T> * other,
177  const std::vector< std::list< Point3d > >& classes,
178  const AimsData<T>& data, const AimsData<float>& initDistances ) ;
179 
180  virtual Element<T> * agregateTo( Element<T> * other,
181  const std::vector< std::list< Point3d > >& classes,
182  const AimsData<T>& data, const AimsData<float>& initDistances, int newNb = -1 ) ;
183 
184 /* const AimsData<double> meanSignal() const { return _meanSignal ; } */
185  aims::ProbabilisticPcaElement* ppca() { return _ppcaElement ; }
186 
187  private:
188  void computeReconstructionError( const std::vector< std::list< Point3d > >& classes,
189  const AimsData<T>& data ) ;
190 
191  AimsData<double> _meanSignal ;
192  aims::ProbabilisticPcaElement * _ppcaElement ;
193 
194  int _numberOfSignificantVps ;
195 } ;
196 
197 template <typename T>
198 class Max2By2DistanceElement : public Element<T>{
199  public:
200  // Constructeur :
201  Max2By2DistanceElement( const std::set<int>& constitutedFrom = std::set<int>(), int number = -1 ) ;
203 
204 
205  virtual float distanceTo( Element<T> * other,
206  const std::vector< std::list< Point3d > >& classes,
207  const AimsData<T>& data, const AimsData<float>& initDistances ) ;
208 
209  virtual Element<T> * agregateTo( Element<T> * other,
210  const std::vector< std::list< Point3d > >& classes,
211  const AimsData<T>& data, const AimsData<float>& initDistances, int newNb = -1 ) ;
212 
213  private:
214 } ;
215 
216 template <typename T>
217 class SCKBDistanceElement : public Element<T>{
218  public:
219  // Constructeur :
220  SCKBDistanceElement( /*const std::vector<float> * classMaximumMoment, */
221  const AimsData<double> * maxMomentValueRatios,
222  const AimsData<double> * kinModel2by2Distances,
223  const AimsData<double> * interactionSurf,
224  const std::vector<double> * labelsVolumes,
225  float spatialregularizationWeight, float timeOfMaximumWeight,
226  float meanDist2By2, float varDist2By2, float meanSurfVolRatio,
227  float varSurfVolRatio, float meanMaxMomentRatio, float varMaxMomentRatio,
228  const std::set<int>& constitutedFrom = std::set<int>(), int number = -1 ) :
229  Element<T>( number, 0, constitutedFrom ), _maxMomentValueRatios(maxMomentValueRatios),
230  _kinModel2by2Distances(kinModel2by2Distances),
231  _interactionSurf(interactionSurf), _labelsVolumes(labelsVolumes),
232  _spatialregularizationWeight(spatialregularizationWeight), _timeOfMaximumWeight(timeOfMaximumWeight),
233  _meanDist2By2(meanDist2By2), _varDist2By2(varDist2By2), _meanSurfVolRatio(meanSurfVolRatio),
234  _varSurfVolRatio(varSurfVolRatio), _meanMaxMomentRatio(meanMaxMomentRatio), _varMaxMomentRatio(varMaxMomentRatio)
235  {}
236 
238 
239 
240  virtual float distanceTo( Element<T> * other,
241  const std::vector< std::list< Point3d > >& classes,
242  const AimsData<T>& data, const AimsData<float>& initDistances ) ;
243 
244  virtual Element<T> * agregateTo( Element<T> * other,
245  const std::vector< std::list< Point3d > >& classes,
246  const AimsData<T>& data, const AimsData<float>& initDistances, int newNb = -1 ) ;
247 
248  private:
249  //const std::vector<float> * _classMaximumMoment ;
250  const AimsData<double> * _maxMomentValueRatios ;
251  const AimsData<double> * _kinModel2by2Distances ;
252  const AimsData<double> * _interactionSurf ;
253  const std::vector<double> * _labelsVolumes ;
254  float _spatialregularizationWeight ;
255  float _timeOfMaximumWeight ;
256 
257  float _meanDist2By2 ;
258  float _varDist2By2 ;
259  float _meanSurfVolRatio ;
260  float _varSurfVolRatio ;
261  float _meanMaxMomentRatio ;
262  float _varMaxMomentRatio ;
263 } ;
264 
265 template <typename T>
267  public:
268  CahElementFactory( const std::vector< std::list< Point3d > >& classes = std::vector< std::list< Point3d > >(),
269  const AimsData<T>& data = AimsData<T>() ) ;
270  virtual ~CahElementFactory( ) ;
271 
272  virtual Element<T> * creator( int n ) const = 0 ;
273  virtual std::list< Element<T>* > creator() const ;
274 
275  virtual std::string methodType() const = 0 ;
276  const std::vector< std::list< Point3d > >& classes() const { return _classes ; }
277  const AimsData<T>& data() const { return _data ; }
278 
279  virtual bool initDistanceAlreadyComputed() const { return false ; }
280  virtual const AimsData<float>* initDistances() const { return 0 ; }
281 
282  protected:
283  const std::vector< std::list< Point3d > >& _classes ;
284  const AimsData<T>& _data ;
285 } ;
286 
287 template <typename T>
289  public:
290  BaryCahElementFactory( const std::vector< std::list< Point3d > >& classes = std::vector< std::list< Point3d > >(),
291  const AimsData<T>& data = AimsData<T>() ) ;
292  virtual ~BaryCahElementFactory( ) ;
293 
294  virtual Element<T> * creator( int n ) const ;
295 
296  virtual std::string methodType() const { return "Barycenter" ;}
297  private:
298 } ;
299 
300 template <typename T>
302  public:
303  PcaCahElementFactory( int nbOfSignificantVps,
304  const std::vector< std::list< Point3d > >& classes = std::vector< std::list< Point3d > >(),
305  const AimsData<T>& data = AimsData<T>() ) ;
306  virtual ~PcaCahElementFactory( ) ;
307 
308  virtual Element<T> * creator( int n ) const ;
309 
310  virtual std::string methodType() const { return "Pca" ;}
311 
312  private:
313  int _nbOfSignificantVps ;
314 } ;
315 
316 template <typename T>
318  public:
319  PPcaCahElementFactory( int nbOfSignificantVps,
320  const std::vector< std::list< Point3d > >& classes = std::vector< std::list< Point3d > >(),
321  const AimsData<T>& data = AimsData<T>() ) ;
322  virtual ~PPcaCahElementFactory( ) ;
323 
324  virtual Element<T> * creator( int n ) const ;
325 
326  virtual std::string methodType() const { return "PPca" ;}
327 
328  private:
329  int _nbOfSignificantVps ;
330 } ;
331 
332 template <typename T>
334  public:
335  Max2By2DistanceCahElementFactory( const AimsData<float>& initDistances ) ;
337 
338  virtual std::list< Element<T>* > creator() const ;
339  virtual Element<T> * creator( int n ) const ;
340 
341  virtual std::string methodType() const { return "Max2By2Distance" ;}
342 
343  virtual bool initDistanceAlreadyComputed() const { return true ; }
344  const AimsData<float>* initDistances() const { return &_initDistances ; } ;
345 
346 
347  private:
348  AimsData<float> _initDistances ;
349  int _nbClasses ;
350 } ;
351 
352 //Spatial coherence kinetics based segmentation method
353 template <typename T>
355  public:
356  SCKBDistanceCahElementFactory( const std::vector<std::list<Point3d> >& classes,
357  const std::vector<aims::DiscriminantAnalysisElement*>& classesKinDescription,
358  const AimsData<int>& locMap,
359  const std::vector<short>& unfusionedLabels,
360  const std::vector<float>& classMaximaMoment,
361  float spatialregularizationWeight = 1.,
362  float timeOfMaximumWeight = 0.5 ) ;
364  {
365  delete _classMaximumMoment ;
366  delete _maxMomentValueRatios ;
367  delete _antiCorrelatedMeans ;
368  delete _kinModel2by2Distances ;
369  delete _interactionSurf ;
370  delete _labelsVolumes ;
371  }
372 
373  virtual Element<T> * creator( int n ) const ;
374 
375  virtual std::string methodType() const { return "SCKBDistance" ;}
376 
377  virtual bool initDistanceAlreadyComputed() const { return false ; }
378  const AimsData<float>* initDistances() const { return 0 ; } ;
379 
380 private:
381  std::vector<float> * _classMaximumMoment ;
382  AimsData<double> * _maxMomentValueRatios ;
383  AimsData<char> * _antiCorrelatedMeans ;
384  AimsData<double> * _kinModel2by2Distances ;
385  AimsData<double> * _interactionSurf ;
386  std::vector<double> * _labelsVolumes ;
387  float _spatialregularizationWeight ;
388  float _timeOfMaximumWeight ;
389  int _nbClasses ;
390  float _meanDist2By2 ;
391  float _varDist2By2 ;
392  float _meanSurfVolRatio ;
393  float _varSurfVolRatio ;
394  float _meanMaxMomentRatio ;
395  float _varMaxMomentRatio ;
396 } ;
397 
398 template <typename T>
400 public:
401  PcaReprocReconsErrorCahElementFactory( int nbOfSignificantVps,
402  const std::vector< std::list< Point3d > >& classes = std::vector< std::list< Point3d > >(),
403  const AimsData<T>& data = AimsData<T>() ) ;
405 
406  virtual Element<T> * creator( int n ) const ;
407 
408  virtual std::string methodType() const { return "PcaReprocReconsError" ;}
409 
410 private:
411  int _nbOfSignificantVps ;
412 } ;
413 
414 template <typename T>
415 class Cah
416 {
417 public:
418  //
419  Cah( const CahElementFactory<T> * method ) ;
420  ~Cah(){}
421 
422 
423  // void addElement(std::vector<double> , int);
424  bool addElement(Element<T> * el);
425  void initialisationDist();
426  void oneStep(int);
427 
428  const std::vector< std::pair<Point2d, float> >& doit( ) ;
429  const std::vector< std::pair<Point2d, float> >& result( ) {
430  if( _result.empty() ) return doit() ;
431  return _result ;
432  }
433  std::vector<Point2d> cut( const std::vector< std::pair<Point2d, float> >& res, int );
434  std::vector<Point2d> distanceCut( const std::vector< std::pair<Point2d, float> >& res, float );
435 
436  std::vector<Point2d> maxCurvatureCut( const std::vector< std::pair<Point2d, float> >& res );
437 
438  void save( const std::string& name ) ;
439  const std::vector< std::pair<Point2d, float> >& load( const std::string& name ) ;
440  const std::vector<std::set<short> >& newAgregateConstitution() const { return _newAgregatesConstitution ; }
441  private:
442 
443  // Méthodes privées :
444  //float distanceW(Element *element1, Element *element2);
445  std::vector<int> leaves(int);
446  std::vector<int> leaves(float);
447  void Proc(int, std::vector<int>& );
448 
449 
450 
451  // Attributs privées :
452  const std::vector< std::list< Point3d > >& _classes ;
453  const AimsData<T>& _data ;
454  std::list<Element<T>*> _listeN;
455  std::multimap<float, Point2d> _mMap;
456  std::vector< std::pair<Point2d, float> > _result;
457 
458 
459  std::vector< std::set<short> > _newAgregatesConstitution ;
460  AimsData<float> _distanceBetweenInitialElements ;
461  unsigned int _m; //nombre total d'individus
462 /* std::vector<int> _uneClasse; //variable locale utile */
463  bool _canAddElement ;
464 
465  bool _initDistancesAlreadyComputed ;
466 };
467 
468 
469 
470 #endif
virtual ~BaryCahElementFactory()
Definition: cah_d.h:788
BaryCahElementFactory(const std::vector< std::list< Point3d > > &classes=std::vector< std::list< Point3d > >(), const AimsData< T > &data=AimsData< T >())
Definition: cah_d.h:784
virtual std::string methodType() const
Definition: cah.h:296
virtual Element< T > * agregateTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances, int newNb=-1)
Definition: cah_d.h:100
const Point3df & baryPosition() const
Definition: cah.h:70
virtual float distanceTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances)
Definition: cah_d.h:82
virtual ~BaryElement()
Definition: cah.h:67
const std::vector< float > & baryValue() const
Definition: cah.h:69
BaryElement(int card, const aims::Individuals< float > &bary, const std::set< int > &constitutedFrom=std::set< int >(), int number=-1)
Definition: cah_d.h:21
const AimsData< T > & data() const
Definition: cah.h:277
virtual std::string methodType() const =0
virtual bool initDistanceAlreadyComputed() const
Definition: cah.h:279
virtual Element< T > * creator(int n) const =0
const std::vector< std::list< Point3d > > & classes() const
Definition: cah.h:276
const std::vector< std::list< Point3d > > & _classes
Definition: cah.h:283
virtual ~CahElementFactory()
Definition: cah_d.h:770
virtual const AimsData< float > * initDistances() const
Definition: cah.h:280
const AimsData< T > & _data
Definition: cah.h:284
virtual std::list< Element< T > * > creator() const
Definition: cah_d.h:775
CahElementFactory(const std::vector< std::list< Point3d > > &classes=std::vector< std::list< Point3d > >(), const AimsData< T > &data=AimsData< T >())
Definition: cah_d.h:766
Definition: cah.h:416
void save(const std::string &name)
Definition: cah_d.h:1619
void initialisationDist()
Definition: cah_d.h:1303
const std::vector< std::set< short > > & newAgregateConstitution() const
Definition: cah.h:440
std::vector< Point2d > maxCurvatureCut(const std::vector< std::pair< Point2d, float > > &res)
Definition: cah_d.h:1582
const std::vector< std::pair< Point2d, float > > & doit()
Definition: cah_d.h:1432
void oneStep(int)
Definition: cah_d.h:1351
const std::vector< std::pair< Point2d, float > > & load(const std::string &name)
Definition: cah_d.h:1654
~Cah()
Definition: cah.h:420
std::vector< Point2d > distanceCut(const std::vector< std::pair< Point2d, float > > &res, float)
Definition: cah_d.h:1568
std::vector< Point2d > cut(const std::vector< std::pair< Point2d, float > > &res, int)
Definition: cah_d.h:1522
bool addElement(Element< T > *el)
Returns false if el ca not be added.
Definition: cah_d.h:1289
Cah(const CahElementFactory< T > *method)
Definition: cah_d.h:1257
const std::vector< std::pair< Point2d, float > > & result()
Definition: cah.h:429
Definition: cah.h:25
int number() const
Definition: cah.h:36
int _card
Definition: cah.h:54
virtual ~Element()
Definition: cah.h:34
void setNumber(int number)
Definition: cah.h:37
const std::set< int > & constitutedFrom() const
Definition: cah.h:42
void setCard(int card)
Definition: cah.h:40
Element(int number, int card, const std::set< int > &constitutedFrom=std::set< int >())
Definition: cah.h:28
int card() const
Definition: cah.h:39
virtual float distanceTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances)=0
std::set< int > _constitutedFrom
Definition: cah.h:55
virtual Element< T > * agregateTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances, int newNb=-1)=0
int _number
Definition: cah.h:53
virtual std::string methodType() const
Definition: cah.h:341
Max2By2DistanceCahElementFactory(const AimsData< float > &initDistances)
Definition: cah_d.h:817
virtual ~Max2By2DistanceCahElementFactory()
Definition: cah_d.h:824
virtual bool initDistanceAlreadyComputed() const
Definition: cah.h:343
virtual std::list< Element< T > * > creator() const
Definition: cah_d.h:836
const AimsData< float > * initDistances() const
Definition: cah.h:344
virtual float distanceTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances)
Definition: cah_d.h:494
Max2By2DistanceElement(const std::set< int > &constitutedFrom=std::set< int >(), int number=-1)
Definition: cah_d.h:485
virtual Element< T > * agregateTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances, int newNb=-1)
Definition: cah_d.h:546
virtual ~Max2By2DistanceElement()
Definition: cah.h:202
virtual std::string methodType() const
Definition: cah.h:326
PPcaCahElementFactory(int nbOfSignificantVps, const std::vector< std::list< Point3d > > &classes=std::vector< std::list< Point3d > >(), const AimsData< T > &data=AimsData< T >())
Definition: cah_d.h:1225
virtual ~PPcaCahElementFactory()
Definition: cah_d.h:1231
virtual ~PPcaElement()
Definition: cah.h:173
aims::ProbabilisticPcaElement * ppca()
Definition: cah.h:185
virtual Element< T > * agregateTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances, int newNb=-1)
Definition: cah_d.h:401
virtual float distanceTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances)
Definition: cah_d.h:315
PPcaElement(const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, int numberOfSignificantVps, const std::set< int > &constitutedFrom=std::set< int >(), int number=-1)
Definition: cah_d.h:272
PcaCahElementFactory(int nbOfSignificantVps, const std::vector< std::list< Point3d > > &classes=std::vector< std::list< Point3d > >(), const AimsData< T > &data=AimsData< T >())
Definition: cah_d.h:799
virtual ~PcaCahElementFactory()
Definition: cah_d.h:805
virtual std::string methodType() const
Definition: cah.h:310
Definition: cah.h:89
float _meanReconstructionError
Definition: cah.h:115
virtual ~PcaElement()
Definition: cah.h:95
float _unreconstructedInertia
Definition: cah.h:121
PcaElement(const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, int numberOfSignificantVps, const std::set< int > &constitutedFrom=std::set< int >(), int number=-1)
Definition: cah_d.h:137
float error(const Point3d &p, const AimsData< T > &data)
virtual Element< T > * agregateTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances, int newNb=-1)
Definition: cah_d.h:253
float _varReconstructionError
Definition: cah.h:116
float unreconstructedInertia()
Definition: cah_d.h:170
float meanReconstructionError()
Definition: cah_d.h:156
AimsData< float > _errorMatrix
Definition: cah.h:118
int _numberOfSignificantVps
Definition: cah.h:122
std::vector< float > _mean
Definition: cah.h:119
virtual float distanceTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances)
Definition: cah_d.h:236
float varReconstructionError()
Definition: cah_d.h:163
void computeReconstructionError(const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data)
Definition: cah_d.h:177
const AimsData< float > & errorMatrix()
Definition: cah.h:109
PcaReprocReconsErrorCahElementFactory(int nbOfSignificantVps, const std::vector< std::list< Point3d > > &classes=std::vector< std::list< Point3d > >(), const AimsData< T > &data=AimsData< T >())
Definition: cah_d.h:1241
virtual ~PcaReprocReconsErrorCahElementFactory()
Definition: cah_d.h:1247
virtual std::string methodType() const
Definition: cah.h:408
PcaReprocReconsErrorElement(const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, int numberOfSignificantVps, const std::set< int > &constitutedFrom=std::set< int >(), int number=-1)
Definition: cah_d.h:567
float unreconstructedInertia()
Definition: cah_d.h:658
float varReconstructionError()
Definition: cah_d.h:651
virtual float distanceTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances)
Definition: cah_d.h:665
virtual Element< T > * agregateTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances, int newNb=-1)
Definition: cah_d.h:748
const AimsData< float > & errorMatrix()
Definition: cah.h:145
virtual ~PcaReprocReconsErrorElement()
Definition: cah.h:134
float meanReconstructionError()
Definition: cah_d.h:644
virtual std::string methodType() const
Definition: cah.h:375
virtual bool initDistanceAlreadyComputed() const
Definition: cah.h:377
virtual ~SCKBDistanceCahElementFactory()
Definition: cah.h:363
SCKBDistanceCahElementFactory(const std::vector< std::list< Point3d > > &classes, const std::vector< aims::DiscriminantAnalysisElement * > &classesKinDescription, const AimsData< int > &locMap, const std::vector< short > &unfusionedLabels, const std::vector< float > &classMaximaMoment, float spatialregularizationWeight=1., float timeOfMaximumWeight=0.5)
Definition: cah_d.h:1089
const AimsData< float > * initDistances() const
Definition: cah.h:378
SCKBDistanceElement(const AimsData< double > *maxMomentValueRatios, const AimsData< double > *kinModel2by2Distances, const AimsData< double > *interactionSurf, const std::vector< double > *labelsVolumes, float spatialregularizationWeight, float timeOfMaximumWeight, float meanDist2By2, float varDist2By2, float meanSurfVolRatio, float varSurfVolRatio, float meanMaxMomentRatio, float varMaxMomentRatio, const std::set< int > &constitutedFrom=std::set< int >(), int number=-1)
Definition: cah.h:220
virtual ~SCKBDistanceElement()
Definition: cah.h:237
virtual Element< T > * agregateTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances, int newNb=-1)
Definition: cah_d.h:465
virtual float distanceTo(Element< T > *other, const std::vector< std::list< Point3d > > &classes, const AimsData< T > &data, const AimsData< float > &initDistances)
Definition: cah_d.h:421