18 #ifndef itkSparseFieldLevelSetImageFilter_h
19 #define itkSparseFieldLevelSetImageFilter_h
35 template<
typename TValue >
72 template<
typename TNeighborhoodType >
79 itkStaticConstMacro(
Dimension,
unsigned int,
87 {
return m_ArrayIndex[i]; }
90 {
return m_NeighborhoodOffset[i]; }
96 {
return m_StrideTable[i]; }
101 void Print(std::ostream & os)
const;
229 template<
typename TInputImage,
typename TOutputImage >
256 itkStaticConstMacro(ImageDimension,
unsigned int,
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);
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;
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);
431 double m_ConstantGradientValue;
434 static ValueType m_ValueOne;
437 static ValueType m_ValueZero;
474 unsigned int m_NumberOfLayers;
483 ValueType m_IsoSurfaceValue;
498 bool m_InterpolateSurfaceLocation;
508 bool m_BoundsCheckingActive;
512 #ifndef ITK_MANUAL_INSTANTIATION
513 #include "itkSparseFieldLevelSetImageFilter.hxx"
SparseFieldLevelSetNode * Previous
Light weight base class for most itk classes.
SmartPointer< const Self > ConstPointer
Image< StatusType, itkGetStaticConstMacro(ImageDimension) > StatusImageType
void InterpolateSurfaceLocationOff()
SparseFieldLevelSetImageFilter Self
NeighborhoodType::OffsetType OffsetType
std::vector< OffsetType > m_NeighborhoodOffset
A convenience class for storing indices which reference neighbor pixels within a neighborhood.
std::vector< LayerPointerType > LayerListType
Superclass::RadiusType RadiusType
std::vector< ValueType > UpdateBufferType
OutputImageType::ValueType ValueType
int GetStride(unsigned int i)
This class implements a finite difference partial differential equation solver for evolving surfaces ...
TNeighborhoodType NeighborhoodType
TOutputImage OutputImageType
SmartPointer< Self > Pointer
TInputImage InputImageType
OutputImageType::IndexType IndexType
ObjectStore< LayerNodeType > LayerNodeStorageType
const unsigned int Dimension
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
FiniteDifferenceFunctionType::TimeStepType TimeStepType
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
TInputImage InputImageType
A very simple linked list that is used to manage nodes in a layer of a sparse field level-set solver...
#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
Defines iteration of a local N-dimensional neighborhood of pixels across an itk::Image.
Templated n-dimensional image class.