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