SegDTWT

The abbreviation SegDWT (or SegWT, SegDTWT) covers the set the of algorithms of so-called segmentwise wavelet transform (or segmented wavelet transform) of discrete-time signals. These algorithms allow us to compute exact wavelet coefficients of a signal segmentwise, i.e. block-by-block. For one-dimensional signals, the natural benefit of such an approach is, for example, the possibility to process the signal in real time (as it comes in the course of time). In two dimensions it might mean that the wavelet coefficients of the image can be obtained via parallel computations.
The methods are universal from the viewpoints of

Publications related to the method and algorithms (most of them downloadable from section Publications).

  1. PRŮŠA, Z.: Segmentwise Discrete Wavelet Transform. Dissertation thesis, Brno University of Technology, 2012. Software and data (250 MB), see description on p. 103.
  2. RAJMIC, P.; PRŮŠA, Z.; KONCZI, R.: VST Plugin Module Performing Wavelet Transform In Real-time. In Proceedings of the 15th International Conference on Digital Audio Effects DAFx12. 2012.
  3. PRŮŠA, Z.: Multidimensional segmentwise wavelet transform: Ph.D. thesis. Brno university of technology, Brno, 2012. In preparation.
  4. PRŮŠA, Z.; RAJMIC, P. Real-Time lifting wavelet transform algorithm. Elektrorevue - Internet journal, 2011, 3, p. 53-59. ISSN: 1213-1539.
  5. PRŮŠA, Z.; RAJMIC, P. Parallel Implementation of 2D Forward Discrete Wavelet Transform on multicore CPUs. Elektrorevue - Internet journal, 2010, roč. 2010, 112, p. 1-7. ISSN: 1213-1539.
  6. RAJMIC, P. Algorithms for Segmentwise Computation of Forward and Inverse Discrete- time Wavelet Transform. Journal of Concrete and Applicable Mathematics, 2010, 8, no. 3, p. 1-15. ISSN: 1548- 5390.

SegDWT for one-dimensional signals

We can divide the algorithms into two branches accordign to the application:

Block diagrams of the algorithms: forward "off-line" transform, inverse "off-line" transform, real-time transform.

Implementation in Matlab

Implementation in C++

Programs for C++ represent, in fact, rewriting of the algorithms from Matlab:

Plug-in screenshot – graphical user interface of the module. Left part from up to bottom – Gain controls the overall volume, Wavelet allows for choosing the wavelet filter, Depth defines the depth of decomposition, Process chooses the processing of wavelet coefficients.

SegLWT for one-dimensional signals

Lifting scheme is the polyphase representation of the wavelet filter bank, and it has several advantages. The principle of obtaining the coefficients is, however, different (and more complicated) from the usual algorithm, and this requires new approach to the segmented computation. This is why a special abbreviation, SegLWT (segmented lifling wavelet transform) was introduced.

Implementation in Matlab

MATLAB source codes for SegLWT. (Author Z. Průša)

SegDWT for two-dimensional signals

These algorithms can serve in cases when the wavelet transform of the image has to (or simply could) be computed segmentwise (i.e. block after block), so that no blocking artifacts would appear. We usually know the image beforehand so this opens a possibility to make the computation in parallel on multiple cores/processors/stations. The blocks are of arbitrary size in our approach.

Implementation in C++ using Intel TBB

For the purposes of parallelization the Intel Threading Building Blocks library was utilized. The algorithm is based on the separability of the wavelet transform. The larger is the image processed, the more effectivity the parallelization can bring. The archive containing the programs and a paper with description is downloadable from here. (Author Z. Průša)

SegDWT for n-dimensional signals

It is possible to use SegDWT for signals of arbitrary dimension, due to the separability property of DWT. See thesis of Zdeněk Průša and related data and programs.

Remarks

All programs are published under the terms of the GNU General Public Licence.

Thanks to the Czech Science Foundation for funding this research (grant No. 102/06/P407).