aimsalgo  5.1.2
Neuroimaging image processing
iterativeclassification.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 
35 
36 #ifndef ITERATIVECLASSIFICATION_H
37 #define ITERATIVECLASSIFICATION_H
38 
41 #include <aims/vector/vector.h>
42 #include <vector>
43 #include <list>
44 
45 namespace aims{
46  template <class T>
48  public:
49 // enum ClassifMethod{
50 // KMEANS,
51 // DYNAMIC,
52 // PCA
53 // } ;
54 
55  IterativeClassification( std::vector< std::list< Individuals<T> > >* classes,
56  int nbOfClasses, int maxNbOfRuns, double threshold,
57  bool classified, const ClassifStrategy<T>& strategy ) ;
59 
60  void setClassifStrategy( const ClassifStrategy<T>& strategy,
61  bool keepPreviousResult = false ) ;
62  const std::vector< std::list< Individuals<T> > >& getClasses() ;
63  bool isCodeVectorsGiven() const
64  { return myClassifStrategy->isCodeVectorsGiven() ; }
65  aims::Individuals<T> getMeanValue( int classe ) const
66  { return myClassifStrategy->getMeanValue( classe ) ; }
67  std::vector< aims::Individuals<T> > getMeanVector() const
68  { return myClassifStrategy->getMeanVector() ; }
69 
70  void initialization( std::vector< std::list< Individuals<T> > >& classes, int nbOfClasses ) ;
71  bool classification() ;
72 
73  private:
74  std::vector< std::list< Individuals<T> > > myClasses ; // les classes d'individus
75  int myNbOfClasses ; // segmentation en N classes
76  int myMaxNbOfRuns ;
77  double myThreshold ;
78  bool myClassified ; // classification faite ou non?
79  ClassifStrategy<T>* myClassifStrategy ; // pointeur de classe ClassifStrategy
80  } ;
81 }
82 
83 #endif
void setClassifStrategy(const ClassifStrategy< T > &strategy, bool keepPreviousResult=false)
void initialization(std::vector< std::list< Individuals< T > > > &classes, int nbOfClasses)
std::vector< aims::Individuals< T > > getMeanVector() const
aims::Individuals< T > getMeanValue(int classe) const
IterativeClassification(std::vector< std::list< Individuals< T > > > *classes, int nbOfClasses, int maxNbOfRuns, double threshold, bool classified, const ClassifStrategy< T > &strategy)
const std::vector< std::list< Individuals< T > > > & getClasses()