00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00042 #ifndef __vtkImageAnisotropicDiffusion2D_h
00043 #define __vtkImageAnisotropicDiffusion2D_h
00044
00045
00046 #include "vtkImageSpatialAlgorithm.h"
00047 class VTK_IMAGING_EXPORT vtkImageAnisotropicDiffusion2D : public vtkImageSpatialAlgorithm
00048 {
00049 public:
00050 static vtkImageAnisotropicDiffusion2D *New();
00051 vtkTypeRevisionMacro(vtkImageAnisotropicDiffusion2D,vtkImageSpatialAlgorithm);
00052 void PrintSelf(ostream& os, vtkIndent indent);
00053
00059 void SetNumberOfIterations(int num);
00060
00062
00063 vtkGetMacro(NumberOfIterations,int);
00065
00067
00072 vtkSetMacro(DiffusionThreshold,double);
00073 vtkGetMacro(DiffusionThreshold,double);
00075
00077
00081 vtkSetMacro(DiffusionFactor,double);
00082 vtkGetMacro(DiffusionFactor,double);
00084
00086
00087 vtkSetMacro(Faces,int);
00088 vtkGetMacro(Faces,int);
00089 vtkBooleanMacro(Faces,int);
00090 vtkSetMacro(Edges,int);
00091 vtkGetMacro(Edges,int);
00092 vtkBooleanMacro(Edges,int);
00093 vtkSetMacro(Corners,int);
00094 vtkGetMacro(Corners,int);
00095 vtkBooleanMacro(Corners,int);
00097
00099
00101 vtkSetMacro(GradientMagnitudeThreshold,int);
00102 vtkGetMacro(GradientMagnitudeThreshold,int);
00103 vtkBooleanMacro(GradientMagnitudeThreshold,int);
00105
00106 protected:
00107 vtkImageAnisotropicDiffusion2D();
00108 ~vtkImageAnisotropicDiffusion2D() {};
00109
00110 int NumberOfIterations;
00111 double DiffusionThreshold;
00112 double DiffusionFactor;
00113
00114 int Faces;
00115 int Edges;
00116 int Corners;
00117
00118 int GradientMagnitudeThreshold;
00119
00120 void ThreadedRequestData(vtkInformation *request,
00121 vtkInformationVector **inputVector,
00122 vtkInformationVector *outputVector,
00123 vtkImageData ***inData, vtkImageData **outData,
00124 int extent[6], int id);
00125 void Iterate(vtkImageData *in, vtkImageData *out,
00126 double ar0, double ar1, int *coreExtent, int count);
00127 private:
00128 vtkImageAnisotropicDiffusion2D(const vtkImageAnisotropicDiffusion2D&);
00129 void operator=(const vtkImageAnisotropicDiffusion2D&);
00130 };
00131
00132 #endif
00133
00134
00135