Implementación Hardware de Aplicaciones de la
Pirámide
Marco Aurelio Nuño Maganda1, Miguel Arias Estrada1, Claudia Feregrino Uribe1
1
Instituto Nacional de Astrofísica, Óptica y Electrónica. Luis Enrique Erro No. 1.
Sta Maria Tonanzintla, Cholula, Puebla, 72840, México.
nmaganda@[Link], ariasm@[Link], cferegrino@[Link]
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
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
gl (i, j) = ∑ ∑ w(m, n) g
m=−2n=−2
l −1 (2i + m,2 j + n).
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.
w(m, n) = wˆ (m) wˆ (n)
c) Los componentes del patrón deben estar normalizados.
∑
2
m = −2
wˆ (m) = 1
d) Además, estos componentes deben ser simétricos
wˆ (i ) = wˆ (−1) para i = 0,1,2
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
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).
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
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 Slices Numero de compuertas
convolución piramidal 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.
[Link]
ogy/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.