vtkImageAnisotropicDiffusion2D Class Reference

#include <vtkImageAnisotropicDiffusion2D.h>

Inheritance diagram for vtkImageAnisotropicDiffusion2D:

Inheritance graph
[legend]
Collaboration diagram for vtkImageAnisotropicDiffusion2D:

Collaboration graph
[legend]

List of all members.


Detailed Description

edge preserving smoothing.

vtkImageAnisotropicDiffusion2D diffuses a 2d image iteratively. The neighborhood of the diffusion is determined by the instance flags. If "Edges" is on the 4 edge connected voxels are included, and if "Corners" is on, the 4 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:
vtkImageAnisotropicDiffusion3D
Tests:
vtkImageAnisotropicDiffusion2D (Tests)

Definition at line 47 of file vtkImageAnisotropicDiffusion2D.h.


Public Types

typedef vtkImageSpatialAlgorithm Superclass

Public Member Functions

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 (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 ()

Static Public Member Functions

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

Protected Member Functions

 vtkImageAnisotropicDiffusion2D ()
 ~vtkImageAnisotropicDiffusion2D ()
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, int *coreExtent, int count)

Protected Attributes

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

Member Typedef Documentation

Reimplemented from vtkImageSpatialAlgorithm.

Definition at line 51 of file vtkImageAnisotropicDiffusion2D.h.


Constructor & Destructor Documentation

vtkImageAnisotropicDiffusion2D::vtkImageAnisotropicDiffusion2D (  )  [protected]

vtkImageAnisotropicDiffusion2D::~vtkImageAnisotropicDiffusion2D (  )  [inline, protected]

Definition at line 108 of file vtkImageAnisotropicDiffusion2D.h.


Member Function Documentation

static vtkImageAnisotropicDiffusion2D* vtkImageAnisotropicDiffusion2D::New (  )  [static]

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

Reimplemented from vtkImageSpatialAlgorithm.

virtual const char* vtkImageAnisotropicDiffusion2D::GetClassName (  )  [virtual]

Reimplemented from vtkImageSpatialAlgorithm.

static int vtkImageAnisotropicDiffusion2D::IsTypeOf ( const char *  name  )  [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 vtkImageSpatialAlgorithm.

virtual int vtkImageAnisotropicDiffusion2D::IsA ( const char *  name  )  [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 vtkImageSpatialAlgorithm.

static vtkImageAnisotropicDiffusion2D* vtkImageAnisotropicDiffusion2D::SafeDownCast ( vtkObject o  )  [static]

Reimplemented from vtkImageSpatialAlgorithm.

void vtkImageAnisotropicDiffusion2D::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 vtkImageSpatialAlgorithm.

void vtkImageAnisotropicDiffusion2D::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 vtkImageAnisotropicDiffusion2D::GetNumberOfIterations (  )  [virtual]

Get the number of iterations.

virtual void vtkImageAnisotropicDiffusion2D::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 vtkImageAnisotropicDiffusion2D::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 vtkImageAnisotropicDiffusion2D::SetDiffusionFactor ( double   )  [virtual]

The diffusion factor specifies how much neighboring pixels effect each other. No diffusion occurs with a factor of 0, and a diffusion factor of 1 causes the pixel to become the average of all its neighbors.

virtual double vtkImageAnisotropicDiffusion2D::GetDiffusionFactor (  )  [virtual]

The diffusion factor specifies how much neighboring pixels effect each other. No diffusion occurs with a factor of 0, and a diffusion factor of 1 causes the pixel to become the average of all its neighbors.

virtual void vtkImageAnisotropicDiffusion2D::SetFaces ( int   )  [virtual]

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

virtual int vtkImageAnisotropicDiffusion2D::GetFaces (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::FacesOn (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::FacesOff (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::SetEdges ( int   )  [virtual]

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

virtual int vtkImageAnisotropicDiffusion2D::GetEdges (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::EdgesOn (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::EdgesOff (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::SetCorners ( int   )  [virtual]

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

virtual int vtkImageAnisotropicDiffusion2D::GetCorners (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::CornersOn (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::CornersOff (  )  [virtual]

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

virtual void vtkImageAnisotropicDiffusion2D::SetGradientMagnitudeThreshold ( int   )  [virtual]

Switch between gradient magnitude threshold and pixel gradient threshold.

virtual int vtkImageAnisotropicDiffusion2D::GetGradientMagnitudeThreshold (  )  [virtual]

Switch between gradient magnitude threshold and pixel gradient threshold.

virtual void vtkImageAnisotropicDiffusion2D::GradientMagnitudeThresholdOn (  )  [virtual]

Switch between gradient magnitude threshold and pixel gradient threshold.

virtual void vtkImageAnisotropicDiffusion2D::GradientMagnitudeThresholdOff (  )  [virtual]

Switch between gradient magnitude threshold and pixel gradient threshold.

void vtkImageAnisotropicDiffusion2D::ThreadedRequestData ( vtkInformation request,
vtkInformationVector **  inputVector,
vtkInformationVector outputVector,
vtkImageData ***  inData,
vtkImageData **  outData,
int  extent[6],
int  threadId 
) [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 vtkThreadedImageAlgorithm.

void vtkImageAnisotropicDiffusion2D::Iterate ( vtkImageData in,
vtkImageData out,
double  ar0,
double  ar1,
int *  coreExtent,
int  count 
) [protected]


Member Data Documentation

Definition at line 108 of file vtkImageAnisotropicDiffusion2D.h.

Definition at line 111 of file vtkImageAnisotropicDiffusion2D.h.

Definition at line 112 of file vtkImageAnisotropicDiffusion2D.h.

Definition at line 114 of file vtkImageAnisotropicDiffusion2D.h.

Definition at line 115 of file vtkImageAnisotropicDiffusion2D.h.

Definition at line 116 of file vtkImageAnisotropicDiffusion2D.h.

Definition at line 118 of file vtkImageAnisotropicDiffusion2D.h.


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

Generated on Wed Jun 3 19:08:29 2009 for VTK by  doxygen 1.5.6