ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itkKLMRegionGrowImageFilter.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 itkKLMRegionGrowImageFilter_h
19#define itkKLMRegionGrowImageFilter_h
20
21#include "itkImage.h"
25#include "itkConceptChecking.h"
26#include <algorithm>
27#include <functional>
28
29namespace itk
30{
162
163template <typename TInputImage, typename TOutputImage>
164class ITK_TEMPLATE_EXPORT KLMRegionGrowImageFilter : public RegionGrowImageFilter<TInputImage, TOutputImage>
165{
166public:
167 ITK_DISALLOW_COPY_AND_MOVE(KLMRegionGrowImageFilter);
168
174
176 itkNewMacro(Self);
177
179 itkOverrideGetNameOfClassMacro(KLMRegionGrowImageFilter);
180
182 using InputImageType = TInputImage;
183 using InputImagePointer = typename TInputImage::Pointer;
184 using InputImageConstPointer = typename TInputImage::ConstPointer;
185
187 using InputImagePixelType = typename TInputImage::PixelType;
188
190 using InputImageVectorType = typename TInputImage::PixelType::VectorType;
191
193 static constexpr unsigned int InputImageVectorDimension = InputImagePixelType::Dimension;
194
196 using InputImageIndexType = typename TInputImage::IndexType;
197
201
203 using InputRegionType = typename TInputImage::RegionType;
204
207 using typename Superclass::GridSizeType;
208
210 using OutputImageType = TOutputImage;
211 using OutputImagePointer = typename TOutputImage::Pointer;
212
214 static constexpr unsigned int InputImageDimension = TInputImage::ImageDimension;
215
217 static constexpr unsigned int OutputImageDimension = TOutputImage::ImageDimension;
218
220 using OutputImagePixelType = typename TOutputImage::PixelType;
221
223 using OutputImageVectorType = typename TOutputImage::PixelType::VectorType;
224
226 static constexpr unsigned int OutputImageVectorDimension = OutputImagePixelType::Dimension;
227
229 using OutputImageIndexType = typename TOutputImage::IndexType;
230
233
236
239
242
245
248
251
254
256 using MeanRegionIntensityType = vnl_vector<double>;
257
260
263
267 itkSetMacro(MaximumLambda, double);
268 itkGetConstReferenceMacro(MaximumLambda, double);
270
272 itkSetMacro(NumberOfRegions, unsigned int);
273 itkGetConstReferenceMacro(NumberOfRegions, unsigned int);
275
279
281 void
283
285 void
287
290#if defined(THIS_CONCEPT_FAILS_ON_GCC)
292 itkConceptMacro(SameVectorDimension,
294#endif // end THIS_CONCEPT_FAILS_ON_GCC
295
296protected:
298 ~KLMRegionGrowImageFilter() override = default;
299 void
300 PrintSelf(std::ostream & os, Indent indent) const override;
301
305 void
306 GenerateData() override;
307
311 void
313
318 void
320
323 void
325
329 void
330 MergeRegions() override;
331
333 virtual void
335
337 void
339
341 void
343
347
353 virtual void
355
359 virtual void
361
362private:
363 using InputImageSizeType = typename TInputImage::SizeType;
366
367 double m_MaximumLambda{ 1000 };
368 unsigned int m_NumberOfRegions{ 0 };
369
371
372 double m_InternalLambda{ 0 };
373 unsigned int m_InitialNumberOfRegions{ 0 };
374 double m_TotalBorderLength{ 0.0 };
375
376 std::vector<KLMSegmentationRegionPtr> m_RegionsPointer{};
377 std::vector<KLMSegmentationBorderPtr> m_BordersPointer{};
378 std::vector<KLMSegmentationBorderArrayPtr> m_BordersDynamicPointer{};
380
383}; // class KLMRegionGrowImageFilter
384} // namespace itk
385
386#ifndef ITK_MANUAL_INSTANTIATION
387# include "itkKLMRegionGrowImageFilter.hxx"
388#endif
389
390#endif
Base class for all data objects in ITK.
A multi-dimensional iterator templated over image type that walks a region of pixels.
A multi-dimensional iterator templated over image type that walks a region of pixels.
Templated n-dimensional image class.
Definition itkImage.h:89
Control indentation during Print() invocation.
Definition itkIndent.h:50
Object maintaining a reference to a list of borders associated with a region.
static constexpr unsigned int OutputImageVectorDimension
void ApplyRegionGrowImageFilter() override
Image< RegionLabelType, Self::LabelImageDimension > LabelImageType
typename TInputImage::Pointer InputImagePointer
typename TOutputImage::IndexType OutputImageIndexType
typename KLMSegmentationRegion::RegionLabelType RegionLabelType
typename TOutputImage::Pointer OutputImagePointer
typename TInputImage::ConstPointer InputImageConstPointer
typename TInputImage::IndexType InputImageIndexType
ImageRegionIterator< TInputImage > InputImageIterator
virtual void GenerateOutputImage()
void GenerateInputRequestedRegion() override
LabelImagePointer GenerateLabelledImage(LabelImageType *labelImagePtr)
void PrintSelf(std::ostream &os, Indent indent) const override
virtual void InitializeRegionParameters(InputRegionType region)
~KLMRegionGrowImageFilter() override=default
std::vector< KLMSegmentationRegionPtr > m_RegionsPointer
static constexpr unsigned int OutputImageDimension
void EnlargeOutputRequestedRegion(DataObject *) override
std::vector< KLMSegmentationBorderPtr > m_BordersPointer
ImageRegionIterator< TOutputImage > OutputImageIterator
typename KLMSegmentationBorder::Pointer KLMSegmentationBorderPtr
typename TInputImage::PixelType::VectorType InputImageVectorType
static constexpr unsigned int InputImageVectorDimension
typename TInputImage::SizeType InputImageSizeType
ImageRegionIterator< LabelImageType > LabelImageIterator
static constexpr RegionLabelType LabelImageDimension
typename TOutputImage::PixelType OutputImagePixelType
typename LabelImageType::Pointer LabelImagePointer
RegionGrowImageFilter< TInputImage, TOutputImage > Superclass
typename TInputImage::RegionType InputRegionType
KLMDynamicBorderArray< BorderType > KLMSegmentationBorderArrayPtr
typename LabelImageType::IndexType LabelImageIndexType
static constexpr unsigned int InputImageDimension
typename LabelImageType::PixelType LabelImagePixelType
std::vector< KLMSegmentationBorderArrayPtr > m_BordersDynamicPointer
ImageRegionConstIterator< TInputImage > InputImageConstIterator
KLMSegmentationBorderArrayPtr * m_BorderCandidate
typename TOutputImage::PixelType::VectorType OutputImageVectorType
typename TInputImage::PixelType InputImagePixelType
LabelImagePointer GetLabelledImage()
typename KLMSegmentationRegion::Pointer KLMSegmentationRegionPtr
Base class for KLMSegmentationBorder object.
Superclass::RegionLabelType RegionLabelType
typename TInputImage::SizeType GridSizeType
Implements transparent reference counting.
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....