#include <itkFastMarchingBase.h>
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 performed 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.
TTraits | traits which includes definition such as:
|
Essentially, one can constrain the propagating front(s) such that they either:
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).
Definition at line 121 of file itkFastMarchingBase.h.
Public Types | |
using | ConstPointer = SmartPointer<const Self> |
using | InputDomainPointer = typename Traits::InputDomainPointer |
using | InputDomainType = typename Traits::InputDomainType |
using | InputPixelType = typename Traits::InputPixelType |
using | LabelType = typename Traits::LabelType |
using | NodePairContainerConstIterator = typename Traits::NodePairContainerConstIterator |
using | NodePairContainerPointer = typename Traits::NodePairContainerPointer |
using | NodePairContainerType = typename Traits::NodePairContainerType |
using | NodePairType = typename Traits::NodePairType |
using | NodeType = typename Traits::NodeType |
using | OutputDomainPointer = typename Traits::OutputDomainPointer |
using | OutputDomainType = typename Traits::OutputDomainType |
using | OutputPixelType = typename Traits::OutputPixelType |
using | Pointer = SmartPointer<Self> |
using | Self = FastMarchingBase |
using | StoppingCriterionPointer = typename StoppingCriterionType::Pointer |
using | StoppingCriterionType = FastMarchingStoppingCriterionBase<TInput, TOutput> |
using | Superclass = typename FastMarchingTraits<TInput, TOutput>::SuperclassType |
using | SuperclassType = typename Traits::SuperclassType |
using | TopologyCheckEnum = FastMarchingTraitsEnums::TopologyCheck |
using | Traits = FastMarchingTraits<TInput, TOutput> |
Protected Types | |
using | HeapContainerType = std::vector<NodePairType> |
using | NodeComparerType = std::greater<NodePairType> |
using | PriorityQueueType = std::priority_queue<NodePairType, HeapContainerType, NodeComparerType> |
Protected Member Functions | |
virtual bool | CheckTopology (OutputDomainType *oDomain, const NodeType &iNode)=0 |
FastMarchingBase () | |
void | GenerateData () override |
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 override |
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 |
~FastMarchingBase () override=default | |
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 {} |
TopologyCheckEnum | m_TopologyCheck {} |
OutputPixelType | m_TopologyValue {} |
NodePairContainerPointer | m_TrialPoints {} |
using itk::FastMarchingBase< TInput, TOutput >::ConstPointer = SmartPointer<const Self> |
Definition at line 132 of file itkFastMarchingBase.h.
|
protected |
Definition at line 260 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::InputDomainPointer = typename Traits::InputDomainPointer |
Definition at line 139 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::InputDomainType = typename Traits::InputDomainType |
Input Domain related definitions
Definition at line 138 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::InputPixelType = typename Traits::InputPixelType |
Definition at line 140 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::LabelType = typename Traits::LabelType |
Definition at line 156 of file itkFastMarchingBase.h.
|
protected |
Definition at line 261 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::NodePairContainerConstIterator = typename Traits::NodePairContainerConstIterator |
Definition at line 154 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::NodePairContainerPointer = typename Traits::NodePairContainerPointer |
Definition at line 153 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::NodePairContainerType = typename Traits::NodePairContainerType |
Definition at line 152 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::NodePairType = typename Traits::NodePairType |
NodePairType pair of node and corresponding value
Definition at line 151 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::NodeType = typename Traits::NodeType |
NodeType type of node
Definition at line 148 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::OutputDomainPointer = typename Traits::OutputDomainPointer |
Definition at line 144 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::OutputDomainType = typename Traits::OutputDomainType |
Output Domain related definitions
Definition at line 143 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::OutputPixelType = typename Traits::OutputPixelType |
Definition at line 145 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::Pointer = SmartPointer<Self> |
Definition at line 131 of file itkFastMarchingBase.h.
|
protected |
Definition at line 263 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::Self = FastMarchingBase |
Definition at line 129 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::StoppingCriterionPointer = typename StoppingCriterionType::Pointer |
Definition at line 160 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::StoppingCriterionType = FastMarchingStoppingCriterionBase<TInput, TOutput> |
StoppingCriterionType stopping criterion
Definition at line 159 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::Superclass = typename FastMarchingTraits<TInput, TOutput>::SuperclassType |
Definition at line 130 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::SuperclassType = typename Traits::SuperclassType |
Definition at line 127 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::TopologyCheckEnum = FastMarchingTraitsEnums::TopologyCheck |
Definition at line 174 of file itkFastMarchingBase.h.
using itk::FastMarchingBase< TInput, TOutput >::Traits = FastMarchingTraits<TInput, TOutput> |
Definition at line 126 of file itkFastMarchingBase.h.
|
protected |
Constructor.
Referenced by GetNameOfClass().
|
overrideprotecteddefault |
Destructor.
|
protectedpure virtual |
Check if the current node violate topological criterion.
[in] | oDomain | |
[in] | iNode |
Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.
|
virtual |
Get the Collect Points flag.
|
virtual |
Get the Collect Points flag.
|
overrideprotected |
|
virtual |
Set/Get AlivePoints
|
virtual |
Get the Collect Points flag.
|
virtual |
Set/Get ForbiddenPoints
|
protectedpure virtual |
Get the LabelEnum Value for a given node.
[in] | iNode |
Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.
|
virtual |
Set/Get AlivePoints
|
virtual |
Set/Get ForbiddenPoints
|
virtual |
Set/Get ProcessedPoints
|
virtual |
|
virtual |
Set/Get TrialPoints
|
override |
References FastMarchingBase().
|
virtual |
Set/Get NormalizationFactor.
|
protectedpure virtual |
Get the output value (front value) for a given node.
Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.
|
virtual |
Set/Get ProcessedPoints
|
virtual |
Set/Get SpeedConstant.
|
virtual |
|
virtual |
Get the value reached by the front when it stops propagating.
|
virtual |
Set/Get the TopologyCheckType macro indicating whether the user wants to check topology (and which one).
|
protectedpure virtual |
Get the total number of nodes in the domain.
Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.
|
virtual |
Set/Get TrialPoints
|
protected |
|
protectedpure virtual |
|
overrideprotected |
PrintSelf method.
|
virtual |
Set/Get AlivePoints
|
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.
|
virtual |
Set/Get ForbiddenPoints
|
protectedpure virtual |
Set the Label Value for a given node.
[in] | iNode | |
[in] | iLabel |
Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.
|
virtual |
|
protectedpure virtual |
Set the output value (front value) for a given node.
Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.
|
virtual |
Set/Get ProcessedPoints
|
virtual |
|
virtual |
Set/Get the Stopping Criterion.
|
virtual |
Set/Get the TopologyCheckType macro indicating whether the user wants to check topology (and which one).
|
virtual |
Set/Get TrialPoints
|
protectedpure virtual |
Update neighbors to a given node.
[in] | oDomain | |
[in] | iNode |
Implemented in itk::FastMarchingImageFilterBase< TInput, TOutput >, itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >, and itk::FastMarchingUpwindGradientImageFilterBase< TInput, TOutput >.
|
protectedpure virtual |
Update value for a given node.
[in] | oDomain | |
[in] | iNode |
Implemented in itk::FastMarchingExtensionImageFilterBase< TInput, TOutput, TAuxValue, VAuxDimension >, itk::FastMarchingImageFilterBase< TInput, TOutput >, and itk::FastMarchingQuadEdgeMeshFilterBase< TInput, TOutput >.
|
protected |
Definition at line 253 of file itkFastMarchingBase.h.
|
protected |
Definition at line 257 of file itkFastMarchingBase.h.
|
protected |
Definition at line 255 of file itkFastMarchingBase.h.
|
protected |
Definition at line 265 of file itkFastMarchingBase.h.
|
protected |
Definition at line 245 of file itkFastMarchingBase.h.
|
protected |
Definition at line 249 of file itkFastMarchingBase.h.
|
protected |
Definition at line 246 of file itkFastMarchingBase.h.
|
protected |
Definition at line 254 of file itkFastMarchingBase.h.
|
protected |
Definition at line 244 of file itkFastMarchingBase.h.
|
protected |
Definition at line 242 of file itkFastMarchingBase.h.
|
protected |
Definition at line 248 of file itkFastMarchingBase.h.
|
protected |
Definition at line 267 of file itkFastMarchingBase.h.
|
protected |
Definition at line 250 of file itkFastMarchingBase.h.
|
protected |
Definition at line 252 of file itkFastMarchingBase.h.