Cómo usar la plantilla Jornadas - JP2011

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/