ITK  4.12.0
Insight Segmentation and Registration Toolkit
itkLabelStatisticsKeepNObjectsImageFilter.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 itkLabelStatisticsKeepNObjectsImageFilter_h
19 #define itkLabelStatisticsKeepNObjectsImageFilter_h
20 
25 
26 namespace itk
27 {
45 template< typename TInputImage, typename TFeatureImage >
46 class ITK_TEMPLATE_EXPORT LabelStatisticsKeepNObjectsImageFilter:
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(NumberOfObjects, SizeValueType);
120  itkSetMacro(NumberOfObjects, SizeValueType);
122 
128  itkGetConstMacro(ReverseOrdering, bool);
129  itkSetMacro(ReverseOrdering, bool);
130  itkBooleanMacro(ReverseOrdering);
132 
137  itkGetConstMacro(Attribute, AttributeType);
138  itkSetMacro(Attribute, AttributeType);
139  void SetAttribute(const std::string & s)
140  {
141  this->SetAttribute( LabelObjectType::GetAttributeFromName(s) );
142  }
144 
146  void SetFeatureImage(const TFeatureImage *input)
147  {
148  // Process object is not const-correct so the const casting is required.
149  this->SetNthInput( 1, const_cast< TFeatureImage * >( input ) );
150  }
151 
154  {
155  return static_cast< const FeatureImageType * >( this->ProcessObject::GetInput(1) );
156  }
157 
159  void SetInput1(const InputImageType *input)
160  {
161  this->SetInput(input);
162  }
163 
165  void SetInput2(const FeatureImageType *input)
166  {
167  this->SetFeatureImage(input);
168  }
169 
170 protected:
173  void PrintSelf(std::ostream & os, Indent indent) const ITK_OVERRIDE;
174 
178  void GenerateInputRequestedRegion() ITK_OVERRIDE;
179 
181  void EnlargeOutputRequestedRegion( DataObject *itkNotUsed(output) ) ITK_OVERRIDE;
182 
185  void GenerateData() ITK_OVERRIDE;
186 
187 private:
188  ITK_DISALLOW_COPY_AND_ASSIGN(LabelStatisticsKeepNObjectsImageFilter);
189 
190  OutputImagePixelType m_BackgroundValue;
191  SizeValueType m_NumberOfObjects;
192  bool m_ReverseOrdering;
193  AttributeType m_Attribute;
194 }; // end of class
195 } // end namespace itk
196 
197 #ifndef ITK_MANUAL_INSTANTIATION
198 #include "itkLabelStatisticsKeepNObjectsImageFilter.hxx"
199 #endif
200 
201 #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
ImageToImageFilter< TInputImage, TInputImage > Superclass
LabelImageToLabelMapFilter< InputImageType, LabelMapType > LabelizerType
unsigned long SizeValueType
Definition: itkIntTypes.h:143
SmartPointer< Self > Pointer
StatisticsKeepNObjectsLabelMapFilter< LabelMapType > KeepNObjectsType
A Label object to store the common attributes related to the statistics of the object.
keep N objects according to their statistics attributes
SmartPointer< const Self > ConstPointer
StatisticsLabelMapFilter< LabelMapType, TFeatureImage > LabelObjectValuatorType
keep N objects according to their statistics attributes
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)
StatisticsLabelObject< InputImagePixelType, itkGetStaticConstMacro(ImageDimension) > LabelObjectType
LabelMapToLabelImageFilter< LabelMapType, OutputImageType > BinarizerType
Converts a LabelMap to a labeled image.