Wavelet transform related functions specifically designed to be used as a tool for image/video compression. The core of the toolbox consists of one-dimensional (1D) wavelet analysis and synthesis functions. The separable decomposition of multidimensional signals is supported, building on the 1D analysis and synthesis functions. The special case of the 2D signal is given with separate functions, with option to perform either dyadic or wavelet packets decomposition. Several functions are dedicated to the computation of wavelet filter properties and their visualisation.
This version of the toolbox has been completely rewritten, and it still in process of finalisation.
You will notice that some wavelets are not completely defined, some are missing, and, most significantly, the convolution DWT implementation is not supported currently.
However, if needed or in a case someone is curious how it looked like, the old version can be downloaded from here:
Download Wavelet Toolbox v1.02
Functions
This toolbox consists of the following functions:
- bibo_gains - Computes BIBO(Bounded Input Bounded Output) gains for the specified wavelet
- decomp_packets2D - Wavelet packets decomposition (2D), entropy-based subband splitting
- draw_packets - Visualises the wavelet packets subband decomposition
- dwt_2D - Two-dimensional separable DWT
- dwt_dim - DWT in specific dimension of an n-dimensional matrix
- dwt_dyadic_decomp - Dyadic wavelet decomposition of a multidimensional signal
- dwt_lifting1D - DWT of a 1D signal in lifting implementation
- get_2Dwavelet - Draws a 2D wavelet, as given by a separable 2D wavelet transform
- get_scf - Computes (and plots) samples of the scale function
- get_submatrix - Extracts submatrix from a multidimensional matrix
- get_wf - Computes (and plots) samples of the wavelet function
- idwt_2D - Two-dimensional separable IDWT
- idwt_dim - IDWT in specific dimension of an n-dimensional matrix
- idwt_dyadic_recon - Dyadic wavelet reconstruction of a multidimensional signal
- idwt_lifting1D - IDWT of a 1D signal in lifting implementation
- load_wavelet - Loads coefficients of the specified wavelet filter
- recon_packets2D - Wavelet packets reconstruction (2D)
- subband - Selects a subband from a 2D wavelet coefficients array
- subband_dim - Computes the subband dimensions for a specified number of decompositions
- wavelet_char - Computes (and plots) frequency and phase charateristic of a wavelet
- wavelet_check - Lists properties of a wavelet and performs several tests
- wavelet_downscale - Simulates resizing performed by wavelet decomposition
Examples
wavelet_check:
>> wavelet_check('CDF_9x7');
Analysis (decomposition) filters (LP taps, HP taps) = (9,7)
LP taps = [0.03783 -0.02385 -0.11062 0.37740 0.85270 0.37740 -0.11062 -0.02385 0.03783]
HP taps = [0.06454 -0.04069 -0.41809 0.78849 -0.41809 -0.04069 0.06454]
Synthesis (reconstruction) filters (LP taps, HP taps) = (7,9)
LP taps = [-0.06454 -0.04069 0.41809 0.78849 0.41809 -0.04069 -0.06454]
HP taps = [0.03783 0.02385 -0.11062 -0.37740 0.85270 -0.37740 -0.11062 0.02385 0.03783]
Orthogonality (test) = biorthogonal (b)
HP/LP reconstructed error energy contribution = 1.058479
Odd samples/even samples reconstructed error energy = 1.221005
Orthonormality parameter = 0.015002
Vanishing moments (test) = (4,4)
Analysis LP :
DC gain = 1.414214
Nyquist gain = 0.000000
L1 norm = 1.952109
L2 norm = 1.020018
Time-frequency localisation (t, w) = 0.681938 (0.649418, 1.050075)
Analysis HP :
DC gain = 0.000000
Nyquist gain = 1.414214
L1 norm = 1.835127
L2 norm = 0.991440
Time-frequency localisation (t, w) = 0.607824 (0.667394, 0.910742)
Perfect reconstruction property check for matrix of size 32, Error = 0.000000
get_wf:
>> get_wf('CDF_9x7',5,'r','plot');
wavelet_char:
>> wavelet_char('CDF_9x7','Haar','dl','plot');

get_2Dwavelet:
>> get_2Dwavelet('LeGall_5x3',5,'d','l','l','plot');
load_wavelet, decomp_packets, draw_packets:
>> par=struct('N',5,'pdep',2,'wvf',load_wavelet('CDF_9x7'),'dec','greedy');
>> ent_par=struct('ent','shannon','opt',0);
>> [D,packet_stream,s,E]=decomp_packets2D('lena256.png',par,ent_par);
>> draw_packets(D,par.N,par.pdep,s,packet_stream);