latest version v1.9 - last update 10 Apr 2010 |
This class implements dyadic wavelet-transform as quadrature mirror filters. More...
#include <ltiQmf.h>
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 |
qmf & | copy (const qmf &other) |
virtual functor * | clone () const |
const parameters & | getParameters () const |
const vector< point > & | getLastPartitioning () const |
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
lti::qmf::qmf | ( | ) |
default constructor
lti::qmf::qmf | ( | const parameters & | par | ) |
Constructor with parameters.
virtual lti::qmf::~qmf | ( | ) | [virtual] |
destructor
bool lti::qmf::apply | ( | channel & | srcdest | ) |
operates on the given parameter.
srcdest | channel with the source data. The result will be left here too. |
bool lti::qmf::apply | ( | vector< float > & | srcdest | ) |
operates on the given parameter.
srcdest | channel with the source data. The result will be left here too. |
virtual functor* lti::qmf::clone | ( | ) | const [virtual] |
returns a pointer to a clone of this functor.
Implements lti::functor.
copy data of "other" functor.
other | the functor to be copied |
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.
src | the original kernel, which should be a low-pass kernel. | |
hpk | the kernel where the resulting high-pass kernel will be left. |
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.