ITK  6.0.0
Insight Toolkit
itkLevelSetEvolutionUpdateLevelSetsThreader.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef itkLevelSetEvolutionUpdateLevelSetsThreader_h
19#define itkLevelSetEvolutionUpdateLevelSetsThreader_h
20
22#include "itkDomainThreader.h"
25
26namespace itk
27{
28
37template <typename TLevelSet, typename TDomainPartitioner, typename TLevelSetEvolution>
39{};
40
41// For dense image level set.
42template <typename TImage, typename TLevelSetEvolution>
43class ITK_TEMPLATE_EXPORT
45 ThreadedImageRegionPartitioner<TImage::ImageDimension>,
46 TLevelSetEvolution>
47 : public DomainThreader<ThreadedImageRegionPartitioner<TImage::ImageDimension>, TLevelSetEvolution>
48{
49public:
50 ITK_DISALLOW_COPY_AND_MOVE(LevelSetEvolutionUpdateLevelSetsThreader);
51
57
59 itkOverrideGetNameOfClassMacro(LevelSetEvolutionUpdateLevelSetsThreader);
60
62 itkNewMacro(Self);
63
65 using typename Superclass::DomainType;
66 using typename Superclass::AssociateType;
67
69 using LevelSetEvolutionType = TLevelSetEvolution;
70 using LevelSetContainerType = typename LevelSetEvolutionType::LevelSetContainerType;
71 using LevelSetType = typename LevelSetEvolutionType::LevelSetType;
72 using LevelSetImageType = typename LevelSetEvolutionType::LevelSetImageType;
73 using LevelSetOutputRealType = typename LevelSetEvolutionType::LevelSetOutputRealType;
74
75protected:
77
78 void
80
81 void
82 ThreadedExecution(const DomainType & imageSubRegion, const ThreadIdType threadId) override;
83
84 void
86
88 using RMSChangeAccumulatorPerThreadType = std::vector<RMSChangeAccumulatorType>;
89
90 RMSChangeAccumulatorPerThreadType m_RMSChangeAccumulatorPerThread{};
91};
92
93} // end namespace itk
94
95#ifndef ITK_MANUAL_INSTANTIATION
96# include "itkLevelSetEvolutionUpdateLevelSetsThreader.hxx"
97#endif
98
99#endif
Perform more precise accumulation of floating point numbers.
Multi-threaded processing on a domain by processing sub-domains per thread.
Base class for the "dense" representation of a level-set function on one image.
Light weight base class for most itk classes.
Class for partitioning of an ImageRegion.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned int ThreadIdType
Definition: itkIntTypes.h:102