ITK  4.12.0
Insight Segmentation and Registration Toolkit
itkLabelMapToBinaryImageFilter.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 itkLabelMapToBinaryImageFilter_h
19 #define itkLabelMapToBinaryImageFilter_h
20 
21 #include "itkLabelMapFilter.h"
22 #include "itkBarrier.h"
23 
24 namespace itk
25 {
45 template< typename TInputImage, typename TOutputImage >
46 class ITK_TEMPLATE_EXPORT LabelMapToBinaryImageFilter:
47  public LabelMapFilter< TInputImage, TOutputImage >
48 {
49 public:
55 
57  typedef TInputImage InputImageType;
58  typedef TOutputImage OutputImageType;
61  typedef typename InputImageType::RegionType InputImageRegionType;
62  typedef typename InputImageType::PixelType InputImagePixelType;
63  typedef typename InputImageType::LabelObjectType LabelObjectType;
64 
67  typedef typename OutputImageType::RegionType OutputImageRegionType;
68  typedef typename OutputImageType::PixelType OutputImagePixelType;
69  typedef typename OutputImageType::IndexType IndexType;
70 
72  itkStaticConstMacro(InputImageDimension, unsigned int, TInputImage::ImageDimension);
73  itkStaticConstMacro(OutputImageDimension, unsigned int, TOutputImage::ImageDimension);
75 
77  itkNewMacro(Self);
78 
81 
86  itkSetMacro(BackgroundValue, OutputImagePixelType);
87  itkGetConstMacro(BackgroundValue, OutputImagePixelType);
89 
94  itkSetMacro(ForegroundValue, OutputImagePixelType);
95  itkGetConstMacro(ForegroundValue, OutputImagePixelType);
97 
101  {
102  // Process object is not const-correct so the const casting is required.
103  this->SetNthInput( 1, const_cast< OutputImageType * >( input ) );
104  }
105 
107  {
108  return static_cast< OutputImageType * >( const_cast< DataObject * >( this->ProcessObject::GetInput(1) ) );
109  }
110 
112  void SetInput1(const InputImageType *input)
113  {
114  this->SetInput(input);
115  }
116 
118  void SetInput2(const OutputImageType *input)
119  {
120  this->SetBackgroundImage(input);
121  }
122 
123 protected:
126 
130  void GenerateInputRequestedRegion() ITK_OVERRIDE;
131 
133  void EnlargeOutputRequestedRegion( DataObject *itkNotUsed(output) ) ITK_OVERRIDE;
134 
135  virtual void BeforeThreadedGenerateData() ITK_OVERRIDE;
136 
137  virtual void ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread, ThreadIdType threadId) ITK_OVERRIDE;
138 
139  virtual void ThreadedProcessLabelObject(LabelObjectType *labelObject) ITK_OVERRIDE;
140 
141  void PrintSelf(std::ostream & os, Indent indent) const ITK_OVERRIDE;
142 
143 private:
144  ITK_DISALLOW_COPY_AND_ASSIGN(LabelMapToBinaryImageFilter);
145 
146  OutputImagePixelType m_BackgroundValue;
147  OutputImagePixelType m_ForegroundValue;
148 
149  typename Barrier::Pointer m_Barrier;
150 }; // end of class
151 } // end namespace itk
152 
153 #ifndef ITK_MANUAL_INSTANTIATION
154 #include "itkLabelMapToBinaryImageFilter.hxx"
155 #endif
156 
157 #endif
virtual void PrintSelf(std::ostream &os, Indent indent) const override
InputImageType::LabelObjectType LabelObjectType
OutputImageType::RegionType OutputImageRegionType
Base class for all process objects that output image data.
SmartPointer< Self > Pointer
void SetInput1(const InputImageType *input)
OutputImageType::ConstPointer OutputImageConstPointer
SmartPointer< const Self > ConstPointer
OutputImageType::PixelType OutputImagePixelType
void SetInput2(const OutputImageType *input)
Base class for filters that take an image as input and overwrite that image as the output...
unsigned int ThreadIdType
Definition: itkIntTypes.h:159
InputImageType::ConstPointer InputImageConstPointer
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
void SetBackgroundImage(const OutputImageType *input)
TOutputImage OutputImageType
LabelMapFilter< TInputImage, TOutputImage > Superclass
Convert a LabelMap to a binary image.
Standard barrier class implementation for synchronizing the execution of threads. ...
Definition: itkBarrier.h:41