Laberinto Matlab

March 5, 2023 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Laberinto Matlab...

Description

Resolver un laberinto con MatLab Integrante 1 (Luis Arturo García Amézquita) e-mail: [email protected]

RESUMEN: considerar dentro del sistema es, un espacio definido para posicionar el laberinto, en donde no se llegue a mover, ya que al momento de tomar las fotos lo ideal es que sean iguales. Cuando las imágenes salen movidas o fuera de cuadro ocasiona también muchos problemas difíciles de identificar y muchas veces se pierde tiempo buscando alternativas cuando el problema esta directamente en la foto y no en la lógica del programa.

El trabajo que se realiza es el resolver un laberinto con la ayuda de MatLab, para lo cual se utiliza un sistema de visión y el procesamiento de imágenes de la misma plataforma. Dentro del laberinto hay un objeto el cual puede ser colocado en cualquier parte, el programa identifica la pieza y a partir de la misma traza la trayectoria hacia la salida PALABRAS CLAVE: MatLab, visión, resolver laberinto.

INTRODUCCIÓN MATLAB (abreviatura de MATrix LABoratory, ("laboratorio de matrices") es un software matemático que ofrece un entorno de desarrollo integrado(IDE) con un lenguaje de programación propio (lenguaje M).

Fig. 1. Sistema de visión y laberinto

El procesamiento digital de imágenes es el conjunto de técnicas que se aplican a las imágenes digitales con el objetivo de mejorar la calidad o facilitar la búsqueda de información.

OBTENCION DE LA IMAGEN Y SELECCIÓN DE OBJETO EN EL LABERINTO

El toolbox de MatLab contiene un conjunto de funciones de los algoritmos mas conocidos para trabajar con imágenes binarias, transformaciones geométricas, manipulación de color junto con las funciones ya integradas en MatLab.

Con la foto obtenida teniendo en cuenta las consideraciones anteriores lo siguiente es empezar a trabajar con ella dentro de MatLab. Primero se selecciona la imagen, se cambia a escala de grises, se binariza y dilata. Se crean también otras 2 matrices del mismo tamaño que el de la imagen las cuales servirán para posicionar el punto donde esta el objeto y crear la trayectoria de salida.

CREACION DEL LABERINTO Y EL SISTEMA DE VISION Lo primero que se realiza es la construcción del laberinto y un sistema o mueble en donde se pueda colocar para tomar las fotografías, esta es la parte más importante del programa. Por un lado esta el laberinto, el cual debe tener bien definidos sus espacios y sus paredes, esto por que al momento del procesado, si hay espacios más pequeños o paredes disparejas crea problemas difíciles de resolver. El sistema debe tener perfectamente establecido una altura considerable para la obtención de las fotos, también debe contar con una buena iluminación, esto con el fin de eliminar sombras. Otra cosa importante a

Fig. 2. Imagen dilatada y original Lo siguiente es identificar el objeto dentro de la imagen. Lo primero es identificar el numero de objetos que se encuentran dentro de la imagen y conocer sus propiedades, esto con el fin de identificar el objeto de

1

interés y así hacer una selección del objeto de interés que sirve de referencia para encontrar el camino.

CONCLUSIONES

Dependiendo de la intensidad de la dilatación pueden aparecer mas de un objeto por lo cual dentro del mismo programa se incluye un margen para eliminar todos los que resulten innecesarios y quedarnos solo con el de interés. Dentro de las propiedades encontradas también esta el centroide de las imágenes, una vez eliminadas las demás imágenes se asigna una variable al valor del centroide del objeto en coordenadas de ‘x’, ‘y’.

El realizar este programa resulto difícil, aun a pesar de que ya se tenia el conocimiento previo del procesamiento de imágenes y trazado de trayectorias. La adquisición de las fotos fue de los peores problemas. Con algunas lograba encontrar la salida pero si se movía un poco afectaba encerrándolo en un ciclo y mandando un error, si el laberinto tenia mucha luz en algunas ocasiones las líneas se brincaban los bordes. En caso contrario con poca luz me encontraba mas de un objeto con las mismas dimensiones o en definitiva dejaba la imagen oscura. Sumando a todo esto que no hay o por lo menos yo no encontré una guía en donde se hablara de este tipo de problemas.

Fig. 3. Objeto seleccionado

Fue de mucha ayuda el volver a ver programas anteriores realizados en Ubuntu con la librería graphics ya que en teoría era la misma técnica de incrementar un punto.

PROCESO DE SOLUCION DEL LABERINTO. Con el objeto identificado dentro del laberinto y sus propiedades ya establecidas lo siguientes es indicar un punto en el lugar donde se encuentra el objeto. Con las matrices de ceros que se hicieron al principio se marca el punto y se dan las coordenadas del centroide del objeto. Lo siguiente es ir trazando el camino lo cual se logra dando incrementos en la posición del punto, dependiendo hacia donde se mueve, se decide si se debe incrementar o decrementar, esto se hace con ciclos For. Con ayuda de los while se puede ir repitiendo el código mientras la condición se siga cumpliendo. Una condición importante es el poder decir al programa que cuando encuentra una pared, es decir un uno debe cambiar de dirección.

Fig. 4 laberinto resuelto

2

REFERENCIAS





 

 

Erik Valdemar Cuevas Jiménez, Daniel Zaldívar Navarro, “Visión por computadora utilizando MatLab y el toolbox de procesamiento digital de imágenes”, pp.34 Rafael Gonzalez, Richard Woods, Steven Eddin,”digital image processing using MatLab”, Prentice Hall, pp 344, 2004 Procesamiento de imagines con MatLab, http://loonely113.blogspot.com Rosa Echeverría Líbano, Dpto. ecuaciones diferenciales y análisis numérico, universidad de Sevilla, “introducción rápida a MatLab”, pp 39. Ubuntu http://www.ubuntu-es.org

Daniel Hernández Moedano, “instalación y uso de graphics para Ubuntu “

PROGRAMA PRINCIPAL 3

%LIMPIA LA PANTALLA Y TODAS LAS VARIABLES clear all clc %SELECCIONA IMAGEN Y LA CAMBIA A ESCALA DE GRISES A=imread('i39.jpg'); figure(1) imshow(A);

J(i,j)=0; else

J(i,j)=1;

end

end end figure (5) imshow(J); J=not(J); imshow(J)

[d1,d2,d3] = size(A); O=d1*d2; if (d3>=3) d=rgb2gray(A); else d=(A); end

[L Ne]=bwlabel(J); %% CALCULAR LAS PROPIEDADES DE LOS OBJETOS DE LA IMAGEN propied= regionprops(L); hold on

% MUESTRA EL TAMAÑO DE LA IMAGEN Y CREA OTRAS DOS MATRICES DEL MISMO TAMAÑO C=size(A); B=zeros(d1,d2); B2=zeros(d1,d2);

%% BUSCAR AREAS MENORES s=find([propied.Area]>20 & [propied.Area] 460)

for i=1:5 for j=1:5

figure(3) imshow(base); cont2=1; cont1=1;

base(i+x,j+y) = 1; end

end

end figure(2) imshow(base) impixelinfo

if base2(y+5,x)== 1 ab =1; end

rep =0; cont1=0;

for i=1:5 for j=1:5

5

%izquierda while izq ~= 1

base(i+y,j+x) = .80; end

x=x-1;

end

if base2(y,x-5)== 1 izq =1; end

end %izquierda izq=0; %izquierda while izq ~= 1

for i=1:5 for j=1:5 base(i+y,j+x) = .80;

x=x-1;

end

if base2(y,x-5)== 1 izq =1; end

end end %abajo ab=0; %abajo while ab ~= 1

for i=1:5 for j=1:5 base(i+y,j+x) = .80;

y=y+1;

end end

if ((y+5) > 460)

end %arriba arr=0; %arriba end

while arr ~= 1

figure(3) imshow(base); cont2=1; cont1=1;

if base2(y+5,x)== 1 ab =1; end

y=y-1; if base2(y-5,x)== 1 arr =1; end

for i=1:5 for j=1:5

for i=1:5 for j=1:5

base(i+y,j+x) = .80;

base(i+y,j+x) = .80; end

end

end

end

end

end rep=rep+1; if (x==close(1) && y==close(2))

%izquierda izq=0;

6

cont1=1; end if (rep >=35) cont1=1; end end

end end end %abajo ab=0; %abajo while ab ~= 1

rep2=0; close2 = point; while cont2 ~= 1

y=y+1;

%arriba arr=0; %arriba

if ((y+5) > 460) figure(3) imshow(base); cont2=1; cont1=1;

while arr ~= 1 y=y-1; end

if base2(y-5,x)== 1 arr =1; end

if base2(y+5,x)== 1 ab =1; end

for i=1:5 for j=1:5

for i=1:5 for j=1:5

base(i+y,j+x) = .80; end

end

base(i+y,j+x) = .80;

end

end

end

end

%derecha der=0; %derecha while der ~= 1

%izquierda izq=0; %izquierda while izq ~= 1

x=x+1;

x=x-1;

if base2(y,x+5)== 1 der =1; end

if base2(y,x-5)== 1 izq =1; end

for i=1:5 for j=1:5

for i=1:5 for j=1:5

base(i+y,j+x) = .80;

base(i+y,j+x) = .80;

7

end

arr=0; %arriba

end

while arr ~= 1

end

y=y-1;

%arriba arr=0; %arriba

if base2(y-5,y)== 1 arr =1; end

while arr ~= 1 y=y-1;

for i=1:5 for j=1:5 base(i+y,j+x) = .80;

if base2(y-5,x)== 1 arr =1; end

end for i=1:5 for j=1:5

end end

base(i+y,j+x) = .80;

%izquierda izq=0; %izquierda while izq ~= 1

end end

x=x-1;

end

if base2(y,x-5)== 1 izq =1; end

%izquierda izq=0; %izquierda while izq ~= 1 x=x-1;

for i=1:5 for j=1:5

if base2(y,x-5)== 1 izq =1; end

base(i+y,j+x) = .80; end

for i=1:5 for j=1:5

end end

base(i+y,j+x) = .80;

%abajo ab=0;

end end

%abajo while ab ~= 1

end

y=y+1;

%arriba

8

if ((y+5) > 460)

end

figure(3) imshow(base);

arr =1;

for i=1:5 for j=1:5 base(i+y,j+x) = .80;

cont2=1; break; end

end

if base2(y+5,x)== 1 ab =1; end

end end %derecha der=0;

for i=1:5 for j=1:5

%derecha while der ~= 1

base(i+y,j+x) = .80;

x=x+1;

end

if base2(y,x+25)== 1 der =1; end

end end

for i=1:5 for j=1:5

rep2=rep2+1; if (x==close2(1) && y==close2(2)) cont2=1;

base(i+y,j+x) = .80;

end if (rep2 >=10)

end

figure(3) imshow(base) cont2=1;

end end %arriba arr=0; %arriba

end end rep3 =0; cont3=0; cont4=0; close = point;

while arr ~= 1 y=y-1; if base2(y-5,x)== 1 arr =1; end

%arriba arr=0; %arriba while arr ~= 1

for i=1:5 for j=1:5 base(i+y,j+x) = .80;

y=y-1; if base2(y-5,x)== 1

9

%derecha while der ~= 1

end end

x=x+1;

end %derecha der=0;

if base2(y,x+25)== 1 der =1; end

%derecha while der ~= 1

for i=1:5 for j=1:5

x=x+1; if base2(y,x+25)== 1 der =1; end

base(i+y,j+x) = .80; end end

for i=1:5 for j=1:5

end %arriba arr=0; %arriba

base(i+y,j+x) = .80; end

while arr ~= 1

end

y=y-1;

end %arriba arr=0; %arriba

if base2(y-5,x)== 1 arr =1; end

while arr ~= 1 for i=1:5 for j=1:5 base(i+y,j+x) = .80;

y=y-1; if base2(y-5,x)== 1 arr =1; end

end end

for i=1:5 for j=1:5 base(i+y,j+x) = .80;

end %derecha der=0; %derecha while der ~= 1

end end

y=x+1;

end %derecha der=0;

if base2(y,x+5)== 1 der =1; end

10

end for i=1:5 for j=1:5

end

base(i+y,j+x) = .80;

end

11

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF