implementación hardware de aplicaciones de la …cferegrino/publicaciones/...precedente, resultando...

7
Implementación Hardware de Aplicaciones de la Pirámide Marco Aurelio Nuño Maganda 1 , Miguel Arias Estrada 1 , Claudia Feregrino Uribe 1 1 Instituto Nacional de Astrofísica, Óptica y Electrónica. Luis Enrique Erro No. 1. Sta Maria Tonanzintla, Cholula, Puebla, 72840, México. [email protected] , [email protected] , [email protected] Resumen. En este trabajo se proponen tres aplicaciones de las pirámides, el seguimiento, los mosaicos y la estabilización. El bloque que tienen en común las aplicaciones propuestas es el uso de la implementación hardware de un módulo que obtiene la pirámide gaussiana. Posteriormente, se hace uso de otro módulo que efectúa la correlación de un patrón con una imagen completa. Se presentan resultados para todas las aplicaciones propuestas. Palabras clave: Pirámide, Multiresolución, Seguimiento, Mosaicos, Estabilización. 1 Introducción La visión por computadora es una de las principales ramas de la Inteligencia Artificial que se explora actualmente[1]. Las aplicaciones de visión obtienen un conjunto de imágenes de una determinada fuente, procesan y arrojan resultados en forma de imágenes o en datos que después son analizados dependiendo de la aplicación. A lo largo de la historia se han buscado alternativas para el procesamiento digital de imágenes. Se ha contemplado el uso de supercomputadoras o estaciones de trabajo dedicadas. Otra de las alternativas es el uso de los FPGAs (Field Gate Programmable Array), los cuales son dispositivos digitales programables, que a diferencia de los microprocesadores, lo que se programa no es un conjunto de instrucciones, sino la descripción de una arquitectura en función de componentes básicos[4]. En la actualidad, existen dispositivos FPGA con capacidad equivalente a millones de compuertas digitales. Una de las representaciones de imágenes utilizada para el procesamiento de video es la pirámide, debido a que es una representación que separa la imagen original de total resolución en un conjunto de imágenes que representan a la imagen original en un conjunto de diferentes resoluciones espaciales [3]. 2 Fundamentos Teóricos La potencia de la pirámide consiste en que las operaciones basadas en ella son mucho más rápidas que las mismas operaciones sobre la imagen original[3]. Esta simplificación de debe a que se trabaja a resoluciones mas burdas, en donde hay menos píxeles que deben ser procesados. Cada nivel es ¼ mas pequeño que el nivel precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente. Muchos algoritmos que trabajan a nivel piramidal son llamados algoritmos burdos-a-finos (coarse-to-fine algorithms). Estos

Upload: others

Post on 19-Apr-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementación Hardware de Aplicaciones de la …cferegrino/Publicaciones/...precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente

Implementación Hardware de Aplicaciones de la Pirámide

Marco Aurelio Nuño Maganda1, Miguel Arias Estrada1, Claudia Feregrino Uribe1

1Instituto Nacional de Astrofísica, Óptica y Electrónica. Luis Enrique Erro No. 1. Sta Maria Tonanzintla, Cholula, Puebla, 72840, México.

[email protected], [email protected], [email protected]

Resumen. En este trabajo se proponen tres aplicaciones de las pirámides, el seguimiento, los mosaicos y la estabilización. El bloque que tienen en común las aplicaciones propuestas es el uso de la implementación hardware de un módulo que obtiene la pirámide gaussiana. Posteriormente, se hace uso de otro módulo que efectúa la correlación de un patrón con una imagen completa. Se presentan resultados para todas las aplicaciones propuestas.

Palabras clave: Pirámide, Multiresolución, Seguimiento, Mosaicos, Estabilización.

1 Introducción

La visión por computadora es una de las principales ramas de la Inteligencia Artificial que se explora actualmente[1]. Las aplicaciones de visión obtienen un conjunto de imágenes de una determinada fuente, procesan y arrojan resultados en forma de imágenes o en datos que después son analizados dependiendo de la aplicación. A lo largo de la historia se han buscado alternativas para el procesamiento digital de imágenes. Se ha contemplado el uso de supercomputadoras o estaciones de trabajo dedicadas. Otra de las alternativas es el uso de los FPGAs (Field Gate Programmable Array), los cuales son dispositivos digitales programables, que a diferencia de los microprocesadores, lo que se programa no es un conjunto de instrucciones, sino la descripción de una arquitectura en función de componentes básicos[4]. En la actualidad, existen dispositivos FPGA con capacidad equivalente a millones de compuertas digitales. Una de las representaciones de imágenes utilizada para el procesamiento de video es la pirámide, debido a que es una representación que separa la imagen original de total resolución en un conjunto de imágenes que representan a la imagen original en un conjunto de diferentes resoluciones espaciales [3].

2 Fundamentos Teóricos

La potencia de la pirámide consiste en que las operaciones basadas en ella son mucho más rápidas que las mismas operaciones sobre la imagen original[3]. Esta simplificación de debe a que se trabaja a resoluciones mas burdas, en donde hay menos píxeles que deben ser procesados. Cada nivel es ¼ mas pequeño que el nivel precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente. Muchos algoritmos que trabajan a nivel piramidal son llamados algoritmos burdos-a-finos (coarse-to-fine algorithms). Estos

Page 2: Implementación Hardware de Aplicaciones de la …cferegrino/Publicaciones/...precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente

algoritmos procesan la imagen en una resolución muy burda y obtienen un primer resultado del procesamiento. Estos primeros resultados son imprecisos, debido a que se trabaja a una resolución muy baja. Para obtener mejores resultados, se refinan repitiendo el procesamiento a resoluciones mas altas, utilizando como referencia los resultados obtenidos en resoluciones mas bajas. Para generar una pirámide gausiana, se parte de la suposición de que la imagen está representada por el arreglo g0 de C columnas por R Renglones. Cada valor representa la intensidad de luz del punto correspondiente de la imagen Esta imagen es el nivel 0 de la pirámide gausiana. El nivel 1 de la pirámide contiene una imagen g1 la cual es reducida a partir de una versión de la imagen g0’ a la que se le aplicó un filtro pasa-bajas. Cada valor dentro del nivel 1 es calculado como un promedio ponderado de los valores en el nivel 0 dentro de una ventana de 5x5. Cada valor del nivel 2, representado por g2, es obtenido a partir de los valores del nivel 1 aplicando el mismo patrón. En la Fig 1 se muestra la pirámide de una imagen. El proceso de promediado de nivel a nivel está implementado por la función Reduce:

Gk = Reduce (Gk-1)

Lo cual significa que para los niveles 0 < l < N y nodos i, j, 0 < i < Cl , 0 < j < Rl

∑∑−= −=

− ++=2

2

2

21 ).2,2(),(),(

m nll njmignmwjig

Fig 1. Pirámide gaussiana de la imagen “INAOE”

Donde N se refiere al número de niveles de la pirámide mientras que Cl y Rl son las dimensiones del I-ésimo nivel. La densidad de los nodos es reducida por la mitad en una dimensión o por cuatro en dos dimensiones de nivel a nivel. El patrón de pesos w debe cumplir con las siguientes propiedades:

a) Por lo general, su tamaño es de 5 x 5. b) Debe ser separable.

)(ˆ)(ˆ),( nwmwnmw =

c) Los componentes del patrón deben estar normalizados.

Page 3: Implementación Hardware de Aplicaciones de la …cferegrino/Publicaciones/...precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente

∑ −==

2

21)(ˆ

mmw

d) Además, estos componentes deben ser simétricos

2,1,0)1(ˆ)(ˆ =−= iparawiw

Por ejemplo, si tenemos una imagen de 512 x 512, el nivel 1 será de 256 x 256, el nivel 2 de 128 x 128 y el nivel 3 de 64 x 64.

3 Módulos Básicos

Los dos módulos implementados son la arquitectura piramidal y la arquitectura de correlación. A continuación se describen de forma breve estas dos arquitecturas.

3.1 Arquitectura Piramidal.

En esta arquitectura, se parte del hecho de que la imagen original esta almacenada en una memoria y que el resultado de la obtención de la pirámide de esta imagen será almacenado en la misma memoria pero en una región diferente a la de la localización de la memoria. Los módulos que conforman a esta arquitectura se muestran en la fig 2 (a).

(a) (b)

Fig 2. Bloques funcionales de la arquitectura (a) piramidal y (b) de correlación

3.2 Arquitectura de Correlación

En esta arquitectura, se tienen dos imágenes, una que es la imagen que se esta procesando actualmente, y la otra es la imagen donde se encuentra el objeto que se desea encontrar. El proceso de correlación compara todas las posibles ventanas y como resultado, se proporciona el mejor índice de correlación (donde dependiendo de la medida de correlación, puede ser el máximo o el mínimo), asi como la fila y la columna de la imagen en donde se encontró el mejor índice de correlación. Los bloques que integran a esta arquitectura se muestran en la fig 2 (b). Una vez implementados los módulos anteriores, la ultima parte consiste en la integración de estos módulos, en donde para el modulo de correlación, la imagen

Page 4: Implementación Hardware de Aplicaciones de la …cferegrino/Publicaciones/...precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente

de partida será alguna de las imágenes que forman a la pirámide gaussiana, y el patrón a buscar será una de las imágenes que conforman la pirámide guassiana del patrón a buscar. Este proceso puede repetirse para procesar más de un patrón a la vez, lo que sirve de base para la implementación de las aplicaciones de la pirámide.

4 Aplicaciones Implementadas

4.1 Seguimiento

En esta aplicación, se hace la búsqueda de un patrón en cada una de las imágenes. La actualización del patrón se hace en cada cuadro, por lo que los movimientos de rotación y traslación del objeto no afectan significativamente al seguimiento. Una breve descripción de este proceso se muestra en las figs 3(a) y 3(b).

(a) (b)

(c) (d)

Fig 3. Procesos de seguimiento (a) y (b), de mosaicos (c) y de estabilización (d)

4.2 Mosaicos

En esta aplicación, se hace la búsqueda de varios patrones que están localizados en posiciones aleatorias dentro de la imagen. Se propone tomar como referencia principal un conjunto de patrones localizados en la columna central de la imagen, y dependiendo del movimiento de estos y la dirección del movimiento, es la parte de la siguiente imagen que será tomada para la construcción del mosaico. Un ejemplo del seguimiento de los patrones se muestra en la fig 3(c).

Page 5: Implementación Hardware de Aplicaciones de la …cferegrino/Publicaciones/...precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente

4.3 Estabilización

En esta aplicación, se hace la búsqueda de varios patrones localizados en la parte central de la imagen. Se obtiene un promedio del movimiento de estos patrones, así como la dirección promedio, para posteriormente obtener un vector de movimiento de la imagen. Una vez que se conoce el vector de movimiento, se despliega una subimagen de la imagen, donde se recortaron las partes, de tal forma que al mostrar una subimagen, el usuario asume que hay una estabilización de las imágenes tomadas. Un ejemplo de este proceso se muestra en la fig 3(d).

5 Resultados Preeliminares

En esta sección se presentan resultados para las tres aplicaciones propuestas en la sección anterior. En los resultados del seguimiento, se hicieron pruebas con varias secuencias tomadas a un carrito de control remoto. En la fig 4 se muestra algunas imágenes en donde el seguimiento ha sido efectuado correctamente.

Fig 4. Resultado del Seguimiento de un objeto a lo largo de una secuencia de

imágenes

Fig 5. Resultado de la Estabilización de una secuencia de imágenes

Fig 6. Resultado de la generación de mosaicos para una secuencia de imágenes

Page 6: Implementación Hardware de Aplicaciones de la …cferegrino/Publicaciones/...precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente

En los resultados de la generación de mosaicos, se tomaron un conjunto de secuencias especialmente tomadas con determinados grados de traslape entre las imágenes. En la fig 5 se muestra el resultado de la generación de mosaicos para una secuencia tomada a un edificio. En los resultados de la estabilización de imágenes se tomaron un conjunto de imágenes donde había cierto movimiento provocado por sostener a mano la cámara con la que fueron capturadas las imágenes. En la fig 6 se muestra el resultado de estabilizar las imágenes, se muestra la imagen original y se muestra la imagen recortada. La implementación del sistema fue hecha en la plataforma de desarrollo RC1000 de Celoxica. Esta tarjeta tiene un FPGA Virtex-E, con capacidad equivalente a 2,000,000 de compuertas lógicas. El espacio ocupado por la arquitectura piramidal se resume en la Tabla 1 .

Procesadores de convolución piramidal

Slices Numero de compuertas equivalentes

1 2,197 de 19,200 (11%) 397,138 2 3,640 de 19,200 (18%) 748,209 3 5,139 de 19,200 (26%) 1,100,581

Tabla 1. Recursos utilizado por la arquitectura pirámidal

6 Conclusiones y Trabajo Futuro

6.1 Conclusiones

En este trabajo se presenta la implementación de tres aplicaciones de procesamiento de imágenes. Las aplicaciones están basadas en dos principales arquitecturas: la arquitectura piramidal y la arquitectura de correlación. La aplicaciones presentan resultados aceptables.

6.2 Trabajo futuro

Lo que queda como trabajo futuro es mejorar el algoritmo de seguimiento y perfeccionar las aplicaciones propuestas, para su desempeño en tiempo real.

7 Referencias

[1] PAJARES, G. AND DE LA CRUZ, J. “Visión por Computador”. Ed. Ra-ma., México, 1995.

[2] BURT, P.J. AND ADELSON, E.H. “The Laplacian pyramid as a compact image code”. IEEE Trans. Commun. COM-31, pp 532-540, 1983.

[3] Sarnoff Corporation. “Pyramid-Based Video Processing”. 2002. http://www.sarnoff.com/government_professional/vision_technology/core_technology/pyramid_video_processing.asp

[4] Brown, S. AND ROSE, Jonathan. “Architecture of FPGAs and CPLDs: A Tutorial”, IEEE Design and Test of Computer, Vol. 13, No. 2, pp. 42-57, 1996.

Page 7: Implementación Hardware de Aplicaciones de la …cferegrino/Publicaciones/...precedente, resultando en una reducción en el procesamiento de un factor de 16, 64, 256 y así sucesivamente