00001 /*---------------------------------------------------------------------------*/ 00008 /*---------------------------------------------------------------------------*/ 00009 #ifndef INLIERS_H 00010 #define INLIERS_H 00011 00012 #include "./ReferenceVector.hh" 00013 00018 class Inliers 00019 { 00020 public: 00021 00022 // Attributes 00024 unsigned long int nb_inliers; 00026 int nb_RefVector; 00028 int Change; 00030 int nbMeanIt; 00032 int nbMeanAdapt; 00033 00035 float ***center_RefVector_PostRemoval; 00037 unsigned long int *Index_Inliers; 00039 Image<PIXEL>* im_point; 00040 00041 //assignement 00043 int * firstNearestA; 00045 int * secondNearestA; 00047 Ref_Vector *A; 00049 float ***covariance_cluster; 00050 00051 00052 //Operations: 00059 Inliers(Image<PIXEL>* data,Outliers * O,int nb); 00065 void Adaptation(); 00069 void Selection(); 00071 void Outliers_detection(); 00073 void AddRandomRefVectors(); 00075 void Print_Mean_Covariance(int k); 00077 void Print_Mean_Covariance_PostRemoval(int k); 00079 void NearestRefVector_StdDevVar(); 00080 00081 private: 00082 00083 // Attributes: 00084 00086 Outliers *O_point; 00087 00089 float *maxi_dim; 00091 float *mini_dim; 00092 00094 float ***Inv_covariance_cluster; 00096 float ****covariance_cluster_PostRemoval; 00098 float ****Inv_covariance_cluster_PostRemoval; 00100 float *determinant; 00102 float **determinant_PostRemoval; 00104 int *singularity; 00106 int **Singularity_PostRemoval; 00108 unsigned long int *effectif_cluster; 00110 unsigned long int **cross_effectif_cluster; 00112 float ChangingCriterion; 00114 float M_LOG2; 00116 int nb_init; 00117 00118 // Operations: 00122 void Initialise(Image<PIXEL> * data_point,Outliers * O,int nb); 00124 void Initialise_IndexInliers(); 00126 void Allocate_Variable_StdDev(); 00128 void MinMax(); 00130 void Assigne_data_Euclidian(); 00132 float Proba_Assigne_Euclidian(unsigned long int i, int k); 00136 void Remove_RefVector(int k, int AllCov); 00139 void Remove_Unaffected_RefVector(int AllCov); 00141 void Reassigne_inliers_StdDevVariable(); 00148 float Proba_Assigne_Gauss( unsigned long int i, int k); 00156 float Proba_Assigne_Gauss_PostRemoval( unsigned long int i, int k, int l); 00158 void Update_effectif(); 00160 void Update_Centers(); 00162 void Estimation_Stdev_RefVector(); 00164 void Estimation_CovarianceMatrix(); 00166 void Singularity_Detection(); 00170 void Invert_CovarianceMatrix(); 00172 void Estimation_Stdev_RefVector_PostRemoval(); 00174 void Estimation_Center_RefVector_PostRemoval(); 00176 void Estimation_CrossEffectif(); 00178 void Estimation_CovarianceMatrix_PostRemoval(); 00180 void Singularity_Detection_Postremoval(); 00184 void Invert_PostCovarianceMatrix(); 00186 void NearestRefVector_StdDevVar_PostRemoval(); 00191 void Inliers_Variation_Index_term_cost2(float* aux); 00196 void Inliers_Variation_Error_term_cost4(float * SumErrorRatio); 00202 float Error_FreeInliers_Singularity(unsigned long int i); 00204 float Error_FreeInliers(unsigned long int i); 00207 void Error_OtherInliers(float * SumErrorRatio); 00215 void Update_RefVectors(); 00216 00217 00218 }; 00219 #endif