NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
Public Types | Public Member Functions | Protected Member Functions | List of all members
itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions > Class Template Referenceabstract

Abstract base class that takes a vector field as input and smoothes it. More...

Inheritance diagram for itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >:
Inheritance graph
[legend]
Collaboration diagram for itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >:
Collaboration graph
[legend]

Public Types

typedef SmoothVectorFieldFilter Self
 
typedef ImageToImageFilter
< Image< Vector< TScalarType,
NumberVectorDimensions >
, NumberImageDimensions >
, Image< Vector< TScalarType,
NumberVectorDimensions >
, NumberImageDimensions > > 
Superclass
 
typedef SmartPointer< SelfPointer
 
typedef SmartPointer< const SelfConstPointer
 
typedef TScalarType OutputDataType
 
typedef Vector< OutputDataType,
NumberVectorDimensions > 
OutputPixelType
 
typedef Image< OutputPixelType,
NumberImageDimensions > 
OutputImageType
 
typedef OutputImageType::Pointer OutputImagePointer
 
typedef Superclass::InputImageType InputImageType
 
typedef InputImageType::Pointer InputImagePointer
 
typedef
Superclass::InputImageRegionType 
RegionType
 
typedef NeighborhoodOperator
< TScalarType,
NumberImageDimensions > 
NeighborhoodOperatorType
 
typedef
VectorNeighborhoodOperatorImageFilter
< InputImageType,
OutputImageType
SmootherFilterType
 
typedef SmootherFilterType::Pointer SmootherFilterPointer
 

Public Member Functions

virtual const char * GetClassName () const
 
 itkStaticConstMacro (ImageDimensions, unsigned int, NumberImageDimensions)
 
 itkStaticConstMacro (VectorDimensions, unsigned int, NumberVectorDimensions)
 
void WriteVectorImage (std::string filename)
 

Protected Member Functions

 SmoothVectorFieldFilter ()
 
 ~SmoothVectorFieldFilter ()
 
virtual void GenerateInputRequestedRegion () throw (InvalidRequestedRegionError)
 
virtual void EnlargeOutputRequestedRegion (DataObject *output)
 
virtual void GenerateData ()
 
virtual NeighborhoodOperatorTypeCreateOperator (int dimension)=0
 

Detailed Description

template<class TScalarType, unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
class itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >

Abstract base class that takes a vector field as input and smoothes it.

As of 16/01/2010, I have extended this to cope with time varying vector fields. The previous version of this class, only did 2D or 3D. This will do N/M-dimensional. However, be aware that for example, you can have N=2 dimensional vectors, and M=3 dimensional images. So, if N != M, then do you really want to try smoothing? It might be better to set the sigma to zero if you don't wan't smoothing in all dimensions.

As of 16/01/2010, also note, that we now extend InPlaceImageFilter. This is because with time varying velocity fields, on decent size images, you need a lot of memory. So, rather than have an input/output buffer, we use one buffer. But this filter defaults to OFF to minimise impact on other programs that are not using time varying velocity fields. Obviously, you need some memory to perform the smoothing, so each subclass should clear references as soon as its done.

Member Typedef Documentation

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef SmartPointer<const Self> itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::ConstPointer
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef InputImageType::Pointer itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::InputImagePointer
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef Superclass::InputImageType itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::InputImageType
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef NeighborhoodOperator<TScalarType, NumberImageDimensions> itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::NeighborhoodOperatorType
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef TScalarType itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::OutputDataType

Standard typedefs.

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef OutputImageType::Pointer itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::OutputImagePointer
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef Image< OutputPixelType, NumberImageDimensions > itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::OutputImageType
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef Vector< OutputDataType, NumberVectorDimensions > itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::OutputPixelType
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef SmartPointer<Self> itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::Pointer
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef Superclass::InputImageRegionType itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::RegionType
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef SmoothVectorFieldFilter itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::Self

Standard "Self" typedef.

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef SmootherFilterType::Pointer itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::SmootherFilterPointer
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef VectorNeighborhoodOperatorImageFilter<InputImageType, OutputImageType> itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::SmootherFilterType
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
typedef ImageToImageFilter< Image< Vector< TScalarType, NumberVectorDimensions>, NumberImageDimensions>, Image< Vector< TScalarType, NumberVectorDimensions>, NumberImageDimensions> > itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::Superclass

Constructor & Destructor Documentation

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::SmoothVectorFieldFilter ( )
protected
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::~SmoothVectorFieldFilter ( )
inlineprotected

Member Function Documentation

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
virtual NeighborhoodOperatorType* itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::CreateOperator ( int  dimension)
protectedpure virtual
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
virtual void itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::EnlargeOutputRequestedRegion ( DataObject *  output)
protectedvirtual

Tell the pipeline the correct size (all of the image).

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
virtual void itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::GenerateData ( )
protectedvirtual

The main filter method. Note, single threaded. This is OK, as this filter is a composite filter, combining filters internally, which are multi-threaded. This implements TemplateMethod [2], running seperable filters in each direction, x, y, z, t (etc.) only calling the subclass for GetOperator.

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
virtual void itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::GenerateInputRequestedRegion ( )
throw (InvalidRequestedRegionError
)
protectedvirtual

Make sure we request the right size (all of the image).

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
virtual const char* itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::GetClassName ( ) const
virtual
template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::itkStaticConstMacro ( ImageDimensions  ,
unsigned  int,
NumberImageDimensions   
)

Get the number of image dimensions we are working in.

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::itkStaticConstMacro ( VectorDimensions  ,
unsigned  int,
NumberVectorDimensions   
)

Get the number of vector dimensions we are working in.

template<class TScalarType , unsigned int NumberImageDimensions = 3, unsigned int NumberVectorDimensions = NumberImageDimensions>
void itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::WriteVectorImage ( std::string  filename)

Writes image. Just calls ITK writers, so if they don't support it, expect an Exception.


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