19 #ifndef itkFastMarchingBase_h
20 #define itkFastMarchingBase_h
25 #include "ITKFastMarchingExport.h"
52 extern ITKFastMarching_EXPORT std::ostream &
125 template <
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>;
276 GetTotalNumberOfNodes()
const = 0;
279 virtual const OutputPixelType
280 GetOutputValue(OutputDomainType * oDomain,
const NodeType & iNode)
const = 0;
284 SetOutputValue(OutputDomainType * oDomain,
const NodeType & iNode,
const OutputPixelType & iValue) = 0;
289 virtual unsigned char
290 GetLabelValueForGivenNode(
const NodeType & iNode)
const = 0;
296 SetLabelValueForGivenNode(
const NodeType & iNode,
const LabelType & iLabel) = 0;
303 UpdateNeighbors(OutputDomainType * oDomain,
const NodeType & iNode) = 0;
310 UpdateValue(OutputDomainType * oDomain,
const NodeType & iNode) = 0;
317 CheckTopology(OutputDomainType * oDomain,
const NodeType & iNode) = 0;
321 Initialize(OutputDomainType * oDomain);
325 InitializeOutput(OutputDomainType * oDomain) = 0;
329 GenerateData()
override;
333 PrintSelf(std::ostream & os,
Indent indent)
const override;
337 #ifndef ITK_MANUAL_INSTANTIATION
338 # include "itkFastMarchingBase.hxx"