NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkUCLMultiResolutionPyramidImageFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkUCLMultiResolutionPyramidImageFilter.h,v $
5  Language: C++
6  Date: $Date: 2009-05-08 16:34:59 $
7  Version: $Revision: 1.25 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11 
12  This software is distributed WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14  PURPOSE. See the above copyright notices for more information.
15 
16 =========================================================================*/
17 #ifndef itkUCLMultiResolutionPyramidImageFilter_h
18 #define itkUCLMultiResolutionPyramidImageFilter_h
19 
20 #include <itkImageToImageFilter.h>
21 #include <itkArray2D.h>
22 
23 namespace itk
24 {
25 
109 template <
110  class TInputImage,
111  class TOutputImage,
112  class TScheduleElement
113  >
115  public ImageToImageFilter< TInputImage, TOutputImage >
116 {
117 public:
120  typedef ImageToImageFilter<TInputImage,TOutputImage> Superclass;
121  typedef SmartPointer<Self> Pointer;
122  typedef SmartPointer<const Self> ConstPointer;
123 
125  itkNewMacro(Self);
126 
128  itkTypeMacro(UCLMultiResolutionPyramidImageFilter, ImageToImageFilter);
129 
131  typedef Array2D<TScheduleElement> ScheduleType;
132 
134  itkStaticConstMacro(ImageDimension, unsigned int,
135  TInputImage::ImageDimension);
136  itkStaticConstMacro(OutputImageDimension, unsigned int,
137  TOutputImage::ImageDimension);
138 
140  typedef typename Superclass::InputImageType InputImageType;
141  typedef typename Superclass::OutputImageType OutputImageType;
142  typedef typename Superclass::InputImagePointer InputImagePointer;
143  typedef typename Superclass::OutputImagePointer OutputImagePointer;
144  typedef typename Superclass::InputImageConstPointer InputImageConstPointer;
145 
152  virtual void SetNumberOfLevels(unsigned int num);
153 
155  itkGetConstMacro(NumberOfLevels, unsigned int);
156 
163  virtual void SetSchedule( const ScheduleType& schedule );
164 
166  itkGetConstReferenceMacro(Schedule, ScheduleType);
167 
172  virtual void SetStartingShrinkFactors( TScheduleElement factor );
173  virtual void SetStartingShrinkFactors( TScheduleElement* factors );
174 
176  const unsigned int * GetStartingShrinkFactors() const;
177 
181  static bool IsScheduleDownwardDivisible( const ScheduleType& schedule );
182 
189  virtual void GenerateOutputInformation();
190 
195  virtual void GenerateOutputRequestedRegion(DataObject *output);
196 
203  virtual void GenerateInputRequestedRegion();
204 
205  itkSetMacro(MaximumError,double);
206  itkGetConstReferenceMacro(MaximumError,double);
207 
208  itkSetMacro(UseShrinkImageFilter,bool);
209  itkGetConstMacro(UseShrinkImageFilter,bool);
210  itkBooleanMacro(UseShrinkImageFilter);
211 
212 
213 #ifdef ITK_USE_CONCEPT_CHECKING
214 
215  itkConceptMacro(SameDimensionCheck,
216  (Concept::SameDimension<ImageDimension, OutputImageDimension>));
217  itkConceptMacro(OutputHasNumericTraitsCheck,
218  (Concept::HasNumericTraits<typename TOutputImage::PixelType>));
220 #endif
221 
222 protected:
225  void PrintSelf(std::ostream&os, Indent indent) const;
226 
228  void GenerateData();
229 
230  double m_MaximumError;
231  unsigned int m_NumberOfLevels;
232  ScheduleType m_Schedule;
234 
235 private:
236  UCLMultiResolutionPyramidImageFilter(const Self&); //purposely not implemented
237  void operator=(const Self&); //purposely not implemented
238 
239 };
240 
241 
242 } // namespace itk
243 
244 #ifndef ITK_MANUAL_INSTANTIATION
245 #include "itkUCLMultiResolutionPyramidImageFilter.txx"
246 #endif
247 
248 #endif
UCLMultiResolutionPyramidImageFilter Self
Definition: itkUCLMultiResolutionPyramidImageFilter.h:119
ImageToImageFilter< TInputImage, TOutputImage > Superclass
Definition: itkUCLMultiResolutionPyramidImageFilter.h:120
Superclass::InputImageType InputImageType
Definition: itkUCLMultiResolutionPyramidImageFilter.h:140
Superclass::InputImageConstPointer InputImageConstPointer
Definition: itkUCLMultiResolutionPyramidImageFilter.h:144
Superclass::OutputImageType OutputImageType
Definition: itkUCLMultiResolutionPyramidImageFilter.h:141
Framework for creating images in a multi-resolution pyramid.
Definition: itkUCLMultiResolutionPyramidImageFilter.h:114
Definition: niftkITKAffineResampleImage.cxx:74
double m_MaximumError
Definition: itkUCLMultiResolutionPyramidImageFilter.h:230
bool m_UseShrinkImageFilter
Definition: itkUCLMultiResolutionPyramidImageFilter.h:233
unsigned int m_NumberOfLevels
Definition: itkUCLMultiResolutionPyramidImageFilter.h:231
~UCLMultiResolutionPyramidImageFilter()
Definition: itkUCLMultiResolutionPyramidImageFilter.h:224
Superclass::OutputImagePointer OutputImagePointer
Definition: itkUCLMultiResolutionPyramidImageFilter.h:143
ScheduleType m_Schedule
Definition: itkUCLMultiResolutionPyramidImageFilter.h:232
GLuint num
Definition: glew.h:2607
SmartPointer< const Self > ConstPointer
Definition: itkUCLMultiResolutionPyramidImageFilter.h:122
Superclass::InputImagePointer InputImagePointer
Definition: itkUCLMultiResolutionPyramidImageFilter.h:142
Array2D< TScheduleElement > ScheduleType
Definition: itkUCLMultiResolutionPyramidImageFilter.h:128
SmartPointer< Self > Pointer
Definition: itkUCLMultiResolutionPyramidImageFilter.h:121