OTB  9.0.0
Orfeo Toolbox
Public Types | Public Member Functions | Static Public Attributes | List of all members
otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator > Class Template Reference

#include <otbWaveletOperatorBase.h>

+ Inheritance diagram for otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >:
+ Collaboration diagram for otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >:

Public Types

typedef Wavelet::Wavelet MotherWaveletOperatorEnumType
 
typedef WaveletOperatorBase Self
 
typedef Superclass::SizeType SizeType
 
typedef itk::NeighborhoodOperator< TPixel, VDimension, TAllocator > Superclass
 

Public Member Functions

virtual const char * GetNameOfClass () const
 
 WaveletOperatorBase ()
 
 WaveletOperatorBase (const Self &other)
 
 ~WaveletOperatorBase () override
 

Static Public Attributes

static const MotherWaveletOperatorEnumType MotherWaveletOperator = TMotherWaveletOperator
 
typedef WaveletGenerator< TMotherWaveletOperator > WaveletGeneratorType
 
typedef WaveletGeneratorType::Pointer WaveletGeneratorPointerType
 
typedef Superclass::CoefficientVector CoefficientVector
 
typedef Superclass::PixelType PixelType
 
unsigned int m_UpSampleFactor
 
WaveletGeneratorPointerType m_WaveletGenerator
 
Selfoperator= (const Self &other)
 
unsigned int GetUpSampleFactor () const
 
void SetUpSampleFactor (unsigned int upSampleFactor)
 
virtual const char * GetWaveletName () const
 
void PrintSelf (std::ostream &os, itk::Indent i) const override
 
void UpSamplingCoefficients (CoefficientVector &coeff)
 
void RevertFilter (CoefficientVector &coeff)
 
void GenerateInverseHighPassFilterFromLowPassFilter (CoefficientVector &coeff)
 
void GenerateInverseLowPassFilterFromHighPassFilter (CoefficientVector &coeff)
 
void ReduceFilterLength (CoefficientVector &coeff)
 
void Fill (const CoefficientVector &coeff) override
 

Detailed Description

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel, unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
class otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >

A NeighborhoodOperator wavelet base class.

This class is the mother class for any wavelet operator that requires "a-trou" approach for shift-invariant wavelet transform. This class has to be derived, it cannot be used directly since GenerateCoefficients() method is still pure virtual.

Any wavelet operator that inherits from this WaveletOperatorBase is to be used as a NeighborhoodOperator that should be applied to a NeighborhoodIterator using the NeighborhoodInnerProduct method.

It is assumed that any wavelet definition is directional.

Set the level of up-sampling though SetUpSampleFactor() before calling CreateDirectional(). Each class that inherits from WaveletOperatorBase has to re-implement GenerateCoefficients().

The name of the wavelet is defined here but left pure virtual. It is defined with the LowPass and HighPass inheritance.

See also
WaveletLowPassOperator
WaveletHighPassOperator
NeighborhoodOperator
Neighborhood

Definition at line 76 of file otbWaveletOperatorBase.h.

Member Typedef Documentation

◆ CoefficientVector

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
typedef Superclass::CoefficientVector otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::CoefficientVector
protected

Typedef support for coefficient vector type. Necessary to work around compiler bug on VC++.

Definition at line 153 of file otbWaveletOperatorBase.h.

◆ MotherWaveletOperatorEnumType

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
typedef Wavelet::Wavelet otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::MotherWaveletOperatorEnumType

Definition at line 87 of file otbWaveletOperatorBase.h.

◆ PixelType

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
typedef Superclass::PixelType otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::PixelType
protected

Typedef support for coefficient vector type. Necessary to work around compiler bug on VC++.

Definition at line 154 of file otbWaveletOperatorBase.h.

◆ Self

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
typedef WaveletOperatorBase otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::Self

Standard typedefs

Definition at line 81 of file otbWaveletOperatorBase.h.

◆ SizeType

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
typedef Superclass::SizeType otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::SizeType

Definition at line 84 of file otbWaveletOperatorBase.h.

◆ Superclass

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
typedef itk::NeighborhoodOperator<TPixel, VDimension, TAllocator> otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::Superclass

Definition at line 82 of file otbWaveletOperatorBase.h.

◆ WaveletGeneratorPointerType

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
typedef WaveletGeneratorType::Pointer otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::WaveletGeneratorPointerType
protected

Typedef support for coefficient vector type. Necessary to work around compiler bug on VC++.

Definition at line 147 of file otbWaveletOperatorBase.h.

◆ WaveletGeneratorType

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
typedef WaveletGenerator<TMotherWaveletOperator> otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::WaveletGeneratorType
protected

Typedef support for coefficient vector type. Necessary to work around compiler bug on VC++.

Definition at line 146 of file otbWaveletOperatorBase.h.

Constructor & Destructor Documentation

◆ WaveletOperatorBase() [1/2]

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::WaveletOperatorBase ( )
inline

Construction

Definition at line 91 of file otbWaveletOperatorBase.h.

◆ WaveletOperatorBase() [2/2]

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::WaveletOperatorBase ( const Self other)
inline

Construction by copy

Definition at line 97 of file otbWaveletOperatorBase.h.

◆ ~WaveletOperatorBase()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::~WaveletOperatorBase ( )
inlineoverride

Definition at line 103 of file otbWaveletOperatorBase.h.

Member Function Documentation

◆ Fill()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
void otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::Fill ( const CoefficientVector coeff)
inlineoverrideprotected

Arranges coefficients spatially in the memory buffer.

Definition at line 193 of file otbWaveletOperatorBase.h.

◆ GenerateInverseHighPassFilterFromLowPassFilter()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator >
void otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::GenerateInverseHighPassFilterFromLowPassFilter ( CoefficientVector coeff)
protected

Performs the definition of high pass filter in an orthogonal framework It follows conjugate quadrature filter (CQF) of the chapter 5 of "Ten Lecture on Wavelets", of Ingrid Daubechies, Society for Industrial and Applied Mathematics, 1992.

It defines filter coefficients as $ G(z) = z H(-z^{-1}) $. According to Daubechies'notation, it concerns the synthesis (Inverse) part of the filter banc.

Definition at line 86 of file otbWaveletOperatorBase.hxx.

◆ GenerateInverseLowPassFilterFromHighPassFilter()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator >
void otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::GenerateInverseLowPassFilterFromHighPassFilter ( CoefficientVector coeff)
protected

Performs the definition of low pass filter in the reconstruction step of the conjugate quadrature filter (CQF) framework.

It defines filter coefficients as $ {\tilde H}(z) = G(-z) $.

Definition at line 112 of file otbWaveletOperatorBase.hxx.

◆ GetNameOfClass()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
virtual const char* otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::GetNameOfClass ( ) const
virtual

◆ GetUpSampleFactor()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
unsigned int otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::GetUpSampleFactor ( ) const
inline

◆ GetWaveletName()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
virtual const char* otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::GetWaveletName ( ) const
inlinevirtual

Get the name of the wavelet when necessary

Definition at line 135 of file otbWaveletOperatorBase.h.

◆ operator=()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
Self& otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::operator= ( const Self other)
inline

Assignment operator

Definition at line 108 of file otbWaveletOperatorBase.h.

◆ PrintSelf()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator >
void otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::PrintSelf ( std::ostream &  os,
itk::Indent  i 
) const
overrideprotected

Prints some debugging information

Definition at line 34 of file otbWaveletOperatorBase.hxx.

◆ ReduceFilterLength()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator >
void otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::ReduceFilterLength ( CoefficientVector coeff)
protected

Reduce extra zeros on filters

Definition at line 139 of file otbWaveletOperatorBase.hxx.

◆ RevertFilter()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator >
void otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::RevertFilter ( CoefficientVector coeff)
protected

Performs filter reversion, ie. $ H(z^{-1}) $.

Definition at line 69 of file otbWaveletOperatorBase.hxx.

◆ SetUpSampleFactor()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
void otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::SetUpSampleFactor ( unsigned int  upSampleFactor)
inline

Set the level of up sampling of the filter

Definition at line 127 of file otbWaveletOperatorBase.h.

◆ UpSamplingCoefficients()

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator >
void otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::UpSamplingCoefficients ( CoefficientVector coeff)
protected

Perform the "a-trou" algorithm for shift-invariant transformation. It transforms the filter $ H(z) $ into $ H(z^2) $.

Definition at line 48 of file otbWaveletOperatorBase.hxx.

Member Data Documentation

◆ m_UpSampleFactor

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
unsigned int otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::m_UpSampleFactor
protected

Typedef support for coefficient vector type. Necessary to work around compiler bug on VC++.

Definition at line 278 of file otbWaveletOperatorBase.h.

◆ m_WaveletGenerator

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
WaveletGeneratorPointerType otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::m_WaveletGenerator
protected

Typedef support for coefficient vector type. Necessary to work around compiler bug on VC++.

Definition at line 279 of file otbWaveletOperatorBase.h.

◆ MotherWaveletOperator

template<Wavelet::Wavelet TMotherWaveletOperator, class TPixel , unsigned int VDimension, class TAllocator = itk::NeighborhoodAllocator<TPixel>>
const MotherWaveletOperatorEnumType otb::WaveletOperatorBase< TMotherWaveletOperator, TPixel, VDimension, TAllocator >::MotherWaveletOperator = TMotherWaveletOperator
static

Definition at line 88 of file otbWaveletOperatorBase.h.


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