function valor_area = area(B) 
%AREA Calcula el área en píxeles de una región en una imagen binaria B. 
%   La región debe estar en blanco.
%   valor_area = area(B) 

%______________________________________________________________________%
%                                                                      %
% NOMBRE DEL FICHERO:      area.m                                      %
%                                                                      %
% RECIBE: Imagen binaria                                               %
%         Objeto en blanco, fondo en negro.                            %
% DEVUELVE: El valor del area del objeto. El número de unos que tiene  %
%           la imagen.                                                 %
% ALGORITMO EMPLEADO: recorre la imagen sumando el valor del n.de g.   %
% VARIABLES:   B = imagen introducida. Debe ser binaria!!  Vale tanto  %
%                  si es de 0s y 1s (logical) como 0s y 255s           %
%              valor_area = area del objeto en la imagen               %
%              filas = variable entera (filas de B)                    %
%              columnas = variable entera (columnas de B)              %
%              i = variable entera,se encarga de recorrer las filas de % 
%                  la matriz                                           %
%              j = variable entera,se encarga de recorrer las columnas %
%                  de la matriz                                        %
% BUGS: Si hay varios objetos contabiliza el área total                %
% SUPOSICIONES :  Una unica region en la imagen. Region en blanco      %
% LIBRO: VISION ARTIFICIAL INDUSTRIAL. UNIVERSIDAD DE VALLADOLID 2012  %   
% TEMA 4 IMAGENES BINARIAS                                             %
% AUTORES: Eusebio de la Fuente y Félix Miguel Trespaderne             %
%______________________________________________________________________%
%  Ejemplo de ejecucion:                                               %
%----------------------------------------------------------------------%
% >> I = imread('corona2.bmp');                                        %
% >> B = binauto(I);                                                   % 
% >> B = ~B;       % negamos para que el objeto esté en blanco!!       %
% >> valor_area = area(B);                                             %
%______________________________________________________________________%
% Con funciones de matlab                                      
% >> Ient = imread('llavefija1.bmp');                                            
% >> BW = Ient > 128;        %binariza 'a pelo' con umbral 128 
% >> BW = ~BW;               %pone objeto en blanco                 
% >> area = sum(sum(BW));    %suma los valores de la matriz  
%______________________________________________________________________%
% Con funciones de matlab image processing toolbox   
% Ojo si hay más de un objeto en la imagen binaria falla!!
% >> Ient = imread('corona2.bmp');                                            
% >> umbralOpt=graythresh(Ient);  %busca umbral optimo
% >> BW = im2bw(Ient,umbralOpt);  %binariza
% >> BW = ~BW;                    %pone objeto en blanco                 
% >> s  = regionprops(BW, 'area');       
% >> area = s.Area(1)
%______________________________________________________________________%

% Devuelve el nº de filas y columnas en variables de salida separadas  %
[filas,columnas]=size(B);

valor_area=0;

for i=1:filas
   for j=1:columnas
         if (B(i,j)~=0) valor_area=valor_area + 1;
         end
   end
end



