cortical_surface 6.0.0
minimization.h
Go to the documentation of this file.
1#ifndef AIMS_MINIMIZATION_H
2#define AIMS_MINIMIZATION_H
6
7
11
12
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
34
35 std::string energyPath, labelsPath;
37 void noLabelsZones( int number_of_labels = 21 );
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
77 void StoreToGraph ( 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
Definition icm.h:7
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
static void ConvertSSBlobsToSites(std::vector< surf::ScaleSpaceBlob * > &ssblobs, std::vector< Site * > &sites)
double getLabelEnergy(int label, int type=UNKNOWN)
void StoreSignificanceToGraph(Graph &primal)
void StoreToGraph(Graph &primal)
void Initialization(bool initLabels=true)
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)
std::vector< std::vector< int > > cliquesDuSite
void importGraphCliquesFromSSBCliques(std::vector< surf::Clique > &ssbcliques)
static std::vector< surf::Clique > BuildSimilarityCliques3D(std::vector< surf::ScaleSpaceBlob * > &ssblobs, GroupData &data, float threshold=5.0, int typeDistance=DISTANCE_3DEUCLIDIAN)
void importGraphNodesFromBlobs(std::vector< surf::ScaleSpaceBlob * > &ssblobs)
static void BuildSites(Graph &primal, std::vector< Site * >)
static std::vector< surf::Clique > BuildSimilarityCliques(std::vector< surf::ScaleSpaceBlob * > &ssblobs, std::vector< std::vector< surf::GreyLevelBlob * > > &matchingblobs)
std::vector< std::pair< Point2df, Point2df > > labelsZones
std::vector< Site * > sites
void noLabelsZones(int number_of_labels=21)
std::vector< uint > ipscliques
std::vector< std::set< uint > > listeZones
double getClusterEnergy(std::vector< uint > &composante)
std::vector< std::set< uint > > zonesListesBlobs
void importGraphNodesAndCliques(std::vector< surf::ScaleSpaceBlob * > &ssblobs, std::vector< surf::Clique > &ssbcliques)
void BuildDataDrivenCliques(std::vector< Site * > &sites, std::vector< std::vector< int > > &cliquesDuSite, std::vector< Clique > &cliques)
void BuildMaximalOrderCliques(std::vector< Site * > &sites, std::vector< std::vector< int > > &cliquesDuSite, std::vector< Clique > &cliques)
void BuildLowerScaleCliques(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)
@ SIMILARITY
Definition cliques.h:9
@ INTRAPRIMALSKETCH
Definition cliques.h:9
@ UNKNOWN
Definition cliques.h:9
@ BESTLOWERSCALE
Definition cliques.h:9
@ DATADRIVEN
Definition cliques.h:9
@ GLOBAL
Definition cliques.h:9
typeDistance
@ DISTANCE_BOUNDING_BOXES_LATLON
@ DISTANCE_LATITUDES
@ DISTANCE_LONGITUDES
@ DISTANCE_LATLON
@ DISTANCE_3DEUCLIDIAN
typesMinim
Definition minimization.h:8
@ ANNEAL
Definition minimization.h:9
@ CUSTOM
Definition minimization.h:9
unsigned int uint