Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkLinkEdgels Class Reference

#include <vtkLinkEdgels.h>

Inheritance diagram for vtkLinkEdgels:

Inheritance graph
[legend]
Collaboration diagram for vtkLinkEdgels:

Collaboration graph
[legend]
List of all members.

Detailed Description

links edgels together to form digital curves.

vtkLinkEdgels links edgels into digital curves which are then stored as polylines. The algorithm works one pixel at a time only looking at its immediate neighbors. There is a GradientThreshold that can be set that eliminates any pixels with a smaller gradient value. This can be used as the lower threshold of a two value edgel thresholding.

For the remaining edgels, links are first tried for the four connected neighbors. A successful neighbor will satisfy three tests. First both edgels must be above the gradient threshold. Second, the difference between the orientation between the two edgels (Alpha) and each edgels orientation (Phi) must be less than LinkThreshold. Third, the difference between the two edgels Phi values must be less than PhiThreshold. The most successful link is selected. The measure is simply the sum of the three angle differences (actually stored as the sum of the cosines). If none of the four connect neighbors succeeds, then the eight connect neighbors are examined using the same method.

This filter requires gradient information so you will need to use a vtkImageGradient at some point prior to this filter. Typically a vtkNonMaximumSuppression filter is also used. vtkThresholdEdgels can be used to complete the two value edgel thresholding as used in a Canny edge detector. The vtkSubpixelPositionEdgels filter can also be used after this filter to adjust the edgel locations.

See also:
vtkImageData vtkImageGradient vtkImageNonMaximumSuppression
Tests:
vtkLinkEdgels (Tests)

Definition at line 60 of file vtkLinkEdgels.h.
virtual void SetLinkThreshold (double)
virtual double GetLinkThreshold ()
static vtkLinkEdgelsNew ()

Public Types

typedef vtkPolyDataAlgorithm Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
virtual void SetPhiThreshold (double)
virtual double GetPhiThreshold ()
virtual void SetGradientThreshold (double)
virtual double GetGradientThreshold ()

Static Public Member Functions

static int IsTypeOf (const char *type)
static vtkLinkEdgelsSafeDownCast (vtkObject *o)

Protected Member Functions

 vtkLinkEdgels ()
 ~vtkLinkEdgels ()
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
virtual int FillInputPortInformation (int port, vtkInformation *info)
void LinkEdgels (int xdim, int ydim, double *image, vtkDataArray *inVectors, vtkCellArray *newLines, vtkPoints *newPts, vtkDoubleArray *outScalars, vtkDoubleArray *outVectors, int z)

Protected Attributes

double GradientThreshold
double PhiThreshold
double LinkThreshold


Member Typedef Documentation

typedef vtkPolyDataAlgorithm vtkLinkEdgels::Superclass
 

Reimplemented from vtkPolyDataAlgorithm.

Definition at line 63 of file vtkLinkEdgels.h.


Constructor & Destructor Documentation

vtkLinkEdgels::vtkLinkEdgels  )  [protected]
 

vtkLinkEdgels::~vtkLinkEdgels  )  [inline, protected]
 

Definition at line 91 of file vtkLinkEdgels.h.


Member Function Documentation

virtual const char* vtkLinkEdgels::GetClassName  )  [virtual]
 

Reimplemented from vtkPolyDataAlgorithm.

static int vtkLinkEdgels::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 vtkPolyDataAlgorithm.

virtual int vtkLinkEdgels::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 vtkPolyDataAlgorithm.

static vtkLinkEdgels* vtkLinkEdgels::SafeDownCast vtkObject o  )  [static]
 

Reimplemented from vtkPolyDataAlgorithm.

void vtkLinkEdgels::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 vtkPolyDataAlgorithm.

static vtkLinkEdgels* vtkLinkEdgels::New  )  [static]
 

Construct instance of vtkLinkEdgels with GradientThreshold set to 0.1, PhiThreshold set to 90 degrees and LinkThreshold set to 90 degrees.

Reimplemented from vtkPolyDataAlgorithm.

virtual void vtkLinkEdgels::SetLinkThreshold double   )  [virtual]
 

Set/Get the threshold for Phi vs. Alpha link thresholding.

virtual double vtkLinkEdgels::GetLinkThreshold  )  [virtual]
 

Set/Get the threshold for Phi vs. Alpha link thresholding.

virtual void vtkLinkEdgels::SetPhiThreshold double   )  [virtual]
 

Set/get the threshold for Phi vs. Phi link thresholding.

virtual double vtkLinkEdgels::GetPhiThreshold  )  [virtual]
 

Set/get the threshold for Phi vs. Phi link thresholding.

virtual void vtkLinkEdgels::SetGradientThreshold double   )  [virtual]
 

Set/Get the threshold for image gradient thresholding.

virtual double vtkLinkEdgels::GetGradientThreshold  )  [virtual]
 

Set/Get the threshold for image gradient thresholding.

virtual int vtkLinkEdgels::RequestData vtkInformation ,
vtkInformationVector **  ,
vtkInformationVector
[protected, virtual]
 

This is called by the superclass. This is the method you should override.

Reimplemented from vtkPolyDataAlgorithm.

virtual int vtkLinkEdgels::FillInputPortInformation int  port,
vtkInformation info
[protected, virtual]
 

Fill the input port information objects for this algorithm. This is invoked by the first call to GetInputPortInformation for each port so subclasses can specify what they can handle.

Reimplemented from vtkPolyDataAlgorithm.

void vtkLinkEdgels::LinkEdgels int  xdim,
int  ydim,
double *  image,
vtkDataArray inVectors,
vtkCellArray newLines,
vtkPoints newPts,
vtkDoubleArray outScalars,
vtkDoubleArray outVectors,
int  z
[protected]
 


Member Data Documentation

double vtkLinkEdgels::GradientThreshold [protected]
 

Definition at line 100 of file vtkLinkEdgels.h.

double vtkLinkEdgels::PhiThreshold [protected]
 

Definition at line 101 of file vtkLinkEdgels.h.

double vtkLinkEdgels::LinkThreshold [protected]
 

Definition at line 102 of file vtkLinkEdgels.h.


The documentation for this class was generated from the following file:
Generated on Mon Jan 21 23:59:05 2008 for VTK by  doxygen 1.4.3-20050530