VTK  9.0.3
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 =========================================================================*/
41 #ifndef vtkImageAnisotropicDiffusion3D_h
42 #define vtkImageAnisotropicDiffusion3D_h
43 
45 #include "vtkImagingGeneralModule.h" // For export macro
46 
47 class VTKIMAGINGGENERAL_EXPORT vtkImageAnisotropicDiffusion3D : public vtkImageSpatialAlgorithm
48 {
49 public:
52  void PrintSelf(ostream& os, vtkIndent indent) override;
53 
60  void SetNumberOfIterations(int num);
61 
63 
66  vtkGetMacro(NumberOfIterations, int);
68 
70 
77  vtkSetMacro(DiffusionThreshold, double);
78  vtkGetMacro(DiffusionThreshold, double);
80 
82 
85  vtkSetMacro(DiffusionFactor, double);
86  vtkGetMacro(DiffusionFactor, double);
88 
90 
93  vtkSetMacro(Faces, vtkTypeBool);
94  vtkGetMacro(Faces, vtkTypeBool);
95  vtkBooleanMacro(Faces, vtkTypeBool);
96  vtkSetMacro(Edges, vtkTypeBool);
97  vtkGetMacro(Edges, vtkTypeBool);
98  vtkBooleanMacro(Edges, vtkTypeBool);
99  vtkSetMacro(Corners, vtkTypeBool);
100  vtkGetMacro(Corners, vtkTypeBool);
101  vtkBooleanMacro(Corners, vtkTypeBool);
103 
105 
108  vtkSetMacro(GradientMagnitudeThreshold, vtkTypeBool);
109  vtkGetMacro(GradientMagnitudeThreshold, vtkTypeBool);
110  vtkBooleanMacro(GradientMagnitudeThreshold, vtkTypeBool);
112 
113 protected:
116 
120  // to determine which neighbors to diffuse
124  // What threshold to use
126 
128  vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
129  int extent[6], int id) override;
130  void Iterate(vtkImageData* in, vtkImageData* out, double ar0, double ar1, double ar3,
131  int* coreExtent, int count);
132 
133 private:
135  void operator=(const vtkImageAnisotropicDiffusion3D&) = delete;
136 };
137 
138 #endif
static vtkImageAnisotropicDiffusion3D * New()
void Iterate(vtkImageData *in, vtkImageData *out, double ar0, double ar1, double ar3, int *coreExtent, int count)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetNumberOfIterations(int num)
This method sets the number of iterations which also affects the input neighborhood needed to compute...
void ThreadedRequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int extent[6], int id) override
If the subclass does not define an Execute method, then the task will be broken up,...
topologically and geometrically regular array of data
Definition: vtkImageData.h:42
Filters that operate on pixel neighborhoods.
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
@ extent
Definition: vtkX3D.h:351
int vtkTypeBool
Definition: vtkABI.h:69