19#ifndef itkFastMarchingBase_h
20#define itkFastMarchingBase_h
25#include "ITKFastMarchingExport.h"
52extern ITKFastMarching_EXPORT std::ostream &
125template <
typename TInput,
typename TOutput>
180#if !defined(ITK_LEGACY_REMOVE)
219 itkGetMacro(SpeedConstant,
double);
220 itkSetMacro(SpeedConstant,
double);
223 itkGetMacro(NormalizationFactor,
double);
224 itkSetMacro(NormalizationFactor,
double);
233 itkSetMacro(CollectPoints,
bool);
236 itkGetConstReferenceMacro(CollectPoints,
bool);
237 itkBooleanMacro(CollectPoints);
249 double m_SpeedConstant{};
250 double m_InverseSpeed{};
251 double m_NormalizationFactor{};
262 bool m_CollectPoints{};
268 using PriorityQueueType = std::priority_queue<NodePairType, HeapContainerType, NodeComparerType>;
289 virtual unsigned char
337#ifndef ITK_MANUAL_INSTANTIATION
338# include "itkFastMarchingBase.hxx"
Abstract class to solve an Eikonal based-equation using Fast Marching Method.
void Initialize(OutputDomainType *oDomain)
virtual void SetLabelValueForGivenNode(const NodeType &iNode, const LabelType &iLabel)=0
Set the Label Value for a given node.
typename StoppingCriterionType::Pointer StoppingCriterionPointer
virtual const OutputPixelType GetOutputValue(OutputDomainType *oDomain, const NodeType &iNode) const =0
Get the output value (front value) for a given node.
virtual unsigned char GetLabelValueForGivenNode(const NodeType &iNode) const =0
Get the LabelEnum Value for a given node.
typename Traits::SuperclassType SuperclassType
virtual IdentifierType GetTotalNumberOfNodes() const =0
Get the total number of nodes in the domain.
typename Traits::InputPixelType InputPixelType
typename Traits::OutputDomainPointer OutputDomainPointer
typename FastMarchingTraits< TInput, TOutput >::SuperclassType Superclass
typename Traits::NodePairContainerType NodePairContainerType
typename Traits::InputDomainType InputDomainType
void GenerateData() override
std::vector< NodePairType > HeapContainerType
void PrintSelf(std::ostream &os, Indent indent) const override
PrintSelf method
virtual bool CheckTopology(OutputDomainType *oDomain, const NodeType &iNode)=0
Check if the current node violate topological criterion.
typename Traits::OutputDomainType OutputDomainType
virtual void UpdateValue(OutputDomainType *oDomain, const NodeType &iNode)=0
Update value for a given node.
typename Traits::NodePairContainerPointer NodePairContainerPointer
typename Traits::NodeType NodeType
virtual void InitializeOutput(OutputDomainType *oDomain)=0
typename Traits::InputDomainPointer InputDomainPointer
typename Traits::NodePairType NodePairType
~FastMarchingBase() override=default
Destructor.
virtual void SetOutputValue(OutputDomainType *oDomain, const NodeType &iNode, const OutputPixelType &iValue)=0
Set the output value (front value) for a given node.
std::priority_queue< NodePairType, HeapContainerType, NodeComparerType > PriorityQueueType
std::greater< NodePairType > NodeComparerType
virtual void UpdateNeighbors(OutputDomainType *oDomain, const NodeType &iNode)=0
Update neighbors to a given node.
FastMarchingStoppingCriterionBase< TInput, TOutput > StoppingCriterionType
FastMarchingBase()
Constructor.
typename Traits::OutputPixelType OutputPixelType
typename Traits::LabelType LabelType
typename Traits::NodePairContainerConstIterator NodePairContainerConstIterator
Base class traits to be used by the FastMarchingBase.
Control indentation during Print() invocation.
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
ITKCommon_EXPORT std::ostream & operator<<(std::ostream &out, typename AnatomicalOrientation::CoordinateEnum value)
SizeValueType IdentifierType