cómo funciona la compresión jpeg
Cómo funciona la compresión JPEG
El JPEG funciona descartando información que tu ojo no nota bien. Entender cuál explica por qué la calidad 80 se ve bien, por qué el texto sale con halos y por qué volver a guardar es corrosivo.
01
Paso uno: separar brillo de color y luego tirar color
La imagen se convierte de rojo-verde-azul a un canal de brillo y dos canales de diferencia de color. Esto todavía no es compresión: es una reorganización que separa lo que tu ojo distingue bien de lo que no.
La visión humana resuelve el detalle fino mucho mejor en el brillo que en el color. El JPEG lo aprovecha de inmediato con el submuestreo de croma: los canales de color se guardan a la mitad de resolución en cada dirección, lo que descarta tres cuartas partes de los datos de color antes de que se ejecute nada de la matemática ingeniosa. En una fotografía, esto es esencialmente invisible.
En una captura de pantalla con texto rojo sobre blanco es visibilísimo, y es la razón de que el texto dentro de un JPEG coja flecos de color. Nunca quedó resolución de color suficiente para colocar un borde rojo duro.
02
Paso dos: convertir bloques de 8×8 en frecuencias
Cada canal se corta en bloques de 8×8 píxeles, y cada bloque se transforma con una transformada de coseno discreta. La salida no son píxeles. Son 64 coeficientes que describen cuánto tiene el bloque de cada frecuencia espacial: uno para el brillo medio y luego patrones de variación progresivamente más finos.
En la mayoría de los bloques del mundo real la energía se amontona en los primeros coeficientes. Un trozo de cielo es casi enteramente su valor medio con cantidades minúsculas de todo lo demás. Este paso es sin pérdidas y reversible; no ha ahorrado ni un byte. Lo que ha hecho es ordenar la información según cuánto importa.
03
Paso tres: cuantización — aquí se juega todo
Cada uno de los 64 coeficientes se divide por un valor de una tabla de cuantización y se redondea a un entero. Los coeficientes pequeños se vuelven cero. Este es el único paso con pérdidas del JPEG, y es exactamente lo que controla el deslizador de calidad: la calidad 90 usa una tabla suave, la 30 una brutal.
Las tablas están hechas para dividir con más dureza los coeficientes de alta frecuencia, porque ahí está el detalle fino que tu ojo tiene menos probabilidades de echar en falta. Tras la cuantización, un bloque típico que empezó con 64 números distintos de cero se queda con cinco o seis, y el resto son ceros — y una tirada larga de ceros es exactamente lo que la última etapa comprime hasta casi nada.
Todo lo que la gente nota del JPEG sale de este paso. La aparición de bloques a baja calidad son bloques de 8×8 cuyos coeficientes se aplanaron tanto que los bloques vecinos ya no coinciden en el borde que comparten. El repique alrededor del texto son los coeficientes de alta frecuencia que hacen falta para describir un borde duro, cuantizados hasta desaparecer y dejando una ondulación. Los dos son el algoritmo haciendo lo que se diseñó que hiciera sobre contenido para el que no se diseñó.
- Calidad 90–100
- Casi sin pérdidas, y grande. Solo compensa para imágenes que vayas a volver a editar.
- Calidad 75–85
- El punto dulce. Normalmente un tercio del tamaño de 100 y cuesta distinguirlo.
- Calidad 50–70
- Visible si te fijas. Vale para miniaturas, no para nada que lleve texto.
- Por debajo de 50
- Los bloques y el repique son evidentes. El ahorro frente a 75 es mucho menor que el daño.
04
Paso cuatro: empaquetarlo, sin pérdidas
Los coeficientes cuantizados se leen en un orden de zigzag que va de baja frecuencia a alta, lo que agrupa todos esos ceros en una única tirada larga al final. Esa tirada se colapsa con codificación por longitud de series, y el resultado se codifica por entropía con codificación de Huffman.
Esta etapa es completamente sin pérdidas y suele ser responsable del último gran factor de reducción. Aquí nada degrada la imagen: es simplemente un empaquetado eficiente de los números que dejó el paso anterior.
05
Pérdida por generación: por qué volver a guardar es corrosivo
Abre un JPEG, no cambies nada, vuelve a guardarlo, y el archivo no es idéntico. Descodificar reconstruye píxeles a partir de coeficientes cuantizados; recodificar pasa esos píxeles reconstruidos por la DCT y los cuantiza otra vez. La segunda cuantización redondea números que ya estaban redondeados, y el error se acumula.
Una generación extra a alta calidad apenas se detecta. Diez son evidentes: este es el mecanismo detrás de toda imagen que ha pasado por capturas de pantalla, guardados y reenvíos hasta parecer transmitida por fax.
La regla práctica sale sola. Conserva el original. Edita desde el original y no desde una copia exportada. Y cuando un archivo tenga que ser más pequeño, redimensiona antes de recodificar: bajar las dimensiones en píxeles elimina datos de forma limpia, mientras que bajar la calidad sobre píxeles a tamaño completo los elimina de forma destructiva.
06
Cuándo el JPEG es la elección equivocada
Todo lo anterior da por hecho contenido fotográfico: degradados suaves, sin bordes duros, sin repetición exacta. Dale al JPEG lo contrario y cada decisión de diseño juega en tu contra. Una captura de pantalla, un logotipo, un gráfico, un dibujo de líneas: son áreas planas grandes y límites nítidos, que es precisamente el contenido que el submuestreo de croma emborrona y la cuantización llena de repiques.
El PNG está hecho para ese caso. Comprime sin pérdidas prediciendo cada píxel a partir de sus vecinos y codificando la diferencia, algo espectacularmente eficaz sobre color plano e inútil sobre fotografías. Esa es la regla entera: el tono continuo va a JPEG, el color plano y los bordes duros van a PNG, y todo lo que necesite transparencia tiene que ser PNG o WEBP porque el JPEG no tiene canal alfa en absoluto.