00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00025 #ifndef __vtkImageGaussianSmooth_h
00026 #define __vtkImageGaussianSmooth_h
00027
00028
00029 #include "vtkThreadedImageAlgorithm.h"
00030
00031 class VTK_IMAGING_EXPORT vtkImageGaussianSmooth : public vtkThreadedImageAlgorithm
00032 {
00033 public:
00034 vtkTypeRevisionMacro(vtkImageGaussianSmooth,vtkThreadedImageAlgorithm);
00035 void PrintSelf(ostream& os, vtkIndent indent);
00036
00040 static vtkImageGaussianSmooth *New();
00041
00042
00044
00045 vtkSetVector3Macro(StandardDeviations, double);
00046 void SetStandardDeviation(double std)
00047 {this->SetStandardDeviations(std,std,std);}
00048 void SetStandardDeviations(double a,double b)
00049 {this->SetStandardDeviations(a,b,0.0);}
00050 vtkGetVector3Macro(StandardDeviations, double);
00052
00054
00056 void SetStandardDeviation(double a,double b)
00057 {this->SetStandardDeviations(a,b,0.0);}
00058 void SetStandardDeviation(double a,double b,double c)
00059 {this->SetStandardDeviations(a,b,c);}
00061
00063
00066 vtkSetVector3Macro(RadiusFactors, double);
00067 void SetRadiusFactors(double f, double f2) {
00068 this->SetRadiusFactors(f,f2,1.5);}
00069 void SetRadiusFactor(double f) {this->SetRadiusFactors(f, f, f);}
00070 vtkGetVector3Macro(RadiusFactors, double);
00072
00074
00076 vtkSetMacro(Dimensionality, int);
00077 vtkGetMacro(Dimensionality, int);
00079
00080 protected:
00081 vtkImageGaussianSmooth();
00082 ~vtkImageGaussianSmooth();
00083
00084 int Dimensionality;
00085 double StandardDeviations[3];
00086 double RadiusFactors[3];
00087
00088 void ComputeKernel(double *kernel, int min, int max, double std);
00089 virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00090 void InternalRequestUpdateExtent(int *, int*);
00091 void ExecuteAxis(int axis, vtkImageData *inData, int inExt[6],
00092 vtkImageData *outData, int outExt[6],
00093 int *pcycle, int target, int *pcount, int total,
00094 vtkInformation *inInfo);
00095 void ThreadedRequestData(vtkInformation *request,
00096 vtkInformationVector **inputVector,
00097 vtkInformationVector *outputVector,
00098 vtkImageData ***inData, vtkImageData **outData,
00099 int outExt[6], int id);
00100
00101 private:
00102 vtkImageGaussianSmooth(const vtkImageGaussianSmooth&);
00103 void operator=(const vtkImageGaussianSmooth&);
00104 };
00105
00106 #endif
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116