Вы находитесь на странице: 1из 35

Introduccin al Anlisis de Video usando MATLAB

Deepak Malani, REC Calicut Anant Malewar, IIT Bombay Emitido por inters pblico por: Nex Robotics Pvt. Ltd. (www.nex-robotics.com)

Prologo: La amplia rea de sistemas autnomos basados en visin es en trminos generales llamada visin de maquina. Hemos tratado con un modulo con nivel de principiante en este campo, al cual nos referimos como movimiento controlado de visin (VCM). Palabras Clave: Visin de Maquina, Adquisicin de Imagen, MATLAB, Control de Robot basado en Visin

Nex Robotics Pvt. Ltd.

http://www.nex-robotics.com/workshop.html

Tabla de Contenidos
1
1.1 1.2

Introduccion______________________________________________________ 3
Descripcion del Sistema:________________________________________________ 3 Herramientas para el Procesamiento de Imgenes__________________________ 4

2
2.1 2.2

Comenzar con MATLAB______________________________________ 5


Interface MATLAB __________________________________________________ 5 Trabajar con Imagenes_______________________________________________ 6
Leer una Imagen________________________________________________________ 6 Visualizar una Imagen______________________________________________________ 7 Generar una Imagen _____________________________________________________ 9

2.2.1 2.2.2 2.2.3

2.3 2.4

ArchivosM___________________________________________________________ 10 Funciones__________________________________________________________ 12

3
3.1 3.2 3.3 3.4

Adquisicion de Imagenes____________________________________________ 13
Presentacion preliminar de Imagenes____________________________________ 14 Capturar and almacenar imagenes ______________________________________ 15 Avanzar con Adquisicion de Imagenes________________________________ 16 Interface con puertos PC ___________________________________________ 18
Puerto Paralelo____________________________________________________________ 18 Puerto Serial______________________________________________________________ 19

3.4.1 3.4.2

4
4.1

Appendice _______________________________________________________ 21
Espacios a color_______________________________________________________ 21

Referencias_______________________________________________________ 23

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

1 Introduccion
En esta seccin se explica el movimiento controlado de visin (VCM) como un sistema.

1.1 Descripcin del Sistema:


El sistema para VCM consiste de: 1. Adquisicin de Imgenes: Consiste de una cmara de video, cmara web, o una cmara anloga con interface adecuada para conectarla a un procesador. 2. Procesador: Consiste ya sea de una computadora personal o una unidad dedicada de procesamiento de imgenes. 3. Anlisis de Imgenes: Ciertas herramientas son usadas para analizar el contenido en la imagen capturada y conclusiones derivadas ej. Localizar la posicin de un objeto. 4. Control de la maquina: Despus de hacer la conclusin se deben hacer acciones mecnicas ej. Usar puertos seriales o paralelos de un PC para controlar motores derechos e izquierdos de un robot para dirigirlo hacia la pelota. Pictricamente, el sistema puede ser representado de la siguiente manera:

Dispositivo de Adquisicin de Imagen ej. camara CCD

Procesador de Imagen ej. PC, DSP

Herramienta de Anlisis de Imagen ej. MATLAB

Control de la maquina ej. Usar puerto paralelo para controlar motores izquierdo y derecho.

1. Capturar Imgenes puede realizarse usando una cmara de video disponible en varias resoluciones. Ej. 640 x 480 pixeles. Existen dos tipos de cmaras generalmente disponibles: Cmaras digitales (CCD- dispositivo cargado en pareja y sensor basado en CMOS) y cmaras anlogas. Las Cmaras digitales generalmente tienen un interface directo con la computadora (puerto USB), pero las cmaras anlogas requieren una tarjeta apropiada de grabacin o una tarjeta sintonizadora para TV para hacer interface con la PC. Requerimientos de Energa: cmaras CCD proporcionan imgenes de alta calidad. Generan una seal anloga y usan un convertidor digital anlogo (ACD) y por ende consumen energa alta. Cmaras CMOS tienen menos sensibilidad resultando en imgenes de poca calidad pero consumen menos energa lo que resulta en una vida de la batera mas larga. 2. El anlisis de imgenes consiste en la extraccin de informacin til de las imgenes capturadas. Primeramente decidimos las caractersticas del objeto que buscamos en la imagen. Esta caracterstica del objeto debe ser tan robusta como sea posible. Generalmente, para el propsito de rastrear o identificar el objeto se utiliza: i. Color ii. Intensidad iii. Textura o patrn

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

iv. Orillas rallas circulares, derechas, verticales v. Estructura Distribucin de objetos en una manera especifica Anlisis de Imagen Cuantitativo/ Estadstico: i. Centro de gravedad punto donde se pueden balancear los pixeles deseados ii. Cuenta de pixeles una cuenta de pixeles alta indica presencia de objetos iii. Blob un rea de pixeles conectados

3. El control de maquina consiste en controlar un robot basado en la conclusin


derivada del anlisis de imgenes. Para lograr esto usando PC, su puerto paralelo o serial puede ser usado para manejar el robot. Ej. Puente H, control PWM puede ser usado extensivamente para movimiento derecho e izquierdo de un robot. El Puerto serial puede ser usado para transferir informacin, el cual necesita un micro controlador en el robot para interpretar la informacin.

1.2 Herramientas para Procesar Imgenes


Una vez que la adquisicin de la imagen este instalada, las imgenes capturadas necesitan ser almacenadas en un formato apropiado para procesarlas. Generalmente, una imagen sin refinar es almacenada como una matriz de intensidad de colores. MATLAB provee una plataforma para adquirir y procesar imgenes muy sencillas. Aun se puede tener acceso a puertos seriales y paralelos usando MATLAB. Sirve como una herramienta til para un nivel principiante VCM. Provee una biblioteca poderosa de muchas funciones para procesar imgenes tiles. Una fuente abierta equivalente de MATLAB es SCILAB (puede descargarse de http://www.scilab.org gratis) y Scilab Image Processing (SIP) caja de herramientas (http://siptoolbox.sourceforge.net). Sin embargo, el apoyo disponible en SIP es limitado ya que con pocos los que contribuyen a esta caja de herramientas.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

2 Comenzar con MATLAB


MATLAB son siglas para MATrix LABoratory, un software desarrollado por Mathworks Inc (www.mathworks.com). MATLAB provee una biblioteca extensa para varios dominios de computaciones y simulaciones cientficas y de ingeniera.

2.1 Interface MATLAB


Cuando haces click en el icono MATLAB (de tu escritorio o Inicio>Todos los Programas), tpicamente ves tres ventanas: Command Window, Workspace y Command History. Imgenes de esas ventanas se muestran a continuacin. Command Window: Esta es la ventana donde escribes los comandos y ves las salidas.

Workspace Esta ventana muestra las variables definidas por tu sesin en MATLAB.

Command History almacena la lista de comandos usados recientemente para hacer referencia a ellos rpidamente.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

Escribir instrucciones bsicas: En MATLAB, las variables son almacenadas como matrices (singular: matrix), el cual puede ser un entero, nmeros reales o aun nmeros complejos. Estas matrices tienen semejanza a las array data structures (usada en programacin de computadoras). Comencemos con instrucciones simples en la ventana de comandos de MATLAB. Para definir un entero, escribe a=5 y haz enter. >> a=5 En cuanto hagas enter, el valor de a se muestra de nuevo en la ventana de comando. Tambin esta variable se almacen como una matriz 1x1, como puede verse en el workspace. Para evitar ver la variable, agrega un punto y coma despus de la instruccin. >> a=5; De igual manera para definir una matriz 2x2, la instruccin en MATLAB se escribe como >> b=[ 1 2; 3 4]; Si estas familiarizado con operaciones en matrices, puedes encontrar la determinante o la inversa de la matriz. >> determin= det(b) >> d=inv(b)

2.2 Trabajar con Imgenes


Comencemos con las instrucciones bsicas para leer y visualizar una imagen en MATLAB.

2.2.1 Leer una Imagen


Una vez que haya comenzado con MATLAB, escribe lo siguiente en la ventana de comando >> im=imread('cameraman.tif'); Este comando almacena la imagen cameraman.tif en una variable con el nombre im.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

La imagen cameraman.tif es almacenada en mi computadora en la locacin siguiente (C:\Program Files\MATLAB71\toolbox\images\imdemos) Puedes alternativamente almacenar una imagen en la locacin siguiente y leerla con el comando siguiente. C:\Program Files\MATLAB71\work

2.2.2 Visualizar una Imagen


Puedes visualizar la imagen en otra ventana usando el comando imshow >>figure,imshow(im); Esto ocasiona que otra ventana salte y visualiza la imagen im.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

Para conocer el alcance y la altura de la imagen, use la funcin size >>s=size(im); >>s Observe y Entienda En MATLAB, una imagen se almacena como una matriz bidimensional, donde la matriz contiene los valores de la intensidad de la luz de los pixeles. Un pixel es la imagen mas pequea que puede aparecer en tu pantalla. La resolucin de una imagen es igual al numero de pixeles que caben en una pulgada cuadrada en tu monitor. Para ver los valores almacenados en esta matriz, escribe >> im(1:10,1:10)

>> figure,imshow(im(50:150,50:150));

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

2.2.3 Generando una Imagen


1. Imagen Binaria Una imagen que contiene solo colores blanco y negro se llama imagen binaria. >>imbin=[0 1;1 0]; >>figure,imshow(imbin,'InitialMagnification','fit') El negro indica intensidad cero y el blanco indica intensidad mxima. 2. Imagen en escala de grises Una imagen en escala de grises contiene valores de intensidad en un rango desde cero hasta la mxima incluyendo negro y blanco. Normalment este rango esta entre 0 y 255. Los valores cerca del cero son sombras de gris y los que estn cerca del 255 indican luz gris. >> imgray=[0.0 0.2 0.4 0.8 1.0]; >> figure,imshow(imgray,'InitialMagnification','fit') or >>imgray=[0 32 64 128 196 255]; >> figure,imshow(uint8(imgray),'InitialMagnification','fit') Nota: Por default, el rango es de 0 a 1 (escribe: doubl). Sin embargo puedes convertir los valores de la imagen de tipo double a unsigned integer (8 bits) usando >>imgray=uint8(imgray) 3. Imgenes a color Una imagen a color se puede considerar que est compuesta por tres colores bsicos: rojo, verde y azul. Tambien se le conoce como imagen RGB. Una imagen a color se representa como un array 3D con 3era dimensin usada para indexar los componentes de color. >> imRGB=imread('peppers.png'); >> figure,imshow(imRGB); Aqu la matriz imrgb es una matriz de tres dimensiones. Para entender esto, escribe >> imRGB(1:5,1:5,:) Para entender como estos 3 colores forman la imagen, ahora intentaremos mostrar el componente de cada color por separado: >> size(imRGB) ans = 384 512 3

>> imR = zeros(384,512,3); >> imR(:,:,1) = imRGB(:,:,1); >> imG = zeros(384,512,3);

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

>> imG(:,:,2) = imRGB(:,:,2); >> imB = zeros(384,512,3); >> imB(:,:,3) = imRGB(:,:,3); >> imtemp=[imR imG imB imRGB]; >> figure,imshow(imtemp); Normalmente cada component de color en una imagen a color puede ser accesado por separado como una matriz en 2D como la siguiente, >> R = imRGB(:,:,1); >> size(R) ans = 384 512 >> figure, imshow(R); 4. Cursor de Datos Para ver los valores de los colores in la figura de la ventana, ve a Tools>Data Cursor, y haz clock en cualquier punto en la imagen. Puedes ver los valores del RGB del pixel en la ubicacion (X,Y). 5. Convirtiendo una imagen RGB a una imagen a escala de grises Una imagen a color se puede convertir en una imagen a escala de grises usando la funcion rgb2gray (funcion disponible en la caja de herramientas image processing) >>imGRAY=rgb2gray(imRGB); 6. Thresholding Una imagen a escala de grises (tambien llamada imagen de intensidad) se puede convertir en una imagen binaria con un proceso llamado thresholding. La caja de herramientas Image Processing provee una function llamada graythresh para calcular un threshold optimo para convertise en una imagen binaria en escala de grises. >> level=graythresh(imGRAY); >> imBW = im2bw(imGRAY,level); >> figure, imshow(imBW); Esta funcion convierte la intensidad de pixeles entre 0 hasta el nivel de intensidad cero (negro) y entre level+1 a 255 hasta maximo (blanco)

2.3 Archivos M
MATLAB provee facilidad para ejecutar declaraciones de mltiples comandos con un solo comando. Esto se realiza escribiendo un archivo m ir a File > New > M-file Por ejemplo, la funcin graythresh puede escribirse manualmente de la siguiente manera:
im=imread('cameraman.tif'); figure,imshow(im);

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

10

s=size(im);
temp=im; thresh=128; for i=1:s(1,1)

for j=1:s(1,2) if temp(i,j)<thresh temp(i,j)=0; else temp(i,j)=255; end end end figure,imshow(temp);

Guarda este archivo como threshold.m en el directorio work y escribe >>threshold En la ventana de comando de MATLAB. La siguiente imagen muestra como aparecen los archivos m. en el editor de matlab.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

11

Comentarios: Observa que, los comentarios (en verde) pueden escribirse despus del smbolo %. Lo que tiene comentarios no se considera para ejecucin. Los archivos m se vuelven una herramienta practica para escribir programas extensos y pueden ser guardados y editados segn se requiera. Ahora veremos como definir nuestras propias funciones en MATLAB.

2.4 Funciones
Las funciones ayudan a escribir cdigos organizados con repeticin de lgica mnima. Al escribir archivos m, a menudo es existen instrucciones que se requieren repetitivamente. En lugar de escribir nuevamente la instruccin, puedes definir la funcin, donde necesitas pasar la informacin para ser operada y escoger los valores que necesitas que regrese. La siguiente funcin calcula el centro de gravedad de un objeto en la imagen. Este archivo se debe guardar con el mismo nombre que el de la funcin (ej. centro.m). function [cent]= center(im) s=size(im); cx=0;cy=0; n=1; for i=1:s(1,1) for j=1:s(1,2) if im(i,j)==255 % 1 or 255 n=n+1; cx=cx+i; cy=cy+j; end end end cxavg=cx/n; cyavg=cy/n; [cent]=[cyavg,cxavg]; Esta funcin se puede llamar de la siguiente manera: >>cog=center(imscan); La instruccin pasara la matriz imscan a la funcin, y almacena el valor que la funcin regresa a la variable cog.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

12

3 Adquisicin de Imagen
Antes de avanzar, veamos el apoyo que la caja de herramientas de image adquisition en MATLAB nos proporciona. Hoy en da la mayora de las cmaras estn disponibles con interface USB. Una vez que instalaste el controlador para la cmara, la computadora detecta el dispositivo en cualquier momento que lo conectes. Alternativamente, si tienes una cmara de video digital o una cmara CCD conectada con una tarjeta de captura y con interface de la computadora, sistema operativo Windows, automticamente detecta el dispositivo. Para poder ejecutar ms instrucciones necesitaras una cmara USB funcional conectada a tu PC. En MATLAB, puedes checar si el apoyo est disponible para tu cmara. MATLAB tiene adaptadores para accesar estos dispositivos. Un adaptador es un software que MATLAB usa para comunicarse con un dispositivo para adquirir una imagen. >> imaqhwinfo >> cam=imaqhwinfo; >> cam.InstalledAdaptors

Para adquirir ms informacin del dispositivo, escribe >>dev_info = imaqhwinfo('winvideo',1) Nota: En lugar de winvideo, si imaqhwinfo muestra otro adaptador, entonces escribe el nombre de ese adaptador en lugar de winvideo.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

13

Los datos de salida deben ser similares a los que se muestran en la siguiente imagen.

3.1 Presentacin preliminar de un video


Puedes ver una presentacin de un video capturado por la imagen definiendo un objeto y asocindolo con el dispositivo. >> vid=videoinput(winvideo,1, RGB24_320x240) Veras los detalles de los parmetros de adquisicin , como se muestran a continuacin.

Ahora para ver el video que est siendo capturado por la cmara, usa el comando preview command >> preview(vid)

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

14

Entonces saltara una ventana, que expone lo que la cmara est capturando.

La cmara tal vez resista formatos de video mltiples. Para ver por usted mismo todos los formatos, escriba
>>dev_info = imaqhwinfo('winvideo',1); >>celldisp(dev_info.SupportedFormats); %displays list of supported formats

Mire usted mismo otros formatos, remplazando `RGB24_320x240` con otros formatos, en definicin del objeto vid.

3.2 Capturando y Almacenando Imgenes


1. Capturando una imagen Para capturar una imagen del video, defina el objeto vid como se describe anteriormente y use getdata para capturar un marco del video. >>start(vid); % Este comando inicia la captura de marcos y almacena % los marcos en la memoria >>im=getdata(vid,1); >>figure,imshow(im); 2. Almacenando una imagen Puede almacenar la imagen capturada como un archivo .jpg o .gif usando la funcin imwrite. >>imwrite(im,'testimage.gif'); La imagen se almacenara en el folder MATLAB71\work . Intntelo.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

15

3.3 Avanzando con la Adquisicin de Imgenes


Cada vez que quiera capturar una imagen instantnea, necesitara parar el video, volverlo a empezar y usar la funcin getdata o peekdata. Para evitar estas acciones repetitivas, la caja de herramientas Image Acquisition proporciona una opcin para detonar el objeto del video requerido y capturar un marco instantneo. Cree un archivo m con las siguientes secuencias de comando.
vid=videoinput('winvideo',1); triggerconfig(vid,'manual'); set(vid,'FramesPerTrigger',1 ); set(vid,'TriggerRepeat', Inf); start(vid); for i=1:5 trigger(vid); im= getdata(vid,1); figure,imshow(im); end stop(vid); delete(vid); clear vid;

En el cdigo anterior, el objeto im se escribe dems mientras se ejecuta cada uno de los loops for. Para poder ver las cinco imgenes, remplace im con im(:,:,:,i). En este cdigo, las instrucciones 2-5 establecen las del objeto vid. triggerconfig establece el objeto para detonar manualmente, ya que su detonacin automtica es de tipo inmediato. En detonacin inmediata, el video es capturado tan pronto como empiece el objeto vid. Los marcos capturados son almacenados en la memoria. La funcin getdata puede usarse para accesar estos marcos. Pero en la detonacin manual recibe la imagen solo cuando detonas el video. FramesPerTrigger decide el nmero de marcos que quiere capturar cada vez trigger es ejecutado. TriggerRepeat tiene que ser igual al nmero de marcos que se quieren procesar en el programa o bien puede ser establecido a Inf. Para establecerlo Inf, puede usar trigger las veces que requiera. Si se establece a cualquier nmero entero positivo, necesitara empezar la captura del video nuevamente despus de que trigger ha sido usado ese nmero de veces. Tambin, una vez que termine con la adquisicin de marcos y tenga las imgenes guardadas, puede parar la captura de video y borrar los marcos guardados de la memoria, usando los siguientes comandos: >>stop(vid); >>delete(vid); >>clear vid;

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

16

Nota: getsnapshot regresa un marco de imagen y es independiente de la propiedad FramesPerTrigger. Entonces, si desea continuar capturando imgenes, puede escribir un archivo m como el siguiente: vid=videoinput(winvideo,1) triggerconfig(vid,'manual'); set(vid,'FramesPerTrigger',1); set(vid,'TriggerRepeat', Inf); start(vid); while(1) { trigger(vid); im= getdata(vid,1); % write your image processing algorithm here % % you may break this infinite while loop if a certain condition is met }

Nex Robotics Pvt. Ltd.

17

http://www.nex-robotics.com/workshop.html

3.4 Interface con puertos PC


MATLAB proporciona apoyo para accesar un puerto serial (tambin llamados puertos COM) y puertos paralelos(tambin llamados puertos de impresora o puertos LPT) de una PC. Nota: Si usa una PC de escritorio o una laptop antigua, lo mas probable es que tenga ambos, puertos paralelos y seriales. Sin embargo, si es mas nueva, los puertos paralelos tal vez no estn disponibles.

3.4.1 Puerto Paralelo


Un puerto paralelo tiene 25 pins como se muestra en la figura abajo. Los cables de puerto paralelo estn localmente disponibles (comnmente llamados cables de puerto de impresora). Estos cables son prcticos para conectar pins con su circuito. Pins 2-9 son bi-direccionales data pins (pin 9 tiene el bit mas significativo (MSB)), pins 10-13 y 15 son de salida ( pins de estatus), pins 1,14,16,17 son de entrada (de control), mientras que pins 18-25 son de tierra.

MATLAB tiene una adaptador para accesar a un puerto paralelo (similar al adaptador para adquisicin de imgenes). Para accesar al puerto paralelo en MATLAB, define un objeto >> parport= digitalio('parallel','LPT1');
Puede obtener la direccin del puerto de la siguiente manera

>> get(parport,'PortAddress') >> daqhwinfo('parallel'); % To get data acquisition hardware information

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

18

Tiene que definir los pins 2-9 como pins de salida, usando la funcin addline. >> addline(parport, 0:7, 'out') Ahora ponga la informacin que quiere de salida al puerto paralelo en una matriz >> dataout = logical([1 0 1 0 1 0 1 1]); Ahora para que salgan estos valores, use la funcin putvalue >> putvalue(parport,dataout); Alternativamente, puede escribir los equivalente decimales de la informacin binaria. >> data = 23; >> putvalue(parport,data);

Puede conectar los pins del puerto paralelo al controlador IC para los motores izquierdos y derechos del robot, y controlar el movimiento del vehiculo a la izquierda, derecha, para enfrente y reversa. Necesitara un puente H para manejar el motor en ambas direcciones sentido del reloj y contra las manesillas del reloj.

3.4.2 Puerto Serial


Si tiene que transmitir un byte de informacin, el puerto serial transmite 8 bits como un bit a la vez. La ventaja es que solo necesita un cable para transmitir los 8 bits (mientras que un puerto paralelo necesita8).

El pin 3 es el que transmite(TX), el pin 2 es el que recibe (RX) y el pin 5 es el de tierra. Otros pins son usados para controlar la comunicacin de informacin en el caso de un modem. Para transmitir informacin, colo los pins 3 y 5 son requeridos.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

19

En el lado de recepcin, necesita un convertidos de nivel de voltaje llamado RC232 IC, el cual es un estndar para comunicacin serial. Para interpretar la informacin serial, un microcontrolador con UART (Universar Asynchronus reciever transmitter) es requerido en el robot. La mayora de los microcontroladores como AVR ATMEGA 8, Atmel/Philips 8051 o microcontroladores PIC tienen UART. UART necesita estar iniciado para recibir informacin serial desde la PC. En este caso, el microcontrolador se conecta al controlador del motor ICs que controla los motores derecho e izquierdo. Despues de procesar la imagen, y decidir el movimiento del robot, transmita cdigo para izquierda y derecha derecho y reversa para el microcontrolador por el puerto serial (ej. 1-Iquierda, 2-Derecha, 3-Derecho, 4-Reversa). El cdigo para accesar al puerto serial de MATLAB es el siguiente: >> ser= serial('COM1','BaudRate',9600,'DataBits',8); >> fopen(ser); Para mandar datos por medio del puerto serial, estos comandos estn disponibles >> fwrite (ser,1); % for left motion >> fwrite (ser,2); % for right motion Puede cerrar el puerto en caso de haber otras aplicaciones utilizando el puerto usando el comando fclose. >> fclose(ser);

El microcontrolador tiene un puerto de salida cuyos pins pueden ser utilizados para controlar el controlador IC. El microcontrolador interpreta los datos seriales de la PC y controla los motores mediante pins de salida y el controlador del motor o el puente H.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

20

4 Appendice
4.1 Espacios a Color
Para almacenar el contenido de la informacin de una imagen, pueden usarse varios formatos de color y espacio. Uno de los espacios a color es RGB (rojo, verde, azul). De hecho en pantallas de TFT LCD, el sustrato del filtro de color contiene estos tres filtros de los colores primarios. Otros espacios a color son YCbCr Y HSV(tono, saturacin y color) Formato YCbCr En este formato,la informacin de la intensidad de la luz se almacena en una componente solo (Y), y la informacin de chrominance se almacena como componentes de diferencia de dos colores (Cb y Cr). Cb representa la diferencia entre el componente rojo y el valor de referencia. (YUV, otro espacio a color usado ampliamente para video digital, es muy similar al YCbCr pero no idntico.) Puede convertir la imagen de RGB a formato YCbCr.
>>imrgb=imread('peppers.png'); >>imycbcr=rgb2ycbcr(imrgb); >> figure,imshow(imrgb),figure,imshow(imycbcr)

Formato HSV La siguiente figura ilustra el espacio a color HSV.

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

21

Segn el tono vara de 0 a 1.0, los colores correspondientes varian de rojo a amarillo, verde, turquesa, azul, magenta, y de nuevo al rojo, asi que en realidad 0 y 1.0 son ambos valores rojos. Segn la saturacin varia de 0 a 1.0, los colore correspondientes (tonos) varian de insaturado (sombras de gris) a completamente saturado (sin componente blanco). Segn el valor, o brillo vara de 0 a 1.0, los correspondientes colores se vuelven mas brillantes. Nuevamente en este caso, una imagen puede ser convertida entre formatos RGB y HSV. >> imrgb = imread('peppers.png'); >> imhsv= rgb2hsv(imrgb); >> figure,imshow(imrgb),figure,imshow(imhsv);

Nex Robotics Pvt. Ltd.

22

http://www.nex-robotics.com/workshop.html

5 Referencias
Amplia documentacin de MATLAB esta disponible en MATLAB Full Product Family Help. En esta documentacin, algunas de las ilustraciones y explicaciones han sido tomadas directamente de la seccin de ayuda de MATLAB. Cuando imgenes han sido tomadas de paginas web, la fuente ha sido avisada. Material de Consulta Para cubrir bien los conceptos en procesamiento de imgenes, los siguientes libro han sido usados por los autores de este documento. Libros 1. Digital Image Processing Using MATLAB por Gonzalez y Woods Paginas Web Algunas de las pginas web usadas para escribir este documento: 1. www.roborealm.com/machine_vision.php 2. www.roborealm.com/tutorial/line_following/slide010.php 3. www.roborealm.com/links/vision_software.php 4. www.roborealm.com/tutorial/color_object_tracking_2/slide010.php 5. www.societyofrobots.com/programming_computer_vision_tutorial.shtml Notas de Lectura Como area de investigacin, Machine Vision se relaciona con muchas matematicas relacionadas con varias areas como geometra cardenal, algebra de vectores, calculo, probabilidad, y estadstica etc. Este campo tambin se relaciona con el reconocimiento de patrones, biometra. La siguiente pagina web es una lectura en Machine Vision para descarga mediante OpenCourseware(OCW) en la pagina de MITS. http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-ComputerScience/6-801Fall-2004/CourseHome/ Videos Videos de un curso en procesamiento de imgenes estn disponibles para descarga gratis desde Purdue University y University of California, Berkeley. 1. www.ecn.purdue.edu/VISE/visevideo/ee637S05/ 2. webcast.berkeley.edu/course_details.php?seriesid=1906978282

Nex Robotics Pvt. Ltd. http://www.nex-robotics.com/workshop.html

23

PDF to Word

Вам также может понравиться