Algoritmos de compresión de imagen en profundidad - DCT, transformada wavelet y codificación predictiva
Principios fundamentales de la compresión de imágenes - Eliminación de redundancia y visión humana
La compresión de imágenes reduce el tamaño de los archivos eliminando la redundancia en los datos de imagen. Las imágenes sin comprimir contienen datos enormes - una imagen de 4000x3000px a 24 bits de color ocupa 36MB en bruto, reducible a 2-5MB con compresión JPEG.
Tipos de redundancia en datos de imagen:
- Redundancia espacial: Los píxeles adyacentes frecuentemente tienen colores similares (cielo azul, paredes blancas). Explotar esta correlación registrando solo diferencias reduce los datos
- Redundancia estadística: Las frecuencias de valores son desiguales. La codificación de entropía asigna secuencias de bits cortas a valores frecuentes y secuencias largas a valores raros
- Redundancia visual (psicovisual): Los ojos humanos son insensibles a componentes de alta frecuencia (texturas finas) y cambios sutiles de crominancia. Eliminar información imperceptible apenas afecta la calidad percibida - el principio de la compresión con pérdida
Clasificación de algoritmos: Sin pérdida (PNG Deflate, WebP Lossless) logra ratios 2:1-3:1 con reconstrucción perfecta. Con pérdida (JPEG DCT, WebP VP8, AVIF AV1) logra 10:1-50:1+ eliminando información imperceptible. La compresión moderna sigue un pipeline de tres etapas: Transformación, Cuantización y Codificación de Entropía, cada una eliminando diferentes tipos de redundancia.
DCT (Transformada Coseno Discreta) - Tecnología central detrás de JPEG
La DCT es la transformación matemática en el núcleo de la compresión JPEG. Convierte imágenes del dominio espacial (valores de píxel) al dominio de frecuencia (intensidades de componentes de frecuencia), permitiendo la eliminación eficiente de componentes de alta frecuencia invisibles al ojo humano.
Flujo de procesamiento DCT en JPEG:
- División en bloques: Divide la imagen en bloques de 8x8 píxeles procesados independientemente. El tamaño 8x8 equilibra eficiencia computacional y de compresión
- Transformada DCT: Aplica DCT 2D a cada bloque, convirtiéndolo en 64 coeficientes de frecuencia. El coeficiente superior izquierdo (componente DC) representa el brillo promedio del bloque; el inferior derecho representa altas frecuencias
- Cuantización: Divide cada coeficiente por los valores de la tabla de cuantización, truncando decimales. Las frecuencias más altas usan divisores mayores, anulando muchos coeficientes de alta frecuencia. Esta etapa con pérdida se controla mediante ajustes de calidad
- Escaneo zigzag: Reordena los 64 coeficientes de baja a alta frecuencia en patrón zigzag, concentrando los ceros al final del array
- Codificación de entropía: Combina codificación de longitud de ejecución (contando ceros consecutivos) con codificación Huffman para el flujo de bits final
La DCT es reversible - la DCT inversa (IDCT) reconstruye perfectamente los valores originales antes de la cuantización. La cuantización es el único paso con pérdida en todo el pipeline JPEG.
Transformada wavelet - Base de JPEG 2000 y compresión de próxima generación
La transformada wavelet fue desarrollada para superar las limitaciones de la DCT. Se usa en JPEG 2000, algunos modos de HEIF e imágenes médicas (DICOM). Mientras la DCT procesa bloques fijos de 8x8, la transformada wavelet descompone imágenes completas en múltiples resoluciones.
Cómo funciona la transformada wavelet:
- Descomposición multirresolución: Separa la imagen en componentes de aproximación (baja frecuencia) y detalle (alta frecuencia). El filtrado horizontal y vertical produce cuatro subbandas: LL, LH, HL, HH
- Descomposición recursiva: Aplica recursivamente la misma descomposición a la subbanda LL. Típicamente 3-5 niveles, representando jerárquicamente desde la estructura gruesa hasta el detalle fino
- Cuantización y codificación: Cuantiza los coeficientes de subbanda y comprime con codificación avanzada como EBCOT
Ventajas sobre la DCT: Sin artefactos de bloque (procesa la imagen completa), visualización progresiva (transmite de baja a alta resolución incrementalmente), codificación ROI (preserva selectivamente la calidad en regiones específicas). JPEG 2000 usa wavelet CDF 9/7 (con pérdida) y wavelet CDF 5/3 (sin pérdida) con coeficientes de filtro optimizados para imágenes.
Codificación predictiva y predicción intra - Compresión de alta eficiencia AV1/HEVC
La codificación predictiva predice los valores de píxeles actuales a partir de píxeles adyacentes ya procesados, codificando solo el residuo de predicción (diferencia). Predicciones más precisas producen residuos más pequeños y mayor compresión. Este es el núcleo de la compresión AVIF (AV1) y HEIF (HEVC).
Mecanismo de predicción intra:
- Modos de predicción direccional: AV1 tiene 56 modos direccionales (HEVC tiene 35). Extrapola píxeles de bloques adyacentes en varios ángulos (horizontal, vertical, diagonal 45/22.5 grados) al bloque actual. Seleccionar modos que coincidan con las direcciones de los bordes minimiza los residuos
- Predicción DC: El modo más simple que predice todo el bloque con el promedio de píxeles adyacentes. Efectivo para regiones uniformes
- CfL (Chroma from Luma): Tecnología específica de AV1 que predice la crominancia desde el canal de luminancia. La alta correlación luma-croma reduce drásticamente los residuos de croma
Por qué AV1 logra alta eficiencia: Tamaños de bloque variables (4x4 a 128x128, divididos recursivamente), 56 direcciones de predicción intra, selección adaptativa de tipo de transformada (DCT, ADST, Identity), filtros de bucle (deblocking, CDEF, Loop Restoration) y codificación de entropía ANS.
Codificación de entropía - Principios de codificación Huffman y aritmética
La codificación de entropía es la etapa final que elimina la redundancia estadística. Asigna secuencias de bits de longitud variable basadas en la probabilidad de ocurrencia de símbolos, acercándose al tamaño mínimo teórico (entropía de Shannon).
Principales métodos de codificación de entropía:
- Codificación Huffman: Usada en JPEG. Asigna códigos prefijo de longitud variable basados en probabilidad. Los símbolos frecuentes obtienen códigos cortos (2 bits), los raros obtienen códigos largos (12 bits). Simple y rápida pero requiere mínimo 1 bit por símbolo, sin alcanzar el límite teórico
- Codificación aritmética: Usada en JPEG 2000, H.264 CABAC. Representa toda la secuencia de símbolos como un único número en el intervalo 0-1. 5-10% mejor compresión que Huffman pero mayor costo computacional
- ANS (Asymmetric Numeral Systems): Usada en AV1, Zstandard. Logra compresión de codificación aritmética a velocidad cercana a Huffman. Caracterizada por codificación/decodificación asimétrica (estructura LIFO)
- Modelado de contexto: Actualiza dinámicamente los modelos de probabilidad basándose en símbolos circundantes. CABAC usa información de bloques adyacentes para predecir la probabilidad del símbolo actual, mejorando la eficiencia de codificación
Fórmula de entropía de Shannon: H = -Σ p(x) * log2(p(x)) representa el mínimo teórico de bits por símbolo. Probabilidad igual (50/50) produce 1 bit/símbolo; probabilidad 99/1 produce ~0.08 bits/símbolo permitiendo compresión dramática.
Métricas de calidad de compresión - Diferencias y uso de PSNR, SSIM y VMAF
Existen múltiples métricas para evaluar objetivamente la calidad de compresión, cada una midiendo diferentes aspectos. Seleccionar métricas apropiadas permite la optimización de parámetros de compresión y comparaciones justas entre formatos.
Principales métricas de calidad:
- PSNR: Métrica clásica calculada a partir de diferencias de valores de píxel (MSE).
PSNR = 10 * log10(MAX^2 / MSE)en dB, mayor es mejor. Generalmente 30dB+ es aceptable, 40dB+ es alta calidad. Simple y rápida pero no siempre coincide con la percepción humana (no detecta distorsión estructural) - SSIM: Imita el sistema visual humano, evaluando similitud de luminancia, contraste y estructura. Valores 0-1, siendo 1 idéntico. 0.95+ es perceptualmente equivalente. Más precisa perceptualmente que PSNR, la más usada para comparación de calidad de compresión
- VMAF: Métrica basada en ML desarrollada por Netflix que combina múltiples características (VIF, DLM, Motion). Mayor correlación con evaluación subjetiva humana (MOS). Valores 0-100, 93+ es excelente. Más fuerte para video pero aplicable a imágenes fijas
- Butteraugli: Métrica perceptual desarrollada por Google que modela la sensibilidad a frecuencias espaciales y efectos de enmascaramiento, detectando diferencias mínimas perceptibles por humanos. Usada en el control de calidad de JPEG XL
Selección práctica: SSIM para comparación masiva rápida, VMAF para la calidad perceptual más precisa, Butteraugli para ajuste automático de parámetros. Se recomienda combinar múltiples métricas para un juicio integral.