Tutoriales

Compresión y descompresión: guía teórica

La compresión y descompresión de archivos es algo muy rutinario en el uso habitual de los ordenadores. Ya sea para almacenar mayor cantidad de datos en menor espacio o para hacer que archivos multimedia (audio, vídeo, imagen) ocupen menos espacio para poderlos subir a las redes, etc., siempre se utilizan diversos programas de des/compresión. Pero… ¿realmente sabes cómo funcionan? Vamos a verlo.

¿Qué es la compresión y descompresión de archivos?

compresión descompresión

La compresión y descompresión de archivos son técnicas utilizadas para reducir el tamaño de un archivo o conjunto de archivos, con el objetivo de ahorrar espacio en el almacenamiento y facilitar la transferencia de datos a través de internet u otros medios.

  • Compresión de archivos: es el proceso mediante el cual un archivo o conjunto de archivos se reduce en tamaño mediante algoritmos y técnicas de codificación. El resultado de la compresión es un archivo más pequeño, conocido como archivo comprimido o archivo zip. La compresión se utiliza para agrupar varios archivos en uno solo y también para reducir el tamaño de archivos individuales, como imágenes, documentos o programas. Al comprimir un archivo, se eliminan datos redundantes o se representan de una manera más eficiente, lo que permite reducir significativamente el tamaño del archivo original.
  • Descompresión de archivos: es el proceso inverso a la compresión. Consiste en restaurar el archivo comprimido a su estado original, recuperando todos los datos y estructura que tenía antes de ser comprimido. Para descomprimir un archivo, se utiliza un programa de descompresión que lee el archivo comprimido, aplica los algoritmos inversos y restaura los datos a su formato original. Una vez descomprimido, el archivo vuelve a su tamaño y estructura original y puede ser utilizado como cualquier otro archivo.

La compresión y descompresión de archivos son muy útiles para ahorrar espacio en el disco duro o en la memoria de dispositivos, así como para acelerar la transferencia de archivos por internet o a través de medios de almacenamiento externos. Los formatos de archivo comprimido más comunes son ZIP, RAR y 7z, entre otros, y hay numerosos programas de compresión y descompresión disponibles para realizar estas tareas de manera sencilla y eficiente.

También te puede interesar conocer cuáles son los mejores discos duros SSD y HDD del mercado, para que no tengas problemas de espacio de almacenamiento.

Tipos de compresión

Winrar, compresión

Hay dos tipos principales de compresión de archivos: la compresión sin pérdida y la compresión con pérdida, que se emplean para describir los diversos enfoques y algoritmos utilizados en el proceso de compresión. A continuación, se describen brevemente ambos tipos:

  • Compresión sin pérdida: en este caso, se emplea un algoritmo que reduce el tamaño del archivo sin eliminar información. Esto implica que, al descomprimir el archivo, se recuperan todos los datos originales en su forma exacta. Este tipo de compresión resulta ideal para archivos que requieren una reproducción precisa, como documentos de texto, ejecutables y archivos del sistema. Algunos de los algoritmos de compresión sin pérdida más comunes son ZIP, RAR, GZIP y 7-Zip.
  • Compresión con pérdida: eEste método se utiliza principalmente para archivos multimedia, como imágenes, audio y video. En la compresión con pérdida, se eliminan datos redundantes o menos relevantes con el objetivo de reducir significativamente el tamaño del archivo. No obstante, esta reducción de datos puede conllevar una disminución perceptible de la calidad en el contenido comprimido. Los formatos de compresión con pérdida más conocidos incluyen JPEG (imágenes), MP3 (audio) y MPEG (video). Esta compresión se emplea únicamente en archivos que pueden permitirse cierta pérdida de información, como imágenes y videos, mientras que para otros archivos, como el texto mencionado anteriormente, no sería adecuada ya que es fundamental mantenerlo íntegro para que conserve su sentido.

Es esencial tener en cuenta que la elección entre compresión sin pérdida y compresión con pérdida dependerá del tipo de archivo y del equilibrio que se busque entre el tamaño del archivo y la calidad deseada. La compresión sin pérdida es preferible cuando se requiere una reproducción exacta, mientras que la compresión con pérdida resulta más adecuada para reducir el tamaño de archivos multimedia, aunque a expensas de cierta calidad.

Algoritmos de compresión

compresión

Un algoritmo de compresión es un conjunto de reglas y procedimientos matemáticos que se utilizan para reducir el tamaño de un archivo o conjunto de datos de manera eficiente. El objetivo principal de un algoritmo de compresión es eliminar redundancias y patrones innecesarios en los datos para que ocupen menos espacio en el almacenamiento y se puedan transmitir o procesar más rápidamente.

Los algoritmos de compresión pueden variar en complejidad y enfoque, y hay diferentes técnicas y métodos para lograr la compresión eficiente de distintos tipos de datos. Algunos ejemplos de algoritmos de compresión conocidos son:

  • Deflate: es un algoritmo de compresión sin pérdida utilizado en el formato ZIP y GZIP. Combina los algoritmos LZ77 y Huffman para lograr una alta eficiencia en la compresión.
  • LZ77 (Lempel-Ziv 1977): es uno de los primeros algoritmos de compresión sin pérdida. Utiliza un enfoque de búsqueda de coincidencias para reemplazar secuencias repetitivas por referencias a secuencias previas.
  • LZ78 (Lempel-Ziv 1978): es otro algoritmo de la familia Lempel-Ziv, que utiliza un enfoque de diccionario para reemplazar secuencias repetitivas.
  • LZW (Lempel-Ziv-Welch): basado en el algoritmo LZ78, el LZW es ampliamente utilizado en formatos como GIF y TIFF.
  • Run-Length Encoding (RLE): es un algoritmo de compresión simple y eficiente que reemplaza secuencias repetitivas por una referencia al símbolo y su longitud.
  • Burrows-Wheeler Transform (BWT): es un algoritmo que reorganiza los datos para aumentar la cantidad de secuencias repetitivas, lo que mejora la eficiencia de la compresión.
  • LZMA (Lempel-Ziv-Markov chain Algorithm). Ofrece una mayor relación de compresión en comparación ZIP.
  • LZSS: es un algoritmo que utiliza una combinación de compresión con pérdida y sin pérdida. El enfoque principal es reemplazar secuencias repetitivas de datos con referencias a secuencias previas en el archivo. Esta técnica de compresión sin pérdida se utiliza para lograr una reducción de tamaño eficiente, especialmente para datos que contienen patrones repetitivos. Junto con Hoffman, es el empleado en RAR.
  • Huffman: es un algoritmo de compresión sin pérdida que se utiliza para representar los datos más frecuentes con códigos más cortos y los datos menos frecuentes con códigos más largos. Esto permite una mayor eficiencia en la representación de los datos comprimidos.

También te puede interesar leer nuestra guía sobre los tipos de archivos

Cómo funciona la compresión y descompresión de un archivo

Explicar la compresión y descompresión con los métodos y algoritmos actuales es complicado. Pero vamos atrás y vamos a ver ejemplos muy simples de cómo se comprimiría algo para que así captes el concepto y lo comprendas. Por ejemplo, imagina que tienes un archivo de texto que quieres comprimir y que contiene este texto:

Los árboles, majestuosas maravillas de la naturaleza, desempeñan un papel vital en el equilibrio 
ecológico de nuestro planeta. Con sus robustos troncos, extensas ramas y frondosas copas, ofrecen 
refugio y alimento a innumerables especies de animales y aves. Su proceso de fotosíntesis captura 
dióxido de carbono y libera oxígeno, contribuyendo así a purificar el aire que respiramos. Además, 
su sistema de raíces ayuda a prevenir la erosión del suelo y mantiene los cursos de agua. Desde 
tiempos ancestrales, los árboles han sido fuente de recursos para la humanidad, proporcionando 
madera, alimentos y medicinas. Admirados por su belleza y valor ecológico, los árboles nos 
recuerdan la importancia de proteger y preservar la biodiversidad que la naturaleza nos brinda 
generosamente.

Este texto contiene algunas redundancias, concretamente se repiten las siguientes palabras:

  • Árboles: 3 veces
  • Naturaleza: 2 veces
  • Y: 8 veces

Con la compresión lo que se haría sería tratar de eliminar esas repeticiones y solo ponerlas una sola vez, con indicaciones de dónde estarían situadas esas palabras repetidas para que en el momento de la compresión se pueda volver a restablecer el texto original. Por ejemplo, este otro texto ocuparía menos bytes que el primero, al tener menos caracteres que almacenar:

Los X, majestuosas maravillas de la Y, desempeñan un papel vital en el equilibrio 
ecológico de nuestro planeta. Con sus robustos troncos, extensas ramas y frondosas copas, ofrecen 
refugio y alimento a innumerables especies de animales y aves. Su proceso de fotosíntesis captura 
dióxido de carbono y libera oxígeno, contribuyendo así a purificar el aire que respiramos. Además, 
su sistema de raíces ayuda a prevenir la erosión del suelo y mantiene los cursos de agua. Desde 
tiempos ancestrales, los X han sido fuente de recursos para la humanidad, proporcionando 
madera, alimentos y medicinas. Admirados por su belleza y valor ecológico, los X nos 
recuerdan la importancia de proteger y preservar la biodiversidad que la Y nos brinda 
generosamente.

Donde:

  • X = árboles
  • Y = naturaleza

X es un caracter ASCII que ocupa 8 bits o 1 byte, mientras que árboles es una palabra compuesta por 7 caracteres ASCII, lo que sería 7 bytes. Lo mismo ocurre con Y, que es solo 1 byte, mientras que naturaleza es 10 bytes. Por tanto, con esto hemos conseguido reducir bastantes bytes el archivo de texto inicial. Evidentemente, esto no funciona del todo así en la práctica, pero es para que puedas comprenderlo.

En otro tipo de archivos, el procedimiento sería parecido, como por ejemplo:

  • Imagen: en una imagen puede haber muchos píxeles repetidos, por ejemplo, imagina que el fondo de la imagen es todo blanco, todos esos píxeles son iguales, y por tanto se podrían reducir de tamaño al comprimir.
  • Sonido: es un sonido ocurre algo parecido, también hay sonidos que se pueden repetir y que pueden ser reducidos.
  • Vídeo: en el caso de vídeo tenemos que se compone de imágenes o fotogramas que van pasando en secuencia y de sonido. Por tanto, en la pista de sonido se podría hacer lo  mismo que en el punto anterior, y en los fotogramas se podría evitar la redundancia de algunos que sean iguales. Por ejemplo, imagina una escena estática donde solo se mueva una parte del frame o fotograma, y cuya longitud es de 60 frames. Se podría tomar un solo frame y tener en cuenta solo la parte en la que hay movimiento.

No olvides comentar…

Isaac

Geek de los sistemas electrónicos, especialmente del hardware informático. Con alma de escritor y pasión por compartir todo el conocimiento sobre tecnología.
Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected]
Botón volver arriba