VTK
vtkImageAnisotropicDiffusion3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageAnisotropicDiffusion3D.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
43 #ifndef __vtkImageAnisotropicDiffusion3D_h
44 #define __vtkImageAnisotropicDiffusion3D_h
45 
46 
48 
50 {
51 public:
54  void PrintSelf(ostream& os, vtkIndent indent);
55 
56 
62  void SetNumberOfIterations(int num);
63 
65 
66  vtkGetMacro(NumberOfIterations,int);
68 
70 
75  vtkSetMacro(DiffusionThreshold,double);
76  vtkGetMacro(DiffusionThreshold,double);
78 
80 
81  vtkSetMacro(DiffusionFactor,double);
82  vtkGetMacro(DiffusionFactor,double);
84 
86 
87  vtkSetMacro(Faces,int);
88  vtkGetMacro(Faces,int);
89  vtkBooleanMacro(Faces,int);
90  vtkSetMacro(Edges,int);
91  vtkGetMacro(Edges,int);
92  vtkBooleanMacro(Edges,int);
93  vtkSetMacro(Corners,int);
94  vtkGetMacro(Corners,int);
95  vtkBooleanMacro(Corners,int);
97 
99 
101  vtkSetMacro(GradientMagnitudeThreshold,int);
102  vtkGetMacro(GradientMagnitudeThreshold,int);
103  vtkBooleanMacro(GradientMagnitudeThreshold,int);
105 
106 protected:
109 
110  int NumberOfIterations;
113  // to determine which neighbors to diffuse
114  int Faces;
115  int Edges;
116  int Corners;
117  // What threshold to use
119 
120  void ThreadedRequestData(vtkInformation *request,
121  vtkInformationVector **inputVector,
122  vtkInformationVector *outputVector,
123  vtkImageData ***inData, vtkImageData **outData,
124  int extent[6], int id);
125  void Iterate(vtkImageData *in, vtkImageData *out,
126  double ar0, double ar1, double ar3, int *coreExtent, int count);
127 private:
129  void operator=(const vtkImageAnisotropicDiffusion3D&); // Not implemented.
130 };
131 
132 #endif
133 
134 
135