ITK  5.4.0
Insight Toolkit
itkKLMSegmentationRegion.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 itkKLMSegmentationRegion_h
19#define itkKLMSegmentationRegion_h
20
23#include "ITKKLMRegionGrowingExport.h"
24
25#include "vnl/vnl_vector.h"
26
27namespace itk
28{
90// Forward reference because of circular dependencies
91class ITK_FORWARD_EXPORT KLMSegmentationBorder;
92
93class ITKKLMRegionGrowing_EXPORT KLMSegmentationRegion : public SegmentationRegion
94{
95public:
96 ITK_DISALLOW_COPY_AND_MOVE(KLMSegmentationRegion);
97
103
105 itkNewMacro(Self);
106
108 itkOverrideGetNameOfClassMacro(KLMSegmentationRegion);
109
111 using MeanRegionIntensityType = vnl_vector<double>;
112
115 using RegionBorderVectorType = std::vector<KLMSegmentationBorder *>;
116 using RegionBorderVectorSizeType = RegionBorderVectorType::size_type;
117
119 using RegionBorderVectorIterator = RegionBorderVectorType::iterator;
120
123 using RegionBorderVectorConstIterator = RegionBorderVectorType::const_iterator;
124
126 using RegionLabelType = Superclass::RegionLabelType;
127
132
135
140
143
148
150 itkSetMacro(MeanRegionIntensity, MeanRegionIntensityType);
151 itkGetConstReferenceMacro(MeanRegionIntensity, MeanRegionIntensityType);
156 void
157 SetRegionParameters(MeanRegionIntensityType meanRegionIntensity, double regionArea, RegionLabelType label);
158
160 void
162
164 void
166
168 void
170
173 void
175
177 void
178 InsertRegionBorder(RegionBorderVectorIterator RegionBorderVectorIt, KLMSegmentationBorder * pBorderCandidate);
179
181 void
183
185 void
187
190 void
192
195 double
196 EnergyFunctional(const Self * region);
197
200 void
202
229 void
235 void
237
238protected:
241 void
242 PrintSelf(std::ostream & os, Indent indent) const override;
243
244private:
245 RegionBorderVectorType m_RegionBorderVector{};
246 MeanRegionIntensityType m_MeanRegionIntensity{};
247}; // class SegmentationRegion
248} // namespace itk
249
250#endif
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Base class for KLMSegmentationBorder object.
Base class for KLMSegmentationRegion object.
void InsertRegionBorder(KLMSegmentationBorder *pBorderCandidate)
void SpliceRegionBorders(Self *region)
RegionBorderVectorType::const_iterator RegionBorderVectorConstIterator
void SetRegionParameters(MeanRegionIntensityType meanRegionIntensity, double regionArea, RegionLabelType label)
double EnergyFunctional(const Self *region)
RegionBorderVectorIterator GetRegionBorderItBegin()
void PushBackRegionBorder(KLMSegmentationBorder *pBorderCandidate)
RegionBorderVectorIterator GetRegionBorderItEnd()
void CombineRegionParameters(const Self *region)
RegionBorderVectorType::iterator RegionBorderVectorIterator
RegionBorderVectorType::size_type RegionBorderVectorSizeType
vnl_vector< double > MeanRegionIntensityType
void PrintSelf(std::ostream &os, Indent indent) const override
RegionBorderVectorConstIterator GetRegionBorderConstItBegin()
void ResetRegionLabelAndUpdateBorders(Self *region)
RegionBorderVectorSizeType GetRegionBorderSize() const
Superclass::RegionLabelType RegionLabelType
std::vector< KLMSegmentationBorder * > RegionBorderVectorType
void PushFrontRegionBorder(KLMSegmentationBorder *pBorderCandidate)
void DeleteRegionBorder(KLMSegmentationBorder *pBorderCandidate)
void InsertRegionBorder(RegionBorderVectorIterator RegionBorderVectorIt, KLMSegmentationBorder *pBorderCandidate)
RegionBorderVectorConstIterator GetRegionBorderConstItEnd()
Light weight base class for most itk classes.
Base class for SegmentationRegion object.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
class ITK_FORWARD_EXPORT KLMSegmentationRegion