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

vtkImageAnisotropicDiffusion3D Class Reference

#include <vtkImageAnisotropicDiffusion3D.h>

Inheritance diagram for vtkImageAnisotropicDiffusion3D:

Inheritance graph
[legend]
Collaboration diagram for vtkImageAnisotropicDiffusion3D:

Collaboration graph
[legend]
List of all members.

Detailed Description

edge preserving smoothing.

Date:
2002/01/22 15:31:49
Revision:
1.30

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
Created by:
  • Law, Charles
CVS contributions (if > 5%):
  • Law, Charles (70%)
  • Martin, Ken (25%)
CVS logs (CVSweb):
  • .cxx (/Imaging/vtkImageAnisotropicDiffusion3D.cxx)
  • .h (/Imaging/vtkImageAnisotropicDiffusion3D.h)
Tests:
vtkImageAnisotropicDiffusion3D (Tests)

Definition at line 64 of file vtkImageAnisotropicDiffusion3D.h.

Public Types

typedef vtkImageSpatialFilter Superclass

Public Methods

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
void SetNumberOfIterations (int num)
virtual int GetNumberOfIterations ()
virtual void SetDiffusionThreshold (float)
virtual float GetDiffusionThreshold ()
virtual void SetDiffusionFactor (float)
virtual float 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 ()

Static Public Methods

vtkImageAnisotropicDiffusion3D * New ()
int IsTypeOf (const char *type)
vtkImageAnisotropicDiffusion3D * SafeDownCast (vtkObject *o)

Protected Methods

 vtkImageAnisotropicDiffusion3D ()
 ~vtkImageAnisotropicDiffusion3D ()
void ThreadedExecute (vtkImageData *inData, vtkImageData *outData, int extent[6], int id)
void Iterate (vtkImageData *in, vtkImageData *out, float ar0, float ar1, float ar3, int *coreExtent, int count)

Protected Attributes

int NumberOfIterations
float DiffusionThreshold
float DiffusionFactor
int Faces
int Edges
int Corners
int GradientMagnitudeThreshold


Member Typedef Documentation

typedef vtkImageSpatialFilter vtkImageAnisotropicDiffusion3D::Superclass
 

Reimplemented from vtkImageSpatialFilter.

Definition at line 68 of file vtkImageAnisotropicDiffusion3D.h.


Constructor & Destructor Documentation

vtkImageAnisotropicDiffusion3D::vtkImageAnisotropicDiffusion3D   [protected]
 

vtkImageAnisotropicDiffusion3D::~vtkImageAnisotropicDiffusion3D   [inline, protected]
 

Definition at line 123 of file vtkImageAnisotropicDiffusion3D.h.


Member Function Documentation

vtkImageAnisotropicDiffusion3D* vtkImageAnisotropicDiffusion3D::New   [static]
 

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkImageSpatialFilter.

virtual const char* vtkImageAnisotropicDiffusion3D::GetClassName   [virtual]
 

Reimplemented from vtkImageSpatialFilter.

int vtkImageAnisotropicDiffusion3D::IsTypeOf const char *    type [static]
 

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkImageSpatialFilter.

virtual int vtkImageAnisotropicDiffusion3D::IsA const char *    type [virtual]
 

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkImageSpatialFilter.

vtkImageAnisotropicDiffusion3D* vtkImageAnisotropicDiffusion3D::SafeDownCast vtkObject   o [static]
 

Reimplemented from vtkImageSpatialFilter.

void vtkImageAnisotropicDiffusion3D::PrintSelf ostream &    os,
vtkIndent    indent
[virtual]
 

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkImageSpatialFilter.

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 float    [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 float 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 float    [virtual]
 

Set/Get the difference factor

virtual float 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::ThreadedExecute vtkImageData   inData,
vtkImageData   outData,
int    extent[6],
int    id
[protected, virtual]
 

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. It is public so that the thread functions can call this method.

Reimplemented from vtkImageToImageFilter.

void vtkImageAnisotropicDiffusion3D::Iterate vtkImageData   in,
vtkImageData   out,
float    ar0,
float    ar1,
float    ar3,
int *    coreExtent,
int    count
[protected]
 


Member Data Documentation

int vtkImageAnisotropicDiffusion3D::NumberOfIterations [protected]
 

Definition at line 125 of file vtkImageAnisotropicDiffusion3D.h.

float vtkImageAnisotropicDiffusion3D::DiffusionThreshold [protected]
 

Definition at line 126 of file vtkImageAnisotropicDiffusion3D.h.

float vtkImageAnisotropicDiffusion3D::DiffusionFactor [protected]
 

Definition at line 127 of file vtkImageAnisotropicDiffusion3D.h.

int vtkImageAnisotropicDiffusion3D::Faces [protected]
 

Definition at line 129 of file vtkImageAnisotropicDiffusion3D.h.

int vtkImageAnisotropicDiffusion3D::Edges [protected]
 

Definition at line 130 of file vtkImageAnisotropicDiffusion3D.h.

int vtkImageAnisotropicDiffusion3D::Corners [protected]
 

Definition at line 131 of file vtkImageAnisotropicDiffusion3D.h.

int vtkImageAnisotropicDiffusion3D::GradientMagnitudeThreshold [protected]
 

Definition at line 133 of file vtkImageAnisotropicDiffusion3D.h.


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