VTK  9.2.6
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 =========================================================================*/
43 #ifndef vtkImageAnisotropicDiffusion2D_h
44 #define vtkImageAnisotropicDiffusion2D_h
45 
47 #include "vtkImagingGeneralModule.h" // For export macro
48 class VTKIMAGINGGENERAL_EXPORT vtkImageAnisotropicDiffusion2D : public vtkImageSpatialAlgorithm
49 {
50 public:
53  void PrintSelf(ostream& os, vtkIndent indent) override;
54 
61  void SetNumberOfIterations(int num);
62 
64 
67  vtkGetMacro(NumberOfIterations, int);
69 
71 
78  vtkSetMacro(DiffusionThreshold, double);
79  vtkGetMacro(DiffusionThreshold, double);
81 
83 
88  vtkSetMacro(DiffusionFactor, double);
89  vtkGetMacro(DiffusionFactor, double);
91 
93 
96  vtkSetMacro(Faces, vtkTypeBool);
97  vtkGetMacro(Faces, vtkTypeBool);
98  vtkBooleanMacro(Faces, vtkTypeBool);
99  vtkSetMacro(Edges, vtkTypeBool);
100  vtkGetMacro(Edges, vtkTypeBool);
101  vtkBooleanMacro(Edges, vtkTypeBool);
102  vtkSetMacro(Corners, vtkTypeBool);
103  vtkGetMacro(Corners, vtkTypeBool);
104  vtkBooleanMacro(Corners, vtkTypeBool);
106 
108 
111  vtkSetMacro(GradientMagnitudeThreshold, vtkTypeBool);
112  vtkGetMacro(GradientMagnitudeThreshold, vtkTypeBool);
113  vtkBooleanMacro(GradientMagnitudeThreshold, vtkTypeBool);
115 
116 protected:
118  ~vtkImageAnisotropicDiffusion2D() override = default;
119 
123  // to determine which neighbors to diffuse
127  // What threshold to use
129 
130  void ThreadedRequestData(vtkInformation* request, vtkInformationVector** inputVector,
131  vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
132  int outExt[6], int id) override;
133  void Iterate(
134  vtkImageData* in, vtkImageData* out, double ar0, double ar1, int* coreExtent, int count);
135 
136 private:
138  void operator=(const vtkImageAnisotropicDiffusion2D&) = delete;
139 };
140 
141 #endif
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:53
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()