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 =========================================================================*/
44 #ifndef vtkImageAnisotropicDiffusion3D_h
45 #define vtkImageAnisotropicDiffusion3D_h
46 
47 
48 #include "vtkImagingGeneralModule.h" // For export macro
50 
51 class VTKIMAGINGGENERAL_EXPORT vtkImageAnisotropicDiffusion3D : public vtkImageSpatialAlgorithm
52 {
53 public:
56  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
58 
65  void SetNumberOfIterations(int num);
66 
68 
71  vtkGetMacro(NumberOfIterations,int);
73 
75 
82  vtkSetMacro(DiffusionThreshold,double);
83  vtkGetMacro(DiffusionThreshold,double);
85 
87 
90  vtkSetMacro(DiffusionFactor,double);
91  vtkGetMacro(DiffusionFactor,double);
93 
95 
98  vtkSetMacro(Faces,vtkTypeBool);
99  vtkGetMacro(Faces,vtkTypeBool);
100  vtkBooleanMacro(Faces,vtkTypeBool);
101  vtkSetMacro(Edges,vtkTypeBool);
102  vtkGetMacro(Edges,vtkTypeBool);
103  vtkBooleanMacro(Edges,vtkTypeBool);
104  vtkSetMacro(Corners,vtkTypeBool);
105  vtkGetMacro(Corners,vtkTypeBool);
106  vtkBooleanMacro(Corners,vtkTypeBool);
108 
110 
113  vtkSetMacro(GradientMagnitudeThreshold,vtkTypeBool);
114  vtkGetMacro(GradientMagnitudeThreshold,vtkTypeBool);
115  vtkBooleanMacro(GradientMagnitudeThreshold,vtkTypeBool);
117 
118 protected:
121 
125  // to determine which neighbors to diffuse
129  // What threshold to use
131 
132  void ThreadedRequestData(vtkInformation *request,
133  vtkInformationVector **inputVector,
134  vtkInformationVector *outputVector,
135  vtkImageData ***inData, vtkImageData **outData,
136  int extent[6], int id) override;
137  void Iterate(vtkImageData *in, vtkImageData *out,
138  double ar0, double ar1, double ar3, int *coreExtent, int count);
139 private:
141  void operator=(const vtkImageAnisotropicDiffusion3D&) = delete;
142 };
143 
144 #endif
145 
146 
147 
Store vtkAlgorithm input/output information.
int vtkTypeBool
Definition: vtkABI.h:69
a simple class to control print indentation
Definition: vtkIndent.h:39
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
virtual void ThreadedRequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int extent[6], int threadId)
If the subclass does not define an Execute method, then the task will be broken up, multiple threads will be spawned, and each thread will call this method.
Filters that operate on pixel neighborhoods.
Store zero or more vtkInformation instances.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static vtkImageSpatialAlgorithm * New()