Compresión de datos: definición, tipos, algoritmos y ejemplos
Descubre qué es la compresión de datos, sus tipos, algoritmos y ejemplos prácticos para ahorrar espacio y optimizar transferencias en Internet.
La compresión de datos es un conjunto de pasos para empaquetar los datos en un espacio más pequeño, al tiempo que permite volver a ver los datos originales. La compresión es un proceso bidireccional: un algoritmo de compresión puede utilizarse para reducir el tamaño de un paquete de datos, pero también puede ejecutarse en sentido contrario, para descomprimir el paquete a su forma original. La compresión de datos es útil en informática para ahorrar espacioen el disco o para reducir el ancho de banda utilizado al enviar datos (por ejemplo, a través de Internet).
¿Qué es la compresión de datos?
La compresión consiste en representar la información con menos bits aprovechando patrones, redundancias o características perceptuales de los datos. El objetivo puede ser conservar exactamente los datos originales (compresión sin pérdida) o permitir cierta pérdida de información irrelevante para el usuario a cambio de mayores tasas de reducción (compresión con pérdida).
Tipos principales
- Compresión sin pérdida (lossless): permite reconstruir exactamente los datos originales. Es imprescindible en textos, programas, bases de datos y archivos que requieran integridad. Ejemplos: ZIP, gzip, PNG, FLAC.
- Compresión con pérdida (lossy): sacrifica parte de la información poco perceptible para lograr mayores tasas de compresión. Es común en imágenes, audio y vídeo donde se prioriza la experiencia perceptual. Ejemplos: JPEG, MP3, AAC, H.264.
Principales algoritmos y técnicas
- Codificación estadística: Huffman, codificación aritmética. Asignan códigos más cortos a símbolos más frecuentes.
- Técnicas basadas en diccionarios: LZ77, LZ78, LZW. Reemplazan secuencias repetidas por referencias a entradas de un diccionario.
- Transformaciones: Transformada de Burrows–Wheeler (BWT), transformadas de coseno/discreta usadas en JPEG y códecs de vídeo para concentrar energía en pocos coeficientes.
- Compresión por predicción: se predice el siguiente valor y se codifica la diferencia (residuo). Muy usada en audio e imagen (por ejemplo, PNG usa predicción + DEFLATE).
- Compresión perceptual: modelos psicoacústicos o psicovisuales que eliminan información no apreciable por el oído o la vista (MP3, AAC, JPEG, códecs de vídeo).
- Algoritmos modernos: DEFLATE (gzip, PNG), Brotli (web), LZMA (7z), Brotli y Zstd (equilibrio velocidad/ratio), Bzip2 (BWT).
Medidas y métricas
- Ratio de compresión: relación entre el tamaño original y el tamaño comprimido. Por ejemplo, ratio = tamaño original / tamaño comprimido. Un ratio de 4:1 indica que el archivo comprimido es cuatro veces más pequeño.
- Porcentaje de ahorro: = (1 - tamaño_comprimido / tamaño_original) × 100 %. Ejemplo: original 10 MB, comprimido 2 MB → ahorro = (1 - 2/10)=0,8 → 80 %.
- Velocidad: tiempo de compresión y descompresión. Importante en aplicaciones en tiempo real o transmisión en streaming.
- Uso de memoria y CPU: algunos algoritmos requieren mucha memoria para altos ratios (LZMA, BWT).
- Latencia y streaming: si se necesita transmitir datos mientras se comprime, se prefieren algoritmos que soporten procesamiento en bloques o streaming.
Ejemplos prácticos
- Texto/JSON/CSV: compresión sin pérdida con gzip, Brotli o ZIP; suelen obtenerse ratios altos cuando hay repetición o estructuras predecibles.
- Imágenes: PNG (lossless) para gráficos con áreas uniformes; JPEG (lossy) para fotografías con buen compromiso calidad/tamaño.
- Audio: FLAC (lossless) para archivado, MP3/AAC/Opus (lossy) para streaming y almacenamiento con menor tamaño.
- Vídeo: H.264/H.265/VP9/AV1 (lossy por defecto) para transmisión de vídeo; la elección depende de compatibilidad, calidad y eficiencia.
- Archivos comprimidos: ZIP, 7z, tar.gz; 7z (LZMA) suele ofrecer mejores ratios a costa de más tiempo y memoria.
Caso práctico — cálculo rápido
Si tienes un archivo original de 12 MB y al comprimirlo queda en 3 MB:
- Ratio = 12 / 3 = 4 → 4:1
- Ahorro = (1 - 3/12) × 100 = 75 %
Ventajas y desventajas
- Ventajas: ahorro de espacio, menor uso de ancho de banda, mejores tiempos de transferencia, posibilidad de cifrado + compresión.
- Desventajas: tiempo de procesado, posible pérdida de calidad (en los métodos con pérdida), necesidad de elegir parámetros adecuados, compatibilidad entre herramientas/formatos.
Cuándo elegir lossless o lossy
- Usa lossless si la integridad es crítica: código fuente, documentos legales, bases de datos, imágenes médicas, archivos de audio maestros.
- Usa lossy cuando el consumo humano final es más importante que la fidelidad absoluta y se busca reducir significativamente el tamaño: distribución web de imágenes y vídeos, transmisión de audio, cámaras digitales destinadas a compartir contenido.
Consejos prácticos
- Prueba varios formatos y niveles de compresión para encontrar el mejor compromiso entre tamaño y calidad.
- Para web, usa formatos modernos: Brotli para texto (HTML/CSS/JS), WebP/AVIF para imágenes cuando sea posible.
- Mantén copias originales si trabajas con compresión con pérdida y podrías necesitar la máxima calidad más adelante.
- Considera el tiempo de descompresión en clientes/servidores y la compatibilidad con navegadores o reproductores.
La compresión de datos es una herramienta esencial en informática y comunicaciones. Conocer los distintos métodos, sus limitaciones y sus aplicaciones permite tomar decisiones informadas para optimizar almacenamiento y transferencia sin sacrificar lo que más importa: integridad o calidad perceptual.
Compresión sin pérdidas
La compresión sin pérdidas empaqueta los datos de tal manera que el paquete comprimido puede descomprimirse, y los datos pueden sacarse exactamente igual que entraron. Esto es muy importante para los programas informáticos y los archivos, ya que incluso un cambio muy pequeño en un programa informático lo haría inutilizable.
Este tipo de compresión funciona reduciendo el espacio desperdiciado en un dato. Por ejemplo, si recibes un paquete de datos que contiene "AAAAABBBB", puedes comprimirlo en "5A4B", que tiene el mismo significado pero ocupa menos espacio. Este tipo de compresión se denomina "codificación de longitud de carrera", porque se define la longitud de la "carrera" de un carácter. En el ejemplo anterior, hay dos series: una serie de 5 A y otra de 4 B.
El problema de la codificación run-length es que sólo funciona con trozos largos del mismo valor de datos. Si recibes un paquete con "ABBAABAAB" en su interior, se puede comprimir en "1A2B2A1B2A1B"; ¡pero eso es más largo que el original! En este caso, se puede utilizar otro método: comprobar la frecuencia con la que aparece un valor concreto en todo el paquete de datos. A esto se le llama a menudo compresión de frecuencias.
El tipo más común de compresión de frecuencias se denomina codificación Huffman, por el nombre del científico que tuvo la idea. El plan básico consiste en asignar un código a cada valor distinto de un dato: los valores que aparecen siempre reciben códigos más cortos, y los que sólo aparecen una o dos veces, códigos más largos.
Ejemplos de compresión sin pérdidas
Compresión con pérdidas
Para algunos tipos de datos, la compresión con pérdidas puede ir mucho más allá; es el caso más frecuente de los archivos multimedia, como la música y las imágenes. La compresión con pérdidas pierde parte de los datos para que haya menos que almacenar. Dependiendo de la información que se pierda, la gente no se da cuenta de que falta. En consecuencia, simplemente se puede eliminar de los datos.
Por supuesto, esto no funcionará para los programas de ordenador y otros datos de este tipo en los que cada pieza es importante; tirar piezas de un programa de ordenador generalmente no es saludable para el programa.
Ejemplos de compresión con pérdidas
- Imágenes: JPEG
- Audio: MP3, Windows Media
- Vídeo: MPEG, DivX, Windows Video
Preguntas y respuestas
P: ¿Qué es la compresión de datos?
R: La compresión de datos se refiere al proceso de empaquetar datos en un espacio más pequeño, permitiendo al mismo tiempo acceder de nuevo a los datos originales.
P: ¿Para qué sirve la compresión de datos en informática?
R: La compresión de datos es útil en informática para ahorrar espacio en disco y reducir el ancho de banda necesario para enviar datos por Internet.
P: ¿La compresión de datos es un proceso unidireccional?
R: No, la compresión de datos es un proceso bidireccional. Puede utilizarse para hacer más pequeños los paquetes de datos, pero también puede ejecutarse a la inversa para descomprimir el paquete y devolverlo a su forma original.
P: ¿Qué ventajas aporta la compresión de datos al envío de datos por Internet?
R: Al comprimir los datos, se puede reducir el ancho de banda necesario para enviarlos, lo que a su vez reduce el tiempo que se tarda en enviarlos.
P: ¿Por qué es importante que los datos originales puedan verse después de la compresión?
R: Si no se puede acceder a los datos originales después de la compresión, la utilidad de los datos comprimidos es limitada.
P: ¿Puede la compresión de datos acelerar la transferencia de archivos de gran tamaño?
R: Sí, la compresión de datos puede ayudar a acelerar la transferencia de archivos grandes, ya que los archivos más pequeños tardan menos en transferirse.
P: ¿Qué es un algoritmo de compresión?
R: Un algoritmo de compresión es un conjunto de pasos utilizados para comprimir datos en un espacio más pequeño, permitiendo al mismo tiempo volver a ver los datos originales.
Buscar dentro de la enciclopedia