from Image Compression Using Wavelets by S.Thayammal Subburaj
Compression using wavelet transform which give better reconstruction.

wavelet.m
               %WAVELET BASED COMPRESSION  
               %****************************

%removes all variables, globals, functions and
%MEX links(MATLAB loads and runs a different entry point symbol for C or Fortran MEX-files)
clear all;
% CLOSE ALL  closes all the open figure windows.
close all;
%read the image
input_image1=imread('rice.tif');
%display input image
%add noise
input_image=imnoise(input_image1,'speckle',.01);
figure;
imshow(input_image);
%give the number of decomposition level which must be integer and should not exceed 3
n=input('enter the decomposition level');

%*****************************************************************************
[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('haar');
% computes four filters associated with the orthogonal or biorthogonal
%  wavelet named in the string 'wname'. 
%    The four output filters are:
 %       LO_D, the decomposition low-pass filter
 %       HI_D, the decomposition high-pass filter
  %      LO_R, the reconstruction low-pass filter
   %     HI_R, the reconstruction high-pass filter
   % Available wavelet names 'wname' are:
   % Daubechies: 'db1' or 'haar', 'db2', ... ,'db45'
    %Coiflets  : 'coif1', ... ,  'coif5'
    %Symlets   : 'sym2' , ... ,  'sym8', ... ,'sym45'
    %Discrete Meyer wavelet: 'dmey'
%**********************************************************************    

%wavedec2    - Multi-level 2-D wavelet decomposition.
[c,s]=wavedec2(input_image,n,Lo_D,Hi_D);

% gives the wavelet decomposition of the matrix input_image at level n, using the
% wavelet named in string 'wname' or low pass and high pass
% Outputs are the decomposition vector C and the
%corresponding bookkeeping matrix S.
disp(' the decomposition vector Output is');
disp(c);
%*************************************************************************************
 
%Thresholds for wavelet 2-D using Birge-Massart strategy.
[thr,nkeep] = wdcbm2(c,s,1.5,3*prod(s(1,:)));

 % give level-dependent thresholds 'thr'and numbers of coefficients to be kept 'nkeep'
 % for compression. 'thr' is obtained using a wavelet coefficients 
 %selection rule based on Birge-Massart strategy.
  %disp('level-dependent thresholds');
 %disp(thr);
 %disp(' numbers of coefficients to be');
 %disp(nkeep);
%***************************************************************************
  %compression using wavelet packets.
 [compressed_image,TREED,comp_ratio,PERFL2] =WPDENCMP(thr,'s',n,'haar','threshold',5,1);
 disp('compression ratio in percentage');
 disp(comp_ratio);
 % returns a compressed version compressed_image of input
 % signal 'thr' (2-D) obtained by wavelet packet  coefficients thresholding.
  %  The additional output argument TREED is the
  %  wavelet packet best tree decomposition of compressed_image.
  %  PERFL2 and PERF0 are L^2 recovery and compression scores in percentages.
  
  %Multi-level 2-D wavelet reconstruction.
 re_ima1 = waverec2(c,s,'haar'); 
 re_ima=uint8(re_ima1);
  subplot(1,3,1);
 imshow(input_image);
 title('i/p image');
 subplot(1,3,2);
 imshow(compressed_image);
 title('compressed image');
 subplot(1,3,3);
 imshow(re_ima);
 title('reconstructed image');
 
 

Contact us at files@mathworks.com