function [kolecka uhel souradnice vrcholy vrcholy_vsechny tloustka] = uhlovani(souradnice, obr, tloustka)

%% vyber bodu obrazu, ktere maji hodnotu 1 ve shode s maskou
souradnice_vsechny = souradnice;

maska = [0 0 0 1 1 1 1 1 0 0 0;...      % maska kruznice pro hledani pruniku
         0 1 1 1 0 0 0 1 1 1 0;...      % velikost 11x11
         0 1 0 0 0 0 0 0 0 1 0;...
         1 1 0 0 0 0 0 0 0 1 1;...
         1 0 0 0 0 0 0 0 0 0 1;...
         1 0 0 0 0 0 0 0 0 0 1;...
         1 0 0 0 0 0 0 0 0 0 1;...
         1 1 0 0 0 0 0 0 0 1 1;...
         0 1 0 0 0 0 0 0 0 1 0;...
         0 1 1 1 0 0 0 1 1 1 0;...
         0 0 0 1 1 1 1 1 0 0 0];

for k = 1:length(souradnice)        % cyklus postupne pro vsechny souradnice
    [souradnice vrchol_vsechny] = uhlovani_vnitrni(souradnice,maska,k,obr);
    vrchol = vrchol_vsechny;
    
%% vynulovani souradnic, ktere obsahuji pouze dva a mene vrcholu
pocet = size(vrchol);   % pocet radku a sloupcu matice
if pocet(2)<=2          % ponechani pouze souradnic s minimalne 3 vrcholy
    vrchol =[];         % vymazani matice vrcholu kolem dane souradnice
    tloustka(:,k) = 0;
    souradnice(:,k) = 0;
else
    vrcholy(:,1:length(vrchol),k) = vrchol;     % zapsani do celkove matice vrcholu
end

vrcholy_vsechny(:,1:pocet(2),k) = vrchol_vsechny;     % zapsani do celkove matice vrcholu

end             % konec cyklu matice souradnic bodu krizeni

%% co se ctyrmi detekovanymi vrcholy?
vel = size(vrcholy);        % pocet radku,sloupcu,souradnic
k = 1;
while k <= vel(3)           % pro kazdou souradnici detekovaneho krizeni
    pom = vrcholy(:,:,k)~= 0;       % hledani nenulovych vrcholu
    pocet = length(find(pom==1))/2; % pocet nenulovych vrcholu
    if  pocet > 3           % pro vice nez 3 vrcholy
        vrcholy(:,:,k)=0;
    else
        k = k+1;
    end
    
end         % ukonceni cyklu pro souradnice

%% mazani souradnic, ktere obsahuji pouze dva a mene vrcholu
i = 1;
while i <= vel(3)
    if vrcholy(:,:,i)==0    % smazani souradnic, ktere nemaji ve svem okoli zadny vrchol
        vrcholy(:,:,i)=[];
        souradnice(:,i)=[];
        tloustka(:,i)=[];
    elseif tloustka(:,i) == 0
        tloustka(:,i) = [];
    else
        i = i+1;
    end
    vel = size(vrcholy);
end

%% snizeni poctu hodnot v matici pro kazdou souradnici krizeni na 3 vrcholy
vrcholy(:,4:end,:)=[];
vel = size(vrcholy);

pom = find(tloustka==0);
tloustka(pom) = [];

[pomR pomS] = find(souradnice==0);
souradnice(:,pomS) = [];

%% vypocet uhlu
for k = 1:vel(3)
    for i = 1:vel(2)
        if i==3
            vzdalenost = sqrt((vrcholy(1,i,k)-vrcholy(1,1,k))^2 + ...
            (vrcholy(2,i,k)-vrcholy(2,1,k))^2); % euklid.vzdalenost sousednich vrcholu
            strana1 = sqrt((vrcholy(1,i,k)-souradnice(1,k))^2 + ...
                (vrcholy(2,i,k)-souradnice(2,k))^2);
            strana2 = sqrt((vrcholy(1,1,k)-souradnice(1,k))^2 + ...
               (vrcholy(2,1,k)-souradnice(2,k))^2);
        else
            vzdalenost = sqrt((vrcholy(1,i,k)-vrcholy(1,i+1,k))^2 + ...
            (vrcholy(2,i,k)-vrcholy(2,i+1,k))^2); % euklid.vzdalenost sousednich vrcholu
            strana1 = sqrt((vrcholy(1,i,k)-souradnice(1,k))^2 + ...
                (vrcholy(2,i,k)-souradnice(2,k))^2);
            strana2 = sqrt((vrcholy(1,i+1,k)-souradnice(1,k))^2 + ...
                (vrcholy(2,i+1,k)-souradnice(2,k))^2);
        end
        uhel(1,i,k) = acosd((strana1^2+strana2^2-vzdalenost^2)/(2*strana1*strana2));
    end
    uhel(1,:,k) = sort(uhel(1,:,k));
end

%% znazorneni kolecek kolem souradnic
[kolecka] = koleckovani(souradnice_vsechny,obr,maska);
