from compression of rgb images using wavelet transforms by Anila Ann Varghese
This code can be used to compare compression of RGB images using different wavelet transforms

rgbcompression_wavelet_transforms.m
clc;
close all;
clear all;

%Input the image
Xin=imread('C:\Users\abc\Desktop\New folder\sea.jpg');
[r c p] = size(Xin);
disp(size(Xin));
 
%Resizing the image to be of square form
if (r<=c)
    Xin = imresize(Xin,[r r]);
    X1=Xin(1:r,1:r,1:1);
    X2=Xin(1:r,1:r,2:2);
    X3=Xin(1:r,1:r,3:3);
else
    Xin = imresize(Xin,[c c]);
    X1=Xin(1:c,1:c,1:1);
    X2=Xin(1:c,1:c,2:2);
    X3=Xin(1:c,1:c,3:3);        
end

X(:,:,1) = X1;
X(:,:,2) = X2;
X(:,:,3) = X3;

imwrite(X,'D:\Project\Results\in.jpg');
string = 'D:\Project\Results\in.jpg';
[r c] = size(X);

%Displaying the original image
figure; 
NbColors = 255;
map = gray(NbColors);
image(X);colormap(map); title('Original image');colorbar;
pause
home
z = 1;

%input the required wavelet and decomposition level
while z==1
wavelet=input('Select the wavelet ','s'); 
level=input('Select the level of decomposition ');
    switch level;
        case 1,
            %To perform a level 1 decomposition of the image
            % Reconstruction of the image from the approximate and details
            [C1,S1] = wavedec2(X1,1,wavelet);
            A11 = wrcoef2('a',C1,S1,wavelet,1);
            H11 = wrcoef2('h',C1,S1,wavelet,1); 
            V11 = wrcoef2('v',C1,S1,wavelet,1); 
            D11 = wrcoef2('d',C1,S1,wavelet,1);
		
            [C2,S2] = wavedec2(X2,1,wavelet);
            A12 = wrcoef2('a',C2,S2,wavelet,1);
            H12 = wrcoef2('h',C2,S2,wavelet,1); 
            V12 = wrcoef2('v',C2,S2,wavelet,1); 
            D12 = wrcoef2('d',C2,S2,wavelet,1); 

            [C3,S3] = wavedec2(X3,1,wavelet);
            A13 = wrcoef2('a',C3,S3,wavelet,1);
            H13 = wrcoef2('h',C3,S3,wavelet,1); 
            V13 = wrcoef2('v',C3,S3,wavelet,1); 
            D13 = wrcoef2('d',C3,S3,wavelet,1); 
             
            %Display the results of a first level decomposition.
            A1(:,:,1) = A11;
            A1(:,:,2) = A12;
            A1(:,:,3) = A13;
            H1(:,:,1) = H11;
            H1(:,:,2) = H12;
            H1(:,:,3) = H13;
            V1(:,:,1) = V11;
            V1(:,:,2) = V12;
            V1(:,:,3) = V13;
            D1(:,:,1) = D11;
            D1(:,:,2) = D12;
            D1(:,:,3) = D13;
            
            subplot(2,2,1); image(uint8(wcodemat(A1,192)));
            title('Approximation A1')
            subplot(2,2,2); image(uint8(wcodemat(H1,192)));
            title('Horizontal Detail H1')
            subplot(2,2,3); image(uint8(wcodemat(V1,192)));
            title('Vertical Detail V1')
            subplot(2,2,4); image(uint8(wcodemat(D1,192)));
            title('Diagonal Detail D1')
            pause
            
            subplot(1,1,1,'replace')
            colors = size(unique(X));
            grayLevels = colors(1);
            
            a1_cod1 = wcodemat(A11,grayLevels);
            d1_hcod1 = wcodemat(H11,grayLevels);
            d1_vcod1 = wcodemat(V11,grayLevels);
            d1_dcod1 = wcodemat(D11,grayLevels);
            L11 = [a1_cod1,d1_hcod1;d1_vcod1,d1_dcod1];
		
            a1_cod2 = wcodemat(A12,grayLevels);
            d1_hcod2 = wcodemat(H12,grayLevels);
            d1_vcod2 = wcodemat(V12,grayLevels);
            d1_dcod2 = wcodemat(D12,grayLevels);
            L12 = [a1_cod2,d1_hcod2;d1_vcod2,d1_dcod2];
		
            a1_cod3 = wcodemat(A13,grayLevels);
            d1_hcod3 = wcodemat(H13,grayLevels);
            d1_vcod3 = wcodemat(V13,grayLevels);
            d1_dcod3 = wcodemat(D13,grayLevels);
            L13 = [a1_cod3,d1_hcod3;d1_vcod3,d1_dcod3];

            L1(:,:,1) = L11;
            L1(:,:,2) = L12;
            L1(:,:,3) = L13;
            image(uint8(L1));
            axis image;
            title('Level 1 decomposition');
            pause
            
            % Compress the image and display it. 
            % To compress the original image X, use the ddencmp command to calculate the default parameters
            % and the wdencmp command to perform the actual compression.
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X1);
            [Xcomp1,CXC1,LXC1,PERF01,PERFL21] = wdencmp('gbl',C1,S1,wavelet,1,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X2);
            [Xcomp2,CXC2,LXC2,PERF02,PERFL22] = wdencmp('gbl',C2,S2,wavelet,1,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X3);
            [Xcomp3,CXC3,LXC3,PERF03,PERFL23] = wdencmp('gbl',C3,S3,wavelet,1,thr,sorh,keepapp);     
            Xcomp(:,:,1) = Xcomp1;
            Xcomp(:,:,2) = Xcomp2;
            Xcomp(:,:,3) = Xcomp3;
            NC1 = wthcoef2('t',C1,S1,1,thr,'s');
            NC2 = wthcoef2('t',C2,S2,1,thr,'s');
            NC3 = wthcoef2('t',C3,S3,1,thr,'s');
            A(:,:,1) = a1_cod1;
            A(:,:,2) = a1_cod2;
            A(:,:,3) = a1_cod3;
                        
        case 2,
             %To perform a level 2 decomposition of the image
            [C1,S1] = wavedec2(X1,2,wavelet);
            [C2,S2] = wavedec2(X2,2,wavelet);
            [C3,S3] = wavedec2(X3,2,wavelet);
            
            %Reconstruct the Level 2 approximation and the Level 1 and 2 details. 
            %To reconstruct the level 2 approximation from C, type
            A21 = wrcoef2('a',C1,S1,wavelet,2);
            A11 = wrcoef2('a',C1,S1,wavelet,1);
            H11 = wrcoef2('h',C1,S1,wavelet,1); 
            V11 = wrcoef2('v',C1,S1,wavelet,1); 
            D11 = wrcoef2('d',C1,S1,wavelet,1); 
            H21 = wrcoef2('h',C1,S1,wavelet,2);
            V21 = wrcoef2('v',C1,S1,wavelet,2); 
            D21 = wrcoef2('d',C1,S1,wavelet,2);
            
            A22 = wrcoef2('a',C2,S2,wavelet,2);
            A12 = wrcoef2('a',C2,S2,wavelet,1);
            H12 = wrcoef2('h',C2,S2,wavelet,1); 
            V12 = wrcoef2('v',C2,S2,wavelet,1); 
            D12 = wrcoef2('d',C2,S2,wavelet,1); 
            H22 = wrcoef2('h',C2,S2,wavelet,2);
            V22 = wrcoef2('v',C2,S2,wavelet,2); 
            D22 = wrcoef2('d',C2,S2,wavelet,2);
            
            A23 = wrcoef2('a',C3,S3,wavelet,2);
            A13 = wrcoef2('a',C3,S3,wavelet,1);
            H13 = wrcoef2('h',C3,S3,wavelet,1); 
            V13 = wrcoef2('v',C3,S3,wavelet,1); 
            D13 = wrcoef2('d',C3,S3,wavelet,1); 
            H23 = wrcoef2('h',C3,S3,wavelet,2);
            V23 = wrcoef2('v',C3,S3,wavelet,2); 
            D23 = wrcoef2('d',C3,S3,wavelet,2);
            
            A1(:,:,1) = A11;
            A1(:,:,2) = A12;
            A1(:,:,3) = A13;
            H1(:,:,1) = H11;
            H1(:,:,2) = H12;
            H1(:,:,3) = H13;
            V1(:,:,1) = V11;
            V1(:,:,2) = V12;
            V1(:,:,3) = V13;
            D1(:,:,1) = D11;
            D1(:,:,2) = D12;
            D1(:,:,3) = D13;
            A2(:,:,1) = A21;
            A2(:,:,2) = A22;
            A2(:,:,3) = A23;
            H2(:,:,1) = H21;
            H2(:,:,2) = H22;
            H2(:,:,3) = H23;
            V2(:,:,1) = V21;
            V2(:,:,2) = V22;
            V2(:,:,3) = V23;
            D2(:,:,1) = D21;
            D2(:,:,2) = D22;
            D2(:,:,3) = D23;
            
            %Display the result after second level decomposition
            subplot(2,4,1);image(uint8(wcodemat(A1,192)));
            title('Approximation A1')
            subplot(2,4,2);image(uint8(wcodemat(H1,192)));
            title('Horizontal Detail H1')
            subplot(2,4,3);image(uint8(wcodemat(V1,192)));
            title('Vertical Detail V1')
            subplot(2,4,4);image(uint8(wcodemat(D1,192)));
            title('Diagonal Detail D1')
            subplot(2,4,5);image(uint8(wcodemat(A2,192)));
            title('Approximation A2')
            subplot(2,4,6);image(uint8(wcodemat(H2,192)));
            title('Horizontal Detail H2')
            subplot(2,4,7);image(uint8(wcodemat(V2,192)));
            title('Vertical Detail V2')
            subplot(2,4,8);image(uint8(wcodemat(D2,192)));
            title('Diagonal Detail D2')
            pause
            
            subplot(1,1,1,'replace')
            colors = size(unique(X));
            grayLevels = colors(1);
            
            %1st level coefficient coding
            a1_cod1 = wcodemat(A11,grayLevels);
            d1_hcod1 = wcodemat(H11,grayLevels);
            d1_vcod1 = wcodemat(V11,grayLevels);
            d1_dcod1 = wcodemat(D11,grayLevels);
            
            a1_cod2 = wcodemat(A12,grayLevels);
            d1_hcod2 = wcodemat(H12,grayLevels);
            d1_vcod2 = wcodemat(V12,grayLevels);
            d1_dcod2 = wcodemat(D12,grayLevels);
           
            a1_cod3 = wcodemat(A13,grayLevels);
            d1_hcod3 = wcodemat(H13,grayLevels);
            d1_vcod3 = wcodemat(V13,grayLevels);
            d1_dcod3 = wcodemat(D13,grayLevels);
                       
            %2nd level coefficient coding
            a2_cod1 = wcodemat(A21,grayLevels);
            d2_hcod1 = wcodemat(H21,grayLevels);
            d2_vcod1 = wcodemat(V21,grayLevels);
            d2_dcod1 = wcodemat(D21,grayLevels);

            a2_cod2 = wcodemat(A22,grayLevels);
            d2_hcod2 = wcodemat(H22,grayLevels);
            d2_vcod2 = wcodemat(V22,grayLevels);
            d2_dcod2 = wcodemat(D22,grayLevels);
            
            a2_cod3 = wcodemat(A23,grayLevels);
            d2_hcod3 = wcodemat(H23,grayLevels);
            d2_vcod3 = wcodemat(V23,grayLevels);
            d2_dcod3 = wcodemat(D23,grayLevels);
                                    
            %Displaying level 2 structure
            colormap(map)
            L21 =[imresize([a2_cod1,d2_hcod1;d2_vcod1,d2_dcod1],size(d1_hcod1),'bilinear'),d1_hcod1;d1_vcod1,d1_dcod1];
            L22 =[imresize([a2_cod2,d2_hcod2;d2_vcod2,d2_dcod2],size(d1_hcod2),'bilinear'),d1_hcod2;d1_vcod2,d1_dcod2];
            L23 =[imresize([a2_cod3,d2_hcod3;d2_vcod3,d2_dcod3],size(d1_hcod3),'bilinear'),d1_hcod3;d1_vcod3,d1_dcod3];
            L2(:,:,1) = L21;
            L2(:,:,2) = L22;
            L2(:,:,3) = L23;
            
            image(uint8(L2));
            axis image;
            title('Level 2 decomposition');
            pause
            
            % Compress the image and display it. 
            % To compress the original image X, use the ddencmp command to calculate the default parameters
            % and the wdencmp command to perform the actual compression.
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X1);
            [Xcomp1,CXC1,LXC1,PERF01,PERFL21] = wdencmp('gbl',C1,S1,wavelet,2,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X2);
            [Xcomp2,CXC2,LXC2,PERF02,PERFL22] = wdencmp('gbl',C2,S2,wavelet,2,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X3);
            [Xcomp3,CXC3,LXC3,PERF03,PERFL23] = wdencmp('gbl',C3,S3,wavelet,2,thr,sorh,keepapp);     
            Xcomp(:,:,1) = Xcomp1;
            Xcomp(:,:,2) = Xcomp2;
            Xcomp(:,:,3) = Xcomp3;
            NC1 = wthcoef2('t',C1,S1,2,thr,'s');
            NC2 = wthcoef2('t',C2,S2,2,thr,'s');
            NC3 = wthcoef2('t',C3,S3,2,thr,'s');
            A(:,:,1) = a2_cod1;
            A(:,:,2) = a2_cod2;
            A(:,:,3) = a2_cod3;
            
        case 3,
            %To perform a level 3 decomposition of the image
            [C1,S1] = wavedec2(X1,3,wavelet); 
            [C2,S2] = wavedec2(X2,3,wavelet); 
            [C3,S3] = wavedec2(X3,3,wavelet); 
            
            %To reconstruct the level 1,2,3 approximation from C and S
            A31 = wrcoef2('a',C1,S1,wavelet,3);
            A21 = wrcoef2('a',C1,S1,wavelet,2);
            A11 = wrcoef2('a',C1,S1,wavelet,1);
            H11 = wrcoef2('h',C1,S1,wavelet,1); 
            V11 = wrcoef2('v',C1,S1,wavelet,1); 
            D11 = wrcoef2('d',C1,S1,wavelet,1); 
            H21 = wrcoef2('h',C1,S1,wavelet,2);
            V21 = wrcoef2('v',C1,S1,wavelet,2); 
            D21 = wrcoef2('d',C1,S1,wavelet,3);
            H31 = wrcoef2('h',C1,S1,wavelet,3);
            V31 = wrcoef2('v',C1,S1,wavelet,3); 
            D31 = wrcoef2('d',C1,S1,wavelet,3);
            
            A32 = wrcoef2('a',C2,S2,wavelet,3);
            A22 = wrcoef2('a',C2,S2,wavelet,2);
            A12 = wrcoef2('a',C2,S2,wavelet,1);
            H12 = wrcoef2('h',C2,S2,wavelet,1); 
            V12 = wrcoef2('v',C2,S2,wavelet,1); 
            D12 = wrcoef2('d',C2,S2,wavelet,1); 
            H22 = wrcoef2('h',C2,S2,wavelet,2);
            V22 = wrcoef2('v',C2,S2,wavelet,2); 
            D22 = wrcoef2('d',C2,S2,wavelet,3);
            H32 = wrcoef2('h',C2,S2,wavelet,3);
            V32 = wrcoef2('v',C2,S2,wavelet,3); 
            D32 = wrcoef2('d',C2,S2,wavelet,3);
            
            A33 = wrcoef2('a',C3,S3,wavelet,3);
            A23 = wrcoef2('a',C3,S3,wavelet,2);
            A13 = wrcoef2('a',C3,S3,wavelet,1);
            H13 = wrcoef2('h',C3,S3,wavelet,1); 
            V13 = wrcoef2('v',C3,S3,wavelet,1); 
            D13 = wrcoef2('d',C3,S3,wavelet,1); 
            H23 = wrcoef2('h',C3,S3,wavelet,2);
            V23 = wrcoef2('v',C3,S3,wavelet,2); 
            D23 = wrcoef2('d',C3,S3,wavelet,3);
            H33 = wrcoef2('h',C3,S3,wavelet,3);
            V33 = wrcoef2('v',C3,S3,wavelet,3); 
            D33 = wrcoef2('d',C3,S3,wavelet,3);
            
            A1(:,:,1) = A11;
            A1(:,:,2) = A12;
            A1(:,:,3) = A13;
            H1(:,:,1) = H11;
            H1(:,:,2) = H12;
            H1(:,:,3) = H13;
            V1(:,:,1) = V11;
            V1(:,:,2) = V12;
            V1(:,:,3) = V13;
            D1(:,:,1) = D11;
            D1(:,:,2) = D12;
            D1(:,:,3) = D13;
            A2(:,:,1) = A21;
            A2(:,:,2) = A22;
            A2(:,:,3) = A23;
            H2(:,:,1) = H21;
            H2(:,:,2) = H22;
            H2(:,:,3) = H23;
            V2(:,:,1) = V21;
            V2(:,:,2) = V22;
            V2(:,:,3) = V23;
            D2(:,:,1) = D21;
            D2(:,:,2) = D22;
            D2(:,:,3) = D23;
            A3(:,:,1) = A31;
            A3(:,:,2) = A32;
            A3(:,:,3) = A33;
            H3(:,:,1) = H31;
            H3(:,:,2) = H32;
            H3(:,:,3) = H33;
            V3(:,:,1) = V31;
            V3(:,:,2) = V32;
            V3(:,:,3) = V33;
            D3(:,:,1) = D31;
            D3(:,:,2) = D32;
            D3(:,:,3) = D33;
            
            colormap(map);
            subplot(3,4,1);image(uint8(wcodemat(A1,192)));
            title('Approximation A1')
            subplot(3,4,2);image(uint8(wcodemat(H1,192)));
            title('Horizontal Detail H1')
            subplot(3,4,3);image(uint8(wcodemat(V1,192)));
            title('Vertical Detail V1')
            subplot(3,4,4);image(uint8(wcodemat(D1,192)));
            title('Diagonal Detail D1')
            subplot(3,4,5);image(uint8(wcodemat(A2,192)));
            title('Approximation A2')
            subplot(3,4,6);image(uint8(wcodemat(H2,192)));
            title('Horizontal Detail H2')
            subplot(3,4,7);image(uint8(wcodemat(V2,192)));
            title('Vertical Detail V2')
            subplot(3,4,8);image(uint8(wcodemat(D2,192)));
            title('Diagonal Detail D2')
            subplot(3,4,9);image(uint8(wcodemat(A3,192)));
            title('Approximation A3')
            subplot(3,4,10);image(uint8(wcodemat(H3,192)));
            title('Horizontal Detail H3')
            subplot(3,4,11);image(uint8(wcodemat(V3,192)));
            title('Vertical Detail V3')
            subplot(3,4,12);image(uint8(wcodemat(D3,192)));
            title('Diagonal Detail D3')
            pause
            
            subplot(1,1,1,'replace')
            colors = size(unique(X));
            grayLevels = colors(1);
            
            %1st level coefficient coding
            a1_cod1 = wcodemat(A11,grayLevels);
            d1_hcod1 = wcodemat(H11,grayLevels);
            d1_vcod1 = wcodemat(V11,grayLevels);
            d1_dcod1 = wcodemat(D11,grayLevels);
            
            a1_cod2 = wcodemat(A12,grayLevels);
            d1_hcod2 = wcodemat(H12,grayLevels);
            d1_vcod2 = wcodemat(V12,grayLevels);
            d1_dcod2 = wcodemat(D12,grayLevels);
           
            a1_cod3 = wcodemat(A13,grayLevels);
            d1_hcod3 = wcodemat(H13,grayLevels);
            d1_vcod3 = wcodemat(V13,grayLevels);
            d1_dcod3 = wcodemat(D13,grayLevels);
                       
            %2nd level coefficient coding
            a2_cod1 = wcodemat(A21,grayLevels);
            d2_hcod1 = wcodemat(H21,grayLevels);
            d2_vcod1 = wcodemat(V21,grayLevels);
            d2_dcod1 = wcodemat(D21,grayLevels);

            a2_cod2 = wcodemat(A22,grayLevels);
            d2_hcod2 = wcodemat(H22,grayLevels);
            d2_vcod2 = wcodemat(V22,grayLevels);
            d2_dcod2 = wcodemat(D22,grayLevels);
            
            a2_cod3 = wcodemat(A23,grayLevels);
            d2_hcod3 = wcodemat(H23,grayLevels);
            d2_vcod3 = wcodemat(V23,grayLevels);
            d2_dcod3 = wcodemat(D23,grayLevels);
            
            % 3rd level coefficients coding
            a3_cod1 = wcodemat(A31,grayLevels);
            d3_hcod1 = wcodemat(H31,grayLevels);
            d3_vcod1 = wcodemat(V31,grayLevels);
            d3_dcod1 = wcodemat(D31,grayLevels);
            
            a3_cod2 = wcodemat(A32,grayLevels);
            d3_hcod2 = wcodemat(H32,grayLevels);
            d3_vcod2 = wcodemat(V32,grayLevels);
            d3_dcod2 = wcodemat(D32,grayLevels);
            
            a3_cod3 = wcodemat(A33,grayLevels);
            d3_hcod3 = wcodemat(H33,grayLevels);
            d3_vcod3 = wcodemat(V33,grayLevels);
            d3_dcod3 = wcodemat(D33,grayLevels);
            
            L31 = [imresize([imresize([a3_cod1,d3_hcod1;d3_vcod1,d3_dcod1],size(d2_hcod1),'bilinear'),d2_hcod1;d2_vcod1,d2_dcod1],size(d1_hcod1),'bilinear'),d1_hcod1;d1_vcod1,d1_dcod1];
            L32 = [imresize([imresize([a3_cod2,d3_hcod2;d3_vcod2,d3_dcod2],size(d2_hcod2),'bilinear'),d2_hcod2;d2_vcod2,d2_dcod2],size(d1_hcod2),'bilinear'),d1_hcod2;d1_vcod2,d1_dcod2];
            L33 = [imresize([imresize([a3_cod3,d3_hcod3;d3_vcod3,d3_dcod3],size(d2_hcod3),'bilinear'),d2_hcod3;d2_vcod3,d2_dcod3],size(d1_hcod3),'bilinear'),d1_hcod3;d1_vcod3,d1_dcod3];
            
            L3(:,:,1) = L31;
            L3(:,:,2) = L32;
            L3(:,:,3) = L33;
            
            image(uint8(L3));
            axis image;
            title('Level 3 decomposition');
            pause
            
            % Compress the image and display it. 
            % To compress the original image X, use the ddencmp command to calculate the default parameters
            % and the wdencmp command to perform the actual compression.
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X1);
            [Xcomp1,CXC1,LXC1,PERF01,PERFL21] = wdencmp('gbl',C1,S1,wavelet,3,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X2);
            [Xcomp2,CXC2,LXC2,PERF02,PERFL22] = wdencmp('gbl',C2,S2,wavelet,3,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X3);
            [Xcomp3,CXC3,LXC3,PERF03,PERFL23] = wdencmp('gbl',C3,S3,wavelet,3,thr,sorh,keepapp);     
            Xcomp(:,:,1) = Xcomp1;
            Xcomp(:,:,2) = Xcomp2;
            Xcomp(:,:,3) = Xcomp3;
            NC1 = wthcoef2('t',C1,S1,3,thr,'s');
            NC2 = wthcoef2('t',C2,S2,3,thr,'s');
            NC3 = wthcoef2('t',C3,S3,3,thr,'s');
            A(:,:,1) = a3_cod1;
            A(:,:,2) = a3_cod2;
            A(:,:,3) = a3_cod3;
            
        case 4,
            %To perform a level 4 decomposition of the image
            [C1,S1] = wavedec2(X1,4,wavelet);
            [C2,S2] = wavedec2(X2,4,wavelet);
            [C3,S3] = wavedec2(X3,4,wavelet);
            
            %To reconstruct the level 1,2,3,4 approximation from C, type
            A41 = wrcoef2('a',C1,S1,wavelet,4);
            A31 = wrcoef2('a',C1,S1,wavelet,3);
            A21 = wrcoef2('a',C1,S1,wavelet,2);
            A11 = wrcoef2('a',C1,S1,wavelet,1);
            H11 = wrcoef2('h',C1,S1,wavelet,1); 
            V11 = wrcoef2('v',C1,S1,wavelet,1); 
            D11 = wrcoef2('d',C1,S1,wavelet,1); 
            H21 = wrcoef2('h',C1,S1,wavelet,2);
            V21 = wrcoef2('v',C1,S1,wavelet,2); 
            D21 = wrcoef2('d',C1,S1,wavelet,2);
            H31 = wrcoef2('h',C1,S1,wavelet,3);
            V31 = wrcoef2('v',C1,S1,wavelet,3); 
            D31 = wrcoef2('d',C1,S1,wavelet,3);
            H41 = wrcoef2('h',C1,S1,wavelet,4);
            V41 = wrcoef2('v',C1,S1,wavelet,4); 
            D41 = wrcoef2('d',C1,S1,wavelet,4);
            
            A42 = wrcoef2('a',C2,S2,wavelet,4);
            A32 = wrcoef2('a',C2,S2,wavelet,3);
            A22 = wrcoef2('a',C2,S2,wavelet,2);
            A12 = wrcoef2('a',C2,S2,wavelet,1);
            H12 = wrcoef2('h',C2,S2,wavelet,1); 
            V12 = wrcoef2('v',C2,S2,wavelet,1); 
            D12 = wrcoef2('d',C2,S2,wavelet,1); 
            H22 = wrcoef2('h',C2,S2,wavelet,2);
            V22 = wrcoef2('v',C2,S2,wavelet,2); 
            D22 = wrcoef2('d',C2,S2,wavelet,2);
            H32 = wrcoef2('h',C2,S2,wavelet,3);
            V32 = wrcoef2('v',C2,S2,wavelet,3); 
            D32 = wrcoef2('d',C2,S2,wavelet,3);
            H42 = wrcoef2('h',C2,S2,wavelet,4);
            V42 = wrcoef2('v',C2,S2,wavelet,4); 
            D42 = wrcoef2('d',C2,S2,wavelet,4);    
            
            A43 = wrcoef2('a',C3,S3,wavelet,4);
            A33 = wrcoef2('a',C3,S3,wavelet,3);
            A23 = wrcoef2('a',C3,S3,wavelet,2);
            A13 = wrcoef2('a',C3,S3,wavelet,1);
            H13 = wrcoef2('h',C3,S3,wavelet,1); 
            V13 = wrcoef2('v',C3,S3,wavelet,1); 
            D13 = wrcoef2('d',C3,S3,wavelet,1); 
            H23 = wrcoef2('h',C3,S3,wavelet,2);
            V23 = wrcoef2('v',C3,S3,wavelet,2); 
            D23 = wrcoef2('d',C3,S3,wavelet,2);
            H33 = wrcoef2('h',C3,S3,wavelet,3);
            V33 = wrcoef2('v',C3,S3,wavelet,3); 
            D33 = wrcoef2('d',C3,S3,wavelet,3);
            H43 = wrcoef2('h',C3,S3,wavelet,4);
            V43 = wrcoef2('v',C3,S3,wavelet,4); 
            D43 = wrcoef2('d',C3,S3,wavelet,4);    
            
            A1(:,:,1) = A11;
            A1(:,:,2) = A12;
            A1(:,:,3) = A13;
            H1(:,:,1) = H11;
            H1(:,:,2) = H12;
            H1(:,:,3) = H13;
            V1(:,:,1) = V11;
            V1(:,:,2) = V12;
            V1(:,:,3) = V13;
            D1(:,:,1) = D11;
            D1(:,:,2) = D12;
            D1(:,:,3) = D13;
            A2(:,:,1) = A21;
            A2(:,:,2) = A22;
            A2(:,:,3) = A23;
            H2(:,:,1) = H21;
            H2(:,:,2) = H22;
            H2(:,:,3) = H23;
            V2(:,:,1) = V21;
            V2(:,:,2) = V22;
            V2(:,:,3) = V23;
            D2(:,:,1) = D21;
            D2(:,:,2) = D22;
            D2(:,:,3) = D23;
            A3(:,:,1) = A31;
            A3(:,:,2) = A32;
            A3(:,:,3) = A33;
            H3(:,:,1) = H31;
            H3(:,:,2) = H32;
            H3(:,:,3) = H33;
            V3(:,:,1) = V31;
            V3(:,:,2) = V32;
            V3(:,:,3) = V33;
            D3(:,:,1) = D31;
            D3(:,:,2) = D32;
            D3(:,:,3) = D33;
            A4(:,:,1) = A41;
            A4(:,:,2) = A42;
            A4(:,:,3) = A43;
            H4(:,:,1) = H41;
            H4(:,:,2) = H42;
            H4(:,:,3) = H43;
            V4(:,:,1) = V41;
            V3(:,:,2) = V42;
            V3(:,:,3) = V43;
            D4(:,:,1) = D41;
            D4(:,:,2) = D42;
            D4(:,:,3) = D43;
            
            % Display the results of a multilevel decomposition.
            % Displaying level 4 structure
            NbColors = 255;
            map = gray(NbColors);
            colormap(map);
            subplot(4,4,1);image(uint8(wcodemat(A1,192)));
            title('Approximation A1')
            subplot(4,4,2);image(uint8(wcodemat(H1,192)));
            title('Horizontal Detail H1')
            subplot(4,4,3);image(uint8(wcodemat(V1,192)));
            title('Vertical Detail V1')
            subplot(4,4,4);image(uint8(wcodemat(D1,192)));
            title('Diagonal Detail D1')
            subplot(4,4,5);image(uint8(wcodemat(A2,192)));
            title('Approximation A2')
            subplot(4,4,6);image(uint8(wcodemat(H2,192)));
            title('Horizontal Detail H2')
            subplot(4,4,7);image(uint8(wcodemat(V2,192)));
            title('Vertical Detail V2')
            subplot(4,4,8);image(uint8(wcodemat(D2,192)));
            title('Diagonal Detail D2')
            subplot(4,4,9);image(uint8(wcodemat(A3,192)));
            title('Approximation A3')
            subplot(4,4,10);image(uint8(wcodemat(H3,192)));
            title('Horizontal Detail H3')
            subplot(4,4,11);image(uint8(wcodemat(V3,192)));
            title('Vertical Detail V3')
            subplot(4,4,12);image(uint8(wcodemat(D3,192)));
            title('Diagonal Detail D3')
            subplot(4,4,13);image(uint8(wcodemat(A4,192)));
            title('Approximation A4')
            subplot(4,4,14);image(uint8(wcodemat(H4,192)));
            title('Horizontal Detail H4')
            subplot(4,4,15);image(uint8(wcodemat(V4,192)));
            title('Vertical Detail V4')
            subplot(4,4,16);image(uint8(wcodemat(D4,192)));
            title('Diagonal Detail D4')
            pause
            
            subplot(1,1,1,'replace')
            colors = size(unique(X));
            grayLevels = colors(1);
            
             %1st level coefficient coding
            a1_cod1 = wcodemat(A11,grayLevels);
            d1_hcod1 = wcodemat(H11,grayLevels);
            d1_vcod1 = wcodemat(V11,grayLevels);
            d1_dcod1 = wcodemat(D11,grayLevels);
            
            a1_cod2 = wcodemat(A12,grayLevels);
            d1_hcod2 = wcodemat(H12,grayLevels);
            d1_vcod2 = wcodemat(V12,grayLevels);
            d1_dcod2 = wcodemat(D12,grayLevels);
           
            a1_cod3 = wcodemat(A13,grayLevels);
            d1_hcod3 = wcodemat(H13,grayLevels);
            d1_vcod3 = wcodemat(V13,grayLevels);
            d1_dcod3 = wcodemat(D13,grayLevels);
                       
            %2nd level coefficient coding
            a2_cod1 = wcodemat(A21,grayLevels);
            d2_hcod1 = wcodemat(H21,grayLevels);
            d2_vcod1 = wcodemat(V21,grayLevels);
            d2_dcod1 = wcodemat(D21,grayLevels);

            a2_cod2 = wcodemat(A22,grayLevels);
            d2_hcod2 = wcodemat(H22,grayLevels);
            d2_vcod2 = wcodemat(V22,grayLevels);
            d2_dcod2 = wcodemat(D22,grayLevels);
            
            a2_cod3 = wcodemat(A23,grayLevels);
            d2_hcod3 = wcodemat(H23,grayLevels);
            d2_vcod3 = wcodemat(V23,grayLevels);
            d2_dcod3 = wcodemat(D23,grayLevels);
            
            % 3rd level coefficients coding
            a3_cod1 = wcodemat(A31,grayLevels);
            d3_hcod1 = wcodemat(H31,grayLevels);
            d3_vcod1 = wcodemat(V31,grayLevels);
            d3_dcod1 = wcodemat(D31,grayLevels);
            
            a3_cod2 = wcodemat(A32,grayLevels);
            d3_hcod2 = wcodemat(H32,grayLevels);
            d3_vcod2 = wcodemat(V32,grayLevels);
            d3_dcod2 = wcodemat(D32,grayLevels);
            
            a3_cod3 = wcodemat(A33,grayLevels);
            d3_hcod3 = wcodemat(H33,grayLevels);
            d3_vcod3 = wcodemat(V33,grayLevels);
            d3_dcod3 = wcodemat(D33,grayLevels);
            
            %4th level coefficients coding
            a4_cod1 = wcodemat(A41,grayLevels);
            d4_hcod1 = wcodemat(H41,grayLevels);
            d4_vcod1 = wcodemat(V41,grayLevels);
            d4_dcod1 = wcodemat(D41,grayLevels);
            
            a4_cod2 = wcodemat(A42,grayLevels);
            d4_hcod2 = wcodemat(H42,grayLevels);
            d4_vcod2 = wcodemat(V42,grayLevels);
            d4_dcod2 = wcodemat(D42,grayLevels);
            
            a4_cod3 = wcodemat(A43,grayLevels);
            d4_hcod3 = wcodemat(H43,grayLevels);
            d4_vcod3 = wcodemat(V43,grayLevels);
            d4_dcod3 = wcodemat(D43,grayLevels);
            
            L41 = [imresize([imresize([imresize([a4_cod1,d4_hcod1;d4_vcod1,d4_dcod1],size(d3_hcod1),'bilinear'),d3_hcod1;d3_vcod1,d3_dcod1],size(d2_hcod1),'bilinear'),d2_hcod1;d2_vcod1,d2_dcod1],size(d1_hcod1),'bilinear'),d1_hcod1;d1_vcod1,d1_dcod1];
            L42 = [imresize([imresize([imresize([a4_cod2,d4_hcod2;d4_vcod2,d4_dcod2],size(d3_hcod2),'bilinear'),d3_hcod2;d3_vcod2,d3_dcod2],size(d2_hcod2),'bilinear'),d2_hcod2;d2_vcod2,d2_dcod2],size(d1_hcod2),'bilinear'),d1_hcod2;d1_vcod2,d1_dcod2];
            L43 = [imresize([imresize([imresize([a4_cod3,d4_hcod3;d4_vcod3,d4_dcod3],size(d3_hcod3),'bilinear'),d3_hcod3;d3_vcod3,d3_dcod3],size(d2_hcod3),'bilinear'),d2_hcod3;d2_vcod3,d2_dcod3],size(d1_hcod3),'bilinear'),d1_hcod3;d1_vcod3,d1_dcod3];
            
            L4(:,:,1) = L41;
            L4(:,:,2) = L42;
            L4(:,:,3) = L43;
            
            image(uint8(L4));
            axis image;
            title('Level 4 decomposition');
            pause
            
            % Compress the image and display it. 
            % To compress the original image X, use the ddencmp command to calculate the default parameters
            % and the wdencmp command to perform the actual compression.
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X1);
            [Xcomp1,CXC1,LXC1,PERF01,PERFL21] = wdencmp('gbl',C1,S1,wavelet,4,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X2);
            [Xcomp2,CXC2,LXC2,PERF02,PERFL22] = wdencmp('gbl',C2,S2,wavelet,4,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X3);
            [Xcomp3,CXC3,LXC3,PERF03,PERFL23] = wdencmp('gbl',C3,S3,wavelet,4,thr,sorh,keepapp);     
            Xcomp(:,:,1) = Xcomp1;
            Xcomp(:,:,2) = Xcomp2;
            Xcomp(:,:,3) = Xcomp3;
            NC1 = wthcoef2('t',C1,S1,4,thr,'s');
            NC2 = wthcoef2('t',C2,S2,4,thr,'s');
            NC3 = wthcoef2('t',C3,S3,4,thr,'s');
            A(:,:,1) = a4_cod1;
            A(:,:,2) = a4_cod2;
            A(:,:,3) = a4_cod3;
            
        case 5,
             %To perform a level 4 decomposition of the image
            [C1,S1] = wavedec2(X1,5,wavelet);
            [C2,S2] = wavedec2(X2,5,wavelet);
            [C3,S3] = wavedec2(X3,5,wavelet);
            
            %To reconstruct the level 1,2,3,4 approximation from C,
            A51 = wrcoef2('a',C1,S1,wavelet,5);
            A41 = wrcoef2('a',C1,S1,wavelet,4);
            A31 = wrcoef2('a',C1,S1,wavelet,3);
            A21 = wrcoef2('a',C1,S1,wavelet,2);
            A11 = wrcoef2('a',C1,S1,wavelet,1);
            H11 = wrcoef2('h',C1,S1,wavelet,1); 
            V11 = wrcoef2('v',C1,S1,wavelet,1); 
            D11 = wrcoef2('d',C1,S1,wavelet,1); 
            H21 = wrcoef2('h',C1,S1,wavelet,2);
            V21 = wrcoef2('v',C1,S1,wavelet,2); 
            D21 = wrcoef2('d',C1,S1,wavelet,2);
            H31 = wrcoef2('h',C1,S1,wavelet,3);
            V31 = wrcoef2('v',C1,S1,wavelet,3); 
            D31 = wrcoef2('d',C1,S1,wavelet,3);
            H41 = wrcoef2('h',C1,S1,wavelet,4);
            V41 = wrcoef2('v',C1,S1,wavelet,4); 
            D41 = wrcoef2('d',C1,S1,wavelet,4);
            H51 = wrcoef2('h',C1,S1,wavelet,5);
            V51 = wrcoef2('v',C1,S1,wavelet,5); 
            D51 = wrcoef2('d',C1,S1,wavelet,5);
            
            A52 = wrcoef2('a',C2,S2,wavelet,5);
            A42 = wrcoef2('a',C2,S2,wavelet,4);
            A32 = wrcoef2('a',C2,S2,wavelet,3);
            A22 = wrcoef2('a',C2,S2,wavelet,2);
            A12 = wrcoef2('a',C2,S2,wavelet,1);
            H12 = wrcoef2('h',C2,S2,wavelet,1); 
            V12 = wrcoef2('v',C2,S2,wavelet,1); 
            D12 = wrcoef2('d',C2,S2,wavelet,1); 
            H22 = wrcoef2('h',C2,S2,wavelet,2);
            V22 = wrcoef2('v',C2,S2,wavelet,2); 
            D22 = wrcoef2('d',C2,S2,wavelet,2);
            H32 = wrcoef2('h',C2,S2,wavelet,3);
            V32 = wrcoef2('v',C2,S2,wavelet,3); 
            D32 = wrcoef2('d',C2,S2,wavelet,3);
            H42 = wrcoef2('h',C2,S2,wavelet,4);
            V42 = wrcoef2('v',C2,S2,wavelet,4); 
            D42 = wrcoef2('d',C2,S2,wavelet,4);    
            H52 = wrcoef2('h',C2,S2,wavelet,5);
            V52 = wrcoef2('v',C2,S2,wavelet,5); 
            D52 = wrcoef2('d',C2,S2,wavelet,5);
            
            A53 = wrcoef2('a',C3,S3,wavelet,5);
            A43 = wrcoef2('a',C3,S3,wavelet,4);
            A33 = wrcoef2('a',C3,S3,wavelet,3);
            A23 = wrcoef2('a',C3,S3,wavelet,2);
            A13 = wrcoef2('a',C3,S3,wavelet,1);
            H13 = wrcoef2('h',C3,S3,wavelet,1); 
            V13 = wrcoef2('v',C3,S3,wavelet,1); 
            D13 = wrcoef2('d',C3,S3,wavelet,1); 
            H23 = wrcoef2('h',C3,S3,wavelet,2);
            V23 = wrcoef2('v',C3,S3,wavelet,2); 
            D23 = wrcoef2('d',C3,S3,wavelet,2);
            H33 = wrcoef2('h',C3,S3,wavelet,3);
            V33 = wrcoef2('v',C3,S3,wavelet,3); 
            D33 = wrcoef2('d',C3,S3,wavelet,3);
            H43 = wrcoef2('h',C3,S3,wavelet,4);
            V43 = wrcoef2('v',C3,S3,wavelet,4); 
            D43 = wrcoef2('d',C3,S3,wavelet,4);    
            H53 = wrcoef2('h',C3,S3,wavelet,5);
            V53 = wrcoef2('v',C3,S3,wavelet,5); 
            D53 = wrcoef2('d',C3,S3,wavelet,5);
            
            A1(:,:,1) = A11;
            A1(:,:,2) = A12;
            A1(:,:,3) = A13;
            H1(:,:,1) = H11;
            H1(:,:,2) = H12;
            H1(:,:,3) = H13;
            V1(:,:,1) = V11;
            V1(:,:,2) = V12;
            V1(:,:,3) = V13;
            D1(:,:,1) = D11;
            D1(:,:,2) = D12;
            D1(:,:,3) = D13;
            A2(:,:,1) = A21;
            A2(:,:,2) = A22;
            A2(:,:,3) = A23;
            H2(:,:,1) = H21;
            H2(:,:,2) = H22;
            H2(:,:,3) = H23;
            V2(:,:,1) = V21;
            V2(:,:,2) = V22;
            V2(:,:,3) = V23;
            D2(:,:,1) = D21;
            D2(:,:,2) = D22;
            D2(:,:,3) = D23;
            A3(:,:,1) = A31;
            A3(:,:,2) = A32;
            A3(:,:,3) = A33;
            H3(:,:,1) = H31;
            H3(:,:,2) = H32;
            H3(:,:,3) = H33;
            V3(:,:,1) = V31;
            V3(:,:,2) = V32;
            V3(:,:,3) = V33;
            D3(:,:,1) = D31;
            D3(:,:,2) = D32;
            D3(:,:,3) = D33;
            A4(:,:,1) = A41;
            A4(:,:,2) = A42;
            A4(:,:,3) = A43;
            H4(:,:,1) = H41;
            H4(:,:,2) = H42;
            H4(:,:,3) = H43;
            V4(:,:,1) = V41;
            V3(:,:,2) = V42;
            V3(:,:,3) = V43;
            D4(:,:,1) = D41;
            D4(:,:,2) = D42;
            D4(:,:,3) = D43;
            A5(:,:,1) = A51;
            A5(:,:,2) = A52;
            A5(:,:,3) = A53;
            H5(:,:,1) = H51;
            H5(:,:,2) = H52;
            H5(:,:,3) = H53;
            V5(:,:,1) = V51;
            V5(:,:,2) = V52;
            V5(:,:,3) = V53;
            D5(:,:,1) = D51;
            D5(:,:,2) = D52;
            D5(:,:,3) = D53;
            
            % Display the results of a multilevel decomposition.
            % Displaying level 5 structure
            NbColors = 255;
            map = gray(NbColors);
            colormap(map);
            
            subplot(5,4,1);image(uint8(wcodemat(A1,192)));
            title('Approximation A1')
            subplot(5,4,2);image(uint8(wcodemat(H1,192)));
            title('Horizontal Detail H1')
            subplot(5,4,3);image(uint8(wcodemat(V1,192)));
            title('Vertical Detail V1')
            subplot(5,4,4);image(uint8(wcodemat(D1,192)));
            title('Diagonal Detail D1')
            subplot(5,4,5);image(uint8(wcodemat(A2,192)));
            title('Approximation A2')
            subplot(5,4,6);image(uint8(wcodemat(H2,192)));
            title('Horizontal Detail H2')
            subplot(5,4,7);image(uint8(wcodemat(V2,192)));
            title('Vertical Detail V2')
            subplot(5,4,8);image(uint8(wcodemat(D2,192)));
            title('Diagonal Detail D2')
            subplot(4,4,9);image(uint8(wcodemat(A3,192)));
            title('Approximation A3')
            subplot(5,4,10);image(uint8(wcodemat(H3,192)));
            title('Horizontal Detail H3')
            subplot(5,4,11);image(uint8(wcodemat(V3,192)));
            title('Vertical Detail V3')
            subplot(5,4,12);image(uint8(wcodemat(D3,192)));
            title('Diagonal Detail D3')
            subplot(5,4,13);image(uint8(wcodemat(A4,192)));
            title('Approximation A4')
            subplot(5,4,14);image(uint8(wcodemat(H4,192)));
            title('Horizontal Detail H4')
            subplot(5,4,15);image(uint8(wcodemat(V4,192)));
            title('Vertical Detail V4')
            subplot(5,4,16);image(uint8(wcodemat(D4,192)));
            title('Diagonal Detail D4')
            subplot(5,4,17);image(uint8(wcodemat(A5,192)));
            title('Approximation A5')
            subplot(5,4,18);image(uint8(wcodemat(H5,192)));
            title('Horizontal Detail H5')
            subplot(5,4,19);image(uint8(wcodemat(V5,192)));
            title('Vertical Detail V5')
            subplot(5,4,20);image(uint8(wcodemat(D5,192)));
            title('Diagonal Detail D5')
            pause
            
            subplot(1,1,1,'replace')
            colors = size(unique(X));
            grayLevels = colors(1);
            
            
             %1st level coefficient coding
            a1_cod1 = wcodemat(A11,grayLevels);
            d1_hcod1 = wcodemat(H11,grayLevels);
            d1_vcod1 = wcodemat(V11,grayLevels);
            d1_dcod1 = wcodemat(D11,grayLevels);
            
            a1_cod2 = wcodemat(A12,grayLevels);
            d1_hcod2 = wcodemat(H12,grayLevels);
            d1_vcod2 = wcodemat(V12,grayLevels);
            d1_dcod2 = wcodemat(D12,grayLevels);
           
            a1_cod3 = wcodemat(A13,grayLevels);
            d1_hcod3 = wcodemat(H13,grayLevels);
            d1_vcod3 = wcodemat(V13,grayLevels);
            d1_dcod3 = wcodemat(D13,grayLevels);
                       
            %2nd level coefficient coding
            a2_cod1 = wcodemat(A21,grayLevels);
            d2_hcod1 = wcodemat(H21,grayLevels);
            d2_vcod1 = wcodemat(V21,grayLevels);
            d2_dcod1 = wcodemat(D21,grayLevels);

            a2_cod2 = wcodemat(A22,grayLevels);
            d2_hcod2 = wcodemat(H22,grayLevels);
            d2_vcod2 = wcodemat(V22,grayLevels);
            d2_dcod2 = wcodemat(D22,grayLevels);
            
            a2_cod3 = wcodemat(A23,grayLevels);
            d2_hcod3 = wcodemat(H23,grayLevels);
            d2_vcod3 = wcodemat(V23,grayLevels);
            d2_dcod3 = wcodemat(D23,grayLevels);
            
            % 3rd level coefficients coding
            a3_cod1 = wcodemat(A31,grayLevels);
            d3_hcod1 = wcodemat(H31,grayLevels);
            d3_vcod1 = wcodemat(V31,grayLevels);
            d3_dcod1 = wcodemat(D31,grayLevels);
            
            a3_cod2 = wcodemat(A32,grayLevels);
            d3_hcod2 = wcodemat(H32,grayLevels);
            d3_vcod2 = wcodemat(V32,grayLevels);
            d3_dcod2 = wcodemat(D32,grayLevels);
            
            a3_cod3 = wcodemat(A33,grayLevels);
            d3_hcod3 = wcodemat(H33,grayLevels);
            d3_vcod3 = wcodemat(V33,grayLevels);
            d3_dcod3 = wcodemat(D33,grayLevels);                       
            
            %4th level coefficient coding
            a4_cod1 = wcodemat(A41,grayLevels);
            d4_hcod1 = wcodemat(H41,grayLevels);
            d4_vcod1 = wcodemat(V41,grayLevels);
            d4_dcod1 = wcodemat(D41,grayLevels);
            
            a4_cod2 = wcodemat(A42,grayLevels);
            d4_hcod2 = wcodemat(H42,grayLevels);
            d4_vcod2 = wcodemat(V42,grayLevels);
            d4_dcod2 = wcodemat(D42,grayLevels);
            
            a4_cod3 = wcodemat(A43,grayLevels);
            d4_hcod3 = wcodemat(H43,grayLevels);
            d4_vcod3 = wcodemat(V43,grayLevels);
            d4_dcod3 = wcodemat(D43,grayLevels);
            
            %5th level coefficients coding
            a5_cod1 = wcodemat(A51,grayLevels);
            d5_hcod1 = wcodemat(H51,grayLevels);
            d5_vcod1 = wcodemat(V51,grayLevels);
            d5_dcod1 = wcodemat(D51,grayLevels);
            
            a5_cod2 = wcodemat(A52,grayLevels);
            d5_hcod2 = wcodemat(H52,grayLevels);
            d5_vcod2 = wcodemat(V52,grayLevels);
            d5_dcod2 = wcodemat(D52,grayLevels);
            
            a5_cod3 = wcodemat(A53,grayLevels);
            d5_hcod3 = wcodemat(H53,grayLevels);
            d5_vcod3 = wcodemat(V53,grayLevels);
            d5_dcod3 = wcodemat(D53,grayLevels);
            
            L51 = [imresize([imresize([imresize([imresize([a5_cod1,d5_hcod1;d5_vcod1,d5_dcod1],size(d4_hcod1),'bilinear'),d4_hcod1;d4_vcod1,d4_dcod1],size(d3_hcod1),'bilinear'),d3_hcod1;d3_vcod1,d3_dcod1],size(d2_hcod1),'bilinear'),d2_hcod1;d2_vcod1,d2_dcod1],size(d1_hcod1),'bilinear'),d1_hcod1;d1_vcod1,d1_dcod1];
            L52 = [imresize([imresize([imresize([imresize([a5_cod2,d5_hcod2;d5_vcod2,d5_dcod2],size(d4_hcod2),'bilinear'),d4_hcod2;d4_vcod2,d4_dcod2],size(d3_hcod2),'bilinear'),d3_hcod2;d3_vcod2,d3_dcod2],size(d2_hcod2),'bilinear'),d2_hcod2;d2_vcod2,d2_dcod2],size(d1_hcod2),'bilinear'),d1_hcod2;d1_vcod2,d1_dcod2];
            L53 = [imresize([imresize([imresize([imresize([a5_cod3,d5_hcod3;d5_vcod3,d5_dcod3],size(d4_hcod3),'bilinear'),d4_hcod3;d4_vcod3,d4_dcod3],size(d3_hcod3),'bilinear'),d3_hcod3;d3_vcod3,d3_dcod3],size(d2_hcod3),'bilinear'),d2_hcod3;d2_vcod3,d2_dcod3],size(d1_hcod3),'bilinear'),d1_hcod3;d1_vcod3,d1_dcod3];

            L5(:,:,1) = L51;
            L5(:,:,2) = L52;
            L5(:,:,3) = L53;
            image(uint8(L5));
            axis image;
            title('Level 5 decomposition');
            pause
                        
            % Compress the image and display it. 
            % To compress the original image X, use the ddencmp command to calculate the default parameters
            % and the wdencmp command to perform the actual compression.
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X1);
            [Xcomp1,CXC1,LXC1,PERF01,PERFL21] = wdencmp('gbl',C1,S1,wavelet,5,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X2);
            [Xcomp2,CXC2,LXC2,PERF02,PERFL22] = wdencmp('gbl',C2,S2,wavelet,5,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X3);
            [Xcomp3,CXC3,LXC3,PERF03,PERFL23] = wdencmp('gbl',C3,S3,wavelet,5,thr,sorh,keepapp);     
            Xcomp(:,:,1) = Xcomp1;
            Xcomp(:,:,2) = Xcomp2;
            Xcomp(:,:,3) = Xcomp3;
            NC1 = wthcoef2('t',C1,S1,5,thr,'s');
            NC2 = wthcoef2('t',C2,S2,5,thr,'s');
            NC3 = wthcoef2('t',C3,S3,5,thr,'s');
            A(:,:,1) = a5_cod1;
            A(:,:,2) = a5_cod2;
            A(:,:,3) = a5_cod3;
            
        case 6,
             %To perform a level 6 decomposition of the image
            [C1,S1] = wavedec2(X1,6,wavelet);
            [C2,S2] = wavedec2(X2,6,wavelet);
            [C3,S3] = wavedec2(X3,6,wavelet);
            
            %To reconstruct the level 1,2,3,4 approximation from C,
            A61 = wrcoef2('a',C1,S1,wavelet,6);
            A51 = wrcoef2('a',C1,S1,wavelet,5);
            A41 = wrcoef2('a',C1,S1,wavelet,4);
            A31 = wrcoef2('a',C1,S1,wavelet,3);
            A21 = wrcoef2('a',C1,S1,wavelet,2);
            A11 = wrcoef2('a',C1,S1,wavelet,1);
            H11 = wrcoef2('h',C1,S1,wavelet,1); 
            V11 = wrcoef2('v',C1,S1,wavelet,1); 
            D11 = wrcoef2('d',C1,S1,wavelet,1); 
            H21 = wrcoef2('h',C1,S1,wavelet,2);
            V21 = wrcoef2('v',C1,S1,wavelet,2); 
            D21 = wrcoef2('d',C1,S1,wavelet,2);
            H31 = wrcoef2('h',C1,S1,wavelet,3);
            V31 = wrcoef2('v',C1,S1,wavelet,3); 
            D31 = wrcoef2('d',C1,S1,wavelet,3);
            H41 = wrcoef2('h',C1,S1,wavelet,4);
            V41 = wrcoef2('v',C1,S1,wavelet,4); 
            D41 = wrcoef2('d',C1,S1,wavelet,4);
            H51 = wrcoef2('h',C1,S1,wavelet,5);
            V51 = wrcoef2('v',C1,S1,wavelet,5); 
            D51 = wrcoef2('d',C1,S1,wavelet,5);
            H61 = wrcoef2('h',C1,S1,wavelet,6);
            V61 = wrcoef2('v',C1,S1,wavelet,6); 
            D61 = wrcoef2('d',C1,S1,wavelet,6);
            
            A62 = wrcoef2('a',C2,S2,wavelet,6);
            A52 = wrcoef2('a',C1,S1,wavelet,5);
            A42 = wrcoef2('a',C2,S2,wavelet,4);
            A32 = wrcoef2('a',C2,S2,wavelet,3);
            A22 = wrcoef2('a',C2,S2,wavelet,2);
            A12 = wrcoef2('a',C2,S2,wavelet,1);
            H12 = wrcoef2('h',C2,S2,wavelet,1); 
            V12 = wrcoef2('v',C2,S2,wavelet,1); 
            D12 = wrcoef2('d',C2,S2,wavelet,1); 
            H22 = wrcoef2('h',C2,S2,wavelet,2);
            V22 = wrcoef2('v',C2,S2,wavelet,2); 
            D22 = wrcoef2('d',C2,S2,wavelet,2);
            H32 = wrcoef2('h',C2,S2,wavelet,3);
            V32 = wrcoef2('v',C2,S2,wavelet,3); 
            D32 = wrcoef2('d',C2,S2,wavelet,3);
            H42 = wrcoef2('h',C2,S2,wavelet,4);
            V42 = wrcoef2('v',C2,S2,wavelet,4); 
            D42 = wrcoef2('d',C2,S2,wavelet,4);    
            H52 = wrcoef2('h',C1,S1,wavelet,5);
            V52 = wrcoef2('v',C1,S1,wavelet,5); 
            D52 = wrcoef2('d',C1,S1,wavelet,5);
            H62 = wrcoef2('h',C1,S1,wavelet,6);
            V62 = wrcoef2('v',C1,S1,wavelet,6); 
            D62 = wrcoef2('d',C1,S1,wavelet,6);
            
            A63 = wrcoef2('a',C3,S3,wavelet,6);
            A53 = wrcoef2('a',C1,S1,wavelet,5);
            A43 = wrcoef2('a',C3,S3,wavelet,4);
            A33 = wrcoef2('a',C3,S3,wavelet,3);
            A23 = wrcoef2('a',C3,S3,wavelet,2);
            A13 = wrcoef2('a',C3,S3,wavelet,1);
            H13 = wrcoef2('h',C3,S3,wavelet,1); 
            V13 = wrcoef2('v',C3,S3,wavelet,1); 
            D13 = wrcoef2('d',C3,S3,wavelet,1); 
            H23 = wrcoef2('h',C3,S3,wavelet,2);
            V23 = wrcoef2('v',C3,S3,wavelet,2); 
            D23 = wrcoef2('d',C3,S3,wavelet,2);
            H33 = wrcoef2('h',C3,S3,wavelet,3);
            V33 = wrcoef2('v',C3,S3,wavelet,3); 
            D33 = wrcoef2('d',C3,S3,wavelet,3);
            H43 = wrcoef2('h',C3,S3,wavelet,4);
            V43 = wrcoef2('v',C3,S3,wavelet,4); 
            D43 = wrcoef2('d',C3,S3,wavelet,4);    
            H53 = wrcoef2('h',C1,S1,wavelet,5);
            V53 = wrcoef2('v',C1,S1,wavelet,5); 
            D53 = wrcoef2('d',C1,S1,wavelet,5);
            H63 = wrcoef2('h',C1,S1,wavelet,6);
            V63 = wrcoef2('v',C1,S1,wavelet,6); 
            D63 = wrcoef2('d',C1,S1,wavelet,6);
            
            A1(:,:,1) = A11;
            A1(:,:,2) = A12;
            A1(:,:,3) = A13;
            H1(:,:,1) = H11;
            H1(:,:,2) = H12;
            H1(:,:,3) = H13;
            V1(:,:,1) = V11;
            V1(:,:,2) = V12;
            V1(:,:,3) = V13;
            D1(:,:,1) = D11;
            D1(:,:,2) = D12;
            D1(:,:,3) = D13;
            A2(:,:,1) = A21;
            A2(:,:,2) = A22;
            A2(:,:,3) = A23;
            H2(:,:,1) = H21;
            H2(:,:,2) = H22;
            H2(:,:,3) = H23;
            V2(:,:,1) = V21;
            V2(:,:,2) = V22;
            V2(:,:,3) = V23;
            D2(:,:,1) = D21;
            D2(:,:,2) = D22;
            D2(:,:,3) = D23;
            A3(:,:,1) = A31;
            A3(:,:,2) = A32;
            A3(:,:,3) = A33;
            H3(:,:,1) = H31;
            H3(:,:,2) = H32;
            H3(:,:,3) = H33;
            V3(:,:,1) = V31;
            V3(:,:,2) = V32;
            V3(:,:,3) = V33;
            D3(:,:,1) = D31;
            D3(:,:,2) = D32;
            D3(:,:,3) = D33;
            A4(:,:,1) = A41;
            A4(:,:,2) = A42;
            A4(:,:,3) = A43;
            H4(:,:,1) = H41;
            H4(:,:,2) = H42;
            H4(:,:,3) = H43;
            V4(:,:,1) = V41;
            V3(:,:,2) = V42;
            V3(:,:,3) = V43;
            D4(:,:,1) = D41;
            D4(:,:,2) = D42;
            D4(:,:,3) = D43;
            A5(:,:,1) = A51;
            A5(:,:,2) = A52;
            A5(:,:,3) = A53;
            H5(:,:,1) = H51;
            H5(:,:,2) = H52;
            H5(:,:,3) = H53;
            V5(:,:,1) = V51;
            V5(:,:,2) = V52;
            V5(:,:,3) = V53;
            D5(:,:,1) = D51;
            D5(:,:,2) = D52;
            D5(:,:,3) = D53;
            A6(:,:,1) = A61;
            A6(:,:,2) = A62;
            A6(:,:,3) = A63;
            H6(:,:,1) = H61;
            H6(:,:,2) = H62;
            H6(:,:,3) = H63;
            V6(:,:,1) = V61;
            V6(:,:,2) = V62;
            V6(:,:,3) = V63;
            D6(:,:,1) = D61;
            D6(:,:,2) = D62;
            D6(:,:,3) = D63;
                       
            % Display the results of a multilevel decomposition.
            % Displaying level 5 structure
            NbColors = 255;
            map = gray(NbColors);
            colormap(map);
            
            subplot(6,4,1);image(uint8(wcodemat(A1,192)));
            title('Approximation A1')
            subplot(6,4,2);image(uint8(wcodemat(H1,192)));
            title('Horizontal Detail H1')
            subplot(6,4,3);image(uint8(wcodemat(V1,192)));
            title('Vertical Detail V1')
            subplot(6,4,4);image(uint8(wcodemat(D1,192)));
            title('Diagonal Detail D1')
            subplot(6,4,5);image(uint8(wcodemat(A2,192)));
            title('Approximation A2')
            subplot(6,4,6);image(uint8(wcodemat(H2,192)));
            title('Horizontal Detail H2')
            subplot(6,4,7);image(uint8(wcodemat(V2,192)));
            title('Vertical Detail V2')
            subplot(6,4,8);image(uint8(wcodemat(D2,192)));
            title('Diagonal Detail D2')
            subplot(6,4,9);image(uint8(wcodemat(A3,192)));
            title('Approximation A3')
            subplot(6,4,10);image(uint8(wcodemat(H3,192)));
            title('Horizontal Detail H3')
            subplot(6,4,11);image(uint8(wcodemat(V3,192)));
            title('Vertical Detail V3')
            subplot(6,4,12);image(uint8(wcodemat(D3,192)));
            title('Diagonal Detail D3')
            subplot(6,4,13);image(uint8(wcodemat(A4,192)));
            title('Approximation A4')
            subplot(6,4,14);image(uint8(wcodemat(H4,192)));
            title('Horizontal Detail H4')
            subplot(6,4,15);image(uint8(wcodemat(V4,192)));
            title('Vertical Detail V4')
            subplot(6,4,16);image(uint8(wcodemat(D4,192)));
            title('Diagonal Detail D4')
            subplot(6,4,17);image(uint8(wcodemat(A5,192)));
            title('Approximation A5')
            subplot(6,4,18);image(uint8(wcodemat(H5,192)));
            title('Horizontal Detail H5')
            subplot(6,4,19);image(uint8(wcodemat(V5,192)));
            title('Vertical Detail V5')
            subplot(6,4,20);image(uint8(wcodemat(D5,192)));
            title('Diagonal Detail D5')
            pause
            
            subplot(1,1,1,'replace')
            colors = size(unique(X));
            grayLevels = colors(1);
            
             %1st level coefficient coding
            a1_cod1 = wcodemat(A11,grayLevels);
            d1_hcod1 = wcodemat(H11,grayLevels);
            d1_vcod1 = wcodemat(V11,grayLevels);
            d1_dcod1 = wcodemat(D11,grayLevels);
            
            a1_cod2 = wcodemat(A12,grayLevels);
            d1_hcod2 = wcodemat(H12,grayLevels);
            d1_vcod2 = wcodemat(V12,grayLevels);
            d1_dcod2 = wcodemat(D12,grayLevels);
           
            a1_cod3 = wcodemat(A13,grayLevels);
            d1_hcod3 = wcodemat(H13,grayLevels);
            d1_vcod3 = wcodemat(V13,grayLevels);
            d1_dcod3 = wcodemat(D13,grayLevels);
                       
            %2nd level coefficient coding
            a2_cod1 = wcodemat(A21,grayLevels);
            d2_hcod1 = wcodemat(H21,grayLevels);
            d2_vcod1 = wcodemat(V21,grayLevels);
            d2_dcod1 = wcodemat(D21,grayLevels);

            a2_cod2 = wcodemat(A22,grayLevels);
            d2_hcod2 = wcodemat(H22,grayLevels);
            d2_vcod2 = wcodemat(V22,grayLevels);
            d2_dcod2 = wcodemat(D22,grayLevels);
            
            a2_cod3 = wcodemat(A23,grayLevels);
            d2_hcod3 = wcodemat(H23,grayLevels);
            d2_vcod3 = wcodemat(V23,grayLevels);
            d2_dcod3 = wcodemat(D23,grayLevels);
            
            % 3rd level coefficients coding
            a3_cod1 = wcodemat(A31,grayLevels);
            d3_hcod1 = wcodemat(H31,grayLevels);
            d3_vcod1 = wcodemat(V31,grayLevels);
            d3_dcod1 = wcodemat(D31,grayLevels);
            
            a3_cod2 = wcodemat(A32,grayLevels);
            d3_hcod2 = wcodemat(H32,grayLevels);
            d3_vcod2 = wcodemat(V32,grayLevels);
            d3_dcod2 = wcodemat(D32,grayLevels);
            
            a3_cod3 = wcodemat(A33,grayLevels);
            d3_hcod3 = wcodemat(H33,grayLevels);
            d3_vcod3 = wcodemat(V33,grayLevels);
            d3_dcod3 = wcodemat(D33,grayLevels);                       
            
            %4th level coefficient coding
            a4_cod1 = wcodemat(A41,grayLevels);
            d4_hcod1 = wcodemat(H41,grayLevels);
            d4_vcod1 = wcodemat(V41,grayLevels);
            d4_dcod1 = wcodemat(D41,grayLevels);
            
            a4_cod2 = wcodemat(A42,grayLevels);
            d4_hcod2 = wcodemat(H42,grayLevels);
            d4_vcod2 = wcodemat(V42,grayLevels);
            d4_dcod2 = wcodemat(D42,grayLevels);
            
            a4_cod3 = wcodemat(A43,grayLevels);
            d4_hcod3 = wcodemat(H43,grayLevels);
            d4_vcod3 = wcodemat(V43,grayLevels);
            d4_dcod3 = wcodemat(D43,grayLevels);
            
            %5th level coefficients coding
            a5_cod1 = wcodemat(A51,grayLevels);
            d5_hcod1 = wcodemat(H51,grayLevels);
            d5_vcod1 = wcodemat(V51,grayLevels);
            d5_dcod1 = wcodemat(D51,grayLevels);
            
            a5_cod2 = wcodemat(A52,grayLevels);
            d5_hcod2 = wcodemat(H52,grayLevels);
            d5_vcod2 = wcodemat(V52,grayLevels);
            d5_dcod2 = wcodemat(D52,grayLevels);
            
            a5_cod3 = wcodemat(A53,grayLevels);
            d5_hcod3 = wcodemat(H53,grayLevels);
            d5_vcod3 = wcodemat(V53,grayLevels);
            d5_dcod3 = wcodemat(D53,grayLevels);
            
            %6th level coefficients coding
            a6_cod1 = wcodemat(A61,grayLevels);
            d6_hcod1 = wcodemat(H61,grayLevels);
            d6_vcod1 = wcodemat(V61,grayLevels);
            d6_dcod1 = wcodemat(D61,grayLevels);
            
            a6_cod2 = wcodemat(A62,grayLevels);
            d6_hcod2 = wcodemat(H62,grayLevels);
            d6_vcod2 = wcodemat(V62,grayLevels);
            d6_dcod2 = wcodemat(D62,grayLevels);
            
            a6_cod3 = wcodemat(A63,grayLevels);
            d6_hcod3 = wcodemat(H63,grayLevels);
            d6_vcod3 = wcodemat(V63,grayLevels);
            d6_dcod3 = wcodemat(D63,grayLevels);
            
            L61 = [imresize([imresize([imresize([imresize([imresize([a6_cod1,d6_hcod1;d6_vcod1,d6_dcod1],size(d5_hcod1),'bilinear'),d5_hcod1;d5_vcod1,d5_dcod1],size(d4_hcod1),'bilinear'),d4_hcod1;d4_vcod1,d4_dcod1],size(d3_hcod1),'bilinear'),d3_hcod1;d3_vcod1,d3_dcod1],size(d2_hcod1),'bilinear'),d2_hcod1;d2_vcod1,d2_dcod1],size(d1_hcod1),'bilinear'),d1_hcod1;d1_vcod1,d1_dcod1];
            L62 = [imresize([imresize([imresize([imresize([imresize([a6_cod2,d6_hcod2;d6_vcod3,d6_dcod2],size(d5_hcod2),'bilinear'),d5_hcod2;d5_vcod2,d5_dcod2],size(d4_hcod2),'bilinear'),d4_hcod2;d4_vcod2,d4_dcod2],size(d3_hcod2),'bilinear'),d3_hcod2;d3_vcod2,d3_dcod2],size(d2_hcod2),'bilinear'),d2_hcod2;d2_vcod2,d2_dcod2],size(d1_hcod2),'bilinear'),d1_hcod2;d1_vcod2,d1_dcod2];
            L63 = [imresize([imresize([imresize([imresize([imresize([a6_cod3,d6_hcod3;d6_vcod3,d6_dcod3],size(d5_hcod3),'bilinear'),d5_hcod3;d5_vcod3,d5_dcod3],size(d4_hcod3),'bilinear'),d4_hcod3;d4_vcod3,d4_dcod3],size(d3_hcod3),'bilinear'),d3_hcod3;d3_vcod3,d3_dcod3],size(d2_hcod3),'bilinear'),d2_hcod3;d2_vcod3,d2_dcod3],size(d1_hcod3),'bilinear'),d1_hcod3;d1_vcod3,d1_dcod3];
            
            L6(:,:,1) = L61;
            L6(:,:,2) = L62;
            L6(:,:,3) = L63;
            
            image(uint8(L6));
            axis image;
            title('Level 6 decompsition');
            pause
            
            % Compress the image and display it. 
            % To compress the original image X, use the ddencmp command to calculate the default parameters
            % and the wdencmp command to perform the actual compression.
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X1);
            [Xcomp1,CXC1,LXC1,PERF01,PERFL21] = wdencmp('gbl',C1,S1,wavelet,6,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X2);
            [Xcomp2,CXC2,LXC2,PERF02,PERFL22] = wdencmp('gbl',C2,S2,wavelet,6,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X3);
            [Xcomp3,CXC3,LXC3,PERF03,PERFL23] = wdencmp('gbl',C3,S3,wavelet,6,thr,sorh,keepapp);     
            Xcomp(:,:,1) = Xcomp1;
            Xcomp(:,:,2) = Xcomp2;
            Xcomp(:,:,3) = Xcomp3;
            NC1 = wthcoef2('t',C1,S1,6,thr,'s');
            NC2 = wthcoef2('t',C2,S2,6,thr,'s');
            NC3 = wthcoef2('t',C3,S3,6,thr,'s');
            A(:,:,1) = a6_cod1;
            A(:,:,2) = a6_cod2;
            A(:,:,3) = a6_cod3;
            
        case 7,
            %To perform a level 7 decomposition of the image
            [C1,S1] = wavedec2(X1,7,wavelet);
            [C2,S2] = wavedec2(X2,7,wavelet);
            [C3,S3] = wavedec2(X3,7,wavelet);
            
            %To reconstruct the level 1,2,3,4 approximation from C,
            A71 = wrcoef2('a',C1,S1,wavelet,7);
            A61 = wrcoef2('a',C1,S1,wavelet,6);
            A51 = wrcoef2('a',C1,S1,wavelet,5);
            A41 = wrcoef2('a',C1,S1,wavelet,4);
            A31 = wrcoef2('a',C1,S1,wavelet,3);
            A21 = wrcoef2('a',C1,S1,wavelet,2);
            A11 = wrcoef2('a',C1,S1,wavelet,1);
            H11 = wrcoef2('h',C1,S1,wavelet,1); 
            V11 = wrcoef2('v',C1,S1,wavelet,1); 
            D11 = wrcoef2('d',C1,S1,wavelet,1); 
            H21 = wrcoef2('h',C1,S1,wavelet,2);
            V21 = wrcoef2('v',C1,S1,wavelet,2); 
            D21 = wrcoef2('d',C1,S1,wavelet,2);
            H31 = wrcoef2('h',C1,S1,wavelet,3);
            V31 = wrcoef2('v',C1,S1,wavelet,3); 
            D31 = wrcoef2('d',C1,S1,wavelet,3);
            H41 = wrcoef2('h',C1,S1,wavelet,4);
            V41 = wrcoef2('v',C1,S1,wavelet,4); 
            D41 = wrcoef2('d',C1,S1,wavelet,4);
            H51 = wrcoef2('h',C1,S1,wavelet,5);
            V51 = wrcoef2('v',C1,S1,wavelet,5); 
            D51 = wrcoef2('d',C1,S1,wavelet,5);
            H61 = wrcoef2('h',C1,S1,wavelet,6);
            V61 = wrcoef2('v',C1,S1,wavelet,6); 
            D61 = wrcoef2('d',C1,S1,wavelet,6);
            H71 = wrcoef2('h',C1,S1,wavelet,7);
            V71 = wrcoef2('v',C1,S1,wavelet,7); 
            D71 = wrcoef2('d',C1,S1,wavelet,7);
           
            A72 = wrcoef2('a',C2,S2,wavelet,7);
            A62 = wrcoef2('a',C2,S2,wavelet,6);
            A52 = wrcoef2('a',C2,S2,wavelet,5);
            A42 = wrcoef2('a',C2,S2,wavelet,4);
            A32 = wrcoef2('a',C2,S2,wavelet,3);
            A22 = wrcoef2('a',C2,S2,wavelet,2);
            A12 = wrcoef2('a',C2,S2,wavelet,1);
            H12 = wrcoef2('h',C2,S2,wavelet,1); 
            V12 = wrcoef2('v',C2,S2,wavelet,1); 
            D12 = wrcoef2('d',C2,S2,wavelet,1); 
            H22 = wrcoef2('h',C2,S2,wavelet,2);
            V22 = wrcoef2('v',C2,S2,wavelet,2); 
            D22 = wrcoef2('d',C2,S2,wavelet,2);
            H32 = wrcoef2('h',C2,S2,wavelet,3);
            V32 = wrcoef2('v',C2,S2,wavelet,3); 
            D32 = wrcoef2('d',C2,S2,wavelet,3);
            H42 = wrcoef2('h',C2,S2,wavelet,4);
            V42 = wrcoef2('v',C2,S2,wavelet,4); 
            D42 = wrcoef2('d',C2,S2,wavelet,4);    
            H52 = wrcoef2('h',C2,S2,wavelet,5);
            V52 = wrcoef2('v',C2,S2,wavelet,5); 
            D52 = wrcoef2('d',C2,S2,wavelet,5);
            H62 = wrcoef2('h',C2,S2,wavelet,6);
            V62 = wrcoef2('v',C2,S2,wavelet,6); 
            D62 = wrcoef2('d',C2,S2,wavelet,6);
            H72 = wrcoef2('h',C2,S2,wavelet,7);
            V72 = wrcoef2('v',C2,S2,wavelet,7); 
            D72 = wrcoef2('d',C2,S2,wavelet,7);
            
            A73 = wrcoef2('a',C3,S3,wavelet,7);
            A63 = wrcoef2('a',C3,S3,wavelet,6);
            A53 = wrcoef2('a',C3,S3,wavelet,5);
            A43 = wrcoef2('a',C3,S3,wavelet,4);
            A33 = wrcoef2('a',C3,S3,wavelet,3);
            A23 = wrcoef2('a',C3,S3,wavelet,2);
            A13 = wrcoef2('a',C3,S3,wavelet,1);
            H13 = wrcoef2('h',C3,S3,wavelet,1); 
            V13 = wrcoef2('v',C3,S3,wavelet,1); 
            D13 = wrcoef2('d',C3,S3,wavelet,1); 
            H23 = wrcoef2('h',C3,S3,wavelet,2);
            V23 = wrcoef2('v',C3,S3,wavelet,2); 
            D23 = wrcoef2('d',C3,S3,wavelet,2);
            H33 = wrcoef2('h',C3,S3,wavelet,3);
            V33 = wrcoef2('v',C3,S3,wavelet,3); 
            D33 = wrcoef2('d',C3,S3,wavelet,3);
            H43 = wrcoef2('h',C3,S3,wavelet,4);
            V43 = wrcoef2('v',C3,S3,wavelet,4); 
            D43 = wrcoef2('d',C3,S3,wavelet,4);    
            H53 = wrcoef2('h',C3,S3,wavelet,5);
            V53 = wrcoef2('v',C3,S3,wavelet,5); 
            D53 = wrcoef2('d',C3,S3,wavelet,5);
            H63 = wrcoef2('h',C3,S3,wavelet,6);
            V63 = wrcoef2('v',C3,S3,wavelet,6); 
            D63 = wrcoef2('d',C3,S3,wavelet,6);
            H73 = wrcoef2('h',C3,S3,wavelet,7);
            V73 = wrcoef2('v',C3,S3,wavelet,7); 
            D73 = wrcoef2('d',C3,S3,wavelet,7);
            
            A1(:,:,1) = A11;
            A1(:,:,2) = A12;
            A1(:,:,3) = A13;
            H1(:,:,1) = H11;
            H1(:,:,2) = H12;
            H1(:,:,3) = H13;
            V1(:,:,1) = V11;
            V1(:,:,2) = V12;
            V1(:,:,3) = V13;
            D1(:,:,1) = D11;
            D1(:,:,2) = D12;
            D1(:,:,3) = D13;
            A2(:,:,1) = A21;
            A2(:,:,2) = A22;
            A2(:,:,3) = A23;
            H2(:,:,1) = H21;
            H2(:,:,2) = H22;
            H2(:,:,3) = H23;
            V2(:,:,1) = V21;
            V2(:,:,2) = V22;
            V2(:,:,3) = V23;
            D2(:,:,1) = D21;
            D2(:,:,2) = D22;
            D2(:,:,3) = D23;
            A3(:,:,1) = A31;
            A3(:,:,2) = A32;
            A3(:,:,3) = A33;
            H3(:,:,1) = H31;
            H3(:,:,2) = H32;
            H3(:,:,3) = H33;
            V3(:,:,1) = V31;
            V3(:,:,2) = V32;
            V3(:,:,3) = V33;
            D3(:,:,1) = D31;
            D3(:,:,2) = D32;
            D3(:,:,3) = D33;
            A4(:,:,1) = A41;
            A4(:,:,2) = A42;
            A4(:,:,3) = A43;
            H4(:,:,1) = H41;
            H4(:,:,2) = H42;
            H4(:,:,3) = H43;
            V4(:,:,1) = V41;
            V3(:,:,2) = V42;
            V3(:,:,3) = V43;
            D4(:,:,1) = D41;
            D4(:,:,2) = D42;
            D4(:,:,3) = D43;
            A5(:,:,1) = A51;
            A5(:,:,2) = A52;
            A5(:,:,3) = A53;
            H5(:,:,1) = H51;
            H5(:,:,2) = H52;
            H5(:,:,3) = H53;
            V5(:,:,1) = V51;
            V5(:,:,2) = V52;
            V5(:,:,3) = V53;
            D5(:,:,1) = D51;
            D5(:,:,2) = D52;
            D5(:,:,3) = D53;
            A6(:,:,1) = A61;
            A6(:,:,2) = A62;
            A6(:,:,3) = A63;
            H6(:,:,1) = H61;
            H6(:,:,2) = H62;
            H6(:,:,3) = H63;
            V6(:,:,1) = V61;
            V6(:,:,2) = V62;
            V6(:,:,3) = V63;
            D6(:,:,1) = D61;
            D6(:,:,2) = D62;
            D6(:,:,3) = D63;
            A7(:,:,1) = A71;
            A7(:,:,2) = A72;
            A7(:,:,3) = A73;
            H7(:,:,1) = H71;
            H7(:,:,2) = H72;
            H7(:,:,3) = H73;
            V7(:,:,1) = V71;
            V7(:,:,2) = V72;
            V7(:,:,3) = V73;
            D7(:,:,1) = D71;
            D7(:,:,2) = D72;
            D7(:,:,3) = D73;
            D7(:,:,1) = D71;
            D7(:,:,2) = D72;
            D7(:,:,3) = D73;
            
            % Display the results of a multilevel decomposition.
            % Displaying level 4 structure
            NbColors = 255;
            map = gray(NbColors);
            colormap(map);
            subplot(7,4,1);image(uint8(wcodemat(A1,192)));
            title('Approximation A1')
            subplot(7,4,2);image(uint8(wcodemat(H1,192)));
            title('Horizontal Detail H1')
            subplot(7,4,3);image(uint8(wcodemat(V1,192)));
            title('Vertical Detail V1')
            subplot(7,4,4);image(uint8(wcodemat(D1,192)));
            title('Diagonal Detail D1')
            subplot(7,4,5);image(uint8(wcodemat(A2,192)));
            title('Approximation A2')
            subplot(7,4,6);image(uint8(wcodemat(H2,192)));
            title('Horizontal Detail H2')
            subplot(7,4,7);image(uint8(wcodemat(V2,192)));
            title('Vertical Detail V2')
            subplot(7,4,8);image(uint8(wcodemat(D2,192)));
            title('Diagonal Detail D2')
            subplot(7,4,9);image(uint8(wcodemat(A3,192)));
            title('Approximation A3')
            subplot(7,4,10);image(uint8(wcodemat(H3,192)));
            title('Horizontal Detail H3')
            subplot(7,4,11);image(uint8(wcodemat(V3,192)));
            title('Vertical Detail V3')
            subplot(7,4,12);image(uint8(wcodemat(D3,192)));
            title('Diagonal Detail D3')
            subplot(7,4,13);image(uint8(wcodemat(A4,192)));
            title('Approximation A4')
            subplot(7,4,14);image(uint8(wcodemat(H4,192)));
            title('Horizontal Detail H4')
            subplot(7,4,15);image(uint8(wcodemat(V4,192)));
            title('Vertical Detail V4')
            subplot(7,4,16);image(uint8(wcodemat(D4,192)));
            title('Diagonal Detail D4')
            subplot(7,4,17);image(uint8(wcodemat(A5,192)));
            title('Approximation A5')
            subplot(7,4,18);image(uint8(wcodemat(H5,192)));
            title('Horizontal Detail H5')
            subplot(7,4,19);image(uint8(wcodemat(V5,192)));
            title('Vertical Detail V5')
            subplot(7,4,20);image(uint8(wcodemat(D5,192)));
            title('Diagonal Detail D5')
             subplot(7,4,21);image(uint8(wcodemat(A6,192)));
            title('Approximation A6')
            subplot(7,4,22);image(uint8(wcodemat(H6,192)));
            title('Horizontal Detail H6')
            subplot(7,4,23);image(uint8(wcodemat(V6,192)));
            title('Vertical Detail V6')
            subplot(7,4,24);image(uint8(wcodemat(D6,192)));
            title('Diagonal Detail D6')
             subplot(7,4,25);image(uint8(wcodemat(A7,192)));
            title('Approximation A7')
            subplot(7,4,26);image(uint8(wcodemat(H7,192)));
            title('Horizontal Detail H7')
            subplot(7,4,27);image(uint8(wcodemat(V7,192)));
            title('Vertical Detail V7')
            subplot(7,4,28);image(uint8(wcodemat(D7,192)));
            title('Diagonal Detail D7')
            pause
            
            subplot(1,1,1,'replace')
            colors = size(unique(X));
            grayLevels = colors(1);
                                    
            %1st level coefficient coding
            a1_cod1 = wcodemat(A11,grayLevels);
            d1_hcod1 = wcodemat(H11,grayLevels);
            d1_vcod1 = wcodemat(V11,grayLevels);
            d1_dcod1 = wcodemat(D11,grayLevels);
            
            a1_cod2 = wcodemat(A12,grayLevels);
            d1_hcod2 = wcodemat(H12,grayLevels);
            d1_vcod2 = wcodemat(V12,grayLevels);
            d1_dcod2 = wcodemat(D12,grayLevels);
           
            a1_cod3 = wcodemat(A13,grayLevels);
            d1_hcod3 = wcodemat(H13,grayLevels);
            d1_vcod3 = wcodemat(V13,grayLevels);
            d1_dcod3 = wcodemat(D13,grayLevels);
                       
            %2nd level coefficient coding
            a2_cod1 = wcodemat(A21,grayLevels);
            d2_hcod1 = wcodemat(H21,grayLevels);
            d2_vcod1 = wcodemat(V21,grayLevels);
            d2_dcod1 = wcodemat(D21,grayLevels);

            a2_cod2 = wcodemat(A22,grayLevels);
            d2_hcod2 = wcodemat(H22,grayLevels);
            d2_vcod2 = wcodemat(V22,grayLevels);
            d2_dcod2 = wcodemat(D22,grayLevels);
            
            a2_cod3 = wcodemat(A23,grayLevels);
            d2_hcod3 = wcodemat(H23,grayLevels);
            d2_vcod3 = wcodemat(V23,grayLevels);
            d2_dcod3 = wcodemat(D23,grayLevels);
            
            % 3rd level coefficients coding
            a3_cod1 = wcodemat(A31,grayLevels);
            d3_hcod1 = wcodemat(H31,grayLevels);
            d3_vcod1 = wcodemat(V31,grayLevels);
            d3_dcod1 = wcodemat(D31,grayLevels);
            
            a3_cod2 = wcodemat(A32,grayLevels);
            d3_hcod2 = wcodemat(H32,grayLevels);
            d3_vcod2 = wcodemat(V32,grayLevels);
            d3_dcod2 = wcodemat(D32,grayLevels);
            
            a3_cod3 = wcodemat(A33,grayLevels);
            d3_hcod3 = wcodemat(H33,grayLevels);
            d3_vcod3 = wcodemat(V33,grayLevels);
            d3_dcod3 = wcodemat(D33,grayLevels);                       
            
            %4th level coefficient coding
            a4_cod1 = wcodemat(A41,grayLevels);
            d4_hcod1 = wcodemat(H41,grayLevels);
            d4_vcod1 = wcodemat(V41,grayLevels);
            d4_dcod1 = wcodemat(D41,grayLevels);
            
            a4_cod2 = wcodemat(A42,grayLevels);
            d4_hcod2 = wcodemat(H42,grayLevels);
            d4_vcod2 = wcodemat(V42,grayLevels);
            d4_dcod2 = wcodemat(D42,grayLevels);
            
            a4_cod3 = wcodemat(A43,grayLevels);
            d4_hcod3 = wcodemat(H43,grayLevels);
            d4_vcod3 = wcodemat(V43,grayLevels);
            d4_dcod3 = wcodemat(D43,grayLevels);
            
            %5th level coefficients coding
            a5_cod1 = wcodemat(A51,grayLevels);
            d5_hcod1 = wcodemat(H51,grayLevels);
            d5_vcod1 = wcodemat(V51,grayLevels);
            d5_dcod1 = wcodemat(D51,grayLevels);
            
            a5_cod2 = wcodemat(A52,grayLevels);
            d5_hcod2 = wcodemat(H52,grayLevels);
            d5_vcod2 = wcodemat(V52,grayLevels);
            d5_dcod2 = wcodemat(D52,grayLevels);
            
            a5_cod3 = wcodemat(A53,grayLevels);
            d5_hcod3 = wcodemat(H53,grayLevels);
            d5_vcod3 = wcodemat(V53,grayLevels);
            d5_dcod3 = wcodemat(D53,grayLevels);
            
            %6th level coefficients coding
            a6_cod1 = wcodemat(A61,grayLevels);
            d6_hcod1 = wcodemat(H61,grayLevels);
            d6_vcod1 = wcodemat(V61,grayLevels);
            d6_dcod1 = wcodemat(D61,grayLevels);
            
            a6_cod2 = wcodemat(A62,grayLevels);
            d6_hcod2 = wcodemat(H62,grayLevels);
            d6_vcod2 = wcodemat(V62,grayLevels);
            d6_dcod2 = wcodemat(D62,grayLevels);
            
            a6_cod3 = wcodemat(A63,grayLevels);
            d6_hcod3 = wcodemat(H63,grayLevels);
            d6_vcod3 = wcodemat(V63,grayLevels);
            d6_dcod3 = wcodemat(D63,grayLevels);
            
            %7th level coefficients coding
            a7_cod1 = wcodemat(A71,grayLevels);
            d7_hcod1 = wcodemat(H71,grayLevels);
            d7_vcod1 = wcodemat(V71,grayLevels);
            d7_dcod1 = wcodemat(D71,grayLevels);
            
            a7_cod2 = wcodemat(A72,grayLevels);
            d7_hcod2 = wcodemat(H72,grayLevels);
            d7_vcod2 = wcodemat(V72,grayLevels);
            d7_dcod2 = wcodemat(D72,grayLevels);
            
            a7_cod3 = wcodemat(A73,grayLevels);
            d7_hcod3 = wcodemat(H73,grayLevels);
            d7_vcod3 = wcodemat(V73,grayLevels);
            d7_dcod3 = wcodemat(D73,grayLevels);
            
            L71 = [imresize([imresize([imresize([imresize([imresize([imresize([a7_cod1,d7_hcod1;d7_vcod1,d7_dcod1],size(d6_hcod1),'bilinear'),d6_hcod1;d6_vcod1,d6_dcod1],size(d5_hcod1),'bilinear'),d5_hcod1;d5_vcod1,d5_dcod1],size(d4_hcod1),'bilinear'),d4_hcod1;d4_vcod1,d4_dcod1],size(d3_hcod1),'bilinear'),d3_hcod1;d3_vcod1,d3_dcod1],size(d2_hcod1),'bilinear'),d2_hcod1;d2_vcod1,d2_dcod1],size(d1_hcod1),'bilinear'),d1_hcod1;d1_vcod1,d1_dcod1];
            L72 = [imresize([imresize([imresize([imresize([imresize([imresize([a7_cod2,d7_hcod2;d7_vcod2,d7_dcod2],size(d6_hcod2),'bilinear'),d6_hcod2;d6_vcod2,d6_dcod2],size(d5_hcod2),'bilinear'),d5_hcod2;d5_vcod2,d5_dcod2],size(d4_hcod2),'bilinear'),d4_hcod2;d4_vcod2,d4_dcod2],size(d3_hcod2),'bilinear'),d3_hcod2;d3_vcod2,d3_dcod2],size(d2_hcod2),'bilinear'),d2_hcod2;d2_vcod2,d2_dcod2],size(d1_hcod2),'bilinear'),d1_hcod2;d1_vcod2,d1_dcod2];
            L73 = [imresize([imresize([imresize([imresize([imresize([imresize([a7_cod3,d7_hcod3;d7_vcod3,d7_dcod3],size(d6_hcod3),'bilinear'),d6_hcod3;d6_vcod3,d6_dcod3],size(d5_hcod3),'bilinear'),d5_hcod3;d5_vcod3,d5_dcod3],size(d4_hcod3),'bilinear'),d4_hcod3;d4_vcod3,d4_dcod3],size(d3_hcod3),'bilinear'),d3_hcod3;d3_vcod3,d3_dcod3],size(d2_hcod3),'bilinear'),d2_hcod3;d2_vcod3,d2_dcod3],size(d1_hcod3),'bilinear'),d1_hcod3;d1_vcod3,d1_dcod3];
            
            L7(:,:,1) = L71;
            L7(:,:,2) = L72;
            L7(:,:,3) = L73;
            image(uint8(L7));
            axis image;
            title('Level 7 decompsition');
            pause
            
            % Compress the image and display it. 
            % To compress the original image X, use the ddencmp command to calculate the default parameters
            % and the wdencmp command to perform the actual compression.
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X1);
            [Xcomp1,CXC1,LXC1,PERF01,PERFL21] = wdencmp('gbl',C1,S1,wavelet,7,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X2);
            [Xcomp2,CXC2,LXC2,PERF02,PERFL22] = wdencmp('gbl',C2,S2,wavelet,7,thr,sorh,keepapp);
            [thr,sorh,keepapp] = ddencmp('cmp','wv',X3);
            [Xcomp3,CXC3,LXC3,PERF03,PERFL23] = wdencmp('gbl',C3,S3,wavelet,7,thr,sorh,keepapp);     
            Xcomp(:,:,1) = Xcomp1;
            Xcomp(:,:,2) = Xcomp2;
            Xcomp(:,:,3) = Xcomp3;
            NC1 = wthcoef2('t',C1,S1,7,thr,'s');
            NC2 = wthcoef2('t',C2,S2,7,thr,'s');
            NC3 = wthcoef2('t',C3,S3,7,thr,'s');
            A(:,:,1) = a7_cod1;
            A(:,:,2) = a7_cod2;
            A(:,:,3) = a7_cod3;
    end        
    
            %Reconstruction of the image from the approximate and details
            X01 = waverec2(NC1,S1,wavelet);
            X02 = waverec2(NC2,S2,wavelet);
            X03 = waverec2(NC3,S3,wavelet);
            
            X0(:,:,1) = X01;
            X0(:,:,2) = X02;
            X0(:,:,3) = X03;   
    
           %To view the compressed image side by side with the original
            colormap(map);
            subplot(1,3,1); image(uint8(X)); title('Original Image');
            axis square
            subplot(1,3,2); 
            image(uint8(A)); title('Compressed Image');
            axis square
            subplot(1,3,3);
            colormap(map)
            imshow(uint8(X0)); title('Reconstructed Image');
            axis square

            
             %To find the compression ratio
            imwrite(uint8(Xcomp),'D:\Project\Results\out.jpg');
            infoin = imfinfo(string);
            infoout = imfinfo('D:\Project\Results\out.jpg');
            bin = infoin.FileSize;
            bout = infoout.FileSize;
            disp(bin);
            disp(bout);
            compression_ratio= bin/bout;
            disp('Compression Ratio =');
            disp(compression_ratio);
            
            % Reconstruct the original image from the I level decomposition. 
            %To reconstruct the original image from the wavelet decomposition structure
            % Calculate mean square error and power signal to noise ratio
            
            X = double(X);
            X0 = double(X0);
            mse=(sum(sum(sum((X-X0).*(X-X0)))))/(r*c*p);
            PSNR=20*log10(255/sqrt(mse));
            disp('Mean square error = ');
            disp(mse);
            disp('PSNR =');
            disp(PSNR);
                        
            Xh = double(X);
            Ah = double(A);
            Xcomph = double(Xcomp);
            X0h = double(X0);
            [n1,xout1] = hist(Xh,255);
            [n2,xout2] = hist(Ah,255);
            [n3,xout3] = hist(X0h,255);
            figure
            subplot(1,3,1);
            bar(xout1,n1); title('Original image');
            axis square
            subplot(1,3,2);
            bar(xout2,n2); title('Compressed image');
            axis square
            subplot(1,3,3);
            bar(xout3,n3); title('Reconstructed image');
            axis square
            pause
            z = input('Press 1 to continue with another wavelet'); 
end

Contact us