vtkImageMeanIntensityNormalization.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef __vtkImageMeanIntensityNormalization_h
00041 #define __vtkImageMeanIntensityNormalization_h
00042
00043
00044 #include "vtkImageToImageFilter.h"
00045 #include "vtkImageAccumulate.h"
00046 #include "vtkIntensityNormalizationFilter.h"
00047
00048 #define INTENSITY_NORM_UNDEFINED 0
00049 #define INTENSITY_NORM_MEAN_MRI 1
00050
00051 class VTK_IntensityNormalizationFilter_EXPORT vtkImageMeanIntensityNormalization : public vtkImageToImageFilter
00052 {
00053 public:
00054 static vtkImageMeanIntensityNormalization *New();
00055 vtkTypeMacro(vtkImageMeanIntensityNormalization,vtkImageToImageFilter);
00056 void PrintSelf(ostream& os, vtkIndent indent);
00057
00058 vtkSetMacro(NormValue,double);
00059 vtkGetMacro(NormValue,double);
00060
00061 vtkSetMacro(NormType,int);
00062 vtkGetMacro(NormType,int);
00063 void SetTypeToNormMeanMRI() {this->NormType = INTENSITY_NORM_MEAN_MRI; }
00064
00065
00066
00067 vtkSetMacro(InitialHistogramSmoothingWidth,int);
00068 vtkGetMacro(InitialHistogramSmoothingWidth,int);
00069
00070
00071
00072 vtkSetMacro(MaxHistogramSmoothingWidth,int);
00073 vtkGetMacro(MaxHistogramSmoothingWidth,int);
00074
00075
00076
00077
00078
00079 vtkSetMacro(RelativeMaxVoxelNum,float);
00080 vtkGetMacro(RelativeMaxVoxelNum,float);
00081
00082 vtkSetMacro(PrintInfo,int);
00083 vtkGetMacro(PrintInfo,int);
00084
00085 protected:
00086
00087 vtkImageMeanIntensityNormalization();
00088 vtkImageMeanIntensityNormalization(const vtkImageMeanIntensityNormalization&) {};
00089 ~vtkImageMeanIntensityNormalization();
00090
00091 void operator=(const vtkImageMeanIntensityNormalization&) {};
00092
00093
00094
00095
00096 void ExecuteData(vtkDataObject *);
00097 void ExecuteInformation(){this->vtkImageToImageFilter::ExecuteInformation();};
00098 void ExecuteInformation(vtkImageData *inData,vtkImageData *outData);
00099 void ComputeInputUpdateExtent(int inExt[6], int outExt[6]);
00100
00101
00102 void MeanMRI(vtkImageData *Input, vtkImageData *Output);
00103
00104 int* InitializeHistogram(vtkImageAccumulate *HIST, vtkImageData *Input, int &HistMin, int &HistMax);
00105 int DetermineFilterMax(int *HIST_Ptr, const int HIST_Length, const int FilterNumMaxVoxels);
00106 int DetermineFilterMin(const int* HIST_PTR, const int HIST_Length);
00107
00108 int DetermineFirstValey(const int *SmoothHistogram,const int SmoothHistogramLength);
00109 void SmoothHistogram(const int* Input , const int InputLength, const int SmoothWidth, int &MaxIndex, int* Output);
00110
00111 double NormValue;
00112 int NormType;
00113 int InitialHistogramSmoothingWidth;
00114 int MaxHistogramSmoothingWidth;
00115 float RelativeMaxVoxelNum;
00116 int PrintInfo;
00117
00118 };
00119 #endif
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130