00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00047
#ifndef __vtkImageAnisotropicDiffusion3D_h
00048
#define __vtkImageAnisotropicDiffusion3D_h
00049
00050
00051
#include "vtkImageSpatialFilter.h"
00052
00053 class VTK_IMAGING_EXPORT vtkImageAnisotropicDiffusion3D :
public vtkImageSpatialFilter
00054 {
00055
public:
00056
static vtkImageAnisotropicDiffusion3D *
New();
00057 vtkTypeRevisionMacro(vtkImageAnisotropicDiffusion3D,
vtkImageSpatialFilter);
00058
void PrintSelf(ostream& os,
vtkIndent indent);
00059
00060
00066
void SetNumberOfIterations(
int num);
00067
00069
00070 vtkGetMacro(NumberOfIterations,
int);
00072
00074
00079 vtkSetMacro(DiffusionThreshold,
float);
00080 vtkGetMacro(DiffusionThreshold,
float);
00082
00084
00085 vtkSetMacro(DiffusionFactor,
float);
00086 vtkGetMacro(DiffusionFactor,
float);
00088
00090
00091 vtkSetMacro(Faces,
int);
00092 vtkGetMacro(Faces,
int);
00093 vtkBooleanMacro(Faces,
int);
00094 vtkSetMacro(Edges,
int);
00095 vtkGetMacro(Edges,
int);
00096 vtkBooleanMacro(Edges,
int);
00097 vtkSetMacro(Corners,
int);
00098 vtkGetMacro(Corners,
int);
00099 vtkBooleanMacro(Corners,
int);
00101
00103
00105 vtkSetMacro(GradientMagnitudeThreshold,
int);
00106 vtkGetMacro(GradientMagnitudeThreshold,
int);
00107 vtkBooleanMacro(GradientMagnitudeThreshold,
int);
00109
00110
protected:
00111 vtkImageAnisotropicDiffusion3D();
00112 ~vtkImageAnisotropicDiffusion3D() {};
00113
00114 int NumberOfIterations;
00115 float DiffusionThreshold;
00116 float DiffusionFactor;
00117
00118 int Faces;
00119 int Edges;
00120 int Corners;
00121
00122 int GradientMagnitudeThreshold;
00123
00124
void ThreadedExecute(
vtkImageData *inData,
vtkImageData *outData,
00125
int extent[6],
int id);
00126
void Iterate(
vtkImageData *in,
vtkImageData *out,
00127
float ar0,
float ar1,
float ar3,
int *coreExtent,
int count);
00128
private:
00129 vtkImageAnisotropicDiffusion3D(
const vtkImageAnisotropicDiffusion3D&);
00130
void operator=(
const vtkImageAnisotropicDiffusion3D&);
00131 };
00132
00133
#endif
00134
00135
00136