Full text
Preview |
PDF
- Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (3MB) | Preview |
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.
Title: | Implementación, análisis y optimización de un estabilizador software de imágenes |
---|---|
Author/s: |
|
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 |
Preview |
PDF
- Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (3MB) | Preview |
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.
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 |