%%Transformační metoda schearlet u

clf;
clear all;


im=zeros(256,256)
% Vykreslení vstupního obrazu
% imagesc(im, [0, 255]);
% colormap(gray);
% axis image off
im(100,100) = 1;

% N...počet transformačních koeficientů
N = 1;

% volání 1D kvadraturního zrcadlového filtru pro shearlet
qmf2 = MakeONFilter('Symmlet',4);

% Použití schearlet transformace s ostrým prahem a využití rekonstrukce ve
% dvou směrech (vertikální a horizontální)

[imrec num1] = test_dst(im,[2 3 3 4 4],N,qmf2,qmf2);

%imrec(100,100) = 1;

% výpočet poměru sígnál šum (psnr)
psnr1 = 20*log10(255/(1/512*norm(double(im(:))-imrec(:))));

% volání 9-7 kvadraturního filtru pro wavelet transformaci
[qmf,dqmf] = MakeBSFilter('CDF',[4 4]);

% Použití wavelet transformace s ostrým prahem a využití rekonstrukce
[im_wrec num2 psnr2] = wave_comp(double(im),dqmf,qmf,4,N,1);


% Zobrazení pouze části obrazu
 
 ind1 = 1:256;
 ind2 = 1:256;
 original =   im(ind1, ind2);
 
 output1 =  ( im_wrec(ind1, ind2));
 output2 =  ( imrec(ind1, ind2));
 
 
 
 
%   figure;mesh(output2);
%  o = fftshift(fft2(output2));
%  mesh(abs(o));

 
 
%  %%výpočty parametrů výstupního obrazu pro metofy wavelet
% xx = double(im)/256;
% xhat1 = (output1/256);
% error = mean(mean(((xx)-(xhat1)).^2));  %MSE
% err = xx - xhat1;
% err = err(:);
% PSNRdb = 10 * log10(1/mean(err .^2));   %PSNR
% ssm = ssim(im, output1);
% snr = 10 * log10(var(xx(:), 1) / mean(err(:).^2)); %SNR
% 
% 
% disp(['Transformace pro ',num2str(N),' koeficientu metody wavelet']);
% disp(' ');
% 
% disp(['PSNR = ',num2str(abs(PSNRdb)),'dB']);
% disp(['SNR  = ',num2str(abs(snr)),'dB']);
% disp(['MSE  = ',num2str(abs(error))]);
% disp(['SSIM = ',num2str(abs(ssm))]);
% 
%  %%výpočty parametrů výstupního obrazu
% xx = double(im)/256;
% xhat1 = (output2/256);
% error2 = mean(mean(((xx)-(xhat1)).^2));  %MSE
% err = xx - xhat1;
% err = err(:);
% PSNRdb2 = 10 * log10(1/mean(err .^2));   %PSNR
% ssm2 = ssim(im, output2);
% snr2 = 10 * log10(var(xx(:), 1) / mean(err(:).^2)); %SNR
% 
% 
% disp(['Transformace pro ',num2str(N),' koeficientu metody shearlet']);
% disp(' ');
% 
% disp(['PSNR = ',num2str(abs(PSNRdb2)),'dB']);
% disp(['SNR  = ',num2str(abs(snr2)),'dB']);
% disp(['MSE  = ',num2str(abs(error2))]);
% disp(['SSIM = ',num2str(abs(ssm2))]);
%  





 
%  imagesc(original),colormap(gray), axis image off
%  imagesc(output1),colormap(gray), axis image off
%   imagesc(output2),colormap(gray), axis image off
% 


