Instituto Polit�cnico Nacional
Instituto Politécnico Nacional
"La Técnica al Servicio de la Patria"
Error
  • JUser: :_load: No se ha podido cargar al usuario con 'ID': 77

Boletín No 38
1 de Julio 2013

 

OBTENCIÓN DE BORDES DE IMÁGENES MONOCROMÁTICAS DIGITALIZADAS USANDO VHDL EN UNA TARJETA SPARTAN-3A

 

Arturo Juárez Ríos Roberto
Orozco Velázquez
Centro de Innovación y Desarrollo Tecnológico en Cómputo, IPN

 

Resumen

 

El presente documento muestra de manera práctica un método sencillo para obtener el contorno de una imagen, a través de desplazamientos por bit y operaciones lógicas XOR . Todo esto programado en el lenguaje VHDL aplicado a una tarjeta FPGA y obteniendo la salida visible mediante el uso de una matriz de leds.

 

Introducción

El estudio de imágenes y el desarrollo de herramientas que permitan identificar contornos en imágenes es muy útil por ejemplo en la búsqueda automatizada de objetos o elementos importantes dentro de una amplia zona. En los equipos automatizados como en la robótica es usado para poder identificar, seleccionar y discriminar objetos. También para tomar puntos de referencia fijos y poder determinar la posición de un elemento movible [1].

Sobre los temas de reconocimientos de imágenes existen varias herramientas utilizadas para procesar todo tipo de imágenes. Algunos procesos son relativamente sencillos y otros más complejos, dependiendo de los tipos de imagen y lo que se pretende lograr como resultado al analizar dicha imagen.

Existen una infinidad de software que realiza esta tarea. En la figura 1a se muestra una foto a color tomada con un dispositivo de telefonía móvil LG-P350g con Android 2.2.2. En la figura 1b, la imagen es procesada por una aplicación llamada “Paper Camera” sobre el sistema operativo Android en la que se muestra de manera monocromática una serie de contornos obtenidos. En la figura 1c se muestra la misma imagen procesada en Photoshop que mediante un filtro de fotocopiado obtiene una serie de contornos.

image003 image005 image007
a) Cámara de smatphone b) Aplicación “Paper Camera” c) filtro “fotocopiado” de Photoshop

Al pasar la foto hacia un sistema monocromático y con sólo los bordes de las cosas o elementos encontrados, podemos reducir en gran medida el tamaño de la información que podría ser procesada por un sistema computacional facilitando la identificación de formas predeterminadas, con lo cual aumenta la velocidad del proceso y la reducción en los requerimientos de los sistemas de procesamiento.

Desarrollo

Para la realización de este proyecto tomamos de base una imagen que puede ser almacenada en un espacio de 40 bits para poderla visualizar sin problema en una matriz de leds 8X8. La información de entrada es almacenada en una variable llamada “original” de tipo SIGNAL de 40 bits:

 

original <= "0000000000111100001111000011110000000000"

 

A partir de esta variable se calculan los valores de otras dos variables del mismo tipo, una variable llamada “originalh” que obtendrá los valores para un desplazamiento horizontal de un bit sobre la información original, otra variable llamada “originalv” que contendrá el desplazamiento vertical de la imagen original al desplazarla 8 bits.

 

Originalh <= “0000000000011110000111100001111000000000”
Originalv <= “0000000000000000001111000011110000111100”

 

Al realizar la operación lógica original XOR originalv [2] nos permite apreciar los bordes superior e inferior de la imagen. Con la operación lógica original XOR originalh apreciamos los bordes izquierdo y derecho correspondiente.

 

Original XOR originalv <= “0000000000100010001000100010001000000000”
Original XOR originalh <= “0000000000111100000000000000000000111100”

 

Finalmente, realizando la operación lógica OR sobre estos dos valores obtenemos el valor de la variable “Res”, que tiene como resultado una buena aproximación del contorno de la imagen.

 

Resul <= (Original XOR originalv) OR (Original XOR originalh)
<= “0000000000111110001000100010001000111100”

 

Para revisar los resultados se programó con VHDL una tarjeta FPGA Spartan-3A con el software de desarrollo ISE Project Navigator 14.4 de la empresa Xilinx, Inc. En donde se creó el diagrama esquemático FPGA de la figura 2.

image012
Figura 2

Implementación

Se programaron 4 interruptores para seleccionar qué salida queremos visualizar en la matriz de leds conectada, ya sea la imagen original (o), la imagen calculada al desplazar la imagen original tanto vertical como horizontalmente, originalh (H), originalv (V) o el resultado después de realizar las operaciones (r). Todas las operaciones son realizadas dentro del módulo “matrix” mostrado.

La salida de datos es enviada a un registro de corrimiento 74LS164 para enviar los datos a las ocho columnas, las 5 salidas de renglones se coordinan con la salida de datos para manejar los 40 leds para mostrar la imagen de salida. RELOJ alimenta al circuito síncrono de matrix, llevando el pulso de reloj de 50MHz proporcionado por la misma tarjeta Spartan. relojC es proporcionado por un divisor de frecuencia dentro de matrix y alimenta el pulso de reloj para el funcionamiento del registro de corrimiento. El circuito del corrimiento de registro es alimentado por un regulador 7805 conectado a una pila de 9V. El circuito lo podemos ver en la figura 3.

image014
Figura 3

Resultados Las salidas de la imagen original, desplazamiento horizontal, desplazamiento vertical y la imagen obtenida del contorno son mostrados en la figura 4.

image015 image018 image019 image021
Figura 4

Conclusiones

Se logró obtener el objetivo planteado de generar el contorno de una imagen digitalizada con el empleo de la tarjeta FPGA de desarrollo. Esta metodología para generar el contorno nos generó un bit o “hueco” en una de las esquinas, esto debido a la manera que se realizaron los desplazamientos. Definiendo el contorno interno en el que todos los puntos obtenidos son elementos de la imagen original y el contorno externo son puntos que no forman parte de la imagen original pero son inmediatamente contiguos a esta, apreciamos que el resultado obtenido es una combinación de ambos contornos. Se intuye que entre mayor cantidad de información o tamaño de la imagen tengamos, se apreciaría menos el error. Con la programación de los 4 interruptores se pueden apreciar algunas de las etapas por las que atraviesa el proceso de generación del contorno resultante.

Referencias

* Peter J. ashenden. “The Designer’s Guide to VHDL”. Morgan Kaufmann Publishers, Inc. 1996.

* M. Morris Mano. “Lógica Digital y Diseño de Computadores”. Prentice Hall Hispanoamericana S.A. 1986.

* Benjamín Tovar, Rafael Murrieta Cid y Claudia Esteves. “Robot Motion Planning for Map Building”. ITESM Campus Ciudad de México, México D.F. 2002.

* Spartan-3ª/3AN FPGA Starter kit Board User Guide . Xilinx Inc. 2008.

* 74HC164; 74HCT164 8-bit serial-in, parallel-out shift register. Product data sheet. 2011. * XMUR38C8, 8x8 Dot Matrix Display. SunLED Product data sheet. 2011.