ITK  4.12.0
Insight Segmentation and Registration Toolkit
itkLabelStatisticsOpeningImageFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
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  * http://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 itkLabelStatisticsOpeningImageFilter_h
19 #define itkLabelStatisticsOpeningImageFilter_h
20 
25 
26 namespace itk
27 {
45 template< typename TInputImage, typename TFeatureImage >
46 class ITK_TEMPLATE_EXPORT LabelStatisticsOpeningImageFilter:
47  public ImageToImageFilter< TInputImage, TInputImage >
48 {
49 public:
55 
57  typedef TInputImage InputImageType;
58  typedef TInputImage OutputImageType;
61  typedef typename InputImageType::RegionType InputImageRegionType;
62  typedef typename InputImageType::PixelType InputImagePixelType;
65  typedef typename OutputImageType::RegionType OutputImageRegionType;
66  typedef typename OutputImageType::PixelType OutputImagePixelType;
67 
68  typedef TFeatureImage FeatureImageType;
71  typedef typename FeatureImageType::PixelType FeatureImagePixelType;
72 
74  itkStaticConstMacro(InputImageDimension, unsigned int,
75  TInputImage::ImageDimension);
76  itkStaticConstMacro(OutputImageDimension, unsigned int,
77  TInputImage::ImageDimension);
78  itkStaticConstMacro(ImageDimension, unsigned int,
79  TInputImage::ImageDimension);
81 
89 
91  itkNewMacro(Self);
92 
96 
97 #ifdef ITK_USE_CONCEPT_CHECKING
98  // Begin concept checking
99  itkConceptMacro( InputEqualityComparableCheck,
101  itkConceptMacro( IntConvertibleToInputCheck,
103  itkConceptMacro( InputOStreamWritableCheck,
105  // End concept checking
106 #endif
107 
112  itkSetMacro(BackgroundValue, OutputImagePixelType);
113  itkGetConstMacro(BackgroundValue, OutputImagePixelType);
115 
119  itkGetConstMacro(Lambda, double);
120  itkSetMacro(Lambda, double);
122 
129  itkGetConstMacro(ReverseOrdering, bool);
130  itkSetMacro(ReverseOrdering, bool);
131  itkBooleanMacro(ReverseOrdering);
133 
138  itkGetConstMacro(Attribute, AttributeType);
139  itkSetMacro(Attribute, AttributeType);
140  void SetAttribute(const std::string & s)
141  {
142  this->SetAttribute( LabelObjectType::GetAttributeFromName(s) );
143  }
145 
147  void SetFeatureImage(const TFeatureImage *input)
148  {
149  // Process object is not const-correct so the const casting is required.
150  this->SetNthInput( 1, const_cast< TFeatureImage * >( input ) );
151  }
152 
155  {
156  return static_cast< const FeatureImageType * >( this->ProcessObject::GetInput(1) );
157  }
158 
160  void SetInput1(const InputImageType *input)
161  {
162  this->SetInput(input);
163  }
164 
166  void SetInput2(const FeatureImageType *input)
167  {
168  this->SetFeatureImage(input);
169  }
170 
171 protected:
174  void PrintSelf(std::ostream & os, Indent indent) const ITK_OVERRIDE;
175 
179  void GenerateInputRequestedRegion() ITK_OVERRIDE;
180 
182  void EnlargeOutputRequestedRegion( DataObject *itkNotUsed(output) ) ITK_OVERRIDE;
183 
186  void GenerateData() ITK_OVERRIDE;
187 
188 private:
189  ITK_DISALLOW_COPY_AND_ASSIGN(LabelStatisticsOpeningImageFilter);
190 
191  OutputImagePixelType m_BackgroundValue;
192  double m_Lambda;
193  bool m_ReverseOrdering;
194  AttributeType m_Attribute;
195 }; // end of class
196 } // end namespace itk
197 
198 #ifndef ITK_MANUAL_INSTANTIATION
199 #include "itkLabelStatisticsOpeningImageFilter.hxx"
200 #endif
201 
202 #endif
virtual void PrintSelf(std::ostream &os, Indent indent) const override
convert a labeled image to a label collection image
Light weight base class for most itk classes.
Superclass::AttributeType AttributeType
LabelMapToLabelImageFilter< LabelMapType, OutputImageType > BinarizerType
remove the objects according to the value of their statistics attribute
ImageToImageFilter< TInputImage, TInputImage > Superclass
SmartPointer< Self > Pointer
A Label object to store the common attributes related to the statistics of the object.
SmartPointer< const Self > ConstPointer
StatisticsLabelObject< InputImagePixelType, itkGetStaticConstMacro(ImageDimension) > LabelObjectType
LabelImageToLabelMapFilter< InputImageType, LabelMapType > LabelizerType
StatisticsOpeningLabelMapFilter< LabelMapType > OpeningType
DataObject * GetInput(const DataObjectIdentifierType &key)
Return an input.
Base class for all data objects in ITK.
Base class for filters that take an image as input and produce an image as output.
Control indentation during Print() invocation.
Definition: itkIndent.h:49
Templated n-dimensional image to store labeled objects.
Definition: itkLabelMap.h:70
The valuator class for the StatisticsLabelObject.
#define itkConceptMacro(name, concept)
StatisticsLabelMapFilter< LabelMapType, TFeatureImage > LabelObjectValuatorType
remove the objects according to the value of their statistics attribute
Converts a LabelMap to a labeled image.