El tamaño de una fotografía mientras se procesa con un programa o se muestra en un explorador es el que corresponde a su número de píxeles y profundidad de bits. La compresión, en realidad, consiste en sustituir la cadena de datos por otra más corta cuando se guarda el archivo.
Ciertos métodos son reversibles ("lossless", en inglés), porque permiten la reconstrucción exacta del original. Pero con otros, la información original sólo se recupera aproximadamente, ya que se descarta una parte de los datos ("lossy"), a cambio de relaciones de compresión mucho mayores.
Compresión sin pérdidas
Se distingue entre sistemas adaptativos, no adaptativos y semiadaptativos, según tengan en cuenta o no las características del archivo a comprimir.
Los no adaptativos (código Huffman, CCITT) establecen a priori una tabla de códigos con las combinaciones de bits que más se repiten estadísticamente. A estas secuencias se asignan códigos cortos, y a otras menos probables claves más largas. El problema que presentan es que un diccionario de claves único tiene resultados muy diferentes en distintos originales.
Un código de tipo Huffman puede aplicarse de modo semiadaptativo, si se analiza primero la cadena de datos a comprimir y se crea una tabla a medida. Se logra mayor compresión, pero introduce dos inconvenientes: la pérdida de velocidad al tener que leer el original dos veces, por un lado, y la necesidad de incrustar en el archivo comprimido el índice de claves, por el otro.
Los compresores de uso general más populares utilizan métodos como éste, por eso tardan más en empaquetar los datos que en descomprimirlos. El número de entradas de la tabla puede ser configurable.
Ejemplo de codificación de una línea de píxeles sobre una tabla de cuatro entradas y sobre otra de seis.
Entre los métodos adaptativos, el más simple es el RLE (Run Lengh Encode), que consiste en sustituir series de valores repetidos por una clave con indicador numérico.
El método RLE codifica series de píxeles repetidos.
Esta secuencia de 12 valores se anota con seis datos
Muchos otros métodos derivan de éste, pero su eficacia depende del tipo de imagen. Los dos ejemplos siguientes tienen 25 valores, pero mientras que el primero se queda en 10 datos, el segundo (un caso extremo) no reduce su tamaño, sino que lo duplica. La anotación de píxeles por series es adecuada en imágenes con zonas amplias de colores uniformes, pero no en otras con cambios frecuentes de valor o predominio de texturas:
El sistema adaptativo LZ (de Abraham Lempel y Jacob Ziv), del que deriva el LZW (Lempel-Ziv-Welch), es más ingenioso y consigue, en una lectura única, codificar repeticiones sin crear una tabla de códigos. Cuando se localiza una secuencia similar a otra anterior, se sustituye por una clave de dos valores: los correspondientes a cuántos pasos se retrocede y cuántos datos se repiten.
Rápido y fiable, se utiliza en formatos universales como el GIF o el TIFF. Aunque no logra relaciones de compresión muy altas, normalmente ahorra un tercio del archivo.
Comportamiento del algoritmo LZ:
# 3 2 significa retroceder tres píxeles y repetir dos;
# 12 7 significa retroceder 12 píxeles y repetir siete.
Compresión con pérdidas
Dentro de esta categoría es universalmente conocido por su eficacia el formato JPEG, aunque cabe mencionar también el método Fractal, que analiza la imagen dividiéndola en bloques y estableciendo regiones a mayor escala.
En este caso, se rastrean estas regiones de manera que mediante escalado, rotación, reflejo o combinación de transformaciones puedan corresponder a un bloque. Se anotan correspondencias y se testean, seleccionando las que permitan una reconstrucción más parecida de los datos.
La compresión basada en la geometría fractal consigue muy buenas ratios de compresión y, en cierta manera, vectoriza las características de la imagen, de manera que se puede reconstruir la imagen a diferente escala. El principal inconveniente es la lentitud del proceso, debido a la gran cantidad de recursos que exigen los cálculos.
El sistema propuesto por el JPEG (siglas cuyo significado traducido al castellano es el de Grupo de Expertos en Fotografía Reunidos) es una combinación de varias técnicas que crea un archivo JPEG (o JPG) con un nivel de compresión regulable capaz de reducir en algunos casos el peso informático de la imagen a menos del 1%. El proceso estándar consta de cinco pasos:
1. Convertir la imagen a un modo de color que defina la luminancia en un canal, como YCC o LAB. Los bitmaps se pasan a grises, mientras que en las escalas de grises se obvia este paso.
2. Dado que ópticamente somos capaces de ver un cambio sutil en la luminosidad mucho antes que en el tono cromático, se iguala el tono en cada grupo de cuatro píxeles, respetando los valores individuales de luz.
En modo LAB, cada píxel tiene un valor L de luz
y dos valores AB para definir el color.
Obsérvese como sólo este paso de la compresión JPEG supone
una disminución del 50% de los datos a anotar.
3. La imagen se divide en bloques de 8 x 8 píxeles. Para cada subimagen se anota el valor promedio, la amplitud de la oscilación de valores y una descripción frecuencial de esta oscilación mediante una función de tipo Fourier, llamada Transformada Discreta del Coseno (TDC), en la que se combinan varios parámetros de onda. Cuantos más parámetros, mejor correspondencia habrá entre la función y la secuencia de valores; con pocos datos, conservaremos los básicos.
La oscilación sobre un valor medio
(A) puede representarse por una forma lineal
(B) y ésta puede reproducirse como una suma de ondas.
La onda
C describe la forma
B mucho peor que las cinco ondas del gráfico
D que vemos sumadas en
E.
4. Los valores TDC se cuantifican a la baja, dividiéndolos por un factor entero. El número de coeficientes de onda y el factor a dividir determinan la profundidad de la compresión, que es lo que decidimos en una escala que, según el programa, va de 1 a 10, de 1 a 12 o de 0 a 100, pero siempre jugando inversamente entre el nivel de compresión y la calidad del resultado.
Tras esta cuantificación, abundan las fracciones decimales, que se redondean al entero más próximo. De este modo, resulta una cadena de datos con muchas probabilidades de reiteración.
5. Al resultado se le aplica la codificación estadística de Huffman, compactando las cadenas más repetidas en códigos breves.
La compresión con pérdida deja huellas
Los efectos negativos de una excesiva compresión pueden ser un empobrecimiento del tono y la nitidez global, que notaríamos más bien en una impresión, y la aparición de artefactos a nivel local visibles sobre todo en pantalla, aunque JPEG sea un formato habitual en Internet.
Estos efectos son menores en imágenes grandes, de varios megapíxeles, en las que las baldosas de 8 x 8 píxeles son menos importantes para el detalle y la codificación de la última fase es mucho más efectiva. Se consiguen así buenas relaciones de compresión, aunque indiquemos niveles de calidad media-alta.
Los efectos más típicos son la aparición de los bloques de 8 x 8 píxeles, el ruido cromático en las zonas oscuras y la alteración de las siluetas, que se ven borrosas en imágenes de poca resolución y reverberadas en las más grandes.
A.
B.
C.
A. Imagen original.
B. Reverberaciones en los bordes por una excesiva compresión.
C. Detalle de los bloques de 8 x 8 píxeles.
La reverberación la producen las baldosas que coinciden con un borde marcado. Su reconstrucción es mucho más irregular que las de sus vecinas, que coinciden en una zona de menor oscilación y resultan mucho más homogéneas. Así, se producen pinceladas de falso contraste a varios píxeles de distancia de la verdadera silueta.
La solución pasa por lograr una mejor correspondencia formal (que hoy se busca en las formas Wavelet, un tipo de patrones de onda diseñables que pueden ser sinusoidales o no) y establecerse con una duración finita. Combinando Wavelets (TDW), pueden describirse formas complejas con muchos menos coeficientes. Ésta es la base de nuevas técnicas, como EZW, SPIHT, MrSID o JPEG 2000, que quieren ser la alternativa al actual JPEG.
Paulo Porta
Paulo Porta es profesor de instituto. Imparte plástica y fotografía digital y es autor del manual 'Fotografía e Imaxe Dixital'.
Los artículos de la serie "Mapa de bits" se publican, normalmente, los días 15 y 30 de cada mes.