NifTK
16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
|
Abstract base class that takes a vector field as input and smoothes it. More...
Public Types | |
typedef SmoothVectorFieldFilter | Self |
typedef ImageToImageFilter < Image< Vector< TScalarType, NumberVectorDimensions > , NumberImageDimensions > , Image< Vector< TScalarType, NumberVectorDimensions > , NumberImageDimensions > > | Superclass |
typedef SmartPointer< Self > | Pointer |
typedef SmartPointer< const Self > | ConstPointer |
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 NeighborhoodOperatorType * | CreateOperator (int dimension)=0 |
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.
typedef SmartPointer<const Self> itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::ConstPointer |
typedef InputImageType::Pointer itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::InputImagePointer |
typedef Superclass::InputImageType itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::InputImageType |
typedef NeighborhoodOperator<TScalarType, NumberImageDimensions> itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::NeighborhoodOperatorType |
typedef TScalarType itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::OutputDataType |
Standard typedefs.
typedef OutputImageType::Pointer itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::OutputImagePointer |
typedef Image< OutputPixelType, NumberImageDimensions > itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::OutputImageType |
typedef Vector< OutputDataType, NumberVectorDimensions > itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::OutputPixelType |
typedef SmartPointer<Self> itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::Pointer |
typedef Superclass::InputImageRegionType itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::RegionType |
typedef SmoothVectorFieldFilter itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::Self |
Standard "Self" typedef.
typedef SmootherFilterType::Pointer itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::SmootherFilterPointer |
typedef VectorNeighborhoodOperatorImageFilter<InputImageType, OutputImageType> itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::SmootherFilterType |
typedef ImageToImageFilter< Image< Vector< TScalarType, NumberVectorDimensions>, NumberImageDimensions>, Image< Vector< TScalarType, NumberVectorDimensions>, NumberImageDimensions> > itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::Superclass |
|
protected |
|
inlineprotected |
|
protectedpure virtual |
Get the operator from the subclass. The subclass creates it new, and this class deletes it, once used.
Implemented in itk::BSplineSmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >, and itk::GaussianSmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >.
|
protectedvirtual |
Tell the pipeline the correct size (all of the image).
|
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.
|
protectedvirtual |
Make sure we request the right size (all of the image).
|
virtual |
Run-time type information (and related methods).
Reimplemented in itk::BSplineSmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >, and itk::GaussianSmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >.
itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::itkStaticConstMacro | ( | ImageDimensions | , |
unsigned | int, | ||
NumberImageDimensions | |||
) |
Get the number of image dimensions we are working in.
itk::SmoothVectorFieldFilter< TScalarType, NumberImageDimensions, NumberVectorDimensions >::itkStaticConstMacro | ( | VectorDimensions | , |
unsigned | int, | ||
NumberVectorDimensions | |||
) |
Get the number of vector dimensions we are working in.
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.