18 #ifndef itkSparseFieldFourthOrderLevelSetImageFilter_h
19 #define itkSparseFieldFourthOrderLevelSetImageFilter_h
37 template <
typename TImageType>
153 template <
typename TInputImage,
typename TOutputImage>
171 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
206 itkGetConstReferenceMacro(MaxRefitIteration,
unsigned int);
207 itkSetMacro(MaxRefitIteration,
unsigned int);
208 itkGetConstReferenceMacro(MaxNormalIteration,
unsigned int);
209 itkSetMacro(MaxNormalIteration,
unsigned int);
210 itkGetConstReferenceMacro(CurvatureBandWidth,
ValueType);
211 itkSetMacro(CurvatureBandWidth,
ValueType);
212 itkGetConstReferenceMacro(RMSChangeNormalProcessTrigger,
ValueType);
213 itkSetMacro(RMSChangeNormalProcessTrigger,
ValueType);
214 itkGetConstReferenceMacro(NormalProcessType,
int);
215 itkSetMacro(NormalProcessType,
int);
216 itkGetConstReferenceMacro(NormalProcessConductance,
ValueType);
217 itkSetMacro(NormalProcessConductance,
ValueType);
218 itkSetMacro(NormalProcessUnsharpFlag,
bool);
219 itkGetConstReferenceMacro(NormalProcessUnsharpFlag,
bool);
220 itkSetMacro(NormalProcessUnsharpWeight,
ValueType);
221 itkGetConstReferenceMacro(NormalProcessUnsharpWeight,
ValueType);
234 return (
int)std::ceil(m_CurvatureBandWidth + Self::ImageDimension);
242 unsigned int nm = std::max(this->GetMinimumNumberOfLayers(), n);
244 if (nm != this->GetNumberOfLayers())
246 Superclass::SetNumberOfLayers(nm);
256 Superclass::InitializeIteration();
257 ValueType rmschange = this->GetRMSChange();
260 if ((this->GetElapsedIterations() == 0) || (m_RefitIteration == m_MaxRefitIteration) ||
261 (rmschange <= m_RMSChangeNormalProcessTrigger) || (this->ActiveLayerCheckBand()))
263 if ((this->GetElapsedIterations() != 0) && (rmschange <= m_RMSChangeNormalProcessTrigger) &&
264 (m_RefitIteration <= 1))
266 m_ConvergenceFlag =
true;
269 m_RefitIteration = 0;
276 #ifdef ITK_USE_CONCEPT_CHECKING
286 PrintSelf(std::ostream & os,
Indent indent)
const override;
291 ComputeCurvatureFromSparseImageNeighborhood(SparseImageIteratorType & it)
const;
297 ComputeCurvatureTarget(
const OutputImageType * distanceImage, SparseImageType * sparseImage)
const;
308 ActiveLayerCheckBand()
const;
365 #ifndef ITK_MANUAL_INSTANTIATION
366 # include "itkSparseFieldFourthOrderLevelSetImageFilter.hxx"