LTI-Lib latest version v1.9 - last update 10 Apr 2010

lti::qmf Class Reference

This class implements dyadic wavelet-transform as quadrature mirror filters. More...

#include <ltiQmf.h>

Inheritance diagram for lti::qmf:
Inheritance graph
[legend]
Collaboration diagram for lti::qmf:
Collaboration graph
[legend]

List of all members.

Classes

class  parameters
 the parameters for the class qmf More...

Public Member Functions

 qmf ()
 qmf (const parameters &par)
 qmf (const qmf &other)
virtual ~qmf ()
virtual const char * getTypeName () const
bool apply (vector< float > &srcdest)
bool apply (const vector< float > &src, vector< float > &dest)
bool apply (channel &srcdest)
bool apply (const channel &src, channel &dest)
void generateHighPassKernel (const kernel1D< float > &src, kernel1D< float > &hpk) const
qmfcopy (const qmf &other)
virtual functorclone () const
const parametersgetParameters () const
const vector< point > & getLastPartitioning () const

Detailed Description

This class implements dyadic wavelet-transform as quadrature mirror filters.

The original paper which describes this method is: S. G. Mallat, "A theory for multiresolution signal decomposition: The wavelet representation", In: IEEE Transactions on Pattern Analysis and Machine Intelligence, 11(7), 1989, pp. 674-693.

It can be used with separable filters only, and that's why only 1D kernels are allowed in the parameters class. (see lti::haarKernel, lti::tap9Symmetric, lti::daubechies16Kernel, lti::battleLemarieKernel)

Due to the extreme high dynamic in the resulting channels, this only makes sense to be applied on lti::channel's The reason for this class to be a lti::filter and not a lti::transform is due to the fact that this functor is sort of special convolution, and it shares the same parameters that all the other filters, particularly the lti::modifier::parameters::boundaryType is used. For the inverse transformation see lti::qmfInverse


Constructor & Destructor Documentation

lti::qmf::qmf (  ) 

default constructor

lti::qmf::qmf ( const parameters par  ) 

Constructor with parameters.

lti::qmf::qmf ( const qmf other  ) 

copy constructor

Parameters:
other the object to be copied
virtual lti::qmf::~qmf (  )  [virtual]

destructor


Member Function Documentation

bool lti::qmf::apply ( const channel src,
channel dest 
)

operates on a copy of the given parameters.

Parameters:
src channel with the source data.
dest channel where the result will be left.
Returns:
true if successful, false otherwise.
bool lti::qmf::apply ( channel srcdest  ) 

operates on the given parameter.

Parameters:
srcdest channel with the source data. The result will be left here too.
Returns:
true if successful, false otherwise.
bool lti::qmf::apply ( const vector< float > &  src,
vector< float > &  dest 
)

operates on a copy of the given parameters.

Parameters:
src vector with the source data.
dest vector where the result will be left.
Returns:
true if successful, false otherwise.
bool lti::qmf::apply ( vector< float > &  srcdest  ) 

operates on the given parameter.

Parameters:
srcdest channel with the source data. The result will be left here too.
Returns:
true if successful, false otherwise.
virtual functor* lti::qmf::clone (  )  const [virtual]

returns a pointer to a clone of this functor.

Implements lti::functor.

qmf& lti::qmf::copy ( const qmf other  ) 

copy data of "other" functor.

Parameters:
other the functor to be copied
Returns:
a reference to this functor object

Reimplemented from lti::functor.

void lti::qmf::generateHighPassKernel ( const kernel1D< float > &  src,
kernel1D< float > &  hpk 
) const

generate the appropriate high-pass kernel which correponds to the low-pass kernel given as argument.

Please note that a low-pass KERNEL is expected an NOT the corresponding wavelet coefficients.

Parameters:
src the original kernel, which should be a low-pass kernel.
hpk the kernel where the resulting high-pass kernel will be left.
const vector<point>& lti::qmf::getLastPartitioning (  )  const

returns a vector of points with the bottom-left coordinates of each band.

The first element of the vector will correspond to the last valid indices of the original vector/image. The second one will be the first one divided by two, and so on. If the last apply was made for vectors, the 'y' component of the points will be zero.

const parameters& lti::qmf::getParameters (  )  const

returns used parameters

Reimplemented from lti::modifier.

virtual const char* lti::qmf::getTypeName (  )  const [virtual]

returns the name of this type ("qmf")

Reimplemented from lti::modifier.


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

Generated on Sat Apr 10 15:27:44 2010 for LTI-Lib by Doxygen 1.6.1