Está en la página 1de 40

IMPLEMENTACION DE LA TRANSFORMADA DE HOUGH PARA LA DETECCION DE L INEAS PARA UN SISTEMA DE VISION DE BAJO NIVEL

EMMANUEL OSPINA PIEDRAH ITA JUAN PABLO URREA DUQUE

UNIVERSIDAD NACIONAL DE COLOMBIA SEDE MANIZALES FACULTAD DE INGENIER Y ARQUITECTURA IA DEPARTAMENTO DE ING. ELECTRICA,ELECTRONICA Y COMPUTACION 2002

IMPLEMENTACION DE LA TRANSFORMADA DE HOUGH PARA LA DETECCION DE L INEAS PARA UN SISTEMA DE VISION DE BAJO NIVEL

EMMANUEL OSPINA PIEDRAH ITA JUAN PABLO URREA DUQUE

Informe del proyecto nal para optar al t tulo de Ingeniero Electrnico o

Director FLAVIO PRIETO Ingeniero Electrnico o

UNIVERSIDAD NACIONAL DE COLOMBIA SEDE MANIZALES FACULTAD DE INGENIER Y ARQUITECTURA IA DEPARTAMENTO DE ING. ELECTRICA,ELECTRONICA Y COMPUTACION 2002

TABLA DE CONTENIDO
TABLA DE CONTENIDO LISTA DE FIGURAS OBJETIVOS INTRODUCCION JUSTIFICACION 1. ADQUISICION DE IMAGENES 2. PREPROCESAMIENTO DE LA IMAGEN 2.1. Umbralizacin del Histograma . . . . . . . . o 2.2. Deteccin de bordes . . . . . . . . . . . . . . o 2.2.1. Laplaciano . . . . . . . . . . . . . . . 2.2.2. Algoritmo de deteccin de bordes . . o
III V VII VIII

1 2 6 6 8 8 9 12 13 14 14 18 23 25 26

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

3. TRANSFORMADA DE HOUGH 3.1. Algoritmo de Hough . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Descripcin del algoritmo . . . . . . . . . . . . . . . . . . . . o 3.1.2. Implementacin del algoritmo en el microcontrolador . . . . . o 4. CALCULO DE LA TRAYECTORIA CONCLUSIONES BIBLIOGRAF IA A. Diagramas de ujo

iii

B. Mvil o C. Cdigo Fuente Matlab o D. Acceso a memoria externa

29 31 32

iv

LISTA DE FIGURAS
1.1. Conguracin QuickCam-Tarjeta-Pc . . . . . . . . . . . . . . . . . . o 1.2. Interfase usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Imgenes obtenidas con el programa (1024 p a xeles) . . . . . . . . . . 2.1. Imagen con 16 niveles de gris (1024 p xeles) . . . . . . . . . . . . . . 2.2. Histograma de la gura 2.1 . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Regin de imagen de 3x3 . . . . . . . . . . . . . . . . . . . . . . . . . o 2.4. Operadores Laplacianos . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Ejemplo de aplicacin de deteccin de bordes o o . . . . . . . . . . . . . 4 5 5 7 7 9 9 10 13 15 16 17 17 19 20 21 21 22 26 27

3.1. Representacin grca de la transformada de Hough . . . . . . . . . . o a 3.2. Imagen con l nea de aprox. 20 grados . . . . . . . . . . . . . . . . . . 3.3. Transformada de Hough con l nea de 20 grados . . . . . . . . . . . . 3.4. Imgenes de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 3.5. Imagen con ruido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1. Imagen con l nea de 90 y celdas acumuladoras . . . . . . . . . . . . . 4.2. Imagen de esquinas, con diferentes l neas . . . . . . . . . . . . . . . . 4.3. Esquinas y celdas acumuladoras (Giro izquierda y derecha) . . . . . . 4.4. Giro errneo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 4.5. Diagrama general del sistema de visin . . . . . . . . . . . . . . . . . o A.1. Algoritmo transformada de Hough . . . . . . . . . . . . . . . . . . . . A.2. Algoritmo clculo de . . . . . . . . . . . . . . . . . . . . . . . . . . a v

A.3. Algoritmo clculo del mayor . . . . . . . . . . . . . . . . . . . . . . . a B.1. Mvil desarrollado . . . . . . . . . . . . . . . . . . . . . . . . . . . . o B.2. Servomotores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3. Seales de control para los servomotores . . . . . . . . . . . . . . . . n D.1. Circuito esquemtico memoria de datos externa . . . . . . . . . . . . a

28 29 30 30 32

vi

OBJETIVOS
GENERAL Desarrollar un sistema de vision de bajo nivel para la deteccin de l o neas utilizando una cmara QuickCam y un microcontrolador de la familia MCS-51, el cual indicar la a a direccin a seguir en una trayectoria por medio de una seal de control para dos moo n tores de un mvil. o ESPEC IFICOS

Implementar algoritmos de procesamiento de imgenes en el microcontrolador a con los cuales se obtenga una imagen binaria. Analizar el desempeo del algoritmo de la transformada de Hough con clculos n a sin punto otante. Implementar un algoritmo que permita seguir una trayectoria.

vii

INTRODUCCION
El objeto de este trabajo es desarrollar un sistema de visin de bajo nivel, para o la deteccin de l o neas utilizando, una cmara digital QuickCam (Blanco y Negro, de a puerto paralelo) y un microcontrolador de la familia MCS-51 el cual, mediante un algoritmo, indicar la direccin a seguir en una trayectoria (que solo tiene ngulos a o a rectos) por medio de una seal de control para los motores de un mvil. El programa n o se basa en la transformada de Hough de una imagen, de la que se obtiene el ngulo a aproximado de la recta que contenga sta, con lo cual se calcula la direccin a seguir. e o Los pasos a seguir para la realizacin de este sistema de visin son los siguientes: o o Adquisicin de la imagen. o Preprocesamiento de la imagen. Descripcin de la imagen (transformada de Hough). o Denir trayectoria. Para el proyecto primero se desarrollan algoritmos en lenguaje de alto nivel para la etapa del procesamiento de la imagen, para despus traducirlos a lenguaje ensame blador y comparar los resultados obtenidos.

viii

JUSTIFICACION
En el rea de robtica es necesario tener sistemas de visin de bajo costo para idena o o ticar objetos primarios, como lo son guras geomtricas, l e neas, etc., que permitan seguir trayectorias o evadir obstculos. a El procesamiento de imgenes proporciona algoritmos con los que se pueden idena ticar l neas, como lo es la transformada de Hough, la cual necesita de clculos con a punto otante, pero en la prctica no se dispone de sistemas econmicos con esta a o opcin. o Los microcontroladores de la serie MCS-51 son un sistema de bajo costo, que permiten realizar algoritmos con una precisin menor pero con resultados aceptables o para el propsito que se busca, adems es de uso generalizado, de programacin o a o sencilla y con posibilidades para aplicaciones futuras.

CAP ITULO 1 ADQUISICION DE IMAGENES


Este proyecto toma como punto de partida el trabajo de grado Diseo e implen mentacin de un sistema de adquisicin de imgenes v puerto serie en el cual o o a a un microcontrolador de la familia MCS-51 (80c32) obtienen imgenes de una cmara a a (QuickCam-B&N) con una resolucin de 4 bits (16 niveles de gris) y las transmite o utilizando interfase serial. En este proyecto se desarrollaron dos programas: 1.) Uno en lenguaje ensamblador para manejar el protocolo de comunicacin entre o el microcontrolador y la cmara, para obtener y guardar una imagen de sta a e en la memoria externa del microcontrolador (una extensa explicacin sobre el o funcionamiento de este microcontrolador, el set de instrucciones, su arquitectura y sus perifricos se encuentran en el libro [4]); e 2.) Uno en Delphi 3 para la recepcin de datos provenientes de la memoria del o microcontrolador via puerto serie (utilizando el control ActiveX MsComm 5.0 de Microsoft) y la visualizacin de la imagen en el PC, que tiene las siguientes o caracter sticas:

Permite congurar los parmetros de la cmara (Contraste, Oset, Exa a posicin) durante su funcionamiento. o Permite capturar imgenes y archivarlas. a Permite comprobar la integridad de la tarjeta de adquisicin. o Brinda la posibilidad de eleccin entre diferentes tamaos de imagen. o n Un anlisis detallado de la tarjeta de adquisicin y el software implementado se ena o cuentran en [5] donde se incluyen los diagramas esquemticos de los circuitos interfase a y el cdigo fuente para cada uno de los programas (ensamblador y Delphi). o

Puesta en funcionamiento del hardware y software para la adquisicin de o imgenes a

Hardware 1.) Interfase entre el microcontrolador con la memoria externa de 2k para manipular imgenes pequeas de 1024 p a n xeles, el diagrama esquemtico se encuentra en el a apndice D. e 2.) Interfase entre el microcontrolador y la cmara para una resolucin de 4 bits a o [5]. 3.) Interfase serial entre el microcontrolador y el PC [5]. En la gura 1.1 se muestra la conguracin general del hardware utilizado. o

Software 1.) Cargar el programa en ensamblador en el microcontrolador.

Figura 1.1: Conguracin QuickCam-Tarjeta-Pc o

2.) Ejecutar el programa interface en Delphi para la visualizacin de las imgenes. o a Modicaciones para el desarrollo espec co 1.) Se realiz la actualizacin del programa de Delphi 3 a Delphi 5, al igual que la o o componente para la comunicacin serial MsComm 5.0 a MsComm 6.0. o 2.) Se realizaron pruebas con el analizador lgico para determinar la escala de grises o real de la cmara, ya que la utilizada en el programa en Delphi no permit a a visualizar la imagen de forma correcta. 3.) Se suprimieron las opciones para cambio de tamao en la imagen (se mantiene n constante la dimensin, 32 x 32 p o xeles ) y la eleccin de puerto de comunicacin. o o 4.) Se mejor la velocidad de transmisin serial de 19200 baudios a 38400 baudios, o o estos cambios se realizaron en ambos programas (ensamblador y Delphi). 5.) Se ajustaron los parmetros de nivel de negro (Oset), exposicin y contraste a o en el programa para obtener imgenes de buena calidad. a

En las guras 1.2 y 1.3 se muestran la interfase de usuario del programa en Delphi y varias imgenes obtenidas con ste. a e

Figura 1.2: Interfase usuario

Figura 1.3: Imgenes obtenidas con el programa (1024 p a xeles)

La utilizacin de ste programa en Delphi 5 es clave, para visualizar, evaluar o e y corregir los resultados de los algoritmos implementados en el microcontrolador, adems permite guardar imgenes para comparar el desempeo del sistema de visin a a n o con programas que tienen la mismas rutinas en lenguaje de alto nivel (Builder C++ 4), y su cdigo fuente se encuentra en el CD adjunto a la tesis (hough.exe). o

CAP ITULO 2 PREPROCESAMIENTO DE LA IMAGEN


La imagen tomada en el proceso de adquisicin es una l o nea negra con un fondo blanco, la cual es la una parte de la trayectoria a seguir. Por lo tanto se necesita extraer la linea (umbralizacin) y obtener sus caracter o sticas (deteccin de bordes), o para realizar la descripcin de sta de una manera ms simple. o e a

2.1.

Umbralizacin del Histograma o

Supngase una imagen como la presentada en la gura 2.1, la cual contiene una o cinta negra sobre un fondo blanco y su correspondiente histograma de niveles de gris (gura 2.2), en donde se muestran dos regiones bien diferenciadas. Una forma clara de separar la cinta del fondo es elegir un umbral T que separe dichas regiones, es decir, un punto (x, y), tal que, f (x, y) > T sea un punto que pertenezca a la cinta. De lo contrario este punto ser del fondo. Entonces una imagen umbralizada g(x, y) a

se dene en 2.1.1 (Ver [1]). 1 si f (x, y) > T 0 si f (x, y) T

g(x, y) =

(2.1.1)

Figura 2.1: Imagen con 16 niveles de gris (1024 p xeles)

Figura 2.2: Histograma de la gura 2.1 En el caso particular de la imagen de la gura 2.1 se calcul su histograma (con el o comando hist en Matlab, gura 2.2), en el cual se notan dos lbulos bien diferenciados o (fondo y linea) por un valle que est entre los niveles de gris 4 y 8. Se escogi como a o umbral T = 5, para que se obtenga una imagen binaria donde 1 es el fondo y 0 la cinta utilizando la denicin de la ecuacin 2.1.1. Esto se aplica en el sistema de o o

visin de la siguiente manera: se recorre la imagen que est en la memoria externa o a del microcontrolador y se cambia el valor de cada p xel (es decir cada posicin de o memoria), dependiendo si est por encima o por debajo del umbral obtenindose una a e imagen binaria.

2.2.

Deteccin de bordes o

Un borde es el l mite entre dos regiones con niveles de gris distintos, de manera que estos sean los sucientemente homogneos, para que la transicin entre dichas e o regiones se pueda mirar como un cambio abrupto. La idea bsica para la deteccin de a o bordes es el clculo de una derivada, teniendo en cuenta que para una constante su a valor es cero y para un cambio ser diferente de cero. Es decir, en las regiones donde a no exista un cambio brusco el valor de la derivada es cero y para la transicin entre o regiones su valor es una constante. La primera derivada de un punto de una imagen se obtiene utilizando el mdulo del gradiente de ese punto y, la segunda derivada, se o obtiene de forma similar utilizando el Laplaciano.

2.2.1.

Laplaciano

El Laplaciano es un operador escalar de segunda derivada para funciones de dos dimensiones denido por la ecuacin 2.2.1: o
2

f (x, y) =

2 2 f (x, y) + 2 f (x, y) x2 y

(2.2.1)

La ecuacin se implementa en forma digital haciendo la convolucin de una imagen o o con una regin o mscara de 3x3 como la gura 2.3. o a El principio para la denicin de este operador es que el coeciente asociado al o p xel central sea positivo y los coecientes asociados a los p xeles exteriores sean

Figura 2.3: Regin de imagen de 3x3 o

negativos, tal que la suma de todos los coecientes sea cero. Al hacer la convolucin o para cada punto de la imagen con cualquiera de las mscaras de la gura 2.4, la a respuesta es cero siempre que el punto central tenga el mismo valor que sus vecinos (ver libros [1] y [2]). Ya que la aplicacin de este operador es sensible al ruido, se o utiliza despus de binarizar la imagen para mejorar el resultado. e

Figura 2.4: Operadores Laplacianos

2.2.2.

Algoritmo de deteccin de bordes o

Para el caso particular de una imagen binaria, se tom como base el operador o Laplaciano con elemento central (z5 )=4 y cuya ecuacin es la 2.2.2, el cual requiere o menos clculos que el de elemento central (z5 )=8 (ecuacin 2.2.3). En cualquiera de a o las ecuaciones el valor del operador es cero cuando la regin de 3x3 tenga p o xeles iguales y una constante positiva o negativa al estar sobre el borde; el concepto que se evidencia es que si el valor del p central es diferente de alguno de sus 4 u 8 vecinos xel

10

se detecta un borde.

f = 4z5 (z2 + z4 + z6 + z8 )

(2.2.2)

f = 8z5 (z1 + z2 + z3 + z4 + z6 + z7 + z8 + z9 )

(2.2.3)

En el sistema de visin, para cada p de la imagen binarizada (que se encueno xel tra en la memoria externa del microcontrolador) se implementa el algoritmo de la siguiente manera: Se recorre la imagen (la memoria), buscando un p negro, es decir, si es blanco xel se omite el calculo. Cuando lo encuentra busca en los 4 vecinos por lo menos un p xel blanco el cual activa una bandera que indica que hay un borde. Si todos los 4 vecinos son negros no es borde.

Figura 2.5: Ejemplo de aplicacin de deteccin de bordes o o

El resultado del algoritmo se observa en la gura 2.5. Por lo tanto se hace una reduccin importante de tiempo al hacer una variacin de la ecuacin 2.2.2 ya que se o o o evitan los siguientes clculos en el algoritmo: a

11

Slo se buscan los p o xeles negros en la imagen para la deteccin del contorno o evitando los blancos. No se realizan sumas ni multiplicaciones. Es de notar que el uso que se le da a la deteccin de bordes es disminuir la cantidad o de puntos en la imagen manteniendo la forma de la l nea obtenida.

CAP ITULO 3 TRANSFORMADA DE HOUGH


La transformada de Hough es una tcnica utilizada para aislar caracter e sticas de forma particular dentro de una imagen. La idea bsica es encontrar curvas que puedan a ser parametrizadas como l neas rectas, polinomios y c rculos. Se puede anal ticamente describir un segmento de l nea en varias formas. Sin embargo una ecuacin conveniente para describir un conjunto de l o neas es la notacin o paramtrica o normal: e

= x cos + y sin

(3.0.1)

Donde es la longitud de una normal desde el origen hasta la l nea y es el ngulo a de con respecto al eje x. Cualquier l nea recta en una imagen es representada en un punto simple (1 , 1 ) en el espacio paramtrico (, ). e Puntos colineales (xi , yi ) con i = 1, 2, 3 . . . N son transformados en N curvas sinusoidales en el plano (, ). Figura 3.1.

= xi cos + yi sin

(3.0.2)

12

13

Figura 3.1: Representacin grca de la transformada de Hough o a

Los puntos de interseccin de las curvas en el espacio paramtrico, corresponden o e a los parmetros (k , k ) de las posibles rectas que se encuentran en la imagen. a El espacio paramtrico es representado por una estructura rectangular de celdas, llae mada arreglo acumulador y cuyos elementos son las celdas acumuladoras A(i , i ), las cuales son los rangos esperados de (, ). Las celdas acumuladoras con una magnitud superior a un cierto umbral pueden ser consideradas como posibles l neas (ver libro [1]).

3.1.

Algoritmo de Hough

Sea E una imagen binaria de tamao M xN , en la cual cada p de la imagen es n xel uno o cero. Sean d , d vectores que contienen valores discretos del espacio paramtrico e , ( [0, (M 2 + N 2 )1/2 ] y [0, 180]). Donde R y T son el nmero de elementos u de y respectivamente. Ver libro [3].

14

3.1.1.

Descripcin del algoritmo o

1.) Discretize el espacio parmetro , . a 2.) Sea A(R, T ) una matriz de contadores inicializada en 0. 3.) Para cada p E(i, j) que pertenezca a la l xel nea desde h = 1, 2, . . . T con k = 1, 2, . . . K. a) Hacer = i cos d (h) + j sin d (h). b) Halle el intervalo K que sea mas cercano al obtenido. c) Incremente matriz de contadores A(k, h). 4.) Encuentre el mximo local (kp , hp ) tal que sea mayor que un umbral. a 5.) Con el y encontrados se describe la l nea en forma polar. Como ejemplo en la gura 3.2 se tiene una imagen con una l nea de aproximadamente 20o a la cual se le aplica el algoritmo de la transformada de Hough. En la gura 3.3 se muestran las diferentes curvas en el espacio paramtrico de la imagen e 3.2. En la interseccin, es la magnitud del vector normal desde el origen a la recta o y , el ngulo de inclinacin. El cdigo fuente de este programa hecho en Matlab se a o o encuentra en el apndice C, el cual tiene la misma base del algoritmo implementado e en el microcontrolador.

3.1.2.

Implementacin del algoritmo en el microcontrolador o

1.) Como entrada se tiene una imagen (M = 30 x N = 30) de la cmara que se a guarda en la memoria externa del microcontrolador (ver libro [4]). Se tienen

15

Figura 3.2: Imagen con l nea de aprox. 20 grados

discretizados los valores de con 18 elementos ( [0 . . . 92] con intervalos de 5 unidades) y con 9 elementos ( [0o , 30o , 45o , 60o , 90o , 120o , 135o , 150o , 180o ]). 2.) Se guardan en un vector las posiciones (x, y) de los puntos (p xeles negros), que pertenezcan a una l nea y en un contador (NXY) se guarda la cantidad de stos. e 3.) Debido a que el microcontrolador no realiza operaciones de punto otante, se deben multiplicar el seno y coseno de por un factor 10, obteniendo las siguientes tablas: para el seno (0, 5, 7, 8, 10, 8, 7, 5, 0), y el coseno (10, 8, 7, 5, 0, 5, 7, 8, 10). Adems se dene la tabla de k de la siguiente manera (0, 4, 5, 10, a 11, 15, 16, 20, 21, 25, 26, 30, 31, 35, 36, 40, 41, 45, 46, 50, 51, 55, 56, 60, 61, 65, 66, 70, 71, 75, 76, 80, 81, 85, 86, 92). 4.) No se utiliza una matriz de contadores por limitaciones de espacio en la memoria del microcontrolador por tanto se implementa cambiando la forma de incrementar los acumuladores en un solo vector. Es decir, se calculan los valores de variando todos los puntos (xi , yi ) con un jo. El vector de contadores se inicializa en cero.

16

Figura 3.3: Transformada de Hough con l nea de 20 grados

5.) Para (h) desde i = 1 . . . N XY, con h = 1 . . . 9, hacer: = xi cos d (h) + yi sin d (h) donde cos d (h) y sin d (h) son los valores de las tablas. Se halla el intervalo k que sea ms cercano al obtenido. Se incrementa la posicin k del vector de a o contadores que corresponde al intervalo k obtenido. 6.) Para el ngulo en que est, se busca el intervalo k que tenga el mayor acua a mulado. Se compara con el mayor anterior, se actualiza si ste es superior y se e guarda la posicin k del intervalo k y el actual. Esto se realiza para cada uno o de los ngulos. a 7.) El ultimo que se actualiza en el paso anterior es el ngulo de la recta. El a diagrama de ujo de los algoritmos implementados en el microcontrolador se

17

encuentra en el apndice A e Para este algoritmo se realizaron pruebas en un simulador de Ceibo para Windows que se encuentra en el sitio web [6], el cual permite cargar la memoria externa del simulador desde un archivo .hex que contenga los datos de la imagen, para determinar que los resultados de y fueran correctos se compararon con los obtenidos en hough.exe ya que tienen la misma rutina. En las guras 3.4 y 3.5 se muestran los a ngulos de las l neas encontrados de varias imgenes y una imagen con una linea de a 30o ms ruido incluyendo el resultado de los vectores acumuladores. a

Figura 3.4: Imgenes de prueba a

Figura 3.5: Imagen con ruido

CAP ITULO 4 CALCULO DE LA TRAYECTORIA


Tomando los resultados de la transformada de Hough: el ngulo y los valores de a mayores para cada ngulo, se dene una trayectoria a seguir, que para este caso sern a a tres direcciones (adelante, izquierda o derecha) ya que se espera probar el prototipo en una ruta que solo tenga ngulos rectos. a Direccin adelante: Cuando se tenga un mximo en la celda que corresponde o a al ngulo de = 90o , se tomar la desicin de ir hacia adelante, con seales iguales a a o n para los motores. Figura 4.1. Direccin izquierda o derecha: Al acercarse a una esquina se tienen 2 l o neas cruzadas, una con ngulo de 90o y la otra con 0o o 180o . El mvil avanzar hasta que a o a la l nea mayor sea la de 0o o 180o , e indicar que se realizar un giro. La transformada a a de Hough cuando encuentra una esquina no entrega un resultado conable de si el a ngulo est a 180o (que signicar izquierda) o a 0o (que signicar derecha) ya que a a a realmente son los mismos. Pero s entrega informacin sobre la posible direccin a o o seguir, utilizando el concepto de la transformada, el cual, genera l neas de cada uno de los puntos hacia los dems. Un ejemplo se puede ver en la gura 4.2 donde se a 18

19

Figura 4.1: Imagen con l nea de 90 y celdas acumuladoras

trazan l neas para el caso de las dos posibles direcciones. Se aprecia en las imgenes a que las l neas tienen una inclinacin en la direccin de giro. Es decir, entre ms l o o a neas haya en un sentido, el giro se dar hacia ste. Para comprobar este concepto, se a e observan los mximos en las celdas acumuladoras que signican l a neas trazadas en un a ngulo particular. Para el caso de un giro hacia la izquierda (ver gura 4.3.a) se ven resaltados los mximos acumuladores de los ngulos 120o , 135o y 150o de color rojo a a y con azul los de 30o , 45o y 60o que indican un giro a la derecha. Se aprecia que la mayor cantidad se encuentra hacia la izquierda en la gura 4.3.a y hacia la derecha en la gura 4.3.b. Por lo tanto para encontrar la direccin: o Derecha: Se suman los mximos acumuladores de los ngulos 30o , 45o y 60o . a a Izquierda: Se suman los mximos acumuladores de los ngulos 120o , 135o y 150o . a a

20

Figura 4.2: Imagen de esquinas, con diferentes l neas

Despus se encuentra el mayor entre las dos sumatorias, el cual, indica la direccin a e o seguir, proporcionando las seales correspondientes a los motores. En la gura 4.5 se n observa el diagrama general del sistema de visin. En el apndice B.1 se muestra el o e mvil en el cual se probaron los algoritmos. El cdigo fuente de todos los programas o o se encuentra en el CD adjunto al documento.

Resultados

Se realizaron pruebas con 15 imgenes para cada una de las direcciones tomando en a cuenta: ruido por cambios en la luminosidad, y huecos en las l neas. Para cualquiera de los casos, un cambio de luminosidad afecta el clculo ya que aparece demasiado a ruido o la imagen puede llegar a desaparecer. En consecuencia se debe tener en cuenta una iluminacin constante y ajuste en los parmetros de la cmara para obtener la o a a mejor l nea. En la direccin adelante (ngulo=90o ) se tiene un 100 % de acierto con o a huecos en la l nea. Para los otros casos se muestran las imgenes donde hubo error. La a gura 4.4 muestra varias imgenes donde el sentido de giro calculado diere del que a realmente es a simple vista. Por lo tanto, huecos en ciertas partes de la l nea afectan el clculo ya que se pierde informacin. Esto se debe a cambios de iluminacin. a o o

21

Figura 4.3: Esquinas y celdas acumuladoras (Giro izquierda y derecha)

Figura 4.4: Giro errneo o

22

Figura 4.5: Diagrama general del sistema de visin o

CONCLUSIONES
La dicultad para el desarrollo de software en el microcontrolador es por falta de una herramienta de depuracin en linea, que permita visualizar las variables o cuando se utilizan interrupciones y temporizadores. La elaboracin de programas de apoyo en un lenguaje de alto nivel facilita la o implementacin de los algoritmos en ensamblador, adems permite visualizar y o a comparar los resultados de manera grca. a La comunicacin serial con el microcontrolador permite evaluar cada uno de o los algoritmos utilizados, es decir, posibilita de alguna forma la depuracin del o cdigo en ensamblador. o La imagen binaria que se obtiene es de buena calidad ya que sta tiene un alto e contraste con lo cual al umbralizar se puede quitar ruido, aunque se necesita una calibracin previa de los parmetros de la cmara para conseguir buenos o a a resultados, manteniendo una iluminacin constante. o La implementacin de el Laplaciano se realiza de forma sencilla ya que es eso pec co para imgenes con poco ruido; sin embargo, en el caso contrario, el a algoritmo encontrar demasiados contornos. Para la deteccin de la l a o nea no es necesario utilizar un detector de bordes, esto se realiza por la limitacin en el o 23

24

clculo de las celdas acumuladoras en la transformada de Hough dado que stas a e son de 1 Byte. Implementar ltros en un sistema de visin de bajo nivel puede ser limitado por o la complejidad del cdigo debido al manejo de matrices, al hacer la convolucin o o de una mscara con la imagen. a El algoritmo de la transformada de Hough se desempea bien en imgenes n a con poco ruido. Las imgenes no deben tener demasiado ruido o ms de 256 a a p xeles que pertenezcan a una l nea ya que cada celda acumuladora es de 8 bits. Para disminuir este problema se aplica previamente la deteccin de bordes para o mantener la forma de la l nea pero con menos puntos. Aunque por limitaciones de punto otante se utilizan solo 9 ngulos, al aumentar los intervalos posibles a de se obtiene una mayor exactitud al hallar el esperado, inclusive si se toman ms puntos de una imagen. a El algoritmo de seguimiento de la trayectoria presenta un buen desempeo en n la direccin adelante. En las esquinas aunque las detecta de forma correcta o presenta problemas por la distancia entre el ngulo y el mvil ya que no es a o siempre la misma. Adems de seguir una trayectoria estos algoritmos se pueden utilizar en sega mentacin, descriptores de contorno y de regin, y caracterizacin tomando en o o o cuenta las limitaciones de procesamiento y de memoria del microcontrolador.

BIBLIOGRAF IA
[1] Rafael C. Gonzales y Richard E. Woods. Tratamiento digital de imgenes. a Addison-Wesley, 1992 [2] Kenneteh R. Castleman. Digital Image Processing. Prentice Hall, 1996 [3] Emmanuele Trucco and Alessandro Verri. Introductory Techniques for 3-D Computer Vision. Prentice Hall, 1998 [4] Jos Adolfo Gonzles Vzquez. Introduccin a los microcontroladores. McGrawe a a o Hill, 1992 [5] Jorge Hernando Rivera Piedrah Diseo e implementacin de un sistema de ta. n o adquisiscin de imgenes via puerto serie. Universidad Nacional de Colombia, Mano a izales. Tesis de Grado. 2001. [6] http://www.ceibo.com

25

APENDICE A Diagramas de ujo

Figura A.1: Algoritmo transformada de Hough

26

27

Figura A.2: Algoritmo clculo de a

28

Figura A.3: Algoritmo clculo del mayor a

APENDICE B Mvil o

Figura B.1: Mvil desarrollado o

En la gura B.1, el mvil incluye el microcontrolador, la cmara con su interfase o a y dos servomotores (gura B.2) con los cuales se avanza en la direccin que entrega o el algoritmo de la trayectoria. Los servomotores funcionan con una seal de PWM como se muestra en la gura n B.3. Estos servomotores estn ya adaptados para que giren continuamente y para a 29

30

Figura B.2: Servomotores

Figura B.3: Seales de control para los servomotores n

cada tipo de servo que se desee controlar, se deber realizar una prueba preliminar a para encontrar exactamente el per odo y la duracin de los pulsos que mejor funcione. o Tomando como referencia la parte de atrs del mvil hacia la cmara, para ir hacia a o a adelante se env los pulsos (desde el microcontrolador) correspondientes a derecha e an izquierda respectivamente. Para realizar un giro hacia la derecha se env los pulsos an para que el motor izquierdo gire mas rpido que el derecho y para el giro hacia la a izquierda se hace la operacin inversa. o

APENDICE C Cdigo Fuente Matlab o


%Transformada de Hough, imagen en datos.dat fid = fopen(c:\datos.dat, r); k=1; j=0; for x=1:32 for y=1:32 pix=fscanf(fid,%c,1); if pix == 0 px(k)=x-1; py(k)=y-1; k=k+1; j=j+1; end end end fclose(fid); t=0:pi/12:pi; c=[10 8 7 5 0 -5 -7 -8 -10]; %fix(10*cos(t)); s=[0 5 7 8 10 8 7 5 0]; %fix(10*sin(t)); for h=1:9 for o=1:j p=px(o)*c(h)+py(o)*s(h); y(h,o)=fix((460+p)/10); end end t=[0 30 45 60 90 120 135 150 180]; %t*180/pi; hold on for o=1:j plot(t,y(:,o)); end grid on;

31

APENDICE D Acceso a memoria externa

Figura D.1: Circuito esquemtico memoria de datos externa a

32

También podría gustarte