% Ovo je sktipta koja poziva funkcije za potiskivanje suma i iscrtava slike

clear all;

% Ucitavanje slike
X=double(imread('slika.bmp'));

sumR = 15;     % vrsna vrijednost suma za crvenu komponentu slike
sumG = 15;     % vrsna vrijednost suma za zelenu komponentu slike
sumB = 15;     % vrsna vrijednost suma za plavu komponentu slike
Xsum=bijeli_sum(X,sumR, sumG, sumB);   % dodavanje bijelog suma na sliku


Nsigma = 4;       % Broj koji definira prag: prag=Nsigma*std.devijacija
level  = 2;       % broj razina razlaganja
wname  = 'db10';  % Ime wavelet funkcije za razlaganje

%%% HARD Thresholding
[dX_hard, SNRul_hard, SNRizl_hard]=wavelet_hard(X, Xsum, Nsigma, level, wname);

%%% SOFT thresholding
[dX_soft, SNRul_soft, SNRizl_soft]=wavelet_soft(X, Xsum, Nsigma, level, wname);

%%% Ispis rezultata
string1= sprintf('Originalna slika');
string2= sprintf('Slika sa bijelim sumom: SNR=%.2f',SNRul_hard);
string3= sprintf('Rekonstr. slika: HARD thresholding SNR=%.2f',SNRizl_hard);
string4= sprintf('Rekonstr. slika: SOFT thresholding SNR=%.2f',SNRizl_soft);

figure;
set(gcf, 'Name', 'Potiskivanje suma')
subplot(2,2,1),image(X/255),        title(string1);
subplot(2,2,2),image(Xsum/255),     title(string2);
subplot(2,2,3),image(dX_hard/255),  title(string3);
subplot(2,2,4),image(dX_soft/255),  title(string4);


%% AUTO thresholding: na temelju slike, funkcije sama odlucuje da li je
%% bolje izabrati HARD ili SOFT thresholding i odredjuje prag!
[dX_auto, SNRul_auto, SNRizl_auto]=wavelet_auto(X, Xsum, level, wname);

%%% Usporedba HARD, SOFT i AUTO thresholdinga!
string5= sprintf('Rekonstr. slika: AUTO thresholding SNR=%.2f',SNRizl_auto);

figure;
set(gcf, 'Name', 'Usporedba metoda')
subplot(2,2,1),image(Xsum/255),     title(string2);
subplot(2,2,2),image(dX_hard/255),  title(string3);
subplot(2,2,3),image(dX_soft/255),  title(string4);
subplot(2,2,4),image(dX_auto/255),  title(string5);
