Download Titulo : CHIP para Adquisición y Edición de VIDEO
Document related concepts
no text concepts found
Transcript
Titulo : CHIP para Adquisición y Edición de VIDEO Juan Carlos VELEZ (1), Alex ECHAVARRÍA (2), Alejandra GALLÓN (3) Grupo de Microelectrónica U.P.B., Medellín – Colombia Email: microele@logos.upb.edu.co Emails: (1) jgvelez@epm.net.co (2) aes13@yupimail.com (3) andra@cis.net.co Resumen: El presente artículo describe el procesador de video basado en la arquitectura de detección de eventos. El procesamiento de video dado el volumen de datos a ser manipulados implica típicamente gran lentitud o elevados requerimientos de hardware si se pretenden resultados satisfactorios. Los Arreglos Lógicos Programables plantean la posibilidad de realizar un sistema de captura y procesamiento de imágenes a alta velocidad, gozando de la flexibilidad de un DSP de propósito general conjugada con la velocidad de un Hardware dedicado. Las características del Chip permiten solucionar problemas que actualmente no se pueden resolver de modo simultáneo a nivel comercial tales como: mínimos requerimientos de hardware, optimización en el uso del espacio y efecto directo en la presentación estética; bajo consumo energético; elevadísimas frecuencias de trabajo garantizando excelente desempeño e introducción del concepto de ejecución en tiempo real. A lo largo de la siguiente presentación se describe lo que a nivel práctico se ha logrado tras un arduo trabajo de investigación en el tema anteriormente expuesto. Palabras Clave: FPGA, video, procesamiento de imágenes. Summary: The present article describes the processor of video based on the architecture of detection of events. The video processing given the volume of data to be manipulated typically implies the great slowness or high requirements of hardware if satisfactory results are tried. The Programmable Logical Arrays raise the possibility of making a system of capture and image processing at high speed, enjoying the flexibility of a conjugated DSP of general intention with the speed of a dedicated Hardware. The characteristics of the Chip allow to solve problems that at the moment can not be solved of simultaneous way at commercial level such as: minimum requirements of hardware, optimization in the use of the space and direct effect in the aesthetic presentation; under power consumption; highest frequencies of work guaranteeing excellent performance and introduction of the concept of execution in real time. Throughout the following presentation it is described what at practical level it has been obtained after an arduous work of investigation in the subject previously exposed. Key words: FPGA, video, image processing 1. Introducción Los elevados requerimientos de hardware y software implícitos en el procesamiento de video eliminan virtualmente, en la mayoría de los casos, el empleo de DSP convencionales, no adecuados debido al inherente flujo serial de sus instrucciones; en cambio, se hace necesario un arreglo de dichos chips trabajando en paralelo o el diseño de un hardware particular para la aplicación específica. Estas últimas opciones se presentan poco atractivas al evaluar el alto nivel del software necesario, los costos de hardware o los límites de desempeño. Los sistemas basados en Hardware aceleran el proceso al contar con la ventaja del paralelismo ausente en un DSP, pero son complejos, muy costosos (desarrollo de ASIC) y poco flexibles. Con la aparición de los Arreglos Lógicos Programable (FPGAs) se han superado los inconvenientes en hardware de flexibilidad, tiempo de desarrollo y costos, y se ha incursionado en una amplia gama de aplicaciones no afrontadas eficientemente con DSP. El rápido procesamiento de la información permite el funcionamiento correcto del sistema y una mayor frecuencia de actualización de los datos. El principio de funcionamiento está basado en una arquitectura de detección de eventos [2]. La metodología de funcionamiento de esta arquitectura consiste en ejecutar ciertos procesos como respuesta a la detección de uno o más eventos. De esta manera no se tiene un sistema sincrónico dependiente de una única señal de sincronismo, sino que cada nodo procesador actúa independientemente en función de los procesos que le correspondan y hayan sido activados. La aparición de un evento determinado libera la ejecución de un nuevo proceso. De esta manera se economiza tiempo y se maximiza la utilización del Chip. Para el desarrollo de sistemas de procesamiento con mayor capacidad, los diseñadores han basado sus estrategias en las técnicas de integración de transistores en un chip. Sin embargo, se ha demostrado que la capacidad de integrar transistores en una placa de silicio tiene un límite físico y al parecer dicho límite no se encuentra muy distante de los niveles que se alcanzan en la actualidad. Una vez alcanzado el límite físico impuesto por el material, será mucho más complicado o casi imposible seguir aumentando la capacidad de procesamiento de sistemas por medio de la integración. Estas razones han obligado a los diseñadores de procesadores a pensar en nuevas alternativas para mejorar sus diseños. Con las FPGAs, en muchas aplicaciones, la reconfigurabilidad de la SRAM puede ser aprovechada para minimizar hardware, consumo y espacio. En estos casos, el dispositivo es configurado con la lógica necesaria en ese instante en particular hasta que no es más necesitada y es reemplazada por una nueva lógica, propia para la consecución del proceso. Se podría gozar entonces de una clase de “Hardware virtual” que además de reconfiguración parcial permita el rápido reemplazo de pequeñas porciones del circuito mientras el resto continúa operando [2]. El diseño electrónico utilizando arreglos lógicos programables por voltaje (FPGAs) constituye pues una alternativa muy económica y eficiente [1], que permite no sólo la integración de un gran número de lógica digital dentro de un mismo chip, sino que evita la necesidad de cableado y permite aumentar el rendimiento del sistema hasta frecuencias del orden de 100 MHz. Específicamente, para la implementación del CHIP para video, se utiliza un dispositivo lógico programable del tipo FPGA de XILINX XC4010XL como controlador entre los diferentes nodos de procesamiento. 2. Descripción. El chip para el procesamiento de imágenes surge con el deseo de un aprendizaje profundo sobre los arreglos lógicos programables. Para ello, luego de identificar innumerables ventajas ofrecidas por estos dispositivos, se busca una aplicación en la cual estos se presenten como una necesidad real o una opción de simplificación y/o evolución considerable respecto a las alternativas preexistentes. Se llega así al tema de video, el cual demanda complejas condiciones en lo que a resultados óptimos respecta. Se encuentra en el desarrollo del Chip orientado a dicha aplicación no sólo un ejercicio interesante, sino un proyecto de importante envergadura, con buenas posibilidades de evolución y gran aplicabilidad, con la secundaria función de contribuir en la familiarización con las FPGAs por parte de nuestra comunidad investigativa dando lugar a la valoración de dicha herramienta dentro de muchas aplicaciones ya existentes o futuros proyectos. Funcionalmente, se ha logrado implementar hasta el momento con un costo relativamente bajo de hardware y por consiguiente de dinero, espacio y tiempo, un sistema de adquisición y edición sencilla de señal de video en tiempo real, la cual es recibida en el formato estandard americano de televisión, NTSC y tras un proceso de muestreo, digitalización, almacenamiento temporal y algoritmos sencillos, se logra a través de un monitor VGA (sin conexión alguna al PC) visualizar una imagen en tiempo real, clara (aun no muy perfecta pero susceptible a altísimas mejoras) y perfectamente manipulable dada su naturaleza digital. Con el fin de desarrollar el sistema de procesamiento de video, es necesario en primera instancia definir una arquitectura general. En la situación actual del proyecto, esta vincula algunas etapas de hardware, aún mínimas comparadas con aplicaciones tradicionales, pero que a medida que se evolucione serán sustituidas en su totalidad por la funcionalidad de nuestro arreglo lógico. Se cuenta pues con la siguiente interrelación: las altas exigencias de velocidad del sistema en general. Interfaz de salida, acondiciona la señal a ser enviada al monitor VGA para su final visualización. Se emplea un sencillo conversor digital-análogo (red R2-R) generándose tres señales análogas (R G B), las cuales aportan el croma de cada píxel que acompañado con las señales de sincronismo dibujan tras un continuo barrido horizontal la imagen en la pantalla. A continuación se muestra un diagrame de bloques del sistema Interfaz de acondicionamiento de la señal de video, para convertir la señal a una forma procesable. Esta tarea se lleva a cabo inicialmente con una etapa preamplificadora y un conversor análogo a digital (ADC1175) de alta velocidad (20Mhz) y bajo consumo. Esta información digital es buffereada, garantizando coherencia en el arbitramiento de las señales. Mecanismo para la sincronización del hardware con los tiempos de la señal de video. Para esto se emplea un protocolo de pulsos de sincronización separados, obtenidos de la misma señal de video (en formato NTSC) con el generador de video sincrónico LM1881, con los cuales es posible dirigir el flujo del proceso de adquisición. La información de video digital junto a los datos de sincronismo se constituyen en señales de entrada para el sistema de procesamiento (La FPGA), el cual procede a analizar dichas señales realizando procesos lógicos internos y controlando coherente y eficientemente el hardware externo. Almacenamiento de la imagen. Se emplea una memoria RAM accesada por el procesador de modo permanente (leyendo y escribiendo), donde se aloja byte a byte la información que define a cada píxel de imagen. La capacidad de memoria debe ser suficiente para almacenar al menos un cuadro (requerimiento mínimo con el que se cuenta en el momento), sin embargo, mientras más cuadros puedan ser almacenados se optimiza el proceso, aspecto en el momento limitado por disponibilidades comerciales del medio. La RAM empleada satisface igualmente Una vez la señal de video es detectada, esta es usada para “enganchar” el procesador a la fuente de tiempos de video. Así, el flujo de datos de video está sincronizado con la fuente de video para la captura coherente de la señal, los sincronismos ocurren al inicio de cada campo (sincronismo vertical) y de cada línea (sincronismo horizontal) . Se obtiene una imagen con una resolución de 256 x 512 píxeles con 16 millones de colores por píxel (color verdadero), estas características requieren de una memoria RAM con una capacidad mínima de 512 KB y un tiempo de acceso máximo de 20 ns. La imagen capturada es procesada de modo sencillo a voluntad del usuario, respondiendo a opciones determinadas a través de un teclado (se esta trabajando en la implementación de mouse como medio selector de efectos), que activa algoritmos para la presentación de los píxeles en pantalla, es así como se pueden lograr los siguientes efectos: • Eliminación de colores. La eliminación de colores es de gran aplicabilidad cuando se tiene algún color predominante en la imagen, permitiendo por ejemplo eliminar el fondo de una trama de video Tras seleccionar en pantalla, con ayuda de un puntero, un color de la paleta presente, este es inmediatamente sustituido por ausencia de color, como consecuencia de reemplazar a nivel lógico en el buffer de almacenamiento la definición de color de todos los píxeles que poseen la misma información del color seleccionado por el correspondiente valor negro en RGB. • • Congelación de la imagen. Esta función brinda la posibilidad de proporcionar una pausa al controlador de video, de esta forma el sistema no grabará los nuevos frames de video que entrega el conversor A/D haciendo que la imagen mostrada en el monitor sea el último cuadro que se almacenó en memoria antes de presionar el botón de pausa. La implementación de esta función se realiza por medio de un flip flop que almacena el valor de la función y una AND que inhibe el inicio del sistema secuencial. Esta implementación resulta muy económica en relación con el hardware que requiere, ya que solo demanda un flip flop, ya que la función lógica AND se implementa en el mismo LUT que permite el inicio de este sistema secuencial. Negativo. Para la visualización de este efecto se requiere una gran cantidad de hardware ya que su implementación consta básicamente de 24 multiplexores (uno por bit) a cada uno de los cuales llegan dos señales, la primera es el valor lógico de cada bit del píxel original y la segunda es la negación de cada uno de estos bits, de esta forma cuando se desea visualizar en el monitor la imagen negada se requiere únicamente cambiar la selección de los multiplexores. El gran consumo de hardware no se debe a la complejidad de la función, sino al tamaño del bus implementado. • Promedio de la imagen. Se suavizan bordes generándose cierta difuminación. Se trata de establecer un equilibrio entre la información binaria entre el píxel anterior al que esta siendo procesado y este. Tiene aplicación en el filtrado de ruido de señales digitales. • Identificación de bordes. Tras identificar un cambio abrupto en la información entre dos píxeles adyacentes y otras consideraciones prácticas, se delimita el contorno de los objetos. • Binarización. Se asigna para cada píxel ausencia o saturación de cada una de las componentes RGB que lo definen de acuerdo a su tendencia. Solo una pequeña muestra de manipulación de imágenes en tiempo real de modo realmente sencillo y representando muy buenas alternativas para la edición de imágenes y video en aplicaciones específicas a nivel médico, cinematográfico, control, etc. En el momento los aspectos que se están desarrollo en pos de la mejora de lo ya obtenido son: • Análisis de Fourier. Se pretende realizar la transformada Rápida de Fourier en una dimensión con el fin de brindarle mayor manipulabilidad a la información adquirida. • Hacer el rango de la función promedio superior a los dos píxeles actuales, ejerciendo efecto sobre un área, siendo este un parámetro definible por el usuario. • Como valor agregado a la función que permite la eliminación de colores se pretende que la sustitución no se limite a la ausencia de color, sino que se vincule la información de una imagen digitalizada alternamente. • Flexibilidad en la binarización. Que el usuario pueda alterar el nivel de sensibilidad de dicha función. • Implementación del mouse como herramienta de selección de funciones, bajo la ayuda de un menú gráfico en pantalla. 3 Programación Se aprovecha la gran versatilidad ofrecida por los Arreglos Lógico Programables (FPGAs). Existen diversas formas de afrontar el problema de programación: código VHDL, esquemáticos, tablas de verdad y/o diagramas de flujo. Para el presente diseño se opta por el empleo de diagramas de flujo, que además de facilitar el diseño del proceso, permiten comprender de modo sencillo las consideraciones de tiempo, estados definidos, condiciones de sincronismo, acciones de control... El programa de modo general se esquematiza y explica a continuación. Cuando el sistema es reseteado permanece en el estado INICIAL, una vez se libera el sistema se va al estado de PRE_READ, y a partir de este instante en cada flanco de reloj se produce un cambio de estado según la secuencia que no depende de ninguna condición; sencillamente en cada estado se definen las señales que controlan cada uno de los demás bloques funcionales. Dado que la frecuencia de lectura duplica a la de escritura, es indispensable en la máquina secuencial, garantizar por cada dos ciclos de escritura uno de lectura, sin afectar en ningún momento el sincronismo general del sistema, para ello se definen dos estados auxiliares cuya única función es la de proporcionar un retardo de dos ciclos de reloj entre la segunda lectura y el reinicio del loop. El controlador de video es una máquina secuencial que responde a las señales generadas por el LM1881 (sincronismo vertical, sincronismo horizontal, Burst, frame par, video compuesto) y el controlador principal. Específicamente en esta etapa se direcciona la posición de escritura de cada píxel. Los sincronismo para controlar el monitor VGA y todo el procesamiento de la imagen se diseñaron en código VHDL debido a la simplicidad de cada uno de los procesos que fueron requeridos (generación de sincronismo horizontal, sincronismo vertical, detección de ordenes de teclado y puntero de mouse, proceso de edición). El principio de funcionamiento de la edición es la detección de la presión de una tecla, la cual conlleva a la activación de un proceso, que de acuerdo a la función deseada realiza cierto tipo de alteraciones sobre el grupo de píxeles afectados, tal como se explico con anterioridad. 4 Aplicaciones. Se cubren desde las aplicaciones más básicas tales como pantallas de publicidad, sistemas de vigilancia... con mínimos requerimientos de hardware y espacio, hasta aplicaciones al nivel de visión artificial y sistemas inteligentes, comunicaciones de alta exigencia a menor costo, telemedicina, control, montajes cinematográficos. Concretamente, se visualiza la posibilidad de implementar una tarjeta de adquisición de video de alta frecuencia que adquiera la información a las velocidades exigidas por los sistemas actuales y la almacene para ser entregada al procesador a la velocidad que este la requiera sin agotar los recursos de la máquina en la labor de adquisición de datos; estos, son dispositivos actualmente comerciales, pero de cotos elevadísimos, que por medio de este proyecto se podrán implementar, mejorar y optimizar con ventajas de costo considerables. Además se pretende no sólo plantear el trabajo como un sistema específico de video, sino ir más allá de esto, mostrar con una aplicación de excelentes frutos la posibilidad de lograr resultados similares en cualquier otro tópico si se adopta la misma política de “hardware virtual” aventajándose de economía, flexibilidad, sencillez, eficiencia, espacio.... y todas las otras ventajas que el lector a modo personal haya logrado inferir, o que a partir de la curiosidad planteada llegue a descubrir, aprovechar y aportar. 5 Conclusiones Este artículo presenta el desarrollo de un chip para la adquisición y edición de video con la utilización de FPGAs mostrando la versatilidad que se logra con el empleo de estos dispositivos en el desarrollo de aplicaciones de alta demanda de recursos por su alto nivel de procesamiento y exigencias de velocidad. Aplicaciones que hasta hace poco encontraban un límite demasiado alejado al óptimo desempeño siempre esperado en cualquier diseño ante la inaplicabilidad de los recursos hasta el momento disponibles: DSP, con la “lentitud” inherente a la condición de flujo serial o hardware complejo, poco flexible y costoso. Usando los arreglos lógicos programables se puede suprimir una cantidad considerable de hardware e implementar sistemas de alta calidad de procesamiento y el mejor de los desempeños, a un costo moderado con ganancias adicionales en espacio requerido, tiempo de diseño, flexibilidad, posibilidades de crecimiento del diseño, concentración de esfuerzos en la implementación de eficientes algoritmos sobre detalles del sistema. Este es el inicio de una prometedora investigación, partiendo de lo ya logrado y vinculando los alcances superiores de dinamismo en la configuración del chip, para lograr mínimo hardware y la estructuración paso a paso de un sistema inteligente proponiendo a largo plazo alternativas de valioso aporte a cualquier campo que siente sus desempeños en las aplicaciones ópticas, de gran calidad, en tiempo real. Combinaciones realmente atractivas. 6. Agradecimientos El desarrollo de nuestra investigación no hubiera sido posible sin el apoyo de Iván Herrera y Andrés Upegui, directores del grupo de Microelectrónica de UPB. 7. Referencias Bibliográficas [1] I.Herrera, H. Sanchez. Upegui, L. Restrepo. “Multiprocesador Paralelo Basado en la Arquitectura de Detección de Eventos (MADE)”, En: SE’99: 1er. Seminario Nacional de Investigación en Ingeniería Electrónica y Telecomunicaciones en Colombia. Universidad de los Andes. Bogotá. 1999. [2] Andraka, Ray. “A dynamic hardware video processing platform”, Biografías Alejandra María Gallón: Estudiante de IX semestre de Ingeniería Electrónica de la Universidad Pontificia Bolivariana, Monitora de Circuitos Eléctricos I en 1999 y monitora de Sistemas y Señales II en 2000, Miembro activo del grupo de Microelectrónica de la U.P.B. desde 1998. Áreas de Interés: Lenguajes HDL, biomedicina, inteligencia artificial Juan Carlos Vélez: Estudiante de IX semestre de Ingeniería Electrónica de la Universidad Pontificia Bolivariana, , Miembro activo del grupo de Microelectrónica de la U.P.B. desde 1998. Áreas de Interés: Lenguajes HDL, Tratamiento de imágenes, Arquitecturas programación de microprocesadores. y Alex Echavarría: Estudiante de IX semestre de Ingeniería Electrónica de la Universidad Pontificia Bolivariana, Miembro activo del grupo de Microelectrónica de la U.P.B. desde 1998. Áreas de Interés: Lenguajes HDL, Arquitecturas y programación de microprocesadores