Compresión de datos

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 14:04 11 jul 2019 por Aosbot (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

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:

  1. Redundancia: Datos que son repetitivos o previsibles.
  2. 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/20 Hz y 16 000/20 000 Hz, 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, vídeos 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.

Véase también

Enlaces externos