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

# Imaging/vtkImageAnisotropicDiffusion3D.h

Go to the documentation of this file.

    00001 /*=========================================================================
    00002
    00003   Program:   Visualization Toolkit
    00004   Module:    $RCSfile: vtkImageAnisotropicDiffusion3D.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 =========================================================================*/
    00058 #ifndef __vtkImageAnisotropicDiffusion3D_h
    00059 #define __vtkImageAnisotropicDiffusion3D_h
    00060
    00061
    00062 #include "vtkImageSpatialFilter.h"
    00063
    00064 class VTK_IMAGING_EXPORT vtkImageAnisotropicDiffusion3D : public vtkImageSpatialFilter
    00065 {
    00066 public:
    00067   static vtkImageAnisotropicDiffusion3D *New();
    00068   vtkTypeRevisionMacro(vtkImageAnisotropicDiffusion3D,vtkImageSpatialFilter);
    00069   void PrintSelf(ostream& os, vtkIndent indent);
    00070
    00071
    00077   void SetNumberOfIterations(int num);
    00078
    00080
    00081   vtkGetMacro(NumberOfIterations,int);
    00083
    00085
    00090   vtkSetMacro(DiffusionThreshold,float);
    00091   vtkGetMacro(DiffusionThreshold,float);
    00093
    00095
    00096   vtkSetMacro(DiffusionFactor,float);
    00097   vtkGetMacro(DiffusionFactor,float);
    00099
    00101
    00102   vtkSetMacro(Faces,int);
    00103   vtkGetMacro(Faces,int);
    00104   vtkBooleanMacro(Faces,int);
    00105   vtkSetMacro(Edges,int);
    00106   vtkGetMacro(Edges,int);
    00107   vtkBooleanMacro(Edges,int);
    00108   vtkSetMacro(Corners,int);
    00109   vtkGetMacro(Corners,int);
    00110   vtkBooleanMacro(Corners,int);
    00112
    00114
    00116   vtkSetMacro(GradientMagnitudeThreshold,int);
    00117   vtkGetMacro(GradientMagnitudeThreshold,int);
    00118   vtkBooleanMacro(GradientMagnitudeThreshold,int);
    00120
    00121 protected:
    00122   vtkImageAnisotropicDiffusion3D();
    00123   ~vtkImageAnisotropicDiffusion3D() {};
    00124
    00125   int NumberOfIterations;
    00126   float DiffusionThreshold;
    00127   float DiffusionFactor;
    00128   // to determine which neighbors to diffuse
    00129   int Faces;
    00130   int Edges;
    00131   int Corners;
    00132   // What threshold to use
    00133   int GradientMagnitudeThreshold;
    00134
    00135   void ThreadedExecute(vtkImageData *inData, vtkImageData *outData,
    00136                        int extent[6], int id);
    00137   void Iterate(vtkImageData *in, vtkImageData *out,
    00138                float ar0, float ar1, float ar3, int *coreExtent, int count);
    00139 private:
    00140   vtkImageAnisotropicDiffusion3D(const vtkImageAnisotropicDiffusion3D&);  // Not implemented.
    00141   void operator=(const vtkImageAnisotropicDiffusion3D&);  // Not implemented.
    00142 };
    00143
    00144 #endif
    00145
    00146
    00147