14 static float ddweight,
intrapsweight,
simweight,
lsweight,
ddx1,
ddx2,
simx1,
simx2,
lsx1,
lsx2,
ddh;
30 if (
blobs[0]->label != 0 ) {
31 float measure =
blobs[0]->t;
34 else if ( measure <
ddx2 )
42 energy *= CLIQUESNBSUJETS;
46 if (
blobs[0]->label != 0 ) {
47 double mean_scale = (
blobs[0]->tmax +
blobs[0]->tmin) / 2.0;
48 if ( mean_scale <
lsx1 )
50 else if ( mean_scale >
lsx2 )
53 energy = 1.0 / (
lsx2 -
lsx1) * ( mean_scale -
lsx2 ) + 1.0;
58 energy *= CLIQUESNBSUJETS;
69 energy *= CLIQUESNBSUJETS;
113 float _intrapsweight;
117 if ( old == 0 &&
blobs[0]->label != 0 )
119 else if ( old != 0 &&
blobs[0]->label == 0 )
123 if ( old == 0 &&
blobs[0]->label != 0 )
125 else if ( old != 0 &&
blobs[0]->label == 0 )
133 if ( fabs(
energie) < DBL_EPSILON ) {
138 if ( (
blobs[0]->label !=
blobs[1]->label ) || (
blobs[1]->label == 0 ||
blobs[0]->label == 0 ) )
148 if ( old ==
blobs[i]->label )
154 energy += -_intrapsweight;
156 if (
blobs[i]->label == 0 )
159 energy += _intrapsweight;
161 energy *= CLIQUESNBSUJETS;
173 while ( k <
blobs.size() && !(
blobs[k]->subject ==
blobs[j]->subject &&
blobs[k]->label == old ) ) {
177 if ( k ==
blobs.size() )
193 float _intrapsweight,
210 blobs = std::vector<Site *>();
217double getOverlap(Point3df bbmin1, Point3df bbmax1, Point3df bbmin2, Point3df bbmax2,
uint *no_overlap);
219void BuildMaximalOrderCliques ( std::vector<Site *> &sites, std::vector<std::vector<int> > &cliquesDuSite, std::vector<Clique> &cliques);
220void BuildDataDrivenCliques ( std::vector<Site *> &sites, std::vector<std::vector<int> > &cliquesDuSite, std::vector<Clique> &cliques);
221void BuildGlobalClique ( std::vector<Site *> &sites, std::vector<std::vector<int> > &cliquesDuSite, std::vector<Clique> &cliques );
222void BuildLowerScaleCliques ( std::vector<Site *> &sites, std::vector<std::vector<int> > &cliquesDuSite, std::vector<Clique> &cliques );
static void setParameters(float _ddweight, float _intrapsweight, float _simweight, float _lsweight, float _ddx1, float _ddx2, float _simx1, float _simx2, float _lsx1, float _lsx2, float _ddh)
std::map< int, std::set< std::string > > subjectscount
double updateEnergy(uint node, int old, bool save, uint CLIQUESNBSUJETS)
void updateSubjectsCount()
std::map< int, uint > labelscount
std::vector< Site * > blobs
static float intrapsweight
static float getIntraPSWeight()
double computeEnergy(bool save, uint CLIQUESNBSUJETS)
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)
double getOverlap(Point3df bbmin1, Point3df bbmax1, Point3df bbmin2, Point3df bbmax2, uint *no_overlap)
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)