Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Imaging/vtkImageAnisotropicDiffusion2D.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkImageAnisotropicDiffusion2D.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00046 #ifndef __vtkImageAnisotropicDiffusion2D_h 00047 #define __vtkImageAnisotropicDiffusion2D_h 00048 00049 00050 #include "vtkImageSpatialFilter.h" 00051 class VTK_IMAGING_EXPORT vtkImageAnisotropicDiffusion2D : public vtkImageSpatialFilter 00052 { 00053 public: 00054 static vtkImageAnisotropicDiffusion2D *New(); 00055 vtkTypeRevisionMacro(vtkImageAnisotropicDiffusion2D,vtkImageSpatialFilter); 00056 void PrintSelf(ostream& os, vtkIndent indent); 00057 00063 void SetNumberOfIterations(int num); 00064 00066 00067 vtkGetMacro(NumberOfIterations,int); 00069 00071 00076 vtkSetMacro(DiffusionThreshold,float); 00077 vtkGetMacro(DiffusionThreshold,float); 00079 00081 00085 vtkSetMacro(DiffusionFactor,float); 00086 vtkGetMacro(DiffusionFactor,float); 00088 00090 00091 vtkSetMacro(Faces,int); 00092 vtkGetMacro(Faces,int); 00093 vtkBooleanMacro(Faces,int); 00094 vtkSetMacro(Edges,int); 00095 vtkGetMacro(Edges,int); 00096 vtkBooleanMacro(Edges,int); 00097 vtkSetMacro(Corners,int); 00098 vtkGetMacro(Corners,int); 00099 vtkBooleanMacro(Corners,int); 00101 00103 00105 vtkSetMacro(GradientMagnitudeThreshold,int); 00106 vtkGetMacro(GradientMagnitudeThreshold,int); 00107 vtkBooleanMacro(GradientMagnitudeThreshold,int); 00109 00110 protected: 00111 vtkImageAnisotropicDiffusion2D(); 00112 ~vtkImageAnisotropicDiffusion2D() {}; 00113 00114 int NumberOfIterations; 00115 float DiffusionThreshold; 00116 float DiffusionFactor; 00117 // to determine which neighbors to diffuse 00118 int Faces; 00119 int Edges; 00120 int Corners; 00121 // What threshold to use 00122 int GradientMagnitudeThreshold; 00123 00124 void ThreadedExecute(vtkImageData *inData, vtkImageData *outData, 00125 int extent[6], int id); 00126 void Iterate(vtkImageData *in, vtkImageData *out, 00127 float ar0, float ar1, int *coreExtent, int count); 00128 private: 00129 vtkImageAnisotropicDiffusion2D(const vtkImageAnisotropicDiffusion2D&); // Not implemented. 00130 void operator=(const vtkImageAnisotropicDiffusion2D&); // Not implemented. 00131 }; 00132 00133 #endif 00134 00135 00136