function [output,coef] = zasumshearlet(img,cfs)

%%Transformační metoda schearlet
%   ziska pro vstupni obraz im vystup output, ktery je s omezenym poctem
%   nejvyznamnejsich koeficientu. Ty jsou zadany pod hodnotou cfs.
%   Z možných vystupnich hodnot je na vyber výsledná rekonstrukce obrazu z
%   daneho poctu koeficientu a vypoctene koeficienty dekompozici vstupniho
%   obrazu
%
%   Funkce v zaveru i urci hodnoty kvality obrazu jako jsou SNR,PSNR,MSE a
%   SSIM.
%   
%   Funkce MakeONFilter slouzi k vyberu orthonormalniho filtru. Je mozna
%   volba 'Haar', 'Beylkin', 'Coiflet', 'Daubechies', 'Symmlet','Vaidyanathan','Battle'
%            
%   Funkce HT_DST slouzi k odsumeni obrazu
%       Vstupni parametry:  nimage: Vstupni obraz
                            qmf: typy filtru zrcadlovych filtru
                            ndir: urceni poctu smeru
                            scale: radkovy vektor skladajici se z velikosti cele shearlet stupnice
                            sigma: uroven zasumeni
                            opt
%   Obecny tvar funkce:
%   [OUTPUT,COEF]  = zasumshearlet(IM,CFS)
%
%   Vstupem se zadava primo nazev souboru.
%
%   Priklad zadavani funkce:
%   [output,ocoef] = zasumshearlet('lena.png',1);
%
%   output -  vystup pro metodu Shearlet
%% vstupní obraz
im = imread(img);
im = double(im);
im = im(:,:,1); % omezeni na jednu hladina v pripade barevneho obrazku
%% vytvoreni zasumeni
n = size(im,1);
sigma = 20;    %stanoveni urovne zasumeni    
is_real = 1;
zasumeny = img + sigma*randn(n);
%% volání 1D zrcadlového kvadraturního filtru pro schearlet a wavelet
qmf2 = MakeONFilter('Daubechies',4);
qmf = MakeONFilter('Daubechies',4);

%% Použití schearlet transformace s ostrým prahem a dále rekonstrukce s využitím deseti instrukcí
imrec = HT_DST(zasumeny,qmf2,qmf2,1,[3 3 3 4 4],30,2,1,1,0.9*[4 3 3 3 3],'both')
%% Zobrazení pouze části obrazu
ind1 = 1:length(im);
ind2 = 1:length(im);

original =   im(ind1, ind2);
output =  ( imrec(ind1, ind2));
output=uint8(output);
