|
Muchos de los contenidos que se transmiten a través de Internet están comprimidos. Archivos de texto, de música, de vídeo o de cualquier otro tipo se comprimen para reducir su tamaño, facilitar su intercambio a través de la red o ahorrar espacio de disco. Sin embargo, ¿cómo es posible reducir el tamaño de un archivo sin perder su contenido? Unos cuantos trucos de teoría de información son los que lo hacen posible.
Código binarioEn nuestros ordenadores solo se procesan señales activas o apagadas (de sí o no). Toda la información se representa mediante dos símbolos, habitualmente escritos 0 y 1, según haya corriente o no. Cada uno de estos símbolos recibe el nombre de bit. La principal información que manejan los ordenadores son cantidades, y el código binario permite una representación de los números similar a la que utilizamos las personas. Así, la serie 1, 2, 3, 4, 5… en binario es 1, 10, 11, 100, 101…
Códigos para letras Muchas aplicaciones necesitan representar letras además de cantidades. En estos casos, lo que se hace es crear un código a modo de diccionario que asigna a cada letra una cadena de símbolos binarios, normalmente de un tamaño fijo (llamados códigos uniformes). Dependiendo del alfabeto que hay que representar y de la tecnología existente se utiliza un código u otro, pero el más utilizado ha sido el código ASCII para el alfabeto inglés, ideado en 1963 y que codifica cada letra como una secuencia de 7 bits. Actualmente se utilizan extensiones del ASCII con caracteres como las letras con acento; y propuestas como Unicode, que busca integrar todas las formas de escritura utilizadas en el mundo en un único código, permitiendo por ejemplo texto en castellano, griego, japonés, hebreo y árabe en un mismo documento.
Comprimiendo…… texto… Teniendo un código para letras podemos plantearnos el problema de cómo comprimir un documento de texto. Realmente, con un código que asigne una secuencia de tamaño fijo a todas las letras, la única manera de reducir la longitud de un texto es utilizar menos bits por letra, pero eso reduce las letras que se pueden utilizar (con 7 bits se pueden representar 128 caracteres, pero con 6 solo 64, con 5 solo 32…). Un punto clave es el darnos cuenta de que no todas las letras son igual de frecuentes, de modo que podríamos crear un código que asigne secuencias más cortas a las letras más usadas, y secuencias más largas a las menos habituales. Con un código así, se puede esperar que la longitud total de todo un texto sea más corta que la del mismo texto usando un código uniforme. Un ejemplo aparece en la figura de la derecha. En ella se observa un alfabeto con solo 4 letras: A, B, C y D. La letra A es el doble de veces más frecuente que la B y el cuádruple de veces más frecuente que la C y la D; usando un código uniforme de 2 bits la palabra AAAABBCD se codifica con 16 bits mientras que usando un código de longitud variable se usan solo 14. A este tipo de código se le llama código de Huffman; fue inventado en 1952, y aunque existen otros tipos de código que comprimen mejor, este se sigue utilizando en muchas aplicaciones por su simplicidad.
… y otros archivos:Todos los archivos de un ordenador se pueden ver como documentos de texto en un alfabeto imaginario. Evidentemente, podemos aplicar sobre ellos métodos como el de Huffman para reducir su tamaño. Sin embargo, algunos contenidos destinados directamente a los humanos, como imágenes, sonido o vídeo, permiten mayor compresión a costa de perder algo de información, ya que nuestro cerebro es capaz de recomponer la parte perdida. Tomemos algunos ejemplos:
ImágenesImágenes como fotografías, en que existen grandes zonas de un mismo color, permiten sacrificar los detalles más pequeños y aun así mantener el contenido principal. Métodos de compresión que sacrifican información hay muchos, según el tipo de imagen, pero quizás el más común es el JPEG para fotografías, usado en la mayoría de las cámaras digitales. Otros métodos como GIF o PNG resultan más adecuados para ficheros que contengan gráficos. SonidoNuestro oído no es igual de sensible para todas las frecuencias de sonido. El formato de compresión de sonido más popular, el MP3, aprovecha este hecho para reducir el tamaño de los ficheros. Tomando como referencia este comportamiento del oído, se eliminan partes de las ondas acústicas a las que somos poco sensibles para conseguir un tamaño de archivo menor. VídeoOtra capacidad de nuestro cerebro es la de distinguir entre figuras y fondo. No es necesario guardar toda la imagen en cada fotograma de un vídeo, ya que muy a menudo en dos fotogramas consecutivos el fondo apenas habrá cambiado y serán muy parecidos. Si guardamos tan solo los cambios entre imágenes, podemos reducir enormemente el tamaño de los archivos de vídeo. Esta idea es la que aplican, entre otros, los estándares de vídeo MPEG o ITU-T. |