NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkLargestConnectedComponentFilter.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef itkLargestConnectedComponentFilter_h
16 #define itkLargestConnectedComponentFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <itkCastImageFilter.h>
20 #include <itkConnectedComponentImageFilter.h>
21 #include <itkImage.h>
22 #include <map>
23 #include <algorithm>
24 
25 
26 namespace itk
27 {
28 
41  template <class TInputImage, class TOutputImage>
42  class ITK_EXPORT LargestConnectedComponentFilter : public ImageToImageFilter<TInputImage, TOutputImage>
43  {
44  public:
47  typedef ImageToImageFilter<TInputImage, TOutputImage> SuperClass;
48  typedef SmartPointer<Self> Pointer;
49  typedef SmartPointer<const Self> ConstPointer;
50 
52  itkNewMacro(Self);
53 
55  itkTypeMacro(LargestConnectedComponentFilter, ImageToImageFilter);
56 
58  typedef TInputImage InputImageType;
62  typedef typename InputImageType::ConstPointer InputImageConstPointer;
64 
65  typedef TOutputImage OutputImageType;
67  typedef typename OutputImageType::Pointer OutputImagePointer;
69 
70  itkStaticConstMacro(ImageDimension, unsigned int,
71  TInputImage::ImageDimension);
72 
73  typedef short InternalPixelType;
74  typedef itk::Image<InternalPixelType, itkGetStaticConstMacro(ImageDimension)> InternalImageType;
75  typedef typename InternalImageType::Pointer InternalImagePointer;
77 
79  itkSetMacro(InputBackgroundValue, InputImagePixelType);
80  itkGetConstMacro(InputBackgroundValue, InputImagePixelType);
81 
83  itkSetMacro(OutputBackgroundValue, OutputImagePixelType);
84  itkGetConstMacro(OutputBackgroundValue, OutputImagePixelType);
85 
87  itkSetMacro(OutputForegroundValue, OutputImagePixelType);
88  itkGetConstMacro(OutputForegroundValue, OutputImagePixelType);
89 
90  protected:
93  void PrintSelf(std::ostream& os, Indent indent) const;
94 
96  virtual void GenerateData();
97 
98  typedef typename itk::CastImageFilter<TInputImage, InternalImageType> CastImageFilterType;
99  typedef typename itk::ConnectedComponentImageFilter<InternalImageType, InternalImageType> ConnectedComponentFilterType;
100 
101  private:
102  LargestConnectedComponentFilter(const Self&); //purposely not implemented
103  void operator=(const Self&); //purposely not implemented
104 
105  InputImagePixelType m_InputBackgroundValue;
106  OutputImagePixelType m_OutputBackgroundValue;
107  OutputImagePixelType m_OutputForegroundValue;
108 
109  typename CastImageFilterType::Pointer m_CastFilter;
110  typename ConnectedComponentFilterType::Pointer m_ConnectedFilter;
111  };
112 
113 } //end namespace itk
114 
115 #ifndef ITK_MANUAL_INSTANTIATION
116 #include "itkLargestConnectedComponentFilter.txx"
117 #endif
118 
119 #endif
TOutputImage OutputImageType
Definition: itkLargestConnectedComponentFilter.h:65
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
OutputImageType::Pointer OutputImagePointer
Definition: itkLargestConnectedComponentFilter.h:67
InputImageType::PixelType InputImagePixelType
Definition: itkLargestConnectedComponentFilter.h:59
OutputImageType::PixelType OutputImagePixelType
Definition: itkLargestConnectedComponentFilter.h:66
ImageToImageFilter< TInputImage, TOutputImage > SuperClass
Definition: itkLargestConnectedComponentFilter.h:47
LargestConnectedComponentFilter Self
Definition: itkLargestConnectedComponentFilter.h:46
Definition: niftkITKAffineResampleImage.cxx:74
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
InputImageType::RegionType InputImageRegionType
Definition: itkLargestConnectedComponentFilter.h:63
itk::CastImageFilter< TInputImage, InternalImageType > CastImageFilterType
Definition: itkLargestConnectedComponentFilter.h:98
itk::Image< InternalPixelType, itkGetStaticConstMacro(ImageDimension)> InternalImageType
Definition: itkLargestConnectedComponentFilter.h:74
InternalImageType::RegionType InternalImageRegionType
Definition: itkLargestConnectedComponentFilter.h:76
virtual ~LargestConnectedComponentFilter()
Definition: itkLargestConnectedComponentFilter.h:92
InternalImageType::Pointer InternalImagePointer
Definition: itkLargestConnectedComponentFilter.h:75
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
itk::ConnectedComponentImageFilter< InternalImageType, InternalImageType > ConnectedComponentFilterType
Definition: itkLargestConnectedComponentFilter.h:99
SmartPointer< Self > Pointer
Definition: itkLargestConnectedComponentFilter.h:48
InputImageType::ConstPointer InputImageConstPointer
Definition: itkLargestConnectedComponentFilter.h:62
Does connected component analysis and outputs a binary volume of the largest connected component...
Definition: itkLargestConnectedComponentFilter.h:42
InputImageType::IndexType InputImageIndexType
Definition: itkLargestConnectedComponentFilter.h:60
TInputImage InputImageType
Definition: itkLargestConnectedComponentFilter.h:55
SmartPointer< const Self > ConstPointer
Definition: itkLargestConnectedComponentFilter.h:49
OutputImageType::RegionType OutputImageRegionType
Definition: itkLargestConnectedComponentFilter.h:68
short InternalPixelType
Definition: itkLargestConnectedComponentFilter.h:73
InputImageType::SizeType InputImageSizeType
Definition: itkLargestConnectedComponentFilter.h:61