19 #ifndef itkFastMarchingImageFilterBase_h
20 #define itkFastMarchingImageFilterBase_h
74 template<
typename TInput,
typename TOutput >
85 using Traits =
typename Superclass::Traits;
115 static constexpr
unsigned int ImageDimension = Traits::ImageDimension;
128 class InternalNodeStructure;
143 { m_OutputRegion = size; }
145 {
return m_OutputRegion.GetSize(); }
146 itkSetMacro(OutputRegion, OutputRegionType);
147 itkGetConstReferenceMacro(OutputRegion, OutputRegionType);
148 itkSetMacro(OutputSpacing, OutputSpacingType);
149 itkGetConstReferenceMacro(OutputSpacing, OutputSpacingType);
150 itkSetMacro(OutputDirection, OutputDirectionType);
151 itkGetConstReferenceMacro(OutputDirection, OutputDirectionType);
152 itkSetMacro(OutputOrigin, OutputPointType);
153 itkGetConstReferenceMacro(OutputOrigin, OutputPointType);
154 itkSetMacro(OverrideOutputInformation,
bool);
155 itkGetConstReferenceMacro(OverrideOutputInformation,
bool);
156 itkBooleanMacro(OverrideOutputInformation);
165 void PrintSelf(std::ostream & os,
Indent indent)
const override;
175 bool m_OverrideOutputInformation{
false };
178 void GenerateOutputInformation()
override;
180 void EnlargeOutputRequestedRegion(
DataObject *output)
override;
193 const NodeType& iNode )
const override;
197 GetLabelValueForGivenNode(
const NodeType& iNode )
const override;
200 void SetLabelValueForGivenNode(
const NodeType& iNode,
232 void InitializeIndices2D();
233 bool IsChangeWellComposed2D(
const NodeType& )
const;
234 bool IsCriticalC1Configuration2D(
const std::bitset<9>& )
const;
235 bool IsCriticalC2Configuration2D(
const std::bitset<9>& )
const;
236 bool IsCriticalC3Configuration2D(
const std::bitset<9>& )
const;
237 bool IsCriticalC4Configuration2D(
const std::bitset<9>& )
const;
243 void InitializeIndices3D();
244 bool IsCriticalC1Configuration3D(
const std::bitset<8>& )
const;
245 unsigned int IsCriticalC2Configuration3D(
const std::bitset<8>& )
const;
246 bool IsChangeWellComposed3D(
const NodeType& )
const;
252 bool DoesVoxelChangeViolateWellComposedness(
const NodeType& )
const;
253 bool DoesVoxelChangeViolateStrictTopology(
const NodeType& )
const;
262 #ifndef ITK_MANUAL_INSTANTIATION
263 #include "itkFastMarchingImageFilterBase.hxx"
266 #endif // itkFastMarchingImageFilterBase_h
typename Superclass::OutputDomainType OutputImageType
typename Traits::LabelType LabelType
typename Traits::NodeType NodeType
OutputPointType m_OutputOrigin
OutputSpacingType m_OutputSpacing
typename OutputImageType::SizeType OutputSizeType
typename Traits::NodePairContainerConstIterator NodePairContainerConstIterator
Apply the Fast Marching method to solve an Eikonal equation on an image.
typename NeighborhoodIteratorType::RadiusType NeighborhoodRadiusType
typename ConnectedComponentImageType::Pointer ConnectedComponentImagePointer
typename Traits::OutputPixelType OutputPixelType
typename LabelImageType::Pointer LabelImagePointer
LabelImagePointer m_LabelImage
typename OutputImageType::SpacingType OutputSpacingType
typename Traits::NodePairType NodePairType
typename Superclass::InputDomainType InputImageType
typename OutputImageType::PointType OutputPointType
Simulate a standard C array with copy semnatics.
ConnectedComponentImagePointer m_ConnectedComponentImage
typename OutputImageType::DirectionType OutputDirectionType
Abstract class to solve an Eikonal based-equation using Fast Marching Method.
typename Superclass::OutputDomainPointer OutputImagePointer
typename FastMarchingTraits< TInput, TOutput >::SuperclassType Superclass
ImageBaseType::SizeType SizeType
SizeValueType IdentifierType
ImageBaseType::DirectionType DirectionType
typename OutputImageType::RegionType OutputRegionType
typename Traits::NodePairContainerType NodePairContainerType
typename Superclass::InputDomainPointer InputImagePointer
const InputImageType * m_InputCache
typename Superclass::RadiusType RadiusType
typename Traits::InputPixelType InputPixelType
OutputRegionType m_OutputRegion
Control indentation during Print() invocation.
ImageBaseType::PointType PointType
OutputRegionType m_BufferedRegion
Base class traits to be used by the FastMarchingBase.
ImageBaseType::RegionType RegionType
OutputDirectionType m_OutputDirection
virtual void SetOutputSize(const OutputSizeType &size)
Base class for all data objects in ITK.
Defines iteration of a local N-dimensional neighborhood of pixels across an itk::Image.
Templated n-dimensional image class.
virtual OutputSizeType GetOutputSize() const
typename Traits::NodePairContainerPointer NodePairContainerPointer