00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __vtkImageEMLocalSuperClass_h
00016 #define __vtkImageEMLocalSuperClass_h
00017
00018 #include "vtkEMSegment.h"
00019
00020 #include "vtkImageEMLocalClass.h"
00021 #include "EMLocalInterface.h"
00022
00023 class VTK_EMSEGMENT_EXPORT vtkImageEMLocalSuperClass : public vtkImageEMLocalGenericClass
00024 {
00025 public:
00026
00027
00028
00029 static vtkImageEMLocalSuperClass *New();
00030 vtkTypeMacro(vtkImageEMLocalSuperClass,vtkObject);
00031 void PrintSelf(ostream& os, vtkIndent indent);
00032
00033 int GetNumClasses() {return this->NumClasses;}
00034
00035
00036
00037
00038
00039
00040 void SetMarkovMatrix(double value, int k, int j, int i);
00041
00042
00043 int GetPCAPtrFlag();
00044
00045
00046 int GetPCAParametersPtr(void** PCAMeanShapePtr, void*** PCAEigenVectorPtr, int index, int BoundaryType);
00047 int GetPCAParameters(float **ShapeParametersList, int *PCAMeanShapeIncY, int *PCAMeanShapeIncZ,
00048 int **PCAEigenVectorIncY, int **PCAEigenVectorIncZ, double **PCAEigenValues,
00049 float *PCALogisticSlope, float *PCALogisticBoundary, float *PCALogisticMin, float *PCALogisticMax, int index, int BoundaryType);
00050
00051 int GetTotalNumberOfEigenModes();
00052 int GetTotalNumberOfProbDataPtr();
00053 void GetPCANumberOfEigenModes(int *NumberOfEigenModesList);
00054
00055
00056 int GetProbDataPtrFlag();
00057
00058 int GetProbImageDataCount(char *list, int index);
00059
00060 int GetProbDataPtrList(void **PointerList,int index, int BoundaryType);
00061 int GetProbDataIncYandZ(int* ProbDataIncY,int* ProbDataIncZ,int index,int BoundaryType);
00062
00063 void SetProbDataWeight(float value) {this->ProbDataWeight = value;}
00064 float GetProbDataWeight(){return this->ProbDataWeight;}
00065
00066 int GetTotalNumberOfClasses(bool flag);
00067 int GetAllLabels(short *LabelList, int result,int Max);
00068 int LabelAllSuperClasses(short *TakenLabelList, int Result, int Max);
00069
00070
00071 void** GetClassList() {return this->ClassList;}
00072 void* GetClassListEntry(int i) {return this->ClassList[i];}
00073
00074 classType* GetClassListType() {return this->ClassListType;}
00075 classType GetClassType(void* active);
00076
00077
00078 vtkImageEMLocalSuperClass* GetParentClass() {return this->ParentClass;}
00079
00080 int GetTissueDefinition(int *LabelList, double** LogMu, double ***InvLogCov, int index);
00081
00082 double GetMrfParams(int k,int j,int i) {return this->MrfParams[k][j][i];}
00083
00084 double*** GetMrfParams() {return this->MrfParams;}
00085
00086
00087 void AddSubClass(vtkImageEMLocalClass* ClassData, int index) {this->AddSubClass((void*) ClassData, CLASS, index); }
00088 void AddSubClass(vtkImageEMLocalSuperClass* ClassData, int index) {
00089 ClassData->ParentClass = this; this->AddSubClass((void*) ClassData, SUPERCLASS, index);}
00090
00091
00092
00093
00094
00095 vtkGetMacro(PrintFrequency, int);
00096 vtkSetMacro(PrintFrequency, int);
00097
00098 vtkGetMacro(PrintBias, int);
00099 vtkSetMacro(PrintBias, int);
00100
00101 vtkGetMacro(PrintLabelMap, int);
00102 vtkSetMacro(PrintLabelMap, int);
00103
00104
00105
00106
00107 vtkGetMacro(PrintEMLabelMapConvergence, int);
00108 vtkSetMacro(PrintEMLabelMapConvergence, int);
00109
00110
00111
00112 vtkGetMacro(PrintEMWeightsConvergence, int);
00113 vtkSetMacro(PrintEMWeightsConvergence, int);
00114
00115
00116
00117 vtkGetMacro(PrintMFALabelMapConvergence, int);
00118 vtkSetMacro(PrintMFALabelMapConvergence, int);
00119
00120
00121
00122 vtkGetMacro(PrintMFAWeightsConvergence, int);
00123 vtkSetMacro(PrintMFAWeightsConvergence, int);
00124
00125
00126
00127 vtkGetMacro(PrintShapeSimularityMeasure, int);
00128 vtkSetMacro(PrintShapeSimularityMeasure, int);
00129
00130
00131
00132
00133
00134
00135
00136 vtkGetMacro(StopEMType,int);
00137 vtkSetMacro(StopEMType,int);
00138 void SetStopEMTypeToFixed() {this->StopEMType = EMSEGMENT_STOP_FIXED;}
00139 void SetStopEMTypeToLabelmap() {this->StopEMType = EMSEGMENT_STOP_LABELMAP;}
00140 void SetStopEMTypeToWeights() {this->StopEMType = EMSEGMENT_STOP_WEIGHTS;}
00141
00142
00143
00144
00145 vtkGetMacro(StopEMValue,float);
00146 vtkSetMacro(StopEMValue,float);
00147
00148
00149
00150 vtkGetMacro(StopEMMaxIter,int);
00151 vtkSetMacro(StopEMMaxIter,int);
00152
00153
00154
00155
00156
00157 vtkGetMacro(StopBiasCalculation,int);
00158 vtkSetMacro(StopBiasCalculation,int);
00159
00160
00161
00162
00163
00164
00165 vtkGetMacro(StopMFAType,int);
00166 vtkSetMacro(StopMFAType,int);
00167 void SetStopMFATypeToFixed() {this->StopEMType = EMSEGMENT_STOP_FIXED;}
00168 void SetStopMFATypeToLabelmap() {this->StopEMType = EMSEGMENT_STOP_LABELMAP;}
00169 void SetStopMFATypeToWeights() {this->StopEMType = EMSEGMENT_STOP_WEIGHTS;}
00170
00171
00172
00173
00174
00175 vtkGetMacro(StopMFAValue,float);
00176 vtkSetMacro(StopMFAValue,float);
00177
00178
00179
00180 vtkGetMacro(StopMFAMaxIter,int);
00181 vtkSetMacro(StopMFAMaxIter,int);
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191 vtkGetMacro(RegistrationType,int);
00192 vtkSetMacro(RegistrationType,int);
00193 void SetRegistrationTypeToDisabled() {this->RegistrationType = EMSEGMENT_REGISTRATION_DISABLED;}
00194 void SetRegistrationTypeToApply() {this->RegistrationType = EMSEGMENT_REGISTRATION_APPLY;}
00195 void SetRegistrationTypeToGlobalOnly() {this->RegistrationType = EMSEGMENT_REGISTRATION_GLOBAL_ONLY;}
00196 void SetRegistrationTypeToClassOnly() {this->RegistrationType = EMSEGMENT_REGISTRATION_CLASS_ONLY;}
00197 void SetRegistrationTypeToSimultaneous() {this->RegistrationType = EMSEGMENT_REGISTRATION_SIMULTANEOUS;}
00198 void SetRegistrationTypeToSequential() {this->RegistrationType = EMSEGMENT_REGISTRATION_SEQUENTIAL;}
00199
00200
00201
00202
00203
00204 vtkGetMacro(GenerateBackgroundProbability,int);
00205 vtkSetMacro(GenerateBackgroundProbability,int);
00206 vtkBooleanMacro(GenerateBackgroundProbability,int);
00207
00208
00209
00210
00211
00212
00213
00215 vtkGetMacro(RegistrationIndependentSubClassFlag,int);
00216 vtkSetMacro(RegistrationIndependentSubClassFlag,int);
00217 vtkBooleanMacro(RegistrationIndependentSubClassFlag,int);
00218
00219
00220
00221
00222 void GetRegistrationClassSpecificParameterList(int *RegistrationIndependentSubClassFlag, int *RegistrationClassSpecificRegistrationFlag, int &NumParaSets);
00223
00224
00225
00226
00227
00228
00229 vtkGetMacro(PCAShapeModelType,int);
00230 vtkSetMacro(PCAShapeModelType,int);
00231
00232 void SetPCAShapeModelTypeToClassIndependent() {this->PCAShapeModelType = EMSEGMENT_PCASHAPE_INDEPENDENT;}
00233
00234 void SetPCAShapeModelTypeToClassDependent() {this->PCAShapeModelType = EMSEGMENT_PCASHAPE_DEPENDENT;}
00235
00236 void SetPCAShapeModelTypeToApply() {this->PCAShapeModelType = EMSEGMENT_PCASHAPE_APPLY;}
00237
00238 vtkSetMacro(Alpha, double);
00239 vtkGetMacro(Alpha, double);
00240
00241 protected:
00242 vtkImageEMLocalSuperClass() {this->CreateVariables();}
00243 ~vtkImageEMLocalSuperClass() {this->DeleteSuperClassVariables();}
00244 void DeleteSuperClassVariables();
00245 void CreateVariables();
00246
00247 void ExecuteData(vtkDataObject *);
00248
00249 void AddSubClass(void* ClassData, classType initType, int index);
00250 int GetPCANumberOfEigenModesList(int *NumberOfEigenModesList, int index);
00251
00252 int NumClasses;
00253 void ** ClassList;
00254 classType* ClassListType;
00255 vtkImageEMLocalSuperClass* ParentClass;
00256 double*** MrfParams;
00257
00258 int PrintFrequency;
00259 int PrintBias;
00260 int PrintLabelMap;
00261
00262 int PrintEMLabelMapConvergence;
00263 int PrintEMWeightsConvergence;
00264
00265 double Alpha;
00266
00267 int StopEMType;
00268
00269
00270
00271 float StopEMValue;
00272
00273
00274
00275 int StopEMMaxIter;
00276
00277
00278
00279 int PrintMFALabelMapConvergence;
00280 int PrintMFAWeightsConvergence;
00281 int StopMFAType;
00282 float StopMFAValue;
00283
00284
00285 int StopMFAMaxIter;
00286
00287 int StopBiasCalculation;
00288 int RegistrationType;
00289
00290 int GenerateBackgroundProbability;
00291
00292 int PrintShapeSimularityMeasure;
00293
00294 int RegistrationIndependentSubClassFlag;
00295
00296
00297 int PCAShapeModelType;
00298 private:
00299 vtkImageEMLocalSuperClass(const vtkImageEMLocalSuperClass&);
00300 void operator=(const vtkImageEMLocalSuperClass&);
00301 };
00302 #endif
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313