ITK  5.4.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>
39 {};
40 
41 // For dense image level set.
42 template <typename TImage, typename TLevelSetEvolution>
43 class ITK_TEMPLATE_EXPORT
45  ThreadedImageRegionPartitioner<TImage::ImageDimension>,
46  TLevelSetEvolution>
47  : public DomainThreader<ThreadedImageRegionPartitioner<TImage::ImageDimension>, TLevelSetEvolution>
48 {
49 public:
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 
75 protected:
77 
78  void
79  BeforeThreadedExecution() override;
80 
81  void
82  ThreadedExecution(const DomainType & imageSubRegion, const ThreadIdType threadId) override;
83 
84  void
85  AfterThreadedExecution() override;
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
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:88
itkThreadedImageRegionPartitioner.h
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetImageType
typename LevelSetEvolutionType::LevelSetImageType LevelSetImageType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:72
itk::ThreadIdType
unsigned int ThreadIdType
Definition: itkIntTypes.h:99
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:73
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetContainerType
typename LevelSetEvolutionType::LevelSetContainerType LevelSetContainerType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:70
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: itkAnnulusOperator.h:24
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetType
typename LevelSetEvolutionType::LevelSetType LevelSetType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:71
itkDomainThreader.h
itk::LevelSetEvolutionUpdateLevelSetsThreader< LevelSetDenseImage< TImage >, ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >::LevelSetEvolutionType
TLevelSetEvolution LevelSetEvolutionType
Definition: itkLevelSetEvolutionUpdateLevelSetsThreader.h:69