19 #ifndef itkFastMarchingBase_h 20 #define itkFastMarchingBase_h 101 template<
typename TInput,
typename TOutput >
131 typedef typename Traits::NodePairContainerConstIterator
173 itkSetObjectMacro( TrialPoints, NodePairContainerType );
174 itkGetModifiableObjectMacro(TrialPoints, NodePairContainerType );
178 itkSetObjectMacro( AlivePoints, NodePairContainerType );
179 itkGetModifiableObjectMacro(AlivePoints, NodePairContainerType );
183 itkSetObjectMacro( ProcessedPoints, NodePairContainerType );
184 itkGetModifiableObjectMacro(ProcessedPoints, NodePairContainerType );
188 itkSetObjectMacro( ForbiddenPoints, NodePairContainerType );
189 itkGetModifiableObjectMacro(ForbiddenPoints, NodePairContainerType );
193 itkSetObjectMacro( StoppingCriterion, StoppingCriterionType );
194 itkGetModifiableObjectMacro(StoppingCriterion, StoppingCriterionType );
197 itkGetMacro( SpeedConstant,
double );
198 itkSetMacro( SpeedConstant,
double );
201 itkGetMacro( NormalizationFactor,
double );
202 itkSetMacro( NormalizationFactor,
double );
205 itkGetMacro( TargetReachedValue, OutputPixelType );
211 itkSetMacro(CollectPoints,
bool);
214 itkGetConstReferenceMacro(CollectPoints,
bool);
215 itkBooleanMacro(CollectPoints);
247 typedef std::priority_queue<
261 virtual const OutputPixelType
GetOutputValue( OutputDomainType* oDomain,
262 const NodeType& iNode )
const = 0;
266 const NodeType& iNode,
267 const OutputPixelType& iValue ) = 0;
272 virtual unsigned char 279 const LabelType& iLabel ) = 0;
286 const NodeType& iNode ) = 0;
292 virtual void UpdateValue( OutputDomainType* oDomain,
293 const NodeType& iNode ) = 0;
300 const NodeType& iNode ) = 0;
316 void operator = ( const Self& );
320 #include "itkFastMarchingBase.hxx" void GenerateData() override
std::vector< NodePairType > HeapContainerType
SuperclassType Superclass
NodePairContainerPointer m_ProcessedPoints
void PrintSelf(std::ostream &os, Indent indent) const override
PrintSelf method.
virtual void UpdateNeighbors(OutputDomainType *oDomain, const NodeType &iNode)=0
Update neighbors to a given node.
Traits::SuperclassType SuperclassType
double m_NormalizationFactor
Traits::NodePairContainerConstIterator NodePairContainerConstIterator
NodePairContainerPointer m_AlivePoints
virtual IdentifierType GetTotalNumberOfNodes() const =0
Get the total number of nodes in the domain.
OutputPixelType m_LargeValue
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
virtual bool CheckTopology(OutputDomainType *oDomain, const NodeType &iNode)=0
Check if the current node violate topological criterion.
TopologyCheckType m_TopologyCheck
OutputPixelType m_TopologyValue
SmartPointer< Self > Pointer
Traits::NodePairContainerPointer NodePairContainerPointer
virtual void InitializeOutput(OutputDomainType *oDomain)=0
SizeValueType IdentifierType
FastMarchingStoppingCriterionBase< TInput, TOutput > StoppingCriterionType
Abstract class to solve an Eikonal based-equation using Fast Marching Method.
Traits::OutputDomainPointer OutputDomainPointer
FastMarchingBase()
Constructor.
std::greater< NodePairType > NodeComparerType
virtual const OutputPixelType GetOutputValue(OutputDomainType *oDomain, const NodeType &iNode) const =0
Get the ouput value (front value) for a given node.
Traits::InputDomainType InputDomainType
StoppingCriterionPointer m_StoppingCriterion
Traits::InputPixelType InputPixelType
Traits::NodePairContainerType NodePairContainerType
Traits::NodePairType NodePairType
NodePairContainerPointer m_TrialPoints
Traits::OutputPixelType OutputPixelType
NodePairContainerPointer m_ForbiddenPoints
virtual ~FastMarchingBase()
Destructor.
FastMarchingTraits< TInput, TOutput > Traits
Traits::NodeType NodeType
SmartPointer< const Self > ConstPointer
Control indentation during Print() invocation.
Abstract Stopping Criterion dedicated for Fast Marching Methods.
virtual unsigned char GetLabelValueForGivenNode(const NodeType &iNode) const =0
Get the LabelType Value for a given node.
void Initialize(OutputDomainType *oDomain)
Base class traits to be used by the FastMarchingBase.
virtual void SetLabelValueForGivenNode(const NodeType &iNode, const LabelType &iLabel)=0
Set the Label Value for a given node.
StoppingCriterionType::Pointer StoppingCriterionPointer
Traits::LabelType LabelType
std::priority_queue< NodeType, HeapContainerType, NodeComparerType > PriorityQueueType
Traits::OutputDomainType OutputDomainType
Traits::InputDomainPointer InputDomainPointer
virtual void UpdateValue(OutputDomainType *oDomain, const NodeType &iNode)=0
Update value for a given node.
virtual void SetOutputValue(OutputDomainType *oDomain, const NodeType &iNode, const OutputPixelType &iValue)=0
Set the output value (front value) for a given node.
OutputPixelType m_TargetReachedValue