VTK  9.0.1
vtkImageAnisotropicDiffusion2D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageAnisotropicDiffusion2D.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 =========================================================================*/
40 #ifndef vtkImageAnisotropicDiffusion2D_h
41 #define vtkImageAnisotropicDiffusion2D_h
42 
44 #include "vtkImagingGeneralModule.h" // For export macro
45 class VTKIMAGINGGENERAL_EXPORT vtkImageAnisotropicDiffusion2D : public vtkImageSpatialAlgorithm
46 {
47 public:
50  void PrintSelf(ostream& os, vtkIndent indent) override;
51 
58  void SetNumberOfIterations(int num);
59 
61 
64  vtkGetMacro(NumberOfIterations, int);
66 
68 
75  vtkSetMacro(DiffusionThreshold, double);
76  vtkGetMacro(DiffusionThreshold, double);
78 
80 
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 
127  void ThreadedRequestData(vtkInformation* request, vtkInformationVector** inputVector,
128  vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
129  int extent[6], int id) override;
130  void Iterate(
131  vtkImageData* in, vtkImageData* out, double ar0, double ar1, int* coreExtent, int count);
132 
133 private:
135  void operator=(const vtkImageAnisotropicDiffusion2D&) = delete;
136 };
137 
138 #endif
Store vtkAlgorithm input/output information.
int vtkTypeBool
Definition: vtkABI.h:69
a simple class to control print indentation
Definition: vtkIndent.h:33
topologically and geometrically regular array of data
Definition: vtkImageData.h:41
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()