#include <vtkImageAnisotropicDiffusion3D.h>
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.
Definition at line 49 of file vtkImageAnisotropicDiffusion3D.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 vtkImageAnisotropicDiffusion3D * | New () |
static int | IsTypeOf (const char *type) |
static vtkImageAnisotropicDiffusion3D * | SafeDownCast (vtkObject *o) |
Protected Member Functions | |
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 Attributes | |
int | NumberOfIterations |
double | DiffusionThreshold |
double | DiffusionFactor |
int | Faces |
int | Edges |
int | Corners |
int | GradientMagnitudeThreshold |
Reimplemented from vtkImageSpatialAlgorithm.
Definition at line 53 of file vtkImageAnisotropicDiffusion3D.h.
vtkImageAnisotropicDiffusion3D::vtkImageAnisotropicDiffusion3D | ( | ) | [protected] |
vtkImageAnisotropicDiffusion3D::~vtkImageAnisotropicDiffusion3D | ( | ) | [inline, protected] |
Definition at line 108 of file vtkImageAnisotropicDiffusion3D.h.
static vtkImageAnisotropicDiffusion3D* vtkImageAnisotropicDiffusion3D::New | ( | ) | [static] |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
Reimplemented from vtkImageSpatialAlgorithm.
virtual const char* vtkImageAnisotropicDiffusion3D::GetClassName | ( | ) | [virtual] |
Reimplemented from vtkImageSpatialAlgorithm.
static int vtkImageAnisotropicDiffusion3D::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 vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkImageSpatialAlgorithm.
virtual int vtkImageAnisotropicDiffusion3D::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 vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkImageSpatialAlgorithm.
static vtkImageAnisotropicDiffusion3D* vtkImageAnisotropicDiffusion3D::SafeDownCast | ( | vtkObject * | o | ) | [static] |
Reimplemented from vtkImageSpatialAlgorithm.
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 vtkImageSpatialAlgorithm.
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 | 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 vtkImageAnisotropicDiffusion3D::Iterate | ( | vtkImageData * | in, | |
vtkImageData * | out, | |||
double | ar0, | |||
double | ar1, | |||
double | ar3, | |||
int * | coreExtent, | |||
int | count | |||
) | [protected] |
int vtkImageAnisotropicDiffusion3D::NumberOfIterations [protected] |
Definition at line 108 of file vtkImageAnisotropicDiffusion3D.h.
double vtkImageAnisotropicDiffusion3D::DiffusionThreshold [protected] |
Definition at line 111 of file vtkImageAnisotropicDiffusion3D.h.
double vtkImageAnisotropicDiffusion3D::DiffusionFactor [protected] |
Definition at line 112 of file vtkImageAnisotropicDiffusion3D.h.
int vtkImageAnisotropicDiffusion3D::Faces [protected] |
Definition at line 114 of file vtkImageAnisotropicDiffusion3D.h.
int vtkImageAnisotropicDiffusion3D::Edges [protected] |
Definition at line 115 of file vtkImageAnisotropicDiffusion3D.h.
int vtkImageAnisotropicDiffusion3D::Corners [protected] |
Definition at line 116 of file vtkImageAnisotropicDiffusion3D.h.
int vtkImageAnisotropicDiffusion3D::GradientMagnitudeThreshold [protected] |
Definition at line 118 of file vtkImageAnisotropicDiffusion3D.h.