clc clear x1= imread('lena.bmp'); im=double(x1); En1 = entropy(x1)
% Start from the Haar wavelet and get the % corresponding lifting scheme. lshaar = liftwave('haar');
% Add a primal ELS to the lifting scheme. els = {'p',[-0.125 0.125],0}; lshaarInt = liftwave('haar','int2int'); lsnewInt = addlift(lshaarInt,els);
%%%%%%%%%%%%%%%%%%%%%%%%Perform LWT for 9 level%%%%%%%%%%%%%%%%%%%%%%%%%%%% n=9;
switch n case 1 [cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt); test=[cAint,cHint;cVint,cDint];
case 2
[cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt);
x2=double(cAint);
[cAint2,cHint2,cVint2,cDint2] = lwt2(x2,lsnewInt);
test=[cAint2,cHint2;cVint2,cDint2];
case 3
[cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt);
x2=double(cAint);
[cAint2,cHint2,cVint2,cDint2] = lwt2(x2,lsnewInt);
x3=double(cAint2);
[cAint3,cHint3,cVint3,cDint3] = lwt2(x3,lsnewInt);
test=[cAint3,cHint3;cVint3,cDint3];
case 4
[cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt);
x2=double(cAint);
[cAint2,cHint2,cVint2,cDint2] = lwt2(x2,lsnewInt);
x3=double(cAint2);
[cAint3,cHint3,cVint3,cDint3] = lwt2(x3,lsnewInt);
x4=double(cAint3);
[cAint4,cHint4,cVint4,cDint4] = lwt2(x4,lsnewInt);
test=[cAint4,cHint4;cVint4,cDint4];
case 5
[cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt);
x2=double(cAint);
[cAint2,cHint2,cVint2,cDint2] = lwt2(x2,lsnewInt);
x3=double(cAint2);
[cAint3,cHint3,cVint3,cDint3] = lwt2(x3,lsnewInt);
x4=double(cAint3);
[cAint4,cHint4,cVint4,cDint4] = lwt2(x4,lsnewInt);
x5=double(cAint4);
[cAint5,cHint5,cVint5,cDint5] = lwt2(x5,lsnewInt);
test=[cAint5,cHint5;cVint5,cDint5];
case 6
[cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt);
x2=double(cAint);
[cAint2,cHint2,cVint2,cDint2] = lwt2(x2,lsnewInt);
x3=double(cAint2);
[cAint3,cHint3,cVint3,cDint3] = lwt2(x3,lsnewInt);
x4=double(cAint3);
[cAint4,cHint4,cVint4,cDint4] = lwt2(x4,lsnewInt);
x5=double(cAint4);
[cAint5,cHint5,cVint5,cDint5] = lwt2(x5,lsnewInt);
x6=double(cAint5);
[cAint6,cHint6,cVint6,cDint6] = lwt2(x6,lsnewInt);
test=[cAint6,cHint6;cVint6,cDint6];
case 7
[cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt);
x2=double(cAint);
[cAint2,cHint2,cVint2,cDint2] = lwt2(x2,lsnewInt);
x3=double(cAint2);
[cAint3,cHint3,cVint3,cDint3] = lwt2(x3,lsnewInt);
x4=double(cAint3);
[cAint4,cHint4,cVint4,cDint4] = lwt2(x4,lsnewInt);
x5=double(cAint4);
[cAint5,cHint5,cVint5,cDint5] = lwt2(x5,lsnewInt);
x6=double(cAint5);
[cAint6,cHint6,cVint6,cDint6] = lwt2(x6,lsnewInt);
x7=double(cAint6);
[cAint7,cHint7,cVint7,cDint7] = lwt2(x7,lsnewInt);
test=[cAint7,cHint7;cVint7,cDint7];
case 8
[cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt);
x2=double(cAint);
[cAint2,cHint2,cVint2,cDint2] = lwt2(x2,lsnewInt);
x3=double(cAint2);
[cAint3,cHint3,cVint3,cDint3] = lwt2(x3,lsnewInt);
x4=double(cAint3);
[cAint4,cHint4,cVint4,cDint4] = lwt2(x4,lsnewInt);
x5=double(cAint4);
[cAint5,cHint5,cVint5,cDint5] = lwt2(x5,lsnewInt);
x6=double(cAint5);
[cAint6,cHint6,cVint6,cDint6] = lwt2(x6,lsnewInt);
x7=double(cAint6);
[cAint7,cHint7,cVint7,cDint7] = lwt2(x7,lsnewInt);
x8=double(cAint7);
[cAint8,cHint8,cVint8,cDint8] = lwt2(x8,lsnewInt);
test=[cAint8,cHint8;cVint8,cDint8];
case 9
[cAint,cHint,cVint,cDint] = lwt2(im,lsnewInt);
x2=double(cAint);
[cAint2,cHint2,cVint2,cDint2] = lwt2(x2,lsnewInt);
x3=double(cAint2);
[cAint3,cHint3,cVint3,cDint3] = lwt2(x3,lsnewInt);
x4=double(cAint3);
[cAint4,cHint4,cVint4,cDint4] = lwt2(x4,lsnewInt);
x5=double(cAint4);
[cAint5,cHint5,cVint5,cDint5] = lwt2(x5,lsnewInt);
x6=double(cAint5);
[cAint6,cHint6,cVint6,cDint6] = lwt2(x6,lsnewInt);
x7=double(cAint6);
[cAint7,cHint7,cVint7,cDint7] = lwt2(x7,lsnewInt);
x8=double(cAint7);
[cAint8,cHint8,cVint8,cDint8] = lwt2(x8,lsnewInt);
x9=double(cAint8);
[cAint9,cHint9,cVint9,cDint9] = lwt2(x9,lsnewInt);
test=[cAint9,cHint9;cVint9,cDint9];
otherwise
En = entropy(x1);
end
%%%%%%%%%%%%%%%%%%%%%%%%Perform invert LWT until 9 level%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if n==1; xRecInt = ilwt2(cAint,cHint,cVint,cDint,lsnewInt); errInt = max(max(abs(im-xRecInt))) level1=[cAint,cHint;cVint,cDint]; cAintk=int8(cAint); one=[cAintk,cHint;cVint,cDint]; %int8 test1=[cAintk,cHint;cVint,cDint]; figure(2); imshow(one); title('leve1 1 suband');
elseif n==2; xRecInt2 = ilwt2(cAint2,cHint2,cVint2,cDint2,lsnewInt); errInt2 = max(max(abs(x2-xRecInt2))) one(1:128,1:128)=int8(cAint2); one(129:256,1:128)=int8(cHint2); one(1:128,129:256)=int8(cVint2); one(129:256,129:256)=int8(cDint2); level2=[cAint2,cHint2;cVint2,cDint2]; two=[level2,cHint;cVint,cDint]; test1=[level2,cHint;cVint,cDint]; figure(3); imshow(int8(two)); title('leve1 2 suband');
elseif n==3;
xRecInt3 = ilwt2(cAint3,cHint3,cVint3,cDint3,lsnewInt);
errInt3 = max(max(abs(x3-xRecInt3)))
one(1:64,1:64)=cAint3;
one(65:128,1:64)=cHint3;
one(1:64,65:128)=cVint3;
one(65:128,65:128)=cDint3;
level3=[cAint3,cHint3;cVint3,cDint3]; %level3=128x128,cAint3,cHint3,cVint3,cDint3=64x64
tiga=[level3,cHint2;cVint2,cDint2]; %three=256x256, level3,cHint2;cVint2,cDint2=128x128
three=[tiga,cHint;cVint,cDint];%three=512x512, three,cHint;cVint,cDint=256x256
test1=[tiga,cHint;cVint,cDint];
figure(4);
imshow(uint8(three));
title('leve1 3 suband');
elseif n==4;
xRecInt4 = ilwt2(cAint4,cHint4,cVint4,cDint4,lsnewInt);
errInt4 = max(max(abs(x4-xRecInt4)))
one(1:32,1:32)=cAint4;
one(33:64,1:32)=cHint4;
one(1:32,33:64)=cVint4;
one(33:64,33:64)=cDint4;
level4=[cAint4,cHint4;cVint4,cDint4]; %level4=64x64,cAint3,cHint3,cVint3,cDint3=32x32
empat=[level4,cHint3;cVint3,cDint3]; %empat=128x128, level3,cHint2;cVint2,cDint2=64x64
four1=[empat,cHint2;cVint2,cDint2]; %three=256x256, three,cHint;cVint,cDint=128x128
four=[four1,cHint;cVint,cDint];
test1=[four1,cHint;cVint,cDint];
figure(5);
imshow(uint8(four));
title('leve1 4 suband');
elseif n==5;
xRecInt5 = ilwt2(cAint5,cHint5,cVint5,cDint5,lsnewInt);
errInt5 = max(max(abs(x5-xRecInt5)))
one(1:16,1:16)=cAint5;
one(17:32,1:16)=cHint5;
one(1:16,17:32)=cVint5;
one(17:32,17:32)=cDint5;
level5=[cAint5,cHint5;cVint5,cDint5]; %level5=32x32,cAint3,cHint3,cVint3,cDint3=16x16 5
lima=[level5,cHint4;cVint4,cDint4]; %lima=64x64, level5,cHint2,cVint2,cDint2=32x32 4
five1=[lima,cHint3;cVint3,cDint3]; %five1=128x128, lima,cHint3,cVint3,cDint3=64x64 3
five2=[five1,cHint2;cVint2,cDint2]; % five2=256x256 five1,cHint2,cVint2,cDint2=128x128 2
five=[five2,cHint;cVint,cDint]; %five=512x512 five2,cHint;cVint,cDint=256x256 1
test1=[five2,cHint;cVint,cDint];
figure(6);
imshow(uint8(five));
title('leve1 5 suband');
elseif n==6;
xRecInt6 = ilwt2(cAint6,cHint6,cVint6,cDint6,lsnewInt);
errInt6 = max(max(abs(x6-xRecInt6)))
one(1:8,1:8)=cAint6;
one(9:16,1:8)=cHint6;
one(1:8,9:16)=cVint6;
one(9:16,9:16)=cDint6;
level6=[cAint6,cHint6;cVint6,cDint6]; %level6=16x16,cAint3,cHint3,cVint3,cDint3=8x8 6
six1=[level6,cHint5;cVint5,cDint5]; %six1=32x32, level6,cHint2,cVint2,cDint2=16x16 5
six2=[six1,cHint4;cVint4,cDint4]; %six2=64x64, six1,cHint4,cVint4,cDint4=32x32, 4
six3=[six2,cHint3;cVint3,cDint3]; %six3=128x128, lima,cHint3,cVint3,cDint3=64x64 3
six4=[six3,cHint2;cVint2,cDint2]; %six4=256x256, =128x128 ,six3,cHint2;cVint2,cDint2=128x128 2
six=[six4,cHint;cVint,cDint];
test1=[six4,cHint;cVint,cDint];
figure(7);
imshow(uint8(six));
title('leve1 6 suband');
elseif n==7;
xRecInt7 = ilwt2(cAint7,cHint7,cVint7,cDint7,lsnewInt);
errInt7 = max(max(abs(x7-xRecInt7)))
one(1:4,1:4)=cAint7;
one(5:8,1:4)=cHint7;
one(1:4,5:8)=cVint7;
one(5:8,5:8)=cDint7;
level7=[cAint7,cHint7;cVint7,cDint7];
seven2=[level7,cHint6;cVint6,cDint6]; %level6=16x16,cAint3,cHint3,cVint3,cDint3=8x8
seven3=[seven2,cHint5;cVint5,cDint5]; %six1=32x32, level6,cHint2,cVint2,cDint2=16x16
seven4=[seven3,cHint4;cVint4,cDint4]; %six2=64x64, six1,cHint4,cVint4,cDint4=32x32,
seven5=[seven4,cHint3;cVint3,cDint3]; %six3=128x128, lima,cHint3,cVint3,cDint3=64x64
seven6=[seven5,cHint2;cVint2,cDint2]; %six4=256x256, =128x128 ,six3,cHint2;cVint2,cDint2=128x128
seven=[seven6,cHint;cVint,cDint];
test1=[seven6,cHint;cVint,cDint];
figure(8);
imshow(uint8(seven));
title('leve1 7 suband');
elseif n==8;
xRecInt8 = ilwt2(cAint8,cHint8,cVint8,cDint8,lsnewInt);
errInt8 = max(max(abs(x8-xRecInt8)))
one(1:2,1:2)=cAint8;
one(3:4,1:2)=cHint8;
one(1:2,3:4)=cVint8;
one(3:4,3:4)=cDint8;
level8=[cAint8,cHint8;cVint8,cDint8];
eight1=[level8,cHint7;cVint7,cDint7];
eight2=[eight1,cHint6;cVint6,cDint6]; %level6=16x16,cAint3,cHint3,cVint3,cDint3=8x8
eight3=[eight2,cHint5;cVint5,cDint5]; %six1=32x32, level6,cHint2,cVint2,cDint2=16x16
eight4=[eight3,cHint4;cVint4,cDint4]; %six2=64x64, six1,cHint4,cVint4,cDint4=32x32,
eight5=[eight4,cHint3;cVint3,cDint3]; %six3=128x128, lima,cHint3,cVint3,cDint3=64x64
eight6=[eight5,cHint2;cVint2,cDint2]; %six4=256x256, =128x128 ,six3,cHint2;cVint2,cDint2=128x128
eight=[eight6,cHint;cVint,cDint];
test1=[eight6,cHint;cVint,cDint];
figure(9);
imshow(uint8(eight));
title('leve1 8 suband');
else
xRecInt9 = ilwt2(cAint9,cHint9,cVint9,cDint9,lsnewInt);
errInt9 = max(max(abs(x9-xRecInt9)))
one(1:1.5,1:1.5)=cAint9;
one(1.6:2,1:1.5)=cHint9;
one(1:1.5,1.6:2)=cVint9;
one(1.6:2,1.6:2)=cDint9;
level9=[cAint9,cHint9;cVint9,cDint9];
nine1=[level9,cHint8;cVint8,cDint8];
nine2=[nine1,cHint7;cVint7,cDint7];
nine3=[nine2,cHint6;cVint6,cDint6]; %level6=16x16,cAint3,cHint3,cVint3,cDint3=8x8
nine4=[nine3,cHint5;cVint5,cDint5]; %six1=32x32, level6,cHint2,cVint2,cDint2=16x16
nine5=[nine4,cHint4;cVint4,cDint4]; %six2=64x64, six1,cHint4,cVint4,cDint4=32x32,
nine6=[nine5,cHint3;cVint3,cDint3]; %six3=128x128, lima,cHint3,cVint3,cDint3=64x64
nine7=[nine6,cHint2;cVint2,cDint2]; %six4=256x256, =128x128 ,six3,cHint2;cVint2,cDint2=128x128
nine=[nine7,cHint;cVint,cDint];
test1=[nine7,cHint;cVint,cDint];
figure(10);
imshow(uint8(nine));
title('leve1 9 suband');
end
%calculate entropy
%convert to positive integer
for y=1:512;
for x=1:512;
if test1(x,y)==0;
PixPos(x,y)=1;
else if test1(x,y)>0;
PixPos(x,y)=(test1(x,y)*2)+1;
else
PixPos(x,y)=abs(test1(x,y))*2;
end
end
end
end
%calculate frequency occurence of symbols
FreqPixInt(1:512)=0;
for y=1:512 %all pixel values in rows
for x=1:512 %all pixel values in columns
FreqPixInt(PixPos(x,y)+1)=FreqPixInt(PixPos(x,y)+1)+1;
end
end
FreqPixInt;
%calculate entropy of symbols(positive integer) En2=0;% initialize value entropy to 0 for i=1:512 % all pixels value in first rows if FreqPixInt(i)==0 En2=En2; %dummy else En2=En2+(FreqPixInt(i)/262144)*log2(FreqPixInt(i)/262144); %512x512=262144 total pixels end end En2=En2*(-1)