NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement > Class Template Reference

Framework for creating images in a multi-resolution pyramid. More...

Inheritance diagram for itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >:
Inheritance graph
[legend]
Collaboration diagram for itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >:
Collaboration graph
[legend]

Public Types

typedef
UCLMultiResolutionPyramidImageFilter 
Self
 
typedef ImageToImageFilter
< TInputImage, TOutputImage > 
Superclass
 
typedef SmartPointer< SelfPointer
 
typedef SmartPointer< const SelfConstPointer
 
typedef Array2D< TScheduleElement > ScheduleType
 
typedef Superclass::InputImageType InputImageType
 
typedef Superclass::OutputImageType OutputImageType
 
typedef
Superclass::InputImagePointer 
InputImagePointer
 
typedef
Superclass::OutputImagePointer 
OutputImagePointer
 
typedef
Superclass::InputImageConstPointer 
InputImageConstPointer
 

Public Member Functions

virtual const char * GetClassName () const
 
 itkStaticConstMacro (ImageDimension, unsigned int, TInputImage::ImageDimension)
 
 itkStaticConstMacro (OutputImageDimension, unsigned int, TOutputImage::ImageDimension)
 
virtual void SetNumberOfLevels (unsigned int num)
 
virtual unsigned int GetNumberOfLevels () const
 
virtual void SetSchedule (const ScheduleType &schedule)
 
virtual const ScheduleTypeGetSchedule ()
 
virtual void SetStartingShrinkFactors (TScheduleElement factor)
 
virtual void SetStartingShrinkFactors (TScheduleElement *factors)
 
const unsigned intGetStartingShrinkFactors () const
 
virtual void GenerateOutputInformation ()
 
virtual void GenerateOutputRequestedRegion (DataObject *output)
 
virtual void GenerateInputRequestedRegion ()
 
virtual void SetMaximumError (double _arg)
 
virtual const double & GetMaximumError ()
 
virtual void SetUseShrinkImageFilter (bool _arg)
 
virtual bool GetUseShrinkImageFilter () const
 
virtual void UseShrinkImageFilterOn ()
 
virtual void UseShrinkImageFilterOff ()
 

Static Public Member Functions

static Pointer New ()
 
static bool IsScheduleDownwardDivisible (const ScheduleType &schedule)
 

Protected Member Functions

 UCLMultiResolutionPyramidImageFilter ()
 
 ~UCLMultiResolutionPyramidImageFilter ()
 
void PrintSelf (std::ostream &os, Indent indent) const
 
void GenerateData ()
 

Protected Attributes

double m_MaximumError
 
unsigned int m_NumberOfLevels
 
ScheduleType m_Schedule
 
bool m_UseShrinkImageFilter
 

Detailed Description

template<class TInputImage, class TOutputImage, class TScheduleElement>
class itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >

Framework for creating images in a multi-resolution pyramid.

Originally copied from ITK. Adapted to allow non-integer levels.

UCLMultiResolutionPyramidImageFilter provides a generic framework to to create a image pryamid according to a user defined multi-resolution schedule.

The multi-resolution schedule is specified in terms for shrink factors at each multi-resolution level for each dimension.

A user can either use the default schedules or specify each factor in the schedules directly.

The schedule is stored as an unsigned int matrix. An element of the table can be access via the double bracket notation: table[resLevel][dimension]

For example: 8 4 4 4 4 2

is a schedule for two computation level. In the first (coarest) level the image is reduce by a factor of 8 in the column dimension, factor of 4 in the row dimension and factor of 4 in the slice dimension. In the second level, the image is reduce by a factor of 4 in the column dimension, 4 is the row dimension and 2 in the slice dimension.

The method SetNumberOfLevels() set the number of computation levels in the pyramid. This method will allocate memory for the multi-resolution schedule table. This method generates defaults tables with the starting shrink factor for all dimension set to 2^(NumberOfLevel - 1). All factors are halved for all subsequent levels. For example if the number of levels was set to 4, the default table is:

8 8 8 4 4 4 2 2 2 1 1 1

The user can get a copy of the schedule via GetSchedule() They may make alteration and reset it using SetSchedule().

A user can create a default table by specifying the starting shrink factors via methods SetStartingShrinkFactors() The factors for subsequent level is generated by halving the factor or setting to one, depending on which is larger.

For example, for 4 levels and starting factors of 8,8,4 the default table would be:

8 8 4 4 4 2 2 2 1 1 1 1

When this filter is updated, NumberOfLevels outputs are produced. The N'th output correspond to the N'th level of the pyramid.

To generate each output image, Gaussian smoothing is first performed using a DiscreteGaussianImageFilter with variance (shrink factor / 2)^2. The smoothed image is then downsampled using a ResampleImageFilter.

Note that even if the shrink factors are all equal to one, a smoothing will still be applied. The output at the finest level of the pyramid will thus typically be a smoothed version of the input.

This class is templated over the input image type and the output image type.

This filter uses multithreaded filters to perform the smoothing and downsampling.

This filter supports streaming.

See also
DiscreteGaussianImageFilter
ShrinkImageFilter

Member Typedef Documentation

template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef SmartPointer<const Self> itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::ConstPointer
template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef Superclass::InputImageConstPointer itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::InputImageConstPointer
template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef Superclass::InputImagePointer itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::InputImagePointer
template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef Superclass::InputImageType itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::InputImageType

Inherit types from Superclass.

template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef Superclass::OutputImagePointer itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::OutputImagePointer
template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef Superclass::OutputImageType itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::OutputImageType
template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef SmartPointer<Self> itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::Pointer
template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef Array2D<TScheduleElement> itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::ScheduleType

ScheduleType typedef support.

template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef UCLMultiResolutionPyramidImageFilter itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::Self

Standard class typedefs.

template<class TInputImage , class TOutputImage , class TScheduleElement >
typedef ImageToImageFilter<TInputImage,TOutputImage> itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::Superclass

Constructor & Destructor Documentation

template<class TInputImage , class TOutputImage , class TScheduleElement >
itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::UCLMultiResolutionPyramidImageFilter ( )
protected
template<class TInputImage , class TOutputImage , class TScheduleElement >
itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::~UCLMultiResolutionPyramidImageFilter ( )
inlineprotected

Member Function Documentation

template<class TInputImage , class TOutputImage , class TScheduleElement >
void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GenerateData ( )
protected

Generate the output data.

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GenerateInputRequestedRegion ( )
virtual

UCLMultiResolutionPyramidImageFilter requires a larger input requested region than the output requested regions to accomdate the shrinkage and smoothing operations. As such, UCLMultiResolutionPyramidImageFilter needs to provide an implementation for GenerateInputRequestedRegion(). The original documentation of this method is below.

See also
ProcessObject::GenerateInputRequestedRegion()

Reimplemented in itk::UCLRecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >.

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GenerateOutputInformation ( )
virtual

UCLMultiResolutionPyramidImageFilter produces images which are of different resolution and different pixel spacing than its input image. As such, UCLMultiResolutionPyramidImageFilter needs to provide an implementation for GenerateOutputInformation() in order to inform the pipeline execution model. The original documentation of this method is below.

See also
ProcessObject::GenerateOutputInformaton()
template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GenerateOutputRequestedRegion ( DataObject *  output)
virtual

Given one output whose requested region has been set, this method sets the requested region for the remaining output images. The original documentation of this method is below.

See also
ProcessObject::GenerateOutputRequestedRegion();

Reimplemented in itk::UCLRecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >.

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual const char* itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GetClassName ( ) const
virtual

Run-time type information (and related methods).

Reimplemented in itk::UCLRecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >.

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual const double& itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GetMaximumError ( )
virtual
template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual unsigned int itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GetNumberOfLevels ( ) const
virtual

Get the number of multi-resolution levels.

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual const ScheduleType& itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GetSchedule ( )
virtual

Get the multi-resolution schedule.

template<class TInputImage , class TOutputImage , class TScheduleElement >
const unsigned int* itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GetStartingShrinkFactors ( ) const

Get the starting shrink factors

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual bool itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::GetUseShrinkImageFilter ( ) const
virtual
template<class TInputImage , class TOutputImage , class TScheduleElement >
static bool itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::IsScheduleDownwardDivisible ( const ScheduleType schedule)
static

Test if the schedule is downward divisible. This method returns true if at every level, the shrink factors are divisble by the shrink factors at the next level.

template<class TInputImage , class TOutputImage , class TScheduleElement >
itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::itkStaticConstMacro ( ImageDimension  ,
unsigned  int,
TInputImage::ImageDimension   
)

ImageDimension enumeration.

template<class TInputImage , class TOutputImage , class TScheduleElement >
itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::itkStaticConstMacro ( OutputImageDimension  ,
unsigned  int,
TOutputImage::ImageDimension   
)
template<class TInputImage , class TOutputImage , class TScheduleElement >
static Pointer itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::New ( )
static

Method for creation through the object factory.

template<class TInputImage , class TOutputImage , class TScheduleElement >
void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
protected
template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::SetMaximumError ( double  _arg)
virtual
template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::SetNumberOfLevels ( unsigned int  num)
virtual

Set the number of multi-resolution levels. The matrix containing the schedule will be resized accordingly. The schedule is populated with default values. At the coarset (0) level, the shrink factors are set 2^(nlevel - 1) for all dimension. These shrink factors are halved for subsequent levels. The number of levels is clamped to a minimum value of 1. All shrink factors are also clamped to a minimum value of 1.

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::SetSchedule ( const ScheduleType schedule)
virtual

Set a multi-resolution schedule. The input schedule must have only ImageDimension number of columns and NumberOfLevels number of rows. For each dimension, the shrink factor must be non-increasing with respect to subsequent levels. This function will clamp shrink factors to satisify this condition. All shrink factors less than one will also be clamped to the value of 1.

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::SetStartingShrinkFactors ( TScheduleElement  factor)
virtual

Set the starting shrink factor for the coarset (0) resolution level. The schedule is then populated with defaults values obtained by halving the factors at the previous level. All shrink factors are clamped to a minimum value of 1.

template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::SetStartingShrinkFactors ( TScheduleElement *  factors)
virtual
template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::SetUseShrinkImageFilter ( bool  _arg)
virtual
template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::UseShrinkImageFilterOff ( )
virtual
template<class TInputImage , class TOutputImage , class TScheduleElement >
virtual void itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::UseShrinkImageFilterOn ( )
virtual

Member Data Documentation

template<class TInputImage , class TOutputImage , class TScheduleElement >
double itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::m_MaximumError
protected
template<class TInputImage , class TOutputImage , class TScheduleElement >
unsigned int itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::m_NumberOfLevels
protected
template<class TInputImage , class TOutputImage , class TScheduleElement >
ScheduleType itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::m_Schedule
protected
template<class TInputImage , class TOutputImage , class TScheduleElement >
bool itk::UCLMultiResolutionPyramidImageFilter< TInputImage, TOutputImage, TScheduleElement >::m_UseShrinkImageFilter
protected

The documentation for this class was generated from the following file: