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.
Huffman en la práctica
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 ½.
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.
¿Por qué aceptamos la compresión con pérdida?
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 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.