18#ifndef itkFastMarchingImageFilter_h
19#define itkFastMarchingImageFilter_h
25#include "ITKFastMarchingExport.h"
56extern ITKFastMarching_EXPORT std::ostream &
132template <
typename TLevelSet,
typename TSpeedImage = Image<
float, TLevelSet::ImageDimension>>
182 this->NodeType::operator=(node);
205#if !defined(ITK_LEGACY_REMOVE)
207 static constexpr LabelEnum FarPoint = LabelEnum::FarPoint;
208 static constexpr LabelEnum AlivePoint = LabelEnum::AlivePoint;
209 static constexpr LabelEnum TrialPoint = LabelEnum::TrialPoint;
210 static constexpr LabelEnum InitialTrialPoint = LabelEnum::InitialTrialPoint;
211 static constexpr LabelEnum OutsidePoint = LabelEnum::OutsidePoint;
220 template <
typename TPixel>
230 typename NodeContainer::ElementIdentifier NumberOfPoints = 0;
235 while (!b_it.IsAtEnd())
239 if (NumberOfPoints == 0)
243 node.SetIndex(b_it.GetIndex());
314 itkGetConstReferenceMacro(SpeedConstant,
double);
320 itkSetMacro(NormalizationFactor,
double);
321 itkGetConstMacro(NormalizationFactor,
double);
327 itkSetMacro(StoppingValue,
double);
330 itkGetConstReferenceMacro(StoppingValue,
double);
336 itkSetMacro(CollectPoints,
bool);
339 itkGetConstReferenceMacro(CollectPoints,
bool);
340 itkBooleanMacro(CollectPoints);
364 virtual OutputSizeType
377 itkSetMacro(OverrideOutputInformation,
bool);
378 itkGetConstReferenceMacro(OverrideOutputInformation,
bool);
379 itkBooleanMacro(OverrideOutputInformation);
460 using HeapType = std::priority_queue<AxisNodeType, HeapContainer, NodeComparer>;
468#ifndef ITK_MANUAL_INSTANTIATION
469# include "itkFastMarchingImageFilter.hxx"
Base class for all data objects in ITK.
Contains all enum classes used by the FastMarchingImageFilter class.
AxisNodeType & operator=(const NodeType &node)
typename LevelSetType::NodeContainer NodeContainer
void GenerateOutputInformation() override
OutputRegionType m_BufferedRegion
typename SpeedImageType::ConstPointer SpeedImageConstPointer
typename LevelSetImageType::SpacingType OutputSpacingType
const AxisNodeType & GetNodeUsedInCalculation(unsigned int idx) const
SmartPointer< Self > Pointer
LabelImagePointer m_LabelImage
OutputSpacingType m_OutputSpacing
typename LevelSetType::NodeType NodeType
LevelSetImageType::PixelType m_LargeValue
OutputDirectionType m_OutputDirection
virtual OutputSizeType GetOutputSize() const
typename LevelSetImageType::SizeType OutputSizeType
SmartPointer< const Self > ConstPointer
virtual void Initialize(LevelSetImageType *)
typename LevelSetType::LevelSetPointer LevelSetPointer
NodeContainerPointer m_ProcessedPoints
Image< LabelEnum, Self::SetDimension > LabelImageType
NodeContainerPointer GetAlivePoints()
std::vector< AxisNodeType > HeapContainer
FastMarchingImageFilter()
NodeContainerPointer m_OutsidePoints
typename LevelSetType::NodeContainerPointer NodeContainerPointer
void SetSpeedConstant(double value)
OutputRegionType m_OutputRegion
void PrintSelf(std::ostream &os, Indent indent) const override
OutputPointType m_OutputOrigin
~FastMarchingImageFilter() override=default
static constexpr unsigned int SpeedImageDimension
void SetBinaryMask(Image< TPixel, SetDimension > *iImage)
void GenerateData() override
LabelImagePointer GetLabelImage() const
static constexpr unsigned int SetDimension
typename LevelSetImageType::RegionType OutputRegionType
typename LevelSetImageType::PointType OutputPointType
FastMarchingImageFilterEnums::Label LabelEnum
typename LevelSetImageType::IndexType LevelSetIndexType
std::priority_queue< AxisNodeType, HeapContainer, NodeComparer > HeapType
TSpeedImage SpeedImageType
typename SpeedImageType::Pointer SpeedImagePointer
void SetAlivePoints(NodeContainer *points)
bool m_OverrideOutputInformation
NodeContainerPointer m_TrialPoints
void SetOutsidePoints(NodeContainer *points)
typename LevelSetImageType::DirectionType OutputDirectionType
typename LevelSetType::LevelSetImageType LevelSetImageType
LevelSetTypeDefault< TLevelSet > LevelSetType
double m_NormalizationFactor
ImageToImageFilter< TSpeedImage, TLevelSet > Superclass
Index< Self::SetDimension > IndexType
typename LevelSetType::PixelType PixelType
NodeContainerPointer GetProcessedPoints() const
NodeContainerPointer GetTrialPoints()
void EnlargeOutputRequestedRegion(DataObject *output) override
AxisNodeType m_NodesUsed[SetDimension]
typename LabelImageType::Pointer LabelImagePointer
void SetTrialPoints(NodeContainer *points)
virtual void UpdateNeighbors(const IndexType &index, const SpeedImageType *, LevelSetImageType *)
FastMarchingImageFilter Self
LevelSetIndexType m_StartIndex
typename NodeType::IndexType NodeIndexType
virtual double UpdateValue(const IndexType &index, const SpeedImageType *, LevelSetImageType *)
NodeContainerPointer m_AlivePoints
virtual void SetOutputSize(const OutputSizeType &size)
std::greater< AxisNodeType > NodeComparer
LevelSetIndexType m_LastIndex
virtual const RegionType & GetLargestPossibleRegion() const
A multi-dimensional iterator templated over image type that walks an image region and is specialized ...
Templated n-dimensional image class.
SmartPointer< Self > Pointer
Control indentation during Print() invocation.
Level set type information.
LevelSetNode< PixelType, Self::SetDimension > NodeType
typename TLevelSet::PixelType PixelType
typename NodeContainer::Pointer NodeContainerPointer
static constexpr unsigned int SetDimension
TLevelSet LevelSetImageType
VectorContainer< unsigned int, NodeType > NodeContainer
typename TLevelSet::Pointer LevelSetPointer
virtual void Modified() const
Implements transparent reference counting.
#define itkConceptMacro(name, concept)
bool ExactlyEquals(const TInput1 &x1, const TInput2 &x2)
Return the result of an exact comparison between two scalar values of potentially different types.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
ITKCommon_EXPORT std::ostream & operator<<(std::ostream &out, typename AnatomicalOrientation::CoordinateEnum value)
Represent a n-dimensional index in a n-dimensional image.