18 #ifndef itkSparseFieldLevelSetImageFilter_h 19 #define itkSparseFieldLevelSetImageFilter_h 35 template<
typename TValue >
72 template<
typename TNeighborhoodType >
79 itkStaticConstMacro(Dimension,
unsigned int,
80 NeighborhoodType::Dimension);
87 {
return m_ArrayIndex[i]; }
90 {
return m_NeighborhoodOffset[i]; }
96 {
return m_StrideTable[i]; }
101 void Print(std::ostream & os)
const;
111 unsigned m_StrideTable[Dimension];
229 template<
typename TInputImage,
typename TOutputImage >
256 itkStaticConstMacro(ImageDimension,
unsigned int,
257 TOutputImage::ImageDimension);
291 itkSetMacro(NumberOfLayers,
unsigned int);
292 itkGetConstMacro(NumberOfLayers,
unsigned int);
296 itkSetMacro(IsoSurfaceValue, ValueType);
297 itkGetConstMacro(IsoSurfaceValue, ValueType);
310 itkSetMacro(InterpolateSurfaceLocation,
bool);
311 itkGetConstMacro(InterpolateSurfaceLocation,
bool);
316 { this->SetInterpolateSurfaceLocation(
true); }
318 { this->SetInterpolateSurfaceLocation(
false); }
321 #ifdef ITK_USE_CONCEPT_CHECKING 335 virtual void PrintSelf(std::ostream & os,
Indent indent)
const ITK_OVERRIDE;
342 const IndexType & itkNotUsed(idx),
343 const TimeStepType & dt,
344 const ValueType & value,
345 const ValueType & change)
346 {
return ( value + dt * change ); }
351 virtual void PostProcessOutput() ITK_OVERRIDE;
357 virtual void InitializeBackgroundPixels();
360 void Initialize() ITK_OVERRIDE;
366 void CopyInputToOutput() ITK_OVERRIDE;
369 void AllocateUpdateBuffer() ITK_OVERRIDE;
373 void ApplyUpdate(
const TimeStepType& dt) ITK_OVERRIDE;
377 TimeStepType CalculateChange() ITK_OVERRIDE;
382 void ConstructLayer(StatusType from, StatusType to);
388 void ConstructActiveLayer();
391 void InitializeActiveLayerValues();
400 void PropagateLayerValues(StatusType from, StatusType to,
401 StatusType promote,
int InOrOut);
407 void PropagateAllLayerValues();
412 void UpdateActiveLayerValues(TimeStepType dt, LayerType *StatusUpList,
413 LayerType *StatusDownList);
416 void ProcessStatusList(LayerType *InputList, LayerType *OutputList,
417 StatusType ChangeToStatus, StatusType SearchForStatus);
420 void ProcessOutsideList(LayerType *OutsideList, StatusType ChangeToStatus);
422 itkGetConstMacro(ValueZero, ValueType);
423 itkGetConstMacro(ValueOne, ValueType);
505 void operator=(const Self &) ITK_DELETE_FUNCTION;
509 bool m_BoundsCheckingActive;
513 #ifndef ITK_MANUAL_INSTANTIATION 514 #include "itkSparseFieldLevelSetImageFilter.hxx" SparseFieldLevelSetNode * Previous
const InputImageType * m_InputImage
static StatusType m_StatusActiveChangingUp
SparseFieldCityBlockNeighborList< NeighborhoodIterator< OutputImageType > > m_NeighborList
SmartPointer< const Self > ConstPointer
OutputImageType * m_OutputImage
Image< StatusType, itkGetStaticConstMacro(ImageDimension) > StatusImageType
void InterpolateSurfaceLocationOff()
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
virtual ValueType CalculateUpdateValue(const IndexType &, const TimeStepType &dt, const ValueType &value, const ValueType &change)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
Superclass::RadiusType RadiusType
StatusImageType::Pointer m_StatusImage
static StatusType m_StatusActiveChangingDown
std::vector< ValueType > UpdateBufferType
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
static StatusType m_StatusNull
static ValueType m_ValueOne
TOutputImage OutputImageType
SmartPointer< Self > Pointer
Superclass::IndexType IndexType
unsigned int m_NumberOfLayers
bool m_InterpolateSurfaceLocation
OutputImageType::IndexType IndexType
ObjectStore< LayerNodeType > LayerNodeStorageType
Superclass::RadiusType RadiusType
FiniteDifferenceImageFilter< TInputImage, TOutputImage > Superclass
std::vector< unsigned int > m_ArrayIndex
Superclass::NeighborhoodScalesType NeighborhoodScalesType
SparseFieldLevelSetNode< IndexType > LayerNodeType
Superclass::TimeStepType TimeStepType
SparseFieldLevelSetNode * Next
~SparseFieldCityBlockNeighborList()
LayerType::Pointer LayerPointerType
LayerNodeStorageType::Pointer m_LayerNodeStore
Control indentation during Print() invocation.
const unsigned int & GetSize() const
const RadiusType & GetRadius() const
void InterpolateSurfaceLocationOn()
NeighborhoodType::RadiusType RadiusType
const unsigned int & GetArrayIndex(unsigned int i) const
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...
SparseFieldLayer< LayerNodeType > LayerType
const OffsetType & GetNeighborhoodOffset(unsigned int i) const
Templated n-dimensional image class.
static StatusType m_StatusBoundaryPixel
UpdateBufferType m_UpdateBuffer