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 =========================================================================*/
41 #ifndef vtkImageAnisotropicDiffusion3D_h
42 #define vtkImageAnisotropicDiffusion3D_h
43 
44 
45 #include "vtkImagingGeneralModule.h" // For export macro
47 
48 class VTKIMAGINGGENERAL_EXPORT vtkImageAnisotropicDiffusion3D : public vtkImageSpatialAlgorithm
49 {
50 public:
53  void PrintSelf(ostream& os, vtkIndent indent) override;
54 
55 
62  void SetNumberOfIterations(int num);
63 
65 
68  vtkGetMacro(NumberOfIterations,int);
70 
72 
79  vtkSetMacro(DiffusionThreshold,double);
80  vtkGetMacro(DiffusionThreshold,double);
82 
84 
87  vtkSetMacro(DiffusionFactor,double);
88  vtkGetMacro(DiffusionFactor,double);
90 
92 
95  vtkSetMacro(Faces,vtkTypeBool);
96  vtkGetMacro(Faces,vtkTypeBool);
97  vtkBooleanMacro(Faces,vtkTypeBool);
98  vtkSetMacro(Edges,vtkTypeBool);
99  vtkGetMacro(Edges,vtkTypeBool);
100  vtkBooleanMacro(Edges,vtkTypeBool);
101  vtkSetMacro(Corners,vtkTypeBool);
102  vtkGetMacro(Corners,vtkTypeBool);
103  vtkBooleanMacro(Corners,vtkTypeBool);
105 
107 
110  vtkSetMacro(GradientMagnitudeThreshold,vtkTypeBool);
111  vtkGetMacro(GradientMagnitudeThreshold,vtkTypeBool);
112  vtkBooleanMacro(GradientMagnitudeThreshold,vtkTypeBool);
114 
115 protected:
118 
122  // to determine which neighbors to diffuse
126  // What threshold to use
128 
129  void ThreadedRequestData(vtkInformation *request,
130  vtkInformationVector **inputVector,
131  vtkInformationVector *outputVector,
132  vtkImageData ***inData, vtkImageData **outData,
133  int extent[6], int id) override;
134  void Iterate(vtkImageData *in, vtkImageData *out,
135  double ar0, double ar1, double ar3, int *coreExtent, int count);
136 private:
138  void operator=(const vtkImageAnisotropicDiffusion3D&) = delete;
139 };
140 
141 #endif
142 
143 
144 
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:39
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()