1 #ifndef clitkDecomposeThroughErosionImageFilter_h
2 #define clitkDecomposeThroughErosionImageFilter_h
4 /* =================================================
5 * @file clitkDecomposeThroughErosionImageFilter.h
11 ===================================================*/
16 #include "clitkCommon.h"
17 #include "clitkSetBackgroundImageFilter.h"
20 #include "itkImageToImageFilter.h"
21 #include "itkBinaryThresholdImageFilter.h"
22 #include "itkBinaryErodeImageFilter.h"
23 #include "itkStatisticsImageFilter.h"
24 #include "itkConnectedComponentImageFilter.h"
25 #include "itkCastImageFilter.h"
26 #include "itkBinaryBallStructuringElement.h"
27 #include "itkRelabelComponentImageFilter.h"
32 template <class InputImageType, class OutputImageType>
33 class ITK_EXPORT DecomposeThroughErosionImageFilter :
34 public itk::ImageToImageFilter<InputImageType, OutputImageType>
37 //----------------------------------------
39 //----------------------------------------
40 typedef DecomposeThroughErosionImageFilter Self;
41 typedef itk::ImageToImageFilter<InputImageType, OutputImageType> Superclass;
42 typedef itk::SmartPointer<Self> Pointer;
43 typedef itk::SmartPointer<const Self> ConstPointer;
45 // Method for creation through the object factory
48 // Run-time type information (and related methods)
49 itkTypeMacro( DecomposeThroughErosionImageFilter, ImageToImageFilter );
51 /** Dimension of the domain space. */
52 itkStaticConstMacro(InputImageDimension, unsigned int, Superclass::InputImageDimension);
53 itkStaticConstMacro(OutputImageDimension, unsigned int, Superclass::OutputImageDimension);
55 //----------------------------------------
57 //----------------------------------------
58 typedef typename OutputImageType::RegionType OutputImageRegionType;
59 typedef int InternalPixelType;
60 typedef typename InputImageType::PixelType InputPixelType;
61 typedef typename OutputImageType::PixelType OutputPixelType;
62 typedef typename InputImageType::SizeType SizeType;
64 //----------------------------------------
66 //----------------------------------------
67 itkBooleanMacro(Verbose);
68 itkSetMacro( Verbose, bool);
69 itkGetConstReferenceMacro( Verbose, bool);
70 itkBooleanMacro(FullyConnected);
71 itkSetMacro( FullyConnected, bool);
72 itkGetConstReferenceMacro( FullyConnected, bool);
73 itkSetMacro( Lower, InputPixelType);
74 itkGetConstMacro( Lower, InputPixelType);
75 itkSetMacro( Upper, InputPixelType);
76 itkGetConstMacro( Upper, InputPixelType);
77 itkSetMacro( Inside, InternalPixelType);
78 itkGetConstMacro( Inside, InternalPixelType);
79 itkSetMacro( Outside, InternalPixelType);
80 itkGetConstMacro( Outside, InternalPixelType);
81 itkSetMacro( ErosionPaddingValue, OutputPixelType);
82 itkGetConstMacro( ErosionPaddingValue, OutputPixelType);
83 void SetRadius ( const SizeType& s){ m_Radius=s; this->Modified();}
84 SizeType GetRadius(void){return m_Radius;}
85 itkSetMacro( NumberOfNewLabels, unsigned int);
86 itkGetConstMacro( NumberOfNewLabels, unsigned int);
87 itkSetMacro( MinimumObjectSize, unsigned int);
88 itkGetConstMacro( MinimumObjectSize, unsigned int);
89 itkSetMacro( MinimumNumberOfIterations, unsigned int);
90 itkGetConstMacro( MinimumNumberOfIterations, unsigned int);
94 //----------------------------------------
95 // Constructor & Destructor
96 //----------------------------------------
97 DecomposeThroughErosionImageFilter();
98 ~DecomposeThroughErosionImageFilter() {};
100 //----------------------------------------
102 //----------------------------------------
104 void GenerateData(void);
105 void AllocateOutput(){;}
107 // // Threaded Generate Data
108 // void BeforeThreadedGenerateData(void );
109 // void ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread, int threadId );
110 // void AfterThreadedGenerateData(void );
111 // // Override defaults
112 // virtual void GenerateInputRequestedRegion();
113 // virtual void GenerateOutputInformation (void);
114 // virtual void EnlargeOutputRequestedRegion(DataObject *data);
115 // void AllocateOutputs();
116 //----------------------------------------
118 //----------------------------------------
120 bool m_FullyConnected;
121 InputPixelType m_Lower;
122 InputPixelType m_Upper;
123 OutputPixelType m_ErosionPaddingValue;
124 InputPixelType m_Inside;
125 InputPixelType m_Outside;
127 unsigned int m_NumberOfNewLabels;
128 unsigned int m_MinimumObjectSize;
129 unsigned int m_MinimumNumberOfIterations;
134 } // end namespace clitk
136 #ifndef ITK_MANUAL_INSTANTIATION
137 #include "clitkDecomposeThroughErosionImageFilter.txx"
140 #endif // #define clitkDecomposeThroughErosionImageFilter_h