2-D lifting wavelet transform

Self-contained 2-D image decomposition and reconstruction based on lifting wavelet algorithm
7.6K Downloads
Updated 8 Aug 2006

No License

WAVELIFT: Multi-level discrete two-dimension wavelet transform based on lifting method.

c = wavelift(x, nlevel, wname) performs the follows according to the
value of nlevel:
nlevel > 0: decomposes 2-dimension matrix x up to nlevel level;
nlevel < 0: does the inverse transform to nlevel level;
nlevel = 0: sets c equal to x;

wname is name of wavelet used for DWT or IDWT. It can be omitted.
If so, WAVELIFT use the default Cohen-Daubechies-Feauveau (CDF) 9/7
wavelet, which is the name 'cdf97'.Currently, WAVELIFT only support two kind of wavelets, i.e. cdf97 and spline 5/3 with the name 'spl53'.
However, aided with the organized lifting structure illustrated below, it is adaptive to other specific lifting realizations. The only thing needed in most cases is only to modify the structure L and the mode to indicate lossy or lossless compression.

WAVELIFT call another function COLWAVELIFT to perform 1-D FWT based on lifting method. Deliberately organized lifting structure is provided to COLWAVELIFT as a major parameter.

The lifting structure is organized as follows:
L: 1-by-1 structure with two fields lamdaz and K.
K is two-element vector [K0, K1], which is the lifting gains.
lamdaz is 1-by-M structure if M lifting units are used.
lamdaz's two fields coeff and zorder denote the transfer function
of every lifting units lamda(Z)
e.g. for a wavelet transform with 3 lifting units as
lamda1 = a1+a2*z, lamda2 = b1+b2*z^-1, lamda3 = c1*z^(-1)+c2*z
and the lifting gains K0 and K1
L is to be organized as
lamdaz = struct('coeff', {[a1, a2], [b1, b2], [c1, c2], ...
'zorder', {[ 0, 1], [ 0, -1], [-1, 1 ]} );
L = struct('lamdaz', lamdaz, 'K', [K0, K1]);

You can test WAVELIFT with following lines:
x=imread('E:\study\jpeg2000\images\lena.tif');
% see the decomposition coefficients
y=wavelift(x, 1, 'spl53'); using lossless spline 5/3 wavelet
figure; subplot(1,2,1); imshow(x); subplot(1,2,2); imshow(mat2gray(y))
% see the reconstruction precision
yy=wavelift(x, 5); using lossy cdf 9/7 wavelet
ix=wavelift(yy, -5); inverse
sum(sum((double(x)-ix).^2))

Reference:
[1] D.S.Taubman et al., JPEC2000 Image Compression: F. S. & P.,
Chinese Edition, section 6.4, 6.5, 10.3 and 10.4
[2] Pascal Getreuer, waveletcdf97.m from Matlab file Exchange website

Cantact information:
Email/MSN messenger: wangthth@hotmail.com

Tianhui Wang at Beijing, China, Aug 5, 2006
Last Revision: Aug 6, 2006

Cite As

Wang Tianhui (2024). 2-D lifting wavelet transform (https://www.mathworks.com/matlabcentral/fileexchange/11895-2-d-lifting-wavelet-transform), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2006a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.0.0.0

added in the COLWAVELIFT.m the nonlinear approximate liting mode for lossless compression