%***Výpočet prahů***

for x=1:nastaveni.sektory.x;                                               % Pro všechny histogramy v ose x
    for y=1:nastaveni.sektory.y;                                           % Pro všechny histogramy v ose y
        for z=1:255
            %normalizuji histogram
            a=double(pamet.upraveny_obraz.hisogram_prum(x,y,z));
            pamet.upraveny_obraz.hisogram_norm(x,y,z)=double(3*z*(a/pamet.upraveny_obraz.rozmer.pixelu_sektor));
        end    
    end
end   
for x=1:nastaveni.sektory.x;                                               % Pro všechny histogramy v ose x
    for y=1:nastaveni.sektory.y;                                           % Pro všechny histogramy v ose y
        for T=1:1:255                                                      % Pro všchny prvky histogramu 
        w0=0;                                                              % Nastavím hodnotu koeficientu w0=0
        % Vypočtu koeficient w0
        for k = 1:1:T-1 w0=w0+pamet.upraveny_obraz.hisogram_norm(x,y,k);, end
        v0=0;                                                              % Nastavím hodnotu koeficientu v0=0
        if w0 == 0 %pokud je w0= 0 udelám z nej 0.001 kuli dělení nulou
            w0=0.001;
        end
        % Vypočtu koeficient v0
        for k = 1:1:T-1 v0=v0+((pamet.upraveny_obraz.hisogram_norm(x,y,k)*k)/w0);, end
        w1=0;                                                              % Nastavím hodnotu koeficientu w1=0
        % Vypočtu koeficient w1
        for k = T:1:255 w1=w1+pamet.upraveny_obraz.hisogram_norm(x,y,k);, end
        v1=0;                                                              % Nastavím hodnotu koeficientu v1=0
        if w1 == 0 %pokud je w1= 0 udelám z nej 0.001 kuli dělení nulou
            w1=0.001; 
        end
        % Vypočtu koeficient v1
        for k = T:1:255 v1=w1+((pamet.upraveny_obraz.hisogram_norm(x,y,k)*k)/w1);, end
        vt=0;
        % Výpočet rozptylu
        for k = 1:1:255 vt=vt+(pamet.upraveny_obraz.hisogram_norm(x,y,k)*k);, end
        vektourek(x,y,T)=sqrt(w0*(v0-vt)*(v0-vt)+w1*(v1-vt)*(v1-vt));
        end
        %hledání maxima
        maximum=vektourek(x,y,1);
        for T=2:1:255
            if vektourek(x,y,T) > maximum
                maximum = vektourek(x,y,T);
                pamet.upraveny_obraz.hisogram_prah(x,y) = T;
            end
        end
    end
end

%vypočet okrajů
temp_xl = ceil(pamet.upraveny_obraz.rozmer.x_m/2);
temp_yl = ceil(pamet.upraveny_obraz.rozmer.y_m/2);

%zjistění pozice krajních bodů
a(1)=temp_yl-1;
b(1)=temp_yl-1;
c(1)=pamet.upraveny_obraz.rozmer.y-(temp_yl+pamet.upraveny_obraz.rozmer.y_p);
d(1)=pamet.upraveny_obraz.rozmer.y-(temp_yl+pamet.upraveny_obraz.rozmer.y_p);

a(2)=temp_xl-1;
b(2)=pamet.upraveny_obraz.rozmer.x-(temp_xl-1+pamet.upraveny_obraz.rozmer.x_p);
c(2)=temp_xl-1;
d(2)=pamet.upraveny_obraz.rozmer.x-(temp_xl-1+pamet.upraveny_obraz.rozmer.x_p);

pamet.upraveny_obraz.prah_a(1:pamet.upraveny_obraz.rozmer.y,1:pamet.upraveny_obraz.rozmer.x)=uint8(0);
%naplnění jednotlivých rohů
%1
pamet.upraveny_obraz.prah_a(1:a(1),1:a(2))=pamet.upraveny_obraz.hisogram_prah(1,1);
%2
pamet.upraveny_obraz.prah_a(1:b(1),b(2):pamet.upraveny_obraz.rozmer.x)=pamet.upraveny_obraz.hisogram_prah(1,nastaveni.sektory.x);
%3
pamet.upraveny_obraz.prah_a(d(1):pamet.upraveny_obraz.rozmer.y,d(2):pamet.upraveny_obraz.rozmer.x)=pamet.upraveny_obraz.hisogram_prah(nastaveni.sektory.y,nastaveni.sektory.x);
%4
pamet.upraveny_obraz.prah_a(c(1):pamet.upraveny_obraz.rozmer.y,1:c(2))=pamet.upraveny_obraz.hisogram_prah(nastaveni.sektory.y,1);

%výpočet lineárního splianu po ose y
x_i=0;
for x=temp_xl:pamet.upraveny_obraz.rozmer.x_m:b(2)
    x_i=x_i+1;
    for y_i=1:1:nastaveni.sektory.y-1
       krok_y=((pamet.upraveny_obraz.hisogram_prah(y_i+1,x_i)-pamet.upraveny_obraz.hisogram_prah(y_i,x_i)))/pamet.upraveny_obraz.rozmer.y_m;
        for yy=1:1:pamet.upraveny_obraz.rozmer.y_m
         pamet.upraveny_obraz.prah_a(a(1)+((y_i-1)*pamet.upraveny_obraz.rozmer.y_m)+yy,x)=(krok_y*yy)+pamet.upraveny_obraz.hisogram_prah(y_i,x_i);
        end 
    end
end

%výpočet lineárního splianu po ose x
for x=1:1:nastaveni.sektory.x-1
    for y=1:1:nastaveni.sektory.y-1
       for yy= 1:1:pamet.upraveny_obraz.rozmer.y_m
            krok_x1=double(pamet.upraveny_obraz.prah_a((y-1)*pamet.upraveny_obraz.rozmer.y_m+temp_yl+yy-1,(x-1)*pamet.upraveny_obraz.rozmer.x_m+temp_xl));
            krok_x2=double(pamet.upraveny_obraz.prah_a((y-1)*pamet.upraveny_obraz.rozmer.y_m+temp_yl+yy-1,(x)*pamet.upraveny_obraz.rozmer.x_m+temp_xl));
            krok_x3=double(krok_x2-krok_x1)/pamet.upraveny_obraz.rozmer.x_m;
            for xx= 1:1:pamet.upraveny_obraz.rozmer.x_m-1 
            pamet.upraveny_obraz.prah_a((y-1)*pamet.upraveny_obraz.rozmer.y_m+temp_yl+yy-1,(x-1)*pamet.upraveny_obraz.rozmer.x_m+temp_xl+xx)=krok_x3*xx+krok_x1; 
    
            end
       end
    end
end
%doplnění okrajů
for y=temp_yl:1:c(1)-1
     pamet.upraveny_obraz.prah_a(y,1:temp_xl)=pamet.upraveny_obraz.prah_a(y,temp_xl);
     pamet.upraveny_obraz.prah_a(y,b(2):pamet.upraveny_obraz.rozmer.x)=pamet.upraveny_obraz.prah_a(y,b(2)-1);
end
for x=temp_xl:1:b(2)
     pamet.upraveny_obraz.prah_a(1:temp_yl,x)=pamet.upraveny_obraz.prah_a(temp_yl,x);
     pamet.upraveny_obraz.prah_a(c(1):pamet.upraveny_obraz.rozmer.y,x)=pamet.upraveny_obraz.prah_a(c(1)-1,x);
end

set(findobj('Tag','Kontrolka_prah'),'BackgroundColor','green');             % obarvi kontrolku ze je krok dokoncen