ITK  4.8.0
Insight Segmentation and Registration Toolkit
itkBinaryThresholdProjectionImageFilter.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 itkBinaryThresholdProjectionImageFilter_h
19 #define itkBinaryThresholdProjectionImageFilter_h
20 
22 #include "itkConceptChecking.h"
23 
24 namespace itk
25 {
49 namespace Function
50 {
51 template< typename TInputPixel, typename TOutputPixel >
53 {
54 public:
57 
58  inline void Initialize()
59  {
60  m_IsForeground = false;
61  }
62 
63  inline void operator()(const TInputPixel & input)
64  {
65  if ( input >= m_ThresholdValue )
66  {
67  m_IsForeground = true;
68  }
69  }
70 
71  inline TOutputPixel GetValue()
72  {
73  if ( m_IsForeground )
74  {
75  return m_ForegroundValue;
76  }
77  else
78  {
79  return m_BackgroundValue;
80  }
81  }
82 
84 
85  TInputPixel m_ThresholdValue;
86  TOutputPixel m_ForegroundValue;
87  TOutputPixel m_BackgroundValue;
88 };
89 } // end namespace Function
90 
91 template< typename TInputImage, typename TOutputImage >
93  public ProjectionImageFilter< TInputImage, TOutputImage,
94  Function::BinaryThresholdAccumulator<
95  typename TInputImage::PixelType,
96  typename TOutputImage::PixelType > >
97 {
98 public:
100  typedef ProjectionImageFilter< TInputImage, TOutputImage,
102  typename TInputImage::PixelType,
103  typename TOutputImage::PixelType > > Superclass;
104 
107 
110 
112  itkNewMacro(Self);
113 
115  typedef TInputImage InputImageType;
116  typedef TOutputImage OutputImageType;
117 
119  typedef typename InputImageType::PixelType InputPixelType;
120  typedef typename OutputImageType::PixelType OutputPixelType;
121 
123 
126  itkSetMacro(ForegroundValue, OutputPixelType);
127  itkGetConstMacro(ForegroundValue, OutputPixelType);
129 
132  itkSetMacro(BackgroundValue, OutputPixelType);
133  itkGetConstMacro(BackgroundValue, OutputPixelType);
135 
138  itkSetMacro(ThresholdValue, InputPixelType);
139  itkGetConstMacro(ThresholdValue, InputPixelType);
141 
142 #ifdef ITK_USE_CONCEPT_CHECKING
143  // Begin concept checking
144  itkConceptMacro( InputPixelTypeGreaterThanComparable,
146  itkConceptMacro( InputHasNumericTraitsCheck,
148  // End concept checking
149 #endif
150 
151 protected:
153  {
157  }
158 
160 
161  void PrintSelf(std::ostream & os, Indent indent) const ITK_OVERRIDE
162  {
163  Superclass::PrintSelf(os, indent);
164 
166  InputPixelPrintType;
167 
168  os << indent << "ForegroundValue: "
169  << static_cast< InputPixelPrintType >( m_ForegroundValue )
170  << std::endl;
171 
173  OutputPixelPrintType;
174 
175  os << indent << "BackgroundValue: "
176  << static_cast< OutputPixelPrintType >( m_BackgroundValue )
177  << std::endl;
178 
179  os << indent << "ThresholdValue: "
180  << static_cast< InputPixelPrintType >( m_ThresholdValue )
181  << std::endl;
182  }
183 
184  virtual AccumulatorType NewAccumulator(SizeValueType size) const ITK_OVERRIDE
185  {
186  AccumulatorType accumulator(size);
187 
188  accumulator.m_ForegroundValue = m_ForegroundValue;
189  accumulator.m_BackgroundValue = m_BackgroundValue;
190  accumulator.m_ThresholdValue = m_ThresholdValue;
191  return accumulator;
192  }
193 
196 
199 
202 
203 private:
204  //purposely not implemented
206  void operator=(const Self &);
207 }; // end BinaryThresholdProjectionImageFilter
208 } //end namespace itk
209 
210 #endif
virtual AccumulatorType NewAccumulator(SizeValueType size) const override
Base class for all process objects that output image data.
unsigned long SizeValueType
Definition: itkIntTypes.h:143
Implements an accumulation of an image along a selected direction.
ProjectionImageFilter< TInputImage, TOutputImage, Function::BinaryThresholdAccumulator< typename TInputImage::PixelType, typename TOutputImage::PixelType > > Superclass
void PrintSelf(std::ostream &os, Indent indent) const override
static T max(const T &)
Control indentation during Print() invocation.
Definition: itkIndent.h:49
Define additional traits for native types such as int or float.
#define itkConceptMacro(name, concept)
void PrintSelf(std::ostream &os, Indent indent) const override