00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00043
#ifndef __vtkImageAnisotropicDiffusion3D_h
00044
#define __vtkImageAnisotropicDiffusion3D_h
00045
00046
00047
#include "vtkImageSpatialFilter.h"
00048
00049 class VTK_IMAGING_EXPORT vtkImageAnisotropicDiffusion3D :
public vtkImageSpatialFilter
00050 {
00051
public:
00052
static vtkImageAnisotropicDiffusion3D *
New();
00053 vtkTypeRevisionMacro(vtkImageAnisotropicDiffusion3D,
vtkImageSpatialFilter);
00054
void PrintSelf(ostream& os,
vtkIndent indent);
00055
00056
00062
void SetNumberOfIterations(
int num);
00063
00065
00066 vtkGetMacro(NumberOfIterations,
int);
00068
00070
00075 vtkSetMacro(DiffusionThreshold,
double);
00076 vtkGetMacro(DiffusionThreshold,
double);
00078
00080
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 vtkImageAnisotropicDiffusion3D();
00108 ~vtkImageAnisotropicDiffusion3D() {};
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 ThreadedExecute(
vtkImageData *inData,
vtkImageData *outData,
00121
int extent[6],
int id);
00122
void Iterate(
vtkImageData *in,
vtkImageData *out,
00123
double ar0,
double ar1,
double ar3,
int *coreExtent,
int count);
00124
private:
00125 vtkImageAnisotropicDiffusion3D(
const vtkImageAnisotropicDiffusion3D&);
00126
void operator=(
const vtkImageAnisotropicDiffusion3D&);
00127 };
00128
00129
#endif
00130
00131
00132