function centro = centroideEtiq(E, etiq)
%CENTROIDE Extrae del centro de gravedad de una region en img. etiquetas.
%   centro = centroideEtiq(E, etiq)
%   Devuelve un vector 1x2 con coordenadas x, y del centro de gravedad  
%   -------->Y
%   |
%   |
%   |
%   v  X
%   La imagen E debe contener la etiqueta que se busca. 0 para el fondo.

%______________________________________________________________________%
%                                                                      %
% NOMBRE DEL FICHERO:   centroideEtiq.m                                %
%                                                                      %
% RECIBE: Imagen etiquetas con uno o varios objetos                    %
% DEVUELVE: Las coordenadas del c. de g. del objeto con esa etiqueta   %
% ALGORITMO EMPLEADO: calculo momento de primer orden                  %
% VARIABLES:   E = imagen de etiquetas. Puede obtenerse a partir de la %
%                  imagen binaria con E= bwlabel(B);                   %
%              filas = numero de filas de la imagen B                  %
%              columnas = numero de columnas de la imagen B            %
%              i = variable contador para recorrer las filas de la img.% 
%              j = variable contador para recorrer las columnas        %
%              sum_i = sumatorio de las i                              %
%              sum_j = sumatorio de las j                              %
%              ci = fila del centro de gravedad                        %
%              cj = columna del centro de gravedad                     %
%              centro = (ci, cj)                                       %
%              numPixeles = area en pixeles del objeto con la etiqueta %
% BUGS: Solo un objeto en la imagen, sino da el c.g. del conjunto      %
% SUPOSICIONES : La imagen E contiene la etiqueta que se busca         %
%______________________________________________________________________%
%  Comandos de ejecucion:                                              %
%----------------------------------------------------------------------%                                                            
% >> I = imread('tuercas_tornillo2.bmp');     
% >> B = binauto(I);        %binariza con nuestra funcion binauto
% >> B = ~B;                %pone objeto en blanco
% >> [E, nEtiq] = bwlabel(B);                              %etiquetado %                       
% >> centros=zeros(nEtiq,2);  %matriz para guardar cg de todos los obj %
% >> for i=1:nEtiq %calcularemos los cg de todos los objetos en la img %
% >>    centros(i,:) = centroideEtiq(E, i);
% >> end
% >> imshow(B);
% >> hold on
% >> plot(centros(:,2),centros(:,1),'r+') %Con plot invertir coordcoord
% >> hold off; 
%______________________________________________________________________%
% Con funciones de matlab image processing toolbox   
% >> Ient = imread('tuercas_tornillo2.bmp');                                            
% >> Ient umbralOpt=graythresh(Ient);  %busca umbral optimo
% >> Ient BW = im2bw(Ient,umbralOpt);  %binariza
% >> Ient BW = ~BW;                    %pone objetos en blanco                 
% >> Ient s  = regionprops(BW, 'centroid');
% >> Ient imshow(Ient);                %visualización
% >> Ient centros = cat(1,s.Centroid);
% >> Ient imshow(Ient);                %visualización
% >> Ient hold on;                     
% >> Ient plot(centros(:,1), centros(:,2), 'r+')
% >> hold off; 
%______________________________________________________________________%

[filas,columnas] = size(E);

sum_i =0;
sum_j =0;
num_pixeles=0;

for i = 1:filas
    for j = 1: columnas
        if (E(i,j)== etiq)
            num_pixeles= num_pixeles + 1;
            sum_i = sum_i + i;
            sum_j = sum_j + j;
        end
    end
end

%coord.del centroide en (filas, columnas)
ci = sum_i/num_pixeles;
cj = sum_j/num_pixeles;
centro = [ci, cj]; 



