COMPRESIÓN
DE IMÁGENES
El principal inconveniente de la fotografía
digital es sin duda la cantidad de información que requiere y el
tamaño de los archivos que genera. La capacidad de trabajo y de
almacenamiento de los sistemas informáticos va en aumento, pero
también nos vamos habituando a disponer de más megapíxeles,
de ahí que se mantenga el uso y el interés por la evolución
de las técnicas de compresión.
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
consiste en sustituir la cadena de datos por otra más corta cuando
se guarda el archivo. Ciertos métodos son reversibles (lossless),
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
Diferenciamos 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 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, y la necesidad de incrustar en el archivo
comprimido el índice de claves. Los compresores de uso general
más populares utilizan métodos como este, 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 4 entradas y
sobre otra de 6 entradas
Entre los métodos adaptativos, el más simple
es RLE (run lengh encode). 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 6 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, sinó 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 ó 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 tabla de códigos: Cuando se localiza una
secuencia similar a otra anterior, se sustituye por una clave de dos valores:
cuántos pasos se retrocede, y cuántos datos se repiten.
Rápido y fiable, se utiliza en formatos universales como GIF ó
TIF, aunque no logra relaciones de compresión muy altas, normalmente
ahorra un tercio del archivo.
Comportamiento
del algoritmo LZ
# 3 2 significa retroceder 3 píxeles y repetir 2
# 12 7 significa retroceder 12 píxeles y repetir 7
Compresión con pérdidas
Dentro de esta categoría es universalmente conocido por su eficacia
el formato jpg, aunque cabe mencionar también el método Fractal, que analiza la imagen dividiéndola
en bloques y estableciendo regiones a mayor escala. 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 (Grupo de Expertos en Fotografía Reunidos), es una combinación
de varias técnicas que crea un archivo 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 ó LAB. Los bitmaps se pasan a
grises, y 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 jpg
supone
una disminución del 50% de los datos a anotar
3- La imagen se divide en bloques de 8x8 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, aunque con pocos conservaremos
los datos 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 5 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, es lo que
decidimos en una escala que según programas 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. Así 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 JPG sea un formato habitual
en Internet. Estos efectos son menores en imágenes grandes, de
varios megapíxeles, en las que las baldosas 8x8 son menos importantes
para el detalle y la codificación de la última fase es mucho
más efectiva, logrando buenas relaciones de compresión aunque
indiquemos niveles altos de calidad medio-altos.
Los efectos más típicos son la aparición
de los bloques de 8x8 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 reberveradas en las más
grandes.
A
B
C
A=
imagen original.
B= reberveraciones en los bordes por una excesiva compresión.
C= detalle de los bloques de 8x8 píxeles
La reberveració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 una mejor correspondencia formal,
que se busca hoy 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. Esta es la base de nuevas técnicas
como EZW, SPIHT, MrSID ó JPEG 2000, que quieren ser la alternativa
al actual JPG.
|