Академический Документы
Профессиональный Документы
Культура Документы
Resumen. Una interfaz con el usuario simple y eficiente es de vital importancia para
el desarrollo de sistemas complejos. Nuestro trabajo presenta un entorno software que
acta como interfaz entre la captacin de imgenes a travs de cmaras web o cientficas y una placa de coprocesamiento conectada a un ordenador a travs del bus PCIe.
La placa coprocesadora extrae primitivas de visin como energa, orientacin, fase y
tambin disparidad y estimacin de flujo ptico, en tiempo real, obteniendo mediante
el software desarrollado los resultados procesados para visualizarlos o almacenarlos.
La simple visualizacin en tiempo real del gran volumen de datos proveniente de la
tarjeta es un reto en s mismo y ha requerido el uso de paquetes software para optimizacin en el tratamiento de datos pesados como OpenCV, IPP, OpenMP. Con
este sistema conseguimos satisfacer varias necesidades fundamentales cuando se trabaja con plataformas de coprocesamiento: verificacin final de resultados, interfaces
de configuracin amigables y visualizacin en tiempo real de gran volumen de datos.
1 Introduccin
Las aplicaciones de visin artificial nos ayudan a interpretar el medio dinmico que nos
rodea. Se aplica en muy diversos campos como en robtica, inspeccin industrial, monitorizacin y sistemas de seguridad, medicina o en nuestro caso, en el campo del diseo de
sistemas de conduccin asistida, en el que nuestro grupo tiene experiencia [1], [2], [3]. El
sistema desarrollado se enmarca dentro del proyecto DRIVSCO [4] en el que uno de los
objetivos es instalar el sistema en un vehculo y extraer informacin de los eventos de inters de la escena para alertar al conductor en caso necesario. Nuestro trabajo dentro del
proyecto consiste en el desarrollo del chip que integre los algoritmos de extraccin de las
primitivas visuales de bajo nivel en tiempo real como son las modalidades de energa, orientacin y fase [5], la disparidad [6] y la estimacin de flujo ptico [7] [8].
La tecnologa de hardware reconfigurable, nos permite un alto grado de paralelismo en el
coprocesamiento [9], [10]. El codiseo nos da la capacidad para interconectar el sistema
estreo de cmaras y la aplicacin con la plataforma reconfigurable, adems de la posibilidad de aadir caractersticas nuevas o el desarrollo y verificacin eficiente del programa
hardware. El sistema desarrollado realiza la configuracin y visualizacin de resultados
entre un PC estndar y la tarjeta de coprocesamiento, en concreto XircaV4 [11] o RC2000
[12]. Gracias al desarrollo de una librera genrica de comunicaciones que abstrae detalles
2 Arquitectura hardware-software
El sistema completo est formado por dos cmaras, de bajo coste tipo webcam o de alta
gama para aplicaciones cientficas (con interfaces Camera Link, Firewire, etc.), conectadas
a un ordenador en el que habrn de estar instalados los manejadores de estos perifricos
junto con un dispositivo captador de imgenes (frame grabber), si es necesario. Tambin
tendremos la aplicacin para capturar imgenes de las cmaras y enviarlas preprocesadas a
la plataforma de coprocesamiento a travs del bus PCIe (XircaV4) o PCI (RC2000).
Fig. 1. Esquema del sistema completo. Incluye la entrada a travs de cmaras, la plataforma de coprocesamiento (genrica) y la aplicacin en el PC, que incluye la biblioteca de comunicaciones a travs
del PCIe con la plataforma y los mdulos de adquisicin y de pre y posprocesamiento de los datos.
Una vez que son extradas las primitivas ya comentadas, la aplicacin lee los resultados
de la memoria del dispositivo de nuevo a travs del bus PCI/PCIe y los post-procesa para
finalmente visualizarlos y/o almacenarlos. Por simplicidad en el resto del documento nos
centraremos en los resultados obtenidos con XircaV4, siendo extrapolables a RC2000 o
cualquier otra. En la Fig. 1 podemos ver un esquema general del sistema.
El sistema dispone de un sistema estreo de cmaras web USB de Philips SPC1300NC.
Como cmaras cientficas hemos usado unas Pulnix TM-1402.
El frame grabber es el X64-CL Express de Dalsa Coreco. Trabaja a 85 MHz con dos
entradas Camera Link, protocolo de comunicacin serie estndar [13]. Se conecta al ordenador a travs de un bus PCIe (con un ancho de banda mximo de 160 MB/s).
El ordenador usado para las pruebas tiene las siguientes caractersticas: un procesador Intel Core 2 Quad CPU Q6600 a 2.40 GHz, con 4096 MB de memoria RAM DDR2 a
333 MHz. El sistema operativo es Microsoft Windows XP Home Edition y Service Pack 2.
La plataforma XircaV4 ha sido desarrollada por Seven Solutions [11]. Incluye cuatro
bancos de memoria SSRAM (ZBT) que suman un total de 2Mpalabras de 36 bits, 2 mdulos de memoria DDR de 512 Mb, y dos mdulos de memoria flash de 32 MB. Adems,
tiene conexin Ethernet 10/100/1000Mbits, un puerto de configuracin JTAG y la interfaz
PCIe 1x. En cuanto a la FPGA se trata de una Virtex4 XCVFX100 10FFG1152.
La plataforma RC2000 desarrollada por Celoxica (ms tarde Agility [12]) incluye 6
bancos de memoria ZBT de 1Mpalabra de 36 bits, junto con 1 memoria flash de 16MB. La
conexin en este caso es a travs de una interfaz PCI. Por ltimo, la FPGA es una Xilinx
Virtex-II XCV6000-6.
2.1 Capa hardware
Para establecer la comunicacin a travs del bus PCIe entre la aplicacin y la plataforma de
coprocesamiento reconfigurable necesitamos implementar dos protocolos de handshaking.
esquema de doble buffer o ping-pong que nos permite mejorar el rendimiento del sistema
(aunque como contrapartida aumentemos la latencia total en una imagen).
El protocolo de inicializacin sirve para establecer un canal de comunicacin entre la biblioteca de funciones software y la plataforma. Lleva a cabo la transferencia de los valores
de los parmetros de entrada para el procesamiento de las primitivas correspondientes:
resolucin de la imagen de entrada, filtrados para la salida, valores de confianza, etc.
El esquema de doble buffer (con dos bancos de memoria) nos permite, que mientras el
ordenador se encuentra escribiendo la siguiente imagen de entrada y leyendo la salida del
procesamiento para entradas anteriores en un banco, se pueda estar realizando el procesamiento sobre la imagen anterior en el otro banco por parte de la plataforma de coprocesamiento. Una vez que ambos han terminado, se conmutan, gracias a otro protocolo de
handshaking. El maestro en la comunicacin es la plataforma de coprocesamiento, la cual
administra el mapa de memoria de los bancos, reserva los bancos para el procesamiento y
conmuta con la aplicacin el otro banco. Adems de los bancos dedicados para el protocolo
de doble buffer podemos tener otros bancos de memoria en la arquitectura concreta del
dispositivo para el almacenamiento de datos intermedios.
Para la implementacin de ambos protocolos se utilizan los registros GPIO (dos para el
ordenador y otros dos para la placa), utilizando uno de ellos como para los valores y el otro
para control, en ambos casos. En la Fig. 3, en la izquierda, se observa el esquema de comunicacin, generalizado para un nmero N de parmetros, mostrando a la derecha las transmisiones del ordenador y las de la plataforma de coprocesamiento a la izquierda. En la
derecha, se muestra el esquema de comunicacin para el funcionamiento del doble buffer.
Interfaz o Biblioteca de Funciones. Esta biblioteca es la que permite realizar la
comunicacin a travs del bus PCI/PCIe. En nuestro caso, se desarrollaron estas bibliotecas
de funciones tanto para RC2000 como para XircaV4.
Como ya hemos comentado, este punto muestra una de las ventajas ms importantes del
trabajo. Gracias a esta biblioteca o interfaz de funciones, podemos conectar otras plataformas de coprocesamiento y ejecutar la misma aplicacin siempre y cuando desarrollemos la
biblioteca para la comunicacin y se instalen los manejadores de dispositivo necesarios.
INICIALIZACIN A TRAVS DE PCI/PCIe
//Inicializar
el
dispositivo
cargando
//fichero bitstream
InitFPGA(fileName, deviceHandler);
//Paso de parmetros
InitCommunicationProtocol(deviceHandler, buffer,
bufferSize);
//Escribe datos en memoria mediante doble buffer
Write(deviceHandler, buffer, bufferSize, Offset);
//Lee datos de memoria mediante doble buffer
Read(deviceHandler, buffer, bufferSize, Offset);
//Conmutacin del banco para doble buffer
CommuteBank(deviceHandler);
//Cierra la comunicacin con el dispositivo
CloseFPGA(deviceHandler);
Fig. 4. Cabeceras de las funciones de la biblioteca desarrollada. En la izquierda tenemos las funciones
especficas de la forma de programar la plataforma y en la derecha el resto de funciones.
La biblioteca, como vemos en la Fig.4, contiene las funciones necesarias para el establecimiento de la comunicacin: las de apertura y cierre, bien cargando un fichero de configuracin de la FPGA (bitstream) o sin cargarlo; la que permite pasar los parmetros del procesamiento; las de lectura y escritura de datos sobre los bancos de memoria; la de conmutacin de banco y que es la que permite implementar el protocolo de doble buffer.
Fig. 5. La figura muestra el cuadro de dilogo de la aplicacin que agrupa la funcionalidad en tres
pestaas, de izquierda a derecha: Calibracin y entrada, Procesamiento y Parmetros.
mapa de color utilizado es el usado por el grupo de Middlebury [17], en el que las distancias relativas entre las transiciones de colores se basan en la semejanza perceptual.
Parmetros generales
Resolucin entrada
Resolucin salida
Resolucin captacin
Tasa de transferencia (fps)
Mapa de colores (RGB o monocromo)
Almacenamiento de resultados
Interfaz salida
Procesamiento
Caractersticas
locales
Disparidad
Flujo ptico
Sistema completo
Tasa de
transferencia (fps)
40.77
35.04
30.65
23.21
del cdigo (ya comentada anteriormente) y de la aplicacin de las libreras de IPP para la
arquitectura Intel utilizada.
3 Resultados
Con el desarrollo de esta aplicacin hemos conseguido una plataforma completa para la
ejecucin y la depuracin de algoritmos de extraccin de primitivas de visin en tarjetas de
coprocesamiento.
En la Tabla 2 podemos ver algunos de los valores de tasa de transferencia en fps para los
diferentes procesamientos, con una resolucin de imagen de 512 x 512. Estas medidas se
hacen de forma emprica sobre la propia aplicacin. Destacar que en estos casos no es la
tarjeta de coprocesamiento ni el ancho de banda de comunicaciones los que limitan las
prestaciones del sistema sino el software de visualizacin y almacenamiento de datos lo que
ha motivado las optimizaciones descritas en la seccin anterior. Podemos ver cmo en todos
los casos mostrados somos capaces de obtener los resultados y visualizarlos en tiempo real.
Para la ltima prueba, caso en que mostramos los resultados de todas las primitivas extradas, la tasa es ms baja porque la cantidad de datos a manejar es mucho mayor.
En las capturas de las Fig. 7 y 8 podemos ver los resultados obtenidos ya postprocesados para su presentacin al usuario. En la primera podemos ver el resultado de disparidad al procesar una secuencia artificial bien conocida (Tsukuba) y en la segunda el
resultado de las salidas para energa, orientacin y fase y la estimacin de flujo ptico.
Fig. 8. Captura de la ejecucin de las caractersticas locales y la estimacin de flujo ptico. De izquierda a derecha, en la primera fila tenemos las tres ventanas de energa, orientacin y fase; en la
segunda fila, el fotograma de la entrada, el dilogo de la aplicacin con los procesamientos correspondientes marcados para ser visualizados y la representacin de la estimacin de flujo ptico.
Otro de los aspectos analizados ha sido el de la aplicacin de distintas bibliotecas de funciones para mejorar el rendimiento en el tratamiento de datos pesados. La gran capacidad de
procesamiento de la que son capaces los dispositivos basados en hardware reconfigurable
provoca que incluso la presentacin de resultados sea un reto en s mismo usando procesadores convencionales lo que motiv las optimizaciones mostradas: utilizacin de tcnicas de
optimizacin de cdigo, OpenCV, IPP y de OpenMP. De todas, la que consigue una
mejora mayor es la del uso de OpenMP, tal y como vemos en la grfica de la Fig. 6.
Como trabajo futuro, desarrollaremos bibliotecas de funciones para otras plataformas de
coprocesamiento y para interfaces de cmara de entrada as como soporte para otros Sistemas Operativos como Linux. As mismo se aadirn opciones para obtencin de los parmetros de rectificacin de pares de imgenes estreo a la aplicacin. Finalmente es necesaria la reduccin del ancho de banda de comunicaciones, para lo que sera posible la aplicacin de tcnicas de compresin o de condensacin de la informacin [18]. La aplicacin es
software libre y est protegida bajo una licencia GNU LGPL y, por tanto, los cdigos fuen-
Agradecimientos
Este trabajo ha sido financiado por el Proyecto Europeo DRIVSCO (IST-016276-2), el
proyecto nacional DINAM-VISION (DPI2007-61683), el Proyecto de la Junta de Andaluca P06-TIC-02007. Con el apoyo del Programa Alan, Programa de Becas de Alto Nivel de
la Unin Europea para Amrica Latina, beca n [E06D101749CO].
Referencias
[1]. Daz, J., Ros, E., Mota, S., Rotter, A., Muehlenberg, M.: Lane change Decision Aid system based
on motion driven car tracking. IEEE Transactions on Vehicle Technology, Vol. 57, N. 5, (2008),
2736-2746.
[2]. Mota, S., Ros, E., Ortigosa, E. M., Pelayo, F. J.: Bio-Inspired Motion Detection for Blind Spot
Overtaking Monitor. Int. Journal of Robotics and Automation, Vol. 19, (2004), 190-196.
[3]. Mota, S., Ros, E., Daz, J., Ortigosa, E.M., Ags, R., Carrillo, R.: Real-time visual motion detection of overtaking cars for driving assistance using FPGAs, LNCS, Vol. 3203, (2004), 1158-1161.
[4]. DRIVSCO Project, Learning to emulate perception action cycles in a driving school scenario,
sitio web en http://www.pspc.dibe.unige.it/drivsco (ltimo acceso en mayo 2009).
[5]. Daz, J., Ros, E., Mota, S., Carrillo, R.: Image Processing Architecture for Local Features Computation, Lecture Notes in Computer Science, Vol. 4419, (2007), 259-270.
[6]. Solari, F., Sabatini S.P., Bisio, G.M.: Fast technique for phase-based disparity estimation with no
explicit calculation of phase. Electronic Letters, Vol. 37, (2001), 1382-1383.
[7]. Sabatini, S.P., Gastaldi, G., Solari, F., Daz, J., Ros, E., Pauwels, K., van Hulle, M.M., Pugeault,
N., Krger, N.: Compact (and accurate) early vision processing in the harmonic space. II International Conference on Computer Vision Theory and Applications, Vol. IA, (2007), 213-220.
[8]. Gautama, T., van Hulle, M. M.: A Phase-based Approach to the Estimation of the Optical Flow
Field Using Spatial Filtering, IEEE Trans. Neural Networks, Vol. 13, (2002), 1127-1136.
[9]. Zuloaga, A., Martin, J., Ezquerra, J.: Hardware Architecture for optical flow estimation in real
time. IPIC-C98, (1998), 97-976.
[10]. Daz, J., Ros, E., Pelayo, F., Ortigosa, E. M., Mota, S.: FPGA based real-time optical-flow
system. IEEE Transactions on Circuits for Video Technology. Vol. 16, N. 2, (2006), 274-279.
[11]. Seven Solutions S.L., Sitio web y productos disponibles en http://www.sevensols.com (ltimo
acceso en mayo 2009).
[12]. Agility design solutions Inc., Sitio web, productos y fichas de caractersticas disponibles en
http://www.agilityds.com (ltimo acceso en mayo 2009).
[13]. Automated Imaging Association, Camera Link communication link, informacin disponible en
http://www.machinevisiononline.org/ (ltimo acceso en mayo 2009).
[14]. OpenCV, sitio web en http://opencv.willowgarage.com/wiki/ (ltimo acceso en mayo 2009)
[15]. Intel IPP, sitio web en http://software.intel.com/en-us/intel-ipp (ltimo acceso en mayo 2009)
[16]. OpenMP, sitio web en http://www.openmp.org/ (ltimo acceso en mayo 2009)
[17]. Baker, S., Scharstein, D., Lewis, J.P.: A Database and Evaluation Methodology for Optical
Flow. IEEE Int. Conference on Computer Vision (2007), 1-8.
[18]. Granados, S., Mota, S., Ros, E., Daz, J.: Condensacin de primitivas visuales de bajo nivel para
aplicaciones de procesamiento en tiempo real. JCRA (2008), 285-294.