close all
clear all

N=3;                                        % razina dekompozicije MAKSIMALNO 5
[img,map]=imread('elaine.512.tiff');             % ucitavanje slike
[R,S]=size(img);
%img=rgb2gray(img);

% prva razina
A1=zeros(ceil(R/2),ceil(S/2));
H1=zeros(ceil(R/2),ceil(S/2));
V1=zeros(ceil(R/2),ceil(S/2));
D1=zeros(ceil(R/2),ceil(S/2));

% druga razina
A2=zeros(ceil(R/4),ceil(S/4));
H2=zeros(ceil(R/4),ceil(S/4));
V2=zeros(ceil(R/4),ceil(S/4));
D2=zeros(ceil(R/4),ceil(S/4));

% treca razina
A3=zeros(ceil(R/8),ceil(S/8));
H3=zeros(ceil(R/8),ceil(S/8));
V3=zeros(ceil(R/8),ceil(S/8));
D3=zeros(ceil(R/8),ceil(S/8));

% cetvrta razina
A4=zeros(ceil(R/16),ceil(S/16));
H4=zeros(ceil(R/16),ceil(S/16));
V4=zeros(ceil(R/16),ceil(S/16));
D4=zeros(ceil(R/16),ceil(S/16));

% peta razina
A5=zeros(ceil(R/32),ceil(S/32));
H5=zeros(ceil(R/32),ceil(S/32));
V5=zeros(ceil(R/32),ceil(S/32));
D5=zeros(ceil(R/32),ceil(S/32));

%---------------------------------------------------
%--               ANALIZA                         --
%---------------------------------------------------

% prva razina dekompozicije
[A1,H1,V1,D1]=moj2dfwt(img);

figure
subplot(2,2,1), imagesc(A1); title('Aproksimacija');
subplot(2,2,2), imagesc(H1); title('Horizontala');
subplot(2,2,3), imagesc(V1); title('Vertikala');
subplot(2,2,4), imagesc(D1); title('Detalj');
colormap(gray);

% druga razina dekompozicije
if N>1
    [A2,H2,V2,D2]=moj2dfwt(A1);
    figure
    subplot(2,2,1), imagesc(A2); title('Aproksimacija');
    subplot(2,2,2), imagesc(H2); title('Horizontala');
    subplot(2,2,3), imagesc(V2); title('Vertikala');
    subplot(2,2,4), imagesc(D2); title('Detalj');
    colormap(gray);
end;

% treca razina dekompozicije
if N>2
    [A3,H3,V3,D3]=moj2dfwt(A2);
    figure
    subplot(2,2,1), imagesc(A3); title('Aproksimacija');
    subplot(2,2,2), imagesc(H3); title('Horizontala');
    subplot(2,2,3), imagesc(V3); title('Vertikala');
    subplot(2,2,4), imagesc(D3); title('Detalj');
    colormap(gray);
end;

% cetvrta razina dekompozicije
if N>3
    [A4,H4,V4,D4]=moj2dfwt(A3);
    figure
    subplot(2,2,1), imagesc(A4); title('Aproksimacija');
    subplot(2,2,2), imagesc(H4); title('Horizontala');
    subplot(2,2,3), imagesc(V4); title('Vertikala');
    subplot(2,2,4), imagesc(D4); title('Detalj');
    colormap(gray);

end;

% peta razina dekompozicije
if N>4
    [A5,H5,V5,D5]=moj2dfwt(A4);
    figure
    subplot(2,2,1), imagesc(A5); title('Aproksimacija');
    subplot(2,2,2), imagesc(H5); title('Horizontala');
    subplot(2,2,3), imagesc(V5); title('Vertikala');
    subplot(2,2,4), imagesc(D5); title('Detalj');
    colormap(gray);
end;


%--------------------------------------------------
%--               REKONSTRUKCIJA                 --
%--------------------------------------------------

if N>4
    % iz pete razine u cetvrtu aproksimaciju
    s4=moj2difwt(A5,H5,V5,D5);
    figure, imagesc(A4), title('Cetvrta aprox'), colormap(gray);
    figure, imagesc(s4), title('Rekonstruirana cetvrta aprox'), colormap(gray);
end;

if N>3
    % iz cetvrte razine u trecu aproksimaciju
    s3=moj2difwt(s4,H4,V4,D4);
    figure, imagesc(A3), title('Treca aprox'), colormap(gray);
    figure, imagesc(s3), title('Rekonstruirana treca aprox'), colormap(gray);
end;

if N>2
    % iz trece razine u drugu aproksimaciju
    s2=moj2difwt(s3,H3,V3,D3);
    figure, imagesc(A2), title('Druga aprox'), colormap(gray);
    figure, imagesc(s2), title('Rekonstruirana druga aprox'), colormap(gray);
end;

if N>1
    % iz druge razine u prvu aproksimaciju
    s1=moj2difwt(s2,H2,V2,D2);
    figure, imagesc(A1), title('Prva aprox'), colormap(gray);
    figure, imagesc(s1), title('Rekonstruirana prva aprox'), colormap(gray);
end;


% iz prve razine u original
s0=moj2difwt(s1,H1,V1,D1); 
figure, imagesc(img), title('Original'), colormap(gray);
figure, imagesc(s0), title('Rekonstruirani original'), colormap(gray);

%--------------------------------------------------------------------------

%   SPREMANJE SLIKE

% A=scale(s2);
% IMWRITE(A,'moj.jpg','jpg')


