Se introduce el formato de compresión de imágenes QOI

Se ha introducido un nuevo formato de compresión de imágenes liviano y sin pérdidas: QOI (Imagen bastante buena), que le permite comprimir imágenes muy rápidamente en los espacios de color RGB y RGBA. Al comparar el rendimiento con el formato PNG, la implementación de referencia de un solo subproceso del formato QOI en lenguaje C, que no utiliza instrucciones SIMD ni optimizaciones de ensamblaje, es entre 20 y 50 veces más rápida en velocidad de codificación que las bibliotecas libpng y stb_image, y 3 -4 veces más rápido en velocidad de decodificación. En términos de eficiencia de compresión, QOI está cerca de libpng en la mayoría de las pruebas (en algunas pruebas está ligeramente por delante y en otras es inferior), pero en general está notablemente por delante de stb_image (ganancia de hasta un 20%).

La implementación de referencia de QOI en C tiene solo 300 líneas de código. El código fuente se distribuye bajo la licencia MIT. Además, los entusiastas han preparado implementaciones de codificadores y decodificadores en los lenguajes Go, Zig y Rust. El proyecto está siendo desarrollado por Dominic Szablewski, un desarrollador de juegos con experiencia en la creación de una biblioteca para decodificar vídeo MPEG1. Utilizando el formato QOI, el autor quería demostrar que es posible crear una alternativa eficaz y sencilla a los formatos de codificación de imágenes modernos y excesivamente complicados.

El rendimiento de QOI es independiente de la resolución y la naturaleza de la imagen codificada (O(n)). La codificación y decodificación se realizan en una sola pasada: cada píxel se procesa solo una vez y se puede codificar de una de cuatro formas, seleccionadas según los valores de los píxeles anteriores. Si el siguiente píxel coincide con el anterior, el contador de repeticiones solo aumenta. Si el píxel coincide con uno de los valores en el búfer de 4 píxeles anteriores, entonces el valor se reemplaza por un desplazamiento de 64 bits con respecto al píxel anterior. Si el color del píxel anterior es ligeramente diferente, la diferencia se indica de forma breve (codificación breve de las diferencias en los componentes de color que caben en 6, 2,4 y 5 bits). Si la optimización no es aplicable, se proporciona el valor rgba completo.

Fuente: opennet.ru

Añadir un comentario