Está en la página 1de 33

4.2.3. Tarjeta de desarrollo Nexys 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

Indice General
VI VII

5. Consideraciones de dise o n 5.1. Precisin . . . . . . . . . . . . . . . . . . o 5.1.1. Punto jo v/s Punto otante . . 5.1.2. Uso de memoria . . . . . . . . . 5.1.3. Anlisis y conclusiones . . . . . . a 5.2. Tamao de ventana . . . . . . . . . . . . n 5.3. Tratamiento de los bordes de la ventana 5.4. Divisin en el algoritmo . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

21 21 21 22 22 23 23 25

Abreviaciones

Nomenclatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 4 4 5 5 5 6 6 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 2 2 2 2

1. Introduccin o 1.1. Introduccin general . . . . o 1.2. Hiptesis de trabajo . . . . o 1.3. Objetivos . . . . . . . . . . 1.3.1. Objetivo general . . 1.3.2. Objetivos espec cos 1.4. Alcances y limitaciones . . . 1.5. Organizacin del informe . o

2. Marco terico o 2.1. IRFPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. No-uniformidad . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. Modelo del detector . . . . . . . . . . . . . . . . . 2.3. Correccin de no-uniformidad . . . . . . . . . . . . . . . . o 2.3.1. Mtodos basado en calibracin de mltiples puntos e o u 2.3.2. Mtodos basado en escenas . . . . . . . . . . . . . e 2.4. Mtodos basados en escenas . . . . . . . . . . . . . . . . . e 2.4.1. Mtodos basados en estad e sticas constantes . . . . 2.4.2. Mtodos basados en redes neuronales . . . . . . . . e

6. Implementacin del sistema o 6.1. Sistema de adquisicin . . . . . . . . . . . . . . . . . . . . o 6.1.1. Digitalizacin del video . . . . . . . . . . . . . . . o 6.1.2. Reduccin de la resolucin del video . . . . . . . . o o 6.2. Descripcin general del algoritmo . . . . . . . . . . . . . . o 6.3. Correccin de la imagen . . . . . . . . . . . . . . . . . . . o 6.3.1. Correccin de no-uniformidad - nuc . . . . . . . . o 6.4. Clculo de la referencia de la red. . . . . . . . . . . . . . . a 6.4.1. Clculo de media horizontal - mean line . . . . . . a 6.4.2. Buer de l neas - lines buffer . . . . . . . . . . . 6.4.3. Sumador de l neas verticales - adder 7 . . . . . . . 6.5. Actualizacin de parmetros . . . . . . . . . . . . . . . . . o a 6.5.1. Diferencia respecto de la referencia - diff module 6.5.2. Actualizacin de parmetros - update parameters o a 6.6. Controlador PSDRAM - wrap psdram . . . . . . . . . . . 6.6.1. Controlador bsico PSDRAM - PSDRAMDriver . . a 6.6.2. Funcionamiento . . . . . . . . . . . . . . . . . . . . 6.7. Otros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Resultados 7.1. Resultados de la correccin . . . . . . . o 7.1.1. Sistema de prueba . . . . . . . . 7.1.2. Parmetros de prueba . . . . . . a 7.1.3. Resultados . . . . . . . . . . . . 7.2. Resultados de la implementacin . . . . o 7.2.1. Resultados de s ntesis . . . . . . 7.2.2. Resultados de tiempo y potencia 7.3. Anlisis . . . . . . . . . . . . . . . . . . a 8. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

27 27 27 28 29 30 31 32 33 36 40 41 41 42 46 46 46 46 48 48 48 49 49 53 53 54 54 56

3. Algoritmo de Scribner 3.1. Marco terico . . . . . . . o 3.2. Modicacin al algoritmo o 3.3. Evaluacin del algoritmo . o 3.4. Resultados . . . . . . . . . 3.5. Anlisis . . . . . . . . . . a 3.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 18 18 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . 7 . 9 . 9 . 10 . 16 . 16

4. Descripcin del hardware o 4.1. Sistema completo . . . . . . . 4.2. Descripcin del hardware . . o 4.2.1. Cmara Infrarroja . . a 4.2.2. Tarjeta de adquisicin o

ii

Indice de Tablas

Indice de Figuras
2.1. Diagrama general de un sistema IRFPA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Ejemplo del efecto del FPN ante una irradiancia uniforme. . . . . . . . . . . . . . . . . . . 2.3. Efecto del ghosting por el algoritmo de Scribner. . . . . . . . . . . . . . . . . . . . . . . . 4 4 6 7 12 13 14 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 19 20

3.1. Conjunto de parmetros para evaluar el algoritmo de Scribner mediante simulacin. . . . 10 a o 3.2. Resultados de las simulaciones del algoritmo de Scribner sobre el video 1. . . . . . . . . . 11 3.3. Resultados de las simulaciones del algoritmo de Scribner sobre el video 2. . . . . . . . . . 11

4.1. Resumen de atributos de las FPGAs Spartan-3E 500K y Spartan-3E 1200K . . . . . . . . 20

5.1. Utilizacin de memoria por los parmetros bias y ganancia . . . . . . . . . . . . . . . . . 22 o a 5.2. Ciclos de lectura/escritura de parmetros bias y ganancia. . . . . . . . . . . . . . . . . . . 23 a

Estructura de la red neuronal propuesta por Scribner. . . . . . . . . . . . . . . . . . . . . Evolucin del PSNR utilizando Scribner sobre el video 1, para distintas tasas de aprendizaje. o Evolucin del PSNR utilizando Scribner sobre el video 2, para distintas tasas de aprendizaje. o Escenas del video 1: original, corregido con calibracin de dos puntos y con el algoritmo o de Scribner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Escenas del video 2: original, corregido con calibracin de dos puntos y con el algoritmo o de Scribner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1. 4.2. 4.3. 4.4. Diagrama general de los componentes hardware utilizados. . . . . Cmara IR Jade UC33x, fabricada por la empresa CEDIP [14]. . a Tarjeta decodicadora de video VDEC1, de Digilent Inc. [15]. . . Arquitectura de la familia de FPGAs Spartan-3E, de Xilinx [20].

3.1. 3.2. 3.3. 3.4.

6.1. Entradas y salidas del mdulo nuc. . . . . . . . . . o 6.2. Entradas y salidas del mdulo mean line. . . . . . o 6.3. Descripcin de la FSM del mdulo mean line . . . o o 6.4. Entradas/salidas del mdulo lines buffer. . . . . o 6.5. Descripcin de la FSM 1. . . . . . . . . . . . . . . o 6.6. Descripcin de la FSM 2. . . . . . . . . . . . . . . o 6.7. Entradas y salidas del mdulo adder 7 . . . . . . . o 6.8. Pasos principales realizados por el mdulo adder 7 o 6.9. Entradas/salidas del mdulo diff module. . . . . . o 6.10. Entradas del mdulo update parameters. . . . . . o 6.11. Salidas del mdulo update parameters. . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 34 35 37 39 39 41 41 42 43 44

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

5.1. Problema presente en los bordes de la imagen, para el clculo de la media . . . . . . . . . 24 a 5.2. Eectos de los distintos padding en los bordes de la imagen, al aplicar el lotr de media . 25 6.1. Diagrama general del sistema de procesamiento. . . . . . . . . . . . . . . . . . . . . . . 6.2. Diagrama del mdulo nuc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 6.3. Diagrama bsico del funcionamiento del mdulo mean line. . . . . . . . . . . . . . . . a o 6.4. Diagrama de FSM del mdulo mean line . . . . . . . . . . . . . . . . . . . . . . . . . . o 6.5. Esquema que detalla el funcionamiento de los primeros estados del mdulo mean line. o 6.6. Esquema bsico de la FSM 1 del mdulo lines buffer. . . . . . . . . . . . . . . . . . a o 6.7. Esquema bsico de la FSM2 del mdulo lines buffer. . . . . . . . . . . . . . . . . . a o 6.8. Esquema general del orden que deben tener las l neas verticalmente dentro del buer. 6.9. Esquema general mdulo adder 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 6.10. Diagrama del mdulo update parameters. . . . . . . . . . . . . . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . 30 31 33 34 36 37 38 40 40 45 . 49 . 50 . 51 . 52 7.1. Diagrama del sistema de prueba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2. Muestra comparativa de las correcciones en matlab y FPGA, junto con el video original y el corregido con calibracin de dos puntos, para el video extendido de 3000 cuadros . . o 7.3. Muestra de la evolucin del PSNR, utilizando calibracin de dos puntos y correccin con o o o la FPGA, para el video de 3000 cuadros. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4. Muestra comparativa de las correcciones en matlab y FPGA, junto con el video original y el corregido con calibracin de dos puntos, para el video extendido de 12000 cuadros . o

7.1. Tasas de aprendizaje utilizadas durante la evaluacin . . . . . . . . . . . . . . . . . . . . . 49 o 7.2. Utilizacin de recursos del sistema completo. . . . . . . . . . . . . . . . . . . . . . . . . . 54 o

iii

iv

7.5. Muestra de la evolucin del PSNR, utilizando calibracin de dos puntos y correccin con o o o la FPGA, para el video extendido de 12000 cuadros. . . . . . . . . . . . . . . . . . . . . . 53

Abreviaciones
BRAM FPGA FPN FSM IR IRFPA NUC PSDRAM PSNR : Block RAM(Bloque RAM ). : Field-Programmable Gate Array(arreglo de compuertas programables en terreno). : Fixed Pattern Noise(ruido de patrn jo). o : Finite State Machine(maquina de estados nitos). : Infrared(infrarrojo). : Infrared Focal Plane Array(arreglo de sensores infrarrojos en el plano focal ). : Non-Uniformity Correction(correcin de no-uniformidad ). o : Pseudo Static-Dinamic RAM(RAM pseudo estatic-dinmica). a : Peak Signal to Noise Ratio(i ).

vi

Nomenclatura Introduccin o
1.1. Introduccin general o

Cap tulo 1

a() Aij

: Ganancia asociada a un detector IR. : Elemento (i, j) de la matriz de ganancia de un IRFPA.

b() Bij

: Bias asociada a un detector IR. : Elemento (i, j) de la matriz de bias de un IRFPA.

E2 (G, O)

: Funcional a optimizar por el algoritmo de Scribner.

: Funcin que clcula la media dentro de una vecindad. o a

x() Xij

: Irradiancia real sobre un detector IR. : Elemento (i, j) de la matriz de irrandiancia real sobre IRFPA.

y() Yij

: Irradiancia medida desde un detector IR. : Elemento (i, j) de la matriz de irradiancia medida sobre IRFPA.

Con el paso de los a os, la tecnolog y la electrnica han ido evolucionando a pasos agigantados, n a o permitiendo el desarrollo de diversas areas de la ciencia. Computadores, televisores y celulares son parte de la vida diaria de muchas personas. No excenta de este desarrollo, est el rea dedicada al procesamiento a a de imgenes, cuya funcin radica en extraer informacin desde una imagen o video, para que esta pueda a o o ser utilizada en algun procedimiento y/o proceso. Dentro del rea de procesamiento de imgenes, un campo que se ha desarrollado bastante es el dedia a cado al tratamiento de imgenes infrarrojas, cuyo origen data del a os 1800, gracias su descubrimiento a n por Willian Herschel. El desarrollo que se ha logrado hasta el d de hoy, ha permitido incorporar esta a tecnolog en sistemas de vigilancia, aplicaciones militares, medicina, y analis de sistemas mcanicos y a s e elctricos, permitiendo realizar tareas que de otro modo no ser posible. e a Pese a las numerosas mejoras que se han introducido en los dispositivos para captar imgenes infraa rrojas, tanto en el diseo como en el proceso de fabricacin y materiales utilizados, existen problemas n o que an no han sido resueltos, y tienen que ver con la calibracin de estos equipos, convirtiendo la u o adquisicin de imgenes en un proceso ms complejo y de mayor costo. o a a El problema principal de estos equipos se conoce como no-uniformidad o ruido de patrn jo, cuyo o origen proviene del proceso de fabricacin y el diseo mismo, y el efecto que este tiene sobre la informacin o n o adquirida depende principalmente de la tecnolog que se est utilizando para el diseo y fabricacin del a a n o equipo. Lo anterior, ha originado el desarrollo de diversos mtodos para atenuar el efecto de este problema, e que son los mtodos basados en calibracin de mltiples puntos y los mtodos basados en escenas, siendo e o u e los segundos los de mayor importancia para los investigadores, debido a que permiten la correcin del o ruido en tiempo real y sin interrupir el funcionamiento normal del equipo. Considerando lo anterior, no es dif pensar que en un fturo los mtodos basados en escenas sean cil u e parte del sistema de adquisicin. Por lo tanto, la implementacin de estos metodos en circuitos integrados, o o abre las puertas para que en un futuro no solo sean capaces de capturar imgenes, si no que adems a a puedan auto-calibrarse y eliminar el rudio.

1.2.

Hiptesis de trabajo o
Considerando que el algoritmo de Scribner ha sido utilizado en diversos trabajos ????, logrando resultados exitosos pero variados, ya sea debido a modicacines sobre la dinmica de los parmetros o o a a

vii

al video utilizado para las pruebas, se asume que el algoritmo ser capaz de corregir un video proveniente a de la cmara CEDIP modelo Jade UC33X??, cuyas caracter a sticas son dieren de las utilizadas en los distintos trabajos?? ??. Adems, se asume que las capacidades de la tarjeta de desarrollo elegida (Nexys2 a ??, fabricada por la empresa Digilent Inc.), tendr los recursos sucientes para implementar el algoritmo. a Finalmente, se asume que el tiempo que toma el estudio del algoritmo, adems de la implementacin y a o evaluacin del sistema completo, no excede un semestre acadmico. o e

Cap tulo 2

1.3.

Objetivos

Dada la naturaleza de este trabajo, se hace necesario denir los objetivos nales del mismo, permitiendo as evaluar los resultados alcanzados.

Marco terico o

1.3.1.

Objetivo general

Implementar el algoritmo propuesto por Scribner en una FPGA, de manera tal que permita la correccin de imgenes infrarrojas en tiempo real. o a

1.3.2.

Objetivos espec cos

Estudiar la factibilidad de implementar el algoritmo de Scribner en una FPGA.

Adecuar los parametros del algoritmo, tal que este pueda ser implementado en una FPGA.

El desarrollo de la radiacin infrarroja se debe principalmente a la utilidad que esta tiene, o y es por ello que se han desarrollado mltiples aplicaciones que hacen uso de esta. Pese a la u evolucin de esta rea, existe un problema que ha perdurado, que es el ruido de patrn jo o a o (ms conocido en la literatura como FPN). Debido a las implicancia que conlleva la presencia a de este ruido, se han desarrollado disversos mtodos que atacan el problema, que al igual que e gran parte de las soluciones en la ingenier tienen sus ventajas y desventajas, por lo que a, las condiciones y los requierimientos sobre el sistemas, son los que determinarn nalmente a la utilizacin de uno y otro mtodo. o e

Proponer una arquitectura para la implementacin del algoritmo. o

2.1.

IRFPA

Implementar el algoritmo de Scribner, y evaluar su rendimiento sobre la cmara infrarroja. a

Analizar la implementacin del sistema completo e identicar deciencias. o

Proponer posibles mejoras sobre los resultados logrados.

1.4.

Alcances y limitaciones

Este trabajo pretende lograr una implementacin que permita raticar el funcionamiento del algoo ritmo de Scribner, corriendo en tiempo real y en una FPGA. Por ello, la implementacin estar cono a dicionada a los recursos disponibles en la tarjeta de desarrollo, lo que podr implicar modicaciones a sobre el algoritmo, y en particular la precisin de este. Adems, dadas las caracter o a sticas del sistema de adquisicin disponible, los resultados no podrn sern directamente comparables con los obtenidos por o a a simulacin, por lo que necesariamente se deber emular el sistema de adquisicin para poder realizar un o a o anlisis coherente. Finalmente, debido a que el algoritmo es altamente dependiente del video capturaa do, la implementacin deber permitir modicar ciertos parmetros, sin la necesidad de recongurar la o a a FPGA.

Los IRFPA, como su sigla en ingls lo indica (Infrared Focal Plane Array) es un arreglo de dee tectores infrarojos en el plano focal, que no es ms que un arreglo de sensores ubicados de forma a matricial, posicionados en el plano focal de un lente convexo o biconvexo, complementado con un sistema de adquisicin que permite leer la informacin capturada. Si bien, en escencia los distintos IRFPA poo o seen el mismo diseo, mostrado en la Figura 2.1, existen diversas arquitecturas empleadas en el circuito n de lectura de datos, asi como tambin existen distintos materiales para la favricacin de la matriz de e o detectores. Si bien la tendencia en sistemas de captura de imgenes, incluyendo las que trabajan en el espectro a visible, se orientan a incorporar ms pixeles dentro de una misma rea, esto conlleva a una implemena a tacin ms compacta y ms propensa al ruido entre los distintos componentes del sistema, adems de o a a a elevar la temperatura del circuito y los sensores. Esto, se ve reejado ms en los equipos que capturan a IR. Por lo anterior, la fabricacin de estos ultimos requiere un diseo ms cuidadoso, con limitantes o n a ms exigientes, las pese a contribuir con la eliminacin de algunos de los problemas mencionados, no a o los soluciona por completo. Problemas como las corrientes oscuras y la no-uniformidad, son parte de los problemas que permanecen en estos sistemas.

1.5.

Organizacin del informe o

detector IR (a()) es la ganancia del detector(pixel), y : Bias asociada a un detector IR (b()) es el bias del detector.Por lo anterior, y en vista de que un IRFPA es un arreglo matricial de sensores, el modelo matemtico que lo dene es: a Yij (n) = Aij (n) Xij (n) + Bij (n), (2.2)

Figura 2.1: Diagrama general de un sistema IRFPA.

2.2. 2.3. Correccin de no-uniformidad o

No-uniformidad

donde : Elemento (i, j) de la matriz de irradiancia medida sobre IRFPA (Yij ) es el elemento (i,j) de la matriz de irradiancia medidida, : Elemento (i, j) de la matriz de irrandiancia real sobre IRFPA (Xij ) es el elemento (i,j) de la matriz de irrandiancia real,: Elemento (i, j) de la matriz de ganancia de un IRFPA (Aij ) es el elemento (i,j) de la matriz de ganancia y : Elemento (i, j) de la matriz de bias de un IRFPA (Bij ) es el elemento (i,j) de la matriz de bias.

Pese a que la fabricacin de cada sensor de un IRFPA incluye los mismos materiales y se someten o al mismo proceso de fabricacin, la respuesta de estos no es uniforme. Sumado a lo anterior, estn las o a corrientes oscuras presentes en los sensores, y factores como la temperatura modican las condiciones de operacin del equipo. Todo lo anterior, produce un ruido en la imagen lo que se conoce en la literatura o como FPN Figura 2.2b, cuyo mdelo simplicado consta de un bias y una ganancia. o
Imagen leida desde la camara

Para solucionar el problema del FPN presente en los IRFPA existen diversos mtodos, los cuales e se pueden agrupar en dos clases: Mtodos basados en calibracin de mu ltiples puntos, y los e o u Mtodos basados en escena. e

Imagen de irradiancia real

2.3.1.

Mtodos basado en calibracin de m ltiples puntos e o u

50 50

100 100

alto

150 150

200 200

alto

50 50 100 150 200 250 300

100

150

ancho ancho

200

250

300

Estos son los ms precisos, y se basan en el uso de fuentes de radiacin infrarroja uniforme, llamados a o cuerpos negros. La calibracin ms utilizada y simple es la de dos puntos, para lo cual se requiere de dos o a cuerpos negros a diferentes temperaturas, permitiendo as calcular los parmetros de ganancia y bias a para cada detector del IRFPA, resolviendo un sistema de ecuaciones con dos incognitas. El problema de estos mtodos es que, por un lado se requiere interrumpir la adquisicin de informacin util, puesto e o o que se debe enfocar la cmara hacia los cuerpos negros para poder determinar los parmetros. Adems, a a a debido a que el sistema IRFPA se ven afectado no slo por el proceso de fabricacin, si no tambin por las o o e condiciones de operacin, este debe ser calibrado en terreno, para lo cual se requiere los cuerpos negros o como parte del sistema, elevando a niveles prohibitivos el costo del equipo y adems se complicar el a a sistema de adquisicin. o
(b) Irradiancia medida

(a) Irradiancia incidente real

2.3.2.

Mtodos basado en escenas e

Figura 2.2: Ejemplo del efecto del FPN ante una irradiancia uniforme.

Adicional a lo anterior, estos sensores sufren de otro problema, conocido como drift temporal, lo que provoca que adems los parmetros de bias y ganancia vayan variando en el tiempo, lo que implica a a calibrar el sistema peridicamente. o

Estos mtodos, hacen uso de la informacin de cada escena para poder determinar algn parmetro e o u a de correccin, a travs de un proceso iterativo, por lo cual no existe la necesidad de incorporar cuerpos o e negro al sistema de adquisicin. El problema de esto es, por una parte, dado que son algoritmos iterativos, o requieren de un m nimo de tiempo para poder ajustar sus parmetros y as calibrar la imagen. Por otro a lado, en su mayor producen el efecto de ghosting, Figura ?? , uno de los tantos problemas que existen a en esta rea del procesamiento digital de seales. a n

2.2.1.

Modelo del detector

Debido a los problemas antes mencionados, no-uniformidad de los sensores y drift temporal de los parmetros, la respuesta de cada sensor, se modela de la siguiente forma: a y(n) = a(n) x(n) + b(n), (2.1)

donde n es la variable temporal, : Irradiancia real sobre un detector IR (x()) es la irradiancia real, : Irradiancia medida desde un detector IR (y()) es la irradiancia medida, : Ganancia asociada a un 4 5

Figura 2.3: Efecto del ghosting por el algoritmo de Scribner.

(a) Imagen corregida por calibracin de dos puntos (b) Imagen corregida por el algoritmo de Scribner. o
Imagen corregida por algoritmo de Scribner

Imagen corregida por calibracion de dos puntos

50

50

Cap tulo 3

100

100

alto

alto

Algoritmo de Scribner
50 100 150 200 250 300

150

150

200

200

50

100

150

ancho

200

250

300

ancho

Dentro del amplio espectro de algoritmos que corrigen el FPN, estn los algoritmos basados a en redes neuronales, que si bien poseen diferencias entre s todos convergen en un punto de , partida, el algoritmo de Scribner. Est algoritmo utiliza intenta replicar el funcionamiento de e la retina del ojo humano, logrando un algoritmo adaptivo que permite eliminar el ruido en la imagen.

2.4. 3.1. Marco terico o

Mtodos basados en escenas e


El algoritmo propuesto por Scribner se basa en el funcionamiento de la retina del ojo humano, lo que a travs de la tcnica LMS, deriva en un modelo basado en redes neuronales. Su estructura, Figura 3.1, e e es la de una red recurrente con una capa oculta que se asemeja a la estructura de los fotoreceptores y clulas horizontales de la retina. e El modelo parte de la base que el sistema puede ser resuelto a travs de la siguiente ecuacin: e o Gij = Gij Xij (ij ) + Oij , (3.1)

2.4.1.

Mtodos basados en estad e sticas constantes

Entre los mtodos que existen para la correcin de no-uniformidad, est la tcnica de estad e o a e sticas constantes. Esta, se basa en que las estad sticas temporales(primer y segundo momento), de la radiacin o incidente para cada p xel, son iguales. Dicho de otra forma, la distribucin de la irradiacin sobre todos o o los p xeles, es la misma. Adems, este mtodo asume una distribucin normal. a e o Como es de esperarse, y al igual que otros mtodos basados en escenas, si la imagen incidente no e presenta una gran variabilidad temporal, los parmetros tienden a converger a la imagen, generando el a efecto de ghosting en los frames sucesivos.

2.4.2.

Mtodos basados en redes neuronales e

Adems de la tcnica de estasd a e sticas constantes, existen mtodos basados en redes neuronales, los e cuales basan su lgica en el funcionamiento del ojo humano, y consideran que es muy probable que un o pixel sea irradiado por la misma intensidad que sus vecinos. Al igual que el mtodo basado en estadisticas constantes, este se genera un efecto de ghosting, el cual e se puede ver directamente asociado con la tasa de aprendizaje, la cual a su vez determina la velocidad de convergencia del algoritmo, generando un conicto entre tener tener un aprendizaje acelerado y una imagen sin ghosting. As como estos algoritmos sufren del efecto de ghosting, lo hacen otros algoritmos basados en escenas. Esto se debe a que estos son algoritmos adaptivos, y de una u otra forma estn aprendiendo de la a informacin presente en la imagen. El hecho de poder limitar el nivel de aprendizaje de un algoritmo o sobre una imagen, permitir eliminar el efecto de ghosting, tanto en el caso de algoritmos basados en a redes neuronales, como en algoritmos basados en estad sticas constantes. Figura 3.1: Estructura de la red neuronal propuesta por Scribner.

Donde F (b) F (a). Teniendo en cuenta la ecuaciones (3.8), (3.7) y (3.12), las ecuaciones que permiten ajustar iterativamente los parmetros de G y O son: a Gn+1 = Gn 2 X(Y F ), On+1 = On 2 (Y F ), (3.9) (3.10)

donde Yij (t) es la imagen corregida (idealmente la irradiancia real), Xij (ij ) es la salida corrupta de o cada detector ij en un arreglo bidimensional. ij (t) es la irradiancia real sobre los detectores en funcin a del tiempo discreto, y Gij y Oij son los parmetros NUC de ganancia y bias respectivamente. Estos ultimos, son los parmetros que el algoritmo deber estimar. a a Vale mencionar que la ecuacin (3.1), deriva del modelo del detector expresado por la ecuacion (2.2), o donde la primera ecuacin es el modelo inverso de la segunda. o Por su parte, Scribner considera que existe una alta probabilidad que dentro de una vecindad de un pixel, la irradiacin sea la misma. Por lo anterior, es razonable considerar que la irradiancia en un p o xel, es aproximadamente el promedio de la irradiancia que reciben sus vecinos. Por consecuente, se dene el promedio de la vecindad, en funcin de la Figura 3.1, como: o
i+v j+v

donde es el tamao del paso (o tasa de aprendizaje en trminos de redes neuronales), el cual debe ser lo n e sucientemente pequeo para asegurar la estabilidad del algoritmo; n es la variable de tiempo discreto, n y en particular para el algoritmo es el nmero de frame. u

Ykl 1 Yij , (3.2)

3.2.

Modicacin al algoritmo o

Fij =

k=iv l=jv (2v + 1)2

donde v es el radio de la vecindad.Scribner propone que F sea la imagen deseada, por lo cual considerando lo anterior, y simplicando la notacin, se puede reescribir la ecuacin (3.2) como: o o F G X + O. (3.3)

Dentro de las mejoras que se han aplicado sobre el algoritmo de Scribner, hay una que no altera la escencia de las ecuaciones, y tiene que ver con el cclulo de la referencia, F . Analizando la ecuacin 3.2, a o propuesta por Scribner, se puede notar que dentro clculo de la media, se excluye el p a xel central. Basndose en [??], se redene F , incluyendo el p central, lo que resulta en: a xel
i+v j+v

Ykl Fij =
k=iv l=jv (2v + 1)2

Por lo tanto, teniendo en cuenta que : Funcin que clcula la media dentro de una vecindad (F ) es la o a imagen deseada, e Y es la imagen corregida, se dene el siguiente de la correccin de la siguiente forma: o E(G, O) = (Y F ), E(G, O) = (G X + O F ). (3.4)

(3.11)

Esto introduce una nueva constante a travs de E2 , por lo que el lo denen estas nuevas ecuaciones: e = 2X (3.12) (3.13) E2 G E2 O 1 (2v + 1)2 (G X + O F ), (2v + 1)2 1 (2v + 1)2 (G X + O F ). = 2 (2v + 1)2

Con el proposito de poder minimizar el error a travs de tcnicas conocidas, se redene la funcin e e o de error como: E2 (G, O) = (G X + O F )2 , (3.5)

Pese a lo anterior, y dado que el radio de la vecindad v, es constante, la modicacin no debiera o incidir mucho, dado que esta nueva constante es absorvida por la tasa de aprendizaje . Finalment,e y con el afn de mantener la coherencia, se denir las ecuaciones (3.9) y (3.10) utilizando una tasa de a a aprendizaje igual a , que se dene como: = lo que resulta en: Gn+1 = Gn 2 X(Y F ), On+1 = On 2 (Y F. (3.15) (3.16) 1 (2v + 1)2 , (2v + 1)2 (3.14)

la cual permite utilizar la tcnica de LMS para resolver el problema. Este mtodo, minimiza el error e e cuadrtico a travs del mtodo de mximo descenso (method of steepest descent), para lo cual se requiere a e e a obtener la direccin del mximo descenso a travs del gradiente de : Funcional a optimizar por el algoritmo o a e de Scribner (E2 (G, O)), lo que resulta en:

E2G =

(3.6) (3.7)

E2O =

E2 = 2 X(G X + O F ), G E2 = 2(G X + O F ). O

Por otro lado, se tiene que el mtodo de mximo descenso plantea que para una funcion genrica, e a e F (X), la direccin en la que esta disminuye ms rpido, partiendo de un punto a, es la direccin del o a a o gradiente negativo, es decir F (a), lo que resulta en: b = a F (a), 8 (3.8)

3.3.

Evaluacin del algoritmo o


Debido a los resultados presentados en distintos trabajos [?], y dado que el algoritmo se basa en redes neuronales(algoritmo adaptivo), se hace necesario un anlisis que permita obtener un mejor resultado. a Para ello, se deben tener en cuenta los siguientes puntos: 9

Tamao de ventana de vecindad. n

Tabla 3.2: Resultados de las simulaciones del algoritmo de Scribner sobre el video 1.

Tasa de aprendizaje.

Precisin. o

Para lo anterior, arbitrariamente se deni un conjunto de parmetros que permitir evaluar el o a o algoritmo, mostrados en la Tabla 3.1.

Tabla 3.1: Conjunto de parmetros para evaluar el algoritmo de Scribner mediante simulacin. a o Tasa de aprendizaje Ganancia 1x109 1x108 1x108 1x108 Tama os de ventana n 3, 7, 15, 21 3, 7, 15, 21 3, 7, 15, 21 3, 7, 15, 21 double double double double Precisin o

Tasa de aprendizaje Bias 1x109 4x103 1x101 5x101

Cabe mencionar que la evaluacin del algoritmo se realiz utilizando el o o ndice PSNR, el cual ha sido utilizado en diversos trabajos.Adems, vale destacar que para la simulacin se adquiriern videos de a o o 3000 cuadros en formato digital, capturados por la cmara CEDIP Jade UC33X, cuya resolucin es de a o 320x240 p xeles.

T. de aprendizaje Bias 1x109 4x103 1x101 5x101 1x109 4x103 1x101 5x101 1x109 4x103 1x101 5x101 1x109 4x103 1x101 5x101

T. de aprendizaje Ganancia 1x109 1x108 1x108 1x108 1x109 1x108 1x108 1x108 1x109 1x108 1x108 1x108 1x109 1x108 1x108 1x108

Tamao n ventana 3 3 3 3 7 7 7 7 15 15 15 15 21 21 21 21

Mx.P SN R a double 58,5789 60,7850 61,1261 62,3596 59,9325 68,5196 69,9355 75,1227 63,7932 78,4614 80,6809 87,4445 67,7711 81,5961 83,9101 90,6361

P SN R double 58,2636 59,6362 59,8393 60,5366 59,1289 63,9876 64,7743 67,6708 61,3173 73,4760 75,2358 80,8989 63,5218 76,5323 78,4180 84,0012

3.4.

Resultados

Tabla 3.3: Resultados de las simulaciones del algoritmo de Scribner sobre el video 2. T. de aprendizaje Bias 1 109 4 103 1 101 5 101 1 109 4 103 1 101 5 101 1 109 4 103 1 101 5 101 1 109 4 103 1 101 5 101 T. de aprendizaje Ganancia 1 109 1 108 1 108 1108 1 109 1 108 1 108 1 108 1 109 1 108 1 108 1 108 1 109 1 108 1 108 1 108 Tamao n ventana 3 3 3 3 7 7 7 7 15 15 15 15 21 21 21 21 PSNR mx. a double 60,6827 60,6978 61,0305 60,6228 59,9542 65,2628 66,1703 69,4479 62,7504 68,1041 69,4440 74,1206 65,4102 68,8173 70,3756 76,1171 P SN R double 59,4183 59,4102 59,0631 59,5434 59,1812 62,3032 59,0631 61,7643 61,1341 60,9227 61,7713 61,0970 62,7204 59,3411 60,3755 60,6002

Para el anlisis se procesaron 2 videos de 3000 cuadros, para lo cual se utiliz el software MATLAB. a o Los resultados, en terminos de PSNR se presentan en las Tabla 3.2 y Tabla 3.3. Por su parte, en las Figura 3.2 y Figura 3.3 se muestra la evolucin del PSNR al aplicar el algoritmo o de Scribner, utilizando distintas tasas de aprendizaje, sobre ambos videos. Por otro lado, en las Figura 3.4 y Figura 3.5 se muestran imgenes de los resultados obtenidos por a Scribner, adems de imgenes del video original(con ruido) y el video corregido con calibracin de dos a a o puntos, para ambos videos.

10

11


85

80

bias
70 70

PSNR v/s Cuadros = 4x10e(3) / gain = 1x10e(8)


bias bias bias

PSNR v/s Cuadros = 1x10e(1) / gain = 1x10e(8)

PSNR v/s Cuadros = 4x10e(3) / gain = 1x10e(8)

PSNR v/s Cuadros = 1x10e(1) / gain = 1x10e(8)

75

80 65

65

75 60

60

70 70 55 55

PSNR(db)

PSNR(db)

PSNR(db)

65

50

60 60 PSNR Scribner PSNR c/ruido 1500 2000 2500 3000 55 0 500 1000 PSNR Scribner PSNR c/ruido PSNR Scribner PSNR c/ruido 1000 45

PSNR(db)
50 0 500 1500 2000 2500 3000 45 0 500

65

PSNR Scribner PSNR c/ruido

55

500

1000

Cuadros (n)

Cuadros (n)

1500

2000

2500

3000

40

Cuadros (n)

1000

Cuadros (n)

1500

2000

2500

3000

(a) Subgura 1

90

(b) subgura 2
bias
63

(a) Subgura 1

bias

(b) subgura 2

100

64

bias

PSNR v/s Cuadros = 1x10e(9) / gain = 1x10e(9)

PSNR v/s Cuadros = 5x10e(1) / gain = 1x10e(8)

PSNR v/s Cuadros = 1x10e(9) / gain = 1x10e(9)

bias

PSNR v/s Cuadros = 5x10e(1) / gain = 1x10e(8)

63 85 61 62

50

62 80 60

61 75 59

60

50

PSNR(db)

PSNR(db)
70 58

PSNR(db)

PSNR(db)

59

58 65 57

100

57 60 56 PSNR Scribner PSNR c/ruido 1500 2000 2500 3000 55 0 500 1000 PSNR Scribner PSNR c/ruido

150 PSNR Scribner PSNR c/ruido


1000

56

PSNR Scribner PSNR c/ruido

55

500

1000

Cuadros (n)

Cuadros (n)

1500

2000

2500

3000

55 0 500

Cuadros (n)

1500

2000

2500

3000

200

500

1000

Cuadros (n)

1500

2000

2500

3000

(c) subgura 3

(d) subgura 4

(c) subgura 3

(d) subgura 4

Figura 3.2: Evolucin del PSNR utilizando Scribner sobre el video 1, para distintas tasas de aprendizaje. o

Figura 3.3: Evolucin del PSNR utilizando Scribner sobre el video 2, para distintas tasas de aprendizaje. o

12

13

Num. Frame = 2700 Imagen corregida con Scribner = 4x10e(3) / gain = 1x10e(8) bias

Num. Frame = 2700 Imagen corregida con Scribner = 1x10e(1) / gain = 1x10e(8) bias

Num. Frame = 2700 Imagen corregida con Scribner = 4x10e(3) / gain = 1x10e(8) bias

Num. Frame = 2700 Imagen corregida con Scribner = 1x10e(1) / gain = 1x10e(8) bias

50

50

50

50

100

100

100

100

150

150

150

150

200

200

200

200

50

100

150

200

250

300

50

100

150

200

250

300

50

100

150

200

250

300

50

100

150

200

250

300

(a)
Num. Frame = 2700 Imagen corregida con Scribner = 5x10e(1) / gain = 1x10e(8) bias Num. Frame = 2700 Imagen corregida con Scribner = 1x10e(9) / gain = 1x10e(9) bias

(b)

(a)

(b)
Num. Frame = 2700 Imagen corregida con Scribner = 5x10e(1) / gain = 1x10e(8) bias

Num. Frame = 2700 Imagen corregida con Scribner = 1x10e(9) / gain = 1x10e(9) bias

50

50

50

50

100

100

100

100

150

150

150

150

200

200

200

200

50

100

150

200

250

300

50

100

150

200

250

300

50

100

150

200

250

300

50

100

150

200

250

300

(c)
Num. Frame = 2700 Imagen con ruido

(d)

(c)
Num. Frame = 2700 Imagen calibrada con referencia

(d)
Num. Frame = 2700 Imagen con ruido

Num. Frame = 2700 Imagen calibrada con referencia

50

50

50

50

100

100

100

100

150

150

150

150

200

200

200

200

50

100

150

200

250

300

50

100

150

200

250

300

50

100

150

200

250

300

50

100

150

200

250

300

(e)

(f)

(e)

(f)

Figura 3.4: Escenas del video 1: original, corregido con calibracin de dos puntos y con el algoritmo de o Scribner.

Figura 3.5: Escenas del video 2: original, corregido con calibracin de dos puntos y con el algoritmo de o Scribner.

14

15

3.5.

Anlisis a

Cap tulo 4

Descripcin del hardware o


El objetivo que persiguen los SoC(System on a Chip) es proveer un dispositivo completamente funcional por si slo. De esta manera, se logran reducir los costos del sistema, adems de o a consumos de potencia realmente bajos. Lo anterior resulta en un equipo altamente portable, y de tamao reducido. Por su parte, el sistema que se est desarrollando persigue los mismos n a objetivos, por lo cual el sistema debe considerar tanto la adquisicin del video que se va o a corregir, como la visualizacin que permitir de cierta forma corroborar los resultados o a obtenidos por el algoritmo.

4.1.

Sistema completo

El sistema completo, consta de 4 partes: Captura de video, digitalizacin de video, procesamiento o de video, y visualizacin del video. El diagrama bsico de conexin se puede ver en Figura 4.1 , que o a o presenta de manera bsica la forma en que conectan el hardware involucrado. Los dispositivos que lo a componenen son: Cmara infrarroja Jade UC33X, fabricada por la empresa CEDIP (ahora FLIR). a Tarjeta de adquisicin de video VDEC1, desarrollada por Digilent inc.. o Tarjeta de desarrollo Nexys 2 (Spartan-3E 500k), desarrollada por Digilent inc.. Tarjeta de desarrollo Nexys 2 (Spartan-3E 1200k), desarrollada por Digilent inc.. Monitor VGA.

En la Tabla 3.2 y la Tabla 3.3, considerando la PSNR media y la PSNR mxima, se puede ver que a para las distintas tasas de aprendizaje, as como para los distintos tamaos de vecindad, los resultados n dieren. Vale aclarar que las variaciones que se hicieron sobre la tasa de aprendizaje de la ganancia, fueron menores que las realizadas sobre la tasa de aprendizaje del bias, debido a que el sistema con tasas o o de aprendizaje de ganancia > 1 108 , no convergi, resultando en una correccin con un nivel de ruido superrior al ruido incluido en el video original. Pese a los resultados obtenidos por Scribner en ??, donde se indica y utiliza una tasa de aprendizaje igual para ambos parmetros, los resultados durantes las pruebas para los distintos tamaos de ventana, a n y en ambos videos, mostraron mejores resultados al momento de aumentar la tasa de aprendizaje del bias, sin necesariamente modicar la tasa de aprendizaje de la ganancia. Las tasas de aprendizaje que reejarn mejores resultados, considerando como medida la P SN R y max(PSNR), son bias = 5 101 o y gain = 1 108 . Por su parte, en las grcas mostradas en la Figura 3.2 , se ven avalados los resultados presentes en a la Tabla 3.2 y la Tabla 3.3. Las tasas bias = 5 101 y gain = 1 108 son las que presentan una convergencia con un P SN R ms alto. No obstante, estas tasas tambin presentan las mayores variaciones, a e lo que podr atribuirse al efecto del ghosting o sobre-aprendizaje, lo que tiene directa relacin con la a o dinmica del video corregido. a Por otra parte, las curvas mostradas en la Figura 3.3 , tienen un comportamiento ms radical. Pese a a que los peores resultados, segn la tabla 3.3, son los presentes en la Figura 3.3 , estos muestran un u comportamiento mucho ms estable manteniendo la imagen con menores niveles de ruido que la imagen a original, a diferencia de las tres imgenes, cuyo nivel de ruido supera con creces al de la imagen original. a Desde un punto de vista ms subjetivo, en la Figura 3.4 y Figura 3.5 se aprecia el efecto de ghosting a en las imgenes (a), (b) y (d), siendo la unica excenta de este problema la imgen (c). Lo anterior esta a a directamente relacionado con las tasas de aprendizaje, es decir que las correcciones resultantes de menores tasas de aprendizaje fueron las que presentaron menores niveles de ghosting. Esto ultimo se aprecia de mejor forma al comparar las imgenes con sus videos corregidos con calibracin de dos puntos. a o Cabe mencionar que en los resultados, se distinge en la parte superior izquiera de las imgenes, una a zona ms clara que el resto de la imagen. Esto es un reejo de lo que se ve en las Figura 3.4 y Figura 3.5 a donde en la imagen con ruido tambin se ve ms clara la parte superior izquierda. Este problema, se ve e a solucionado de manera ms eciente al utilizar tamaos de ventana de vecindad mayores, o al prolongar a n el tiempo de funcionamiento del sistema.

3.6.

Conclusiones

De este anlisis se extrae el hecho de que a mayor tamao de ventana, mejor es la correccin lograda. a n o Por lo anterior, cualquier implementacin de este algoritmo debe tener considerado incluir en su diseo o n implementar un tamao de vecindad lo ms cercana a la utilizada por Scribner, que fue 21x21. No n a est dems mencionar que un mayor tamao de ventana implica un mayor nmero de operaciones, a a n u lo cual para algunas plataformas puede ser un problema, por lo cual debe ser debidamente estudiado durante el diseo del sistema. n Por su parte, la tasa de aprendizaje juega un rol sumamente importante, y como se vio en las pruebas, esta dene el grado de correccin, as como el nivel de ghosting presente en la imagen corregida. Por lo o anterior, y debido a la diferencia en los resultados frente a distintos videos, es que la tasa de aprendizaje no puede quedar ja y debe permitir ser ajustada en funcin de las condiciones de operacin. o o

16

17

digitalizacin de video

Jade UC33X

VDEC1

Nexys 2 500K

captura de video

Nexys 2 1200K Monitor VGA

procesamiento de video visualizacion de video

Figura 4.1: Diagrama general de los componentes hardware utilizados.

Figura 4.3: Tarjeta decodicadora de video VDEC1, de Digilent Inc. [15].

4.2.

Descripcin del hardware o

4.2.1.

Cmara Infrarroja a

Por su parte,las especicaciones del integrado [16] establecen que este es capaz de decodicar video en formato NTSC, PAL y SECAM, y tiene la capacidad de auto-deteccin. Adems posee convertidores o a A/D de 10 bits que trabajan a una frecuencia de 54Mhz. El formato del video de salida se dene bajo la norma ITU-R BT.656, a una resolucin de 720x480 p o xeles, espacio de color YCrCb y sub-muestreo de cominancia 4:2:2. Adems cuenta con distintos modos de operacin, los cuales pueden ser congurados a o mediante un bus I2C.

El dispositivo utilizado para capturar imgenes IR es la cmara Jade UC33x,Figura 4.2 , fabricada a a por la empresa CEDIP, y est disponible en el Laboratorio de Optrnica del DIE de la Universidad de a o Concepcin. Este equipo, posee un arreglo de 320x240 pixeles basado en un microbolmetro altamente o o sensible[14]. Algunas ventajas de los microbolmetros es que el arreglo no necesita refrigeracin, son de o o bajo costo y de bajo consumo. Esta cmara tiene la capacidad de ser conectada y controlada por un a computador, utilizando el softare y los drivers provisto por el fabricante. Adems, posee salida de video a anlogo (NTSC o PAL) mediante un conector BNC, y salida de video digital de 14 bits a travs de un a e puerto USB 2.0.

4.2.3.

Tarjeta de desarrollo Nexys 2

La tarjeta Nexys2[19] es una plataforma basada en una FPGA de la serie Spartan-3E de Xilinx[20]. Posee un puerto USB 2.0 para programacin y alimentacin. 16 MB de memoria RAM y FLASH, y o o diversos puertos de entrada y salida, entre ellos puerto serie, VGA, Hirose FX-2 de alta velocidad y 4 puertos de 12 pines PMOD. Adems cuenta con componentes como LEDs, interruptores y visores de 7 a segmentos. Para su programacin, Xilinx provee la suite ISE, que permite congurar la tarjeta utilizando lenguaje o Verilog, entre otros. FPGA Spartan-3E 500k y 1200k Las FPGA en general son chips de bajo costo que permiten implementar circuitos lgicos y a su vez o son recongurables, lo que posiciona a estos dispositivos como una buena alternativa a los ASICs para prototipos, e incluso para un producto nal. Su capacidad de reconguracin adems permite mejorar o a el diseo sin necesariamente cambiar el hardware, algo imposible en los ASICs. n En particular, los IC de la serie Sparta-3E basan su arquitectura en una serie de bloques basicos interconectables entre s Espec . camente, los bloques bsicos son: a

Figura 4.2: Cmara IR Jade UC33x, fabricada por la empresa CEDIP [14]. a

4.2.2.

Tarjeta de adquisicin o

CLBs (Congurable Logic Blocks): Bloques compuestos por 4 slices, que a su vez contienen dos LUTs(Look-Up Tables), mediante las cuales se pueden implementar funciones lgicas y almacenar o datos. Cada slice adems posee multiplexores, registros, y en algunos casos memoria RAM y a registros de desplazamiento. IOBs (Input/Output Blocks): Bloques que controlan el ujo de datos entre los pines de entrada y salid, y los elementos lgicos internos del dispositivo. Estos soportan ujo bidireccional y trio estados., adems de distintos niveles de voltajes congurables. a

Para poder decodicar y digitalizar el video proveniente de la salida anloga de la cmara infrarroja, a a se utiliz al tarjeta decodicadora VDEC1 de Digilent Inc., Figura 4.3 , la cual no es ms que el circuito o a integrado ADV7183B de Analog Devices[15], y la circuiteria necesaria para el funcionamiento de este. Est posee entradas de video compuesto, S-Video y por componentes (YPrPb). Adems posee un conector a a Hirose FX-2, compatible con la tarjeta de desarrollo Nexys 2. 18

19

BRAMs (Block RAMs): Bloques de memoria RAM de hasta 18Kb cada uno. Presentan conguraciones de doble puerta, que permiten lectura y escritura simultnea, adems de soportar frecuencias a a de reloj distintas.

DCMs (Digital Clock Managers): Bloques que permiten el manejo de las seales de relo, que dentro n de sus funcionalidades permite multiplicar, dividir, desfasar y distribuir la seales de reloj. n

Multiplicadores: Bloques que permiten multiplicar dos nmeros binarios de 18 bits con signo. u

Cap tulo 5

La arquitectura bsica de estos IC, se aprecia en la Figura 4.4 , donde se aprecia en parte la distria bucin de sus componentes dentro del integrado. o A diferencia de otros dispositivos, como los microcontroladores, estos no se programan mediante instrucciones, si no mediante lgica. Esto se logra mediante interruptores que interconectan los distintos o componentes, los cuales se conguran al momento de cargar un archivo al dispositivo. Ambos dispositvos utilizados en este trabajo, Spatartan-3E 500k y Spartan-3E 1200k, poseen una arquitectura similar, y su diferencia principalmente radica en el n mero de componentes que estas poseen. u Los detalles de cada uno de estos integrados, se presentan en la Tabla 4.1.

Consideraciones de dise o n
Pese a las mltiples prestaciones que ofrece la FPGA, existen elementos que limitan el rendiu miento, como lo son la memoria PSDRAM y la memoria BRAM. Ambas memorias, limitan y a la vez denen las condiciones bajo las cuales deber operar el algoritmo, condicionando a la velocidad por un lado(PSDRAM), y por otro la capacidad para almacenar datos (BRAM). Por su parte el rendimiento del algoritmo, se ve condicionado a la precisin que pueda llegar o a implementarse en el sistema, la cual se debe ajustar a los recursos de la FPGA.

5.1.

Precisin o

Como se mencion durante el anlisis del algoritmo, la precisin es importante para el rendimiento o a o del algoritmo. Por lo anterior, es necesario establecer los puntos en los cuales pudiera verse limitado esta caracter stica.

5.1.1.

Punto jo v/s Punto otante

Figura 4.4: Arquitectura de la familia de FPGAs Spartan-3E, de Xilinx [20].

Tabla 4.1: Resumen de atributos de las FPGAs Spartan-3E 500K y Spartan-3E 1200K Spartan-3E 500k 34 73 Kb 360 Kb 20 4 Spartan-3E 1200k 46 136 Kb 504 Kb 28 8

Componentes CLBs RAM distribuida Block RAMs Multiplicadores DCM

Primero, es necesario establecer que tipo de aritmetica se utilizar en el sistema, ya sea punto jo o a punto otante, para lo cual se analizarn ambas representaciones. a Por una parte, la utilizacin de punto jo simplica bastante las operaciones, dado que su implemeno teacin es directa y requieren de poca lgica Para la utilizacin de punto jo es necesario saber el rango o o o sobre el cual se movern los valores, y adems se debe tener una nocin del efecto que tienen los bits a a o decimales, en caso que se utilicen. En su contraparte, el punto otante requiere mayor lgica para implementar las operaciones, y estas o son dicilmente inferidas por el sintetizador, por lo que se debe disear el sistema. Al contrario del n punto jo, las limitantes del rango y la precisin son mucho ms exibles, alcanzando rangos mucho ms o a a amplios con una cantidad similar de bits. Considerando lo anterior, la utilizacin de una unidad de punto otante ofrece una mejor alternativa o desde el punto de vista de la exibilidad, puesto que las tasas de aprendizaje podrn alcanzar niveles a menores, as como la evolucin del aprendizaje podr ser ms lenta. Por otro lado, en caso de que la o a a utilizacin de recursos de estas unidades exceda los l o mites impuestos por el hardware a utilizar, esto no es restrictivo en su implementacin, debido a que modicaciones en el dise no permitir optimizar la o an utilizacin de recursos de modo que la implementacin se adecue a los componentes disponibles. o o

20

21

5.1.2.

Uso de memoria

En este punto, hay que tener en cuenta que en la tarjeta Nexys2 existen practicamente tres tipos de memoria disponible, que son: ciclos = t freloj , ciclos = 31, 741s 80M hz, ciclos 2539

En base a [12], se tiene que el tiempo disponible para el procesamiento de una linea es 31,741s. Por lo anterior, y considerando la frecuencia mxima a la cual opera la memoria externa, se tiene que la a cantidad de ciclos disponible para el periodo de tiempo dado es:

Memoria Block RAM.

Memoria RAM distribuida.

(5.1)

Memoria PSDRAM externa.

Por su parte, el nmero de ciclos que toma leer y escribir los parmetros, para las distintas precisiones, u a se resume en la tabla 5.2. Tabla 5.2: Ciclos de lectura/escritura de parmetros bias y ganancia. a Precisin o 16 bits (half-oat) 32 bits (oat) 64 bits (double) N. de datos 319 319 319 N. bits 20416 40832 81664 N. palabras(16 bits) 1276 2555 5104

De lo anterior, se puede ver que la cantidad de bits adecuada para poder trabajar con la memoria externa, es 16 bits, dado que requiere 1276 ciclos para realizar las transacciones correspondientes, y elnmero de ciclos disponible es de 2539, quedando ms de la mitad del tiempo libre. En funcin de u a o lo anterior,y con el objetivo de aumentar la precisin y aprovechar el tiempo disponible, se propone la o utilizacin de un punto otante no estandar de 24 bits. El nmero de ciclos que demora la lectura y o u escritura de los parmetros de 24 bits es: a ciclos = (npixeles nparametros ntx/rx bitsparametros ) bitspalabra , ciclos = (319 2 2 24) 16, ciclos = 1914 (5.2)

La memoria Block RAM son bloques de memoria embebidos en la FPGA, cuyos tamaos estn n a predenidos. Estas disponen de una doble compuerta que permite la lectura y escritura a distintas velocidades de reloj, y adems permite diversas razones de aspecto entre el tamao y cantidad de datos, a n las cuales deben ser denidas en el diseo. n La memoria RAM distribuida hace referencia a los registros disponibles dentro de algunos slices, las cuales se interconectan para fomar una memoria de mayor tamao. Esta permite denir de manera n ms arbitraria el tamao de la memoria, y otorga mayor exibilidad a la hora de denir una razn de a n o aspecto. Por otro lado, dado que es necesario congurar la interconexin entre los distintos bloques para o formar una memoria de mayor tamao, el tiempo de s n ntesis del sistema se extiende bastante, respecto al tiempo que toma el utilizar una block RAM. Finalmente, est la memoria PSDRAM externa, que consiste en un IC provisto por la tarjeta de a desarrollo Nexys2, la cual tiene una capacidad de almacenamiento de 16 Mbit, que es notablemente mayor a las memoria block RAM y Ram distribuida. Adems, tiene un bus de datos de 16 bits y el a fabricante garantiza una velocidad de acceso de hasta 80[Mhz]. Considerando los distintos datos que se preveen para almacenar, es muy probable que se haga un extenso uso de la memoria block RAM, y adems se utilice la memoria PSDRAM externa. Por lo anterior, a es necesario conocer las limitantes de tiempo y los datos que se almacenarn, para poder denir el lugar a donde se guardarn los datos. a

5.1.3.

Anlisis y conclusiones a

Los resultados muestran que es viable almacenar datos de 24 bits en la memoria PSDRAM. De los 24 bits, arbitrariamente se dene 1 bit para signo, 6 bits para exponente y 17+1 bit para la mantisa.

Teniendo en cuenta los puntos a considerar para la eleccin de la precisin a utilizar en este algoritmo, o o es necesario evaluar si es viable la implementacin de operaciones de punto otante. Para ello es necesario o primero denir las variables que se almacenarn en memoria. a Dado que el algoritmo funciona en linea, lo unico que realmente requiere almacenamiento en el tiempo son los parmetros bias y ganancia. Considerando los datos presentados en al Tabla 5.1, se ve que es a inviable almacenar los parametros en block RAM, por lo cual se debe utilizar la memoria PSDRAM externa para esta tarea.

5.2.

Tama o de ventana n

Tabla 5.1: Utilizacin de memoria por los parmetros bias y ganancia o a 16 bits (half-oat) 306, 240 kbits 32 bits (oat) 612, 480 kbits 64 bits (double) 1224, 960 kbits

Parmetros a bias y ganancia

Considerando la evaluacin del algoritmo de Scribner, se puede ver que el tamao de la ventana o n si tiene un efecto sobre el resultado de la correccin. As mismo, los resultados muestran que pese a o variar los tamaos de la ventana, todas las correccines siguen evolucionando pero a distintas tasas. En n o vista de que los resultados a menores tasas de aprendizaje son razonablemente buenos, y dado que los recursos en la FPGA son limitados, es vlido y necesario seleccionar un tamao de ventana que cumpla a n con las especicaciones. En vista del dise o propuesto, se determino que la utilizacin de una ventana n o 7x7 requiere de 26 Block RAM, de un total de 28, ajustandose a los recursos provistos por la FPGA.

Por otro lado, es necesario considerar el tiempo que toma guardar y leer los parmetros desde la a memoria, y adems el tiempo disponible para poder hacerlo. a

5.3.

Tratamiento de los bordes de la ventana


La implementacin del ltro de media consiste en calcular el promedio dentro de la vecindad de un o p xel, originando un problema en los cuatro bordes de la imagen. Como se aprecia en la Figura 5.1 , 23

22

parte de los valores para poder calcular la media en los bordes, son desconocidos. Este problema se puede abordar de distintas formas, como por ej:
20 20 40 40 60 60

rellenar con ceros: que consiste simplemente en rellenar con ceros los p xeles que estan fuera de la imagen, provocando una imagen ltrada con los bordes oscurecidos Figura 5.2a .
80 80 100 100 120 120

extender con la utima/primera l nea: que consiste en replicar los primeros o ultimos p xeles, la cantidad de veces que sea necesario Figura 5.2b .
20 40 60 80 100 120 140 160 180 20 40 60

80

100

120

140

160

180

(a) Imagen ltrada rellenando los bordes externos con ceros.

(b) Imagen ltrada que replica el borde sobre los bordes externos

rellenar simetricamente: que consiste en replicar simetricamente los p xeles de los bordes Figura 5.2c .
20 20 40 40 60 60

? ? ?
120

? ? ? ? ? ? ?
20 40 60 80 100 120 140

? ? ? ? ? ?
100

? ? ? ?
80

80

? ? ? ? ?

100

120

160

180

20

40

60

80

100

120

140

160

180

(d) Imagen original

(c) Imagen ltrada rellena replicando simtricamente los bordes externos e

Figura 5.2: Eectos de los distintos padding en los bordes de la imagen, al aplicar el lotr de media Arbitrariamente, y en base a resultados visuales, se seleccion la tercera tcnica, que es rellenar o e simtricamente los bordes fuera de la imagen. e

Figura 5.1: Problema presente en los bordes de la imagen, para el clculo de la media a

5.4.

Divisin en el algoritmo o

Una de las tareas complejas en terminos de implementacin en FPGA, son las divisiones. Esto o es debido a que hace un extenso uso de recursos, y en particualar el integrado utilizado para este trabajo no posee hardware embebido que facilite la tarea. Pese a lo anterior, la situacin no se vuelve o tan cr tica cuando se trabaja con valores constantes, y en algunos casos se puede convertir en una mltiplicacin. Lo anterior debe ser considerado si se desea implemetar la divisin, pero en este caso el u o o algoritmo permite abordar el problema desde otra perspectiva, obviando esta operacin. Considerando o las ecuaciones principales del algoritmo (3.11), (3.15) y (3.16), y luego ciertos arreglos algebraicos, se tiene que las ecuaciones que permiten ajustar los parmetros son: a Gn+1 = Gn 2 (5.3) (5.4) x(y 49 f 49), 49 On+1 = On 2 (y 49 f 49), 49 por lo tanto, el clculo de la media resulta ser: a
i+3 j+3

ykl fij 49 =
k=i3 l=j3

49 25

49,

24

fij 49 = ykl
k=i3 l=j3

i+3

j+3

(5.5)

Cap tulo 6

Implementacin del sistema o


Hasta el d de hoy, el diseo de hardware a evolucionado bastante, considerando que existen a n lenguajes como los VHDL o Verilog, los que simplican bastante la tarea al momento de disear un sistema. As mismo, plataformas como las FPGA, permiten la implementacin de n o prototipos e incluso diseos nales, facilitando la tarea de tabajar con sistemas digitales. Lo n anterior por si solo, no es mucho si no fuera por la ayuda de los software CAD, los que cada vez incorpora ms funcionalidades, donde gran parte del diseo lo inere la computadora. a n

6.1.

Sistema de adquisicin o

Debido a las caracter sticas que posee la cmara disponible para este trabajo, se requiere de un a sistema de adquisicin de video que permita digitalizar la imagen y adems reducir en tamao. Para o a n lograr lo anterior, se utiliz el trabajo realizado por los estudiantes Javier Contreras y Roberto Ramirez, o adems del trabajo realizad por Juan Pablo Moreno y el autor de este informe. La realizacin de este a o o sistema consta de dos etapas: Digitalizacin del video proveniente de la cmara Jade UC33X, desarrollado por Juan Pablo Moreno o a y el autor de este informe. Reduccin de la resolucin del video, desarrollado por Javier Contreras y Roberto Ram o o rez.

6.1.1.

Digitalizacin del video o


En esta etapa, como se detalla en [10] y [11], se implement un sistema que digitaliza el video o anlogo, en formato NTSC, proveniento de la cmara Jade UC33X. Lo anterior, permite obtener un a a video totalmente manipulable por la tarjeta de desarrollo Nexys 2. Debido a las especicaciones de la cmara, mencionadas anteriormente, se requiere implementar un sistema que adquiera el video anlogo a a de la cmara y lo digitalice, para que este luego pueda ser leido por FPGA. Para lograr la digitalizacin, se a o utiliz la tarjeta decodicadora de video VDEC1, desarrollada por la empresa Digilent Inc., en conjunto o con la tarjeta Nexys 2. Las caracter sticas del sistema resultante son: Formato de video sujeto a la norma ITU-R BT.656[17][18] Frecuencia de pixel de 13.5Mhz. Resolucin de salida 720x480 p o xeles.

26

27

Video con desentrelazado simple (duplicado de l neas).

Seal que indica cuando es valida una l n nea impar.

Video en escala de grises.

Rango de 8 bits por pixel.

60 cuadros por segundo.

Cabe mencionar que la diferencia existente entre el video entregado por la FPGA, y el video original se debe a errores en el diseo del sistema de reduccin de video, el cual an no ha sido corregido. Por n o u lo anterior, el sistema de procesamiento se diseara en funcin de las caracter n o sticas entregadas por este sistema.

6.2.

Descripcin general del algoritmo o

Lo anterior, si bien permite trabajar con el video desde la tarjeta de desarrollo Nexys 2, incorpor un a problema, que tiene que ver con la resolucin del video. En este caso, el video capturado por la cmara o a es de 320x240 p xeles, pero la salida anloga es de 640x480 p a xeles [11]. Adicionalmente, el circuito integrado responsable de digitalizar el video expande el video an ms, resultando con una resolucin u a o de 720x480, lo que altera la razn de aspecto de 4:3 a 3:2. o Las implicancias que tiene el aumento en la resolucin del video son: o Correccin de la imagen: o yij = Gij xij + Oij . Clculo de la referencia de la red: a

El sistema de procesamiento, motivo principal de este trabajo, se desarrollo de manera modular. Como se aprecia en la Figura 6.1, se distinguen tres etapas en el algoritmo, que son:

Distorsiona el tamao del video original, cuya resolucin es de 320x240. n o

Redundancia en la informacin recibida. o

Menos tiempo libre para procesamiento.

Procesamiento del video es ms extenso. a fij =

Informacin espacial del video no es exactamente la misma que en el video original. o

i+v

j+v

ykl
k=iv l=jv (2v + 1)2

En resumen, la informacin resulante de esta digitalizacin es utilizable pero complica la tarea de o o procesar el video. Actualizacin de los parmetros: o a Gn+1 = Gn 2 x(y f ), On+1 = On 2 (y f )

6.1.2.

Reduccin de la resolucin del video o o

Con el n de solucionar los problemas que se presentan en la digitalizacin del video por si sola, se o desarroll un sistema de reduccin de video que, como se explic de manera ms detallada en [12]. Este o o a a ajusta la resolucin del video de 720x480 a un video de 319x240. o Debido a la cantidad de recursos que este sistema necesita, y adems considerando los recursos que a requiere la implementacin de la digitalizacin, es posible integrar ambos sistemas en una FPGA, siendo o o esta capaz de digitalizar el video y adems reducirlo. a A diferencia de la etapa de digitalizacin, esta no se ajusta exactamente a un estandar de video, o siendo denidas las seales como lo muestr la Figura ??. An as en cierta forma cumple con los tiempos n u , especicados en el estandar ITU-R BT.656[17][?], para una tasa de refresco de 60fps y una frecuencia de pixel de 27Mhz. Finalmente, las caracter sticas de salida de este sistema son:

Pese a que cada etapa esta bien denida, la implementacin no sigue un modelo tan directo, debido o a los instantes de tiempo en que se requiere la informacin disponible, y a las capacidades de la FPGA. o Para ello, se incorporarn mdulos que ayudan al ujo de datos. o o

Frecuencia de pixel de 27Mhz.

Resolucin de salida 319x240. o

Rango de 8 bits por p xel.

Seal de inicio de un cuadro. n

Seal de n de un cuadro. n

Seal que indica cuando es valida una l n nea par.

28

29

6.3.1.

Correccin de no-uniformidad - nuc o

adder_to_parameters

El mdulo nuc, es el encargado de la correccin misma del video de entrada, utilizando los parmetros o o a bias y ganancia descargados desde la memoria PSDRAM. Dado que los parmetros estan en punto a otante, y el video esta en punto jo, se hace necesaria la conversin del video a punto otante para o poder realizar las operaciones correspondientes con los parmetros. Adems, a modo de simplicar los a a clculos posteriores, y sin impactar en demasia el rendimiento del algoritmo, el video corregido se pasa a a punto jo nuevamente, para el clculo de la media. a Este mdulo, esta compuesto por diversos sub-mdulos, los que permiten realizar las siguientes opeo o raciones sobre los p xeles: video reg <- video input : Copia el valor del p de llegada. xel

controles de usuario

video reg fp <- video reg ; request gain <- 1 : Convierte el video de punto otante a punto jo. Adems env pulso para pedir parmetro gain. a a a mult result <- gain * video reg fp ; request bias <- 1 : Multiplica el video en punto otante por la ganancia. Adems env pulso para pedir parmetro bias. a a a add result <- mult result + bias : Suma el resultado de la multiplicacin, con el bias. o add result fixed <- add result: Convierte el resultado de la suma en punto otante,a punto jo de 8 bits y 0 bits fraccionarios. nuc video output <- add result fixed : Deriva el valor resultante de la suma, hacia la salida del mdulo. o En la Figura 6.2, se presentan un diagrama bsico de los sub-mdulos que lo componen, adems a o a de la interconexin entre ellos. En este, se distinguen las entradas y salidas del mdulo, explicadas o o detalladamente en la Tabla 6.1.

Figura 6.1: Diagrama general del sistema de procesamiento.

Con este esquema, los datos provenientes del sistema de adquisicin son recibidos por el modulo o decoupling a 27Mhz, que se encarga de aumentar la frecuencia de p xel a 80Mhz, la cual dicta la frecuencia del sistema completo. Estos datos son luego procesados por el mdulo nuc, que se encarga de la o correccin del video utilizando los parmetros de bias y ganancia entregados por el mdulo wrap psdram. o a o Luego, el video entra a la etapa que clcula la referencia de la red neuronal, que en este caso es el video a corregido pasado por un ltro de media. Para ello, el video corregido es enviado al mdulo mean line, que o se encarga de aplicar un ltro de media en el sentido horizontal, con una ventana de 7x1. A continuacin o o los datos son pasados al mdulo lines buffer, cuya funcin es regular el ujo de datos, permitiendo o retener hasta 7 lineas de datos contiguas, aadiendo un retardo de 4 l n neas, y a su vez permitiendo una salida de 7 l neas en paralelo. Finalmente estas 7 l neas de datos, o medias horizontales, son llevadas al mdulo adder 7, que se encarga de aplicar un ltro de media en el sentido vertical. o Hasta este punto se tiene la correccin de los datos, adems de la referencia para red neuronal, por o a lo que solo falta la actualizacin de los parametros. Para ello, los datos que arroja el mdulo adder 7 son o pasados al mdulo diff module, al igual que los datos provenientes de video buffer mult, de donde se o obtiene el error entre la correccin y la referencia, el cual junto con la tasa de aprendizaje dene el grado o de ajuste de los parmetros. Luego, los parmetros pasan a travs de fix2float 15bits que convierte a a e los datos de punto jo a punto otante. Finalmente, los datos llegan al mdulo update parameters, o el cual con los datos provenientes de video delay fix2float y large parameters buffer ajusta los parmetros del algoritmo para luego enviarlos a wrap psdram, que se encarga de almacenarlos en la a memoria PSDRAM.

6.3.

Correccin de la imagen o

Figura 6.2: Diagrama del mdulo nuc. o

La tarea realizada en esta etapa, consiste en corregir el vidoe de entrada, utilizando los parmetros bias y ganancia. Para esto solo se requiere de un mdulo que realice las operaciones a o correspondientes, nuc, adems de un mdulo que provea los parmetros para la correccin, a o a o wrap psdram.

30

31

Tabla 6.1: Entradas y salidas del mdulo nuc. o Tipo Entrada Descripcin o Video con ruido de 8 bits, en escala de grises. Este video es el resultante del sistema de adquisicin. o Seal que esta activa para indicar hay video valido en n video input[7:0]. Ganancia del algoritmo, la cual entra a medida que viene llegando video. Esta seal es de punto otante n de 24 bits no estandar. Seal que esta activa para indicar hay valores de gan nancia validos en gain input[23:0].

6.4.1.

Clculo de media horizontal - mean line a

Seales n video input[7:0]

valid video input

Entrada

gain input[23:0]

Entrada

Este mdulo es el primero de tres, encargados de calcular la media de la imagen. En particular, este o mdulo se encarga de calcular la media horizontal de cada l o nea. Como se explic en el cap o tulo 5, estos mdulos no realizan el clculo de la media propiamente tal, si no que suman los p o a xeles dentro de una ventana de 7x7, obviando la divisin. Para llevar a cabo la tarea de calcular la suma horizontal, este o mdulo utiliza el concepto de media mvil Esto le permite evitar sumar 7 p o o xeles para cada dato de salida, haciendo necesaria esta operacin slo una vez. Como alternativa a realizar la suma de 7 p o o xeles, este mdulo obtiene la media de cada p al sumar el resultado anterior con el p entrante y restar o xel xel el ultimo p xel de la suma anterior. Expresado de otra forma, y de manera ms clara, la ecuacin que a o describe las sumas horizontales que clcula este mdulo es: a o ,i = 1 (6.1)

valid gain input

Entrada

mean hor(i) =
j=1

j=7 buf f (j)

mean hor(i 1) + buf f (i + 6) buf f (i 1) , i > 1,

bias input[23:0]

Entrada

Bias del algoritmo, el cual entra a medida que viene llegando video. Esta seal es de punto otante de 24 n bits no estandar. Seal que esta activa para indicar que hay valores de n ganancia validos en bias input[23:0]. Seal de reloj a 80Mhz. n Video corregido con los parmetros bias y ganancia. a Esta seal es de punto jo de 8 bits enteros. n Seal que se activa para indicar la presencia de video n corregido en la se al nuc video output[7:0]. n Seal que permite pedir, a travs de un pulso, parmen e a tros bias para corregir para una linea de video.

valid bias input

Entrada

donde i es nmero del p dentro de una l u xel nea, mean hor() es la media horizontal asociada a cada p xel de un cuadro de video, y buf f () es un vector donde se reordenan los p xeles de una linea, de tal manera de simplicar el proceso para el clculo de la suma horizontal. En la Figura 6.3 se presenta de a manera ms grca la forma en que este mtodo opera. El ordenamiento que se ve en la Figura 6.3, tanto a a e en los primeros p xeles como en los ultimos, se debe al padding realizado sobre la imagen, explicado en el cap tulo anterior.

clk Salida

Entrada

nuc video output[7:0]

valid nuc video output

Salida

request bias

Salida

Figura 6.3: Diagrama bsico del funcionamiento del mdulo mean line. a o Salida Seal que permite pedir, a travs de un pulso, parmen e a tros ganancia para corregir para una linea de video.

request gain

Cabe destacar que la latencia de este mdulo es de 35 ciclos, y la frecuencia a la cual esta corriendo o es de 80Mhz.

6.4.

Clculo de la referencia de la red. a

La tarea realizada en esta etapa, consiste en aplicar un ltro de media al video corregido, lo cual se logra con la ayuda de tres mdulos: mean line , lines buffer y adder 7. El primero o se encarga de calcular la media horizontal, el segundo cumple la tarea de buer para luego entregarle los datos al tercer mdulo, que se encarga de clcular la media vertical. o a 32

Si bien la Figura 6.3, reeja la forma en que este mtodo opera, este no especica la arquitectura y/o e diseo del mismo. Es ms, en la implementacin el buer implementado slo consta de 14 elementos y n a o o funciona como lo muestra la Figura 6.5. Para lograr lo anterior, este mdulo consta de 3 entradas y 2 salidas, las cuales se detallan en la tabla o 6.2, y su funcionamiento se basa en una FSM Figura 6.4, y una unidad de procesamiento que suma y resta continuamente. De estas etapas, la FSM se encarga de ordenar los datos en el buer, y la unidad de procesamiento se encarga de calcular la salida del mdulo. o Espec camente, la FSM consta de 7 estados, entre los cuales se pueden distinguir cuatro procesos: espera inicial de la llegada de los datos, almacenamiento de los 4 primeros datos, desplazamiento hasta el antepenltimo dato, y ajuste de los ultimos 3 datos. Mientras que por su parte, la unidad de procesau

33

Tabla 6.3: Descripcin de la FSM del mdulo mean line o o Estados state = 0 Descripcin o Este es el estado incial. En este se espera a que la se al valid input n este en alto, indicando que comienza una l nea. En ese instante, el buer y el registro que almacena la suma horizontal, se igualan a cero. Aqu se almacena el primer y segundo p en el buer, en las posiciones xel 11 y 10 respectivamente.

miento suma un elemento nuevo al resultado, y resta el elemento ms viejo considerado en el resultado a previo. La FSM que rigue al sistema, esta en funcin de la variable de entrada valid input, y un contador o o que permite indicar cuando son vlidos los datos de salida a travs de valid output. Una descripcin a e ms detallada de la FSM se presenta en la tabla 6.3. a

Tabla 6.2: Entradas y salidas del mdulo mean line. o Descripcin o Video con corregido de 8 bits, en escala de grises. Esta seal provien del mdulo nuc. n o state = 2 Seal que esta activa para indicar hay video vlido en n a video input[7:0]. Seal de reloj a 80Mhz. n state = 3 Media horizontal, que en trminos prcticos es la suma e a horizontal del video sobre ventanas de 7 p xeles. Seal que se activa para indicar que la seal n n a sum output[10:0] es vlida. state = 4
valid_input=0/-

Seales n video input[7:0]

Tipo Entrada

state = 1

valid video input

Entrada

Aqu se almacena el segundo y tercer p en el buer, en las posiciones xel 12 y 9 respectivamente. El segundo p xel se vuelve a almacenar en el buer, al igual que en el estado anterior, debido al tratamiento que se realiza en los bordes de la imagen, explicado en el cap tulo 5.

clk

Entrada

sum output[10:0]

Salida

Aqu se almacena el tercer y cuarto p en el buer, en las posiciones xel 13 y 8 respectivamente. El tercer p se vuelve a almacenar en el buer, xel al igual que en el estado anterior, debido al tratamiento que se realiza en los bordes de la imagen, explicado en el cap tulo 5. Aqu se almacena el cuarto pel en la posicion 14. Al igual que los p x xeles anteriores, la manera en que se maneja los bordes de la imagen conlleva a almacenar nuevamente el cuarto p xel.

valid output

Salida

state = 5
valid_input=1/-

valid_output=0/-

En este estado es donde se van desplazando los datos del buer a medida que llegan los p xeles, logrando el proceso mostrado en la Figura 6.5. Lo anterior se realiza hasta que la seal valid input se haga cero, pasando n de esta forma al estado siguiente. state = 6

-/-/-

En este estado se ordenan los ultimos tres datos del buer, cuyo proceso es similar al que se da sobre los primeros 3 p xeles, Figura 6.5. Para pasar al estado siguiente, se utiliza la se al valid input retrasada, lo n que resulta en un periodo de 3 ciclos. state = 7 Este es un simple estado de transicin, el cual baja la seal valid output o n y retorna al estado cero.

valid_input=0/-

-/-

if(px_counter = 12) valid_output=1 -/-/valid_input=1/-

Figura 6.4: Diagrama de FSM del mdulo mean line . o

34

35

ciclo
10 7 4 2 1 9 8 6 5 3 0

estado salida

14

13

12

11

Tabla 6.4: Entradas/salidas del mdulo lines buffer. o Seales n mean input[10:0] Tipo Entrada

Descripcin o Media horizontal del video, calculado con una ventana de 7x7, y provisto por el mdulo mean line. o

valid input

Entrada

px_5

Seal que esta activa para indicar hay datos vlidos n a en mean input[10:0]. Seal provista por el sistema de adquisicin que indica n o el inicio de un cuadro de video. Seal de reloj a 80 [Mhz]. n Vector de 7 elementos de 11 bits, donde cada elemento es una l nea de media horizontal. Seal que se activa para indicar que la seal n n a mean output vector[10:0] es vlida.

px_6

start frame
px_6 px_3

Entrada

12

clk
buffer

Entrada Salida

mean output vector[76:0]

Figura 6.5: Esquema que detalla el funcionamiento de los primeros estados del mdulo mean line. o valid output Salida

6.4.2.
valid output pulse

Buer de l neas - lines buffer

Salida

Pulso que anticipa la seal valid output n

valid_output_pulse_delay=0/valid_output_pulse_delay=1/-

address_read!=N_PX_PER_LINE/ valid_output_delay=1

address_read!=N_PX_PER_LINE/ valid_output_delay=0

Continuando con el clculo de la media de la imagen, este mdulo retarda las lineas provenientes de a o a neas contiguas. Al igual que en el mdulo o mean line, y adems produce una salida que consta de 7 l o mean line, se debe tener en consideracin los bordes de la imagen, para lo cual se procede de manera similar, en el sentido de ordenar las l neas de salida. Esto permite al mdulo que recibe esta l o neas, abstraerse del formato de las l neas de datos de entrada, reduciendo la complejidad del proceso. Para lograr lo anterior, este mdulo cuenta con 3 salidas y 4 entradas, detalladas en la Tabla 6.4, o y para su funcionamiento, el mdulo consta de 2 FSM,Figura 6.6 y Figura 6.7, las cuales manejan el o ujo de datos de entrada y salida. Los datos son direccionados a las distintas memorias block rams por la FSM 2, y su lectura es controlada por la FSM 1, de tal forma que las 7 l neas puedan ser leidas en paralelo. Los detalles de las FSM 1 y FSM 2, se explican en Tabla 6.5 y Tabla 6.6 respectivamente. Cabe resaltar un punto que tiene relacin con el tratamiento de los bordes de la imagen. En funcin o o de la solucin planteada en el cap o tulo 5, los datos almacenados en los buers deben seguir un esquema similar al mostrado en la Figura 6.8, cuya diferencia radica en el hecho de que no se posee memoria para almacenar todas las l neas. Para lo anterior, el problema se abord de formas distintas para las l o neas superiores y las inferiores. Para las primeras l neas se implement un sistema que almacena dos veces o las l neas 2, 3 y 4, mientras que para las l neas 316, 317 y 318 el problema se resolvi multiplexando las o salidas, es decir asignando algunos buers a ms de una salida. a

Figura 6.6: Esquema bsico de la FSM 1 del mdulo lines buffer. a o

36

37

start_frame_reg=0/-

Tabla 6.5: Descripcin de la FSM 1. o Estado state = 0 espera por la


start_frame_reg=1/-

Descripcin o Estado inicial, donde se valid output pulse delay

seal n

interna

address_write!=N_PX_PER_LINE/-

state = 1

input_line_counter<4

address_write=N_PX_PER_LINE/ address_write<-0

Estado en el cual se gener la seal valid output delay la cual es a n a equivalente a la se al valid output retrasada en un ciclo. Adems, en n este estado se gener la direccin de lectura, la cual es tambin utilizada a o e para contar los datos de salida.

Tabla 6.6: Descripcin de la FSM 2. o


input_line_counter>=4 last_lines_counter!=3/ last_lines_counter <- 0

input_line_counter!=N_LINES

Estado state = 0

Descripcin o Estado inicial, el cual esta a la espera de la seal start frame, la cual gatilla n la inicializacin de distintas variables, adems de dar paso al siguiente estado. o a

valid_pulse_output <-1/-

state = 1

input_line_counter=N_LINES/-

Aqu se controla la direccin de escritura en memoria para cada una de las o lineas. La seleccin del buer en la cual se almacenar la l o a nea se hace a travs e o del registro wr en. Esta seleccin permite que la primera linea sea guardada en el buer central.

pause=N_PAUSE/-

state = 2
last_lines_counter!=3/-

En este estado se controla la seleccin de los buers en los cuales se almacenara o cada una de las l neas. Para las l neas 2, 3 y 4, se seleccionan 2 buers, con el n de lograr el ordenamiento mostrado en la [Figura ??]. El resto de las l neas se almacena en solo un buer. state = 3 neas de Genera la seal valid output delay la cual gatilla la lectura de las l n video en la FSM 1. state = 4 Verica si se han recibido todas las l neas. Si ese es el caso, pasa al estado 5, en caso contrario, vuelve al estado 1. state = 5 Este maneja indirectamente la seleccin de los multiplexores que asignan los o buers a las salidas. Esto se realiza solo para las l neas 316, 317 y 318. state = 6 Ac se gener un espacio muerto para espaciar las ultimas 4 l a a neas, puesto que los tiempos de salida de las l neas anteriores(de la 1 a la 315) es controlada por la misma seal que valida la entrada de video, y al momento en que se n estan leyendo las ultimas 4 l neas, ya se completo al recepcin del frame de o video.

pause!=N_PAUSE/ pause <- pause+1

Figura 6.7: Esquema bsico de la FSM2 del mdulo lines buffer. a o

38

39

linea 4 linea 3 linea 2 Padding superior

Tabla 6.7: Entradas y salidas del mdulo adder 7 o Seales n lines[76:0] Tipo Entrada Descripcin o Vector de 7 elementos de 11 bits, equivalente a 7 l neas con datos de 11 bits en formato punto jo, sin signo y sin decimales. Seal que esta activa para indicar que hay datos vlin a dos en lines[76:0]. Seal de reloj de 80Mhz. n Valor de 14 bits en formato punto jo, sin signo y sin decimales. Este es el resultado de la suma de las 7 l neas de entrada. Seal que esta activa para indicar que la salida n mena[13:0] es vlida. a

linea linea linea linea linea linea

1 2 3 4 5 6

Frame

valid lines
linea linea linea linea 316 317 318 319

Entrada

clk
Padding inferior

Entrada Salida

linea 318 linea 317 linea 316

mean[13:0]

Figura 6.8: Esquema general del orden que deben tener las l neas verticalmente dentro del buer. valid mean Salida

6.4.3.

Sumador de l neas verticales - adder 7

Tabla 6.8: Pasos principales realizados por el mdulo adder 7 o Pasos Paso 1 RTL lines reg[:] <- lines vector[n:0] Descripcin o Copia las 7 l neas que vienen en un vector de 7x11 bits, a 7 registros independientes de 11 bits. Clcula la semi suma de los datos de entrada, a donde se suman 6 datos y queda uno por sumar. Paso 2 sum1 <- sum(lines reg[1:3]) sum2 <- sum(lines reg[4:6]) reg <- lines reg[0] Paso 3 result <- sum1 + sum2 + reg

Finalizando con el clculo de la media, este mdulo cumple con la tarea de calcular la media vertical, a o y con ello la media de la imagen. En particular, dado lo expuesto en el cap tulo 5, esto se lleva a cabo simplemente calculando la suma vertical de 7 l neas. Dado el ordenamiento que se realiza en o neas entrantes. liner buffer, este mdulo se abstrae de los datos, y solo suma las 7 l Pese a que la FPGA utilizada tiene la capacidad de realizar la suma de los 7 valores en un ciclo, realizar esto no es del todo razonable, dado que la lgica sintetizada para tal tarea produce resultados o decientes en trminos de velocidad. Por lo anterior, este proceso se realiza a travs de un pipeline, e e Figura 6.9, para lo cual consta de 3 entradas y 2 salidas,Tabla 6.7, y el proceso se lleva a cabo a travs e de los pasos presentes en la Tabla 6.8.

adder_7

linea 6 semi_sum 2

linea 5

linea 4 mean[13:0] semi_sum_1 sum valid_mean

Clcula el resultado sumando las semi sumas a junto con el valor que quedo sin sumar.

lines[76:0]

linea 3

linea 2

6.5.

Actualizacin de parmetros o a

linea 1 reg

linea 0

valid_lines

clk

Figura 6.9: Esquema general mdulo adder 7. o

La tarea realizada en esta etapa, consiste en actualizar los parmetros bias y ganancia. En a escencia la tarea es realizada por un solo mdulo, update parameters, pero dado el ujo de o datos presente en el sistema, se requiere de mdulos complementarios, que controlan el ujo o de datos. Los nuevos parmetros son manejados por el mdulo wrap psdram, que se encarga a o de almacenar los parmetros de cada l a nea en una memoria externa.

6.5.1.

Diferencia respecto de la referencia - diff module


Este mdulo, permite calcular la diferencia entre el video corregido y el video ltrado. En particular, o como se explic en el cap o tulo 5, el video corregido es multiplicado por 49, y el clculo de la media no a es ms que la suma de los p a xeles en una ventana de 7x7. Para lograr lo anterior, el mdulo consta de o

40

41

4 entradas y 2 salidas, detalladas en la Tabla 6.9, y la resta se realiza de manera directa, es decir sin utilizar pipeline o FSM. Tabla 6.10: Entradas del mdulo update parameters. o Seales n start frame

Tabla 6.9: Entradas/salidas del mdulo diff module. o

Seales n value 1[13:0] learning select

Tipo Entrada

Descripcin o Valor de 14 bits sin signo, punto jo y 0 bits decimales. En particular este valor representa el video corregido, multiplicado por 49.

Descripcin o Seal que indica el inicio de un cuadro de video. Esta es solo utilizada n para la seleccin de las tasas de aprendizaje. o Seal utilizada para seleccionar entre dos valores de tasa de aprendizaje, n para cada uno de los parmetros. Uno de ellos detiene el aprendizaje, a el otro permite que el algoritmo evolucione utilizando la tasa ingresada por el usuario. Tasa de aprendizaje que permite actualizar el parmetro bias. Esta es a ingresada por el usuario, y est en formato punto otante de 24 bits no a estandar.

value 2[13:0] bias alpha[23:0]

Entrada

Valor de 14 bits sin signo, punto jo y 0 bits decimales. En particular este valor representa el video procesado por el ltro de media. Seal que esta activa para indicar que hay datos vlin a dos en value 1[13:0] y value 2[13:0]. gain alpha[23:0] Seal de reloj de 80Mhz. n Valor 15 bits con signo, punto jo y 0 bits decimales. En particular este valor representa el resultado de la resta entre el video corregido y el video ltrado. difference value[23:0] valid difference value Seal que esta activa para indicar que la salida n a result diff[14:0] es vlida. bias input[23:0]

valid values

Entrada

clk

Entrada

Tasa de aprendizaje que permite actualizar el parmetro ganancia. Esta a es ingresada por el usuario, y est en formato punto otante de 24 bits a no estandar. Diferencia entre el video corregido y el video ltrado(video de referencia). El valor est en formato punto otante de 24 bits no estandar. a Seal que indica cuando es valida la se nal difference value. n Parmetros bias, en punto otante de 24 bits no estandar, el cual se a ajusta en funcin del error y la tasa de aprendizaje. El valor esta en o formato punto otante de 24 bits no estandar. Seal que indica cuando es vlida la seal bias input. n a n

result diff[14:0]

Salida

valid result diff

Salida

6.5.2.

Actualizacin de parmetros - update parameters o a


valid bias input gain input[23:0]

Este mdulo es el encargado de ajustar los parmetros bias y ganancia, en funcin de tasas de o a o aprendizaje predenidas. Conforme a la ecuacin (5.4) y ecuacin (5.3), el mdulo requiere del video o o o original, el video corregido y el video ltrado, adems de los parmetros bias y ganancia actuales. a a Debido a que cada uno de estos parmtros esta disponible en tiempos distintos, se implementarn buers a o fuera de este mdulo que permiten tener a disposicin los datos en los instantes necesarios. Para su o o funcionamiento, este mdulo consta de 14 entradas y 7 salidas, las que se detallan en la Tabla 6.10 y o Tabla 6.11, y su funcionamiento se basa dos unidades, que son:

Parmetros gain, en punto otante de 24 bits no estandar, el cual se a ajusta en funcin del error, el video de entrada la tasa de aprendizaje. o El valor est en formato punto otante de 24 bits no estandar a valid gain input noise video input[23:0] valid noise video input clk Seal que indica cuando es vlida la seal gain input. n a n Video original, en formato punto otante de 24 bits no estandar. Seal que indica cuando es vlida la seal noise video input. n a n Seal de reloj de 80Mhz. n

wrap mult fpu : Unidad de mltiplicacin de punto otante de 24 bits, no estandar. u o

wrap diff fpu : Unidad de resta de punto otante de 24 bits, no estandar.

42

43

Tabla 6.11: Salidas del mdulo update parameters. o


bias_output gain_output valid_bias_output valid_gain_output

request_bias

Parmetro gain, actualizado y en formato punto otante de 24 bits no a estandar.

valid gain output

Seal que se activa cuando hay datos vlidos en gain output. n a

request bias

Seal que a travs de un pulso, solicita el env de una l n e o nea de parmea tros bias.

request gain

Seal que a travs de un pulso, solicita el env de una l n e o nea de parmea tros ganancia.

wrap_diff_fpu_bias wrap_diff_fpu

La forma en que este mdulo opera es a travs de un pipeline, cuyo ujo de datos se ajusta al esquema o e mostrado en la Figura 6.10, logrando as la actualizacin de los parmetros bias y ganancia. o a Vale considerar que este mdulo no considera el almacenamiento de los parmetros una vez corregido, o a por lo cual una vez que son corregidos, estos son enviados al mdulo wrap psdram, que se encarga de o distribuir los tiempos para poder almacenar los datos en la memoria externa.

wrap_mult_fpu_bias wrap_mult_fpu

update_parameters

wrap_mult_fpu_gain wrap_mult_fpu

wrap_mult_fpu_with_noise wrap_mult_fpu

request noise video

Seal que a travs de un pulso, solicita el env de una l n e o nea de video original.

wrap_diff_fpu_gain wrap_diff_fpu

gain output[23:0]

bias_input

bias_alpha

start_frame

learning_select

gain_alpha

valid_bias_input

gain_input

difference_value

valid_difference_value

noise_video_input

44

45 Figura 6.10: Diagrama del mdulo update parameters. o

valid_noise_video_input

valid_gain_input

clk

request_noise_video request_gain

Seales n bias output[23:0]

Descripcin o Parmetro bias, actualizado y en formato punto otante de 24 bits no a estandar.

valid bias output

Seal que se activa cuando hay datos vlidos en bias output. n a

6.6.

Controlador PSDRAM - wrap psdram

Este mdulo es el encargado de manejar la comunicacin con la memoria externa. Pese a que no o o forma parte del procesamiento mismo del algoritmo, su funcionamiento es vital, debido a que los tiempos disponibles para la transmisin de datos son limitados. Especicamente, el mdulo funciona de acorde o o al diagrama mostrado en la Figura ??. En partciular, este mdulo consta de 17 salidas, 10 entradas, y 1 entrada/salida, y su funcionamiento o se basa en un sub-mdulo, PSDRAMDriver, el cual se encarga de generar las seales de control acorde al o n protocolo establecido por el fabricante[13], adems de proveer las seales necesarias para la programacin a n o de esta.

vga controller 720 60, provisto por la empresa Digilent inc. el cual genera las se nales de sincronismo horizontal y vertical, junto con contadores de l neas y p xeles. Conversin de representacin - fix2float 15bits o o Permite convertir valores 15 bits, punto jo con signo, a punto otante no estandar de 24 bits, con 1 bit de signo, 6 bits de exponente y 17+1 bits de mantisa.

6.6.1.

Controlador bsico PSDRAM - PSDRAMDriver a

Este mdulo implementa una comunicacin bsica, de alta velocidad, con la memoria externa 128Mbit o o a Micron M45W8MW PSDRAM. La implementacin permite alcanzar la mxima velocidad indicada por o a el fabricante, utilizando el modo burst, el cual transmite paquetes de 128 palabras de 18 bits. Este mdulo consta de o

6.6.2.

Funcionamiento

6.7.

Otros

Desacoplador de video - decoupling Este mdulo permite desacoplar la entrada de video con el sistema, de manera tal que el video puede o entrar a una frecuencia de 27Mhz, y ser procesado a una frecuencia de 80Mhz. Para lograr esto, se utiliza una memoria FIFO de doble compuerta, que permite ingresar datos a una frecuencia y extraerlos a otra. Buers Debido a las carcteristicas del sistema, en particular el hecho de que se necesiten las 4 primeras a l neas para poder comenzar el procesamiento, se deben incorporar diversos buers que permiten retener los datos mientras sea necesario. Entre ellos estn los siguientes buers: a

video buffer mult, que adems de retener el video corregido, lo multiplica por 49. a

video delay fix2float, que retiene el video original, y adems lo convierte de punto jo a punto a otante no estandar de 24 bits.

large parameters buffer, que permite retener los parmetros bias y gain, leidos al momento de a corregir el video.

Manipulacin de parmetros - add to parameters o a Este mdulo permite al usuario modicar las tasas de aprendizaje utilizadas por el algoritmo. Este o tiene la capacidad tanto de aumentar como disminuir las tasas de aprendizaje, haciendo uso de pramea tros predenidos. Visualizacin - vga display o Este mdulo permite la visualizacin del video corregido y el video original, a travs de un monitor o o e VGA. Este se encarga de posicionar el video en una posicin en la pantalla. Adems, instancia al mdulo o a o

46

47

Cap tulo 7

Resultados
USB 2.0

En base a lo anterior, y con ayuda del estudiante Javier Contreras F., se implement un mdulo o o que permite la recepcin de datos en la FPGA desde el computador(usb module), y a su vez gener las o a seales de video asociadas, que son start frame, end frame, valid line 1 y valid line 2. Para ello, se n utiliz como base el cdigo provisto por la empresa Digilent inc.. Por otro lado, trabajando en conjunto o o con Javier Contreras F., se diseo un programa que permite la lectura de un video digital proveniente n de la cmara Jade UC33x, al cual se le ajusto la escala a un rango de 8 bits. Este a su vez, permite a enviar el video a la FPGA, y adems recibir el video corregido. Para ello, se utiliz como base el cdigo a o o provisto por la empresa Digilent inc., junto con las librerias correspondientes. El sistema hardware resultante,Figure 7.1, se simplica del original, elimnandose todo el sistema de adquisicin. o

As como en todo experimento, es necesario validar los resultados obtenidos. Para ello, es necesario realizar una comparacin cuantitativa de los resultados. Por lo anterior, no basta o con obtener buenos resultados en la etapa de visualizacin, si no que adems es necesario o a compararlos nmericamente con los resultados obtenidos en simulacin. Adems debido a la u o a ndole de este trabajo, se requiere realizar anlisis que permitan ver los recursos utiliados, a asi como la potencia que este sistema consume.

Nexys 2 1200K

7.1.
7.1.2.

Resultados de la correccin o

Figura 7.1: Diagrama del sistema de prueba.

7.1.1.

Sistema de prueba

Para poder realizar las pruebas de manera correspondiente, es necesario conocer la entrada de video a la FPGA, adems de la salida. Para lo anterior existen dos alternativas: a

Parmetros de prueba a

Utilizar el setup original, e imlementar un mdulo que permite la lectura del video de entrada y el o video de salida, desde un computador.

Modicar el setup original, e implementar un mdulo que permite recibir el video desde el compuo tador, para luego leer desde este mismo los resultados de la correccin. o

Para las pruebas, se utiliz un video de 3000 cuadros, capturado con la cmara Jade UC33x. El o a video original esta en formato digital, de 14 bits monocromtico, y una resolucin de 320x240. Con el a o n de emular el video proveniente del sistema de adquisicin, se ajust el rango dinmico del video a 8 o o a bits. Adems, se realiz una prueba extendida, en la cual se proces el video 4 veces por el algoritmo, a o o sumando un total de 12000 cuadros. Por su parte, para validar y evaluar las correccines, se utiliz el o o ndice PSNR, que permite medir el nivel de ruido respecto de una imagen sin ruido. En este caso se utiliz como referencia un video o corregido con calibracin de dos puntos. o M SE = (7.1) Finalmente, durante las pruebas se utiliz las tasas de aprendizaje presentes en la Tabla 7.1. o Tabla 7.1: Tasas de aprendizaje utilizadas durante la evaluacin o

Considernado la primera opcin, se requiere tener un sistema capaz de transmitir a tasas cercanas a o los 73Mhz. Esto en particular, no es posible con la tarjeta de desarrollo utilizada Nexys2, puesto que el medio ms rapido de transmisin de datos, alcanza velocidades cercanas a los 33Mhz. En vista de esto, a o se debe utilizar la segunda alternativa. En este caso las velocidades de transferencia no son un problema mayor, puesto que el sistema de procesamiento implementado permie aislar la entrada de la salida. Para poder implementar el sistema que permite recibir y enviar video al computador, se debe tener en cuenta lo siguiente

valor

bias 0,0099

gain 8,910 109

Dado el alto nmero de datos, es recomendable utilizar el protocolo DSTM[21], en vez de . u

7.1.3.

Resultados
Primero se evalu el sistema utilizando el video de 3000 frames . En la Figura 7.2 se presentan las o distintas correcciones del video en la cuarta iteracin, en el cuadro 2175. En la Figura 7.2a y Figura 7.2b o , se presenta el video corregido por la FPGA y por Matlab, respectivamente. Adems, en la Figura 7.2c a 49

Es necesario implementar un mdulo que emule la seales start frame, end frame, valid line 1 o n a n y valid line 2, adems de la misma se al de video.

Es necesario crear un programa que permita el env de video utilizando el protocolo DSTM[22]. o 48

PSNR v/s Frames


50.6 PSNR noise video PSNR nuc video PSNR fpga 50.55 51 50 49 48 50.5 47 46 45 44 43 50.4 50.45 PSNR noise video PSNR nuc video PSNR fpga

PSNR(db)

Imagen corregida por algoritmo de Scribner en la FPGA

Imagen corregida por algoritmo de Scribner con doble precision

PSNR(db)

y Figura 7.2d, se presenta el video corregido por calibracin de dos puntos y el video original con ruido, o respectivamente. Adems, en la Figura 7.3 se muestra la evolucin que tiene el PSNR, donde en la Figura 7.3a se a o muestra la evolucin durante los 3000 cuadros, en la Figura 7.3b se muestra desdde cerca la diferencia o existente entre las dos correcciones, y en la Figura 7.3c se muestra el PSNR de la imagen original respecto de la calibrada con dos puntos.

PSNR v/s Frames

50 41 500 100 1000 1500 2000 2500

50

42

50.35

50.3 2460

2470

2480

2490

2500

2510

2520

2530

2540

2550

2560

100

Frames

Frames

150

150

(a) Evolucin del PSNR durante el ultimo ciclo del o video.

(b) Acercamiento a la evolucin del PSNR durante el o ultimo ciclo del video
PSNR v/s Frames

200 40.295

200

PSNR noise video

40.29 200 250 300 50 100 150 200 250 300 40.285

50

100

150

(b) Cuadro 2175, del video corregido por Matlab.

(a) Cuadro 2175, del video corregido por la FPGA.


Imagen original, con ruido

40.28

40.275

PSNR(db)

Imagen corregida por calibracion de dos puntos

40.27

40.265 50 40.26

50

40.255 100 500 1000 1500 2000 2500

100

Frames

150

150

(c) PSNR del video

200

200

Figura 7.3: Muestra de la evolucin del PSNR, utilizando calibracin de dos puntos y correccin con la o o o FPGA, para el video de 3000 cuadros.
50 100 150 200 250 300

50

100

150

200

250

300

(c) Cuadro 2175, del video corregido con calibraci de dos puntos. n

(d) Cuadro 2175, del video sin corregir.

Figura 7.2: Muestra comparativa de las correcciones en matlab y FPGA, junto con el video original y el corregido con calibracin de dos puntos, para el video extendido de 3000 cuadros o

Por otra parte, se realiz una evaluacin extendida utilizando el mismo video 4 veces seguidas, o o sumando un total de 12000 cuadros de video. En la Figura 7.4 se presentan las distintas correcciones del video en la cuarta iteracin, en el cuadro 2175. En la Figura 7.4a y Figura 7.4b , se presenta el video o corregido por la FPGA y por Matlab, respectivamente. Adems, en la Figura 7.4c y Figura 7.4d, se a presenta el video corregido por calibracin de dos puntos y el video original con ruido, respectivamente. o Adems, en la Figura 7.5 se muestra la evolucin que tiene el PSNR, donde en la Figura 7.5a se a o muestra la evolucin durante los 3000 cuadros, en la Figura 7.5b se muestra desdde cerca la diferencia o existente entre las dos correcciones, y en la Figura 7.5c se muestra el PSNR de la imagen original respecto de la calibrada con dos puntos.

50

51

Imagen corregida por la FPGA


70 69.1 50 68.9 60 100 68.8 68.7 68.6 68.5 68.4 45 PSNR noise video PSNR nuc video PSNR fpga 200 250 300 50 100 150 68.3 PSNR noise video PSNR nuc video PSNR fpga 68.2 2460 2470 2480 2490 2500 65 69 69.2

Imagen corregida por matlab

PSNR v/s Frames

PSNR v/s Frames

50

100

alto

alto

PSNR(db)
55

150 50

150

200

200

50

100

150

ancho

ancho

200 500 1000

250

300

Frames

1500

2000

2500

PSNR(db)

Frames

2510

2520

2530

2540

2550

2560

(a) Cuadro 2175, del video corregido por la FPGA.


Imagen original con ruido

(b) Cuadro 2175, del video corregido por Matlab.

(a) Evolucin del PSNR durante el ultimo ciclo del o video.

(b) Acercamiento a la evolucin del PSNR durante el o ultimo ciclo del video
PSNR v/s Frames

Imagen corregida con calibracion de dos puntos

40.295 50 40.29

PSNR noise video

50

100

100

40.285

alto

alto

40.28

PSNR(db)
50 100 150

150

150

40.275

40.27

200

200

40.265

40.26 200 250 300 200 250 300

50

100

150

ancho

ancho

40.255 500 1000 1500 2000 2500

(c) Cuadro 2175, del video corregido con calibraci de dos puntos. n

(d) Cuadro 2175, del video sin corregir.

Frames

(c) PSNR del video

Figura 7.4: Muestra comparativa de las correcciones en matlab y FPGA, junto con el video original y el corregido con calibracin de dos puntos, para el video extendido de 12000 cuadros o

Figura 7.5: Muestra de la evolucin del PSNR, utilizando calibracin de dos puntos y correccin con la o o o FPGA, para el video extendido de 12000 cuadros.

Cabe destacar que para las correcciones realizadas en Matlab, se utiliz aritmtica de punto otante o e de doble precisin, que viene seleccionada por defecto por este software.. o

7.2.

Resultados de la implementacin o
El cdigo que describe el hardware implementado, fue s o ntetizado por el software Synplify de la empresa Synopsys, y el software ISE project de la empresesa Xilinx. A continuacin se detallan los o resultados de s ntesis, tiempo y potencia.

7.2.1.

Resultados de s ntesis
En la Tabla 7.2, se resume la utilizacin de los recursos ms importantes disponibles en la FPGA o a utilizada. En esta, se considera el sistema completo, incluyendo el controlador de memoria externa, la visualizacin y el mdulo de entrada del usuario. o o

52

53

Tabla 7.2: Utilizacin de recursos del sistema completo. o Synplify 23(82 %) 121(48 %) 5967(34 %) 5401(31 %) 2(25 %) 13(46 %) Xilinx 24(85 %) 121(48 %) 6097(35 %) 6116(35 %) 2(25 %) 15(53 %)

Lgica o BRAM IOB FlipFlops LUT de 4 entradas DCM MULT18X18IO

7.2.2.

Resultados de tiempo y potencia

se requieren. A modo de ejemplo, en esta implementacin dado que se necesitan los parmetros bias o a y ganancia en instantes distintos, estos se deben almacenar temporalmente en BRAM, lo que implica utilizar 6 BRAM de las 28 disponibles. Una situacin similar sucede con el video con ruido y con el o video corregido. Desde el punto de vista de los mltiplicadores, la utilizacin de mdulo generados por la herramienta u o o Core Generator conllev a utilizar 4 multiplicadores por cada unidad de multiplicacin de punto oo o tante en el sistema. Adems, cabe resaltar que pese a existir una diferencia de ms de 32 bits entre la a a implementacin en hardware y la simulacin en Matlab, esto no se ve reejado en los resultados. Esto o o puede deberse a que la precisin de las cifras en el algoritmo, no son tan inuyentes. Finalmente, cabe o resaltar que el exceso de recursos utilizados por las unidades de punto otante, no se debe propiamente a la unidade en s si no ms bien a una implementacin deciente lograda por la herramienta Core , a o Generator.

El software Synplify estim una frecuencia de 85.5MHz, mientras que la s o ntesis del mismo sistema , utilizando el software de Xilinx, estim una frecuencia de 73.4Mhz. Por otro lado, la frecuencia luego de o place and route estimada por el software Synplify fue de 80.710Mhz, mientras que la frecuencia estimada por el software de Xilinx fue de 81.981Mhz. Por su parte, para obtener los reportes de potencia, se utiliz el software XPower Analizer, de Xilinx. o Este, entrego que el sistema de procesamiento, es decir sin considerar el manejador de memoria externa, la visualizacin, ni el mdulo de control de usuario, fue de 25.25mW. o o

7.3.

Anlisis a

De los resultados de las simulaciones, se puede ver en las grcas que muestran el PSNR, se ve que a tanto la correccin en la FPGA, como la simulacin en Matlab, utilizando doble precisin, siguen la o o o misma tendencia. Esto se puede corroborar para ambas pruebas, con 3000 cuadros y con 12000 cuadros. Cabe destacar, que pese a seguir la misma tendencia, el PSNR de la simulacin en Matlab crece o levemente ms rapido, lo que podr interpretarse como una mayor velocidad de convergencia y podr a a a esperarse los mismos niveles de correccin en la implementacin en la FPGA, pero en un lapso de tiempo o o ms largo. a Otro punto que es necesario resaltar, es que al momento de corregir el video con el algoritmo por cuarta vez, este a n sigue reduciendo el nivel de ruido, pero a una tasa menor que al comienzo. Esto u probablemete luego de un n mero de frames, debiera converger a un valor. u Durante las simulaciones, los niveles de ghosting que presentes en los videos, fueron m nimos, lo que se puede deber a una baja tasa de aprendizaje. De los resultados de s ntesis, se puede ver leves diferencias entre los resultados obtenidos por ambos softwares utilizados(ISE project y Synplify). Pese a que Synplify logro mejores velocidades de s ntesis(frecuencia mxima estimada) y utilizacin de recursos, en la etapa posterior de place and route, a o resultados obtenidos por el software ISE project fueron mejores. No obstante a las diferencias en los resultados, ambos resultados alcanzaron la frecuencia m nima necesaria para un correcto funcionamiento, que es 80Mhz. Esto ultimo, se antepone como una limitante a la hora de buscar que el sistema funcione a mayores velocidades. Si bien la implementacin funciona correctamente, los resultados no permiten acelarar directamente o la correccin, ni implementar ms unidades de correccin en el chip. Recursos como la memoria BRAM, o a o o los multiplicadores, superan claramente el 50 %. En este caso en particular, el extenso uso de BRAM se debe a que la velocidad de la memoria externa no permite un acceso lo sucientemente rpido para almacenar y descargar todos los parmetros que a a 54 55

Cap tulo 8

Bibliograf a
[1] D.A. Scribner, K.A. Sarkady, M.R. Kruer, J.T. Cauleld, Adaptive Nonuniformity Correction for IR Focal Plane Arrays Using Neural Networks, SPIE Vol. 1541 Infrared Sensors: Detectors, Electronics, and Signal Processing (1991). [2] S. Godoy, J. Pezoa, and S.Torres. Noise-cancellation-base nonuniformity correction algorithm for infrared focal-plane-arraysOptical Society of America, Applied optics, vol. 47, No. 29, 10 October 2008. [3] J. Harris, and Y. Chiang. Nonuniformity Correction of Infrared Image Sequence Using the Constant-Statistics ConstraintIEEE Transactions on Image Processing, vol. 8, No. 8, August 1999. [4] W. Bing-Jian, W. Da-Bao, and B. Li-Ping. An Improved non-uniformity correction algorithm for IRFPA base on neural networkIEEE Computer Society. [5] E. Vera, and S. Torres. Fast Adaptive Nonuniformity Correction for Infrared Focal-Plane Array DetectorsEURASIP Journal on Applied Signal Processing 2005:13,1994-2004. [6] C. San Mart S. Torres, and J. Pezoa. An Eective Reference-Free Perfomance Metric for n, Non-uniformity Correction Algorithm in Infrared Imaging System IEEE 1-4244-9825-X. 2007. [7] D. Scribner, K. Sarkady, M. Kruer, J. Cauleld, J. Hunt, and Descour. Adaptive Retina-Like Preprocessing for Imaging Detector ArraysIEEE 0-7803-0999-5/1993. [8] R. Hart and O. Thomas, A Study of Non-Uniformity Correction Methods for Staring Array IR Detectors,1st EMRS DTC Technical Conference Edinburgh 2004. [9] Rodrigo A. Reeves. Compensacin de ruido espacial en sistemas de imgenes con sensores ino a frarrojosMemoria de t tulo, Dpto. Ingenier Elctrica, Universidad de Concepcin. a e o [10] Juan Pablo Moreno Del Solar. Clculo en l a nea de ndice de calidad para la correccin de noo uniformidad IRFPAMemoria de t tulo, Dpto. Ingenier Elctrica, Universidad de Concepcin. a e o [11] Juan Pablo Moreno Del Solar, Nicols Celedn C. Obtencin de imgenes desde una cmara para a o o a a procesamiento en FPGAInforme nal, Proyecto Electrnica 2010-1, Dpto. Igenier Elctrica, o a e Universidad de Concepcin. o [12] Javier Contreras, Roberto Ram rez. Reduccin de resolucin de imagen en una FPo o GAAdaptacin de seal de video mediante FPGA, Informe Final, Proyecto Electrnica 2011-1, o n o Dpto. Ingenier Elctrica, Universidad de Concepcin. a e o [13] Micron Async/Page/Burst CellularRAMTM 1.5 MT45W8MW16BGX - Datasheet 56 57

Conclusiones

[14] Cedip Infrared Systems. Jade UC Reference manual.

[15] Digilent Inc. Digilent Video Decode Board VDEC1 - Reference Manual rev. 12/04/05.

[16] Analog devices. Multiformat SDTV Video Decoder ADV7183B datasheet.

[17] UIT-R, Sector de Radiocomunicaciones de la UIT, Recomendacin UIT-R BT.656-5 (12/2007). o

[18] Gregg Hawkes, Xilinx, Line Field Decoder XAPP286(1.0) December 13,2001.

[19] Digilent Inc. Nexys 2 Board Reference Manual, rev. 21/06/08.

[20] Xilinx Spartan-3E Family: DataSheet DS312 (v3.8) August 26, 2009.

[21] Digilent inc. Digilent Synchronous Parallel Interface (DSTM), rev.September 2, 2010.

[22] Digilent inc. Digilent Synchronous Parallel Interface (DSTM) Programmers Reference Manual, rev. August 31, 2010.

58