00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00039 #ifndef __vtkImageGaussianSmooth_h
00040 #define __vtkImageGaussianSmooth_h
00041
00042
00043 #include "vtkImageToImageFilter.h"
00044
00045 class VTK_IMAGING_EXPORT vtkImageGaussianSmooth : public vtkImageToImageFilter
00046 {
00047 public:
00048 vtkTypeRevisionMacro(vtkImageGaussianSmooth,vtkImageToImageFilter);
00049 void PrintSelf(ostream& os, vtkIndent indent);
00050
00054 static vtkImageGaussianSmooth *New();
00055
00056
00058
00059 vtkSetVector3Macro(StandardDeviations, float);
00060 void SetStandardDeviation(float std)
00061 {this->SetStandardDeviations(std,std,std);}
00062 void SetStandardDeviations(float a,float b)
00063 {this->SetStandardDeviations(a,b,0.0);}
00064 vtkGetVector3Macro(StandardDeviations, float);
00066
00068
00070 void SetStandardDeviation(float a,float b)
00071 {this->SetStandardDeviations(a,b,0.0);}
00072 void SetStandardDeviation(float a,float b,float c)
00073 {this->SetStandardDeviations(a,b,c);}
00075
00077
00080 vtkSetVector3Macro(RadiusFactors, float);
00081 void SetRadiusFactors(float f, float f2) {this->SetRadiusFactors(f,f2,1.5);}
00082 void SetRadiusFactor(float f) {this->SetRadiusFactors(f, f, f);}
00083 vtkGetVector3Macro(RadiusFactors, float);
00085
00087
00089 vtkSetMacro(Dimensionality, int);
00090 vtkGetMacro(Dimensionality, int);
00092
00093 protected:
00094 vtkImageGaussianSmooth();
00095 ~vtkImageGaussianSmooth();
00096
00097 int Dimensionality;
00098 float StandardDeviations[3];
00099 float RadiusFactors[3];
00100
00101 void ComputeKernel(double *kernel, int min, int max, double std);
00102 void ComputeInputUpdateExtent(int inExt[6], int outExt[6]);
00103 void ExecuteAxis(int axis, vtkImageData *inData, int inExt[6],
00104 vtkImageData *outData, int outExt[6],
00105 int *pcycle, int target, int *pcount, int total);
00106 void ThreadedExecute(vtkImageData *inData,
00107 vtkImageData *outData, int outExt[6], int id);
00108
00109 private:
00110 vtkImageGaussianSmooth(const vtkImageGaussianSmooth&);
00111 void operator=(const vtkImageGaussianSmooth&);
00112 };
00113
00114 #endif
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124