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: [email protected]
Emails: (1) [email protected] (2) [email protected] (3) [email protected]
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