18 #ifndef itkLevelSetEvolution_h
19 #define itkLevelSetEvolution_h
47 template <
typename TEquationContainer,
typename TLevelSet>
51 template <
typename TEquationContainer,
typename TImage>
71 using typename Superclass::EquationContainerType;
72 using typename Superclass::EquationContainerPointer;
73 using typename Superclass::TermContainerType;
74 using typename Superclass::TermContainerPointer;
76 using typename Superclass::TermType;
77 using typename Superclass::TermPointer;
79 using typename Superclass::InputImageType;
80 using typename Superclass::InputImagePixelType;
81 using typename Superclass::InputImageConstPointer;
82 using typename Superclass::InputImageRegionType;
83 using typename Superclass::InputPixelRealType;
85 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
87 using typename Superclass::LevelSetContainerType;
89 using typename Superclass::LevelSetIdentifierType;
93 using typename Superclass::LevelSetOutputType;
94 using typename Superclass::LevelSetOutputRealType;
95 using typename Superclass::LevelSetDataType;
97 using typename Superclass::IdListType;
98 using typename Superclass::IdListIterator;
99 using typename Superclass::IdListConstIterator;
100 using typename Superclass::IdListImageType;
101 using typename Superclass::CacheImageType;
102 using typename Superclass::DomainMapImageFilterType;
104 using typename Superclass::StoppingCriterionType;
105 using typename Superclass::StoppingCriterionPointer;
121 SetNumberOfWorkUnits(
const ThreadIdType numberOfThreads);
125 GetNumberOfWorkUnits()
const;
135 AllocateUpdateBuffer()
override;
139 ComputeIteration()
override;
143 ComputeTimeStepForNextIteration()
override;
147 UpdateLevelSets()
override;
151 UpdateEquations()
override;
155 ReinitializeToSignedDistance();
164 ThreadedImageRegionPartitioner<TImage::ImageDimension>,
180 ThreadedImageRegionPartitioner<TImage::ImageDimension>,
189 template <
typename TEquationContainer,
typename TOutput,
unsigned int VDimension>
209 using typename Superclass::EquationContainerType;
210 using typename Superclass::EquationContainerPointer;
211 using typename Superclass::TermContainerType;
212 using typename Superclass::TermContainerPointer;
214 using typename Superclass::TermType;
215 using typename Superclass::TermPointer;
217 using typename Superclass::InputImageType;
218 using typename Superclass::InputImagePixelType;
219 using typename Superclass::InputImageConstPointer;
220 using typename Superclass::InputImageRegionType;
221 using typename Superclass::InputPixelRealType;
223 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
225 using typename Superclass::LevelSetContainerType;
226 using typename Superclass::LevelSetIdentifierType;
228 using typename Superclass::LevelSetInputType;
229 using typename Superclass::LevelSetOutputType;
230 using typename Superclass::LevelSetOutputRealType;
231 using typename Superclass::LevelSetDataType;
239 using typename Superclass::IdListType;
240 using typename Superclass::IdListIterator;
241 using typename Superclass::IdListImageType;
242 using typename Superclass::CacheImageType;
243 using typename Superclass::DomainMapImageFilterType;
245 using typename Superclass::StoppingCriterionType;
246 using typename Superclass::StoppingCriterionPointer;
256 SetNumberOfWorkUnits(
const ThreadIdType numberOfThreads);
260 GetNumberOfWorkUnits()
const;
269 std::map<IdentifierType, LevelSetLayerType *> m_UpdateBuffer{};
274 AllocateUpdateBuffer()
override;
278 ComputeIteration()
override;
282 ComputeTimeStepForNextIteration()
override;
286 UpdateLevelSets()
override;
290 UpdateEquations()
override;
301 template <
typename TEquationContainer,
unsigned int VDimension>
321 using typename Superclass::EquationContainerType;
322 using typename Superclass::EquationContainerPointer;
323 using typename Superclass::TermContainerType;
324 using typename Superclass::TermContainerPointer;
326 using typename Superclass::TermType;
327 using typename Superclass::TermPointer;
329 using typename Superclass::InputImageType;
330 using typename Superclass::InputImagePixelType;
331 using typename Superclass::InputImageConstPointer;
332 using typename Superclass::InputImageRegionType;
333 using typename Superclass::InputPixelRealType;
335 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
337 using typename Superclass::LevelSetContainerType;
338 using typename Superclass::LevelSetIdentifierType;
340 using typename Superclass::LevelSetInputType;
341 using typename Superclass::LevelSetOutputType;
342 using typename Superclass::LevelSetOutputRealType;
343 using typename Superclass::LevelSetDataType;
351 using typename Superclass::IdListType;
352 using typename Superclass::IdListIterator;
353 using typename Superclass::IdListImageType;
354 using typename Superclass::CacheImageType;
355 using typename Superclass::DomainMapImageFilterType;
357 using typename Superclass::StoppingCriterionType;
358 using typename Superclass::StoppingCriterionPointer;
371 UpdateLevelSets()
override;
375 UpdateEquations()
override;
379 template <
typename TEquationContainer,
unsigned int VDimension>
399 using typename Superclass::EquationContainerType;
400 using typename Superclass::EquationContainerPointer;
401 using typename Superclass::TermContainerType;
402 using typename Superclass::TermContainerPointer;
404 using typename Superclass::TermType;
405 using typename Superclass::TermPointer;
407 using typename Superclass::InputImageType;
408 using typename Superclass::InputImagePixelType;
409 using typename Superclass::InputImageConstPointer;
410 using typename Superclass::InputImageRegionType;
411 using typename Superclass::InputPixelRealType;
413 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
415 using typename Superclass::LevelSetContainerType;
416 using typename Superclass::LevelSetIdentifierType;
418 using typename Superclass::LevelSetInputType;
419 using typename Superclass::LevelSetOutputType;
420 using typename Superclass::LevelSetOutputRealType;
421 using typename Superclass::LevelSetDataType;
430 using typename Superclass::IdListType;
431 using typename Superclass::IdListIterator;
432 using typename Superclass::IdListImageType;
433 using typename Superclass::CacheImageType;
434 using typename Superclass::DomainMapImageFilterType;
436 using typename Superclass::StoppingCriterionType;
437 using typename Superclass::StoppingCriterionPointer;
449 UpdateLevelSets()
override;
451 UpdateEquations()
override;
455 #ifndef ITK_MANUAL_INSTANTIATION
456 # include "itkLevelSetEvolution.hxx"
459 #endif // itkLevelSetEvolution_h