VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkImageAnisotropicDiffusion3D Class Reference

edge preserving smoothing. More...

#include <vtkImageAnisotropicDiffusion3D.h>

Inheritance diagram for vtkImageAnisotropicDiffusion3D:
[legend]
Collaboration diagram for vtkImageAnisotropicDiffusion3D:
[legend]

Public Types

typedef vtkImageSpatialAlgorithm Superclass
 
- Public Types inherited from vtkImageSpatialAlgorithm
typedef vtkThreadedImageAlgorithm Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkImageAnisotropicDiffusion3DNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
void SetNumberOfIterations (int num)
 
virtual int GetNumberOfIterations ()
 
virtual void SetDiffusionThreshold (double)
 
virtual double GetDiffusionThreshold ()
 
virtual void SetDiffusionFactor (double)
 
virtual double GetDiffusionFactor ()
 
virtual void SetFaces (int)
 
virtual int GetFaces ()
 
virtual void FacesOn ()
 
virtual void FacesOff ()
 
virtual void SetEdges (int)
 
virtual int GetEdges ()
 
virtual void EdgesOn ()
 
virtual void EdgesOff ()
 
virtual void SetCorners (int)
 
virtual int GetCorners ()
 
virtual void CornersOn ()
 
virtual void CornersOff ()
 
virtual void SetGradientMagnitudeThreshold (int)
 
virtual int GetGradientMagnitudeThreshold ()
 
virtual void GradientMagnitudeThresholdOn ()
 
virtual void GradientMagnitudeThresholdOff ()
 
- Public Member Functions inherited from vtkImageSpatialAlgorithm
vtkImageSpatialAlgorithmNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
virtual int * GetKernelSize ()
 
virtual void GetKernelSize (int &, int &, int &)
 
virtual void GetKernelSize (int[3])
 
virtual int * GetKernelMiddle ()
 
virtual void GetKernelMiddle (int &, int &, int &)
 
virtual void GetKernelMiddle (int[3])
 

Static Public Member Functions

static
vtkImageAnisotropicDiffusion3D
New ()
 
static int IsTypeOf (const char *type)
 
static
vtkImageAnisotropicDiffusion3D
SafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkImageSpatialAlgorithm
static vtkImageSpatialAlgorithmNew ()
 
static int IsTypeOf (const char *type)
 
static vtkImageSpatialAlgorithmSafeDownCast (vtkObjectBase *o)
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkImageAnisotropicDiffusion3D ()
 
 ~vtkImageAnisotropicDiffusion3D ()
 
void ThreadedRequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int extent[6], int id)
 
void Iterate (vtkImageData *in, vtkImageData *out, double ar0, double ar1, double ar3, int *coreExtent, int count)
 
- Protected Member Functions inherited from vtkImageSpatialAlgorithm
 vtkImageSpatialAlgorithm ()
 
 ~vtkImageSpatialAlgorithm ()
 
virtual int RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
void ComputeOutputWholeExtent (int extent[6], int handleBoundaries)
 
virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
void InternalRequestUpdateExtent (int *extent, int *inExtent, int *wholeExtent)
 

Protected Attributes

int NumberOfIterations
 
double DiffusionThreshold
 
double DiffusionFactor
 
int Faces
 
int Edges
 
int Corners
 
int GradientMagnitudeThreshold
 
- Protected Attributes inherited from vtkImageSpatialAlgorithm
int KernelSize [3]
 
int KernelMiddle [3]
 
int HandleBoundaries
 

Detailed Description

edge preserving smoothing.

vtkImageAnisotropicDiffusion3D diffuses an volume iteratively. The neighborhood of the diffusion is determined by the instance flags. if "Faces" is on, the 6 voxels adjoined by faces are included in the neighborhood. If "Edges" is on the 12 edge connected voxels are included, and if "Corners" is on, the 8 corner connected voxels are included. "DiffusionFactor" determines how far a pixel value moves toward its neighbors, and is insensitive to the number of neighbors chosen. The diffusion is anisotropic because it only occurs when a gradient measure is below "GradientThreshold". Two gradient measures exist and are toggled by the "GradientMagnitudeThreshold" flag. When "GradientMagnitudeThreshold" is on, the magnitude of the gradient, computed by central differences, above "DiffusionThreshold" a voxel is not modified. The alternative measure examines each neighbor independently. The gradient between the voxel and the neighbor must be below the "DiffusionThreshold" for diffusion to occur with THAT neighbor.

See Also
vtkImageAnisotropicDiffusion2D
Tests:
vtkImageAnisotropicDiffusion3D (Tests)

Definition at line 50 of file vtkImageAnisotropicDiffusion3D.h.

Member Typedef Documentation

Definition at line 54 of file vtkImageAnisotropicDiffusion3D.h.

Constructor & Destructor Documentation

vtkImageAnisotropicDiffusion3D::vtkImageAnisotropicDiffusion3D ( )
protected
vtkImageAnisotropicDiffusion3D::~vtkImageAnisotropicDiffusion3D ( )
inlineprotected

Definition at line 109 of file vtkImageAnisotropicDiffusion3D.h.

Member Function Documentation

static vtkImageAnisotropicDiffusion3D* vtkImageAnisotropicDiffusion3D::New ( )
static
static int vtkImageAnisotropicDiffusion3D::IsTypeOf ( const char *  type)
static
virtual int vtkImageAnisotropicDiffusion3D::IsA ( const char *  type)
virtual

Reimplemented from vtkImageSpatialAlgorithm.

static vtkImageAnisotropicDiffusion3D* vtkImageAnisotropicDiffusion3D::SafeDownCast ( vtkObjectBase *  o)
static
virtual vtkObjectBase* vtkImageAnisotropicDiffusion3D::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkImageSpatialAlgorithm.

vtkImageAnisotropicDiffusion3D* vtkImageAnisotropicDiffusion3D::NewInstance ( ) const
void vtkImageAnisotropicDiffusion3D::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
void vtkImageAnisotropicDiffusion3D::SetNumberOfIterations ( int  num)

This method sets the number of interations which also affects the input neighborhood needed to compute one output pixel. Each iterations requires an extra pixel layer on the neighborhood. This is only relavent when you are trying to stream or are requesting a sub extent of the "wholeExtent".

virtual int vtkImageAnisotropicDiffusion3D::GetNumberOfIterations ( )
virtual

Get the number of iterations.

virtual void vtkImageAnisotropicDiffusion3D::SetDiffusionThreshold ( double  )
virtual

Set/Get the difference threshold that stops diffusion. when the difference between two pixel is greater than this threshold, the pixels are not diffused. This causes diffusion to avoid sharp edges. If the GradientMagnitudeThreshold is set, then gradient magnitude is used for comparison instead of pixel differences.

virtual double vtkImageAnisotropicDiffusion3D::GetDiffusionThreshold ( )
virtual

Set/Get the difference threshold that stops diffusion. when the difference between two pixel is greater than this threshold, the pixels are not diffused. This causes diffusion to avoid sharp edges. If the GradientMagnitudeThreshold is set, then gradient magnitude is used for comparison instead of pixel differences.

virtual void vtkImageAnisotropicDiffusion3D::SetDiffusionFactor ( double  )
virtual

Set/Get the difference factor

virtual double vtkImageAnisotropicDiffusion3D::GetDiffusionFactor ( )
virtual

Set/Get the difference factor

virtual void vtkImageAnisotropicDiffusion3D::SetFaces ( int  )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual int vtkImageAnisotropicDiffusion3D::GetFaces ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::FacesOn ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::FacesOff ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::SetEdges ( int  )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual int vtkImageAnisotropicDiffusion3D::GetEdges ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::EdgesOn ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::EdgesOff ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::SetCorners ( int  )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual int vtkImageAnisotropicDiffusion3D::GetCorners ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::CornersOn ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::CornersOff ( )
virtual

Choose neighbors to diffuse (6 faces, 12 edges, 8 corners).

virtual void vtkImageAnisotropicDiffusion3D::SetGradientMagnitudeThreshold ( int  )
virtual

Switch between gradient magnitude threshold and pixel gradient threshold.

virtual int vtkImageAnisotropicDiffusion3D::GetGradientMagnitudeThreshold ( )
virtual

Switch between gradient magnitude threshold and pixel gradient threshold.

virtual void vtkImageAnisotropicDiffusion3D::GradientMagnitudeThresholdOn ( )
virtual

Switch between gradient magnitude threshold and pixel gradient threshold.

virtual void vtkImageAnisotropicDiffusion3D::GradientMagnitudeThresholdOff ( )
virtual

Switch between gradient magnitude threshold and pixel gradient threshold.

void vtkImageAnisotropicDiffusion3D::ThreadedRequestData ( vtkInformation *  request,
vtkInformationVector **  inputVector,
vtkInformationVector *  outputVector,
vtkImageData ***  inData,
vtkImageData **  outData,
int  extent[6],
int  id 
)
protected
void vtkImageAnisotropicDiffusion3D::Iterate ( vtkImageData *  in,
vtkImageData *  out,
double  ar0,
double  ar1,
double  ar3,
int *  coreExtent,
int  count 
)
protected

Member Data Documentation

int vtkImageAnisotropicDiffusion3D::NumberOfIterations
protected

Definition at line 109 of file vtkImageAnisotropicDiffusion3D.h.

double vtkImageAnisotropicDiffusion3D::DiffusionThreshold
protected

Definition at line 112 of file vtkImageAnisotropicDiffusion3D.h.

double vtkImageAnisotropicDiffusion3D::DiffusionFactor
protected

Definition at line 113 of file vtkImageAnisotropicDiffusion3D.h.

int vtkImageAnisotropicDiffusion3D::Faces
protected

Definition at line 115 of file vtkImageAnisotropicDiffusion3D.h.

int vtkImageAnisotropicDiffusion3D::Edges
protected

Definition at line 116 of file vtkImageAnisotropicDiffusion3D.h.

int vtkImageAnisotropicDiffusion3D::Corners
protected

Definition at line 117 of file vtkImageAnisotropicDiffusion3D.h.

int vtkImageAnisotropicDiffusion3D::GradientMagnitudeThreshold
protected

Definition at line 119 of file vtkImageAnisotropicDiffusion3D.h.


The documentation for this class was generated from the following file: