Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Mozjpeg, un proyecto de Mozilla

JPEG es un formato muy conocido y que se entiende bien. Pareciera que no hay nada mejor que hacer en este tipo de formatos gráficos...

mozjpeg00

JPEG es un formato muy conocido y que se entiende bien. Pareciera que no hay nada mejor que hacer en este tipo de formatos gráficos que comprimen lo más que pueden. Sin embargo Mozilla piensa que aún se puede dar una vuelta más a la tuerca y han salido con un nuevo proyecto llamado “mozjpeg”, en el cual buscan crear un mejor JPEG.

Todos sabemos que las fotos usan muchos bytes y si pensamos que las cámaras y los dispositivos ópticos/electrónicos tienen cada vez más resolución, entonces el usar métodos que compriman las imágenes parece ser una necesidad. JPEG ha sido por años el formato preferido de Internet, porque comprime en buena medida imágenes muy grandes aunque eso sí, pierden resolución (aunque los ojos humanos sean incapaces de ver estas pérdidas). De hecho, la motivación para comprimir las imágenes viene precisamente de nuestros limitados ojos. Las imágenes son parte esencial de la web y la mayoría del tiempo de carga de una página ocurre en la descarga de imágenes, del sitio al navegador del usuario. Por ello, nunca será mala idea buscar que las imágenes ocupen poco espacio porque entonces el descargarlas llevará menos tiempo.

Google, por su parte, ha inventado un nuevo algoritmo de compresión llamado WebP, que dice ser 40% mejor que JPEG sin que haya pérdida adicional de la calidad en las imágenes. El problema es que no todos los navegadores soportan este nuevo formato. El equipo de Mozilla se preguntó si podría hacer un mejor codificador y comprimir más bytes. Después de 20 años de JPEG no parece que haya espacio para alguna nueva mejora. Sin embargo, la gente de Mozilla piensa que sí y han puesto manos a la obra.

La primera versión del nuevo mozjpeg está basada en la turbo biblioteca libpeg que hace uso del hardware para acelerar la codificación. La primera mejora depende de la alta velocidad de la codificación para obtener una operación exitosa porque esencialmente optimiza la compresión probando con diferentes esquemas. Se basa en un script Perl, jpgcrush, quien va modificando progresivamente los parámetros a prueba y error para producir así el archivo más pequeño. Típicamente produce archivos entre 3 y 6% más pequeños que JPEG y un total de 10% usando como prueba 1500 imágenes guardadas en Wikipedia.

Es interesante hacer notar que Google ya está en el camino para optimizar la compresión, pero a partir de un proyecto que han denominado Zopfli, quien busca los parámetros óptimos para la compresión ZIP. El gran problema es que lleva tiempo intentar las diferentes posibilidades de los parámetros. Sin embargo, la compresión es una tarea de una sola vez (al contrario de la dfescompresión que se puede hacer una y otra vez), por lo que el tiempo de descompresión no cambia.

Si lo pensamos, reducir de 3 a 10% más no parece ser mucho, pero el siguiente paso es investigar otras mejoras como implementar esquemas específicos, como la cuantización trellis, que podría ayudar a la codificación de las imágenes. Esta cuantización es la manera como los coeficientes de la matriz DCT -usada en JPEG- se cuantizan para dar la menor razón de distorsión. Si le suenas complicado esto es que lo es. Más información en sobre cómo se comprimen las imágenes JPEG puede verse aquí y sobre la matriz referida, aquí.

Cabe señalar que los usuarios no comprimen lo más que pueden sus imágenes y los programas que crean JPEG usan los parámetros estándar, por lo que en general, la compresión de mozjpeg podría ser mayor para casos reales. Tal vez se necesite entender qué parámetros influyen más y cómo hacer para que con algún procedimiento -quizás heurístico- se tomen los valores más cercanos a los óptimos.

Como sea, ya veremos si estas iniciativas funcionan y podría pasar que en algunos pocos años un nuevo formato gráfico sustituya definitivamente a JPEG.

Referencias:

Proyecto ‘mozjpeg’
mozjpeg en GitHub

Comentarios