Contenido principal
Principios de ciencias de la computación avanzados (AP Computer Science Principles)
Curso: Principios de ciencias de la computación avanzados (AP Computer Science Principles) > Unidad 1
Lección 7: Compresión de datos con pérdidaCompresión con pérdida
Los algoritmo de compresión con pérdida son técnicas que reducen el tamaño de archivo al descartar la información menos importante.
A nadie le gusta perder información, pero algunos tipos de archivos son tan grandes que no hay suficiente espacio para guardar todos los datos originales; y además no necesitamos todos esos datos en primer lugar. Esto es a menudo el caso con fotos, videos y grabaciones de audio: archivos que intentan capturar la hermosa complejidad del mundo en el que vivimos.
Las computadoras pueden capturar una cantidad increíble de detalle en una foto, pero ¿cuánto de ese detalle pueden realmente percibir los humanos? Resulta que hay muchos detalles que podemos eliminar. Los algoritmos de compresión con pérdida tratan de buscar maneras inteligentes de eliminar detalles sin que los humanos lo noten (demasiado).
Por ejemplo, aquí hay una foto de un gato en un sombrero:
Aquí está esa misma foto, pero comprimida a la mitad del tamaño:
¿Puedes notar la diferencia? Con un vistazo rápido no puedo, e incluso si pudiera con más esfuerzo, todavía vale la pena ahorrar la mitad del espacio de disco.
Exploremos algunas de las maneras inteligentes con que los algoritmos de compresión con pérdida eliminan detalles para reducir el tamaño del archivo.
Imágenes: mantener el brillo, promediar el color
El ojo humano percibe mejor diferencias en brillo que en color. Un algoritmo de compresión puede aprovechar ese hecho manteniendo el brillo al tiempo que reduce la cantidad de información de color; un proceso conocido como submuestreo cromático.
Intentemos con la foto del gato en el sombrero. El primer paso es separar la información de brillo de la cromática (color).
Esta es la versión de la foto con brillo solamente:
Está es la versión solo cromática:
Esta foto es interesante porque el gato y la silla no tienen mucho color; el azul del sombrero es lo que destaca en la versión cromática (¿quizá todos deberíamos tener gatos blancos y negros, para ahorrar espacio en disco? hmm...)
Hagamos un acercarniento a un bloque cromático de 8x2 del ojo izquierdo:
Cada uno de esos píxeles tiene valores cromáticos ligeramente diferentes, así que hay 16 valores en total. Podemos promediar cada bloque de 2x2 y ajustar su color al promedio, y así solo hay 4 valores:
El resultado se ve muy similar al original, pero tiene una cuarta parte de la información original de color. Si aplicamos esto a toda la imagen, podemos ahorrar mucho espacio sin afectar demasiado su percepción.
El submuestreo cromático es un proceso utilizado en muchos algoritmos de compresión para imágenes, incluyendo los populares formatos de archivo JPEG y MPEG.
Esos algoritmos también usan un proceso llamado transformación discreta de coseno (DCT) para simplificar los detalles en la capa de brillo. Si quieres saber más, aquí hay un bonito recorrido.
Audio: descartar los sonidos inaudibles
El oído humano tiene limitaciones a lo que puede oír. Los algoritmos de compresión de audio pueden analizar un archivo de audio y descartar los sonidos que están fuera de nuestra capacidad auditiva, un proceso conocido como codificación de audio perceptual.
Una limitación interesante de nuestros oídos se conoce como máscara temporal. Es cuando un sonido repentino puede enmascarar (ocultar) otros sonidos durante un período después de que ocurre, ¡e incluso un poco antes!
Por ejemplo, imagina una canción con un fuerte redoble de tambor. La máscara de redoble oculta sonidos durante unos 20 milisegundos antes de que ocurra, y hasta 200 milisegundos después. Esta imagen ilustra el efecto de máscara:
La computadora ve esos sonidos ocultos en el archivo de audio grabado, pero nuestros oídos no pueden escucharlos, así que los algoritmos de compresión de audio pueden descartar de forma segura esa información o representarla con menos bits.
Los algoritmos de compresión también pueden utilizar otras limitaciones de nuestro proceso auditivo natural, como el límite de alta frecuencia y máscara simultánea. Si quieres aprender más, puedes investigar el fascinante campo de psico-acústica.
Calidad de compresión
Cuando utilizamos algoritmos de compresión sin pérdida, siempre podemos reconstruir 100% de los datos originales. Con algoritmos de compresión con pérdida, perdemos un porcentaje de los datos originales; puede ser 5%, o 10%, o tal vez el 70%. ¿Cuánto perdemos? Podemos decidir eso según en nuestro caso de uso de los datos.
Considera la foto anterior del gato en el sombrero. Si el plan es usar esa foto en una presentación sobre modas de gatos y proyectarla en una pantalla grande, probablemente queremos mantener el máximo detalle posible. En ese caso, podemos usar un algoritmo de compresión sin pérdida (como PNG), o podemos usar un algoritmo de compresión con pérdida (como JPEG) y especificar calidad alta (como 100%). Las aplicaciones de edición de fotos a menudo dan esas opciones.
A 100% de calidad, la foto de 400x300 ocupa 169 KB:
¿Qué pasa si queremos usar esa foto en un sitio web, y nuestros usuarios objetivo están en otro país, con conexiones de ancho de banda bajo? Cuanto más pequeño sea el archivo, más rápido se descarga. Queremos que vean la foto, pero para este caso de uso la calidad alta no es tan importante como la velocidad de descarga. Definitivamente queremos usar un algoritmo de compresión con pérdida, y podemos especificar una calidad menor al exportar. El algoritmo puede modificar sus parámetros internos para simplificar aún más detalles.
A 60% de calidad, la foto ocupa 48 KB:
Esto todavía se ve bastante bien, definitivamente utilizable para un sitio web con ancho de banda bajo. ¿Qué tan abajo podemos llegar? Aquí está la foto a un 1% de calidad:
Definitivamente no es perfecta, el verde de los ojos parece estar fundido con el pelaje, y hay artefactos donde el sombrero toca la silla. Pero también es de solo 12 KB, menos de una décima parte del tamaño original. Es impresionante la información que podemos perder, y todavía comunicar tanto detalle.
También podemos especificar la calidad en algoritmos de compresión con pérdida que transforman archivos de audio y video. Probablemente hayas visto en el web videos de baja calidad, muy comprimidos; los videos son los que más se comprimen, pues de por sí son muy grandes.
Siempre que utilizamos compresión con pérdida hay un balance entre calidad y tamaño, y nos corresponde encontrar la configuración que mejor funcione para nuestro caso de uso.
🙋🏽🙋🏻♀️🙋🏿♂️¿Tienes alguna pregunta sobre este tópico? Nos encantaría contestarte; ¡simplemente pregunta en el area de preguntas abajo!
¿Quieres unirte a la conversación?
- Nota: Al comprimir datos con perdidas podemos encontrar 2 compresiones, las de imágenes; que utilizan el sub-muestreo cromático que reduce los colores pero mantiene el brillo; y con los audios, en estos casos el ordenador elimina la mascara de los sonidos para ahorrar espacio.(4 votos)
- cualge y mpgees la diferencia enre jp(1 voto)