Вы находитесь на странице: 1из 10

Entorno software para visualizacin y configuracin de

procesamiento de imgenes en tiempo real con plataformas


reconfigurables
Barranco F., Tomasi M., Vanegas M., Granados S., Daz J.
Dpto. Arquitectura y Tecnologa de Computadores, UGR, Granada, Espaa,
{fbarranco, mtomasi, mvanegas, sgranados, jdiaz}@atc.ugr.es
http://atc.ugr.es

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

de bajo nivel de la tarjeta coprocesadora, el sistema es flexible y generalizable, pudiendo


utilizar cualquier otra tarjeta (coprocesadora tipo PCI o incluso autnoma mediante comunicaciones por Ethernet) sin ms que cambiar la librera de comunicaciones de bajo nivel.
El resto del artculo est estructurado como sigue. La seccin 2 presenta la arquitectura
software-hardware del sistema desarrollado. La seccin 3 muestra los resultados obtenidos
(funcionalidades y medidas de la capacidad de visualizacin en tiempo real de gran volumen de datos). Finalmente la seccin 4 presenta las conclusiones y trabajo futuro.

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.

Fig. 3. En la izquierda, esquema del protocolo de inicializacin de la comunicacin. Utiliza cuatro


registros GPIO: dos para las transferencias de la plataforma de coprocesamiento (FPGA) y dos ms
para las transferencias del ordenador. Los GPIO1 se usan para parmetros de control y los GPIO2
para datos. En la derecha, esquema de comunicacin para el doble buffer. El ordenador establece la
comunicacin y la placa libera el banco de memoria utilizado previamente para el procesamiento y
reserva otro. Devuelve el identificador del nuevo banco reservado al procesamiento del ordenador y
finaliza la transmisin con seguridad (los valores de identificacin para los bancos son 0 y 1).

En primer lugar necesitamos establecer los parmetros para el procesamiento y abrir la


comunicacin con el dispositivo y, por otro lado, para el procesamiento se implementa un

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

RESTO DE FUNCIONES DE LA BIBLIOTECA

//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);

INICIALIZACIN A TRAVS DE JTAG


//Abre la comunicacin con el dispositivo
OpenFPGA(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.

De esta descripcin de la biblioteca de funciones se deduce que la FPGA de la tarjeta


puede programarse de dos formas. En primer lugar, cargando un fichero de configuracin
de datos (bitstream) directamente a travs del bus PCI/PCIe o utilizando un programador
JTAG.
2.2 Capa software
La capa software es la aportacin principal al sistema en la que se centra este trabajo. Su
desarrollo surge ante la necesidad de conjugar las distintas herramientas que se utilizaban
para el desarrollo de la extraccin de las primitivas de visin comentadas en la seccin 1 y
de dar soporte a la gran capacidad de cmputo necesaria para simplemente post-procesar y
visualizar los resultados obtenidos de la tarjeta de coprocesamiento.
Por un lado, contbamos con herramientas de depuracin para la implementacin hardware, no slo a nivel de programacin sino tambin para la ejecucin final. Desgraciadamente el uso de elementos especficos de las arquitecturas como los bancos de memoria, no
pueden depurarse fcilmente por lo que es necesario hacer pruebas de validacin del sistema final.

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.

Ante esta situacin se plante la posibilidad de concentrar todas estas funcionalidades en


una nica aplicacin que adems sea capaz de integrar algunas ms (ver Fig. 5). Tambin se
demandaban algunas caractersticas como la implementacin de una interfaz de usuario
amigable y fcil de utilizar, optimizada para una aplicacin de visin. La sencillez de la
interfaz de usuario es fundamental no slo por la mejora de usabilidad sino tambin por la
mejora en los tiempos de programacin debido a la utilizacin de la aplicacin tambin
como herramienta de depuracin.
Especificacin del sistema. El sistema implementado ha hecho uso del entorno de
desarrollo integrado de Visual Studio .Net 2003 y 2005.
Tanto para XircaV4 como para RC2000 consideramos instalados los manejadores.
Adems se han utilizado distintos paquetes de funciones para optimizacin en el tratamiento de la informacin.
OpenCV (Open Source Computer Vision) [14] es una biblioteca de funciones para aplicaciones de visin y que est optimizada para el procesamiento de datos en este campo. En
nuestra aplicacin se utiliza para la visualizacin de los resultados y en la aplicacin opti-

mizada de filtros de post y pre-procesamiento necesarios en algunos casos para simplificar


la interpretacin de los resultados obtenidos. Tambin mejora el rendimiento en el almacenamiento de resultados en disco en ficheros de imagen o vdeo con diferentes formatos.
El paquete de libreras de IPP (Intel Integrated Performance Primitives) [15] nos ofrece rutinas de bajo nivel de altas prestaciones para las aplicaciones de visin. Esto nos permite mejorar las prestaciones de las operaciones sobre matrices de datos, cuando estn
correctamente alineados en memoria. Adems, realizan tambin operaciones ms complejas
de forma eficiente como convoluciones u operaciones aritmticas de matrices. Todas estas
funciones estn diseadas para aprovechar al mximo el rendimiento de las arquitecturas
Intel.
La API OpenMP[16] ofrece un soporte de programacin paralela multiplataforma con
memoria compartida. En nuestra aplicacin ha sido utilizado principalmente para optimizar
los bucles complejos sobre los datos de salida, permitiendo aprovechar al mximo el rendimiento de los procesadores multincleo de los que disponemos para nuestro sistema. Una
de las tareas ms interesantes en este caso es el correcto uso de la planificacin (scheduling
en OpenMP) esttica o dinmica, en cada uno de los casos.
Para realizar la configuracin de la FPGA a travs de JTAG usamos Xilinx iMPACT.
Funcionalidad. La aplicacin se desarroll inicialmente para suministrar como entrada los
datos de ficheros pero, puesto que nuestro objetivo era ilustrar el funcionamiento del
sistema en tiempo real se decidi aadir unas cmaras. En la configuracin actual, el
sistema permite la utilizacin de hasta dos cmaras ya que est concebido para aplicaciones
que utilicen la visin estreo. No obstante, el software ha sido desarrollado de forma
modular y la inclusin de un mayor nmero de cmaras, si bien puede reducir las
prestaciones finales del sistema, puede programarse en un corto espacio de tiempo.
A continuacin se presenta una lista de funcionalidades del entorno:
- Resta de imgenes, que es til en calibracin y en la depuracin de estimacin de
disparidad.
- Rectificacin usando LUTs almacenadas. Puede hacerse tambin en hardware.
- Debayerizacin de la entrada (en caso de cmaras Pulnix).
- Toma de instantneas que se almacenan, utilizadas en la calibracin.
- Grabacin y almacenamiento de la entrada.
- Almacenamiento de los resultados, bien directamente desde la plataforma o incluso
los post-procesados.
Utilizamos ficheros de configuracin para definir caractersticas de la entrada y el procesamiento en la plataforma (ver Tabla 1). Adems, tambin se fijan algunos valores para el
procesamiento hardware. Las latencias hardware se incluyen puesto que el software no slo
se configur slo para obtener resultados sino tambin para depuracin
Finalmente, la funcionalidad ms relevante de la plataforma presentada es la de la visualizacin y presentacin de los resultados. La presentacin de las caractersticas locales abarca la energa, como una imagen monocromo con 256 niveles; la orientacin, en color (mapa de color jet) con un borde de imagen que juega tambin el papel de leyenda y la fase,
tambin en color. En cuanto a la disparidad, se muestra en color (mapa de color jet) mostrando con colores ms clidos los objetos ms cercanos y con los fros los objetos los ms
alejados. Adems, se dispone de un control de los niveles de saturacin de disparidad
(mximos y mnimos). Por ltimo, se muestra tambin la direccin del flujo ptico, en color. El borde de la representacin de los resultados tambin sirve en este caso de leyenda. El

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

Parmetros para procesamiento


Valor de parmetros de confianza
Latencias de los programas hardware
Nmero de escalas para alg. multiescala

Tabla 1 Muestra los parmetros que se definen en los ficheros de configuracin.

Optimizacin. La aplicacin, como se describi en el apartado anterior, hace uso de


diferentes bibliotecas de funciones para mejorar las prestaciones, puesto que la lectura y el
posprocesamiento necesarios suponen una gran carga computacional.

Procesamiento
Caractersticas
locales
Disparidad
Flujo ptico
Sistema completo

Fig. 6. En la figura, a la izquierda se muestra la


grfica de las tasas de transferencia para una
resolucin de 320x240, extrayendo y visualizando todas las primitivas, con las diferentes optimizaciones ya comentadas. La que consigue
mayor mejora del rendimiento es OpenMP.

Tasa de
transferencia (fps)
40.77
35.04
30.65
23.21

Tabla 2. La tabla muestra los valores de tasa de


transferencia para el clculo de la extraccin de
las distintas primitivas y para el sistema completo, para una resolucin de la imagen de entrada
de 512 x 512 pxels.

Es necesario utilizar concurrencia para aprovechar de forma ms ptima el tiempo de


procesamiento. As se utilizaron hebras tanto para la grabacin de los datos de las entradas
como de las salidas. Y, puesto que el almacenamiento en disco es pesado, se minimizaron
las operaciones de lectura/escritura con el mismo. Para minimizar las faltas de cach y
aprovechar su tamao, se optimizaron las medidas y accesos a las tablas de consulta y se
codific desenrollando bucles.
Utilizamos OpenCV tanto para la visualizacin de los resultados como de las entradas.
IPP que nos permite aprovechar las caractersticas de la arquitectura especfica y OpenMP
para mejorar el rendimiento del procesador con 4 ncleos del que disponemos.
En la Fig. 6 podemos ver una grfica con los resultados de tasa de transferencia conseguidos con la aplicacin de las diferentes optimizaciones. Se trata de una configuracin con
una resolucin de 320x240, computando y visualizando todas las primitivas. OpenMP se
muestra como la mejor alternativa para mejorar el rendimiento, seguido de la optimizacin

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.

Fig. 7. Captura de pantalla de la ejecucin de la disparidad sobre la secuencia artificial de Tsukuba.


En la zona central vemos el dilogo de la aplicacin con las posibilidades de ejecucin, a la izquierda,
vemos las capturas para los fotogramas izquierdo y derecho y a la derecha, los resultados (los colores
ms claros corresponden a puntos de la escena ms cercanos y los oscuros a los ms lejanos).

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.

4 Conclusiones y trabajo futuro


En este trabajo hemos presentado un entorno software y el codiseo hardware-software para
interfaz con tarjetas de coprocesamiento FPGA para la extraccin de primitivas de visin.
El sistema ha sido desarrollado de forma modular lo que permite la utilizacin de mltiples

tarjetas coprocesadoras de forma sencilla. Permite la utilizacin de mltiples tipos de pares


cmaras (web o cientficas) y utiliza interfaces de comunicacin tipo PCI/PCIe.
El software desarrollado y presentado en este trabajo destaca por la facilidad de uso, su
aplicabilidad tanto a la ejecucin para la presentacin y almacenamiento de resultados de la
extraccin de primitivas de visin como tambin para la depuracin de los cdigos desarrollados para la plataforma de coprocesamiento. Como se ha comentado, el desarrollo de una
interfaz de usuario amigable supone un rasgo fundamental con respecto a las dems herramientas utilizadas, por el ahorro en tiempo que supone para los desarrollos futuros. De ah
que, aunque la plataforma se ha desarrollado en el marco del proyecto DRIVSCO y para la
aplicacin ya descrita, se ha desarrollado con una visin de futuro como aplicacin genrica
que haga de interfaz entre el mundo real y una plataforma de desarrollo en la que se implementa un algoritmo determinado. Para llevarlo a cabo, tan slo sera necesario aadir nuevas primitivas para la presentacin de los resultados en el formato apropiado.

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-

te y la documentacin y tutoriales se encuentran accesibles a travs del sitio


http://code.google.com/p/open-rtvision/

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.

Вам также может понравиться