%Glavna funkcija, kao argument prima sliku, velièina mora biti 128x128 sa 8
%bitnom dubinom boja, funkcijs je napravljena za takvu vrstu slika, 
%upotrebljavati za druge velièine na vlastitu odgovornost. Na izlazu
%funkcije dobit æe se takoðer slika, koja æe biti jednaka originalnoj u
%sluèaju da je odabrani prag 14, odnosno komprimirana u nekom omjeru ukoliko
%je odabran manji prag

function [img2]=glavna(img);

img=double(img);

%wavelet transformacija ulazne slike, moguæe je mijenjati vrstu waveleta
[ca1,ch1,cv1,cd1] = dwt2(img,'haar' );
[ca2,ch2,cv2,cd2] = dwt2(ca1,'haar');
[ca3,ch3,cv3,cd3] = dwt2(ca2,'haar');
[ca4,ch4,cv4,cd4] = dwt2(ca3,'haar');
[ca5,ch5,cv5,cd5] = dwt2(ca4,'haar');
[ca6,ch6,cv6,cd6] = dwt2(ca5,'haar');


ca5=[ca6, ch6; cv6, cd6];
ca4=[ca5, ch5; cv5, cd5];
ca3=[ca4, ch4; cv4, cd4];
ca2=[ca3, ch3; cv3, cd3];
ca1=[ca2, ch2; cv2, cd2];

wc=[ca1, ch1; cv1, cd1];

%prije pozivanja funkcije encode treba se u tekuæem direktoriju stvoriti
%direktorij koef u koji æe se spremati meðurezultati, inaèe program javlja
%grešku

encode;

neki=input('Upišite željeni broj pragova pri rekonstrukciji (2-14) > ');

if (neki < 2) | (neki > 14)
    
    neki=input('Upišite željeni broj pragova pri rekonstrukciji (2-14) > ');
    
end;

rek_kon=decode(neki);

L=length(rek_kon);
ca1=rek_kon(1:L/2,1:L/2);
ch1=rek_kon(1:L/2,L/2+1:L);
cv1=rek_kon(L/2+1:L,1:L/2);
cd1=rek_kon(L/2+1:L,L/2+1:L);

L=length(ca1);
ca2=ca1(1:L/2,1:L/2);
ch2=ca1(1:L/2,L/2+1:L);
cv2=ca1(L/2+1:L,1:L/2);
cd2=ca1(L/2+1:L,L/2+1:L);

L=length(ca2);
ca3=ca2(1:L/2,1:L/2);
ch3=ca2(1:L/2,L/2+1:L);
cv3=ca2(L/2+1:L,1:L/2);
cd3=ca2(L/2+1:L,L/2+1:L);

L=length(ca3);
ca4=ca3(1:L/2,1:L/2);
ch4=ca3(1:L/2,L/2+1:L);
cv4=ca3(L/2+1:L,1:L/2);
cd4=ca3(L/2+1:L,L/2+1:L);

L=length(ca4);
ca5=ca4(1:L/2,1:L/2);
ch5=ca4(1:L/2,L/2+1:L);
cv5=ca4(L/2+1:L,1:L/2);
cd5=ca4(L/2+1:L,L/2+1:L);

L=length(ca5);
ca6=ca5(1:L/2,1:L/2);
ch6=ca5(1:L/2,L/2+1:L);
cv6=ca5(L/2+1:L,1:L/2);
cd6=ca5(L/2+1:L,L/2+1:L);

ca5 = idwt2(ca6,ch6,cv6,cd6,'haar');
ca4 = idwt2(ca5,ch5,cv5,cd5,'haar');
ca3 = idwt2(ca4,ch4,cv4,cd4,'haar');
ca2 = idwt2(ca3,ch3,cv3,cd3,'haar');
ca1 = idwt2(ca2,ch2,cv2,cd2,'haar');
img2 = IDWT2(ca1,ch1,cv1,cd1,'haar');

