ITK  4.0.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions
itk::FastMarchingBase< TInput, TOutput > Class Template Reference

Abstract class to solve an Eikonal based-equation using Fast Marching Method. More...

#include <itkFastMarchingBase.h>

Inheritance diagram for itk::FastMarchingBase< TInput, TOutput >:
Collaboration diagram for itk::FastMarchingBase< TInput, TOutput >:

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef Traits::InputDomainPointer InputDomainPointer
typedef Traits::InputDomainType InputDomainType
typedef Traits::InputPixelType InputPixelType
typedef Traits::LabelType LabelType
typedef
Traits::NodePairContainerConstIterator 
NodePairContainerConstIterator
typedef
Traits::NodePairContainerPointer 
NodePairContainerPointer
typedef
Traits::NodePairContainerType 
NodePairContainerType
typedef Traits::NodePairType NodePairType
typedef Traits::NodeType NodeType
typedef Traits::OutputDomainPointer OutputDomainPointer
typedef Traits::OutputDomainType OutputDomainType
typedef Traits::OutputPixelType OutputPixelType
typedef SmartPointer< SelfPointer
typedef FastMarchingBase Self
typedef
StoppingCriterionType::Pointer 
StoppingCriterionPointer
typedef
FastMarchingStoppingCriterionBase
< TInput, TOutput > 
StoppingCriterionType
typedef SuperclassType Superclass
typedef Traits::SuperclassType SuperclassType
enum  TopologyCheckType {
  Nothing = 0,
  NoHandles,
  Strict
}
typedef FastMarchingTraits
< TInput, TOutput > 
Traits

Public Member Functions

virtual double GetNormalizationFactor ()
virtual double GetSpeedConstant ()
virtual StoppingCriterionTypeGetStoppingCriterion ()
virtual OutputPixelType GetTargetReachedValue ()
virtual void SetCollectPoints (bool _arg)
virtual void SetNormalizationFactor (double _arg)
virtual void SetSpeedConstant (double _arg)
virtual void SetStoppingCriterion (StoppingCriterionType *_arg)
virtual void SetTopologyCheck (TopologyCheckType _arg)
virtual const TopologyCheckTypeGetTopologyCheck ()
virtual void SetTrialPoints (NodePairContainerType *_arg)
virtual NodePairContainerTypeGetTrialPoints ()
virtual void SetAlivePoints (NodePairContainerType *_arg)
virtual NodePairContainerTypeGetAlivePoints ()
virtual void SetProcessedPoints (NodePairContainerType *_arg)
virtual NodePairContainerTypeGetProcessedPoints ()
virtual void SetForbiddenPoints (NodePairContainerType *_arg)
virtual NodePairContainerTypeGetForbiddenPoints ()
virtual const bool & GetCollectPoints ()
virtual void CollectPointsOn ()
virtual void CollectPointsOff ()

Protected Types

typedef std::vector< NodePairTypeHeapContainerType
typedef std::greater
< NodePairType
NodeComparerType
typedef std::priority_queue
< NodeType, HeapContainerType,
NodeComparerType
PriorityQueueType

Protected Member Functions

virtual bool CheckTopology (OutputDomainType *oDomain, const NodeType &iNode)=0
 FastMarchingBase ()
void GenerateData ()
virtual unsigned char GetLabelValueForGivenNode (const NodeType &iNode) const =0
virtual const OutputPixelType GetOutputValue (OutputDomainType *oDomain, const NodeType &iNode) const =0
virtual IdentifierType GetTotalNumberOfNodes () const =0
void Initialize (OutputDomainType *oDomain)
virtual void InitializeOutput (OutputDomainType *oDomain)=0
void PrintSelf (std::ostream &os, Indent indent) const
virtual void SetLabelValueForGivenNode (const NodeType &iNode, const LabelType &iLabel)=0
virtual void SetOutputValue (OutputDomainType *oDomain, const NodeType &iNode, const OutputPixelType &iValue)=0
virtual void UpdateNeighbors (OutputDomainType *oDomain, const NodeType &iNode)=0
virtual void UpdateValue (OutputDomainType *oDomain, const NodeType &iNode)=0
virtual ~FastMarchingBase ()

Protected Attributes

NodePairContainerPointer m_AlivePoints
bool m_CollectPoints
NodePairContainerPointer m_ForbiddenPoints
PriorityQueueType m_Heap
double m_InverseSpeed
OutputPixelType m_LargeValue
double m_NormalizationFactor
NodePairContainerPointer m_ProcessedPoints
double m_SpeedConstant
StoppingCriterionPointer m_StoppingCriterion
OutputPixelType m_TargetReachedValue
TopologyCheckType m_TopologyCheck
OutputPixelType m_TopologyValue
NodePairContainerPointer m_TrialPoints

Private Member Functions

 FastMarchingBase (const Self &)
void operator= (const Self &)

Detailed Description

template<class TInput, class TOutput>
class itk::FastMarchingBase< TInput, TOutput >

Abstract class to solve an Eikonal based-equation using Fast Marching Method.

Fast marching solves an Eikonal equation where the speed is always non-negative and depends on the position only. Starting from an initial position on the front, fast marching systematically moves the front forward one node at a time.

Updates are preformed using an entropy satisfy scheme where only "upwind" neighborhoods are used. This implementation of Fast Marching uses a std::priority_queue to locate the next proper node to update.

Fast Marching sweeps through N points in (N log N) steps to obtain the arrival time value as the front propagates through the domain.

The initial front is specified by two containers:

In order for the filter to evolve, at least some trial nodes must be specified. These can for instance be specified as the layer of nodes around the alive ones.

The algorithm is terminated early by setting an appropriate stopping criterion, or if there are no more nodes to process.

Template Parameters:
TTraitstraits which includes definition such as:
Todo:
In the current implemenation, std::priority_queue only allows taking nodes out from the front and putting nodes in from the back. Use itk::PriorityQueueContainer instead.
Topology constraints:
Additional flexibiility in this class includes the implementation of topology constraints for image-based fast marching. Further details can be found in the paper

NJ Tustison, BA Avants, MF Siqueira, JC Gee. "Topological Well- Composedness and Glamorous Glue: A Digital Gluing Algorithm for Topologically Constrained Front Propagation, IEEE Transactions on Image Processing, 20(6):1756-1761, June 2011.

Essentially, one can constrain the propagating front(s) such that they either: 1. don't merge (using the "Strict" option) 2. don't create handles (using the "NoHandles" option)

Whereas the majority of related work uses the digital topological concept of "simple points" to constrain the evolving front, this filter uses the concept of "well-composedness". Advantages of the latter over the former includes being able to use the standard marching cubes algorithm to produce a mesh whose genus is identical to that of the evolved front(s).

See also:
FastMarchingStoppingCriterionBase

Definition at line 101 of file itkFastMarchingBase.h.


Member Typedef Documentation

template<class TInput , class TOutput >
typedef SmartPointer< const Self > itk::FastMarchingBase< TInput, TOutput >::ConstPointer
template<class TInput , class TOutput >
typedef std::vector< NodePairType > itk::FastMarchingBase< TInput, TOutput >::HeapContainerType [protected]

Definition at line 244 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef Traits::InputDomainPointer itk::FastMarchingBase< TInput, TOutput >::InputDomainPointer

Definition at line 115 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef Traits::InputDomainType itk::FastMarchingBase< TInput, TOutput >::InputDomainType

Input Domain related definitions

Definition at line 114 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef Traits::InputPixelType itk::FastMarchingBase< TInput, TOutput >::InputPixelType
template<class TInput , class TOutput >
typedef Traits::LabelType itk::FastMarchingBase< TInput, TOutput >::LabelType
template<class TInput , class TOutput >
typedef std::greater< NodePairType > itk::FastMarchingBase< TInput, TOutput >::NodeComparerType [protected]

Definition at line 245 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef Traits::NodePairContainerConstIterator itk::FastMarchingBase< TInput, TOutput >::NodePairContainerConstIterator
template<class TInput , class TOutput >
typedef Traits::NodePairContainerPointer itk::FastMarchingBase< TInput, TOutput >::NodePairContainerPointer
template<class TInput , class TOutput >
typedef Traits::NodePairContainerType itk::FastMarchingBase< TInput, TOutput >::NodePairContainerType
template<class TInput , class TOutput >
typedef Traits::NodePairType itk::FastMarchingBase< TInput, TOutput >::NodePairType
template<class TInput , class TOutput >
typedef Traits::NodeType itk::FastMarchingBase< TInput, TOutput >::NodeType
template<class TInput , class TOutput >
typedef Traits::OutputDomainPointer itk::FastMarchingBase< TInput, TOutput >::OutputDomainPointer

Definition at line 120 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef Traits::OutputDomainType itk::FastMarchingBase< TInput, TOutput >::OutputDomainType

Output Domain related definitions

Definition at line 119 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef Traits::OutputPixelType itk::FastMarchingBase< TInput, TOutput >::OutputPixelType
template<class TInput , class TOutput >
typedef SmartPointer< Self > itk::FastMarchingBase< TInput, TOutput >::Pointer
template<class TInput , class TOutput >
typedef std::priority_queue< NodeType, HeapContainerType, NodeComparerType > itk::FastMarchingBase< TInput, TOutput >::PriorityQueueType [protected]

Definition at line 251 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef FastMarchingBase itk::FastMarchingBase< TInput, TOutput >::Self
template<class TInput , class TOutput >
typedef StoppingCriterionType::Pointer itk::FastMarchingBase< TInput, TOutput >::StoppingCriterionPointer

Definition at line 137 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef FastMarchingStoppingCriterionBase< TInput, TOutput > itk::FastMarchingBase< TInput, TOutput >::StoppingCriterionType

StoppingCriterionType stopping criterion

Definition at line 136 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef SuperclassType itk::FastMarchingBase< TInput, TOutput >::Superclass
template<class TInput , class TOutput >
typedef Traits::SuperclassType itk::FastMarchingBase< TInput, TOutput >::SuperclassType

Definition at line 105 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
typedef FastMarchingTraits<TInput, TOutput> itk::FastMarchingBase< TInput, TOutput >::Traits

Member Enumeration Documentation

template<class TInput , class TOutput >
enum itk::FastMarchingBase::TopologyCheckType
Enumerator:
Nothing 

Nothing

NoHandles 

NoHandles

Strict 

Strict

Definition at line 154 of file itkFastMarchingBase.h.


Constructor & Destructor Documentation

template<class TInput , class TOutput >
itk::FastMarchingBase< TInput, TOutput >::FastMarchingBase ( ) [protected]

Constructor.

template<class TInput , class TOutput >
virtual itk::FastMarchingBase< TInput, TOutput >::~FastMarchingBase ( ) [protected, virtual]

Destructor.

template<class TInput , class TOutput >
itk::FastMarchingBase< TInput, TOutput >::FastMarchingBase ( const Self ) [private]

Member Function Documentation

template<class TInput , class TOutput >
virtual bool itk::FastMarchingBase< TInput, TOutput >::CheckTopology ( OutputDomainType oDomain,
const NodeType iNode 
) [protected, pure virtual]

Check if the current node violate topological criterion.

Parameters:
[in]oDomain
[in]iNode

Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >.

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::CollectPointsOff ( ) [virtual]

Get the Collect Points flag.

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::CollectPointsOn ( ) [virtual]

Get the Collect Points flag.

template<class TInput , class TOutput >
void itk::FastMarchingBase< TInput, TOutput >::GenerateData ( ) [protected]
template<class TInput , class TOutput >
virtual NodePairContainerType* itk::FastMarchingBase< TInput, TOutput >::GetAlivePoints ( ) [virtual]

Set/Get AlivePoints

template<class TInput , class TOutput >
virtual const bool& itk::FastMarchingBase< TInput, TOutput >::GetCollectPoints ( ) [virtual]

Get the Collect Points flag.

template<class TInput , class TOutput >
virtual NodePairContainerType* itk::FastMarchingBase< TInput, TOutput >::GetForbiddenPoints ( ) [virtual]

Set/Get ForbiddenPoints

template<class TInput , class TOutput >
virtual unsigned char itk::FastMarchingBase< TInput, TOutput >::GetLabelValueForGivenNode ( const NodeType iNode) const [protected, pure virtual]

Get the LabelType Value for a given node.

Parameters:
[in]iNode
Returns:
its label value

Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.

template<class TInput , class TOutput >
virtual double itk::FastMarchingBase< TInput, TOutput >::GetNormalizationFactor ( ) [virtual]

Set/Get NormalizationFactor.

template<class TInput , class TOutput >
virtual const OutputPixelType itk::FastMarchingBase< TInput, TOutput >::GetOutputValue ( OutputDomainType oDomain,
const NodeType iNode 
) const [protected, pure virtual]

Get the ouput value (front value) for a given node.

Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >.

template<class TInput , class TOutput >
virtual NodePairContainerType* itk::FastMarchingBase< TInput, TOutput >::GetProcessedPoints ( ) [virtual]

Set/Get ProcessedPoints

template<class TInput , class TOutput >
virtual double itk::FastMarchingBase< TInput, TOutput >::GetSpeedConstant ( ) [virtual]

Set/Get SpeedConstant.

template<class TInput , class TOutput >
virtual StoppingCriterionType* itk::FastMarchingBase< TInput, TOutput >::GetStoppingCriterion ( ) [virtual]

Set/Get the Stopping Criterion.

template<class TInput , class TOutput >
virtual OutputPixelType itk::FastMarchingBase< TInput, TOutput >::GetTargetReachedValue ( ) [virtual]

Get the value reached by the front when it stops propagating.

template<class TInput , class TOutput >
virtual const TopologyCheckType& itk::FastMarchingBase< TInput, TOutput >::GetTopologyCheck ( ) [virtual]

Set/Get the TopologyCheckType macro indicating whether the user wants to check topology (and which one).

template<class TInput , class TOutput >
virtual IdentifierType itk::FastMarchingBase< TInput, TOutput >::GetTotalNumberOfNodes ( ) const [protected, pure virtual]
template<class TInput , class TOutput >
virtual NodePairContainerType* itk::FastMarchingBase< TInput, TOutput >::GetTrialPoints ( ) [virtual]

Set/Get TrialPoints

template<class TInput , class TOutput >
void itk::FastMarchingBase< TInput, TOutput >::Initialize ( OutputDomainType oDomain) [protected]
template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::InitializeOutput ( OutputDomainType oDomain) [protected, pure virtual]
template<class TInput , class TOutput >
void itk::FastMarchingBase< TInput, TOutput >::operator= ( const Self ) [private]
template<class TInput , class TOutput >
void itk::FastMarchingBase< TInput, TOutput >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected]
template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetAlivePoints ( NodePairContainerType _arg) [virtual]

Set/Get AlivePoints

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetCollectPoints ( bool  _arg) [virtual]

Set the Collect Points flag. Instrument the algorithm to collect a container of all nodes which it has visited. Useful for creating Narrowbands for level set algorithms that supports narrow banding.

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetForbiddenPoints ( NodePairContainerType _arg) [virtual]

Set/Get ForbiddenPoints

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetLabelValueForGivenNode ( const NodeType iNode,
const LabelType iLabel 
) [protected, pure virtual]

Set the Label Value for a given node.

Parameters:
[in]iNode
[in]iLabel

Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetNormalizationFactor ( double  _arg) [virtual]
template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetOutputValue ( OutputDomainType oDomain,
const NodeType iNode,
const OutputPixelType iValue 
) [protected, pure virtual]

Set the output value (front value) for a given node.

Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >.

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetProcessedPoints ( NodePairContainerType _arg) [virtual]

Set/Get ProcessedPoints

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetSpeedConstant ( double  _arg) [virtual]
template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetStoppingCriterion ( StoppingCriterionType _arg) [virtual]
template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetTopologyCheck ( TopologyCheckType  _arg) [virtual]

Set/Get the TopologyCheckType macro indicating whether the user wants to check topology (and which one).

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::SetTrialPoints ( NodePairContainerType _arg) [virtual]

Set/Get TrialPoints

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::UpdateNeighbors ( OutputDomainType oDomain,
const NodeType iNode 
) [protected, pure virtual]

Update neighbors to a given node.

Parameters:
[in]oDomain
[in]iNode

Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >.

template<class TInput , class TOutput >
virtual void itk::FastMarchingBase< TInput, TOutput >::UpdateValue ( OutputDomainType oDomain,
const NodeType iNode 
) [protected, pure virtual]

Update value for a given node.

Parameters:
[in]oDomain
[in]iNode

Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >.


Member Data Documentation

template<class TInput , class TOutput >
NodePairContainerPointer itk::FastMarchingBase< TInput, TOutput >::m_AlivePoints [protected]

Definition at line 237 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
bool itk::FastMarchingBase< TInput, TOutput >::m_CollectPoints [protected]

Definition at line 241 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
NodePairContainerPointer itk::FastMarchingBase< TInput, TOutput >::m_ForbiddenPoints [protected]

Definition at line 239 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
PriorityQueueType itk::FastMarchingBase< TInput, TOutput >::m_Heap [protected]

Definition at line 253 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
double itk::FastMarchingBase< TInput, TOutput >::m_InverseSpeed [protected]

Definition at line 229 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
OutputPixelType itk::FastMarchingBase< TInput, TOutput >::m_LargeValue [protected]

Definition at line 233 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
double itk::FastMarchingBase< TInput, TOutput >::m_NormalizationFactor [protected]

Definition at line 230 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
NodePairContainerPointer itk::FastMarchingBase< TInput, TOutput >::m_ProcessedPoints [protected]

Definition at line 238 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
double itk::FastMarchingBase< TInput, TOutput >::m_SpeedConstant [protected]

Definition at line 228 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
StoppingCriterionPointer itk::FastMarchingBase< TInput, TOutput >::m_StoppingCriterion [protected]

Definition at line 226 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
OutputPixelType itk::FastMarchingBase< TInput, TOutput >::m_TargetReachedValue [protected]

Definition at line 232 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
TopologyCheckType itk::FastMarchingBase< TInput, TOutput >::m_TopologyCheck [protected]

Definition at line 255 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
OutputPixelType itk::FastMarchingBase< TInput, TOutput >::m_TopologyValue [protected]

Definition at line 234 of file itkFastMarchingBase.h.

template<class TInput , class TOutput >
NodePairContainerPointer itk::FastMarchingBase< TInput, TOutput >::m_TrialPoints [protected]

Definition at line 236 of file itkFastMarchingBase.h.


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