jueves, 15 de julio de 2010

Ejemplo Delimitacion Imagenes






Codigo:

%% Adquirir imagenes
I_original=imread('frutas.jpg');

%% Cambiar la imagen a escala de grises
I=rgb2gray(I_original);

%% Obtener el fondo de la imagen
background=imclose(I,strel('disk',58));

%% Identificacion de objetos
I2=imsubtract(background,I);

%% Binarizar imagen
lavel=graythresh(I2);
intensidad=lavel*255
BW=im2bw(I2,lavel);

%% Relleno de objetos (filtro de la media)
fill=imfill(BW,'holes');

%% Identificar objetos
[niveles, numObjects]=bwlabel(BW,4);
numObjects
stats=regionprops(niveles,'Eccentricity','Area','BoundingBox');
areas=[stats.Area];
excentricidad=[stats.Eccentricity]

%% Delimitar manzana
cantidad=0;
manzana=find(areas>80 & areas < style=""> statsmanzana=stats(manzana)
axes(handles.axes1)
imshow(I_original)
hold on;
cantidad =length(statsmanzana)*1+ cantidad ;
for idx = 1:length(statsmanzana);
h = rectangle ('Position',statsmanzana(idx).BoundingBox,...
'Curvature',[1,0.8],'LineWidth',5,'LineStyle','-.');
set (h,'EdgeColor',[0 0 1]);
hold on

end
hold off
disp([cantidad,'manzana'])
set(handles.valor,'string',cantidad)

Conteo de monedas




%% Primero convertimos la imagen a BW
coin1 = im2bw (imread ('coins.png'));
%% Llenamos las regiones de la imagen y los agujeros
coin2 = imfill (coin1, 'agujeros');
%% Etiquetamos y contarmos con los componentes conectados
[L Ne] = bwlabel (doble (coin2));
%% Determinamos la medina de las regiones de la imagen
prop = regionprops (L, 'Espacio', 'Centroide');
%% Inicializamos el contador a cero
total = 0;
%% Mostramos la imagen
imshow (imread ('coins.png')); conservar
Dinero% count% en base al área de la moneda
para n = 1: el tamaño (por la Proposición 1)% De 1 a número total de monedas
ciento = helice (n). Centroide;
X = centavo(1); Y = centavo (2);
2000" uc="Si la Prop (n). Área> 2000 ">If Prop (n). Area> 2000
texto (X-10, Y, '5 C ')
total = 5;
else
total = 10;
texto (X-10, Y, '10 C ')
end
end
hold on
título ([Total de monedas: num2str(total,'Cents'])