Cómo funciona la compresión JPEG

Una explicación sencilla de los pasos detrás de una compresión de imágenes eficiente

24. January 2025 por Bianca Palmer

Cómo funciona la compresión JPEG

¿Alguna vez te has preguntado cómo tu teléfono o cámara puede tomar una foto y, en cuestión de segundos, guardarla como JPEG, más pequeña, rápida y con aspecto nítido? Detrás de esto hay un proceso muy eficiente en funcionamiento, que reduce archivos de imagen enormes a una fracción de su tamaño original mientras mantiene una calidad muy alta. Pero ¿cómo funciona realmente? Hoy vamos a profundizar en todos los detalles de Compresión JPEG, desglosando cada paso en términos sencillos para que puedas entender por completo este proceso de compresión de imágenes.

¿Qué es JPEG?

JPEG (abreviatura de Joint Photographic Experts Group) es uno de los formatos de imagen más comunes. Es la opción habitual para almacenar fotos digitales. Lo realmente interesante de JPEG es su capacidad para comprimir archivos de imagen, haciéndolos mucho más pequeños sin una pérdida de calidad apreciable.

Para que te hagas una idea, una imagen sin comprimir de alta calidad puede ocupar unos 46 MB. Después de comprimirla a JPEG, la misma imagen puede reducirse a solo 4,1 MB. Pero ¿cómo consigue esto manteniendo la imagen nítida?

La respuesta está en el compression process, proceso de compresión, que aprovecha la forma en que funcionan nuestros ojos y elimina datos innecesarios.

¿Qué hace JPEG?

En términos sencillos, JPEG analiza la imagen y elimina elementos que nuestros ojos no perciben fácilmente. Cuando comprimes una imagen con JPEG, puedes controlar cuánto nivel de compresión se aplica. Al ajustar la configuración de "calidad", puedes decidir cuánto espacio quieres ahorrar. A medida que la calidad disminuye de 100 % a 0 %, el tamaño del archivo también disminuye.

Cuanto más comprimas, la resolución de la imagen se mantiene igual, pero pueden empezar a aparecer defectos o "artefactos". Estos defectos se ven como pequeños cuadrados, pero suelen ser difíciles de notar a menos que hagas zoom. El objetivo de JPEG es hacer el archivo lo más pequeño posible sin que la imagen se vea mal al ojo humano.

Los pasos de la compresión JPEG

Compresión JPEG no es un solo truco mágico, sino una serie de pasos inteligentes diseñados para reducir el tamaño de la imagen. Veamos los cinco pasos clave que hacen que JPEG sea tan eficiente.

Paso 1: Conversión de espacio de color

Las imágenes están formadas por píxeles, y cada píxel tiene componentes rojo, verde y azul (RGB) que se combinan para crear colores. JPEG comienza convirtiendo estos valores RGB a un espacio de color diferente:

  • Luminancia (brillo): Representa el brillo o la claridad de un píxel y es importante para definir el contraste general de la imagen.
  • Crominancia (color): Representa la información de color, incluyendo tanto el matiz como la saturación.

Esta conversión aprovecha el hecho de que el ojo humano es más sensible al brillo (luminancia) que al color (crominancia). Al separar brillo y color, JPEG permite una reducción de datos específica en pasos posteriores manteniendo intactos los detalles visuales más importantes.

Aunque en este paso no se pierde información, deja todo preparado para una compresión eficiente.

Paso 2: Submuestreo de crominancia

Submuestreo de crominancia es un técnica que se aplica después de la conversión de espacio de color. ¿Recuerdas que dijimos que nuestros ojos no son tan buenos para ver los colores (crominancia) en comparación con el brillo (luminancia)?

Pues bien, JPEG aprovecha este hecho reduciendo la cantidad de datos de color. Reduce las imágenes de crominancia azul y roja promediándolas en bloques de cuatro píxeles. Esto hace que los datos de color sean mucho menores mientras mantiene la luminancia (brillo) sin cambios. En este punto, la imagen ya está comprimida aproximadamente a la mitad.

Paso 3: Transformada de coseno discreta (DCT)

La transformada de coseno discreta (DCT) es una técnica matemática que se utiliza para convertir los datos de la imagen del dominio espacial (donde la imagen se representa como una cuadrícula de píxeles) al dominio de frecuencia. Este proceso ayuda a identificar qué partes de la imagen contienen la información visual más importante y qué partes pueden desechado.

La DCT divide la imagen en bloques de 8x8 y convierte cada bloque en una colección de valores de frecuencia. Las frecuencias altas, que representan cambios rápidos en los valores de píxeles, como bordes o ruido, suelen ser menos perceptibles para el ojo humano y se pueden simplificar o eliminar.

Paso 4: Cuantización

Una vez aplicada la DCT, los datos de frecuencia resultantes se someten a cuantización. En este paso, el rango de valores de frecuencia se reduce dividiéndolos por un conjunto de constantes llamado tabla de cuantización. El proceso básicamente redondea los valores de frecuencia para simplificarlos.

Los valores de frecuencia más altos se cuantizan con mayor intensidad, lo que significa que pierden más precisión porque son menos importantes para la calidad general de la imagen. Este cuarto paso reduce la cantidad de datos necesarios para representar la imagen, haciendo que el archivo sea más pequeño. Sin embargo, una cuantización excesiva puede generar artefactos visibles, como bloques o desenfoque, especialmente en niveles de compresión altos.

Paso 5: Codificación Run Length y Huffman

Después de la cuantización, los datos aún no son lo bastante compactos para un almacenamiento eficiente. Aquí es donde entran en juego la codificación Run Length (RLE) y codificación Huffman entran en juego.

Primero, se utiliza RLE para simplificar largas secuencias de datos repetidos (como ceros) almacenando el número de repeticiones en lugar de cada valor individual. Luego se aplica la codificación Huffman, una técnica que sustituye los valores que aparecen con frecuencia por códigos de bits más cortos, haciendo el archivo aún más pequeño.

These two métodos de codificación trabajan juntos para reducir drásticamente el tamaño del archivo sin sacrificar gran parte de la calidad de la imagen.

Notas adicionales

Aunque JPEG es un formato muy eficiente, hay algunos aspectos importantes que tener en cuenta:

  • Nivel de compresión: JPEG permite a los usuarios seleccionar el nivel de compresión, pero una compresión más alta reduce el tamaño del archivo y puede introducir artefactos visibles como bordes borrosos o pixelación. Esto se debe a que los valores de la tabla de cuantización son demasiado altos, lo que provoca que se añadan más ceros, haciendo el archivo más pequeño pero a costa de la calidad de la imagen.
  • Pérdida de datos de alta frecuencia: La cuantización reduce la precisión de los datos de alta frecuencia (detalles como bordes definidos), por lo que JPEG es ideal para texturas suaves pero puede tener dificultades con líneas nítidas y gráficos vectoriales.
  • No es ideal para gráficos vectoriales: JPEG no es la mejor opción para comprimir gráficos vectoriales, ya que puede causar artefactos visibles en los bordes de formas o líneas.

A pesar de estas limitaciones, JPEG sigue siendo el formato de imagen más popular, en parte porque es antiguo, bien comprendido y libre de regalías. Sin embargo, formatos más nuevos como WebP o HEIF ofrecen tasas de compresión aún mejores sin comprometer la calidad, lo que los convierte en alternativas interesantes en ciertos contextos.

Conclusión

El algoritmo de compresión JPEG es un logro notable en la gestión de datos de imágenes. Al dividir las imágenes en bloques más pequeños, aplicar diversas transformaciones matemáticas y utilizar técnicas de codificación eficientes como Run Length y Huffman, permite almacenar imágenes de alta calidad en tamaños de archivo mucho menores.

Aunque JPEG tiene algunas limitaciones, especialmente con niveles altos de compresión o gráficos vectoriales, su uso extendido y su capacidad para ofrecer buenos resultados en imágenes fotográficas lo convierten en un estándar duradero.