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

Base class for recursive convolution with a kernel. More...

#include <itkRecursiveSeparableImageFilter.h>

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

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef TInputImage::ConstPointer InputImageConstPointer
typedef TInputImage::Pointer InputImagePointer
typedef TInputImage InputImageType
typedef TInputImage::PixelType InputPixelType
typedef TOutputImage::RegionType OutputImageRegionType
typedef TOutputImage OutputImageType
typedef SmartPointer< SelfPointer
typedef NumericTraits
< InputPixelType >::RealType 
RealType
typedef NumericTraits
< InputPixelType >
::ScalarRealType 
ScalarRealType
typedef
RecursiveSeparableImageFilter 
Self
typedef ImageToImageFilter
< TInputImage, TOutputImage > 
Superclass

Public Member Functions

virtual unsigned int GetDirection () const
const TInputImage * GetInputImage (void)
virtual const char * GetNameOfClass () const
virtual void SetDirection (unsigned int _arg)
void SetInputImage (const TInputImage *)

Protected Member Functions

void BeforeThreadedGenerateData ()
void EnlargeOutputRequestedRegion (DataObject *output)
void FilterDataArray (RealType *outs, const RealType *data, RealType *scratch, unsigned int ln)
void PrintSelf (std::ostream &os, Indent indent) const
 RecursiveSeparableImageFilter ()
virtual void SetUp (ScalarRealType spacing)=0
unsigned int SplitRequestedRegion (unsigned int i, unsigned int num, OutputImageRegionType &splitRegion)
void ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId)
virtual ~RecursiveSeparableImageFilter ()

Protected Attributes

ScalarRealType m_BM1
ScalarRealType m_BM2
ScalarRealType m_BM3
ScalarRealType m_BM4
ScalarRealType m_BN1
ScalarRealType m_BN2
ScalarRealType m_BN3
ScalarRealType m_BN4
ScalarRealType m_D1
ScalarRealType m_D2
ScalarRealType m_D3
ScalarRealType m_D4
ScalarRealType m_M1
ScalarRealType m_M2
ScalarRealType m_M3
ScalarRealType m_M4
ScalarRealType m_N0
ScalarRealType m_N1
ScalarRealType m_N2
ScalarRealType m_N3

Private Member Functions

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

Private Attributes

unsigned int m_Direction

Detailed Description

template<typename TInputImage, typename TOutputImage = TInputImage>
class itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >

Base class for recursive convolution with a kernel.

RecursiveSeparableImageFilter is the base class for recursive filters that are applied in each dimension separately. If multi-component images are specified, the filtering operation works on each component independently.

This class implements the recursive filtering method proposed by R.Deriche in IEEE-PAMI Vol.12, No.1, January 1990, pp 78-87.

Details of the implementation are described in the technical report: R. Deriche, "Recursively Implementing The Gaussian and Its Derivatives", INRIA, 1993, ftp://ftp.inria.fr/INRIA/tech-reports/RR/RR-1893.ps.gz

Further improvements of the algorithm are described in: G. Farneback & C.-F. Westin, "On Implementation of Recursive Gaussian Filters", so far unpublished.

Definition at line 50 of file itkRecursiveSeparableImageFilter.h.


Member Typedef Documentation

template<typename TInputImage , typename TOutputImage = TInputImage>
typedef SmartPointer< const Self > itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::ConstPointer
template<typename TInputImage , typename TOutputImage = TInputImage>
typedef TInputImage::ConstPointer itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::InputImageConstPointer
template<typename TInputImage , typename TOutputImage = TInputImage>
typedef TInputImage::Pointer itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::InputImagePointer

Smart pointer typedef support.

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

Definition at line 61 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
typedef TInputImage itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::InputImageType

Type of the input image

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

Definition at line 79 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
typedef TInputImage::PixelType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::InputPixelType

Real type to be used in internal computations. RealType in general is templated over the pixel type. (For example for vector or tensor pixels, RealType is a vector or a tensor of doubles.) ScalarRealType is a type meant for scalars.

Definition at line 72 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
typedef TOutputImage::RegionType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::OutputImageRegionType

Superclass typedefs.

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

Definition at line 76 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
typedef TOutputImage itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::OutputImageType
template<typename TInputImage , typename TOutputImage = TInputImage>
typedef SmartPointer< Self > itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::Pointer
template<typename TInputImage , typename TOutputImage = TInputImage>
typedef NumericTraits< InputPixelType >::RealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::RealType
template<typename TInputImage , typename TOutputImage = TInputImage>
typedef NumericTraits< InputPixelType >::ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::ScalarRealType
template<typename TInputImage , typename TOutputImage = TInputImage>
typedef RecursiveSeparableImageFilter itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::Self
template<typename TInputImage , typename TOutputImage = TInputImage>
typedef ImageToImageFilter< TInputImage, TOutputImage > itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::Superclass

Constructor & Destructor Documentation

template<typename TInputImage , typename TOutputImage = TInputImage>
itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::RecursiveSeparableImageFilter ( ) [protected]
template<typename TInputImage , typename TOutputImage = TInputImage>
virtual itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::~RecursiveSeparableImageFilter ( ) [inline, protected, virtual]

Definition at line 98 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::RecursiveSeparableImageFilter ( const Self ) [private]

Member Function Documentation

template<typename TInputImage , typename TOutputImage = TInputImage>
void itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::BeforeThreadedGenerateData ( ) [protected, virtual]

GenerateData (apply) the filter.

Reimplemented from itk::ImageSource< TOutputImage >.

template<typename TInputImage , typename TOutputImage = TInputImage>
void itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::EnlargeOutputRequestedRegion ( DataObject output) [protected, virtual]

RecursiveSeparableImageFilter needs all of the input only in the "Direction" dimension. Therefore we enlarge the output's RequestedRegion to this. Then the superclass's GenerateInputRequestedRegion method will copy the output region to the input.

See also:
ImageToImageFilter::GenerateInputRequestedRegion()

Reimplemented from itk::ProcessObject.

template<typename TInputImage , typename TOutputImage = TInputImage>
void itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::FilterDataArray ( RealType outs,
const RealType data,
RealType scratch,
unsigned int  ln 
) [protected]

Apply the Recursive Filter to an array of data. This method is called for each line of the volume. Parameter "scratch" is a scratch area used for internal computations that is the same size as the parameters "outs" and "data". The scratch area must be allocated outside of this routine (this avoids memory allocation and deallocation in the inner loop of the overall algorithm.

template<typename TInputImage , typename TOutputImage = TInputImage>
virtual unsigned int itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::GetDirection ( ) const [virtual]

Get the direction in which the filter is to be applied.

template<typename TInputImage , typename TOutputImage = TInputImage>
const TInputImage* itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::GetInputImage ( void  )

Get Input Image.

template<typename TInputImage , typename TOutputImage = TInputImage>
virtual const char* itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::GetNameOfClass ( ) const [virtual]

Type macro that defines a name for this class.

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

Reimplemented in itk::RecursiveGaussianImageFilter< TInputImage, TOutputImage >.

template<typename TInputImage , typename TOutputImage = TInputImage>
void itk::RecursiveSeparableImageFilter< 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::InPlaceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::RecursiveGaussianImageFilter< TInputImage, TOutputImage >.

template<typename TInputImage , typename TOutputImage = TInputImage>
void itk::RecursiveSeparableImageFilter< 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::InPlaceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::RecursiveGaussianImageFilter< TInputImage, TOutputImage >.

template<typename TInputImage , typename TOutputImage = TInputImage>
virtual void itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::SetDirection ( unsigned int  _arg) [virtual]

Set the direction in which the filter is to be applied.

template<typename TInputImage , typename TOutputImage = TInputImage>
void itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::SetInputImage ( const TInputImage *  )

Set Input Image.

template<typename TInputImage , typename TOutputImage = TInputImage>
virtual void itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::SetUp ( ScalarRealType  spacing) [protected, pure virtual]

Set up the coefficients of the filter to approximate a specific kernel. Typically it can be used to approximate a Gaussian or one of its derivatives. Parameter is the spacing along the dimension to filter.

Implemented in itk::RecursiveGaussianImageFilter< TInputImage, TOutputImage >.

template<typename TInputImage , typename TOutputImage = TInputImage>
unsigned int itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::SplitRequestedRegion ( unsigned int  i,
unsigned int  num,
OutputImageRegionType splitRegion 
) [protected, virtual]

Split the output's RequestedRegion into "num" pieces, returning region "i" as "splitRegion". This method is called "num" times. The regions must not overlap. The method returns the number of pieces that the routine is capable of splitting the output RequestedRegion, i.e. return value is less than or equal to "num".

Reimplemented from itk::ImageSource< TOutputImage >.

template<typename TInputImage , typename TOutputImage = TInputImage>
void itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::ThreadedGenerateData ( const OutputImageRegionType outputRegionForThread,
ThreadIdType  threadId 
) [protected, virtual]

If an imaging filter can be implemented as a multithreaded algorithm, the filter will provide an implementation of ThreadedGenerateData(). This superclass will automatically split the output image into a number of pieces, spawn multiple threads, and call ThreadedGenerateData() in each thread. Prior to spawning threads, the BeforeThreadedGenerateData() method is called. After all the threads have completed, the AfterThreadedGenerateData() method is called. If an image processing filter cannot support threading, that filter should provide an implementation of the GenerateData() method instead of providing an implementation of ThreadedGenerateData(). If a filter provides a GenerateData() method as its implementation, then the filter is responsible for allocating the output data. If a filter provides a ThreadedGenerateData() method as its implementation, then the output memory will allocated automatically by this superclass. The ThreadedGenerateData() method should only produce the output specified by "outputThreadRegion" parameter. ThreadedGenerateData() cannot write to any other portion of the output image (as this is responsibility of a different thread).

See also:
GenerateData(), SplitRequestedRegion()

Reimplemented from itk::ImageSource< TOutputImage >.


Member Data Documentation

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_BM1 [protected]

Definition at line 161 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_BM2 [protected]

Definition at line 162 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_BM3 [protected]

Definition at line 163 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_BM4 [protected]

Definition at line 164 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_BN1 [protected]

Recursive coefficients to be used at the boundaries to simulate edge extension boundary conditions.

Definition at line 156 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_BN2 [protected]

Definition at line 157 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_BN3 [protected]

Definition at line 158 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_BN4 [protected]

Definition at line 159 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_D1 [protected]

Recursive coefficients that multiply previously computed values at the output. These are the same for the causal and anti-causal parts of the filter.

Definition at line 143 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_D2 [protected]

Definition at line 144 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_D3 [protected]

Definition at line 145 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_D4 [protected]

Definition at line 146 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
unsigned int itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_Direction [private]

Direction in which the filter is to be applied this should be in the range [0,ImageDimension-1].

Definition at line 171 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_M1 [protected]

Anti-causal coefficients that multiply the input data.

Definition at line 149 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_M2 [protected]

Definition at line 150 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_M3 [protected]

Definition at line 151 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_M4 [protected]

Definition at line 152 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_N0 [protected]

Causal coefficients that multiply the input data.

Definition at line 135 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_N1 [protected]

Definition at line 136 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_N2 [protected]

Definition at line 137 of file itkRecursiveSeparableImageFilter.h.

template<typename TInputImage , typename TOutputImage = TInputImage>
ScalarRealType itk::RecursiveSeparableImageFilter< TInputImage, TOutputImage >::m_N3 [protected]

Definition at line 138 of file itkRecursiveSeparableImageFilter.h.


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