Visión Artificial Matlab Alvaro Romero Acero

22
VISIÓN ARTIFICIAL USANDO MATLAB Parte 1 Alvaro Romero Acero [email protected] Alejandro Marín Cano [email protected] Profesor Jovani A. Jiménez Universidad Nacional de Colombia Facultad de minas Ingeniería de Control Medellín 2012

description

Esta propuesta va enfocada, al reconocimiento y clasificación de Mango Tommy, luego ejecutada por un mecanismo (barra - motor), que ejecute una acción de rechazo o aceptado, según las características del mango. se realiza en esta parte 1, la caracterización del mango.Parte 1 http://www.youtube.com/user/alvarounal?feature=mhee#p/u/3/oAit0NCPMBwParte 2 http://www.youtube.com/user/alvarounal?feature=mhee#p/u/2/CGQGqDoua7IMayor información: http://alvarounal.blogspot.comCanal You Tube; http://www.youtube.com/user/[email protected]

Transcript of Visión Artificial Matlab Alvaro Romero Acero

Page 1: Visión Artificial Matlab Alvaro Romero Acero

VISIÓN ARTIFICIAL USANDO MATLAB

Parte 1

Alvaro Romero Acero

[email protected]

Alejandro Marín Cano

[email protected]

Profesor

Jovani A. Jiménez

Universidad Nacional de Colombia

Facultad de minas

Ingeniería de Control

Medellín

2012

Page 2: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

VISIÓN ARTIFICIAL USANDO MATLAB Parte 1

Figura 1 Imagen (foto1) RGB, capturada en Matlab.

Introducción

Al realizar tareas especificas cada vez más complejas, un robot al igual que un ser humano

necesitan una mejor percepción del entorno de trabajo, por lo tanto, la visión se hace

indispensable para lograr una respuesta flexible, rápida y precisa, de acuerdo, al cambio

constante del comportamiento externo del área de trabajo. Cuando una persona, tiene como

tarea la selección de objetos o piezas, debe realizar una secuencia de pasos para lograr una

tarea exitosa, de la misma manera, un robot debe tener en cuenta esta secuencia, para lograr tal

éxito.

Por consiguiente, en un robot la visión artificial juega un papel importante, en la realización

exitosa de una tarea de clasificación de objetos. En una determinada área de trabajo, estos

“ojos artificiales” serán previstos por una cámara web y el procesamiento inteligente de la

imagen se hará a través del toolbox Image Acquisition Tool de Matlab, para así obtener una

percepción aceptada del entono.

De esta manera, para alcanzar una adecuada aplicación de esta herramienta de Matlab, se

realizará un estudio sobre las funciones que provee el toolbox Image Acquisition Tool, y la

descripción del procesamiento de la imagen, con el fin de obtener los mejores resultados en la

selección de objetos, ubicación y que logren un reconocimiento de la imagen, la cual defina

una característica distinguida, frente a los demás objetos. En consecuencia, este resultado

obtenido en la visión artificial, se enlazará con un electro-mecanismo (brazo robótico), el cual,

ejecutará una acción prevista por el usuario en su programación de tareas.

Esta propuesta va enfocada, al reconocimiento y clasificación de objetos, que logren una

identificación precisa sobre la imagen, para una tarea específica, luego ejecutada por el robot,

que proporcione una alternativa de solución, en aplicaciones industriales como la clasificación

de piezas y armado de otros componentes.

Page 3: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

Conceptos básicos

Matriz de imagen: La matriz de imagen I(x,y) (escala de grises), hace referencia a la forma

en que Matlab guarda y procesa una imagen, en forma de matriz como vectores

bidimensionales (m,n), donde cada elemento de la matriz es un pixel, a su vez el toolbox de

procesamiento de imagen soporta imágenes binarias, indexadas, de intensidad y RGB, que

también tienen forma matricial, por ejemplo para la imagen RGB, es una tridimensional y se

representa (m,n,N), donde (m,n) son los parámetros de los vectores bidimensionales y (N) es

el parámetro de RGB, es decir corresponde al color rojo, verde o azul tomando valores entre

(1, 2 ,3) respectivamente, es decir cada pixel contiene una información adicional RGB. A

continuación, se representa la forma matricial de una imagen digital (m,n) a escala de grises.

Figura 2 Representación de la matriz de imagen (foto1) en grises.

ImagenGrisVisionArtificial.m

% Genera una matriz I(x,y), de la Imagen original que se encuentra en los % anexos imagen (foto1), matriz con tamaño de 1920 x 2560 unit8, es decir % con 4.915.200 pixeles (4.9 Megapíxeles) con valores de cada pixel entre % 0 y 255, donde cero (0) es el color negro y (255) el color blanco.

clear all, close all, clc

foto1 = imread('C:\Users\alvaro\Desktop\foto1.jpg');

figure(1), subplot(2,1,1) imshow(foto1); title({'\color[rgb]{1 0 0}VISIÓN \color[rgb]{0 1 0}ARTIFICIAL \color[rgb]{0

0 1}Usando Matlab';'\color[rgb]{0 0 0}ImagenGrisVisionArtificial.m';

'\color[rgb]{0 0 1}IMAGEN ORIGINAL'})

GRIS=rgb2gray(foto1); subplot(2,1,2) imshow(GRIS); title({'\color[rgb]{0 0 1}IMAGEN ESCALA DE GRISES'})

m

n

Page 4: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

Pixel: Se denomina como la unidad de color homogénea más pequeña de una imagen digital,

en las tres figuras a continuación, representan una imagen digital en Matlab, de izquierda a

derecha vemos, un acercamiento a la imagen hasta llegar a apreciar los pixeles, que en este

caso en la figura de la parte derecha, se pueden observar seis (6) pixeles, donde cada pixel

contiene un color homogéneo, cuando se trabaja con imágenes digital RGB, cada pixel es la

combinación de tres colores rojo, verde y azul, la cantidad de combinaciones que cada pixel

puede alcanzar, dependen del tipo de dato en que se codifique el pixel, por ejemplo un pixel

codificado en un byte (8 bit) que corresponden a 256 variaciones de color para cada pixel, que

el RGB se traduce a 224

(16.777.216) variaciones de color para cada pixel, porque en RGB

intervienen tres colores (256*256*256 = 16.777.216).

Figura 3 Representación de un pixel, imagen (foto1).

Después de adquirir algunos conceptos básicos, sobre visión artificial usando Matlab, surge el

interrogante porque usar Matlab, la respuesta consiste que al usar Matlab específicamente el

toolbox para procesamiento de imágenes, se tiene la ventaja sobre el paquete de funciones

predeterminadas con que cuenta Matlab en base a vectores y matrices, pues una característica

fundamental de trabajar con imágenes, es que esta se puede manejar como una matriz o como

un conjunto de matrices en el caso de una imagen RGB, entre otro tipo de imágenes.

Por lo tanto, es posible aprovechar el recurso matemático e interfaz que proporciona Matlab y

de esta forma mejorar la velocidad del procesamiento de la imagen, obteniendo resultados más

rápidos y precisos sobre la información que se desee sacar de la imagen, como; el perímetro,

forma, ubicación, tamaño, color, centroide, frontera, contrastes, etc., que serán de gran utilidad

en el momento de realizar un reconocimiento de objetos y posteriormente enlazarlo con un

robot.

Otra alternativa, es por medio de Lab VIEW, que también presenta una facilidad de interfaz a

la hora del procesamiento de imágenes.

Comandos útiles para obtener información y manipulación de la imagen.

Comandos1VisionArtificial.m

% Si se desea importar una imagen que está en el PC a Matlab, se realiza % por medio del comando imread('dirección'), por ejemplo la imagen I.jpg % que está en el escritorio:

ZOOM

Pixel

Page 5: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

I = imread('C:\Users\alvaro\Desktop\I.jpg'); figure(2),imshow(I) title({'\color[rgb]{0 0 1}IMAGEN EN TAMAÑO REAL'})

figure(3),subplot(3,1,1),imshow(I) title({'\color[rgb]{1 0 0}VISIÓN \color[rgb]{0 1 0}ARTIFICIAL \color[rgb]{0

0 1}Usando Matlab';'\color[rgb]{0 0 0}Comandos1VisionArtificial.m';

'\color[rgb]{0 0 1}IMAGEN ORIGINAL'})

fprintf('%s%\n', 'VISIÓN ARTIFICIAL Usando Matlab -

Comandos1VisionArtificial') fprintf('\n')

% Obtiene la dimensión de la imagen (alto, ancho, band), el % tercer parámetro (band) se refiere a:(1) imagen gris y (3) imagen a

% color.

fprintf('\n') fprintf('%s%\n', ' Dimensión de la imagen (alto, ancho, band), band=1 gris,

band=3 color: ') fprintf('\n') size(I)

% Obtiene información de la imagen dimensión y tipo de dato.

fprintf('\n') fprintf('%s%\n', ' Información de la imagen dimensión y tipo de dato: ') fprintf('\n') whos I

% Obtiene información detallada de la imagen.

fprintf('\n') fprintf('%s%\n', ' Información de la imagen dimensión y tipo de dato ') fprintf('\n') imfinfo('C:\Users\alvaro\Desktop\I.jpg')

% Obtiene una rotación de la imagen, con la siguiente función % imrotate(Imagen, Angulo, método, BBOX).

rota= imrotate(I,30,'bilinear','crop'); subplot(3,1,2),imshow(rota) title({'\color[rgb]{0 0 1}ROTACIÓN DE LA IMAGEN'})

% Recortar la imagen, con la función imcrop(Imagen,[X1,Y1,ancho,alto]);

reco= imcrop(I,[20,30,200,100]); subplot(3,1,3),imshow(reco) title({'\color[rgb]{0 0 1}RECORTE DE LA IMAGEN'})

% Con esta función imresize(I,zoom), lo que haces es tener un zoom de la % imagen, por ejemplo: si zoom<1 la imagen se reduce, si zoom>1 la imagen % aumenta.

zoom = imresize(I,2); figure(4),imshow(zoom) title({'\color[rgb]{0 0 1}ZOOM DE LA IMAGEN'})

Page 6: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

Figura 4 Resultados comandos de Matlab, código Comandos1VisionArtificial.m

Figura 5 a) Imagen original, b) Rotación de la imagen a 30o, c) Recorte de la imagen

Page 7: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

Figura 6 Imagen en tamaño real

Figura 7 Zoom de la imagen al 100% de la figura 5.

Page 8: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

Tipo de imágenes en toolbox Matlab

Imagen RGB

La imagen RGB, llamada imagen verdadera, la cual, se usará como base para el procesamiento

de la imagen, se representa con tres matrices de igual tamaño y concuerdan con el tamaño de

la imagen, es decir, cada pixel se compone de la suma de tres intensidades de colores RGB.

Figura 8 Representación matricial de una imagen RGB

A continuación, para entender un poco más este tipo de imagen se ilustrará, la imagen RGB y

sus componentes, rojo, verde y azul respectivamente en la Figura 9, generando una imagen

con una característica RGB en forma vertical, por medio de Matlab, de la cual se pueda

visualizar separadamente los componentes mencionados, y mediante el procesamiento de la

imagen R, G y B independientemente en una imagen representada en escala de grises, ceros

(blancos) y unos (negros). Como resultado, se obtiene para el caso del color blanco, hace

referencia al color más intenso, ya sea, rojo, verde o azul de la imagen RGB, para lograr tal

efecto, con el código en Matlab que verán a continuación, se logra apreciar dicha descripción:

Imagen RGB, en la escala de grises imagen R, imagen G e imagen B, en la figura (1).

Por ejemplo en la Figura 9, se observa en la imagen RGB el rojo a la derecha, por consiguiente

en la imagen red (R) se torna más blanco la parte derecha, la cual corresponde al color rojo, de

la misma manera actúa para los colores verde (centro) y azul (izquierda).

Page 9: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

Identificación de imagen RGB por medio de escala de grises:

IdentificacionRGBVisionArtificial.m

Figura 9 Identificación de imagen RGB en grises

% Genera una matriz de imagen (RGB), con tramas verticales azul, verde y % roja, como se ve en la figura (1). RGB=reshape(ones(128,1)*reshape(jet(128),1,384),[128,128,3]);

% Dibuja la imagen representada por la matriz (RGB). figure(5), subplot(4,1,1) imshow(RGB)

% En el titulo se hace uso del comando \color[rgb]{r g b} para representar % colores en la gama RGB de los caracteres del título, donde r=1 representa % el color rojo más intenso y disminuye hasta cero, así sucesivamente para % g (verde) y b (azul). title({'VISIÓN ARTIFICIAL Usando

Matlab';'IdentificacionRGBVisionArtificial.m';'IMAGEN \color[rgb]{1 0 0}R

\color[rgb]{0 1 0}G \color[rgb]{0 0 1}B'})

% Genera una matriz, escala de grises, donde el tercer parámetro (1, 2 y 3) % representan R G y B respectivamente, al cual hace referencia al color más % blanco de la imagen original (RBG, como se ve en la figura (1). R=RGB(:,:,1);

Page 10: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

G=RGB(:,:,2); B=RGB(:,:,3);

subplot(4,1,2) imshow(R) title('IMAGEN \color[rgb]{1 0 0}RED (R)')

subplot(4,1,3) imshow(G) title('IMAGEN \color[rgb]{0 1 0}GREEN (G)')

subplot(4,1,4) imshow(B) title('IMAGEN \color[rgb]{0 0 1}BLUE (B)')

Otro ejemplo, identificación de imagen RGB por medio de escala de grises: Identificacion2RGBVisionArtificial.m

Figura 10 Identificación de circulo RGB en grises

Page 11: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

CIRCULO = imread('C:\Users\alvaro\Desktop\CirculoRGB.jpg');

figure(6), subplot(4,1,1) imshow(CIRCULO)

title({'VISIÓN ARTIFICIAL usando

Matlab';'Identificacion2RGBVisionArtificial.m';'IMAGEN \color[rgb]{1 0 0}R

\color[rgb]{0 1 0}G \color[rgb]{0 0 1}B'})

R=CIRCULO(:,:,1); G=CIRCULO(:,:,2); B=CIRCULO(:,:,3);

subplot(4,1,2) imshow(R) title('IMAGEN \color[rgb]{1 0 0}RED (R)')

subplot(4,1,3) imshow(G) title('IMAGEN \color[rgb]{0 1 0}GREEN (G)')

subplot(4,1,4) imshow(B) title('IMAGEN \color[rgb]{0 0 1}BLUE (B)')

Imagen BINARIA

En este tipo de imágenes, cada pixel toma un valor de dos valores posibles ceros 0 (negro) ó

unos 1 (blanco), y se representan en Matlab por una matriz bidimensional con datos lógicos.

Se puede obtener una imagen binaria y a su vez la negación de esta, ver Figura 11.

Una imagen binaria, puede ser considerada como un tipo especial de imagen de intensidad,

compuesta solamente por blanco y negro. Ejemplo de una matriz, que representa una imagen

binaria:

Page 12: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

Figura 11 a) Imagen original, b) Imagen binaria 1, c) Imagen binaria 2 d) Imagen binaria 3

ImagenbinariaVisionArtificial.m

fprintf('%s%\n', 'VISIÓN ARTIFICIAL Usando Matlab –

ImagenbinariaVisionArtificial.m') fprintf('\n')

I = imread('C:\Users\alvaro\Desktop\I.jpg'); figure(7),subplot(4,1,1) imshow(I) title({'\color[rgb]{0 0 1}VISIÓN ARTIFICIAL usando Matlab';' \color[rgb]{0

0 0}ImagenbinariaVisionArtificial.m'; 'IMAGEN ORIGINAL'})

% Esta función graythresh retorna un valor normalizado entre 0 y 1 que % corresponde al mejor umbral (umb), lo cual, nos ayuda a obtener un umbral % óptimo y binarizar adecuadamente una imagen, mediante la función(im2bw). umb=graythresh(I);

im_bin=im2bw(I,umb); subplot(4,1,2) imshow(im_bin) title({'IMAGEN BINARIA 1'})

Correción

de detalles

Zoom

Page 13: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

% Se obtiene la imagen binaria inversa a im_bin im_bin2=not(im_bin); subplot(4,1,3) imshow(im_bin2) title({'IMAGEN BINARIA 2'})

% Con la función imfill(Imagen,'holes'), limpia las partes internas % blancas de los objetos (corrección en detalles). subplot(4,1,4) fill=imfill(im_bin2,'holes'); % Limpiamos los “agujeros” imshow(fill) title({'IMAGEN BINARIA 3'; 'Objeto interior limpio'})

Imagen INDEXADA

Una imagen indexada, consiste en guardar una imagen como dos matrices, donde la primera

matriz tiene el mismo tamaño que la imagen y un número para cada píxel y la segunda matriz

se conoce como Mapa de Color, función en Matlab (Colormap) y su tamaño puede diferir del

de la imagen, ejemplo de la imagen INDEXADA Figura 12.

Figura 12 a) Imagen W (9 pixeles) b) Imagen INDEXADA por mapa de colores RGB.

ImagenIndexadaVisionArtificial.m

% Se crea una matriz 3x3, W=[a b c; d e f; g h i], donde a,b,c son los % parámetros de la primera fila de la imagen W. Es como si se tuvieran % nueve (9) pixeles. W=[1 2 3; 2 3 1; 3 1 2]; figure(8) image(W) title({'VISIÓN ARTIFICIAL Usando

Matlab';'ImagenIndexadaVisionArtificial.m'; 'IMAGEN W'})

Page 14: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

% Se crea una matriz 3x3, mapa=[A B C; D E F; G H I], donde A,B,C son los % parámetros correspondientes al color R, así sucesivamente para el color % G y B, estos colores varían según la combinación RGB que cada uno trae, % es decir, cada uno de los nueve (9) pixeles se compone de una gama de % tres colores RGB, en intensidades entre 0 y 1, que la función colormap % genera.

figure(9) image(W) title({'IMAGEN W (mapa de colores)'}) mapa = [1 0 0; 0 1 0; 0 0 1]; colormap(mapa)

Otro ejemplo, crear una imagen INDEXADA a partir de una imagen RGB

ImagenIndexada2VisionArtificial.m

Figura 13 Imagen INDEXADA al 0.1, 0.15 y 0.25 a escala de grises

Page 15: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

RGB = imread('C:\Users\alvaro\Desktop\I.jpg'); figure(10), subplot(4,1,1) imshow(RGB) title({'VISIÓN ARTIFICIAL Usando

Matlab';'ImagenIndexada2VisionArtificial.m'; 'IMAGEN ORIGINAL'})

subplot(4,1,2) ind1=rgb2ind(RGB,0.1); imshow(ind1) title({'IMAGEN INDEXADA al 0.1'})

subplot(4,1,3) ind2=rgb2ind(RGB,0.15); imshow(ind2) title({'IMAGEN INDEXADA al 0.15'})

subplot(4,1,4) ind3=rgb2ind(RGB,0.25); imshow(ind3) title({'IMAGEN INDEXADA al 0.25'})

Imagen INTENSIDAD

Una imagen de intensidad, se representa por una matriz única, cuyos elementos son los píxeles

de la imagen, estos elementos de la matriz de intensidad representan varias intensidades, o

niveles de gris, donde la intensidad cero (0) corresponde al color negro y la intensidad uno (1)

al blanco. En la Figura 14 vemos una imagen INTENSIDAD a partir de una imagen RGB.

Figura 14 Imagen Intensidad a partir de imagen RGB.

Page 16: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

RGB = imread('C:\Users\alvaro\Desktop\I.jpg'); figure(11), subplot(2,1,1) imshow(RGB) title({'VISIÓN ARTIFICIAL Usando

Matlab';'ImagenIntensidadVisionArtificial.m'; 'IMAGEN ORIGINAL'})

subplot(2,1,2) ind1=rgb2gray(RGB); imshow(ind1) title({'IMAGEN INTENSIDAD'})

Conversión de imágenes en Matlab

Tabla 1 Conversión de imágenes en Matlab

Tipos de datos de la matriz

• DOUBLE Doble precisión, números en punto flotante que varían en un rango aproximado

de -10308 a 10308 (8 bytes por elemento).

• UINT8 Enteros de 8 bits en el rango de [0,255] (1 byte por elemento).

• UINT16 Enteros de 16 bits en el rango de [0, 65535] (2 bytes por elemento).

• UINT32 Enteros de 32 bits en el rango de [0, 4294967295] (4 bytes por elemento).

• INT8 Enteros de 8 bits en el rango de [-128, 127] (1 byte por elemento).

• INT16 Enteros de 16 bits en el rango de [-32768, 32767] (2 bytes por elemento).

• INT32 Enteros de 32 bits en el rango de [-2147483648, 2147483647] (4 bytes por elemento).

• SINGLE Número en punto flotante de precisión simple, con valores aproximadamente en el

rango de -1038 a 1038 (4 bytes por elemento).

Page 17: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

• CHAR Carácteres (2 byte por elemento).

• LOGICAL Los valores son 0 ó 1 (1 bit por elemento).

Tabla 2 Conversión de tipo de datos en Matlab

BIBLIOGRAFÍA

[1] R. C. González, R. E. Woods; Digital image processing; Addison-Wesley, 2007.

[2] K. S. Fu, R. C. González, C. S. G. Lee. ROBÓTICA: Control, detección, visión e

inteligencia. McGraw-Hill. 1988. Pág. 306-490.

[3] R. C. González, R. E. Woods, S. L. Eddins; Digital image processing using MATLAB;

Prentice Hall, 2004.

[4] http://upcommons.upc.edu/pfc/bitstream/2099.1/9685/4/03_Mem%C3%B2ria.pdf

[5] http://www.slideshare.net/lonely113/procesamiento-digital-de-imgenes-con-matlab

[6] http://www.mathworks.com/help/toolbox/imaq/imaqhwinfo.html

Page 18: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

ANEXOS

Imagen (foto1)

Imagen (I)

Imagen (CirculoRGB)

Page 19: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

%% % VISIÓN ARTIFICIAL USANDO MATLAB - Parte 1 - CONCEPTOS BÁSICOS - %% %ImagenGrisVisionArtificial.m % Genera una matriz I(x,y), de la Imagen original que se encuentra en los % anexos imagen (foto1), matriz con tamaño de 1920 x 2560 unit8, es decir % con 4.915.200 pixeles (4.9 Megapíxeles) con valores de cada pixel entre % 0 y 255, donde cero (0) es el color negro y (255) el color blanco.

clear all, close all, clc foto1 = imread('C:\Users\alvaro\Desktop\foto1.jpg'); figure(1), subplot(2,1,1) imshow(foto1); title({'\color[rgb]{1 0 0}VISIÓN \color[rgb]{0 1 0}ARTIFICIAL \color[rgb]{0

0 1}Usando Matlab';'\color[rgb]{0 0 0}ImagenGrisVisionArtificial.m';

'\color[rgb]{0 0 1}IMAGEN ORIGINAL'}) GRIS=rgb2gray(foto1); subplot(2,1,2) imshow(GRIS); title({'\color[rgb]{0 0 1}IMAGEN ESCALA DE GRISES'})

%% % Comandos1VisionArtificial.m % Si se desea importar una imagen que está en el PC a Matlab, se realiza % por medio del comando imread('dirección'), por ejemplo la imagen I.jpg % que está en el escritorio:

I = imread('C:\Users\alvaro\Desktop\I.jpg'); figure(2),imshow(I) title({'\color[rgb]{0 0 1}IMAGEN EN TAMAÑO REAL'}) figure(3),subplot(3,1,1),imshow(I) title({'\color[rgb]{1 0 0}VISIÓN \color[rgb]{0 1 0}ARTIFICIAL \color[rgb]{0

0 1}Usando Matlab';'\color[rgb]{0 0 0}Comandos1VisionArtificial.m';

'\color[rgb]{0 0 1}IMAGEN ORIGINAL'}) fprintf('%s%\n', 'VISIÓN ARTIFICIAL Usando Matlab -

Comandos1VisionArtificial') fprintf('\n')

% Obtiene la dimensión de la imagen (alto, ancho, band), el % tercer parámetro (band) se refiere a:(1) imagen gris y (3) imagen a % color. fprintf('\n') fprintf('%s%\n', ' Dimensión de la imagen (alto, ancho, band), band=1 gris,

band=3 color: ') fprintf('\n') size(I)

% Obtiene información de la imagen dimensión y tipo de dato. fprintf('\n') fprintf('%s%\n', ' Información de la imagen dimensión y tipo de dato: ') fprintf('\n') whos I

% Obtiene información detallada de la imagen. fprintf('\n')

Page 20: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

fprintf('%s%\n', ' Información de la imagen dimensión y tipo de dato ') fprintf('\n') imfinfo('C:\Users\alvaro\Desktop\I.jpg')

% Obtiene una rotación de la imagen, con la siguiente función % imrotate(Imagen, Angulo, método, BBOX). rota= imrotate(I,30,'bilinear','crop'); subplot(3,1,2),imshow(rota) title({'\color[rgb]{0 0 1}ROTACIÓN DE LA IMAGEN'})

% Recortar la imagen, con la función imcrop(Imagen,[X1,Y1,ancho,alto]); reco= imcrop(I,[20,30,200,100]); subplot(3,1,3),imshow(reco) title({'\color[rgb]{0 0 1}RECORTE DE LA IMAGEN'})

% Con esta función imresize(I,zoom), lo que haces es tener un zoom de la % imagen, por ejemplo: si zoom<1 la imagen se reduce, si zoom>1 la imagen % aumenta. zoom = imresize(I,2); figure(4),imshow(zoom) title({'\color[rgb]{0 0 1}ZOOM DE LA IMAGEN'})

%% % Genera una matriz de imagen (RGB), con tramas verticales azul, verde y % roja. RGB=reshape(ones(128,1)*reshape(jet(128),1,384),[128,128,3]);

% Dibuja la imagen representada por la matriz (RGB). figure(5), subplot(4,1,1) imshow(RGB)

% En el titulo se hace uso del comando \color[rgb]{r g b} para representar % colores en la gama RGB de los caracteres del título, donde r=1 representa % el color rojo más intenso y disminuye hasta cero, así sucesivamente para % g (verde) y b (azul). title({'VISIÓN ARTIFICIAL Usando

Matlab';'IdentificacionRGBVisionArtificial.m';'IMAGEN \color[rgb]{1 0 0}R

\color[rgb]{0 1 0}G \color[rgb]{0 0 1}B'})

% Genera una matriz, escala de grises, donde el tercer parámetro (1, 2 y 3) % representan R G y B respectivamente, al cual hace referencia al color más % blanco de la imagen original (RBG, como se ve en la figura (1). R=RGB(:,:,1); G=RGB(:,:,2); B=RGB(:,:,3); subplot(4,1,2) imshow(R) title('IMAGEN \color[rgb]{1 0 0}RED (R)') subplot(4,1,3) imshow(G) title('IMAGEN \color[rgb]{0 1 0}GREEN (G)') subplot(4,1,4) imshow(B) title('IMAGEN \color[rgb]{0 0 1}BLUE (B)')

Page 21: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

%% % Genera una matriz de imagen (RGB) CIRCULO azul, verde y % roja. CIRCULO = imread('C:\Users\alvaro\Desktop\CirculoRGB.jpg'); figure(6), subplot(4,1,1) imshow(CIRCULO) title({'VISIÓN ARTIFICIAL usando

Matlab';'Identificacion2RGBVisionArtificial.m';'IMAGEN \color[rgb]{1 0 0}R

\color[rgb]{0 1 0}G \color[rgb]{0 0 1}B'}) R=CIRCULO(:,:,1); G=CIRCULO(:,:,2); B=CIRCULO(:,:,3); subplot(4,1,2) imshow(R) title('IMAGEN \color[rgb]{1 0 0}RED (R)') subplot(4,1,3) imshow(G) title('IMAGEN \color[rgb]{0 1 0}GREEN (G)') subplot(4,1,4) imshow(B) title('IMAGEN \color[rgb]{0 0 1}BLUE (B)')

%% %ImagenbinariaVisionArtificial.m

fprintf('%s%\n', 'VISIÓN ARTIFICIAL Usando Matlab –

ImagenbinariaVisionArtificial.m') fprintf('\n') I = imread('C:\Users\alvaro\Desktop\I.jpg'); figure(7),subplot(4,1,1) imshow(I) title({'\color[rgb]{0 0 1}VISIÓN ARTIFICIAL usando Matlab';' \color[rgb]{0

0 0}ImagenbinariaVisionArtificial.m'; 'IMAGEN ORIGINAL'})

% Esta función graythresh retorna un valor normalizado entre 0 y 1 que % corresponde al mejor umbral (umb), lo cual, nos ayuda a obtener un umbral % óptimo y binarizar adecuadamente una imagen, mediante la función(im2bw). umb=graythresh(I); im_bin=im2bw(I,umb); subplot(4,1,2) imshow(im_bin) title({'IMAGEN BINARIA 1'})

% Se obtiene la imagen binaria inversa a im_bin im_bin2=not(im_bin); subplot(4,1,3) imshow(im_bin2) title({'IMAGEN BINARIA 2'})

% Con la función imfill(Imagen,'holes'), limpia las partes internas % blancas de los objetos (corrección en detalles). subplot(4,1,4) fill=imfill(im_bin2,'holes'); % Limpiamos los “agujeros” imshow(fill) title({'IMAGEN BINARIA 3'; 'Objeto interior limpio'})

Page 22: Visión Artificial Matlab Alvaro Romero Acero

Grupo de Investigación - Inteligencia Artificial en Educación Visión Artificial Matlab Parte 1

%% % ImagenIndexadaVisionArtificial.m % Se crea una matriz 3x3, W=[a b c; d e f; g h i], donde a,b,c son los % parámetros de la primera fila de la imagen W. Es como si se tuvieran % nueve (9) pixeles. W=[1 2 3; 2 3 1; 3 1 2]; figure(8) image(W) title({'VISIÓN ARTIFICIAL Usando

Matlab';'ImagenIndexadaVisionArtificial.m'; 'IMAGEN W'})

% Se crea una matriz 3x3, mapa=[A B C; D E F; G H I], donde A,B,C son los % parámetros correspondientes al color R, así sucesivamente para el color % G y B, estos colores varían según la combinación RGB que cada uno trae, % es decir, cada uno de los nueve (9) pixeles se compone de una gama de % tres colores RGB, en intensidades entre 0 y 1, que la función colormap % genera. figure(9) image(W) title({'IMAGEN W (mapa de colores)'}) mapa = [1 0 0; 0 1 0; 0 0 1]; colormap(mapa)

%% % ImagenIndexada2VisionArtificial.m RGB = imread('C:\Users\alvaro\Desktop\I.jpg'); figure(10), subplot(4,1,1) imshow(RGB) title({'VISIÓN ARTIFICIAL Usando

Matlab';'ImagenIndexada2VisionArtificial.m'; 'IMAGEN ORIGINAL'}) subplot(4,1,2) ind1=rgb2ind(RGB,0.1); imshow(ind1) title({'IMAGEN INDEXADA al 0.1'}) subplot(4,1,3) ind2=rgb2ind(RGB,0.15); imshow(ind2) title({'IMAGEN INDEXADA al 0.15'}) subplot(4,1,4) ind3=rgb2ind(RGB,0.25); imshow(ind3) title({'IMAGEN INDEXADA al 0.25'})

%% % magenIntensidadVisionArtificial.m RGB = imread('C:\Users\alvaro\Desktop\I.jpg'); figure(11), subplot(2,1,1) imshow(RGB) title({'VISIÓN ARTIFICIAL Usando

Matlab';'ImagenIntensidadVisionArtificial.m'; 'IMAGEN ORIGINAL'}) subplot(2,1,2) ind1=rgb2gray(RGB); imshow(ind1) title({'IMAGEN INTENSIDAD'})