cortical_surface  5.0.5
minimization.h
Go to the documentation of this file.
1 #ifndef AIMS_MINIMIZATION_H
2 #define AIMS_MINIMIZATION_H
6 
7 
8 enum typesMinim {
10 };
11 
12 
13 enum typeDistance {
15 };
16 
18  public:
19 
20  std::vector<uint> ipscliques;
22 
23  double energy;
25  std::vector<int> labels;
26  std::vector<std::pair<Point2df,Point2df> > labelsZones;
27  std::vector<std::set<uint> > zonesListesBlobs;
28  std::vector<std::set<uint> > listeZones; // attention les indices de listeZones sont décalés de 1 par rapport à labelsZones (à cause du label 0 qui recouvre tout l'espace 2D)
29  std::vector<Site *> sites;
30  std::vector<Clique> cliques;
31  std::vector<std::vector<int> > cliquesDuSite;
32 
33  void ShortSummaryLabels();
34 
35  std::string energyPath, labelsPath;
37  void noLabelsZones( int number_of_labels = 21 );
38  void regionLabelsZones();
39 
41  uint nb_cl_sim = 0, nb_cl_dd = 0, nb_cl_intraps = 0, nb_cl_lower = 0;
42 
43  for ( uint i = 0 ; i < cliques.size() ; i++ ) {
44  if ( cliques[i].type == SIMILARITY ) nb_cl_sim++;
45  else if ( cliques[i].type == DATADRIVEN ) nb_cl_dd++;
46  else if ( cliques[i].type == BESTLOWERSCALE ) nb_cl_lower++;
47  else if ( cliques[i].type == INTRAPRIMALSKETCH ) nb_cl_intraps++;
48  }
49  std::cout << " done (" << nb_cl_sim << " similarity cliques ; " <<
50  nb_cl_dd << " datadriven cliques ; " <<
51  nb_cl_lower << " lower scale cliques ; " <<
52  nb_cl_intraps << " maximal order cliques ; " <<
53  cliques.size() << " cliques in total)" << std::endl;
54  std::cout << nbsujets << " subjects" << std::endl;
55  }
56 
58 
59  void setModelParameters ( float _ddweight = 0.0,
60  float _intrapsweight = 0.0,
61  float _simweight = 0.0,
62  float _lsweight = 0.0,
63  float _ddx1 = 0.0,
64  float _ddx2 = 0.0,
65  float _simx1 = 0.0,
66  float _simx2 = 0.0,
67  float _lsx1 = 0.0,
68  float _lsx2 = 0.0,
69  float _ddh = 0.0 );
70 
71  double getLabelEnergy ( int label, int type = UNKNOWN );
72  double getClusterEnergy ( std::vector<uint> &composante );
73  double getTypeEnergy ( int type );
74  double getTotalEnergy ();
75 
76  void SummaryLabels();
77  void StoreToGraph ( Graph &primal );
78  void StoreSignificanceToGraph ( Graph &primal );
79  void Initialization( bool initLabels = true );
80 
81  static void BuildSites ( Graph &primal, std::vector<Site *> ); //map<float, vector<pair<float, uint > > > &altmesh);
82 
83  static void ConvertSSBlobsToSites ( std::vector<surf::ScaleSpaceBlob *> &ssblobs, std::vector<Site *> &sites );
84 
85  void importGraphNodesFromBlobs ( std::vector<surf::ScaleSpaceBlob *> &ssblobs ) {
86  ConvertSSBlobsToSites ( ssblobs, this->sites );
87  }
88 
89  static void GetSimilarityCliquesFromSSBCliques ( std::vector<surf::Clique> &ssbcliques,
90  std::vector<Site *> &sites,
91  std::vector<Clique> &cliques,
92  std::vector<std::vector<int> > &cliquesDuSite ) ;
93 
94  static std::vector<surf::Clique> BuildSimilarityCliques ( std::vector<surf::ScaleSpaceBlob *> &ssblobs,
95  std::vector<std::vector<surf::GreyLevelBlob *> > &matchingblobs ) ;
96 
97 
98  static std::vector<surf::Clique> BuildSimilarityCliques3D ( std::vector<surf::ScaleSpaceBlob *> &ssblobs,
99  GroupData &data,
100  float threshold = 5.0,
102 
103  void importGraphCliquesFromSSBCliques ( std::vector<surf::Clique> &ssbcliques ) {
104  GetSimilarityCliquesFromSSBCliques( ssbcliques, this->sites, this->cliques, this->cliquesDuSite );
105  }
106 
107  void importGraphNodesAndCliques ( std::vector<surf::ScaleSpaceBlob *> &ssblobs, std::vector<surf::Clique> &ssbcliques ) {
108  ConvertSSBlobsToSites ( ssblobs, this->sites );
109 
110  GetSimilarityCliquesFromSSBCliques( ssbcliques, this->sites, this->cliques, this->cliquesDuSite );
111 
112  BuildGlobalClique( this->sites, this->cliquesDuSite, this->cliques );
113  BuildDataDrivenCliques( this->sites, this->cliquesDuSite, this->cliques );
114  BuildMaximalOrderCliques( this->sites, this->cliquesDuSite, this->cliques );
115  BuildLowerScaleCliques( this->sites, this->cliquesDuSite, this->cliques );
116 
117  for ( uint i = 0 ; i < this->cliques.size() ; i++ ) {
118  if ( this->cliques[i].type == INTRAPRIMALSKETCH )
119  this->ipscliques.push_back(i);
120  if ( this->cliques[i].type == GLOBAL )
121  this->globalclique = i;
122  }
123 
124  std::set<std::string> subjects;
125  for ( uint i = 0 ; i < this->sites.size() ; i++ )
126  subjects.insert(this->sites[i]->subject);
127  nbsujets = subjects.size();
128  assert( nbsujets == ipscliques.size() );
129  }
130 
131 
132 };
133 
134 
135 
136 
137 #endif
138 
static void ConvertSSBlobsToSites(std::vector< surf::ScaleSpaceBlob *> &ssblobs, std::vector< Site *> &sites)
static void BuildSites(Graph &primal, std::vector< Site *>)
std::vector< std::set< uint > > listeZones
Definition: minimization.h:28
void BuildMaximalOrderCliques(std::vector< Site *> &sites, std::vector< std::vector< int > > &cliquesDuSite, std::vector< Clique > &cliques)
std::vector< uint > ipscliques
Definition: minimization.h:20
typeDistance
Definition: minimization.h:13
void importGraphCliquesFromSSBCliques(std::vector< surf::Clique > &ssbcliques)
Definition: minimization.h:103
void importGraphNodesFromBlobs(std::vector< surf::ScaleSpaceBlob *> &ssblobs)
Definition: minimization.h:85
void importGraphNodesAndCliques(std::vector< surf::ScaleSpaceBlob *> &ssblobs, std::vector< surf::Clique > &ssbcliques)
Definition: minimization.h:107
double getLabelEnergy(int label, int type=UNKNOWN)
std::vector< Site * > sites
Definition: minimization.h:29
std::vector< std::vector< int > > cliquesDuSite
Definition: minimization.h:31
void setModelParameters(float _ddweight=0.0, float _intrapsweight=0.0, float _simweight=0.0, float _lsweight=0.0, float _ddx1=0.0, float _ddx2=0.0, float _simx1=0.0, float _simx2=0.0, float _lsx1=0.0, float _lsx2=0.0, float _ddh=0.0)
void StoreSignificanceToGraph(Graph &primal)
void noLabelsZones(int number_of_labels=21)
Definition: cliques.h:9
double getClusterEnergy(std::vector< uint > &composante)
unsigned int uint
void BuildLowerScaleCliques(std::vector< Site *> &sites, std::vector< std::vector< int > > &cliquesDuSite, std::vector< Clique > &cliques)
static std::vector< surf::Clique > BuildSimilarityCliques(std::vector< surf::ScaleSpaceBlob *> &ssblobs, std::vector< std::vector< surf::GreyLevelBlob *> > &matchingblobs)
static void GetSimilarityCliquesFromSSBCliques(std::vector< surf::Clique > &ssbcliques, std::vector< Site *> &sites, std::vector< Clique > &cliques, std::vector< std::vector< int > > &cliquesDuSite)
std::vector< Clique > cliques
Definition: minimization.h:30
std::vector< std::pair< Point2df, Point2df > > labelsZones
Definition: minimization.h:26
void Initialization(bool initLabels=true)
static std::vector< surf::Clique > BuildSimilarityCliques3D(std::vector< surf::ScaleSpaceBlob *> &ssblobs, GroupData &data, float threshold=5.0, int typeDistance=DISTANCE_3DEUCLIDIAN)
std::vector< std::set< uint > > zonesListesBlobs
Definition: minimization.h:27
Definition: cliques.h:9
void BuildDataDrivenCliques(std::vector< Site *> &sites, std::vector< std::vector< int > > &cliquesDuSite, std::vector< Clique > &cliques)
void BuildGlobalClique(std::vector< Site *> &sites, std::vector< std::vector< int > > &cliquesDuSite, std::vector< Clique > &cliques)
typesMinim
Definition: minimization.h:8
void StoreToGraph(Graph &primal)