function[vector] = getSCFromRGBe(vstupniObraz);


[height width z] = size(vstupniObraz);

maximum= (height*width)/50;
minimum = (height*width)/500;

uhly(:,:,1) = double(round((atan(vstupniObraz(:,:,2)./(vstupniObraz(:,:,3)+1))/3.14)*180))+1;


uhly(:,:,2) = double(round((atan(vstupniObraz(:,:,1)./(vstupniObraz(:,:,2)+1))/3.14)*180))+1;


numUhly(91,91)             = 0;           % pocet bodu barvy s uhly alfa beta 
sumXUhly(91,91)            = 0;           % soucet hodnot osy x pro vsechny body dane barvy
sumYUhly(91,91)            = 0;           % soucet hodnot osy y pro vsechny body dane barvy
sumX2Uhly(91,91)           = 0;           % soucet kvadratu hodnot osy x pro vsechny body dane barvy
sumY2Uhly(91,91)           = 0;           % soucet kvadratu hodnot osy y pro vsechny body dane barvy
StrHodnX(91,91)            = 0;           % stredni hodnota  vzdalenosti v souradnicich x
StrHodnY(91,91)            = 0;           % stredni hodnota  vzdalenosti v souradnicich y
SigmaX(91,91)              = 0;           % rozptyl vzdalenosti v souradnicich x           
SigmaY(91,91)              = 0;           % rozptyl vzdalenosti v souradnicich y
SmerodatnaOdchylkaX(91,91) = 0;           % smerodatna odchylka vzdalenosti v souradnicich x
SmerodatnaOdchylkaY(91,91) = 0;           % smerodatna odchylka vzdalenosti v souradnicich y


for i = 1:1:height
    for j = 1:1:width
        numUhly(uhly(i,j,1),uhly(i,j,2))    = numUhly(uhly(i,j,1),uhly(i,j,2))   + 1; %teoreticky mozno nahradit width*height pred cyklem
        sumXUhly(uhly(i,j,1),uhly(i,j,2))   = sumXUhly(uhly(i,j,1),uhly(i,j,2))  + j; % j je width cili X
        sumYUhly(uhly(i,j,1),uhly(i,j,2))   = sumYUhly(uhly(i,j,1),uhly(i,j,2))  + i; % i je height cili Y
        sumX2Uhly(uhly(i,j,1),uhly(i,j,2))  = sumX2Uhly(uhly(i,j,1),uhly(i,j,2))  + j*j;
        sumY2Uhly(uhly(i,j,1),uhly(i,j,2))  = sumY2Uhly(uhly(i,j,1),uhly(i,j,2))  + i*i;
    end
end
for i = 1:1:91
    for j = 1:1:91
      if numUhly(i,j)~=0  
        StrHodnX(i,j)   = sumXUhly(i,j)./numUhly(i,j);%stredni hodnota vzdalenosti v souradnici X
        SigmaX(i,j)     = (sumX2Uhly(i,j)./numUhly(i,j)) - ((sumXUhly(i,j).*sumXUhly(i,j))./(numUhly(i,j).*numUhly(i,j))); %rozptyl od stredni hodnoty
        SmerodatnaOdchylkaX(i,j) = sqrt(SigmaX(i,j));
        
        StrHodnY(i,j)   = sumYUhly(i,j)./numUhly(i,j);%stredni hodnota vzdalenosti v souradnici Y
        SigmaY(i,j)     = (sumY2Uhly(i,j)./numUhly(i,j)) - ((sumYUhly(i,j).*sumYUhly(i,j))./(numUhly(i,j).*numUhly(i,j))); %rozptyl od stredni hodnoty
        SmerodatnaOdchylkaY(i,j) = sqrt(SigmaY(i,j));
      else
        StrHodnX(i,j)   = 0;
        SigmaX(i,j)     = 0;
        SmerodatnaOdchylkaX(i,j) = 0;
        
        StrHodnY(i,j)   = 0;
        SigmaY(i,j)     = 0;
        SmerodatnaOdchylkaY(i,j) = 0;
      end
      allVector(:,(i*91)+j-91) = [numUhly(i,j) SmerodatnaOdchylkaX(i,j) SmerodatnaOdchylkaY(i,j) SigmaX(i,j) SigmaY(i,j) StrHodnX(i,j) StrHodnY(i,j) i j]';
    end
end



j=0;
selABnum(91,91) = 0;
%vypoctu pomery pro serazeni
for i=1:1:length(allVector)
    if (allVector(2,i)~=0) 
        allVector(10,i) = allVector(4,i)./allVector(1,i); %pocet bodu dane barvy / smerodatna odchylka X
    else
        allVector(10,i) = 1;
    end
    if (allVector(3,i)~=0) 
        allVector(11,i) = allVector(5,i)./allVector(1,i); %pocet bodu dane barvy / smerodatna odchylka Y
    else
        allVector(11,i) = 1;
    end
    allVector(12,i) = allVector(10,i)+allVector(11,i);
end


%vyberu jen vhodne sloupce
for i=1:1:length(allVector)
    if (allVector(1,i)>minimum && allVector(2,i)*allVector(3,i)<maximum) 
      j=j+1;
      ReduceAllVector(:,j) = allVector(:,i);
    end 
end


if exist('ReduceAllVector','var')

    for i=1:1:size(ReduceAllVector,2)
            selABnum(ReduceAllVector(8,i),ReduceAllVector(9,i))   = ReduceAllVector(1,i);
    end
    % figure
    % surf (selABnum, 'DisplayName', 'selABnum'); title('selABnum')

    stredniHodnotaReduceCetnosti = sum(ReduceAllVector(1,:))/length(ReduceAllVector);

    A=[0.1 0.1 0.1;0.1 0.5 0.1;0.1 0.1 0.1]; 

    ROnly(height,width) = uint8(0);
    selABnumNew = conv2(selABnum,A);

    minPomer = min(ReduceAllVector(12,:));
    q=0;
    for i=2:1:size(selABnumNew,1)-1
            for j=2:1:size(selABnumNew,2)-1
                if (selABnumNew(i,j)>selABnumNew(i,j-1) && selABnumNew(i,j)>selABnumNew(i,j+1) && selABnumNew(i,j)>selABnumNew(i-1,j) && selABnumNew(i,j)>selABnumNew(i-1,j-1)&& selABnumNew(i,j)>selABnumNew(i-1,j+1) && selABnumNew(i,j)>selABnumNew(i+1,j)&& selABnumNew(i,j)>selABnumNew(i+1,j-1)&& selABnumNew(i,j)>selABnumNew(i+1,j+1) )
                    if (allVector(12,((i-1)*91+(j-91-1) ))< minPomer*10)
                        selABnumNew(i-1,j-1) = 1;
                        q = q+1;
                        vector(:,q) = allVector(:,((i-1)*91+(j-91-1) )); 
                    else
                        selABnumNew(i-1,j-1) = 0;
                    end
                else
                    selABnumNew(i-1,j-1) = 0;
                end
            end
    end
else
  vector = zeros(12,1);
end 



% vector = sortrows(vector', [-12 -10 -11])'; 


% 1.  pocet bodu barvy s uhly alfa beta 
% 2.  smerodatna odchylka X
% 3.  smerodatna odchylka Y
% 4.  sigma X - rozptyl
% 5.  sigma Y - rozptyl
% 6.  stredni hodnota vzdalenosti v souradnicich x
% 7.  stredni hodnota vzdalenosti v souradnicich y
% 8.  i = alfa        
% 9.  j = beta
% 10. pomer poctu bodu dane barvy / smerodatna odchylka X
% 11. pomer poctu bodu dane barvy / smerodatna odchylka Y
