VTK
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 =========================================================================*/
42 #ifndef __vtkImageAnisotropicDiffusion2D_h
43 #define __vtkImageAnisotropicDiffusion2D_h
44 
45 
48 {
49 public:
52  void PrintSelf(ostream& os, vtkIndent indent);
53 
59  void SetNumberOfIterations(int num);
60 
62 
63  vtkGetMacro(NumberOfIterations,int);
65 
67 
72  vtkSetMacro(DiffusionThreshold,double);
73  vtkGetMacro(DiffusionThreshold,double);
75 
77 
81  vtkSetMacro(DiffusionFactor,double);
82  vtkGetMacro(DiffusionFactor,double);
84 
86 
87  vtkSetMacro(Faces,int);
88  vtkGetMacro(Faces,int);
89  vtkBooleanMacro(Faces,int);
90  vtkSetMacro(Edges,int);
91  vtkGetMacro(Edges,int);
92  vtkBooleanMacro(Edges,int);
93  vtkSetMacro(Corners,int);
94  vtkGetMacro(Corners,int);
95  vtkBooleanMacro(Corners,int);
97 
99 
101  vtkSetMacro(GradientMagnitudeThreshold,int);
102  vtkGetMacro(GradientMagnitudeThreshold,int);
103  vtkBooleanMacro(GradientMagnitudeThreshold,int);
105 
106 protected:
109 
110  int NumberOfIterations;
113  // to determine which neighbors to diffuse
114  int Faces;
115  int Edges;
116  int Corners;
117  // What threshold to use
119 
120  void ThreadedRequestData(vtkInformation *request,
121  vtkInformationVector **inputVector,
122  vtkInformationVector *outputVector,
123  vtkImageData ***inData, vtkImageData **outData,
124  int extent[6], int id);
125  void Iterate(vtkImageData *in, vtkImageData *out,
126  double ar0, double ar1, int *coreExtent, int count);
127 private:
129  void operator=(const vtkImageAnisotropicDiffusion2D&); // Not implemented.
130 };
131 
132 #endif
133 
134 
135