domingo, 7 de abril de 2013

Contador de objetos con webcam en Matlab


El programa es muy similar al contador de objetos dibujados en un archivo JPG como el de la entrada anterior:

winvid = videoinput('winvideo',1,'YUY2_320x240'); % Probablemente tengas que ajustar esta linea a tu webcam
capt1 = getsnapshot(winvid);

img = rgb2gray(capt1);
bin = img <= min(min(img))+20;

%filtro antiruido tomado de Floydbot
magic=strel('square', 2);
binf=imerode(bin, magic);

cen = regionprops(binf,'centroid'); % Calculo de centroides
num = numel(cen); % Conteo de centroides

El archivo .fig y .m vienen en la carpeta que pueden descargar en el siguiente enlace:

sábado, 6 de abril de 2013

Visión por computadora: Contador de objetos en Matlab

Supongamos que hemos dibujado algunos objetos en Paint, por ejemplo:

Podemos implementar un programa en Matlab que cuente los objetos dibujados en una imagen como la anterior de la siguiente forma:

clear, clc

imagen = imread('objetos.jpg');
img = rgb2gray(imagen); %Conversión RGB a Escala de grises
imshow(imagen)
title('Imagen Original')

binaria = img<=20; % Binarización de la imagen

cen = regionprops(binaria,'centroid'); % Calculo de centroides
num = numel(cen); % Conteo de centroides
fprintf('Numero de objetos: %d\n',num)


Para este ejemplo he guardado la imagen en formato JPG, pero Matlab soporta además los formatos PNG, BMP, GIF, TIFF y XWD. La imagen, como deben recordar, debe encontrarse en el directorio de trabajo que estemos utilizando para que pueda ser llamada por el programa. Próximamente veremos como contar objetos dibujados en una hoja de papel utilizando una webcam.