Cómo funciona la compresión de imágenes: conceptos básicos

Por alguna razón, puede colocar 2 millones de píxeles en una imagen sin utilizar 1,97 megabytes de espacio. Encontré un lindo fondo de pantalla de 1080p (que tiene aproximadamente 2 millones de píxeles) y lo descargué. Al revisar las propiedades, noté algo extraño: solo ocupaba 230 KB de espacio en mi disco duro. ¿Porqué es eso? Para alguien que no entiende muy bien la compresión de imágenes, parece magia. Pero una vez que conozca el tema, comprenderá cómo algunas imágenes son más grandes que otras a pesar de la cantidad de píxeles que ocupan en su pantalla. El tiempo es corto, así que echemos un vistazo rápido a los principios básicos detrás de la compresión de imágenes.

Métodos, enfoques, algoritmos en abundancia.

Es ingenuo pensar que solo hay una forma de comprimir una imagen. Existen diferentes métodos, cada uno con un enfoque único para un problema común, y cada enfoque se utiliza en diferentes algoritmos para llegar a una conclusión similar. Cada algoritmo está representado por un formato de archivo (PNG, JPG, GIF, etc.). Por ahora, vamos a hablar sobre los métodos que se utilizan generalmente para comprimir imágenes, lo que explicará por qué algunos de ellos ocupan mucho menos espacio.

Compresión sin perdidas

Cuando piensa en la palabra “sin pérdidas” en el contexto de la compresión de imágenes, probablemente piense en un método que hace todo lo posible por preservar la calidad mientras mantiene un tamaño de imagen relativamente pequeño. Eso es muy cercano a la verdad. Como método , la compresión sin pérdida minimiza la distorsión tanto como sea posible, preservando la claridad de la imagen. Para ello, crea un índice de todos los píxeles y agrupa los píxeles del mismo color. Es algo así como cómo funciona la compresión de archivos, excepto que estamos tratando con unidades de datos más pequeñas.

DEFLATE es uno de los algoritmos más comunes para este tipo de trabajo. Se basa en otros dos algoritmos (Huffman y LZ77, si eres un ratón de biblioteca) y tiene una forma muy probada de agrupar los datos que se encuentran dentro de las imágenes. En lugar de simplemente recorrer la longitud de los datos y almacenar varias instancias de un píxel con el mismo color en una sola unidad de datos (conocida como codificación de longitud de ejecución), captura las cadenas duplicadas que se encuentran en todo el código y establece un “puntero” por cada duplicado encontrado. Dondequiera que se utilice con frecuencia una determinada cadena de datos (píxeles), se reemplazan todos esos píxeles con un símbolo ponderado que comprime aún más todo.

Observe cómo con la codificación de longitud de ejecución y DEFLATE, ninguno de los píxeles se consume o se fuerza a cambiar de color. El uso de este método simplemente da como resultado una imagen que es idéntica al original sin procesar. ¡La única diferencia entre los dos radica en cuánto espacio ocupa realmente su disco duro!

Compresión con pérdida

Como su nombre lo indica, la compresión con pérdida hace que una imagen pierda parte de su contenido. Cuando se lleva demasiado lejos, puede hacer que la imagen sea irreconocible. Pero la  pérdida no implica que esté eliminando píxeles. En realidad, hay dos algoritmos que se usan comúnmente para comprimir imágenes de esta manera: codificación de transformación y submuestreo de croma . El primero es más común en imágenes y el segundo en video.

Con la codificación de transformación, los colores de una imagen se promedian utilizando una fórmula matemática especial llamada transformada de coseno discreta. La imagen sufre pérdida de color y puede introducir artefactos (pixelación extraña en puntos aleatorios de la imagen) cuando se usa en exceso. Este algoritmo en particular compensa su torpeza con una gran ventaja: puede dictar  cuánta calidad desea mantener con la imagen. Con la compresión sin pérdida, lo más cerca que puede llegar a manipular la calidad de manera integral es estableciendo la cantidad de colores que debe tener cada imagen.

El submuestreo de croma adopta otro enfoque. En lugar de promediar pequeños bloques de color, que también pueden afectar el brillo de una imagen, intenta cuidadosamente mantener el mismo brillo en todas las áreas. Esto engaña a sus ojos para que no noten fácilmente ningún descenso en la calidad. En realidad, es excelente para la compresión de animaciones, por lo que se usa más en transmisiones de video. Eso no quiere decir que las imágenes no utilicen este algoritmo.

¡Pero espera hay mas! Google también probó un nuevo algoritmo con pérdidas, conocido como WebP. En lugar de promediar la información de color, predice el color de un píxel observando los fragmentos que lo rodean. Los datos que realmente se escriben en la imagen comprimida resultante son la diferencia entre el color predicho y el color real. Al final, muchas de las predicciones serán precisas, lo que resultará en un cero. Y en lugar de imprimir un montón de ceros, simplemente los comprime todos en un símbolo que los representa. Se mejora la precisión de la imagen y la compresión reduce el tamaño de la imagen en un promedio del 25 por ciento en comparación con otros algoritmos con pérdida, según Google.

¡Es hora de preguntas y debates!

Si es nuevo en el mundo de los archivos de imagen, probablemente encontrará confusa al menos un poco de esta información. Si tiene alguna pregunta, publíquela en los comentarios y haremos todo lo posible para responderla. De lo contrario, ¡puedes discutir esto!

¡Si te ha gustado vota con 5 Estrellas!
(Votos: 0 Promedio: 0)

Escribe Aquí Tu Comentario