18#ifndef itkSparseFieldLevelSetImageFilter_h
19#define itkSparseFieldLevelSetImageFilter_h
35template <
typename TValue>
72template <
typename TNeighborhoodType>
77 using OffsetType =
typename NeighborhoodType::OffsetType;
78 using RadiusType =
typename NeighborhoodType::RadiusType;
238template <
typename TInputImage,
typename TOutputImage>
298 itkSetMacro(NumberOfLayers,
unsigned int);
299 itkGetConstMacro(NumberOfLayers,
unsigned int);
317 itkSetMacro(InterpolateSurfaceLocation,
bool);
318 itkGetConstMacro(InterpolateSurfaceLocation,
bool);
354 return (value + dt * change);
533#ifndef ITK_MANUAL_INSTANTIATION
534# include "itkSparseFieldLevelSetImageFilter.hxx"
static constexpr DimensionValueType Dimension
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
typename FiniteDifferenceFunctionType::NeighborhoodScalesType NeighborhoodScalesType
FiniteDifferenceImageFilter()
typename FiniteDifferenceFunctionType::RadiusType RadiusType
Templated n-dimensional image class.
SmartPointer< Self > Pointer
Control indentation during Print() invocation.
A specialized memory management object for allocating and destroying contiguous blocks of objects.
SmartPointer< Self > Pointer
Implements transparent reference counting.
A convenience class for storing indices which reference neighbor pixels within a neighborhood.
const RadiusType & GetRadius() const
typename NeighborhoodType::RadiusType RadiusType
TNeighborhoodType NeighborhoodType
unsigned int m_StrideTable[Dimension]
SparseFieldCityBlockNeighborList()
const OffsetType & GetNeighborhoodOffset(unsigned int i) const
static constexpr unsigned int Dimension
std::vector< OffsetType > m_NeighborhoodOffset
std::vector< unsigned int > m_ArrayIndex
typename NeighborhoodType::OffsetType OffsetType
~SparseFieldCityBlockNeighborList()=default
int GetStride(unsigned int i)
const unsigned int & GetSize() const
void Print(std::ostream &os, Indent indent) const
const unsigned int & GetArrayIndex(unsigned int i) const
A very simple linked list that is used to manage nodes in a layer of a sparse field level-set solver.
SmartPointer< Self > Pointer
SparseFieldLevelSetNode< IndexType > LayerNodeType
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
void CopyInputToOutput() override
virtual void InitializeBackgroundPixels()
ObjectStore< LayerNodeType > LayerNodeStorageType
static StatusType m_StatusActiveChangingUp
SparseFieldLevelSetImageFilter()
OutputImageType * m_OutputImage
void PrintSelf(std::ostream &os, Indent indent) const override
void PostProcessOutput() override
void ApplyUpdate(const TimeStepType &dt) override
typename OutputImageType::IndexType IndexType
unsigned int m_NumberOfLayers
OutputImageType OutputImageType
bool m_InterpolateSurfaceLocation
std::vector< ValueType > UpdateBufferType
UpdateBufferType m_UpdateBuffer
bool m_BoundsCheckingActive
void AllocateUpdateBuffer() override
~SparseFieldLevelSetImageFilter() override=default
void ConstructActiveLayer()
static constexpr unsigned int ImageDimension
std::vector< LayerPointerType > LayerListType
void ConstructLayer(StatusType from, StatusType to)
static StatusType m_StatusChanging
void PropagateAllLayerValues()
static StatusType m_StatusBoundaryPixel
StatusImageType::Pointer m_StatusImage
void ProcessStatusList(LayerType *InputList, LayerType *OutputList, StatusType ChangeToStatus, StatusType SearchForStatus)
static ValueType m_ValueOne
static StatusType m_StatusActiveChangingDown
void PropagateLayerValues(StatusType from, StatusType to, StatusType promote, int InOrOut)
const InputImageType * m_InputImage
static StatusType m_StatusNull
typename LayerType::Pointer LayerPointerType
virtual void SetInterpolateSurfaceLocation(bool _arg)
virtual ValueType CalculateUpdateValue(const IndexType &idx, const TimeStepType &dt, const ValueType &value, const ValueType &change)
void InitializeActiveLayerValues()
SparseFieldLevelSetImageFilter Self
FiniteDifferenceImageFilter< TInputImage, OutputImageType > Superclass
OutputImageType::Pointer m_ShiftedImage
TimeStepType CalculateChange() override
SparseFieldLayer< LayerNodeType > LayerType
void UpdateActiveLayerValues(TimeStepType dt, LayerType *UpList, LayerType *DownList)
TInputImage InputImageType
static ValueType m_ValueZero
void Initialize() override
SmartPointer< const Self > ConstPointer
Image< StatusType, Self::ImageDimension > StatusImageType
void ProcessOutsideList(LayerType *OutsideList, StatusType ChangeToStatus)
void InterpolateSurfaceLocationOff()
SparseFieldCityBlockNeighborList< NeighborhoodIterator< OutputImageType > > m_NeighborList
double m_ConstantGradientValue
void InterpolateSurfaceLocationOn()
LayerNodeStorageType::Pointer m_LayerNodeStore
SmartPointer< Self > Pointer
typename OutputImageType::ValueType ValueType
ValueType m_IsoSurfaceValue
SparseFieldLevelSetNode * Next
SparseFieldLevelSetNode * Previous
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....