%   NORMAL2 [obr_gr maz] = normal2(obr_barevny)
%   Funkce slouží k odtranění nestejného osvícení obrazu sítnice.
%
%   obr_gr - normalozovaný obraz
%   maz - maska sloužící k odstranění okolí sítnice
%   obr_barevny - vstupni obraz

function [obr_gr maz] = normal2(obr_barevny)


g = obr_barevny(:,:,2); %vybrani jen zelene slozky
g=double(g);
vel = size(g); %zjisteni rozliseni obrazu


maz = g;
maz(maz<=3) = 0;    % naprahovaní černého okolí sítnice
maz(maz>3) = 1;
maz = bwmorph(maz,'erode',2);

stredni = sum(sum(g))/(vel(1)*vel(2));
g(g<3) = stredni;   % nahrazení černého okolí střední hodnotou


% -	Rozmazání zelené a červené složky s šířkou matice 51
sirka_matice = 51;  % velikost matice
%% operátor pro rozmazání
op_rozmaz = zeros(vel(1),vel(2));
op_rozmaz((vel(1))/2-(sirka_matice-1)/2:(vel(1))/2+(sirka_matice-1)/2,(vel(2))/2-(sirka_matice-1)/2:(vel(2))/2+(sirka_matice-1)/2) = ones(sirka_matice,sirka_matice)/sirka_matice;;
op_rozmaz = fftshift(op_rozmaz);
%%

four_rozmaz=fft2(op_rozmaz);    % four. trans. operatoru
four_g=fft2(g); % four. trans. obrazu

filtr_g=four_g.*four_rozmaz;    % filtrace obrazu ve frek. oblasti
rozmaz_g = ifft2(filtr_g);  % zpětná four. transformace
rozmaz_g=rozmaz_g*1/max(max(rozmaz_g)); % normalizace obr

obr_g = g ./ rozmaz_g; % podělení orig. obrazu modelem pozadí

obr_g=obr_g*1/max(max(obr_g));  % normalizace obrazu k 1

obr_st = obr_g(floor(end/5):end-floor(end/5),floor(end/5):end-floor(end/5));    % střed obrazu sítnice
vel_s = size(obr_st);   % zjištění velikosti středu
stredni = sum(sum(obr_st))/(vel_s(1)*vel_s(2)); % střední hodnota jasu v obrazu středu
obr_g = obr_g .* maz;   % smazání okolá sítnice
obr_g(obr_g<0.003) = stredni;   % nahrazení černého okolí střední hodnotou



obr_gr = 1-obr_g;

