¿Cómo funciona la compresión de archivos?

Total
3
Shares
Cómo funciona la compresión de archivos

Los ingenieros de software siempre han desarrollado nuevas formas de ajustar una gran cantidad de datos en un espacio pequeño. Era cierto cuando nuestros discos duros eran pequeños, y el advenimiento de Internet lo hizo más crítico. La compresión de archivos juega un papel importante al conectarnos, ya que nos permite enviar menos datos en el futuro para que podamos tener descargas más rápidas y ajustar más conexiones en redes ocupadas.

1. ¿Entonces, cómo funciona?

Para responder a esa pregunta implicaría explicar algunas matemáticas muy complicadas, ciertamente más de lo que podemos cubrir en este artículo, pero no es necesario comprender con precisión cómo funciona matemáticamente para comprender los conceptos básicos.

Las bibliotecas más populares para comprimir texto se basan en dos algoritmos de compresión, que utilizan ambos al mismo tiempo para lograr relaciones de compresión muy altas. Estos dos algoritmos son “LZ77” y “Codificación Huffman“. La codificación de Huffman es bastante complicada, y no entraremos en detalles aquí. Principalmente, utiliza algunas matemáticas elegantes para asignar códigos binarios más cortos a letras individuales, reduciendo el tamaño de los archivos en el proceso.

LZ77, por otro lado, es relativamente simple y es de lo que hablaremos aquí. Busca eliminar palabras duplicadas y reemplazarlas con una “clave” más pequeña que represente la palabra.

Tome este breve texto por ejemplo:

Ejemplo compresión de texto
Ejemplo compresión de texto

El algoritmo LZ77 miraría este texto, se daría cuenta de que repite “adictec” tres veces y lo cambiaría a esto:

Ejemplo algoritmo LZ77
Ejemplo algoritmo LZ77

Luego, cuando quiera volver a leer el texto, reemplazará cada instancia de (h) con “adictec“, volviendo a la frase original.

Llamamos a la compresión así “sin pérdidas“: los datos que ingresas son los mismos que los que obtienes. Nada se pierde.

En realidad, LZ77 no usa una lista de claves, sino que reemplaza la segunda y tercera aparición con un enlace en la memoria:

Cómo funciona la compresión de texto
Cómo funciona la compresión de texto

Entonces, cuando llegue a (h), mirará hacia atrás a “adictec” y lo leerá en su lugar.

Si está interesado en una explicación más detallada, el siguiente video de Computerphile es bastante útil.

Ahora, este es un ejemplo idealizado. En realidad, la mayoría del texto está comprimido con teclas tan pequeñas como de unos pocos caracteres. Por ejemplo, la palabra “la” se comprimiría incluso cuando aparece en palabras como “las”, “lata” y “lado”. Con el texto repetido, puedes obtener algunas proporciones de compresión locas. Tome el siguiente archivo de texto con la palabra “adictec” repetido 100 veces. El archivo de texto original tiene un tamaño de cuatro kilobytes (4KB). Sin embargo, cuando se comprime, solo ocupa 175 bytes. Eso es casi un 95% de compresión.

Algoritmo para la compresión de texto
Algoritmo para la compresión de texto

Ahora, obviamente, ese es un ejemplo bastante extremo ya que solo repetimos la misma palabra una y otra vez. En la práctica general, probablemente obtendrás alrededor del 30-40% de compresión utilizando un formato de compresión como ZIP en un archivo que es principalmente texto.

Este algoritmo LZ77 se aplica a todos los datos binarios, por cierto, y no solo al texto, aunque el texto generalmente es más fácil de comprimir debido a la cantidad de palabras repetidas que usan la mayoría de los idiomas. Un idioma como el chino, por ejemplo, podría ser un poco más difícil de comprimir que el español.

2. ¿Cómo funciona la compresión de imagen y video?

La compresión de video y audio funciona de manera muy diferente. A diferencia del texto en el que puede tener una compresión sin pérdidas, y no se pierden datos, con las imágenes tenemos lo que se llama “Compresión con pérdida“, donde pierde algunos datos. Y cuanto más comprimes, más datos pierdes.

Esto es lo que lleva a esos archivos JPEG de aspecto horrible que la gente ha subido, compartido y capturado varias veces. Cada vez que la imagen se comprime, pierde algunos datos.

Aquí hay un ejemplo. Esta es una imagen que tomé que no se ha comprimido en absoluto.

Ejemplo imagen sin comprimir
Ejemplo imagen sin comprimir

Luego tomé esa imagen y la ejecuté varias veces en Photoshop, cada vez que la exporté como JPEG de baja calidad. Aquí está el resultado.

Ejemplo imagen comprimida
Ejemplo imagen comprimida

Se ve bastante mal, ¿verdad?

Bueno, este es solo el peor de los casos, exportando a 10% de calidad JPEG cada vez.

Entonces, ¿cómo ahorrar tanto espacio? Bueno, el algoritmo JPEG es una hazaña de ingeniería. La mayoría de las imágenes almacenan una lista de números, y cada número representa un solo píxel.

JPEG no hace nada de esto. En cambio, almacena imágenes usando algo llamado Transformada de coseno discreta, que es una colección de ondas sinusoidales sumadas a diferentes intensidades. Utiliza 64 ecuaciones diferentes, pero la mayoría de estas no se utilizan. Esto es lo que hace el control deslizante de calidad para JPEG en Photoshop y otras aplicaciones de imagen: elige cuántas ecuaciones usar. Las aplicaciones luego usan la codificación Huffman para reducir aún más el tamaño del archivo.

Esto le da a los JPEG una relación de compresión increíblemente alta, que puede reducir un archivo que sería de varios megabytes a un par de kilobytes, dependiendo de la calidad. Por supuesto, si lo usas demasiado, terminas con esto:

Imagen de bajísima calidad
Imagen de bajísima calidad

Esa imagen es horrible. Pero pequeñas cantidades de compresión JPEG pueden tener un impacto significativo en el tamaño del archivo, y esto hace que JPEG sea muy útil para la compresión de imágenes en sitios web. La mayoría de las imágenes que ves en línea están comprimidas para ahorrar tiempo de descarga, especialmente para usuarios móviles con conexiones de datos deficientes. De hecho, todas las imágenes de Adictec.com se han comprimido para acelerar la carga de la página, y probablemente nunca lo hayas notado.

2.1. Compresión de video

El video funciona un poco diferente de las imágenes. Uno pensaría que simplemente comprimirían cada cuadro de video usando JPEG, y ciertamente lo hacen, pero hay un mejor método para el video.

Usamos algo llamado “compresión interframe“, que calcula los cambios entre cada cuadro y solo los almacena. Entonces, por ejemplo, si tienes una toma relativamente fija que toma varios segundos en un video, se ahorra mucho espacio porque el algoritmo de compresión no necesita almacenar todas las cosas en la escena que no cambian. La compresión entre cuadros (Inter frame) es la razón principal por la que tenemos TV digital y video web. Sin él, los videos serían cientos de gigabytes, más que el tamaño promedio del disco duro en 2005 cuando se lanzó YouTube.

Además, dado que la compresión entre cuadros funciona mejor con video principalmente estacionario, esta es la razón por la cual el confeti arruina la calidad del video.

Nota: GIF no hace esto, por lo que los GIF animados a menudo son muy cortos y pequeños, pero aún tienen un tamaño de archivo bastante grande.[/epcl_box]

Otra cosa a tener en cuenta sobre el video es su tasa de bits: la cantidad de datos permitidos en cada segundo. Si la tasa de bits es de 200 kb/s, por ejemplo, el video se verá bastante mal. La calidad aumenta a medida que aumenta la tasa de bits, pero después de un par de megabytes por segundo, obtienes rendimientos decrecientes.

Cómo funciona la Compresión de video
Cómo funciona la Compresión de video

En general, los videos de YouTube se sitúan alrededor de 2-10Mb/s dependiendo de tu conexión, ya que probablemente no se notará nada más.

Esta demostración funciona mejor con el video real, por lo que si deseas verlo ti mismo, puedes descargar algunos videos de prueba de tasa de bits aquí.

2.2. Compresión de audio

La compresión de audio funciona de manera muy similar a la compresión de texto e imagen. Mientras JPEG elimina detalles de una imagen que no verás, la compresión de audio hace lo mismo con los sonidos. Es posible que no necesites escuchar el crujido de la guitarra en la cuerda si la guitarra real es mucho, mucho más fuerte.

MP3 también usa bitrate, que va desde el extremo inferior de 48 y 96 kbps (el extremo inferior), 128 y 240 kbps (bastante bueno), 320 kbps (audio de gama alta), y es probable que solo escuches la diferencia con auriculares excepcionalmente buenos ( y orejas).

También hay códecs de compresión sin pérdidas para audio, el principal es FLAC, que utiliza la codificación LZ77 para ofrecer audio completamente sin pérdidas. Algunas personas confían en la calidad de audio perfecta de FLAC, pero con la prevalencia de MP3, parece que la mayoría de las personas no pueden notar o no les importa la diferencia.

NECESITAMOS TU AYUDA. Los ingresos por publicidad están cayendo rápidamente a través de Internet, y los sitios administrados de forma independiente como ADICTEC son los más afectados. El modelo publicitario en su forma actual está llegando a su fin, y tenemos que encontrar otras formas de continuar operando este sitio. Si te gusta nuestro contenido y deseas ayudar, considera hacer una contribución ¡haciendo clic aquí por favor!.[/epcl_box]

¡Listo! ¡Y básicamente es esto! Sin complicaciones y de forma muy rápida. Sigue visitando nuestro blog y encontrarás más trucos que te harán todo más sencillo. No olvides COMPARTIR el artículo y darle Like a nuestra fanpage de Facebook y/o suscribirte al canal de YouTube.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.


Recibe los trucos más ocultos de tecnología 🤫

Aprende trucos como la técnica 'correo+1' para recibir correos en tu misma cuenta principal. ¡Únete ahora y accede a información exclusiva!

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.


Puede que también te interese