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