JPEG: Estándar del Grupo Conjunto de Expertos Fotográficos para Compresión Lossy
JPEG (Joint Photographic Experts Group) es el estándar de facto para compresión lossy de imágenes fotográficas. Estandarizado en 1992, JPEG logra ratios de compresión ~10:1 con pérdida de calidad imperceptible en configuraciones de calidad moderada (Q=75–85). JPEG es universalmente soportado—el 100% de navegadores, cámaras y dispositivos móviles lo soportan nativamente.
Estructura de Archivo JPEG: SOI, EOI, Marcadores
Los archivos JPEG se construyen sobre segmentos basados en marcadores:
FF D8 (SOI — Inicio de Imagen)
FF E0 00 10 4A 46 49 46 00 (marcador JFIF APP0 — define variante JPEG)
[identificador JFIF y versión]
FF DB … (DQT — Tabla de Cuantización)
FF C0 … (SOF0 — Inicio de Fotograma, DCT línea base)
FF C4 … (DHT — Tabla Huffman)
FF DA … (SOS — Inicio de Escaneo)
[datos de imagen comprimidos]
FF D9 (EOI — Fin de Imagen)
Marcadores clave:
| Marcador | Nombre | Propósito |
|---|---|---|
| FFD8 | SOI | Marca el comienzo del archivo |
| FFE0–FFE1 | APP0–APP1 | Datos específicos de aplicación (JFIF, EXIF) |
| FFDB | DQT | Define tablas de cuantización (factor de calidad) |
| FFC0–FFC3 | SOF0–SOF3 | Inicio de Fotograma (especifica dimensiones MCU, componentes) |
| FFC4 | DHT | Definición de tabla Huffman |
| FFDA | SOS | Inicio de Escaneo—señala que comienzan datos comprimidos |
| FFD9 | EOI | Fin de Imagen |
Encabezado JFIF: Relación de Aspecto y Espacio de Color
FF E0 (marcador APP0)
00 10 (longitud de segmento = 16 bytes)
4A 46 49 46 00 (identificador 'JFIF' + terminador nulo)
01 00 (versión 1.0)
00 (unidades: 0 = sin unidades, 1 = DPI, 2 = DPCM)
00 48 (densidad X = 72 DPI)
00 48 (densidad Y = 72 DPI)
00 00 (miniatura X/Y = ninguna)
Establece metadatos de relación de aspecto y DPI.
Codificación de Imagen: MCU, DCT, Cuantización
JPEG divide imagen en Unidades Mínimas Codificadas (MCU)—típicamente 16×16 píxeles (2×2 bloques de 8×8):
Paso 1: Conversión de Espacio de Color (RGB → YCbCr)
Y = 0.299*R + 0.587*G + 0.114*B (luminancia — brillo percibido)
Cb = -0.169*R - 0.331*G + 0.5*B (desplazamiento de crominancia azul)
Cr = 0.5*R - 0.419*G - 0.081*B (desplazamiento de crominancia roja)
Separa luminancia (datos 1x) de crominancia (submuestreada 2x2 a 0.25x → muestreo 4:2:0).
Paso 2: DCT 8×8 (Transformada de Coseno Discreto)
DCT transforma bloque de 8×8 píxeles en coeficientes de frecuencia.
Resultado: [coeficiente DC] [coeficientes baja frecuencia] [coeficientes alta frecuencia]
Concentra energía en bajas frecuencias—frecuencias altas son imperceptibles a la visión humana.
Paso 3: Cuantización (Factor de Calidad)
Coeficiente Cuantizado = redondear( Coeficiente DCT / Valor Cuantización )
Los valores de cuantización aumentan para frecuencias altas (descartan detalles imperceptibles).
Ejemplo:
Calidad = 75 (defecto): valor cuantización 16 para freq alta
Calidad = 95 (alta): valor cuantización 1 para freq alta
Calidad = 10 (baja): valor cuantización 80 para freq alta
Paso 4: Codificación de Entropía Huffman
Códigos de longitud variable: símbolos frecuentes → códigos más cortos, símbolos raros → códigos más largos
Coeficiente DC: -1000 → 5 bits
Coeficientes AC: 0 (rachas) → 3–8 bits
Submuestreo de Croma: 4:2:0, 4:2:2, 4:4:4
La visión humana es menos sensible al color (crominancia) que al brillo (luminancia). JPEG explota esto:
| Muestreo | Y:Cb:Cr | Reducción de tamaño | Pérdida de calidad | Caso de Uso |
|---|---|---|---|---|
| 4:4:4 | 1:1:1 | Ninguno (24 bits/píxel) | Mínima | Alta calidad (Q≥85) |
| 4:2:2 | 1:0.5:0.5 | 33% | Muy ligera | Típico (Q=75–85) |
| 4:2:0 | 1:0.25:0.25 | 50% | Ligera | Defecto (Q≤75) |
| 4:1:1 | 1:0.25:0.125 | 62.5% | Notable | Compresión extrema |
Ejemplo (submuestreo de croma 4:2:0):
Luminancia (Y): cuadrícula 16×16 (256 valores)
Crominancia (Cb): cuadrícula 8×8 (64 valores)
Crominancia (Cr): cuadrícula 8×8 (64 valores)
Total: 384 valores (vs. 768 sin comprimir)
Tamaño de archivo: ~50% del sin comprimir
JPEG Línea Base vs. JPEG Progresivo
JPEG Línea Base:
Marcador SOS
[datos MCU completos arriba-abajo, izquierda-derecha]
Marcador EOI
Decodificador renderiza escanlines conforme llegan los datos—entrelazado no soportado.
JPEG Progresivo:
Marcador SOS (escaneo 1: coeficientes DC + AC baja)
[datos MCU parciales]
Marcador SOS (escaneo 2: AC más alta)
[datos más detallados]
[escaneos posteriores con detalle creciente]
Marcador EOI
Primer escaneo muestra vista previa aproximada, escaneos posteriores refinan. Compensación: ~10% archivo más grande pero carga percibida más rápida en redes lentas.
EXIF y Metadatos
EXIF (Formato de Archivo de Imagen Intercambiable):
FF E1 (marcador APP1)
[segmento EXIF con metadatos de cámara]
├── Modelo: Canon EOS 5D Mark IV
├── Longitud Focal: 50 mm
├── Apertura: f/2.8
├── ISO: 3200
├── Flash: Sí
└── Marca de Tiempo: 2024-04-26 12:00:00 UTC
Preserva configuración de cámara, ubicación GPS, información de derechos de autor.
Comparación: JPEG vs. Competidores
| Métrica | JPEG (Q=75) | PNG | WebP | HEIC |
|---|---|---|---|---|
| Tamaño de archivo (foto) | 100 KB | 300 KB | 60 KB | 55 KB |
| Tamaño de archivo (gráfico) | 200 KB | 50 KB | 40 KB | 35 KB |
| Ratio de compresión | 12:1 | 3:1 | 20:1 | 22:1 |
| Transparencia | ❌ | ✅ | ✅ | ❌ |
| Progresivo | ✅ | ❌ | ❌ | ❌ |
| Soporte de navegadores | 100% | 100% | 97% | 25% |
| Metadatos EXIF | ✅ | ⚠️ (limitado) | ❌ | ✅ |
| Edición reversible | ❌ (re-guardar pierde calidad) | ✅ | ✅ | ❌ |
JPEG sigue siendo dominante para cámaras y fotos web. Para optimización web, usa WebP. Para archivos de calidad, usa PNG o TIFF.
Optimización Práctica de JPEG
Configuraciones de calidad:
- Q=95: Visualmente sin pérdida (archivo)
- Q=85: Alta calidad (impresión, profesional)
- Q=75: Buena calidad (web defecto)
- Q=60: Calidad media (miniaturas)
- Q=40: Baja calidad (marcadores de posición)
FFmpeg (JPEG línea base, Q=85):
ffmpeg -i entrada.jpg -q:v 5 salida.jpg
ImageMagick (JPEG progresivo):
convert entrada.jpg -interlace Plane -quality 85 salida-progresivo.jpg
Python (Pillow):
from PIL import Image
img = Image.open('entrada.jpg')
img.save('salida.jpg', 'JPEG', quality=85, optimize=True)
La combinación de JPEG de alta compresión, soporte universal y décadas de optimización lo hacen el estándar de oro para imágenes fotográficas en todo el mundo.
Conversiones relacionadas
Lo más habitual al trabajar con imágenes son estas direcciones de conversión: