18 #ifndef itkFastMarchingImageFilter_h
19 #define itkFastMarchingImageFilter_h
24 #include "vnl/vnl_math.h"
104 typename TSpeedImage = Image< float, TLevelSet ::ImageDimension > >
160 SpeedImageType::ImageDimension);
179 template<
typename TPixel >
184 InternalRegionIterator;
189 size_t NumberOfPoints = 0;
194 while( !b_it.IsAtEnd() )
196 if( b_it.Get() == zero_value )
198 if( NumberOfPoints == 0 )
267 itkGetConstReferenceMacro(SpeedConstant,
double);
273 itkSetMacro(NormalizationFactor,
double);
274 itkGetConstMacro(NormalizationFactor,
double);
280 itkSetMacro(StoppingValue,
double);
283 itkGetConstReferenceMacro(StoppingValue,
double);
289 itkSetMacro(CollectPoints,
bool);
292 itkGetConstReferenceMacro(CollectPoints,
bool);
293 itkBooleanMacro(CollectPoints);
323 itkSetMacro(OverrideOutputInformation,
bool);
324 itkGetConstReferenceMacro(OverrideOutputInformation,
bool);
325 itkBooleanMacro(OverrideOutputInformation);
328 #ifdef ITK_USE_CONCEPT_CHECKING
375 itkGetConstReferenceMacro(StartIndex, LevelSetIndexType);
376 itkGetConstReferenceMacro(LastIndex, LevelSetIndexType);
380 void operator=(const Self &);
418 #ifndef ITK_MANUAL_INSTANTIATION
419 #include "itkFastMarchingImageFilter.hxx"
void PrintSelf(std::ostream &os, Indent indent) const override
LevelSetType::PixelType PixelType
virtual void UpdateNeighbors(const IndexType &index, const SpeedImageType *, LevelSetImageType *)
void SetBinaryMask(Image< TPixel, SetDimension > *iImage)
SpeedImageType::ConstPointer SpeedImageConstPointer
OutputRegionType m_BufferedRegion
NodeContainerPointer m_ProcessedPoints
Light weight base class for most itk classes.
TLevelSet::PixelType PixelType
LevelSetImageType::PixelType m_LargeValue
LabelImagePointer m_LabelImage
std::greater< AxisNodeType > NodeComparer
OutputDirectionType m_OutputDirection
void SetSpeedConstant(double value)
std::vector< AxisNodeType > HeapContainer
virtual const RegionType & GetLargestPossibleRegion() const
void SetValue(const PixelType &input)
OutputSpacingType m_OutputSpacing
LevelSetImageType::RegionType OutputRegionType
LabelImageType::Pointer LabelImagePointer
virtual void SetOutputSize(const OutputSizeType &size)
LevelSetImageType::IndexType LevelSetIndexType
void SetOutsidePoints(NodeContainer *points)
TSpeedImage SpeedImageType
FastMarchingImageFilter Self
std::priority_queue< AxisNodeType, HeapContainer, NodeComparer > HeapType
bool m_OverrideOutputInformation
virtual void GenerateOutputInformation() override
~FastMarchingImageFilter()
void SetTrialPoints(NodeContainer *points)
A multi-dimensional iterator templated over image type that walks an image region and is specialized ...
TLevelSet LevelSetImageType
static const unsigned int SpeedImageDimension
virtual OutputSizeType GetOutputSize() const
SmartPointer< const Self > ConstPointer
void SetIndex(const IndexType &input)
double m_NormalizationFactor
LevelSetImageType::DirectionType OutputDirectionType
LevelSetImageType::SpacingType OutputSpacingType
typedef(Concept::SameDimension< SetDimension, SpeedImageDimension >) SameDimensionCheck
virtual void EnlargeOutputRequestedRegion(DataObject *output) override
Image< unsigned char, itkGetStaticConstMacro(SetDimension) > LabelImageType
OutputRegionType m_OutputRegion
SmartPointer< Self > Pointer
Represent a node in a level set.
NodeContainerPointer m_OutsidePoints
NodeContainerPointer m_AlivePoints
LevelSetTypeDefault< TLevelSet > LevelSetType
virtual double UpdateValue(const IndexType &index, const SpeedImageType *, LevelSetImageType *)
NodeType::IndexType NodeIndexType
const AxisNodeType & GetNodeUsedInCalculation(unsigned int idx) const
LevelSetIndexType m_LastIndex
LevelSetType::NodeContainer NodeContainer
const AxisNodeType & operator=(const NodeType &node)
virtual void Modified() const
LevelSetType::LevelSetPointer LevelSetPointer
NodeContainerPointer GetTrialPoints()
AxisNodeType m_NodesUsed[SetDimension]
LabelImagePointer GetLabelImage() const
ImageSource< TLevelSet > Superclass
OutputPointType m_OutputOrigin
Base class for filters that take an image as input and produce an image as output.
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
virtual void Initialize(LevelSetImageType *)
LevelSetType::LevelSetImageType LevelSetImageType
Self & operator=(const Self &rhs)
SpeedImageType::Pointer SpeedImagePointer
Control indentation during Print() invocation.
FastMarchingImageFilter()
LevelSetImageType::PointType OutputPointType
Solve an Eikonal equation using Fast Marching.
void GenerateData() override
LevelSetType::NodeType NodeType
LevelSetImageType::SizeType OutputSizeType
NodeContainerPointer m_TrialPoints
#define itkConceptMacro(name, concept)
Level set type information.
static const unsigned int SetDimension
static const unsigned int SetDimension
Index< itkGetStaticConstMacro(SetDimension) > IndexType
Base class for all data objects in ITK.
NodeContainerPointer GetAlivePoints()
Templated n-dimensional image class.
void SetAlivePoints(NodeContainer *points)
LevelSetType::NodeContainerPointer NodeContainerPointer
NodeContainerPointer GetProcessedPoints() const
TLevelSet::Pointer LevelSetPointer
LevelSetIndexType m_StartIndex