Pontificia Universidad Católica de Chile

1. Introducción a la Compresión

Compresión sin pérdida (Huffman) y con pérdida (perceptual) — dos estrategias fundamentales

Compresión sin pérdida — Código de Huffman

La compresión sin pérdida reconstruye los datos exactamente. El código de Huffman asigna secuencias de bits más cortas a los símbolos más frecuentes, reduciendo el número total de bits sin perder información. Es un código de prefijo óptimo: ningún código es prefijo de otro, lo que permite decodificación unívoca. Se usa en FLAC (audio), PNG (imagen) y como etapa final en MP3 y JPEG.

Árbol de Huffman

Huffman en la práctica

Código de prefijo óptimo
El árbol de Huffman garantiza el código de longitud variable óptimo para una distribución de probabilidad dada. El símbolo más frecuente recibe el código más corto (menos bits); el menos frecuente, el más largo. La longitud promedio es igual a la entropía de la fuente (en bits/símbolo) cuando las probabilidades son potencias de ½.
Huffman en audio y video
En MP3, tras la cuantización psicoacústica, los coeficientes DCT cuantizados se codifican con tablas de Huffman seleccionadas dinámicamente para reducir aún más el tamaño. En FLAC (lossless), Huffman codifica los residuos de predicción lineal. En ambos casos, Huffman elimina la redundancia estadística que queda después del modelo perceptual.

Compresión con pérdida — simulación JPEG en imágenes

La compresión con pérdida descarta información que el perceptor (ojo, oído) no puede detectar fácilmente. JPEG divide la imagen en bloques 8×8, aplica la DCT (Transformada Discreta del Coseno) y cuantiza los coeficientes de alta frecuencia con pasos gruesos. A calidad alta la diferencia es invisible; a calidad baja aparecen artefactos de bloque claramente visibles. La misma idea se aplica al audio en MP3/AAC.

Original | Comprimida | Diferencia × 5
⚠ JPEG calidad 100% ≠ sin pérdida  ·  Incluso a calidad máxima, JPEG aplica cuantización con paso=1: los coeficientes DCT se redondean al entero más cercano. En zonas lisas, los coeficientes de alta frecuencia valen ~0 y se almacenan con pocos bits → ratio ≈ 5:1. El error es imperceptible (PSNR > 60 dB), pero existe. Para compresión sin pérdida real se usa PNG (imágenes) o FLAC (audio), que reconstruyen el original bit a bit.

¿Por qué aceptamos la compresión con pérdida?

Límites perceptuales
Los sistemas sensoriales tienen resolución finita. El ojo no distingue variaciones de alta frecuencia espacial en zonas de alto contraste. El oído no escucha sonidos suaves cerca de sonidos fuertes. La compresión perceptual explota exactamente estos límites para descartar información sin que lo notemos.
La DCT y la cuantización
La DCT convierte un bloque de píxeles en coeficientes de frecuencia: el coeficiente DC (promedio) y los coeficientes AC (detalles). JPEG asigna más bits a las bajas frecuencias (importantes) y pocos a las altas (menos visibles). Esta asignación desigual es el núcleo de la compresión perceptual, exactamente igual que el modelo psicoacústico en MP3.