SlideShare una empresa de Scribd logo
1 de 12
FACULTAD DE INGENIERÍA DE
PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA
ELECTRÓNICA
CURSO: LABORATORIO DE PROCESAMIENTO DIGITAL
DE IMÁGENES.
TEMA: DETECCION DEL ANGULO DE INCLINACION DE
UN OBJETO CON RESPECTO AL CENTRO DE
GRAVEDAD USANDO MATLAB EN TIEMPO
REAL.
ALUMNOS: AHUANLLA GONZALES, PEDRO JESUS
HORARIO: JUEVES 7:00-9:00 AM.
2014-A
SEGUIMIENTODE OBJETOS DE COLORES CONWEBCAM EN MATLAB
1.-Captura de Imágenes Mediante Cámara Conectadas a la Pc.
Resulta de suma utilidad para implementar algoritmos de visión o adquisición de imágenes en
tiempo real utilizando dispositivos simples y de bajo costo tales como las webcams.
Para este fin es necesario tener el toolbox ‘Image Acquisition’.
El toolbox incluye la herramienta Image Acquisition tool ‘imaqtool’ que se utilizara
posteriormente.
2.-Comandos a utilizar.
Imaqhwinfo
Devuelve lainformación del hardware y software disponibles, tales como: Adaptador de
video instalado, versión de Matlab, Toolbox (nombre y versión).
Imaqhwinfo (‘adaptor’)
Donde adaptor es el nombre del adaptador instalado, por lo general suele ser winvideo.
Este comando devuelve información relacionada al adaptador.
Imaqhwinfo (‘adaptor’, DeviceID)
Donde DeviceIDesel IDdel dispositivoautilizarobtenidoconel comandoanterior. Si solo
se cuenta con un dispositivo conectado el DeviceID será 1. Este comando muestra
información del dispositivo conectado (cámara).
El adaptador instalado es ‘winvideo’.
Hay un dispositivo de adquisición de imágenes instalado (DeviceID).
Este dispositivo instalado es una webcam ‘TOSHIBA Web Camera - HP’.
Además soporta 7 formatos de adquisición. Formato por
defecto:’YUY2_128X1024’.
3.-Coneccion del Hardware.
1.1.- Conecte el dispositivo de adquisición de imágenes al PC (En nuestro caso es el de la
misma laptop).-
4.-Marco Teórico.
Procesamientode imágenesenMatlab.
¿Qué compone una imagen?
Cada imagense compone de unamatrizde MXN pixeles(contracciónde ‘elementode imagen’)
con M filasy N columnasde pixeles.Cadapixelcontiene unciertovalorde rojo,verde yazul.La
variaciónde estosvaloresparael rojo,verde,azul (RGB) podemosconseguircasi cualquiercolor.
 Almacenamientode imágenesenMatlab.
 Deteccionde color
El formatoRGB es un métodopracticopara representarimágenesen color. Matlab crea
tresmatrices(otresmatricesde MXN) con cada matriz que representaloscomponentes
normalizadosde rojo,verde oazul para leeryalmacenarcada uno de losfotogramas del
video.El colorde cualquierpixel se determinaporlacombinaciónde valoresAzul Rojo
Verde yalmacenadaentresmatricesenla ubicaciónde ese pixel.AsícomoMatlab lee y
manipulaarchivosjpg.
6.-Codigoen Matlab.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%
close all;clear all;clc;
% primero se captura un stream de video usando videoinput, con argumento
%de winvideo, numero de dispositivo y formato de la camara, si no sabes
usa la
%funcion imaqtool para averiguarlo es YUY o RGB
vid=videoinput('winvideo',1,'YUY2_640x480');
%640x480 160x120
% Se configura las opciones de adquision de video
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb')
vid.FrameGrabInterval = 5;
%framegrabinterval significa que tomara cada 5 frame del stream de video
adquirida
%con start(vid) se activa la adquisicion, pero todavia se toma la primera
foto
start(vid)
% creamos un bucle que puede ser while always o while true en este caso
%y como mi compu es una netbook trucha(trucha=cagada=lenta=barata)
%hago que despues de 100 frames adquiridos se salga del bucle para evitar
colgadas
while(vid.FramesAcquired<=100)
% se toma una snapshot del stream y se la almacena en data para trabajar
mas
%facil
data = getsnapshot(vid);
% ahora vamos a reconocer el color rojo en tiempo real
% tenemos que extraer el color rojo
% de la imagen en escala de grises de la imagen adquirida en data
diff_im = imsubtract(data(:,:,1), rgb2gray(data));
%imsubstract sirve para sacar algun valor constante de una imagen, usamos
como
%argumento el array de data y la funcion rgb2gray de data
%se usa medfilt2 para filtrar la senial del ruido
diff_im = medfilt2(diff_im, [3 3]);
% Convertir la imagen en escala de grises a una imagen binaria.
diff_im = im2bw(diff_im,0.18);
% para determinar el tamanio a reconocer se usa bwareopen para descartar
%imagen de rojo de menos de 300 pixels
diff_im = bwareaopen(diff_im,300);
% Etiquetamos los elementos conectados en la imagen
bw = bwlabel(diff_im, 8);
% Ahora hacemos el analisis del "objeto" detectado(que solo son pixels
rojos)
%agrupados de mas de 300
% onfiguramos la region etiquetada
stats = regionprops(bw, 'BoundingBox', 'Centroid');
% centro de gravedad
[N M]= size(bw);
M00=0;M10=0;M01=0;
M20=0;M02=0;;M11=0;
for i=1:N
for j=1:M
if(bw(i,j)==1) %(SI ES UNA IMAGEN BLANCA)
M00=M00+1; % ENTONCES
M10=M10+j; % SUMATORIA DE LOS MOMENTOS DE LA IMAGEN
M01=M01+i;
M20=M20+j*j; % VER LA ECUACION DE LOS MOMENNTOS CENTRALES DE
ORDEN PQ
M02=M02+i*i;
M11=M11+i*j;
end
end
end
cx=M10/M00;
cy=M01/M00;
disp(cx);
disp(cy);
u00=M00; % ver ecuacion en copias de momentos centrales en forma
resumida,
u20=M20-cx*M10;% ver ecuacion en copias de momentos centrales en forma
resumida,
u02=M02-cy*M01;% ver ecuacion en copias de momentos centrales en forma
resumida,
u11=M11-cy*M10;% ver ecuacion en copias de momentos centrales en forma
resumida,
hold on
plot(cx,cy,'-m+');
%eje mayor
l=sqrt((u20+u02+sqrt(((u20-u02)^2)+(4*u11^2)))/(u00/2))
%eje
% menor
w=sqrt((u20+u02-sqrt(((u20-u02)^2)+(4*u11^2)))/(u00/2))
%orientcion eje mayor
th=0.5*atan2(2*u11,(u20-u02))% atan arco tangente en cuatro cuadrantes
% coordenadas eje mayor
p1=[cx+0.5*l*cos(th) cy+0.5*l*sin(th)];
p2=[cx-0.5*l*cos(th) cy-0.5*l*sin(th)];
%coordenadas eje menor
p3=[cx+0.5*w*sin(th) cy-0.5*w*cos(th)];
p4=[cx-0.5*w*sin(th) cy+0.5*w*cos(th)];
line([p1(1,1) p2(1,1)],[p1(1,2) p2(1,2)]); % une con una linea 2 puntos
line([p3(1,1) p4(1,1)],[p3(1,2) p4(1,2)]); % une con una linea 2 puntos
disp(th*180/pi)
cx=M10/M00;
cy=M01/M00;
disp(cx);
disp(cy);
u00=M00; % ver ecuacion en copias de momentos centrales en forma
resumida,
u20=M20-cx*M10;% ver ecuacion en copias de momentos centrales en forma
resumida,
u02=M02-cy*M01;% ver ecuacion en copias de momentos centrales en forma
resumida,
u11=M11-cy*M10;% ver ecuacion en copias de momentos centrales en forma
resumida,
hold on
plot(cx,cy,'rs');
%eje mayor
l=sqrt((u20+u02+sqrt((u20-u02)^2+4*u11^2))/(u00/2))
%eje menor
w=sqrt((u20+u02-sqrt((u20-u02)^2+4*u11^2))/(u00/2))
%orientcion eje mayor
th=0.5*atan2(2*u11,(u20-u02))% atan arco tangente en cuatro cuadrantes
p1=[cx+0.5*l*cos(th) cy+0.5*l*sin(th)];
p2=[cx-0.5*l*cos(th) cy-0.5*l*sin(th)];
p3=[cx+0.5*w*sin(th) cy-0.5*w*cos(th)];
p4=[cx-0.5*w*sin(th) cy+0.5*w*cos(th)];
line([p1(1,1) p2(1,1)],[p1(1,2) p2(1,2)]); % une con una linea 2 puntos
line([p3(1,1) p4(1,1)],[p3(1,2) p4(1,2)]);% une con una linea 2 puntos
disp(th*180/pi)
%dispth
% mostramos la imagen
imshow(data)
hold on
%este es un bucle para encerrar el objeto rojo en un rectangulp y una
cruz en el
%centroide(solo es programacion basica de matlab)
for object = 1:length(stats)
bb = stats(object).BoundingBox;
bc = stats(object).Centroid;
rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
plot(bc(1),bc(2), '-m+')
%a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ',
num2str(round(bc(2)))));
%set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12,
'Color', 'yellow');
end
hold off
end
% aqui terminan los 2 bucles
% detenemos la captura
stop(vid);
%FLUSHDATA remueve la imagen del motor de adquisicion y la almacena en el
buffer
flushdata(vid);
clear all
% borramos todo(como en cualquier programa)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7.-Concluciones.
 Hay que teneren cuentadiversospatronesporque cuandovaríala luzóseadisminuye o
aumentanopodría llegara reconoceral objeto.
 Algomuyimportante esque antesde empezartodotenemosque asegurarnosde que este
instaladoel toolbox ‘ImageAcquisition’. Yaque sin ellonose podrállevara cabo este
trabajo.
 El trabajoen realidaderaseguimientocualquieraque fuese el objeto,peroparamayor
simplicidadoptamosenescogerunpatrónenrealidadexistenmuchocomoporejemplo
identificarunobjetoporcolor,forma, dimensión,etc.Nosotrosoptamosidentificarun
objetoporel color.
8.-Bibliografia
http://cnx.org/contents/9061fd10-2fec-426d-a107-
8272eb37ab92@2/Webcam_Color_Tracking_in_Matla
http://es.wikipedia.org/wiki/Segmentaci%C3%B3n_(procesamiento_de_im%C3%A1genes)
http://alojamientos.us.es/gtocoma/pid/tema4.pdf

Más contenido relacionado

Similar a 282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx

Análisis de imágenes: reconocimiento de letras
Análisis de imágenes: reconocimiento de letrasAnálisis de imágenes: reconocimiento de letras
Análisis de imágenes: reconocimiento de letras
Sandra Lucia
 
Sistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento ySistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento y
viisonartificial2012
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
jcbp_peru
 
Documento completo
Documento completoDocumento completo
Documento completo
Ediee Dk
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
jcbp_peru
 

Similar a 282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx (20)

Análisis de imágenes: reconocimiento de letras
Análisis de imágenes: reconocimiento de letrasAnálisis de imágenes: reconocimiento de letras
Análisis de imágenes: reconocimiento de letras
 
Sistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento ySistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento y
 
Archivos apuntes-comandos comunes de matlab para el procesamiento de imágen
Archivos apuntes-comandos comunes de matlab para el procesamiento de imágenArchivos apuntes-comandos comunes de matlab para el procesamiento de imágen
Archivos apuntes-comandos comunes de matlab para el procesamiento de imágen
 
Conteo globulos rbustamante
Conteo globulos rbustamanteConteo globulos rbustamante
Conteo globulos rbustamante
 
Matlab presentacion enero2012
Matlab presentacion enero2012Matlab presentacion enero2012
Matlab presentacion enero2012
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
 
Contenedoras de dos dimensiones
Contenedoras de dos dimensionesContenedoras de dos dimensiones
Contenedoras de dos dimensiones
 
matlab
matlabmatlab
matlab
 
Computacion
ComputacionComputacion
Computacion
 
Documento completo
Documento completoDocumento completo
Documento completo
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
 
Deber 7-cap-2-matlab-nise
Deber 7-cap-2-matlab-niseDeber 7-cap-2-matlab-nise
Deber 7-cap-2-matlab-nise
 
UtplMadrid_Tutorías_MATLAB_IMAGENES MATLAB
UtplMadrid_Tutorías_MATLAB_IMAGENES MATLABUtplMadrid_Tutorías_MATLAB_IMAGENES MATLAB
UtplMadrid_Tutorías_MATLAB_IMAGENES MATLAB
 
Informe proyecto señales y sistemas ,ingenieria electronica-UNSAAC
Informe proyecto señales y sistemas ,ingenieria electronica-UNSAACInforme proyecto señales y sistemas ,ingenieria electronica-UNSAAC
Informe proyecto señales y sistemas ,ingenieria electronica-UNSAAC
 
Morfología de la imagen digital
Morfología de la imagen digitalMorfología de la imagen digital
Morfología de la imagen digital
 
Introducción a la informática
Introducción a la informáticaIntroducción a la informática
Introducción a la informática
 
Reconocimiento de Dígitos Manuscritos usando la Dase de Datos MNIST
Reconocimiento de Dígitos Manuscritos usando la Dase de Datos MNISTReconocimiento de Dígitos Manuscritos usando la Dase de Datos MNIST
Reconocimiento de Dígitos Manuscritos usando la Dase de Datos MNIST
 
Criterio de bode y nyquist matlab
Criterio de bode y nyquist matlabCriterio de bode y nyquist matlab
Criterio de bode y nyquist matlab
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 
Las matemáticas en el retoque digital de imágenes
Las matemáticas en el retoque digital de imágenesLas matemáticas en el retoque digital de imágenes
Las matemáticas en el retoque digital de imágenes
 

Último

6.1-Proclamación de la II República, la Constitución y el bienio reformista-L...
6.1-Proclamación de la II República, la Constitución y el bienio reformista-L...6.1-Proclamación de la II República, la Constitución y el bienio reformista-L...
6.1-Proclamación de la II República, la Constitución y el bienio reformista-L...
jose880240
 
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZTIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
varichard
 
Presentación_ Marco general de las contrataciones públicas.pdf
Presentación_ Marco general de las contrataciones públicas.pdfPresentación_ Marco general de las contrataciones públicas.pdf
Presentación_ Marco general de las contrataciones públicas.pdf
fernandolozano90
 
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJHInmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Vivafornai
 
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
MirkaCBauer
 

Último (20)

Diseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdfDiseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdf
 
subestaciones electricas , elementos y caracteristicas
subestaciones electricas , elementos y caracteristicassubestaciones electricas , elementos y caracteristicas
subestaciones electricas , elementos y caracteristicas
 
6.1-Proclamación de la II República, la Constitución y el bienio reformista-L...
6.1-Proclamación de la II República, la Constitución y el bienio reformista-L...6.1-Proclamación de la II República, la Constitución y el bienio reformista-L...
6.1-Proclamación de la II República, la Constitución y el bienio reformista-L...
 
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPODIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
 
Trabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayoTrabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayo
 
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZTIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
 
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdfESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
 
REGLA DE PROBABILIDADES Y REGLA DE BAYES.pptx
REGLA DE PROBABILIDADES  Y REGLA DE BAYES.pptxREGLA DE PROBABILIDADES  Y REGLA DE BAYES.pptx
REGLA DE PROBABILIDADES Y REGLA DE BAYES.pptx
 
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docxESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
 
TYPP_Industrialización del Petróleo.pptx
TYPP_Industrialización del Petróleo.pptxTYPP_Industrialización del Petróleo.pptx
TYPP_Industrialización del Petróleo.pptx
 
Presentación_ Marco general de las contrataciones públicas.pdf
Presentación_ Marco general de las contrataciones públicas.pdfPresentación_ Marco general de las contrataciones públicas.pdf
Presentación_ Marco general de las contrataciones públicas.pdf
 
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJHInmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
 
1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf
 
herrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptxherrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptx
 
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdfslideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
 
Cuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdfCuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdf
 
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
 
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOS
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOSTEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOS
TEST ESPACIAL CONTEO DE CUBOS y TEST DE MOSAICOS
 
DIAGRAMAS PID automatizacion y control.ppt
DIAGRAMAS PID automatizacion y control.pptDIAGRAMAS PID automatizacion y control.ppt
DIAGRAMAS PID automatizacion y control.ppt
 
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
 

282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx

  • 1. FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA CURSO: LABORATORIO DE PROCESAMIENTO DIGITAL DE IMÁGENES. TEMA: DETECCION DEL ANGULO DE INCLINACION DE UN OBJETO CON RESPECTO AL CENTRO DE GRAVEDAD USANDO MATLAB EN TIEMPO REAL. ALUMNOS: AHUANLLA GONZALES, PEDRO JESUS HORARIO: JUEVES 7:00-9:00 AM. 2014-A
  • 2. SEGUIMIENTODE OBJETOS DE COLORES CONWEBCAM EN MATLAB 1.-Captura de Imágenes Mediante Cámara Conectadas a la Pc. Resulta de suma utilidad para implementar algoritmos de visión o adquisición de imágenes en tiempo real utilizando dispositivos simples y de bajo costo tales como las webcams. Para este fin es necesario tener el toolbox ‘Image Acquisition’. El toolbox incluye la herramienta Image Acquisition tool ‘imaqtool’ que se utilizara posteriormente. 2.-Comandos a utilizar. Imaqhwinfo Devuelve lainformación del hardware y software disponibles, tales como: Adaptador de video instalado, versión de Matlab, Toolbox (nombre y versión). Imaqhwinfo (‘adaptor’) Donde adaptor es el nombre del adaptador instalado, por lo general suele ser winvideo. Este comando devuelve información relacionada al adaptador. Imaqhwinfo (‘adaptor’, DeviceID) Donde DeviceIDesel IDdel dispositivoautilizarobtenidoconel comandoanterior. Si solo se cuenta con un dispositivo conectado el DeviceID será 1. Este comando muestra información del dispositivo conectado (cámara).
  • 3. El adaptador instalado es ‘winvideo’. Hay un dispositivo de adquisición de imágenes instalado (DeviceID). Este dispositivo instalado es una webcam ‘TOSHIBA Web Camera - HP’. Además soporta 7 formatos de adquisición. Formato por defecto:’YUY2_128X1024’. 3.-Coneccion del Hardware. 1.1.- Conecte el dispositivo de adquisición de imágenes al PC (En nuestro caso es el de la misma laptop).- 4.-Marco Teórico. Procesamientode imágenesenMatlab. ¿Qué compone una imagen? Cada imagense compone de unamatrizde MXN pixeles(contracciónde ‘elementode imagen’) con M filasy N columnasde pixeles.Cadapixelcontiene unciertovalorde rojo,verde yazul.La variaciónde estosvaloresparael rojo,verde,azul (RGB) podemosconseguircasi cualquiercolor.  Almacenamientode imágenesenMatlab.
  • 4.  Deteccionde color El formatoRGB es un métodopracticopara representarimágenesen color. Matlab crea tresmatrices(otresmatricesde MXN) con cada matriz que representaloscomponentes normalizadosde rojo,verde oazul para leeryalmacenarcada uno de losfotogramas del video.El colorde cualquierpixel se determinaporlacombinaciónde valoresAzul Rojo Verde yalmacenadaentresmatricesenla ubicaciónde ese pixel.AsícomoMatlab lee y manipulaarchivosjpg.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. 6.-Codigoen Matlab. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% close all;clear all;clc; % primero se captura un stream de video usando videoinput, con argumento %de winvideo, numero de dispositivo y formato de la camara, si no sabes usa la %funcion imaqtool para averiguarlo es YUY o RGB vid=videoinput('winvideo',1,'YUY2_640x480'); %640x480 160x120 % Se configura las opciones de adquision de video set(vid, 'FramesPerTrigger', Inf); set(vid, 'ReturnedColorspace', 'rgb') vid.FrameGrabInterval = 5; %framegrabinterval significa que tomara cada 5 frame del stream de video adquirida %con start(vid) se activa la adquisicion, pero todavia se toma la primera foto start(vid) % creamos un bucle que puede ser while always o while true en este caso %y como mi compu es una netbook trucha(trucha=cagada=lenta=barata) %hago que despues de 100 frames adquiridos se salga del bucle para evitar colgadas while(vid.FramesAcquired<=100) % se toma una snapshot del stream y se la almacena en data para trabajar mas %facil data = getsnapshot(vid); % ahora vamos a reconocer el color rojo en tiempo real % tenemos que extraer el color rojo % de la imagen en escala de grises de la imagen adquirida en data diff_im = imsubtract(data(:,:,1), rgb2gray(data)); %imsubstract sirve para sacar algun valor constante de una imagen, usamos como
  • 10. %argumento el array de data y la funcion rgb2gray de data %se usa medfilt2 para filtrar la senial del ruido diff_im = medfilt2(diff_im, [3 3]); % Convertir la imagen en escala de grises a una imagen binaria. diff_im = im2bw(diff_im,0.18); % para determinar el tamanio a reconocer se usa bwareopen para descartar %imagen de rojo de menos de 300 pixels diff_im = bwareaopen(diff_im,300); % Etiquetamos los elementos conectados en la imagen bw = bwlabel(diff_im, 8); % Ahora hacemos el analisis del "objeto" detectado(que solo son pixels rojos) %agrupados de mas de 300 % onfiguramos la region etiquetada stats = regionprops(bw, 'BoundingBox', 'Centroid'); % centro de gravedad [N M]= size(bw); M00=0;M10=0;M01=0; M20=0;M02=0;;M11=0; for i=1:N for j=1:M if(bw(i,j)==1) %(SI ES UNA IMAGEN BLANCA) M00=M00+1; % ENTONCES M10=M10+j; % SUMATORIA DE LOS MOMENTOS DE LA IMAGEN M01=M01+i; M20=M20+j*j; % VER LA ECUACION DE LOS MOMENNTOS CENTRALES DE ORDEN PQ M02=M02+i*i; M11=M11+i*j; end end end cx=M10/M00; cy=M01/M00; disp(cx); disp(cy); u00=M00; % ver ecuacion en copias de momentos centrales en forma resumida, u20=M20-cx*M10;% ver ecuacion en copias de momentos centrales en forma resumida, u02=M02-cy*M01;% ver ecuacion en copias de momentos centrales en forma resumida, u11=M11-cy*M10;% ver ecuacion en copias de momentos centrales en forma resumida, hold on plot(cx,cy,'-m+'); %eje mayor l=sqrt((u20+u02+sqrt(((u20-u02)^2)+(4*u11^2)))/(u00/2)) %eje % menor w=sqrt((u20+u02-sqrt(((u20-u02)^2)+(4*u11^2)))/(u00/2)) %orientcion eje mayor th=0.5*atan2(2*u11,(u20-u02))% atan arco tangente en cuatro cuadrantes % coordenadas eje mayor p1=[cx+0.5*l*cos(th) cy+0.5*l*sin(th)];
  • 11. p2=[cx-0.5*l*cos(th) cy-0.5*l*sin(th)]; %coordenadas eje menor p3=[cx+0.5*w*sin(th) cy-0.5*w*cos(th)]; p4=[cx-0.5*w*sin(th) cy+0.5*w*cos(th)]; line([p1(1,1) p2(1,1)],[p1(1,2) p2(1,2)]); % une con una linea 2 puntos line([p3(1,1) p4(1,1)],[p3(1,2) p4(1,2)]); % une con una linea 2 puntos disp(th*180/pi) cx=M10/M00; cy=M01/M00; disp(cx); disp(cy); u00=M00; % ver ecuacion en copias de momentos centrales en forma resumida, u20=M20-cx*M10;% ver ecuacion en copias de momentos centrales en forma resumida, u02=M02-cy*M01;% ver ecuacion en copias de momentos centrales en forma resumida, u11=M11-cy*M10;% ver ecuacion en copias de momentos centrales en forma resumida, hold on plot(cx,cy,'rs'); %eje mayor l=sqrt((u20+u02+sqrt((u20-u02)^2+4*u11^2))/(u00/2)) %eje menor w=sqrt((u20+u02-sqrt((u20-u02)^2+4*u11^2))/(u00/2)) %orientcion eje mayor th=0.5*atan2(2*u11,(u20-u02))% atan arco tangente en cuatro cuadrantes p1=[cx+0.5*l*cos(th) cy+0.5*l*sin(th)]; p2=[cx-0.5*l*cos(th) cy-0.5*l*sin(th)]; p3=[cx+0.5*w*sin(th) cy-0.5*w*cos(th)]; p4=[cx-0.5*w*sin(th) cy+0.5*w*cos(th)]; line([p1(1,1) p2(1,1)],[p1(1,2) p2(1,2)]); % une con una linea 2 puntos line([p3(1,1) p4(1,1)],[p3(1,2) p4(1,2)]);% une con una linea 2 puntos disp(th*180/pi) %dispth % mostramos la imagen imshow(data) hold on %este es un bucle para encerrar el objeto rojo en un rectangulp y una cruz en el %centroide(solo es programacion basica de matlab) for object = 1:length(stats) bb = stats(object).BoundingBox;
  • 12. bc = stats(object).Centroid; rectangle('Position',bb,'EdgeColor','r','LineWidth',2) plot(bc(1),bc(2), '-m+') %a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ', num2str(round(bc(2))))); %set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow'); end hold off end % aqui terminan los 2 bucles % detenemos la captura stop(vid); %FLUSHDATA remueve la imagen del motor de adquisicion y la almacena en el buffer flushdata(vid); clear all % borramos todo(como en cualquier programa) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 7.-Concluciones.  Hay que teneren cuentadiversospatronesporque cuandovaríala luzóseadisminuye o aumentanopodría llegara reconoceral objeto.  Algomuyimportante esque antesde empezartodotenemosque asegurarnosde que este instaladoel toolbox ‘ImageAcquisition’. Yaque sin ellonose podrállevara cabo este trabajo.  El trabajoen realidaderaseguimientocualquieraque fuese el objeto,peroparamayor simplicidadoptamosenescogerunpatrónenrealidadexistenmuchocomoporejemplo identificarunobjetoporcolor,forma, dimensión,etc.Nosotrosoptamosidentificarun objetoporel color. 8.-Bibliografia http://cnx.org/contents/9061fd10-2fec-426d-a107- 8272eb37ab92@2/Webcam_Color_Tracking_in_Matla http://es.wikipedia.org/wiki/Segmentaci%C3%B3n_(procesamiento_de_im%C3%A1genes) http://alojamientos.us.es/gtocoma/pid/tema4.pdf