ITK  4.0.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions
itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage > Class Template Reference

Calculate normalized cross correlation using FFTs. More...

#include <itkFFTNormalizedCorrelationImageFilter.h>

Inheritance diagram for itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >:
Collaboration diagram for itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >:

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef
InputImageType::ConstPointer 
InputImageConstPointer
typedef InputImageType::Pointer InputImagePointer
typedef TInputImage InputImageType
typedef InputImageType::RegionType InputRegionType
typedef InputImageType::SizeType InputSizeType
typedef OutputImageType::Pointer OutputImagePointer
typedef TOutputImage OutputImageType
typedef OutputImageType::PixelType OutputPixelType
typedef SmartPointer< SelfPointer
typedef
FFTNormalizedCorrelationImageFilter 
Self
typedef
MaskedFFTNormalizedCorrelationImageFilter
< TInputImage, TOutputImage > 
Superclass

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual const char * GetNameOfClass () const

Static Public Member Functions

static Pointer New ()

Static Public Attributes

static const unsigned int ImageDimension = TOutputImage::ImageDimension

Protected Member Functions

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

Private Member Functions

 FFTNormalizedCorrelationImageFilter (const Self &)
void operator= (const Self &)

Detailed Description

template<class TInputImage, class TOutputImage>
class itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >

Calculate normalized cross correlation using FFTs.

This filter calculates the normalized cross correlation (NCC) of two images using FFTs instead of spatial correlation. It is much faster than spatial correlation for reasonably large structuring elements. This filter is a subclass of the more general MaskedFFTNormalizedCorrelationImageFilter and operates by essentially setting the masks in that algorithm to images of ones. As described in detail in the references below, there is no computational overhead to utilizing the more general masked algorithm because the FFTs of the images of ones are still necessary for the computations.

Inputs: Two images are required as inputs, fixedImage and movingImage. In the context of correlation, inputs are often defined as: "image" and "template". In this filter, the fixedImage plays the role of the image, and the movingImage plays the role of the template. However, this filter is capable of correlating any two images and is not restricted to small movingImages (templates).

Optional parameters: The RequiredNumberOfOverlappingVoxels enables the user to specify how many voxels of the two images must overlap; any location in the correlation map that results from fewer than this number of voxels will be set to zero. Larger values zero-out pixels on a larger border around the correlation image. Thus, larger values remove less stable computations but also limit the capture range. If RequiredNumberOfOverlappingVoxels is set to 0, the default, no zeroing will take place.

Image size: fixedImage and movingImage need not be the same size. Furthermore, whereas some algorithms require that the "template" be smaller than the "image" because of errors in the regions where the two are not fully overlapping, this filter has no such restriction.

Image spacing: Since the computations are done in the pixel domain, all input images must have the same spacing.

Outputs; The output is an image of RealPixelType that is the NCC of the two images and its values range from -1.0 to 1.0. The size of this NCC image is, by definition, size(fixedImage) + size(movingImage) - 1.

Example filter usage:

 typedef itk::FFTNormalizedCorrelationImageFilter< ShortImageType, DoubleImageType > FilterType;
 FilterType::Pointer filter = FilterType::New();
 filter->SetFixedImage( fixedImage );
 filter->SetMovingImage( movingImage );
 filter->SetRequiredNumberOfOverlappingVoxels(20);
 filter->Update();
Warning:
The pixel type of the output image must be of real type (float or double). ConceptChecking is used to enforce the output pixel type. You will get a compilation error if the pixel type of the output image is not float or double.

References: 1) D. Padfield. "Masked object registration in the Fourier domain." Transactions on Image Processing. 2) D. Padfield. "Masked FFT registration". In Proc. Computer Vision and Pattern Recognition, 2010.

Author:
: Dirk Padfield, GE Global Research, padfield@research.ge.com

Definition at line 99 of file itkFFTNormalizedCorrelationImageFilter.h.


Member Typedef Documentation

template<class TInputImage , class TOutputImage >
typedef SmartPointer<const Self> itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::ConstPointer
template<class TInputImage , class TOutputImage >
typedef InputImageType::ConstPointer itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::InputImageConstPointer
template<class TInputImage , class TOutputImage >
typedef InputImageType::Pointer itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::InputImagePointer
template<class TInputImage , class TOutputImage >
typedef TInputImage itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::InputImageType

Extract some information from the image types.

Reimplemented from itk::MaskedFFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >.

Definition at line 121 of file itkFFTNormalizedCorrelationImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef InputImageType::RegionType itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::InputRegionType
template<class TInputImage , class TOutputImage >
typedef InputImageType::SizeType itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::InputSizeType
template<class TInputImage , class TOutputImage >
typedef OutputImageType::Pointer itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::OutputImagePointer
template<class TInputImage , class TOutputImage >
typedef TOutputImage itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::OutputImageType
template<class TInputImage , class TOutputImage >
typedef OutputImageType::PixelType itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::OutputPixelType
template<class TInputImage , class TOutputImage >
typedef SmartPointer<Self> itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::Pointer
template<class TInputImage , class TOutputImage >
typedef FFTNormalizedCorrelationImageFilter itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::Self
template<class TInputImage , class TOutputImage >
typedef MaskedFFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage > itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::Superclass

Constructor & Destructor Documentation

template<class TInputImage , class TOutputImage >
itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::FFTNormalizedCorrelationImageFilter ( ) [inline, protected]

Definition at line 131 of file itkFFTNormalizedCorrelationImageFilter.h.

template<class TInputImage , class TOutputImage >
virtual itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::~FFTNormalizedCorrelationImageFilter ( ) [inline, protected, virtual]

Definition at line 132 of file itkFFTNormalizedCorrelationImageFilter.h.

template<class TInputImage , class TOutputImage >
itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::FFTNormalizedCorrelationImageFilter ( const Self ) [private]

Member Function Documentation

template<class TInputImage , class TOutputImage >
virtual::itk::LightObject::Pointer itk::FFTNormalizedCorrelationImageFilter< 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::MaskedFFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
void itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::GenerateData ( ) [protected, virtual]
template<class TInputImage , class TOutputImage >
virtual const char* itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::GetNameOfClass ( ) const [virtual]

Run-time type information (and related methods).

Reimplemented from itk::MaskedFFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
static Pointer itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::New ( ) [static]

Method for creation through the object factory.

Reimplemented from itk::MaskedFFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
void itk::FFTNormalizedCorrelationImageFilter< 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::MaskedFFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
void itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected, virtual]

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::MaskedFFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >.


Member Data Documentation

template<class TInputImage , class TOutputImage >
const unsigned int itk::FFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >::ImageDimension = TOutputImage::ImageDimension [static]

Extract some information from the image types. Dimensionality of the two images is assumed to be the same.

Reimplemented from itk::MaskedFFTNormalizedCorrelationImageFilter< TInputImage, TOutputImage >.

Definition at line 118 of file itkFFTNormalizedCorrelationImageFilter.h.


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