Implementación, análisis y optimización de un estabilizador software de imágenes

Granados Calderay, Alberto (2018). Implementación, análisis y optimización de un estabilizador software de imágenes. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. Industriales (UPM), Madrid.

Description

Title: Implementación, análisis y optimización de un estabilizador software de imágenes
Author/s:
  • Granados Calderay, Alberto
Contributor/s:
Item Type: Final Project
Degree: Grado en Ingeniería en Tecnologías Industriales
Date: February 2018
Subjects:
Freetext Keywords: estabilizador, video, flujo de datos, algoritmos, FPGA, ZYBO, Xilinx, PREESM, SDSoC, Vivado HLS
Faculty: E.T.S.I. Industriales (UPM)
Department: Automática, Ingeniería Eléctrica y Electrónica e Informática Industrial
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[thumbnail of TFG_ALBERTO_GRANADOS_CALDERAY.pdf]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (3MB) | Preview

Abstract

El presente trabajo tiene como objetivo la implementación de un estabilizador de video software y el posterior análisis de los resultados obtenidos tras la simulación en diferentes escenarios, además de la búsqueda de métodos de optimización del proceso de estabilización basándose en la información obtenida anteriormente. En primer lugar, se estudia y analiza el funcionamiento de los diferentes algoritmos de estabilización software existentes con el fin de conocer cuáles tienen una mayor eficiencia, robustez o calidad. Posteriormente, se estudia también los diferentes modelos de computación de datos para poder comparar las ventajas e inconvenientes del método elegido para la construcción del estabilizador. Conociendo la citada información, se deduce que el estabilizador a desarrollar está basado en el recorte de la imagen, utilizando un algoritmo de análisis del vector de movimiento mediante un flujo de datos síncrono [9]. Las descripciones de tipo ‘flujo de datos’ son precisamente el método que se pretende analizar y, sobre todo, se trata de ver la facilidad de usar herramientas basadas en este tipo de descripción, tal como PREESM [17], la posibilidad de implementarlos mediante una herramienta para desarrollo de aplicaciones heterogéneas HW/SW denominada SDSoC [18] y la conversión desde lenguaje C a código VHDL mediante herramientas de síntesis de alto nivel tales como Vivado HLS [19]. A continuación, se procede con la implementación del estabilizador software en el Sistema Operativo Linux utilizando la herramienta PREESM, una herramienta que permite simular aplicaciones de procesado de señales y generar código en C para aplicaciones heterogéneas multi/many-core embebidos. Adicionalmente, la herramienta trabaja con flujos de datos síncronos, lo que facilita la implementación del estabilizador mediante un diagrama de actores y conexiones mediante FIFOs tal y como se ve en la a continuación. Con esta herramienta se simula y obtienen datos relativos al consumo de tiempos de cada uno de los actores, así como un esquemático de conexiones y diagrama de Gantt de la estructura y organización realizada por el programa para el correcto funcionamiento. Tras la simulación del estabilizador en distintos escenarios (un core, un core con diagrama paralelizado y 4 cores con diagrama paralelizado) se comparan los resultados y la salida de video estabilizado. Se llega a la conclusión de que, obteniendo el mismo resultado comparando los videos de salida, el escenario de un solo núcleo sin paralelizar consume un menor tiempo, ya que existe un mayor número de intercambios de datos entre actores a través de conexiones FIFOs en vez de intercambios mediante variables internas. Es importante resaltar que la solución con 4 cores paralelizada es más eficiente que la solución obtenida en el escenario de un core con el diagrama paralelizado.
En tercer lugar, utilizando el código en C generado por PREESM, se implementa y simula el estabilizador en la placa de desarrollo de FPGAs denominada ZYBO Zynq™-7000, gracias a la interfaz de comunicación Putty y a la herramienta de Xilinx SDSoC (programa que genera código ejecutable a partir del código en C). Realizando las modificaciones necesarias en el código se consigue realizar el análisis de prestaciones (profiling) y conocer de nuevo el consumo de tiempo de cada uno de los actores. Además, al igual que el caso anterior, se almacena el video estabilizado en una memoria SD para posteriormente compararlo con el generado en la etapa anterior. Finalmente, comparando los resultados obtenidos por ambos métodos, se observa que se obtiene exactamente el mismo video estabilizado (gracias a la comparación mediante funciones de Matlab) y que el consumo de tiempo en la simulación con la FPGA es menor y por tanto tiene un mayor rendimiento. Además, se estudia la forma de hacer que, el paralelizado que parecía empeorar el rendimiento en las simulaciones con PREESM suponga una forma de optimizar el funcionamiento del estabilizador gracias a la utilización de un acelerador hardware que se implementa utilizando el programa Vivado HLS. De este modo, se propone realizar un Pipeline en la función con mayor consumo de tiempo, que coincide en todas las simulaciones y es la encargada de calcular el vector de movimiento de cada uno de los bloques en los que se divide cada frame.

More information

Item ID: 49666
DC Identifier: https://oa.upm.es/49666/
OAI Identifier: oai:oa.upm.es:49666
Deposited by: Biblioteca ETSI Industriales
Deposited on: 13 Mar 2018 15:25
Last Modified: 13 Mar 2018 15:25
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM