OTB  9.0.0
Orfeo Toolbox
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | List of all members
otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation > Class Template Reference

#include <otbWaveletFilterBank.h>

+ Inheritance diagram for otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >:
+ Collaboration diagram for otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >:

Public Types

typedef itk::SmartPointer< const SelfConstPointer
 
typedef itk::SmartPointer< SelfPointer
 
typedef WaveletFilterBank Self
 
typedef itk::ImageToImageFilter< 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 ()
 

Protected Member Functions

 WaveletFilterBank ()
 
virtual ~WaveletFilterBank ()
 

Private Member Functions

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

Detailed Description

template<class TInputImage, class TOutputImage, class TWaveletOperator, Wavelet::WaveletDirection TDirectionOfTransformation>
class otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >

One level stationary wavelet transform.

Template specialization of FilterBank for inverse transformation.

Template specialization of FilterBank for forward transformation.

This implementation performs a low-pass / high-pass wavelet transformation of an image. The wavelet transformation is defined by a inner product (ie. convolution-like operation).

the inner operator are supposed to be defined through 1D filters. Then, the forward transformation yields $ 2^{\text{Dim}} $ output images, while the inverse transformation requires $ 2^{\text{Dim}} $ input image for one output.

In case of 1D, GetOutput(0) -> LowPass

           GetOutput(1) -> HighPass

In case of 2D, Line (Dim 1) Col (Dim 0)

           GetOutput(0) -> LowPass,      LowPass

           GetOutput(1) -> LowPass,      HighPass

           GetOutput(2) -> HighPass,     LowPass

           GetOutput(3) -> HighPass,     HighPass

In case of nD data, assume x_n=0 stands for LowPass and x_n=1 stands for HighPass at a give dimension n. Then

GetOutput( x_(n-1) << (n-1) + x_(n-2) << (n-2) + ... + x_1 << 1 + x_0 )

Dim (n-1)   Dim (n-2)   Dim (n-3)   ...   Dim 1  Dim 0

-> x_(n-1) x_(n-2) x_(n-3) x_1 x_0

And conversely in the inverse transformation.

Todo:
: At present version, there is not consideration on meta data information that can be transmitted from the input(s) to the output(s)...

The two choice (Wavelet::FORWARD/Wavelet::INVERSE) yield specific implementation of the templates (header redeclaration is given at bottom of otbWaveletFilterBank.h for the Wavelet::INVERSE case)

See also
WaveletOperator

This implementation performs a low-pass / high-pass wavelet transformation of an image. The wavelet transformation is defined by a inner product (ie. convolution-like operation).

The inner operator are supposed to be defined through 1D filters. Then, the forward transformation yields $ 2^{\text{Dim}} $ output images, while the inverse transformation requires $ 2^{\text{Dim}} $ input image for one output.

In case of 1D, GetOutput(0) -> LowPass

           GetOutput(1) -> HighPass

In case of 2D, Line (Dim 1) Col (Dim 0)

           GetOutput(0) -> LowPass,      LowPass

           GetOutput(1) -> LowPass,      HighPass

           GetOutput(2) -> HighPass,     LowPass

           GetOutput(3) -> HighPass,     HighPass

In case of nD data, assume x_n=0 stands for LowPass and x_n=1 stands for HighPass at a give dimension n. Then

GetOutput( x_(n-1) << (n-1) + x_(n-2) << (n-2) + ... + x_1 << 1 + x_0 )

Dim (n-1)   Dim (n-2)   Dim (n-3)   ...   Dim 1  Dim 0

-> x_(n-1) x_(n-2) x_(n-3) x_1 x_0

And conversely in the inverse transformation.

Todo:
: At present version, there is not consideration on meta data information that can be transmitted from the input(s) to the output(s)...
See also
WaveletOperator

This implementation performs a low-pass / high-pass wavelet transformation of an image. The wavelet transformation is defined by a inner product (ie. convolution-like operation).

The inner operator are supposed to be defined through 1D filters. Then, the forward transformation yields $ 2^{\text{Dim}} $ output images, while the inverse transformation requires $ 2^{\text{Dim}} $ input image for one output.

In case of 1D, GetOutput(0) -> LowPass

           GetOutput(1) -> HighPass

In case of 2D, Line (Dim 1) Col (Dim 0)

           GetOutput(0) -> LowPass,      LowPass

           GetOutput(1) -> LowPass,      HighPass

           GetOutput(2) -> HighPass,     LowPass

           GetOutput(3) -> HighPass,     HighPass

In case of nD data, assume x_n=0 stands for LowPass and x_n=1 stands for HighPass at a give dimension n. Then

GetOutput( x_(n-1) << (n-1) + x_(n-2) << (n-2) + ... + x_1 << 1 + x_0 )

Dim (n-1)   Dim (n-2)   Dim (n-3)   ...   Dim 1  Dim 0

-> x_(n-1) x_(n-2) x_(n-3) x_1 x_0

And conversely in the inverse transformation.

Todo:
: At present version, there is not consideration on meta data information that can be transmitted from the input(s) to the output(s)...
See also
WaveletOperator

Definition at line 87 of file otbWaveletFilterBank.h.

Member Typedef Documentation

◆ ConstPointer

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
typedef itk::SmartPointer<const Self> otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::ConstPointer

Definition at line 94 of file otbWaveletFilterBank.h.

◆ Pointer

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
typedef itk::SmartPointer<Self> otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::Pointer

Definition at line 93 of file otbWaveletFilterBank.h.

◆ Self

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
typedef WaveletFilterBank otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::Self

Standard typedefs

Definition at line 91 of file otbWaveletFilterBank.h.

◆ Superclass

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
typedef itk::ImageToImageFilter<TInputImage, TOutputImage> otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::Superclass

Definition at line 92 of file otbWaveletFilterBank.h.

Constructor & Destructor Documentation

◆ WaveletFilterBank() [1/2]

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::WaveletFilterBank ( )
protected

◆ ~WaveletFilterBank()

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
virtual otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::~WaveletFilterBank ( )
protectedvirtual

◆ WaveletFilterBank() [2/2]

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::WaveletFilterBank ( const Self )
private

Member Function Documentation

◆ CreateAnother()

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
virtual::itk::LightObject::Pointer otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::CreateAnother ( void  ) const

◆ GetNameOfClass()

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
virtual const char* otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::GetNameOfClass ( ) const
virtual

Creation through object factory macro

◆ New()

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
static Pointer otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::New ( )
static

Type macro

◆ operator=()

template<class TInputImage , class TOutputImage , class TWaveletOperator , Wavelet::WaveletDirection TDirectionOfTransformation>
void otb::WaveletFilterBank< TInputImage, TOutputImage, TWaveletOperator, TDirectionOfTransformation >::operator= ( const Self )
private

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