18 #ifndef itkLevelSetEvolution_h
19 #define itkLevelSetEvolution_h
47 template <
typename TEquationContainer,
typename TLevelSet>
50 template <
typename TEquationContainer,
typename TImage>
70 using typename Superclass::EquationContainerType;
71 using typename Superclass::EquationContainerPointer;
72 using typename Superclass::TermContainerType;
73 using typename Superclass::TermContainerPointer;
75 using typename Superclass::TermType;
76 using typename Superclass::TermPointer;
78 using typename Superclass::InputImageType;
79 using typename Superclass::InputImagePixelType;
80 using typename Superclass::InputImageConstPointer;
81 using typename Superclass::InputImageRegionType;
82 using typename Superclass::InputPixelRealType;
84 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
86 using typename Superclass::LevelSetContainerType;
88 using typename Superclass::LevelSetIdentifierType;
92 using typename Superclass::LevelSetOutputType;
93 using typename Superclass::LevelSetOutputRealType;
94 using typename Superclass::LevelSetDataType;
96 using typename Superclass::IdListType;
97 using typename Superclass::IdListIterator;
98 using typename Superclass::IdListConstIterator;
99 using typename Superclass::IdListImageType;
100 using typename Superclass::CacheImageType;
101 using typename Superclass::DomainMapImageFilterType;
103 using typename Superclass::StoppingCriterionType;
104 using typename Superclass::StoppingCriterionPointer;
120 SetNumberOfWorkUnits(
const ThreadIdType numberOfThreads);
124 GetNumberOfWorkUnits()
const;
134 AllocateUpdateBuffer()
override;
138 ComputeIteration()
override;
142 ComputeTimeStepForNextIteration()
override;
146 UpdateLevelSets()
override;
150 UpdateEquations()
override;
154 ReinitializeToSignedDistance();
163 ThreadedImageRegionPartitioner<TImage::ImageDimension>,
179 ThreadedImageRegionPartitioner<TImage::ImageDimension>,
188 template <
typename TEquationContainer,
typename TOutput,
unsigned int VDimension>
208 using typename Superclass::EquationContainerType;
209 using typename Superclass::EquationContainerPointer;
210 using typename Superclass::TermContainerType;
211 using typename Superclass::TermContainerPointer;
213 using typename Superclass::TermType;
214 using typename Superclass::TermPointer;
216 using typename Superclass::InputImageType;
217 using typename Superclass::InputImagePixelType;
218 using typename Superclass::InputImageConstPointer;
219 using typename Superclass::InputImageRegionType;
220 using typename Superclass::InputPixelRealType;
222 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
224 using typename Superclass::LevelSetContainerType;
225 using typename Superclass::LevelSetIdentifierType;
227 using typename Superclass::LevelSetInputType;
228 using typename Superclass::LevelSetOutputType;
229 using typename Superclass::LevelSetOutputRealType;
230 using typename Superclass::LevelSetDataType;
238 using typename Superclass::IdListType;
239 using typename Superclass::IdListIterator;
240 using typename Superclass::IdListImageType;
241 using typename Superclass::CacheImageType;
242 using typename Superclass::DomainMapImageFilterType;
244 using typename Superclass::StoppingCriterionType;
245 using typename Superclass::StoppingCriterionPointer;
255 SetNumberOfWorkUnits(
const ThreadIdType numberOfWorkUnits);
259 GetNumberOfWorkUnits()
const;
268 std::map<IdentifierType, LevelSetLayerType *> m_UpdateBuffer{};
273 AllocateUpdateBuffer()
override;
277 ComputeIteration()
override;
281 ComputeTimeStepForNextIteration()
override;
285 UpdateLevelSets()
override;
289 UpdateEquations()
override;
300 template <
typename TEquationContainer,
unsigned int VDimension>
320 using typename Superclass::EquationContainerType;
321 using typename Superclass::EquationContainerPointer;
322 using typename Superclass::TermContainerType;
323 using typename Superclass::TermContainerPointer;
325 using typename Superclass::TermType;
326 using typename Superclass::TermPointer;
328 using typename Superclass::InputImageType;
329 using typename Superclass::InputImagePixelType;
330 using typename Superclass::InputImageConstPointer;
331 using typename Superclass::InputImageRegionType;
332 using typename Superclass::InputPixelRealType;
334 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
336 using typename Superclass::LevelSetContainerType;
337 using typename Superclass::LevelSetIdentifierType;
339 using typename Superclass::LevelSetInputType;
340 using typename Superclass::LevelSetOutputType;
341 using typename Superclass::LevelSetOutputRealType;
342 using typename Superclass::LevelSetDataType;
350 using typename Superclass::IdListType;
351 using typename Superclass::IdListIterator;
352 using typename Superclass::IdListImageType;
353 using typename Superclass::CacheImageType;
354 using typename Superclass::DomainMapImageFilterType;
356 using typename Superclass::StoppingCriterionType;
357 using typename Superclass::StoppingCriterionPointer;
370 UpdateLevelSets()
override;
374 UpdateEquations()
override;
378 template <
typename TEquationContainer,
unsigned int VDimension>
398 using typename Superclass::EquationContainerType;
399 using typename Superclass::EquationContainerPointer;
400 using typename Superclass::TermContainerType;
401 using typename Superclass::TermContainerPointer;
403 using typename Superclass::TermType;
404 using typename Superclass::TermPointer;
406 using typename Superclass::InputImageType;
407 using typename Superclass::InputImagePixelType;
408 using typename Superclass::InputImageConstPointer;
409 using typename Superclass::InputImageRegionType;
410 using typename Superclass::InputPixelRealType;
412 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
414 using typename Superclass::LevelSetContainerType;
415 using typename Superclass::LevelSetIdentifierType;
417 using typename Superclass::LevelSetInputType;
418 using typename Superclass::LevelSetOutputType;
419 using typename Superclass::LevelSetOutputRealType;
420 using typename Superclass::LevelSetDataType;
429 using typename Superclass::IdListType;
430 using typename Superclass::IdListIterator;
431 using typename Superclass::IdListImageType;
432 using typename Superclass::CacheImageType;
433 using typename Superclass::DomainMapImageFilterType;
435 using typename Superclass::StoppingCriterionType;
436 using typename Superclass::StoppingCriterionPointer;
448 UpdateLevelSets()
override;
450 UpdateEquations()
override;
454 #ifndef ITK_MANUAL_INSTANTIATION
455 # include "itkLevelSetEvolution.hxx"
458 #endif // itkLevelSetEvolution_h