ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
#include <itkMultiResolutionPyramidImageFilter.h>
Framework for creating images in a multi-resolution pyramid.
MultiResolutionPyramidImageFilter 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.
Definition at line 112 of file itkMultiResolutionPyramidImageFilter.h.
typedef SmartPointer< const Self > itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::ConstPointer |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 120 of file itkMultiResolutionPyramidImageFilter.h.
typedef Superclass::InputImageConstPointer itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::InputImageConstPointer |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 143 of file itkMultiResolutionPyramidImageFilter.h.
typedef Superclass::InputImagePointer itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::InputImagePointer |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 141 of file itkMultiResolutionPyramidImageFilter.h.
typedef Superclass::InputImageType itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::InputImageType |
Inherit types from Superclass.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 139 of file itkMultiResolutionPyramidImageFilter.h.
typedef Superclass::OutputImagePointer itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::OutputImagePointer |
Reimplemented from itk::ImageSource< TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 142 of file itkMultiResolutionPyramidImageFilter.h.
typedef Superclass::OutputImageType itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::OutputImageType |
Some convenient typedefs.
Reimplemented from itk::ImageSource< TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 140 of file itkMultiResolutionPyramidImageFilter.h.
typedef SmartPointer< Self > itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::Pointer |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 119 of file itkMultiResolutionPyramidImageFilter.h.
typedef Array2D< unsigned int > itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::ScheduleType |
ScheduleType typedef support.
Definition at line 126 of file itkMultiResolutionPyramidImageFilter.h.
typedef MultiResolutionPyramidImageFilter itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::Self |
Standard class typedefs.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 117 of file itkMultiResolutionPyramidImageFilter.h.
typedef ImageToImageFilter< TInputImage, TOutputImage > itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::Superclass |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 118 of file itkMultiResolutionPyramidImageFilter.h.
itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::MultiResolutionPyramidImageFilter | ( | ) | [protected] |
End concept checking
itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::~MultiResolutionPyramidImageFilter | ( | ) | [inline, protected] |
End concept checking
Definition at line 224 of file itkMultiResolutionPyramidImageFilter.h.
itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::MultiResolutionPyramidImageFilter | ( | const Self & | ) | [private] |
virtual::itk::LightObject::Pointer itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::CreateAnother | ( | void | ) | const [virtual] |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::Object.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GenerateData | ( | ) | [protected, virtual] |
Generate the output data.
Reimplemented from itk::ImageSource< TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GenerateInputRequestedRegion | ( | ) | [virtual] |
MultiResolutionPyramidImageFilter requires a larger input requested region than the output requested regions to accomdate the shrinkage and smoothing operations. As such, MultiResolutionPyramidImageFilter needs to provide an implementation for GenerateInputRequestedRegion(). The original documentation of this method is below.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GenerateOutputInformation | ( | ) | [virtual] |
MultiResolutionPyramidImageFilter produces images which are of different resolution and different pixel spacing than its input image. As such, MultiResolutionPyramidImageFilter needs to provide an implementation for GenerateOutputInformation() in order to inform the pipeline execution model. The original documentation of this method is below.
Reimplemented from itk::ProcessObject.
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::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.
Reimplemented from itk::ProcessObject.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
virtual const double& itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GetMaximumError | ( | ) | [virtual] |
virtual const char* itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GetNameOfClass | ( | ) | const [virtual] |
Run-time type information (and related methods).
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
virtual unsigned int itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GetNumberOfLevels | ( | ) | const [virtual] |
Get the number of multi-resolution levels.
virtual const ScheduleType& itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GetSchedule | ( | ) | [virtual] |
Get the multi-resolution schedule.
const unsigned int* itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GetStartingShrinkFactors | ( | ) | const |
Get the starting shrink factors
virtual bool itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::GetUseShrinkImageFilter | ( | ) | const [virtual] |
static bool itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::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.
static Pointer itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::New | ( | ) | [static] |
Method for creation through the object factory.
Reimplemented from itk::Object.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::operator= | ( | const Self & | ) | [private] |
PushBackInput(), PushFronInput() in the public section force the input to be the type expected by an ImageToImageFilter. However, these methods end of "hiding" the versions from the superclass (ProcessObject) whose arguments are DataObjects. Here, we re-expose the versions from ProcessObject to avoid warnings about hiding methods from the superclass.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::PrintSelf | ( | std::ostream & | os, |
Indent | indent | ||
) | const [protected, virtual] |
End concept checking
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::SetMaximumError | ( | double | _arg | ) | [virtual] |
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::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.
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::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.
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::SetStartingShrinkFactors | ( | unsigned int | 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.
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::SetStartingShrinkFactors | ( | unsigned int * | factors | ) | [virtual] |
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::SetUseShrinkImageFilter | ( | bool | _arg | ) | [virtual] |
itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::typedef | ( | Concept::SameDimension< ImageDimension, OutputImageDimension > | ) |
Begin concept checking This class requires SameDimensionCheck in the form of ( Concept::SameDimension< ImageDimension, OutputImageDimension > )
itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::typedef | ( | Concept::HasNumericTraits< typename TOutputImage::PixelType > | ) |
This class requires OutputHasNumericTraitsCheck in the form of ( Concept::HasNumericTraits< typename TOutputImage::PixelType > )
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::UseShrinkImageFilterOff | ( | ) | [virtual] |
virtual void itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::UseShrinkImageFilterOn | ( | ) | [virtual] |
const unsigned int itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::ImageDimension = TInputImage::ImageDimension [static] |
ImageDimension enumeration.
Reimplemented in itk::RecursiveMultiResolutionPyramidImageFilter< TInputImage, TOutputImage >.
Definition at line 133 of file itkMultiResolutionPyramidImageFilter.h.
double itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::m_MaximumError [protected] |
Definition at line 231 of file itkMultiResolutionPyramidImageFilter.h.
unsigned int itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::m_NumberOfLevels [protected] |
Definition at line 233 of file itkMultiResolutionPyramidImageFilter.h.
ScheduleType itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::m_Schedule [protected] |
Definition at line 234 of file itkMultiResolutionPyramidImageFilter.h.
bool itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::m_UseShrinkImageFilter [protected] |
Definition at line 236 of file itkMultiResolutionPyramidImageFilter.h.
const unsigned int itk::MultiResolutionPyramidImageFilter< TInputImage, TOutputImage >::OutputImageDimension = TOutputImage::ImageDimension [static] |
ImageDimension enumeration.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Definition at line 135 of file itkMultiResolutionPyramidImageFilter.h.