En ciencias de la computación, la compresión de datos es la reducción del volumen de datos tratables para representar una determinada información empleando una menor cantidad de espacio. Al acto de compresión de datos se denomina «compresión», y al contrario «descompresión».
El espacio que ocupa una información codificada (datos, señal digital, etc.) sin compresión es el producto entre la frecuencia de muestreo y la resolución. Por tanto, cuantos más bits se empleen mayor será el tamaño del archivo. No obstante, la resolución viene impuesta por el sistema digital con que se trabaja y no se puede alterar el número de bits a voluntad; por ello, se utiliza la compresión, para transmitir la misma cantidad de información que ocuparía una gran resolución en un número inferior de bits.
La compresión es un caso particular de la codificación, cuya característica principal es que el código resultante tiene menor tamaño que el original.
La compresión de datos se basa fundamentalmente en buscar repeticiones en series de datos para después almacenar solo el dato junto al número de veces que se repite. Así, por ejemplo, si en un fichero aparece una secuencia como "AAAAAA", ocupando 6 bytes se podría almacenar simplemente "6A" que ocupa solo 2 bytes, en algoritmo RLE.
En realidad, el proceso es mucho más complejo, ya que raramente se consigue encontrar patrones de repetición tan exactos (salvo en algunas imágenes). Se utilizan algoritmos de compresión:
Por un lado, algunos buscan series largas que luego codifican en formas más breves. Por otro lado, algunos algoritmos, como el algoritmo de Huffman, examinan los caracteres más repetidos para luego codificar de forma más corta los que más se repiten. Otros, como el LZW, construyen un diccionario con los patrones encontrados, a los cuales se hace referencia de manera posterior. La codificación de bytes pares es otro sencillo algoritmo de compresión muy fácil de entender.
A la hora de hablar de compresión hay que tener presentes dos conceptos:
Redundancia: Datos que son repetitivos o previsibles. Entropía: La información nueva o esencial que se define como la diferencia entre la cantidad total de datos de un mensaje y su redundancia.
La información que transmiten los datos puede ser de tres tipos:
Redundante: información repetitiva o predecible. Irrelevante: información que no podemos apreciar y cuya eliminación por tanto no afecta al contenido del mensaje. Por ejemplo, si las frecuencias que es capaz de captar el oído humano están entre 16/20Hz y 16 000/20 000Hz, serían irrelevantes aquellas frecuencias que estuvieran por debajo o por encima de estos valores. Básica: la relevante. La que no es ni redundante ni irrelevante. La que debe ser transmitida para que se pueda reconstruir la señal.
Teniendo en cuenta estos tres tipos de información, se establecen tres tipologías de compresión de la información:
Sin pérdidas reales: es decir, transmitiendo toda la entropía del mensaje (toda la información básica e irrelevante, pero eliminando la redundante). Subjetivamente sin pérdidas: es decir, además de eliminar la información redundante se elimina también la irrelevante. Subjetivamente con pérdidas: se elimina cierta cantidad de información básica, por lo que el mensaje se reconstruirá con errores perceptibles, pero tolerables (por ejemplo: la videoconferencia).
Diferencias entre compresión con pérdida y sin ella El objetivo de la compresión es siempre reducir el tamaño de la información, intentando que esta reducción de tamaño no afecte al contenido. No obstante, la reducción de datos puede afectar o no a la calidad de la información:
Compresión sin pérdida: los datos antes y después de comprimirlos son exactos en la compresión sin pérdida. En el caso de la compresión sin pérdida una mayor compresión solo implica más tiempo de proceso. La tasa de bits siempre es variable en la compresión sin pérdida. Se utiliza principalmente en la compresión de texto. Un algoritmo de compresión con pérdida puede eliminar datos para disminuir aún más el tamaño, con lo que reduce la calidad. En la compresión con pérdida, la tasa de bits puede ser constante o variable. Una vez realizada la compresión, no se puede obtener la señal original, aunque sí una aproximación cuya semejanza con la original dependerá del tipo de compresión. Este tipo de compresión se da principalmente en imágenes, videos y sonidos. Además de estas funciones la compresión permite que los algoritmos usados para reducir las cadenas del código desechen información redundante de la imagen. Uno de los formatos que permite compensar esta perdida es el JPG, que emplea técnicas que suavizan los bordes y áreas que tienen un color similar permitiendo que la falta de información sea invisible a simple vista. Este método permite un alto grado de compresión con pérdidas en la imagen que, muchas veces, solo es visible mediante el zoom.
Usos Imagen
La codificación de entropía se originó en la década de 1940 con la introducción de la codificación Shannon-Fano, la base de la codificación Huffman que se desarrolló en 1950. La codificación por transformada se remonta a finales de la década de 1960, con la introducción de la transformada rápida de Fourier (FFT) en 1968 y la transformada Hadamard en 1969.
Una importante técnica de compresión de imágenes es la transformada de coseno discreta (DCT), una técnica desarrollada a principios de la década de 1970. La DCT es la base del JPEG, un formato de compresión con pérdidas que fue introducido por el Joint Photographic Experts Group (JPEG) en 1992. JPEG reduce en gran medida la cantidad de datos necesarios para representar una imagen a costa de una reducción relativamente pequeña de la calidad de la misma y se ha convertido en el formato de archivo de imagen más utilizado. Su algoritmo de compresión altamente eficiente basado en la DCT fue en gran parte responsable de la amplia proliferación de imágenes digitales y fotos digitales.
Lempel-Ziv-Welch (LZW) es un algoritmo de compresión sin pérdidas desarrollado en 1984. Se utiliza en el formato GIF, introducido en 1987. DEFLATE, un algoritmo de compresión sin pérdidas especificado en 1996, se utiliza en el formato Portable Network Graphics (PNG).
La compresión wavelet, el uso de wavelets en la compresión de imágenes, comenzó tras el desarrollo de la codificación DCT. El estándar JPEG 2000 se introdujo en el año 2000. A diferencia del algoritmo DCT utilizado por el formato JPEG original, JPEG 2000 utiliza en su lugar algoritmos de transformada de ondícula discreta (DWT). La tecnología JPEG 2000, que incluye la extensión Motion JPEG 2000, fue seleccionada como el estándar de codificación de vídeo para el cine digital en 2004.
Audio
La compresión de datos de audio, que no debe confundirse con la compresión de rango dinámico, tiene el potencial de reducir el ancho de banda y los requisitos de almacenamiento de los datos de audio. Los algoritmos de compresión de audio se implementan en software como códecs de audio. Tanto en la compresión con pérdidas como en la compresión sin pérdidas, se reduce la redundancia de la información, utilizando métodos como la codificación, la cuantización, la transformada de coseno discreta y la predicción lineal para reducir la cantidad de información utilizada para representar los datos sin comprimir.
Los algoritmos de compresión de audio con pérdidas proporcionan una mayor compresión y se utilizan en numerosas aplicaciones de audio, como Vorbis y MP3. Estos algoritmos se basan casi todos en la psicoacústica para eliminar o reducir la fidelidad de los sonidos menos audibles, reduciendo así el espacio necesario para almacenarlos o transmitirlos.
La compensación aceptable entre la pérdida de calidad de audio y el tamaño de transmisión o almacenamiento depende de la aplicación. Por ejemplo, un disco compacto (CD) de 640 MB contiene aproximadamente una hora de música de alta fidelidad sin comprimir, menos de 2 horas de música comprimida sin pérdidas o 7 horas de música comprimida en el formato MP3 a una tasa de bits media. Una grabadora de sonido digital puede almacenar normalmente unas 200 horas de habla claramente inteligible en 640 MB.The Olympus WS-120 digital speech recorder, according to its manual, can store about 178 hours of speech-quality audio in .WMA format in 500 MB of flash memory.
La compresión de audio sin pérdidas produce una representación de los datos digitales que puede descodificarse en un duplicado digital exacto del original. Los ratios de compresión se sitúan en torno al 50-60 % del tamaño original, que es similar a los de la compresión genérica de datos sin pérdidas. Los códecs sin pérdidas utilizan el ajuste de curvas o la predicción lineal como base para estimar la señal. Los parámetros que describen la estimación y la diferencia entre la estimación y la señal real se codifican por separado.
Existen varios formatos de compresión de audio sin pérdidas. Véase lista de códecs sin pérdidas para obtener una lista. Algunos formatos están asociados a un sistema distinto, como Direct Stream Transfer, utilizado en Super Audio CD y Meridian Lossless Packing, utilizado en DVD-Audio, Dolby TrueHD, Blu-ray y HD DVD.
Algunos formatos de archivo de audio presentan una combinación de un formato con pérdidas y una corrección sin pérdidas; esto permite eliminar la corrección para obtener fácilmente un archivo con pérdidas. Estos formatos incluyen MPEG-4 SLS (Scalable to Lossless), WavPack y OptimFROG DualStream.
Cuando se van a procesar archivos de audio, ya sea por compresión posterior o para edición, es deseable trabajar a partir de un original inalterado (sin comprimir o comprimido sin pérdidas). El procesamiento de un archivo comprimido sin pérdidas para algún fin suele producir un resultado final inferior a la creación del mismo archivo comprimido a partir de un original sin comprimir. Además de para la edición o la mezcla de sonido, la compresión de audio sin pérdidas se utiliza a menudo para el almacenamiento de archivos, o como copias maestras.
Compresión de audio con pérdidas thumb|Comparación de espectrogramas de audio en un formato sin comprimir y en varios formatos con pérdidas. Los espectrogramas con pérdidas muestran bandlimiting de las frecuencias más altas, una técnica común asociada a la compresión de audio con pérdidas. La compresión de audio con pérdidas se utiliza en una amplia gama de aplicaciones. Además de las aplicaciones independientes de reproducción de archivos en reproductores MP3 u ordenadores, los flujos de audio comprimidos digitalmente se utilizan en la mayoría de los DVD de vídeo, la televisión digital, los medios de transmisión en Internet, la radio por satélite y por cable, y cada vez más en las emisiones de radio terrestre. La compresión con pérdidas suele lograr una compresión mucho mayor que la compresión sin pérdidas, al descartar los datos menos críticos basándose en optimizaciones psicoacústicas.
La psicoacústica reconoce que no todos los datos de un flujo de audio pueden ser percibidos por el sistema auditivo humano. La mayor parte de la compresión con pérdidas reduce la redundancia identificando primero los sonidos perceptualmente irrelevantes, es decir, los sonidos que son muy difíciles de oír. Ejemplos típicos son las frecuencias altas o los sonidos que se producen al mismo tiempo que los sonidos más fuertes. Esos sonidos irrelevantes se codifican con menor precisión o no se codifican en absoluto.