Compresion graficos

14

description

Recurso del curso virtual de computación Grafica

Transcript of Compresion graficos

Page 1: Compresion graficos
Page 2: Compresion graficos
Page 3: Compresion graficos

Podríamos diferenciar tres tipos de técnicas de compresión :

Reducción de la precisión de los valores individuales Codificación de los valores individuales reduciendo el número de bits

Transformación de los datos en otra representación que sea más hábil de ser reducida

Muchos formatos combinan dos o las tres formas de comprimir.

Page 4: Compresion graficos

REDUCCIÓN DE BITS

Comentamos algunos esquemas de codificación en esta línea:

Códigos de desplazamiento (shift codes) Si sólo un pequeño subconjunto consecutivo de valores aparece la

mayor parte de las veces, entonces se puede elegir un código con longitud (bits) suficiente sólo para representar este subconjunto, de modo que los pocos valores que no estén en él se indican con un código especial de overflow que señala los valores representados con más longitud. Al indicar la mayoría de los valores con un número reducido de bits, se pueden conseguir reducciones significativas de tamaño, entre 2:1 y 3:1 usualmente, aunque siempre dependiendo del gráfico.

Para ello se desprecian algunos de los bits, dependiendo del rango de valores.

La NASA, por ejemplo, usa códigos de desplazamiento para transmitir la imagen de satélites.

Page 5: Compresion graficos

Códigos de Huffman

Los códigos de Huffman (su inventor) asignan un código de longitud variable a cada posible dato, de modo que los valores que ocurren más a menudo tienen códigos de menor longitud y viceversa. Dada la probabilidad de que un valor dado ocurra, el algoritmo de Huffman puede crear automáticamente un asignación de códigos.

Page 6: Compresion graficos

Códigos de Huffman

El concepto es sencillo de expresar gráficamente: ordenados los valores de

mayor a menor probabilidad, se le asignarán códigos binarios: a los

símbolos más frecuentes (ej. 35 %, 27, ...) se le asignan pocos bits (11, 10) y a los menos frecuentes (ej. Del 11% o 10%) mas bits (0001, 0000)

Page 7: Compresion graficos

Codificación aritmética

Tiene el mismo fundamento que el de Huffman (asociar un código en función de la probabilidad de cada valor), pero en este caso se funciona asociando códigos a grupos de valores (por ejemplo, si el valor 7 y el valor 23 tienen mucha probabilidad, este esquema asociará probablemente un código a la subserie 7 23, otro a la 7 7, otro a la 23 23... o incluso a subseries más largas, dependiendo de la probabilidad.

Es algo más complejo de implementar que el código de Huffman, pero produce entre un 5 y un 10% más compresión.

Page 8: Compresion graficos

TRANSFORMACIÓN

Es una técnica que permite evitar o minimizar la pérdida. Básicamente, hay que buscar patrones que se repitan en los datos. Si no existen (datos totalmente aleatorios), no puede existir compresión sin pérdida. De hecho, aplicar un esquema de compresión a datos totalmente aleatorios puede con facilidad incrementar el tamaño de los ficheros.

Page 9: Compresion graficos

Run-Length Encoding

La codificación RLE (Run-Length Encoding) busca la repetición de valores idénticos en una lista, y la reemplaza por un único valor precedido por el número de veces que se repite. Por ejemplo, la secuencia:

5 5 14 14 14 14 14 8 8 8 8 7 5 5 5 3 2 2 (18 bytes)

se podría codificar usando la siguiente:

2 5 5 14 4 8 1 7 3 5 1 3 2 2 (14 bytes)

Algunos formatos que usan este esquema son: Postscript, Tiff, PCX, Targa ....

Page 10: Compresion graficos

Codificación LZW

El algoritmo LZW considera la posibilidad de que una secuencia de valores (no necesariamente iguales) se repita, aún no consecutivamente, en la secuencia de datos. Por ejemplo, la secuencia

4 12 10 2 8 4 12 10 9 8 4 12 10 9 8 4

se podría representar como

a 2 8 a b a b 4 (siendo a = 4 12 10, b = 9 8)

Page 11: Compresion graficos

Diferenciación (differencing)

Este esquema de compresión se basa en el hecho de que en ficheros gráficos realistas es común que muchos datos sucesivos tengan diferencias pequeñas (por ejemplo, verdes de gamas muy similares con pequeñas variaciones de brillo). En ese caso, en vez de representar cada dato por completo, partiendo de uno inicial los demás se pueden expresar como diferencias con respecto a él, o al inmediato anterior, utilizando muchos menos bits para ello. Por ejemplo, la serie:

35 37 38 33 36 35 35

se puede representar con la otra:

35 -2 -1 5 -3 1 0

Page 12: Compresion graficos

Diferenciación (differencing)

La compresión de este tipo de algoritmos depende mucho de los datos aunque todos los gráficos habituales, tanto fotorealistascomo no, suelen tener bastantes series reconocibles de valores cercanos. Reducciones de 1,5:1 a 3:1 pueden alcanzarse con facilidad.

Existen algoritmos de diferenciación de 2 dimensiones que se basan en comparaciones de cada línea horizontal del gráfico con la siguiente, buscando similitudes que es habitual que existan. Es el caso de los formatos JPEG o MPEG sin pérdida.

Page 13: Compresion graficos

Fractales

La compresión fractal se basa en encontrar grupos de datos determinados que con transformaciones fractales sucesivas se conviertan en una serie de datos similar a la original; con esto, simplemente almacenando el grupo y las transformaciones se representa de forma codificada a una serie completa (que puede ser larga).

Esta compresión suele requerir bastante tiempo de CPU, pero alcanza relaciones de compresión altas (entre 50:1 y 100:1, aunque se han encontrado ejemplos de hasta 1000:1).

Los algoritmos han sido desarrollados y registrados por MichalBarnsley, de Iterated Systems.

Page 14: Compresion graficos

Esquemas de transformaciones matemáticas

Existen muchas operaciones matemáticas que transforman un conjunto de valores a otro y después pueden ser aplicadas a la inversa para reconstruir el conjunto original. Algunas de ellas son especialmente útiles para su aplicación a algoritmos de compresión, por ejemplo:

◦ · Discrete Fourier Transform (DFT)

◦ · Discrete Cosine Transform (DCT)

◦ · Hadamard-Haar Transforms (HHT)

◦ · Karhunen-Loeve Transforms (KLT)

◦ · Slant-Haar Transforms (SHT)

◦ · Walsh-Hadamard Transforms (WHT)

Con mucho, la función más utilizada es la DCT, que por ejemplo se usa en versiones de JPEG y MPEG. Para ello se reemplazan bloques de intensidad de color de 8x8 píxels por una serie de valores parametrizando una función cosenoidal.