Tutoriales

Métodos de compresión: qué son y cómo funciona

Existen diversos métodos de compresión, según para qué tipo de datos o información se trate. Aquí te mostramos los más importantes, para que los conozcas más a fondo. Desde la compresión estadística, por diccionario, la de imagen, vídeo y audio, con o sin pérdida, pasando por métodos como el wavelet, etc.

Más sobre la compresión de datos

Métodos estadísticos de compresión

métodos estadísticos

Los métodos estadísticos se basan en la modelación probabilística de los datos para reducir redundancias. Estos métodos analizan la frecuencia de ocurrencia de símbolos o patrones, asignando códigos más cortos a los elementos más frecuentes.

Las ventajas de este método lo hacen ideal para  datos con alta redundancia. Sin embargo, no es eficiente para flujos de datos pequeños debido a la complejidad.

Dentro de estos métodos de compresión existen varios algoritmos, como por ejemplo:

  • Compresión de Huffman: crea un árbol binario basado en la frecuencia de los símbolos en los datos. A cada símbolo se le asigna un código único, sin prefijos comunes, que asegura una representación óptima según la distribución estadística. Por ejemplo, para comprimir un texto en el que aparecen las letras A, B, C, D con frecuencias relativas de 45%, 30%, 15% y 10%, es decir, las veces que se repiten, se generarían los códigos binarios: A=0, B=10, C=110, D=111.
  • Codificación aritmética: representa un flujo de datos como un intervalo único entre 0 y 1, dividiendo este espacio de manera proporcional a las probabilidades de los símbolos. Para tenerlo más claro, un ejemplo sería un flujo de datos con probabilidades de A=0.5, B=0.25, C=0.25. El intervalo inicial se subdivide en [0, 0.5] para A, [0.5, 0.75] para B, y [0.75, 1] para C.

También te podría interesar conocer los mejores medios de almacenamiento de datos externos

Métodos de diccionario

Los métodos de compresión por diccionario reemplazan cadenas repetidas de datos con referencias a entradas en una tabla o diccionario. Este enfoque es útil cuando los datos contienen patrones repetitivos. Este método es sencillo, pero necesita de diccionarios completos para abarcar todo los datos que se pretenden comprimir, de lo contrario no es efectivo.

Como se puede apreciar en los ejemplos anteriores de la imagen, simplemente se usa un diccionario que contiene todos los datos posibles y una referencia/código binario.

Métodos para imágenes

compresión imagen

La compresión de imágenes se centra en eliminar redundancias espaciales, espectrales o visualmente irrelevantes. Se divide en métodos con pérdida (lossy) y sin pérdida (lossless). Por ejemplo, en la imagen anterior podemos ver cómo se comprime una imagen de un corazón compuesto por 7×7 píxeles de cuadrícula. Como ves, la idea en este método RLE sería simplemente marcar la cantidad de píxeles en un determinado color por cada fila, en este caso White (blanco) y Black (negro). Por ejemplo, en la primera tenemos W1+B1+W3+B1+W1, es decir, un píxel blanco, otro negro, tres blancos, uno negro y uno blanco.

No obstante, no todo es tan fácil, existen variantes más complejas para distintos formatos y en imágenes mucho más complejas y con muchos más colores. Por ejemplo, en el formato JPEG se utiliza una transformación discreta del coseno (DCT) para convertir la imagen del dominio espacial al dominio de frecuencia, donde los coeficientes de alta frecuencia se eliminan, ya que tienen un impacto mínimo en la percepción visual. El proceso resumido sería:

  1. Se divide la imagen en porciones de 8×8 px.
  2. Se aplica el DCT, un procedimiento matemático complejo que trata de convertir intensidades de píxeles en frecuencias.
  3. Se reducen los coeficientes menos significativos.
  4. Finalmente se usa un código Huffman para simplificarlos o un RLE (Run-Length Encoding) como el que he explicado antes con el corazón.

Otro ejemplo de compresión mediante DEFLATE lo tenemos en el formato PNG, que emplea compresión sin pérdida y técnicas de filtrado predictivo…

Compresión basada en Wavelets

Los métodos basados en wavelets descomponen los datos en niveles jerárquicos de frecuencias, utilizando funciones base llamadas «wavelets», de ahí su nombre. Estos métodos son populares en imágenes y video debido a su capacidad para preservar detalles importantes mientras eliminan información irrelevante. Por ejemplo, en JPEG 2000 se usa DWT en lugar de DCT, es decir, Discret Wavelet Transform, evitando artefactos (artifacts) que pueden ser comunes en la JPEG con DCT.

Los wavelets son funciones que permiten analizar una señal a diferentes escalas. Para ello descomponen los datos en aproximaciones (baja frecuencia) y detalles (alta frecuencia). Por ejemplo, imagina una imagen de un cielo azul homogéneo con una nube. Todo el cielo se puede entender como aproximaciones o baja frecuencia y la nube, un cambio rápido en los píxeles con bordes y texturas como detalles de alta frecuencia.

métodos de compresión

Dentro del método DWT podemos encontrar el 1D o el 2D, es decir, el primero descompone una señal unidireccional como una línea de píxeles, y el 2D para imágenes aplica primero filas y luego columnas, lo que divide en cuatro sub-bandas en vez de dos: aproximación (LL), detalles horizontales (HL), detalles verticales (LH), y detalles diagonales (HH).

Gracias a esta técnica se puede obtener una alta relación de compresión, aunque también tiene sus inconvenientes, como su mayor complejidad frente a DCT.

Compresión de video

compresión video

La compresión de video combina técnicas espaciales y temporales, explotando redundancias dentro de los fotogramas (intraframe) y entre fotogramas consecutivos (interframe). Como podemos ver en la imagen de ejemplo, se puede partir de un vídeo con una serie de fotogramas o frames que son iguales y no varían, y solo tomar el primero de ellos y lo que cambia en el resto que lo siguen. De ese modo tenemos una compresión.

Por ejemplo, imagina un vídeo en el que aparezca un paisaje y en él una persona caminando. El fondo o paisaje no cambia, es el mismo, por lo que se puede guardar ese fondo y la distinta posición de la persona en los frames siguientes. Así no hay que almacenar también el fondo de todos esos frames. Dicho de otro modo, simplemente quitar lo que es redundante y no cambia…

Además, también hay algoritmos mucho más avanzados que son capaces de predecir movimientos, etc., o técnicas como el Keyframes (almacena fotogramas completos en intervalos), y el Motion Compensation (codifica solo las diferencias entre fotogramas).

Dentro de este tipo de compresiones tenemos muy diversas formas o codecs diferentes, es decir, algoritmos que tratan los vídeos de una u otra forma para comprimirlo. Por ejemplo:

  • H.264/AVC: se basa en transformadas DCT, cuantización adaptativa y predicción de movimiento para conseguir compresiones bastante grandes. Por ejemplo, se puede hacer que un vídeo de 1 GB se reduzca a 100 MB manteniendo una calidad aceptable.
  • HEVC (H.265): es una mejora del anterior, y usa bloques más grandes de hasta 64×64 px, además de tener mejor predicción de movimiento.

Compresión de audio

compresión de audio

La compresión de audio aprovecha características psicoacústicas para descartar sonidos inaudibles que se pueden eliminar, simplificando así el audio final y reduciendo su tamaño. Esto consigue un efecto similar al oído humano, pero sin ocupar tanto espacio.

Por ejemplo, como bien sabes, el oído humano solo escucha desde los 20 Hz hasta los 20 Khz o 20.000 Hz, por lo que todo lo que esté por debajo de eso (infrasonidos) y por encima de eso (ultrasonidos), no son perceptibles por el oído humano y se pueden eliminar sin que se note una pérdida de calidad.

Por supuesto, como ocurre con el vídeo, dentro de la compresión de audio existen varios codecs o algoritmos para la compresión:

  • MP3: utiliza transformadas como DCT y cuantización perceptual. Divide el espectro de frecuencia en bandas críticas y elimina datos irrelevantes para el oído humano.
  • AAC: el formato Advanced Audio Coding (AAC) es más eficiente que MP3, soportando tasas de bits más bajas y ofreciendo mejor calidad para la misma compresión.
  • FLAC: formato sin pérdida que utiliza técnicas predictivas para codificar diferencias entre muestras.

No olvides dejar tus comentarios o dudas…

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 info@profesionalreview.com
Botón volver arriba