El Mecanismo de la Compresión de Imágenes
La compresión de imágenes reduce el coste de almacenamiento y transmisión de imágenes digitales. Es un componente crítico de la arquitectura web, representando un balance entre la fidelidad visual y los tiempos de carga de las páginas.
Compresión con Pérdida (Lossy) y la Transformada de Coseno Discreta
Los algoritmos con pérdida logran reducciones de tamaño extremas descartando permanentemente detalles que son menos perceptibles para el ojo humano. El formato JPEG es el principal ejemplo.
El proceso de compresión JPEG consta de varios pasos matemáticos clave:
- Conversión de Espacio de Color: La imagen se convierte de RGB a YCbCr (Luminancia y canales de crominancia). Dado que el ojo humano es más sensible a la luz (Luminancia) que al color (Crominancia), los canales de crominancia se pueden submuestrear para reducir su resolución a la mitad.
- Transformada de Coseno Discreta (DCT): La imagen se divide en bloques de 8x8 píxeles. La DCT convierte estos valores espaciales de píxeles en coeficientes de frecuencia, aislando los detalles finos de los degradados suaves.
- Cuantificación: Este es el paso clave donde ocurre la pérdida. Los coeficientes DCT se dividen por una matriz de cuantificación y se redondean a enteros, eliminando los detalles de alta frecuencia al convertirlos a cero.
- Codificación de Entropía: El resultado se comprime de forma sin pérdida usando la codificación Huffman.
Compresión sin Pérdida (Lossless): Conservando cada Píxel
La compresión sin pérdida permite reconstruir la imagen original de forma idéntica byte a byte. Es ideal para gráficos, capturas con texto y logotipos. El formato PNG es el más utilizado.
El formato PNG se basa en el algoritmo DEFLATE, que combina dos técnicas:
- LZ77: Busca secuencias de datos duplicadas en una ventana deslizante y las reemplaza con un puntero a su aparición anterior (distancia y longitud).
- Codificación Huffman: Asigna códigos binarios de longitud variable basados en la frecuencia de los caracteres. Los elementos más comunes reciben los códigos más cortos.
Antes de comprimir, PNG aplica un paso de **filtrado** espacial que predice el color de un píxel basándose en sus vecinos y guarda sólo la diferencia (delta), lo que facilita enormemente el trabajo de DEFLATE.
WebP: Lo Mejor de Ambos Mundos
Desarrollado por Google, WebP es un formato moderno que soporta compresión con y sin pérdida. Utiliza codificación predictiva basada en el códec de vídeo VP8 para predecir bloques de píxeles a partir de sus vecinos. WebP sin pérdida ofrece archivos un 26% más pequeños que PNG, y con pérdida resulta un 25-34% más pequeño que los JPEGs equivalentes.