18 #ifndef itkMultiphaseSparseFiniteDifferenceImageFilter_h
19 #define itkMultiphaseSparseFiniteDifferenceImageFilter_h
176 template <
typename TInputImage,
177 typename TFeatureImage,
178 typename TOutputImage,
180 typename TIdCell =
unsigned int>
201 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
283 itkSetMacro(NumberOfLayers,
unsigned int);
284 itkGetConstMacro(NumberOfLayers,
unsigned int);
289 itkGetConstMacro(IsoSurfaceValue,
ValueType);
296 itkSetMacro(InterpolateSurfaceLocation,
bool);
297 itkGetConstMacro(InterpolateSurfaceLocation,
bool);
304 this->SetInterpolateSurfaceLocation(
true);
309 this->SetInterpolateSurfaceLocation(
false);
316 this->Superclass::SetFunctionCount(n);
318 m_SparseData.resize(this->m_FunctionCount,
nullptr);
320 for (
IdCellType i = 0; i < this->m_FunctionCount; i++)
326 #ifdef ITK_USE_CONCEPT_CHECKING
338 while (!m_SparseData.empty())
340 delete m_SparseData.back();
341 m_SparseData.pop_back();
346 PrintSelf(std::ostream & os,
Indent indent)
const override;
353 m_LayerNodeStore = LayerNodeStorageType::New();
354 m_LayerNodeStore->SetGrowthStrategyToExponential();
393 return (value + dt * change);
400 PostProcessOutput()
override;
407 InitializeBackgroundPixels();
411 Initialize()
override;
418 CopyInputToOutput()
override;
428 ApplyUpdate(TimeStepType dt)
override;
433 CalculateChange()
override;
439 ConstructLayer(SparseDataStruct * sparsePtr, StatusType from, StatusType to);
446 ConstructActiveLayer();
450 InitializeActiveLayerValues();
455 InitializeBackgroundConstants();
465 PropagateLayerValues(SparseDataStruct * sparsePtr, StatusType from, StatusType to, StatusType promote,
int InOrOut);
472 PropagateAllLayerValues();
475 PropagateFunctionLayerValues(
unsigned int functionIndex);
481 UpdateActiveLayerValues(TimeStepType dt, LayerType * StatusUpList, LayerType * StatusDownList);
485 ProcessStatusList(LayerType * InputList,
486 LayerType * OutputList,
487 StatusType ChangeToStatus,
488 StatusType SearchForStatus);
492 ProcessOutsideList(LayerType * OutsideList, StatusType ChangeToStatus);
495 InitializeIteration()
override;
499 unsigned int itkNotUsed(idx),
502 bool & itkNotUsed(status))
505 itkGetConstMacro(ValueZero, ValueType);
569 #ifndef ITK_MANUAL_INSTANTIATION
570 # include "itkMultiphaseSparseFiniteDifferenceImageFilter.hxx"