00001
00012
00013 #ifndef TREE_BUIDLER_H
00014 #define TREE_BUIDLER_H
00015 #include "./Image_basics.hh"
00016 #include "./DynaClass.hh"
00017 #include "./divergence.h"
00018 #include "MatchCost+.hh"
00019 #include "ParaSearch.hh"
00028 class GraphManipulator
00029 {
00030
00031 public:
00032
00033
00034
00035 GraphManipulator();
00036 virtual ~GraphManipulator();
00037
00038
00039
00043 void ReadGraphVersion3(char * path,char *pathTime);
00044
00045
00046
00048 void CreateMatchCostObject();
00050 void InitGraphforMatch(int nb_sample,int firstSample1,float seuilDiv,int kMT1a,int kMT1b);
00052 void InitGraphforMatchNeg(int nb_samples,float seuilDiv, int b);
00063 void FixWeights(float weightMTinTLDiff,float TL1TL2Div,float flowDiff,float divDiff,float MIDiff,float divMTaMTbCost, float timeDiff,bool meanCalcul);
00071 void FixLearnedWeights(int posOrNeg, bool meanCalcul, float factorReducList);
00090 float Match(int posOrNeg, int minSample, int maxSample,int nbMiniBranches);
00097 void SaveSortedList(int a,int b);
00098
00099
00100
00115 float Learn(int posOrNeg,int interestkMTa,int interestkMTb,int interestfirstSample);
00120 void LearnRefGraph(int posOrNeg);
00124 void PrintAPostList();
00126 void WriteAPostList();
00132 void InitParaLearn(int a,int b);
00139 void ScaleParaLearnForSG(int a, int b,bool scale);
00144 void EraseMemLearn(int posNeg);
00146 void StrengthProbLink();
00148 void ConvergenceQuality();
00150 void VariancePosterior();
00152 void PrintProbaLink();
00153
00154
00155
00157 int nb_TimelessClasses;
00159 int minSample,maxSample;
00161 float * TimeDelay;
00163 int nbSamples;
00164
00166 ParaSearch paraSearchObject;
00168 SearchTree ****searchTreeCollec;
00170 float ****costs;
00172 vector<float> costSorted;
00174 vector<int> kMT2aSorted;
00176 int *kMT2aSortedAux;
00178 int *firstSample2aSortedAux;
00180 float *kMT2aCostAux;
00182 vector<int> kMT2bSorted;
00184 int *kMT2bSortedAux;
00186 int *firstSample2bSortedAux;
00188 float *kMT2bCostAux;
00190 vector<int> firstSample2Sorted;
00192 ParaSearch paraSearchObjectNeg;
00194 SearchTree ****searchTreeCollecNeg;
00196 float ****costsNeg;
00198 float * divergences;
00199
00200 private:
00201
00202
00204 int nb_dim;
00206 int nb_images;
00208 unsigned long int dim;
00210 int nx,ny;
00212 int Index_CurrentImage;
00213
00215 DynaClass *TmpClass;
00216
00218 SubGraph *graph1;
00220 SubGraph *graph2;
00221
00223 MatchCost *matchCostObject;
00225 float seuilDivergence;
00227 int sizeList;
00229 bool predefinedList;
00231 float factorReducList;
00232
00234 bool noTree;
00236 bool noTreeNeg;
00238 float meanPosterior;
00240 float varPosterior;
00242 float convQualityPos;
00244 float convQualityNeg;
00245
00246
00247
00255 void AddMTtoSubGraph(int subGraph,int kMT,float seuilDiv,int firstSample,int nb_samples);
00256
00257
00258
00259 };
00260 #endif