ITK  4.6.0
Insight Segmentation and Registration Toolkit
itkMultiphaseDenseFiniteDifferenceImageFilter.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 __itkMultiphaseDenseFiniteDifferenceImageFilter_h
19 #define __itkMultiphaseDenseFiniteDifferenceImageFilter_h
20 
24 #include "itkNumericTraits.h"
26 
27 #include <list>
28 
29 namespace itk
30 {
100 template< typename TInputImage, typename TFeatureImage, typename TOutputImage, typename TFunction,
101  typename TIdCell = unsigned int >
103  public MultiphaseFiniteDifferenceImageFilter< TInputImage, TFeatureImage,
104  TOutputImage, TFunction, TIdCell >
105 {
106 public:
107 
110  typedef MultiphaseFiniteDifferenceImageFilter< TInputImage,
111  TFeatureImage, TOutputImage, TFunction, TIdCell > Superclass;
114 
117 
120  itkStaticConstMacro(ImageDimension, unsigned int, Superclass::ImageDimension);
121 
133  typedef typename InputImageType::ValueType ValueType;
134 
142 
150  typedef typename OutputImageType::PixelType OutputPixelType;
151 
153 
156 
159 
162  typedef typename FiniteDifferenceFunctionType::NeighborhoodType NeighborhoodIteratorType;
163 
166 
169 
170  void SetFunctionCount(const IdCellType & n);
171 
172 #ifdef ITK_USE_CONCEPT_CHECKING
173  // Begin concept checking
174  itkConceptMacro( OutputTimesDoubleCheck,
176  itkConceptMacro( OutputAdditiveOperatorsCheck,
178  itkConceptMacro( InputConvertibleToOutputCheck,
180  // End concept checking
181 #endif
182 
183  itkSetMacro(ReinitializeCounter, unsigned int);
184  itkGetMacro(ReinitializeCounter, unsigned int);
185 
186 protected:
188  {
189  this->m_ReinitializeCounter = 1;
190  // FIXME: this->m_UpdateCounter really used?
191  // this->m_UpdateCounter = 0; // FIXME: Should this be a bool ?
192  }
193 
195 
196  virtual void PrintSelf(std::ostream &, Indent indent) const;
197 
201  virtual void CopyInputToOutput();
202 
203  virtual void PostProcessOutput();
204 
208  virtual void ApplyUpdate(TimeStepType dt);
209 
210  unsigned int m_ReinitializeCounter; // FIXME: Should this be a boolean ?
211  // unsigned int m_UpdateCounter; // FIXME: Should this be a boolean ?
212 
213 private:
215  void operator=(const Self &); //purposely not implemented
216 
219  virtual void AllocateUpdateBuffer();
220 
224  virtual TimeStepType CalculateChange();
225 
227  std::vector< InputImagePointer > m_UpdateBuffers;
228 };
229 } // end namespace itk
230 
231 #ifndef ITK_MANUAL_INSTANTIATION
232 #include "itkMultiphaseDenseFiniteDifferenceImageFilter.hxx"
233 #endif
234 
235 #endif
MultiphaseFiniteDifferenceImageFilter< TInputImage, TFeatureImage, TOutputImage, TFunction, TIdCell > Superclass
Base class for all process objects that output image data.
FiniteDifferenceFunctionType::NeighborhoodType NeighborhoodIteratorType
This filter calculates the Euclidean distance transform of a binary image in linear time for arbitrar...
Binarize an input image by thresholding.
Splits an image into a main region and several &quot;face&quot; regions which are used to handle computations o...
virtual void PrintSelf(std::ostream &, Indent indent) const
SignedMaurerDistanceMapImageFilter< InputImageType, InputImageType > MaurerType
NeighborhoodAlgorithm::ImageBoundaryFacesCalculator< InputImageType > FaceCalculatorType
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
virtual void ApplyUpdate(TimeStepType dt)
BinaryThresholdImageFilter< InputImageType, InputImageType > ThresholdFilterType
#define itkConceptMacro(name, concept)