00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00029 #ifndef __vtkImageGaussianSmooth_h
00030 #define __vtkImageGaussianSmooth_h
00031
00032
00033 #include "vtkImageToImageFilter.h"
00034
00035 class VTK_IMAGING_EXPORT vtkImageGaussianSmooth : public vtkImageToImageFilter
00036 {
00037 public:
00038 vtkTypeRevisionMacro(vtkImageGaussianSmooth,vtkImageToImageFilter);
00039 void PrintSelf(ostream& os, vtkIndent indent);
00040
00044 static vtkImageGaussianSmooth *New();
00045
00046
00048
00049 vtkSetVector3Macro(StandardDeviations, float);
00050 void SetStandardDeviation(float std)
00051 {this->SetStandardDeviations(std,std,std);}
00052 void SetStandardDeviations(float a,float b)
00053 {this->SetStandardDeviations(a,b,0.0);}
00054 vtkGetVector3Macro(StandardDeviations, float);
00056
00058
00060 void SetStandardDeviation(float a,float b)
00061 {this->SetStandardDeviations(a,b,0.0);}
00062 void SetStandardDeviation(float a,float b,float c)
00063 {this->SetStandardDeviations(a,b,c);}
00065
00067
00070 vtkSetVector3Macro(RadiusFactors, float);
00071 void SetRadiusFactors(float f, float f2) {this->SetRadiusFactors(f,f2,1.5);}
00072 void SetRadiusFactor(float f) {this->SetRadiusFactors(f, f, f);}
00073 vtkGetVector3Macro(RadiusFactors, float);
00075
00077
00079 vtkSetMacro(Dimensionality, int);
00080 vtkGetMacro(Dimensionality, int);
00082
00083 protected:
00084 vtkImageGaussianSmooth();
00085 ~vtkImageGaussianSmooth();
00086
00087 int Dimensionality;
00088 float StandardDeviations[3];
00089 float RadiusFactors[3];
00090
00091 void ComputeKernel(double *kernel, int min, int max, double std);
00092 void ComputeInputUpdateExtent(int inExt[6], int outExt[6]);
00093 void ExecuteAxis(int axis, vtkImageData *inData, int inExt[6],
00094 vtkImageData *outData, int outExt[6],
00095 int *pcycle, int target, int *pcount, int total);
00096 void ThreadedExecute(vtkImageData *inData,
00097 vtkImageData *outData, int outExt[6], int id);
00098
00099 private:
00100 vtkImageGaussianSmooth(const vtkImageGaussianSmooth&);
00101 void operator=(const vtkImageGaussianSmooth&);
00102 };
00103
00104 #endif
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114