Main Page   Compound List   File List   Compound Members   File Members   Related Pages  

SuperposeClass.hh

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*/
00005 /*---------------------------------------------------------------------------*/
00006 #include <iostream>
00007 #include <fstream>
00008 #include <string>  
00009 #include <vector>
00010 
00011 #include <cstdio>
00012 #include <cstdlib>
00013 #include <cmath>
00014 #include <cassert>
00015 
00016 /*******************************************************************************************************/
00017 /*************GENRIC MERGING-SPLITING CLASS*************************************************************/
00018 /*******************************************************************************************************/
00019 
00023 class SuperposeClass
00024 {
00025     public:
00026         
00027         // Operations
00028         
00029         SuperposeClass(){}
00030         virtual ~SuperposeClass(){}
00031         /*******************************************************************************************************/
00033         void AcquirePara(int t,int nb_dimension,int nb_im,int nb_Class, Image<unsigned char> *classfiles, Image<unsigned char> *Timeless_classfile)
00034         {
00035                 TimeLocation=t;
00036                 nb_dim=nb_dimension;
00037                 nb_images=nb_im;
00038                 nb_TimelessClass=nb_Class;
00039                 TempClassfiles=classfiles;
00040                 TimelessClassfile=Timeless_classfile;
00041                 
00042         }
00043 /*******************************************************************************************************/
00045         float DivWeight(int classIndex,int Index_TimelessClass)
00046         {
00047                 float ClassPopulation;
00048                 ClassPopulation=(float)SuperposedPopulation(classIndex,TimeLocation,Index_TimelessClass);       
00049                 return ClassPopulation;
00050         }
00051         /*******************************************************************************************************/
00053         float FlowWeight(int classIndex,int preClassIndex,int Index_TimelessClass)
00054         {
00055                 float ClassPopulation;
00056                 unsigned long int res=0;
00057                 int j1,j2;
00058                 int aux;
00059                 int aux1;
00060                 int aux2;
00061                 unsigned long int nxny=TempClassfiles->nx*TempClassfiles->ny;
00062                 int sideX;
00063                 int timeXNxny=TimeLocation*nxny;
00064                 int preTimeXNxny=(TimeLocation-1)*nxny;
00065                 for (j1=0;j1<TempClassfiles->nx;j1++)
00066                 {
00067                    sideX=j1*TempClassfiles->ny;
00068                    for (j2=0;j2<TempClassfiles->ny;j2++)
00069                    {
00070                       aux2=*((*TimelessClassfile).position+sideX+j2);
00071                       if (aux2==(Index_TimelessClass)){
00072                         aux=*((*TempClassfiles).position+timeXNxny+sideX+j2);
00073                         aux1=*((*TempClassfiles).position+preTimeXNxny+sideX+j2);
00074                         if ((aux==classIndex)&&(aux1==preClassIndex)){res++;}
00075                       }
00076                    }
00077                 }
00078                 ClassPopulation=(float)res;     
00079                 return ClassPopulation;
00080         }
00081         
00082 /*******************************************************************************************************/
00084         float MTPopulation(int kMT){
00085                 float res=0;
00086                 int aux;
00087                 for (int j1=0;j1<TimelessClassfile->nx;j1++)
00088                 {
00089                    for (int j2=0;j2<TimelessClassfile->ny;j2++)
00090                    {
00091                       aux=*((*TimelessClassfile).position+j1*TimelessClassfile->ny+j2);
00092                       if (aux==kMT){res++;}
00093                    }
00094                 }
00095                 return res;
00096         }       /*******************************************************************************************************/
00097    private:
00098         
00099         // Attributes
00101         int TimeLocation;
00103         int nb_dim;
00105         int nb_images;
00107         int nb_TimelessClass;
00109         Image<unsigned char>* TempClassfiles;
00111         Image<unsigned char> * TimelessClassfile;
00112                 
00113         //Operations
00114         /*******************************************************************************************************/
00116         unsigned long int Population(int class_index, int time)
00117         {
00118                 unsigned long int res=0;
00119                 int j1,j2;
00120                 int aux;
00121                 unsigned long int nxny=TempClassfiles->nx*TempClassfiles->ny;
00122                 for (j1=0;j1<TempClassfiles->nx;j1++)
00123                 {
00124                    for (j2=0;j2<TempClassfiles->ny;j2++)
00125                    {
00126                       aux=*((*TempClassfiles).position+time*nxny+j1*TempClassfiles->ny+j2);
00127                       if (aux==class_index){res++;}
00128                    }
00129                 }
00130                 return res;
00131         }
00132         /*******************************************************************************************************/
00138         unsigned long int SuperposedPopulation(int class_index,int time,int Index_TimelessClass)
00139         {
00140                 unsigned long int res=0;
00141                 int j1,j2;
00142                 int aux;
00143                 int aux2;
00144                 unsigned long int nxny=TempClassfiles->nx*TempClassfiles->ny;
00145                 for (j1=0;j1<TempClassfiles->nx;j1++)
00146                 {
00147                    for (j2=0;j2<TempClassfiles->ny;j2++)
00148                    {
00149                       aux=*((*TempClassfiles).position+time*nxny+j1*TempClassfiles->ny+j2);
00150                       aux2=*((*TimelessClassfile).position+j1*(*TimelessClassfile).ny+j2);
00151                       if ((aux==class_index)&&(aux2==(Index_TimelessClass))){res++;}
00152                    }
00153                 }
00154                 return res;
00155         }
00156         
00157         /*******************************************************************************************************/
00165         unsigned long int FlowPopulation(int class_index,int time,int preClassIndex,int preTimeLocation,int Index_TimelessClass)
00166         {
00167                 unsigned long int res=0;
00168                 int j1,j2;
00169                 int aux;
00170                 int aux1;
00171                 int aux2;
00172                 unsigned long int nxny=TempClassfiles->nx*TempClassfiles->ny;
00173                 int sideX;
00174                 int timeXNxny=time*nxny;
00175                 int preTimeXNxny=preTimeLocation*nxny;
00176                 for (j1=0;j1<TempClassfiles->nx;j1++)
00177                 {
00178                    sideX=j1*TempClassfiles->ny;
00179                    for (j2=0;j2<TempClassfiles->ny;j2++)
00180                    {
00181                       aux=*((*TempClassfiles).position+timeXNxny+sideX+j2);
00182                       aux1=*((*TempClassfiles).position+preTimeXNxny+sideX+j2);
00183                       aux2=*((*TimelessClassfile).position+sideX+j2);
00184                       if ((aux==class_index)&&(aux2==(Index_TimelessClass))&&(aux1==preClassIndex)){res++;}
00185                    }
00186                 }
00187                 return res;
00188         }
00189         /*******************************************************************************************************/
00191         int SUM(int * aux,int size)
00192         {
00193                 int res=0;
00194                 for (int j=0;j<size;j++)
00195                 {
00196                         res +=aux[j];
00197                 }
00198                 return res;
00199         }
00200         /*******************************************************************************************************/
00201 
00202 };

Generated on Thu Feb 17 11:01:55 2005 for Inference of a Graph of Dynamic Cluster Trajectories by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002