VMTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
vtkvmtkCenterlineBranchExtractor Class Reference

Split and group centerlines. More...

#include <vtkvmtkCenterlineBranchExtractor.h>

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

Public Types

typedef vtkvmtkCenterlineSplittingAndGroupingFilter Superclass
 
- Public Types inherited from vtkvmtkCenterlineSplittingAndGroupingFilter
enum  { FIRSTPOINT, LASTPOINT, POINTINTUBE }
 
typedef vtkPolyDataAlgorithm Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkvmtkCenterlineBranchExtractorNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent) VTK_OVERRIDE
 
- Public Member Functions inherited from vtkvmtkCenterlineSplittingAndGroupingFilter
vtkvmtkCenterlineSplittingAndGroupingFilterNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent) VTK_OVERRIDE
 
virtual void SetRadiusArrayName (const char *)
 
virtual char * GetRadiusArrayName ()
 
virtual void SetGroupIdsArrayName (const char *)
 
virtual char * GetGroupIdsArrayName ()
 
virtual void SetCenterlineIdsArrayName (const char *)
 
virtual char * GetCenterlineIdsArrayName ()
 
virtual void SetBlankingArrayName (const char *)
 
virtual char * GetBlankingArrayName ()
 
virtual void SetTractIdsArrayName (const char *)
 
virtual char * GetTractIdsArrayName ()
 
virtual void SetGroupingMode (int)
 
virtual int GetGroupingMode ()
 
void SetGroupingModeToFirstPoint ()
 
void SetGroupingModeToLastPoint ()
 
void SetGroupingModeToPointInTube ()
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkvmtkCenterlineBranchExtractorSafeDownCast (vtkObjectBase *o)
 
static vtkvmtkCenterlineBranchExtractorNew ()
 
- Static Public Member Functions inherited from vtkvmtkCenterlineSplittingAndGroupingFilter
static int IsTypeOf (const char *type)
 
static vtkvmtkCenterlineSplittingAndGroupingFilterSafeDownCast (vtkObjectBase *o)
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkvmtkCenterlineBranchExtractor ()
 
 ~vtkvmtkCenterlineBranchExtractor ()
 
virtual void ComputeCenterlineSplitting (vtkPolyData *input, vtkIdType cellId) VTK_OVERRIDE
 
virtual void GroupTracts (vtkPolyData *input, vtkPolyData *centerlineTracts) VTK_OVERRIDE
 
- Protected Member Functions inherited from vtkvmtkCenterlineSplittingAndGroupingFilter
 vtkvmtkCenterlineSplittingAndGroupingFilter ()
 
 ~vtkvmtkCenterlineSplittingAndGroupingFilter ()
 
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE
 
void CoincidentExtremePointGroupTracts (vtkPolyData *input, vtkPolyData *centerlineTracts, bool first=true)
 
void PointInTubeGroupTracts (vtkPolyData *input, vtkPolyData *centerlineTracts)
 
virtual void MergeTracts (vtkPolyData *centerlineTracts)
 
void SplitCenterline (vtkPolyData *input, vtkIdType cellId, int numberOfSplittingPoints, const vtkIdType *subIds, const double *pcoords, const int *tractBlanking, vtkPolyData *splitCenterline)
 
void MakeGroupIdsAdjacent (vtkPolyData *centerlineTracts)
 
void MakeTractIdsAdjacent (vtkPolyData *centerlineTracts)
 

Additional Inherited Members

- Protected Attributes inherited from vtkvmtkCenterlineSplittingAndGroupingFilter
char * RadiusArrayName
 
char * GroupIdsArrayName
 
char * CenterlineIdsArrayName
 
char * BlankingArrayName
 
char * TractIdsArrayName
 
int NumberOfSplittingPoints
 
vtkIdType * SubIds
 
double * PCoords
 
int * TractBlanking
 
int GroupingMode
 

Detailed Description

Split and group centerlines.

Date
2006/04/06 16:46:43
Revision
1.5

A centerline is split into individual tracts and the tracts are merged together into branches.

Tracts are formed (in the example of a bifurcation, though this is generalized to a n-furcation), by identifying two points on each centerline (which we termed the reference points). The first is located where the centerline intersects another centerline’s tube (in the vascular tree assumption, each centerline will intersect all the other centerlines’ tube once). The second is located one maximum inscribed sphere upstream. The second reference point may be thought of as the start of the bifurcation region. We can then identify three tracts along each centerline, the first preceding the bifurcation, the second lying in-between the two points and the last following the bifurcation

Note that in the first tract the two centerlines are one in each other’s tube. The same thing holds true for the second tract, since by definition the second tract ends where the centerlines exit the other centerline’s tube. The last tracts are instead outside each other’s tube.

We can therefore group the tracts based on these tube containment relationships: the first group will be composed of the first tracts of the two centerlines, the second of the second tracts of the two centerlines, the ones located at the bifurcation region in-between the reference points, the third of the second tract of the first centerline and the fourth of the second tract of the second centerline. Each group will basically represent a branch, except for the second group, which will be relative to the bifurcation.

This process gives us the "Blanking" label for tracts free of charge. Tracts which lie between the two reference points (within the bifurcation region), are said to be Blanked. This is label will become important during processing steps downstream in the pipeline.

Definition at line 43 of file vtkvmtkCenterlineBranchExtractor.h.

Member Typedef Documentation

◆ Superclass

Definition at line 46 of file vtkvmtkCenterlineBranchExtractor.h.

Constructor & Destructor Documentation

◆ vtkvmtkCenterlineBranchExtractor()

vtkvmtkCenterlineBranchExtractor::vtkvmtkCenterlineBranchExtractor ( )
protected

◆ ~vtkvmtkCenterlineBranchExtractor()

vtkvmtkCenterlineBranchExtractor::~vtkvmtkCenterlineBranchExtractor ( )
protected

Member Function Documentation

◆ IsTypeOf()

static int vtkvmtkCenterlineBranchExtractor::IsTypeOf ( const char *  type)
static

◆ IsA()

virtual int vtkvmtkCenterlineBranchExtractor::IsA ( const char *  type)
virtual

◆ SafeDownCast()

static vtkvmtkCenterlineBranchExtractor* vtkvmtkCenterlineBranchExtractor::SafeDownCast ( vtkObjectBase *  o)
static

◆ NewInstanceInternal()

virtual vtkObjectBase* vtkvmtkCenterlineBranchExtractor::NewInstanceInternal ( ) const
protectedvirtual

◆ NewInstance()

vtkvmtkCenterlineBranchExtractor* vtkvmtkCenterlineBranchExtractor::NewInstance ( ) const

◆ PrintSelf()

void vtkvmtkCenterlineBranchExtractor::PrintSelf ( ostream &  os,
vtkIndent  indent 
)

◆ New()

static vtkvmtkCenterlineBranchExtractor* vtkvmtkCenterlineBranchExtractor::New ( )
static

◆ ComputeCenterlineSplitting()

virtual void vtkvmtkCenterlineBranchExtractor::ComputeCenterlineSplitting ( vtkPolyData *  input,
vtkIdType  cellId 
)
protectedvirtual

◆ GroupTracts()

virtual void vtkvmtkCenterlineBranchExtractor::GroupTracts ( vtkPolyData *  input,
vtkPolyData *  centerlineTracts 
)
protectedvirtual

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