[en] The increasing number of image and video content, and the adoption of 8K resolution and high dynamic range technologies, demand faster and more efficient digital coding solutions to store and transfer these data. State-of-the-art solutions like HEVC or JPEG2000 are widely adopted but their computational requirements pose a challenge even for current hardware. For environments like digital cinema or medical image, specific FPGA boards are used to accelerate image processing without affecting image quality. In the last years, a massive parallel hardware has started to gain attraction: Graphical Processing Units (GPUs). GPUs are massive parallel architectures originally suited for videogames or 3D simulations. In the recent years, their adoption as general purpose devices have allowed to use them as accelerators for a myriad of applications. Algorithms properly adapted to run on GPUs get significant throughput improvements when compared to their CPU implementation. This research focuses on creating an end-to-end codec based on the JPEG2000 standard tailored for GPUs. This thesis proposes five main contributions, all of which have been published in relevant conferences or journals. The first one focuses on the first end-to-end GPU codec version, which can code and decode gray-scale images. The second version includes the implementation of the video engine within the codec, which can process up to two frames simultaneously. The third contribution consists of an in-depth analysis of the end-to-end codec with multiple throughput improvements and the addition of a multi-frame processing approach, which allows to process multiple frames simultaneously when coding video. The fourth contribution proposes the implementation of an improvement to the core coding engine, tested on a CPU version of the end-to-end codec. The last contribution details an in-depth analysis of the improvement presented in the previous paper but implemented in the end-to-end GPU codec, including results with improvements of more than 10× the performance of the best JPEG2000 commercial implementation when processing 4K RGB video.

[es] El aumento de la cantidad de contenido, tanto en imagen como en video, y la rápida adopción de la resolución 8K, además de tecnologías de alto rango dinámico (HDR), están creando la necesidad de construir propuestas de codificación digital más eficientes y rápidas para transmitir y almacenar estos datos. Las últimas y más avanzadas soluciones como HEVC o JPEG2000 se han adoptado rápidamente y están muy extendidas, pero sus requisitos computacionales suponen un desafío incluso para el hardware más puntero. Es por esto por lo que en entornos como el cine digital o el procesamiento de imágenes médicas se utilizan dispositivos FPGA para acelerar el procesamiento y codificación de imagen sin que por ello quede reducida la calidad. En los últimos años, se ha empezado a usar un tipo de arquitectura paralela masiva muy eficiente en este tipo de entorno: las unidades de procesamiento gráfico (GPUs), o comúnmente denominadas tarjetas gráficas. Las GPU son unidades de procesamiento paralelo masivo que originalmente se diseñaron para renderizar entornos 3D o videojuegos. En los últimos años, se han empezado a utilizar como dispositivos de propósito más general, usándose como aceleradores de procesos en una miríada de campos. Los algoritmos que se consiguen adaptar de una forma eficiente y precisa para ejecutarse en tarjetas gráficas consiguen un aumento significativo de su rendimiento comparado con la implementación que se hiciera previamente para CPUs. Esta investigación persigue crear un códec de imagen y vídeo que se basa en el estándar JPEG2000 pero que se ejecuta íntegramente en GPUs. Esta tesis está compuesta por cinco publicaciones, las cuales han sido publicadas en conferencias o revistas de relevancia internacional. El primer artículo se centra en la primera versión de este códec end-to-end para GPUs, capaz de comprimir y descomprimir imágenes en escala de grises. La segunda versión del códec incluye un motor de procesamiento de vídeo capaz de procesar dos frames en paralelo. La tercera contribución explora en detalle el codec end-to-end, con muchas mejoras en procesamiento en contraposición a la versión anterior, y con la capacidad de procesar un mayor número de frames en paralelo cuando codifica video. La cuarta contribución incluye una mejora específica del motor principal, probado en una versión para CPUs. La última contribución traduce esta mejora al códec end-to-end en GPUs y lo analiza desde varios puntos de vista. Los resultados arrojados por la última parte de esta investigación muestran que el códec es capaz de ir hasta 10 veces más rápido que la mejor implementación comercial de JPEG2000 al procesar vídeo en 4K a color.