Páxina de recursos

ir a Versión en castellano >>

 

COMPRESIÓN DE IMAXES

O principal inconveniente da fotografía dixital é, sen dúbida, a cantidade de información que require e o tamaño dos arquivos que xera. A capacidade de traballo e de almacenamento dos sistemas informáticos vai en aumento, pero tamén nos imos afacendo a dispor de máis megapíxeles. Isto fai que se manteña o uso e o interese pola evolución das técnicas de compresión.

O tamaño dunha fotografía mentras se procesa cun programa ou se visualiza nun explorador é o que corresponde ao seu número de píxeles e profundidade de bits. A compresión, en realidade, consiste en sustituir a cadea de datos por outra máis curta cando se garda o arquivo.

Certos métodos son reversibles ("lossless" en inglés), porque permiten a reconstrucción exacta do orixinal. Pero con outros, a información orixinal só se recupera aproximadamente, xa que se descarta unha parte dos datos ("lossy"), a cambio de relacións de compresión moito maiores.

Compresión sen perdas
Distínguese entre sistemas adaptativos, non adaptativos e semiadaptativos, segundo teñan en conta ou non as características do arquivo a comprimir.
Os non adaptativos (código Huffman, CCITT) establecen a priori una táboa de códigos coas combinacións de bits que máis se repiten estatísticamente. A estas secuencias se asignan códigos curtos, e a outras menos probables claves máis longas. O problema que presentan é que un diccionario de claves único ten resultados moi diferentes en distintos orixinais.

Un código tipo Huffman pode aplicarse de xeito semiadaptativo, se se analisa primeiro a cadea de datos a comprimir e se crea unha táboa a medida. Acádase maior compresión, pero introduce dous inconvenientes: a perda de velocidade ao ter que ler o orixinal dúas veces, por unha banda, e por outra a necesidade de incrustar no arquivo comprimido o índice de claves.

Os compresores de uso xeral máis populares utilizan métodos como éste, por iso tardan máis en empaquetar os datos que en descomprimilos. O número de entradas da táboa pode ser configurable.


Exemplo de codificación dunha liña de píxeles sobre unha táboa de 4 entradas e sobre outra de 6 entradas

Entre os métodos adaptativos, o máis sinxelo é o RLE (run lengh encode). Consiste en sustituir series de valores repetidos por unha clave con indicador numérico.


O método RLE codifica series de píxeles repetidos
Esta secuencia de 12 valores anótase con 6 datos

Moitos outros métodos derivan deste, pero a súa eficacia depende do tipo de imaxe. Os dous exemplos seguintes teñn 25 valores, pero mentras que o primeiro queda en 10 datos, o segundo (un caso extremo) non reduce o seu tamaño, senón que o duplica. A anotación de píxeles por series é adecuada en imaxes con zonas amplas de cores uniformes, pero non noutras con cambios frecuentes de valor ou predominio de texturas:

O sistema adaptativo LZ (de Abraham Lempel e Jacob Ziv), do que deriva o LZW (Lempel-Ziv-Welch), é máis enxenioso e logra, nunha lectura única, codificar repeticións sen crear unha táboa de códigos. Cando se localiza una secuencia semellante a outra anterior, sustituese por unha clave de dous valores, que din cántos pasos se retrocede e cántos datos se repiten.
Rápido e fiable, emprégase en formatos universais como o GIF ou o TIFF. Aínda que non acada relacións de compresión moi altas, normalmente aforra un tercio do arquivo.


Comportamento do algoritmo LZ
# 3 2 significa retroceder 3 píxeles e repetir 2
# 12 7 significa retroceder 12 píxeles e repetir 7

Compresión con perdas
Dentro desta categoría é universalmente coñecido pola súa eficacia o formato JPEG, aínda que cabe mencionar tamén o método Fractal, que analisa a imaxe dividíndoa en bloques e definindo rexións a maior escala. Rastréxanse estas rexións de xeito que mediante escalado, rotación, reflexo ou combinación de transformacións poidan corresponder a un bloque. Anótanse correspondencias e testéanse, seleccionando as que permitan unha reconstrucción máis semellante dos datos.

A compresión baseada na xeometría fractal acada moi boas relacións de compresión e, en certo modo, vectoriza as características da imaxe, de xeito que se pode reconstruir ésta a diferente escala. O principal inconveniente é a lentitude do proceso, debido á grande cantidade de recursos que esixen os cálculos.
O sistema proposto polo JPEG (Grupo de Expertos en Fotografía Reunidos) é unha combinación de varias técnicas que crea un arquivo JPG cun nivel de compresión regulable capaz de reducir nalgúns casos o peso informático da imaxe a menos do 1%. O proceso estándar consta de cinco pasos:

1. Converter a imaxe a un modo de cor que defina a luminancia nunha canle, como YCC ou LAB. Os bitmaps pásanse a grises, mentras que nas escalas de grises se obvia este paso.

2. Dado que ópticamente somos capaces de ver un cambio sutil na luminosidade moito antes que na tonalidade cromática, iguálase o ton en cada grupo de catro píxeles, respeitando os valores individuais de luz.


En modo LAB, cada píxel ten un valor L de luz
e dous valores AB para definir a cor
Obsérvese como só este paso da compresión jpg supón
unha diminución do 50% dos datos a anotar

3. A imaxe divídese en bloques de 8 x 8 píxeles. Para cada subimaxe anótase o valor promedio, a amplitude da oscilación de valores e unha descrición frecuencial desta oscilación mediante unha función de tipo Fourier, chamada Transformada Discreta do Coseno (TDC), na que se combinan varios parámetros de onda. Cantos máis parámetros, mellor correspondencia haberá entre a función e a secuencia de valores; con poucos datos, conservaremos os básicos.


A oscilación sobre un valor medio (A) pode representarse por unha forma liñal (B),
e ésta pode reproducirse como unha suma de ondas.
A onda C descrebe a forma B moito peor que as 5 ondas do gráfico D que vemos sumadas en E

4. Os valores TDC cuantifícanse á baixa, dividíndoos por un factor enteiro. O número de coeficientes de onda e o factor a dividir determinan a profundidade da compresión, que é o que decidimos nunha escala que, segundo o programa, vai de 1 a 10, de 1 a 12 ou de 0 a 100, pero sempre xogando inversamente entre o nivel de compresión e a calidade do resultado. Tras esta cuantificación, abundan as fraccións decimais, que se redondean ao enteiro máis próximo. Deste xeito, resulta unha cadea de datos con moitas probabilidades de reiteración.

5. Ao resultado aplícaselle a codificación estadística de Huffman, compactando as cadeas máis repetidas en códigos breves.

A compresión con perda deixa rastro
Os efectos negativos dunha excesiva compresión poden ser un empobrecemento do ton e a nitidez global, que notaríamos máis ben nunha impresión, e a aparición de artefactos a nivel local visibles sobre todo en pantalla, aínda que JPG sexa un formato habitual en Internet. Estas pegadas son menores en imaxes grandes, de varios megapíxeles, nas que as baldosas de 8 x 8 píxeles son menos importantes para o detalle e a codificación da derradeira fase é moito máis efectiva. Acádanse así boas relacións de compresión, aínda que indiquemos niveis de calidade media-alta.

Os efectos máis típicos son a aparición dos bloques de 8 x 8 píxeles, o ruido cromático nas zonas escuras e a alteración das siluetas, que se ven borrosas en imaxes de pouca resolución e reverberadas nas máis grandes.

A

B

C
A= imaxe orixinal. B= reberveracións nos bordos por unha excesiva compresión.
C= detalle dos bloques de 8x8 píxeles

A reverberación é producida polas baldosas que coinciden cun bordo marcado. A súa reconstrucción é moito más irregular que as das súas veciñas, que coinciden nunha zona de menor oscilación e resultan moito máis homoxéneas. Así, prodúcense pinceladas de falso contraste a varios píxeles de distancia da verdadeira silueta.

A solución pasa por acadar unha mellor correspondencia formal (que hoxe se busca nas formas Wavelet, un tipo de patróns de onda deseñables que poden ser sinusoidais ou non) e establecerse cunha duración finita. Combinando Wavelets (TDW), poden describirse formas complexas con moitos menos coeficientes. Tal é a base de novas técnicas, como EZW, SPIHT, MrSID ou JPEG 2000, que queren ser a alternativa ao actual JPG.