Sistema modular desarrollado en FPGA, para el cálculo de mapas de disparidad de imágenes estereoscópicas. Salvador Ibarra1, J. Ignacio Benavides2 y M. Hernández Calviño3 Resumen— La solución del problema de correspondencia, para encontrar la profundidad de los componentes de una escena a partir de dos imágenes, es fundamental en los sistemas de visión estereoscópica. Este problema ha sido extensamente estudiado dando como resultado le creación de una gran cantidad de algoritmos de correspondencia estereoscópica. Decidir que algoritmo debe ser utilizado depende de la aplicación particular, debiendo hacer una evaluación objetiva en cuanto a la precisión, tiempo de cómputo y recursos utilizados que demanda la aplicación. Con el desarrollo de nuevas tecnologías de hardware como es el caso de los FPGAs, se ha creado un enorme interés en implementar, sobre ellas, aplicaciones de visión estereoscópica para sistemas de tiempo real. En el marco del diseño e implementación de un sistema de visión estereoscópica que pueda ser integrado en un dispositivo autónomo móvil, resulta necesario desarrollar aplicaciones que permitan evaluar que tipo de algoritmos presentan mejores características cuando son implementados en hardware. Aquí presentamos un sistema que permite evaluar, de manera sencilla y eficiente, diferentes algoritmos de correspondencia estereoscópica. Los resultados obtenidos indican que la herramienta diseñada proporciona información suficiente para evaluarlos en dos aspectos básicos, su operación y los recursos utilizados. La herramienta debe de ser todavía mejor optimizada para obtener resultados precisos del tiempo de cómputo, sobre todo para sistemas de tiempo real. Palabras clave— Correspondencia estereoscópica, FPGA, Controlador de Memoria. I. INTRODUCCIÓN E l uso de la visión estereoscópica para recuperar información tridimensional de una escena y calcular la profundidad de la misma, se ha convertido en un tema de interés en los últimos años en el campo de la visión artificial. Sus características en términos de fiabilidad, exactitud, costo, rangos de operación, la han convertido en un método ampliamente usado en áreas como la robótica, vehículos autónomos no tripulados, aplicaciones de seguridad, interface hombre máquina, entre otros. 1 Unidad Académica de Ingeniería Eléctrica, Universidad Autónoma de Zacatecas, Zacatecas,México, e-mail:[email protected]. 2 Depto. De Arquitectura de Computadores, Electrónica y Tecnología Electrónica, Escuela Técnica Superior, Universidad de Córdoba, Córdoba, España, e-mail: [email protected]. 3 Facultad de Física, Universidad de la Habana, La Habana, Cuba, email: [email protected]. Existen una gran cantidad de sistemas que debido a sus características, deben de realizar el cálculo de la profundidad de la escena en tiempo real. Por ejemplo un sistema de navegación implantado sobre un dispositivo autónomo móvil debe de ser capaz de analizar el estado de una escena en el orden de milisegundos, con el propósito de que su módulo de navegación pueda tomar decisiones y evadir los obstáculos que se interponen entre él y la meta a alcanzar. El presente proyecto tiene como objetivo, desarrollar una plataforma modular que permita evaluar diferentes algoritmos, implementados en hardware de correspondencia estereoscópica, de tal forma que sea relativamente sencillo el cambio de métrica de evaluación de la correspondencia estéreo. El resto del documento está dividido de la siguiente manera: En la sección 2, se muestran y discuten los resultados de implementaciones previas. La sección 3, describe las características de la visión estereoscópica y dada la necesidad del uso de los bancos de memoria externa a la FPGA, la utilización de los controladores de memoria, que tienen los FPGAs de la presente generación, dadas las características de las placas de desarrollo actuales. La sección 4, muestra cómo fue diseñado el sistema y la interacción de sus partes. La sección 5, muestra y explica los resultados del desarrollo e implementación de los elementos del proyecto, así como de su integración final. La sección 6, discute los resultados obtenidos. La sección 7, dentro del marco de un trabajo incremental, se propone diferentes alternativas que permitan el desarrollo de un sistema que evalúe eficientemente la aplicación de los algoritmos de correspondencia estereoscópica en sistemas de tiempo real. II. A. MARCO CONCEPTUAL Geometría del Sistema Estereoscópico El uso de la visión estereoscópica es una alternativa para encontrar la profundidad de una escena basada en un par de imágenes cuyos centros ópticos se encuentran separados ligeramente entre sí. La separación que existe entre dos puntos correspondientes en el par de imágenes estereoscópicas, permite conocer la distancia a la que se encuentran los objetos del centro óptico de los sensores de visión. En la medida que los objetos estén más cerca del centro óptico de los sensores, se encontraran más separados en las respectivas imágenes estereoscópicas. Conociendo los parámetros de las cámaras y habiendo encontrado la distancia que separa un punto en un par de imágenes estereoscópicas, la profundidad del mismo puede ser calculada obteniendo el inverso de la disparidad calculada para ese punto. En la figura 1 se tiene que CL y CR representan los centro ópticos de las cámaras derecha e izquierda respectivamente, XL y XR representan la distancia del centro óptico reflejado en la imagen al lugar donde el punto es reflejado en la imagen respectiva, T es la distancia entre las dos cámaras y f es la longitud focal de la cámara. Entonces la disparidad del punto P está dada por d = XL - XR (1) Para determinar la profundidad de la escena tridimensional usando los puntos de disparidad que corresponden a ambas imágenes, basados en la geometría de la cámara, se puede usar la siguiente expresión. Z = f ∙ (T/d) (2) Entonces dado lo anterior, el problema fundamental consiste en encontrar la correspondencia exacta entre dos puntos. La correspondencia estereoscópica es el proceso por el cual dado un punto en la escena 3-D se llega a determinar cuál es su proyección en sendas imágenes del par estereoscópico. Existen diferentes técnicas para encontrar la correspondencia estereoscópica, las cuales se dividen principalmente en técnicas basadas en el área de las imágenes y técnicas basadas en las características de las imágenes. Del mismo modo existen diferentes métricas para el cálculo de dicha disparidad. Algunas de estas pueden ser fácilmente paralelizadas e implementadas en hardware de tal modo que permiten al análisis de sistemas en tiempo real, tal es el caso de la métrica de Suma de los valores absolutos de las diferencias. de última generación. Así mismo los FPGAs, proveen cores controladores de memoria para su uso. En los sistemas actuales los circuitos lógicos programables, tienen la capacidad de conectarse con una gran variedad de tipos de memoria como pueden ser, SDRAM, DDR, DDR2, DDR3, entre otras. Dado que resulta complicado el desarrollo de controladores específicos para cada tipo de memoria, las compañías desarrolladoras de dispositivos lógicos programables, han optado por desarrollar controladores de memoria que le permitan al usuario un acceso sencillo y eficiente a memoria. Tal es el caso de Xilinx que ha desarrollado el Multi-Port Memory Controller (MPMC) que permite el acceso a memoria por parte diferentes procesadores o periféricos implementados al interior del FPGA [9]. El MPMC es un controlador de memoria multipuerto, que dependiendo del tipo de FPGA en que se implemente puede controlar hasta 8 puertos. Cada uno de estos puertos puede ser parametrizable y se puede seleccionar por cada puerto hasta siete interfaces diferentes de comunicación. El MPMC actúa como el controlador y el árbitro que permite en un momento específico la interacción de uno de los ocho puertos con la memoria, por medio de elementos FIFO de cada puerto. Cada una de las interfaces de comunicación permite diferentes modos de acceder a la memoria, pero una vez que el MPMC por medio de sus líneas de control, indica que tiene atrapados la dirección y el dato, el dispositivo asociado a éste puede enviar o solicitar el siguiente dato. Una de las interfaces provistas por el MPMC, es la Native Port Interface (NPI), que es la interface nativa del controlador, permite transferencia de datos en 32 o 64 bits, y diferentes modos de transferencia como son el modo sencillo, modo burst y el modo de cacheline, permitiendo de forma simultánea la lectura y escritura de datos de los FIFOs del controlador. Por lo sencillo de esta interface puede ser prácticamente adaptada a casi cualquier protocolo de comunicación. III. Fig. 1 Geometría de un sistema estereoscópico Fuente (V. Simhadri, 2009) B. Controladores de Memoria Externa Cada día es más común encontrar desarrollos de sistemas de visión estereoscópica basados en FPGA, lo que no es de extrañar dadas las excelentes características que éstas proveen para el desarrollo de este tipo de sistemas. Por otro lado, existen aplicaciones que requieren del uso de grandes cantidades de memoria, siendo insuficiente la memoria que proveen los FPGAs, por lo que resulta común hoy en día, encontrar tarjetas de desarrollo que adicionan memorias TRABAJOS PREVIOS RELACIONADOS Si bien en los últimos años se han desarrollado un conjunto de propuestas Software, para la solución del problema de correspondencia estereoscópica, el avance en las tecnologías de los dispositivos lógicos programable, especialmente las FPGAs, ha permitido que se desarrollen una serie de propuestas hardware, basadas en ellas, debido a las características que estos presentan tales como: su capacidad de cómputo en paralelo, su capacidad de reconfiguración y la posibilidad de utilizar bloques de memoria interna como elementos de almacenamiento de imágenes. Estas propuestas hacen énfasis en aspectos en los que el desarrollo de sistemas de visión estereoscópica basados en FPGA permite ayudar, especialmente si estos serán utilizados en aplicaciones de tiempo real. En [1] se presenta un algoritmo de correspondencia estéreo implementado en hardware. Utilizando como métrica de costo y agregación la suma de los valores absolutos de las diferencias. Posteriormente, el resultado es refinado por medio de un proceso que utiliza un autómata celular. Los resultados muestran que el algoritmo puede ser implementado eficientemente en hardware y que el cálculo de la profundidad de las escenas se ajusta a los tiempos demandados por sistemas de tiempo real. En [2], se presenta un sistema de tiempo real desarrollado en hardware para la extracción del mapa de profundidad, su propuesta utiliza el filtro de la mediana para el cálculo de predicciones y decidir qué tan parecido es un frame con respecto al anterior, de tal modo que pueden minimizar el tiempo de cómputo, los resultados indican que el consumo de tiempo es 56 veces menor con respecto a la misma implementación realizada en software. La implementación del algoritmo de suma de los valores absolutos de las diferencias (SAD), en sistemas de tiempo real, para resolver el problema de encontrar la correspondencia estereoscópica, ha sido tratada por diversos autores. En [3] se presenta el diseño de una arquitectura basada en la FPGA de Altera Stratix II usando ventanas de 4 x4 y profundidad de 90 pixeles. Su diseño alcanza un procesamiento de 85 fps en imágenes de 1024 x 1024 pixeles. En [4], se presenta un sistema basado en una FPGA de Xilinx Virtex II, que procesan imágenes provenientes de tres cámaras con tamaños de ventana de 15 x 15 y rango de disparidad de 32 pixeles, alcanzando un procesamiento de 100 fps., sobre imágenes de 320 x 240 pixeles. En [5] utilizando un sistema basado en FPGA procesa imágenes de 512 x 512 pixeles con una disparidad de 255 pixeles, usando tamaño de ventanas de 5 x 5, alcanzando un procesamiento de 25.6 fps. Por su parte en [6], se presenta una implementación que además de cumplir con los parámetros de los sistemas de tiempo real, muestra tener una buena exactitud, alcanzando un procesamiento de 60 fps. sobre imágenes de 750 x 400 pixeles con un rango de disparidad de 60 pixeles y tamaño de ventana de 23 x 23. La implementación de medidas no-paramétricas en sistemas de tiempo real es evaluada en [7] que implementa la transformada no paramétrica Census sobre imágenes de 512 x 480 pixeles usando un rango de disparidad de 52 pixeles y tamaño de ventana de 7 x 7, obteniendo un procesamiento de 200 fps. En [8] se presenta una implementación basada en FPGA de la transformada no paramétrica Census con tamaño de ventana de 7 x 7, con una disparidad máxima de 64 pixeles, sobre imágenes de 640 x 480 pixeles, alcanzando en procesamiento de 130 fps. IV. ESTRUCTURA DEL PERIFERICO El desarrollo de este trabajo, está fundamentado en la creación de un conjunto de periféricos que son añadidos a un sistema controlado por el procesador embebido MicroBlaze (MB) dentro de un FPGA Spartan 6 LX45T de Xilinx. Aunque las funciones que realiza el procesador sobre los dispositivos son mínimas, se provee de una interface con la cual la interacción con los periféricos es sencilla, aunado a esto se aprovechan rutinas de uso común desarrolladas en trabajos anteriores [10], [11]. La figura 2 muestra el diagrama general del sistema, donde se puede observar al MB conectado por medio del Processor Local Bus (PLB) al controlador serie RS232. Esta conexión tiene como principal objetivo, por un lado, tener un medio por el cual se puedan controlar los diferentes dispositivos que se le conectan al sistema y por otro, monitorear cuando así sea necesario, las señales provenientes de estos dispositivos. Fig. 2 Diagrama General del sistema de correspondencia estereoscópica Se ha desarrollado una interface hacia el controlador PLB, por medio de la cual se puede acceder hasta a 8 registros diferentes de escritura de 32 bits cada uno, del mismo modo la interface provee la circuitería necesaria para poder leer un dato proveniente de uno de ocho registros de entrada de 32 bits. Esta interface permite independizar los periféricos desarrollados, del controlador PLB. El acceso a los registros de entrada/salida de la interface se logra realizando una llamada a la dirección base más el desplazamiento del registro. La figura 3 muestra el diagrama esquemático de este módulo. Los trabajos anteriormente mencionados, logran alcanzar las frecuencias de procesamiento indicadas, debido principalmente a dos situaciones, 1- tienen un flujo de datos de entrada que no proviene de memoria sino de sensores ópticos y 2-utilizan elementos internos de la FPGA para almacenar el flujo de datos en pipeline. Fig. 3 Interface con el bus PLB Como se mencionó anteriormente el MPMC cumple con el objetivo de ser la interfaz entre la memoria externa del sistema y los diferentes dispositivos que requieran de ella. En el sistema desarrollado se puede observar que se tiene acceso a la memoria externa por dos vías, una vía es por medio del controlador Processor Local Bus (PLB) utilizado principalmente por el MB para acceder a datos e instrucciones, la otra vía es por la Native Port Interface (NPI) que es utilizada por el periférico encargado de generar las direcciones de memoria de donde se quieren tomar los datos de las imágenes estéreo previamente almacenadas y donde se quiere guardar la información del mapa de disparidad, información generada por el módulo de cálculo de la suma de las diferencias absolutas. Del mismo modo que se desarrolló la interface con el controlador PLB, se desarrolló una interface de comunicación con el controlador de memoria MPMC en el modo NPI de 32 bits. Esta interface permite la lectura/escritura en memoria externa una vez que previamente han sido registrados tanto la dirección de lectura/escritura como el dato a ser enviado a memoria. En la figura 4, se observa esta interface. La máquina de estados genera las señales de control necesarias para leer/escribir un dato de 32 bits en memoria por medio del NPI, en el caso de la escritura toma 5 ciclos de reloj en efectuarla, en el caso de la lectura el tiempo puede variar siendo mínimo de 5 ciclos, esto se debe a que el controlador y por la política de arbitraje seleccionada (round robin), puede estar atendiendo las solicitudes del MB por el puerto PLB. disparidad. El otro módulo es el encargado de hacer al cálculo de la disparidad basado en un algoritmo que utiliza como métrica de medida la Suma del valor absoluto de las diferencias (SAD). La generación de direcciones de memoria es realizada por un módulo que consta de dos elementos como se muestra en la figura 5. El primer modulo genera la lógica necesaria para el cálculo de la coordenadas (x,y) del elemento que se desea almacenar o recuperar de la memoria. El cálculo de estas coordenadas se efectúa basado en las necesidades de datos requeridos por los algoritmos de cálculo de disparidad que obtienen mapas densos. El segundo módulo genera la dirección efectiva de memoria de donde el dato será recuperado o almacenado, basado simplemente en una dirección base y las coordenadas del (x,y) del sistema. Por ejemplo, si se tiene una imagen sintética de 388 x 288 pixeles [tomada de, 13] y se desea recuperar el dato de la coordenada (x=10, y=20) a partir de la memoria base 88000000hex, el módulo realiza el cálculo mostrado en la figura 6, dando como resultado la dirección real de memoria 88019850hex que es de donde se tomará el dato. Fig. 5 Generador de dirección efectiva de memoria Fig. 4 Interface con el MPMC en el modo NPI Una vez que se han registrado la dirección y el dato que se desean leer/escribir en memoria, se manda una señal de inicio a la máquina de estados que controla el proceso, adicionalmente se le indica si el proceso que se quiere efectuar es de lectura o de escritura (LNE=1 Lectura, LNE=0 Escritura). La máquina de estados responde que el proceso terminó satisfactoriamente con una señal de LF=1 en caso de que el proceso sea de lectura, o con una señal de EF=1 en caso del que proceso sea de escritura. El cálculo de la disparidad es realizado por el módulo que se muestra en la figura 7, este módulo carga inicialmente la ventana izquierda de 3x3 de acuerdo a los datos que le provee el puerto NPI a su vez alimentado por el generador de direcciones, posteriormente de la misma forma es cargada la ventana derecha y se calcula la suma de diferencias absolutas, teniendo como resultado el primer mínimo, posteriormente se cargan tres elementos nuevos para la nueva ventana derecha y se calcula la segunda diferencia absoluta, este valor se compara con el anterior y si es menor que el mínimo anterior, se ha encontrado un nuevo mínimo, el valor del mínimo y su posición son almacenados en registros para su posterior utilización, el proceso se repite para una disparidad máxima de 32 posiciones. Una vez terminado el proceso, el resultado es la posición donde se encontró la mínima diferencia absoluta. Este valor es almacenado en el mapa de disparidad. . El elemento principal del sistema, es un periférico que permite calcular al mapa de disparidad de dos imágenes estéreo almacenadas en memoria. Este periférico está dividido en dos módulos, uno encargado de controlar y generar las direcciones de memoria para tomar los datos con los que se calculará la disparidad, así como para generar las direcciones donde se almacenara el mapa de Fig. 6 Cálculo de la dirección efectiva V. RESULTADOS DE LA IMPLEMENTACIÓN Los periféricos desarrollados que integran el sistema fueron probados inicialmente de forma independiente y finalmente fueron integrados en un sistema embebido controlado por el MB. El controlador de la interface PLB fue probado exhaustivamente y se logro una comunicación total con sus registros. Fig. 7 Cálculo de la Suma del valor absoluto de las diferencias y de la mínima diferencia La interface con el puerto nativo, permite que registrados la dirección y el dato que se quiere escribir, se genere una señal de control que permita acceder a memoria externa y almacenar el dato, lo mismo se logró para el proceso de lectura de datos. El hecho de registrar previamente la dirección y el dato, hace necesario agregar un estado adicional a la máquina de estados que controla la interface, lo cual añade un ciclo de reloj al proceso de lectura/escritura de los datos. El periférico que calcula el mapa de disparidad, fue comparado con una implementación desarrollada por software con la misma plataforma, los resultados muestran que se logra obtener un mapa de disparidad semejante, tal como se muestra en la figura 9. Se puede observar que existe un pequeño incremento de falsos positivos en la implementación por hardware debido principalmente a la precisión de datos utilizados en esta implementación. El desarrollo del periférico se realizó siguiendo el algoritmo SAD de forma estrictamente procedimental, sin ningún tipo de optimización. En una primera aproximación, tomando cada uno de los pixeles conforme estos se van necesitando y sin almacenar datos que puedan se reutilizados, los resultados obtenidos muestran que la implementación hardware, si bien es más rápida que la implementación de software, no logra los requerimientos mínimos necesarios para un sistema que trabaje en tiempo real, ya que solo puede procesar 1.17 fps teniendo imágenes de 384 x 288 pixeles, con una disparidad máxima de 32 pixeles y un tamaño de ventana de 3 x 3. Una segunda implementación, utilizando el modo de lectura de burst del NPI leyendo 32 palabras, permite un acceso más eficiente a memoria. Los datos son almacenados en BRAM para tres líneas de la imagen, y los datos de las líneas inferiores son reutilizados de tal forma que se realizan menos accesos a memoria de forma que reducen el cuello de botella, de forma que se pueden procesar 16.57 fps, tiempo suficiente para algunas aplicaciones de tiempo real. Es posible de forma sencilla duplicar o cuadruplicar el número de frames por segundo, añadiendo estructuras en paralelo que permitan realizar el cálculo del SAD mínimo en varias regiones de la imagen de forma simultanea. VI. CONCLUCIONES Las interfaces que se desarrollaron, tanto para el acceso al bus PLB, como para el acceso al puerto nativo del MPMC en su modalidad de 32 bits, dejan por un lado, interactuar de forma sencilla con estos controladores y por otro lado, en el momento de diseño, la manipulación de los controladores es más ordenada, permitiendo aislar efectivamente los elementos de diseño, con lo cual el proceso de detección y corrección de errores (debugging) resulta menos complicado. Si bien el objetivo final del proyecto es desarrollar un sistema de visión que cumpla con los requisitos de tiempo real, la herramienta, en su estado actual, resulta efectiva porque permite probar diferentes algoritmos, con el modelo desarrollado, aislando el acceso a los datos del propio algoritmo. A partir de ahí se pueden se puede comenzar a diseñar estrategias que permitan lograr el requisito de velocidad en los sistemas de tiempo real. Fig. 9 Mapas de disparidad resultantes de las implementaciones de software y hardware Se ha logrado una independencia entre la métrica que se desea utilizar para el cálculo de la disparidad de un sistema estéreo, y el módulo que genera las direcciones de memoria donde están las imágenes estereoscópicas. De este modo es posible probar una amplia variedad de métricas que generan mapas de disparidad densos, utilizando el mismo módulo de direccionamiento. Por otro lado es posible de manera rápida y sencilla cambiar el tamaño de las imágenes y la disparidad con la cual se desea realizar el cálculo. En la primera implementación que se realizo en hardware, se puede observar claramente que el cuello de botella se encuentra en el acceso a memoria, debido al que el controlador consume por lo menos 5 ciclos de reloj en entregar un dato. Se puedo observar que cambiando de protocolo para el acceso a memoria y teniendo elementos de almacenamiento que permitan re usar datos que ya han sido previamente cargados, se puede incrementar significativamente la cantidad de frames por segundo que se pueden procesar. Si a lo anterior se le agregan arquitecturas en paralelo para calcular el SAD mínimo en diferentes regiones de las imágenes, el incremento aún es mayor Puesto que el objetivo del sistema que se presenta, es la evaluación de los algoritmos de correspondencia estereoscópica en sistemas de tiempo real, en este momento el sistema diseñado resulta una herramienta adecuada para probar diferentes métricas de visión estereoscópica, así como también probar diferentes valores de disparidad y tamaños de ventana, aunque como ya se explico no alcanza a procesar una imagen cambiante en tiempo real por el cuello de botella que impone la utilización del MPMC. Una vez analizados los algoritmos tanto en precisión como en consumo de recursos, se pasará a la etapa de optimización del sistema VII. TRABAJO FUTURO Para el trabajo futuro se prevé expandir las posibilidades del periférico, de forma tal que permita configurar las características principales para el mapa de disparidad como son, el tamaño de las imágenes, el nivel de disparidad, el tamaño de las ventanas entre otros. En el marco de referencia de desarrollar un sistema en tiempo real que permita a un dispositivo autónomo móvil, navegar en un entorno desconocido, resulta necesario optimizar el periférico que calcula el mapa de disparidad. Una de las posibles vías, es implementar una arquitectura de memoria interna al FPGA, de tal modo que permita un acceso más eficiente a memoria y que reuse parte de los datos que ya han sido previamente cargados en el periférico. REFERENCIAS [1] L. Nalpantidis, G. Ch. Sirakoulis, and A. Gasteratos, “A Dense Stereo Correspondence Algorithm for Hardware Implementation with Enhanced Disparity Selection”, SETN '08 Proceedings of the 5th Hellenic conference on Artificial Intelligence: Theories, Models and Applications, pp. 365-370, Springer-Verlag Berlin, Heidelberg, 2008. [2] Dong-Sun Kim, Sang-Seol Lee and Byeong-Ho Choi, “A Real-Time Stereo Depth Extraction Hardware for Intelligent Home Assistant Robot”, IEEE Transactions on Consumer Electronics, Vol. 56, Issue 3, pp. 1782-1788, Octubre 2010. [3] C. Cuadrado, A. Zuolaga, J. Martin, J. Laizaro, J. Jimenez, “Real time stereo visión processing system in a FPGA”, Proceedings of the IEEE 32nd Annual Conference on Industrial Electronics, 2006 [4] L. Mingxiang , J. Younde, “Stereo system on programmable chip (SVSoC) for small robot navigation”, Proceedings of the IEEE /RSJ International Conference on Intelligent Robots and Systems, 2006 . [5] S. Perri, D. Colonna, P. Zicari, P. Corsonello, “SADbased stereo matching circuit for FPGAs”, Proceedings of the 13th IEEE international Conference on Electronics, Circuits and Systems, 2006 [6] K. Ambrosch, W. Kubinger, “Accurate hardwarebased stereo vison”, Computer Vision and Image Understanding, pp. 1303-1316, Elsevier, 2010. [7] J. Woodfill, G. Gordon, R. Buck, “The Tyzx DeepSea high speed stereo vision system, a taskable, embedded stereo camara”, Proceedings of the 2006 Conference on Computer Vision and Pattern RecognitionWorkshps, 2006. [8] A. Naoulou, J. Boizard, J. Yves, M. Devy, “An alternative to sequential architectures to improve the processing time of the stereovision algorithms”, Proceedings of the International Conference on Field Programmable Logic and Applications”, 2006. [9] Xilinx, “Multi-Port Memory Controller (MPMC) (v6.02.a)”, http://www.xilinx.com/support/documentation/ip_docu mentation/mpmc.pdf, Xilinx, 2011. [10] M. Calviño, “Ambiente para la depuracion y prueba de aceleradores de hardware”, Jornadas de Paralelismo, Castellon, España, 2008 [11] S. Ibarra, M. Calviño, J. Benavides, “Diseño y evaluación de un acelerador hardware configurable para realizar la convolución, acoplado como periférico al Microblaze”, XXI Jornadas de Paralelismo, Valencia, España, 2010 [12] V. Simhadri, Y. Osturk, “RASCor: An associative hardware algorithm for real time stereo”, Computers and Electrical Engineering, Vol. 35, pp. 459-477, Elsevier, 2009. [13] D. Scharstein, R. Szeliski, Middlebury Stereo Datasets, http://vision.middlebury.edu/stereo/data/
© Copyright 2024