function LBP = lbp_riu2(P,R,vstup)

% Funkce pro výpočet rotačně invariantní uniformní LBP distribuce
% Vstupy funkce:
% P - počet okolních pixelů kolem centrálního pixelu
% R - vzdálenost bodů od centrálního pixelu
% vstup - vstupní obraz (výřez obrazu, matice)

[a b] = size(vstup);
lbp = zeros(a-2*R,b-2*R);

submatice = zeros(1,P);
submatice_bin = zeros(1,P);
prechodu = 0;


for i=(R+1):(a-R)
    for j=(R+1):(b-R)
        
        prah = vstup(i,j);    %% centralni pixel - prah
        
        for k=1:P     %% vyber okoli, metoda nearest neighbour
            submatice(k) = vstup( round(i+(R*cos(2*pi*k/P))), round(j-(R*sin(2*pi*k/P))));
        end
                
        for k=1:P   %% lbp prahovani
            if submatice(k) >= prah
               submatice_bin(k) = 1;
            else
               submatice_bin(k) = 0;
            end
        end
        
        for k=1:(P-1)   %%zjisteni poctu prechodu            
            prechodu = prechodu + abs(submatice_bin(k)-submatice_bin(k+1));
        end
        prechodu = prechodu + abs(submatice_bin(1)-submatice_bin(P));
        
        if prechodu > 2  %% vysledna hodnota 
           lbp(i-R,j-R) = P+1;
        else
           lbp(i-R,j-R) = sum(submatice_bin);
        end
            
        prechodu = 0; %% nulovani prechodu 
        
    end
end

LBP = lbp;