18 #ifndef itkSparseFieldLevelSetImageFilter_h
19 #define itkSparseFieldLevelSetImageFilter_h
35 template<
typename TValue >
72 template<
typename TNeighborhoodType >
78 typedef typename NeighborhoodType::RadiusType
RadiusType;
79 itkStaticConstMacro(
Dimension,
unsigned int,
80 NeighborhoodType::Dimension);
101 void Print(std::ostream & os)
const;
229 template<
typename TInputImage,
typename TOutputImage >
257 TOutputImage::ImageDimension);
291 itkSetMacro(NumberOfLayers,
unsigned int);
292 itkGetConstMacro(NumberOfLayers,
unsigned int);
297 itkGetConstMacro(IsoSurfaceValue,
ValueType);
310 itkSetMacro(InterpolateSurfaceLocation,
bool);
311 itkGetConstMacro(InterpolateSurfaceLocation,
bool);
321 #ifdef ITK_USE_CONCEPT_CHECKING
335 virtual void PrintSelf(std::ostream & os,
Indent indent)
const ITK_OVERRIDE;
346 {
return ( value + dt * change ); }
423 itkGetConstMacro(ValueOne, ValueType);
505 void operator=(const Self &);
513 #ifndef ITK_MANUAL_INSTANTIATION
514 #include "itkSparseFieldLevelSetImageFilter.hxx"
SparseFieldLevelSetNode * Previous
const InputImageType * m_InputImage
~SparseFieldLevelSetImageFilter()
void ProcessOutsideList(LayerType *OutsideList, StatusType ChangeToStatus)
static StatusType m_StatusActiveChangingUp
void InitializeActiveLayerValues()
SparseFieldCityBlockNeighborList< NeighborhoodIterator< OutputImageType > > m_NeighborList
Light weight base class for most itk classes.
void ConstructLayer(StatusType from, StatusType to)
SmartPointer< const Self > ConstPointer
OutputImageType * m_OutputImage
Image< StatusType, itkGetStaticConstMacro(ImageDimension) > StatusImageType
void InterpolateSurfaceLocationOff()
void ProcessStatusList(LayerType *InputList, LayerType *OutputList, StatusType ChangeToStatus, StatusType SearchForStatus)
SparseFieldLevelSetImageFilter Self
NeighborhoodType::OffsetType OffsetType
static ValueType m_ValueZero
std::vector< OffsetType > m_NeighborhoodOffset
A convenience class for storing indices which reference neighbor pixels within a neighborhood.
std::vector< LayerPointerType > LayerListType
SparseFieldCityBlockNeighborList()
void ApplyUpdate(const TimeStepType &dt) override
virtual ValueType CalculateUpdateValue(const IndexType &, const TimeStepType &dt, const ValueType &value, const ValueType &change)
Superclass::RadiusType RadiusType
StatusImageType::Pointer m_StatusImage
void CopyInputToOutput() override
static StatusType m_StatusActiveChangingDown
std::vector< ValueType > UpdateBufferType
void ConstructActiveLayer()
ValueType m_IsoSurfaceValue
OutputImageType::ValueType ValueType
int GetStride(unsigned int i)
This class implements a finite difference partial differential equation solver for evolving surfaces ...
TNeighborhoodType NeighborhoodType
virtual void PrintSelf(std::ostream &os, Indent indent) const override
static StatusType m_StatusNull
FiniteDifferenceFunctionType::NeighborhoodScalesType NeighborhoodScalesType
static ValueType m_ValueOne
void AllocateUpdateBuffer() override
static const unsigned int ImageDimension
TOutputImage OutputImageType
FiniteDifferenceFunctionType::RadiusType RadiusType
SmartPointer< Self > Pointer
unsigned m_StrideTable[Dimension]
Superclass::IndexType IndexType
virtual void SetInterpolateSurfaceLocation(bool _arg)
TInputImage InputImageType
unsigned int m_NumberOfLayers
bool m_InterpolateSurfaceLocation
OutputImageType::IndexType IndexType
ObjectStore< LayerNodeType > LayerNodeStorageType
void PropagateAllLayerValues()
FiniteDifferenceImageFilter< TInputImage, TOutputImage > Superclass
virtual void InitializeBackgroundPixels()
std::vector< unsigned int > m_ArrayIndex
Superclass::NeighborhoodScalesType NeighborhoodScalesType
SparseFieldLevelSetNode< IndexType > LayerNodeType
Superclass::TimeStepType TimeStepType
SparseFieldLevelSetNode * Next
~SparseFieldCityBlockNeighborList()
LayerType::Pointer LayerPointerType
FiniteDifferenceFunctionType::TimeStepType TimeStepType
void PropagateLayerValues(StatusType from, StatusType to, StatusType promote, int InOrOut)
LayerNodeStorageType::Pointer m_LayerNodeStore
Control indentation during Print() invocation.
const unsigned int & GetSize() const
const RadiusType & GetRadius() const
void InterpolateSurfaceLocationOn()
virtual void PostProcessOutput() override
NeighborhoodType::RadiusType RadiusType
const unsigned int & GetArrayIndex(unsigned int i) const
TimeStepType CalculateChange() override
static StatusType m_StatusChanging
TInputImage InputImageType
double m_ConstantGradientValue
A very simple linked list that is used to manage nodes in a layer of a sparse field level-set solver...
OutputImageType::Pointer m_ShiftedImage
#define itkConceptMacro(name, concept)
A specialized memory management object for allocating and destroying contiguous blocks of objects...
void Print(std::ostream &os) const
void UpdateActiveLayerValues(TimeStepType dt, LayerType *StatusUpList, LayerType *StatusDownList)
SparseFieldLayer< LayerNodeType > LayerType
void Initialize() override
const OffsetType & GetNeighborhoodOffset(unsigned int i) const
static const unsigned int Dimension
Defines iteration of a local N-dimensional neighborhood of pixels across an itk::Image.
Templated n-dimensional image class.
static StatusType m_StatusBoundaryPixel
SparseFieldLevelSetImageFilter()
bool m_BoundsCheckingActive
UpdateBufferType m_UpdateBuffer