C APÍTULO 7
C ONCLUSIONES Y F UTUROS T RABAJOS
7.1. Introducción
Globalmente el capítulo pretende abordar las conclusiones obtenidas en la realización del proyecto fin de carrera, así como presentar una serie de posibles trabajos orientados a la realización de futuros proyectos fin de carrera o que constituyan nuevas líneas de investigación.
El capítulo expone de forma gráfica los resultados más significativos obtenidos durante el desarrollo del PFC. Los resultados muestran una comparativa entre el procesado de imágenes realizado por algoritmos desarrollado en hardware vs. algoritmos desarrollados mediante software. Para obtener una visión global de la comparativa se han utilizado tablas e imágenes que representan los tiempos de ejecución tanto del procesado hardware, como del procesado software.
A continuación, se enumeran las conclusiones más destacadas del proyecto, en las que se citan algunas ventajas y desventajas de las
-151-
técnicas de procesado utilizadas. El capítulo finaliza con la propuestas de futuros trabajos.
7.2. Evaluación del sistema. Comparación Software/Hardware (SW/HW).
Una de las tareas básicas en la realización del proyecto ha sido intentar evaluar, que plataforma HD o SW resulta más conveniente a la hora de abordar un problema de cómputo en el ámbito de la visión artificial, en definitiva, se ha intentado responder a la pregunta ¿cuál es la mejor solución de implementación para un determinado algoritmo?.
La evaluación de cualquier sistema de procesado no resulta una tarea fácil, debido a la disparidad de sistemas existentes en la industria y a la imposibilidad de comparar las diferentes metodologías computacionales de desarrollo.
Con el fin de tener un sistema de referencia con el cual comparar los resultados obtenidos por el sistema, se han comparado los resultados del procesado hardware con el procesado software realizado mediante librerías comerciales de procesado de imagen de alto nivel (Matrox Imaging Library).
Una variable importante suministrada por los diferentes fabricantes de sistemas de procesado de imagen es el tiempo de cómputo del sistema para diferentes algoritmos. La tabla 7.1 muestra los tiempos invertidos por diferentes procesadores actuales en el cómputo de una convolución 5x5. Este hecho sugirió la utilización de los tiempos de procesado hardware del sistema con respecto a los tiempos de procesado software para medir la bondad del procesado HD vs SW. La comparación se presenta en forma de tabla para cada uno de los algoritmos implementados.
Los tiempos de procesado han sido medidos mediante funciones de C/C++ que leen el reloj del sistema tanto al inicio como al final de la
-152-
Tiempos de procesado: Matrox Imaging Library Conv 5x5
Procesador Tiempo (ms)
Dual 2.2 GHz Opteron
1Thread 3.28
Dual 2.2 GHz Opteron
2Threads 1.64
Dual 3.0 GHz Intel Xeon
1Thread 3.38
Dual 3.0 GHz Intel Xeon
1Thread 1.74
Tabla 7.1. Test Matrox Imaging Library (Imagen 512x512x8).
ejecución del algoritmo, calculando el tiempo de procesado mediante la diferencia de ambas lecturas del reloj. El tiempo de procesado hardware incluye el intervalo de tiempo transcurrido en la transferencia y recepción de datos, y el tiempo empleado en el procesado del núcleo hardware. La máxima resolución de la medida temporal es 10ms.
A continuación, se exponen los resultados del procesado software y hardware para cada uno de los algoritmos desarrollados. El procesado software será realizado por un Pemtium II 400 MHz, mientras que el procesado hardware será realizado por una FPGA 4036 de Xilinx.
7.2.1. Algoritmo Laplace
La Figura 7.1. muestra el resultado del procesado hardware (Display
#2) de la imagen en escala de grises (Display #0) al aplicar una binarización (umbral = 200) y una convolución con una máscara de Laplace.
El tamaño utilizado de las imágenes es de 144x100x8bits. Cuanto mayor sea la imagen menos imágenes se podrán procesar por segundo.
La Tabla 7.2. muestra los tiempos de procesado software y hardware para el algoritmo de detección de bordes de Laplace.
-153-
Tiempos de procesado: Imagen 144x100x8bit Algoritmo Laplace (Detección de bordes)
Tiempo (ms) Aristotle
Configuración 120
Captura 40 (MIL)
Procesado 10
Empaquetado 0
Desempaquetado 0
Finalización 10
Figura 7.1. Resultados del procesado hw con Algoritmo Laplace.
Display #0 Display #2
Este algoritmo realiza la configuración de la Aristotle y de las MIL una sola vez, al principio del algoritmo, por eso no se tiene en cuenta para el tiempo de procesado (el procesado se realiza dentro de un bucle, donde se adquieren imágenes continuamente). Tampoco la finalización de ambos, ya que esta se realiza solamente al final. La captura de imágenes es realizada por las librerías MIL. En la Figura 7.2. se puede observar la ventana de comandos donde se muestran los tiempos de la Tabla 7.1. y también la cantidad de imágenes por segundo que ha sido posible procesar, es de hasta 13 fps (fotogramas por segundo).
La Figura 7.3. muestra la comparación entre los resultados del procesado software(Display #1) y hardware (Display #2) al aplicar el algoritmo de Laplace (umbral = 200) a la imagen en escala de grises del Display #0.
-154-
Tabla 7.2. Tiempos de procesado hw para el algoritmo de Laplace.
Figura 7.2. Resultados del procesado hw/sw con Algoritmo Laplace.
Obsérvese como el procesado hardware realiza una detección prácticamente idéntica a la del procesado software.
La Tabla 7.3. muestra los tiempos de procesado software y hardware para el algoritmo de detección de bordes de Laplace.
Tiempos de procesado: Imagen 144x100x8bit Algoritmo Laplace (Detección de bordes)
Tiempo (ms) MIL Aristotle
Configuración 0 121
Captura 40 40 (MIL)
Procesado 30 0
Empaquetado 0 0
Desempaquetado 0 0
Finalización 0 10
Fotogramas/s (fps) 9
Procesado total 70 40
En la Figura 7.4. se muestra la ventana de comandos donde se pueden observar los tiempos obtenidos con el procesado hardware junto al procesado software. Obsérvese también que ahora la cantidad de imágenes procesadas por segundo es menor (9 fps), esto es debido al tiempo que se invierte en el procesado software.
-155-
Tabla 7.3. Comparación entre tiempos de procesado sw/hw para el algoritmo de Laplace.
Figura 7.3. Resultados del procesado sw/hw con Algoritmo Laplace.
Display #1
Display #0 Display #2
7.2.2. Algoritmo Perímetro
La Figura 7.5. muestra la comparación entre los resultados del procesado software y hardware al aplicar el algoritmo del perímetro (umbral = 200) a la imagen en escala de grises (Display #0 de la Figura 7.1.).
Obsérvese como el procesado hardware realiza un cálculo muy aproximado a la del procesado software. La diferencia es muy
-156-
Figura 7.4. Resultados del procesado sw/hw con Algoritmo Laplace.
Figura 7.5. Resultados del procesado sw/hw con Algoritmo Perímetro.
pequeña y puede ser debida a que las librerías MIL utilizan algún algoritmo de aproximación.
La Tabla 7.4. muestra los tiempos de procesado software y hardware para el algoritmo de cálculo de perímetro.
Tiempos de procesado: Imagen 144x100x8bit Algoritmo Perímetro (Cálculo Perímetro)
Tiempo (ms) MIL Aristotle
Configuración 0 190
Captura 200 200 (MIL)
Procesado 20 10
Empaquetado 0 0
Desempaquetado 0 0
Finalización 0 0
Procesado total 220 210
En la tabla anterior se puede observar que el tiempo de captura de la imagen es mayor al tiempo de captura obtenido en Algoritmo Laplace.
7.3. Conclusiones
Durante la consecución del actual PFC se han llegado a las siguientes conclusiones.
Para el desarrollo de los algoritmos hardware se ha optado por una arquitectura reconfigurable basada en FPGAs (tarjeta Aristotle de MiroTech).
Las imágenes a procesar son capturadas por una cámara analógica monocroma (CV-M10 de JAI) y digitalizadas por un frame grabber (tarjeta Genesis de Matrox).
Los algoritmos hardware han sido desarrollados bajo Foundation 2.1, e implementados sobre una FPGA de Xilinx, en concreto una XC4036EX.
Se han desarrollado dos algoritmos hardware:
o Algoritmo para detección de bordes mediante máscara 3x3 de Laplace.
o Algoritmo para el cálculo de perímetro.
Debido a la capacidad de la FPGA (36.000 puertas lógicas) el ancho de las imágenes que puede procesar es de poco más de 100 píxeles. Se ha optado por imágenes de 100 píxeles de
-157-
Tabla 7.4. Comparación entre tiempos de procesado sw/hw para el algoritmo de Perímetro.
ancho para dedicar el resto de capacidad a algoritmos de procesado. La capacidad utilizada es de, aproximadamente, un 70 % del total.
Se han desarrollado dos interfaces software sobre un PC-Host para la configuración, comunicación y visualización:
o TestBinM para el algoritmo de detección de bordes.
o TestPerim para el algoritmo de cálculo de perímetro.
Los algoritmos software han sido elaborados, bajo lenguaje C/C++, sobre un microprocesador Pentium II a 400MHz.
Para el desarrollo de los algoritmos software se han utilizado las librerías de procesado de imágenes de Matrox (MIL). Estas librerías también han sido utilizadas para el control del frame grabber.
Para acelerar el proceso de transferencia de datos entre el host y la tarjeta Aristotle se han empleado funciones de C/C++
basadas en hilos. Estas funciones de C/C++ permiten una ejecución concurrente de procesos, así como, aumentar el rendimiento del programa. Los hilos son utilizados para escribir los datos de la imagen en la cola FIFO_IN y leer los datos desde la cola FIFO_OUT de forma concurrente en la tarjeta Aristotle.
Una vez terminado el proceso concurrente de lectura y escritura, los resultados son devueltos a la interfaz software.
El tamaño de las imágenes con las que se ha trabajado es de 144x100 pixeles. La escasa capacidad de la FPGA utilizada (XC4036EX) es consecuencia de la utilización de imágenes tan pequeñas. Actualmente, hay FPGAs con mayor capacidad (p.ej.
Serie Virtex II de Xilinx con 3 millones de puertas lógicas).
Para imágenes de mayor tamaño se pueden utilizar bancos de memoria externos. Esto permitiría procesar imágenes de mayor tamaño pero con la consecuente penalización en el tiempo de procesado debido al acceso a la memoria.
Se ha desarrollado una plataforma para la comparación de algoritmos desarrollados en hardware vs. software.
El máximo de imágenes que se han podido procesar por segundo es de 13 fps. Es obvio que el tamaño de la imagen influye, en gran medida, en el tiempo de cómputo de las imágenes.
El tiempo de cómputo de los algoritmos hardware es menor que el de los algoritmos software. Esto es una ventaja notable a la
-158-
hora de buscar la mayor velocidad posible en el procesado de imágenes. Luego a la hora de implementar algoritmos de visión artificial, los algoritmos hardware son una buena opción.
Debido al alto conocimiento en programación que se requiere, para el desarrollo de algoritmos software de visión artificial, los algoritmos hardware se pueden considerar una alternativa más sencilla que no requiere un alto nivel de programación.
No se ha logrado un procesado en tiempo real, el cual necesita procesar, como mínimo, un total de 25 imágenes por segundo (25 fps). La lentitud de procesado se debe en gran parte, al bus PCI (33Mhz), cuya velocidad de transferencia es de 133Mbits/s, con un bus de datos de 32 bits. Hay que tener en cuenta que al bus PCI está conectado, además de la tarjeta Aristotle, la tarjeta Genesis, y ésta, además, realiza la función de tarjeta de vídeo.
7.4. Trabajos propuestos
Para continuar con la misma línea de este proyecto se proponen los siguientes trabajos:
1. Desarrollo de algoritmos hardware para procesado de imágenes, con el objetivo de obtener una amplia librería de algoritmos de visión artificial sería conveniente desarrollar más algoritmos hardware. Como por ejemplo, algoritmos de etiquetado, algoritmos de reconocimiento de patrones, etc.
2. Algoritmo hardware para la captura de imágenes con cámaras digitales, que permita obtener directamente, imágenes desde una cámara digital sin necesidad de obtenerlas con un frame grabber u otro dispositivo externo para la captura de imágenes digitales.
3. Interfaz gráfica para la implementación de algoritmos hardware, donde se pueda seleccionar, desde una librería, el algoritmo hardware que se quiera utilizar.
-159-
-160-