function [noise] = Noise_extraction(data,string)
%% Funkce na výpočet průměrného snímku a odečtení tohoto snímku z dat
% pokud chceme šum ve 3D matici (AxBxC).. string = "3D"
% poklud chceme šum ve 2D matici (Ax(BxC)), nezadáváme string

velikost=size(data);
pocet=velikost(3);

if nargin==2
    result=1;
else 
    result=0;
end

for x=1:pocet % normalizace šumu, jako normální bereme první, postupujeme přes průměr
    % vyplníme zbylé outliery tak, aby nám nezasahovaly do průměrného snímku
    filled_data(:,:,x)=filloutliers(data(:,:,x),'center','percentiles',[0.5 99.5]);
    
    prum(x) = mean(filled_data(:, :, x),'all');                           
    Norm_data(:, :, x) = data(:, :, x) *(prum(1) / prum(x)); % znormalizované snímky

end

prumer=0; % spočtení průměrného snímku
for i=1:pocet
    prumer=prumer+Norm_data(:,:,i);
end
prumer=prumer/pocet;

noise_3D=Norm_data-prumer;

% šum v 3D matici
switch(result)
    case 1
     noise=noise_3D;

% šum do 2D matice
    case 0
     noise=noise_3D(:,:,1);
     
       for j=2:pocet
          noise=[noise noise_3D(:,:,j)];
       end
    otherwise
        fprintf('Neplatně zavolaná funkce.')
    
end

