Sie sind auf Seite 1von 5

PROCESAMIENTO DIGITAL DE IMÁGENES MEDIANTE EL USO DE UN

FPGA Y LENGUAJE VHDL

N. E. Chávez Rodríguez*, A. M. Vázquez Vargas**


*Departamento de Computación
**Departamento de Procesamiento Digital de Señales
División de Ingeniería Eléctrica
Universidad Nacional Autónoma de México
e-mail: normaelvacr@gmail.com, ana@fi-b.unam.mx

RESUMEN
El objetivo de este proyecto es el de utilizar un FPGA para el procesamiento digital de imágenes. FPGA
es el acrónimo de Field Programmable Gate Array que es un dispositivo lógico programable de muy alta
densidad. La programación del FPGA se hace utilizando el lenguaje VHDL. VHDL es el acrónimo que
representa la combinación de VHSIC y HDL, donde VHSIC es el acrónimo de Very High Speed
Integrated Circuit y HDL es el acrónimo de Hardware Description Language. VHDL es un lenguaje
definido por la IEEE que se utiliza para diseñar elementos digitales, con los cuales se programa algún
dispositivo lógico programable, entre ellos: un FPGA .El filtrado de la imagen se realiza mediante una
convolución que consiste en una multiplicación de dos matrices reales, de las cuales una es una ventana
3x3 pixeles de la imagen original y la otra matriz son los coeficientes del filtro que se trata de aplicar
sobre la imagen (en este caso se puede aplicar cualquier filtro que sea de la forma de una matriz 3x3, por
ejemplo el filtro de Sobel, Prewitt, entre otros). El filtro es un sistema que dependiendo de sus
coeficientes, realiza un proceso de discriminación de una señal de entrada obteniendo variaciones en su
salida. Finalmente todas las multiplicaciones parciales de la multiplicación matricial son sumadas, dando
una salida para el pixel que se desea mejorar. Esto implica que tanto la salida como la entrada del filtro
serán digitales. Se propone diseñar en lenguaje VHDL todo lo necesario para que el FPGA realice el
funcionamiento de un filtro “Sobel” de tamaño 3x3. La ventaja de aplicar este procedimiento consiste en
que el tiempo de ejecución se vería reducido grandemente. Por ejemplo, si consideramos una imagen
digital de 1024x1024, esto significa que el procedimiento se realizaría 1024x1024 veces. Para configurar
un FPGA con lenguaje VHDL, se requiere de una plataforma de desarrollo, la plataforma de desarrollo
que se maneja en este proyecto es la de la compañía XILINX, llamada ISE Integrated Software
Environment.

Palabras clave: Filtrado. FPGA. VHDL. Procesamiento Digital de Imagen.

1.- INTRODUCCIÓN

Básicamente el proceso de filtrado consiste en realizar una serie de operaciones sobre cada uno de los
píxeles que componen la imagen. Puesto que nosotros vamos a trabajar con imágenes en escala de grises.
El valor de cada píxel corresponde a un entero que indica la luminosidad del píxel en el intervalo [0,255].

2.- OBJETIVO

El objetivo es verificar el desempeño del “FPGA” contra la aplicación de un filtro tradicional programado
en algún lenguaje de programación de alto nivel como por ejemplo el lenguaje “C”.
3.- APLICACIÓN PROPUESTA PARA EL FPGA

La aplicación propuesta para verificar el desempeño del FPGA orientado al procesamiento de imágenes
es filtrar una imagen utilizando el operador gradiente de “Sobel".
Si se tiene un Sistema Lineal Invariante en el Tiempo y obtenemos su respuesta al impulso conocida
también como filtro, entonces podremos saber cual será la respuesta del sistema para cualquier señal de
entrada que este reciba. Utilizando la convolución del filtro h(n) con la señal de entrada f(m) podremos
obtener su respuesta g(n). La convolución se define a continuación:
N −1
g (n) = ∑ f (m) ⋅ h(n − m) ……………………………..[1]
0
Debido a que nuestra señal de entrada, es una imagen, utilizamos la convolución en 2D, la cual se muestra
a continuación:
M −1 N −1
y (m, n) = ∑∑ h(k , l ) ⋅ x(m − k , n − l ) ……………………………..[2]
k =0 l =0

donde : 0 < m < M-1, 0 < n < N-1

La convolución se puede interpretar como un recorrido de izquierda a derecha y de arriba hacia abajo
traslapando cada coeficiente del filtro sobre la imagen. En cada traslape se multiplican los coeficientes
por el píxel sobre el cual esta y luego se suman todos los productos. La figura 1 muestra la convolución
en 2D, en la que se muestra la convolución de un filtro de 3x3 aplicado sobre el píxel de la tercera
columna y del tercer renglón. (el píxel que corresponde al centro del filtro)

Figura 1 .Aplicación de una convolución

Para calcular el valor de salida de cada píxel, la convolución en el filtro es multiplicada por el valor
del píxel que le corresponde y estos productos son sumados y el total se divide por la suma de valores en
le filtro. Como se muestra a continuación:

int { [
(-1x8) + (-1x6) + (-1x6) +
(-1x2) + (16x8) + (-1x6) +
(-1x2) + (-1x2) + (-1x8) ]/ (-1+-1+-1+16+-1+-1+-1+-1)}
= int[(128-40/(16-8)]
= int(88/8)= 11

El resultado de aplicar un filtro Sobel sobre una imagen se muestra en la figura 2.

Figura 2 .Imagen Digital sin ruido e Imagen Digital después de aplicar el filtro

4.- ESPECIFICACIONES DEL FPGA

La arquitectura que se implanta en el FPGA para utilizarlo como filtro se enumera a continuación:
♦ Una Arquitectura multibus. Se utiliza un bus separado para datos y otro para datos de programa.
♦ Un Multiplicador en paralelo de 8 x 8 bits acoplado a un sumador dedicado (MAC).
♦ Una unidad generadora de direcciones (AGU).
♦ Se utilizan dos unidades de control, una para el control general del micro y una específica para el
control de la MAC.

2
♦ Una memoria tipo Harvard. Las instrucciones están separadas de los datos, es decir, se tiene una
memoria de programa y una de datos.
♦ Y las siguientes instrucciones:
- Para carga de datos del filtro.
- Para carga de datos de la imagen.
- Para desplazar datos de un registro a otro.
- Para realizar multiplicaciones y sumas en paralelo.
- Para escribir datos en memoria.
- Para repetición de una instrucción y repetición de bloques de instrucciones.

5.- ARQUITECTURA IMPLANTADA EN EL FPGA

El filtro es un sistema que dependiendo de sus coeficientes, realiza un proceso de discriminación de una
señal de entrada obteniendo variaciones en su salida. Esto implica que tanto la salida como la entrada del
filtro serán digitales. Se propone diseñar en lenguaje VHDL todo lo necesario para permitir que el
“FPGA” realice el funcionamiento de un filtro “Sobel” de tamaño 3x3. Utilizando la matriz de 3x3 que
se muestra en la figura 3. La arquitectura implantada en el FPGA se muestra en la figura 4 y la figura 5
muestra la simulación general de esa arquitectura.

-1 -2 -1
0 0 0
-1 -2 -1
Figura 3. Matriz de 3x3 utilizada en un filtro Sobel

Figura 4. Arquitectura implantada en el FPGA

3
El filtro es un sistema que dependiendo de sus coeficientes, realiza un proceso de discriminación de una
señal de entrada obteniendo variaciones en su salida. Finalmente todas las multiplicaciones parciales de la
multiplicación matricial son sumadas, dando una salida para el pixel que se desea mejorar. Esto implica
que tanto la salida como la entrada del filtro serán digitales. Se propone diseñar en lenguaje VHDL todo
lo necesario para que el FPGA realice el funcionamiento de un filtro “Sobel” de tamaño 3x3

Figura 5.Simulación general del sistema

Figura 5.Simulación general del sistema

La figura 6, muestra la simulación del funcionamiento de la MAC, dandole valores a la variable SMult;
SMult=1001 se multiplican D0 con B0, D1 con B1 y D2 con B2 en el módulo 0 y se suman los tres
resultados, en este caso 00000100. Con SMult=1010 se multiplican D0 con B0, D1 con B1 y D2 con B2
en el módulo 1 y se suman los tres resultados, en este caso 00000000. Con SMult=1011 se multiplican D0
con B0, D1 con B1 y D2 con B2 en el módulo 2 y se suman los tres resultados, en este caso 11111010
que es igual a -5 en decimal. La instrucción SMult=1100 efectúa la multiplicación y suma en paralelo de
los 3 modulos, es decir 9 multiplicaciones en paralelo y suma los resultados. En este caso se obtiene
11111110 = -2.

4
Figura 6.Simulación de valores dados a la MAC

6.- CONCLUSIONES
La arquitectura de un filtro sobel se puede implantar en un FPGA para lograr tiempo real, el uso del
lenguaje VHDL representan retos y oportunidades de desarrollo tecnológico debido a que se tiene
flexibilidad a nivel software y reconfigurabilidad dinámica

7.- REFERENCIAS
[1] Norma Elva Chávez Rodríguez, Jorge Valeriano Assem “Entorno de diseño MAX+PLUS II” 45 pp.
Facultad de Ingeniería. UNAM.
[2] Norma Elva Chávez Rodríguez , Jorge Valeriano Assem “Lenguaje de descrición de hardware VHDL” 45
pp. Facultad de Ingeniería. UNAM
[4] Norma Elva Chávez Rodríguez, Ana María Vázquez Vargas. “Dispositivos Lógicos Programables VLSI”,
en proceso de revisión para su publicación, 240 pp. Facultad de Ingeniería. UNAM..
[5] John G. Proakis “Tratamiento Digital de Señales” Prentice Hall Quinta Edición, Prentice Hall, México
1998
[6] R. C. Gonzalez “Digital Image Processing”, Cuarta Edición, Addison-Wesley, México 2003
[7] Kemneth R Castleman “Digital Image Processing”, addison Westey, México 2002

Das könnte Ihnen auch gefallen