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"
23 #include "itkLevelSetDenseImage.h"
25 
26 namespace itk
27 {
28 
37 template <typename TLevelSet, typename TDomainPartitioner, typename TLevelSetEvolution>
38 class ITK_TEMPLATE_EXPORT LevelSetEvolutionUpdateLevelSetsThreader{};
39 
40 // For dense image level set.
41 template <typename TImage, typename TLevelSetEvolution>
42 class ITK_TEMPLATE_EXPORT
44  ThreadedImageRegionPartitioner<TImage::ImageDimension>,
45  TLevelSetEvolution>
46  : public DomainThreader<ThreadedImageRegionPartitioner<TImage::ImageDimension>, TLevelSetEvolution>
47 {
48 public:
49  ITK_DISALLOW_COPY_AND_MOVE(LevelSetEvolutionUpdateLevelSetsThreader);
50 
56 
58  itkOverrideGetNameOfClassMacro(LevelSetEvolutionUpdateLevelSetsThreader);
59 
61  itkNewMacro(Self);
62 
64  using typename Superclass::DomainType;
65  using typename Superclass::AssociateType;
66 
68  using LevelSetEvolutionType = TLevelSetEvolution;
69  using LevelSetContainerType = typename LevelSetEvolutionType::LevelSetContainerType;
70  using LevelSetType = typename LevelSetEvolutionType::LevelSetType;
71  using LevelSetImageType = typename LevelSetEvolutionType::LevelSetImageType;
72  using LevelSetOutputRealType = typename LevelSetEvolutionType::LevelSetOutputRealType;
73 
74 protected:
76 
77  void
78  BeforeThreadedExecution() override;
79 
80  void
81  ThreadedExecution(const DomainType & imageSubRegion, const ThreadIdType threadId) override;
82 
83  void
84  AfterThreadedExecution() override;
85 
87  using RMSChangeAccumulatorPerThreadType = std::vector<RMSChangeAccumulatorType>;
88 
89  RMSChangeAccumulatorPerThreadType m_RMSChangeAccumulatorPerThread{};
90 };
91 
92 } // end namespace itk
93 
94 #ifndef ITK_MANUAL_INSTANTIATION
95 # include "itkLevelSetEvolutionUpdateLevelSetsThreader.hxx"
96 #endif
97 
98 #endif
itk::CompensatedSummation
Perform more precise accumulation of floating point numbers.
Definition: itkCompensatedSummation.h:66
itk::LevelSetDenseImage
Base class for the "dense" representation of a level-set function on one image.
Definition: itkLevelSetDenseImage.h:41
itk::ThreadedImageRegionPartitioner
Class for partitioning of an ImageRegion.
Definition: itkThreadedImageRegionPartitioner.h:45
itk::LevelSetEvolutionUpdateLevelSetsThreader
Thread the UpdateLevelSets method.
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:38
itk::SmartPointer< Self >
itkCompensatedSummation.h
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::RMSChangeAccumulatorPerThreadType
std::vector< RMSChangeAccumulatorType > RMSChangeAccumulatorPerThreadType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:87
itkThreadedImageRegionPartitioner.h
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetImageType
typename LevelSetEvolutionType::LevelSetImageType LevelSetImageType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:71
itk::ThreadIdType
unsigned int ThreadIdType
Definition: itkIntTypes.h:102
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:55
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetOutputRealType
typename LevelSetEvolutionType::LevelSetOutputRealType LevelSetOutputRealType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:72
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetContainerType
typename LevelSetEvolutionType::LevelSetContainerType LevelSetContainerType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:69
itk::DomainThreader< ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::DomainType
typename DomainPartitionerType::DomainType DomainType
Definition: itkDomainThreader.h:78
itkLevelSetDenseImage.h
itk::DomainThreader
Multi-threaded processing on a domain by processing sub-domains per thread.
Definition: itkDomainThreader.h:66
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnatomicalOrientation.h:29
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetType
typename LevelSetEvolutionType::LevelSetType LevelSetType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:70
itkDomainThreader.h
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetEvolutionType
TLevelSetEvolution LevelSetEvolutionType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:68