miércoles, 21 de diciembre de 2016

Codificación RLE

Cómo se realiza el proceso de compresión de imágenes RLE.
Se basa en la repetición de elementos consecutivos. El principio fundamental consiste en codificar un primer elemento al dar el número de repeticiones de un valor y después el valor que va a repetirse. Por lo tanto, según este principio, la cadena “AAAAAHHHHHHHHHHHHHH” cuando está comprimida da como resultado "5A14H". La ganancia de compresión es (19-5) / 19, es decir, aproximadamente 73,7%. Por otro lado, para la cadena "CORRECTLY", donde hay poca repetición de caracteres, el resultado de la compresión es “1C1O2R1E1C1T1L1Y”. Por lo tanto, la compresión genera un costo muy elevado y una ganancia de compresión negativa de (9-16) / 9, es decir, ¡-78%!

Ejercicio 1.3
¿Cuál sería el archivo comprimido para el siguiente bitmap de 6 × 8?
6, 8, 0, 1, 3, 1, 4, 1, 3, 1, 4, 1, 3, 1, 4, 1, 3, 1, 2, 2, 2, 2, 6, 1, 1. Los dos primeros, son la resolución del bitmap (6 × 8). El siguiente, indica que el primer pixel es negro. Si se almacenan usando un byte por número, el tamaño es de 25 bytes  en comparación con el del mapa de bits de tan solo 6 × 8 bits = 6 bytes—. El método no funciona con imágenes pequeñas.

Cómo se ejemplifica el proceso para la compresión de imágenes en escala de gris
Cada bloque (run) de píxeles con la misma intensidad (nivel de gris) se codifica como un par (run length, valor del píxel). El run length, ocupa normalmente un byte, lo que permite secuencias de hasta 255 píxeles. El valor del píxel ocupa varios bits, dependiendo del número de niveles de gris (típicamente, entre 4 y 8 bits). Ejemplo: Un mapa de bits, en escala de grises de 8 bit de profundidad, que comienza con 12, 12, 12, 12, 12, 12, 12, 12, 12, 35, 76, 112, 67, 87, 87, 87, 5, 5, 5, 5, 5, 5, 1, . . .  se comprime como 9 ,12, 35, 76, 112, 67, 3 ,87, 6 ,5, 1,. . . , donde los números en las cajas son contadores que indican la cantidad de veces que se repite el siguiente elemento.

Cómo son las formas de muestreo en RLE.
´
Ejercicio 1.4
Hay otra razón obvia, por la que cada fila de un bitmap debería ser codificada individualmente. ¿Cuál es?
El método RLE para imágenes se basa en la idea de que los pixeles adyacentes tienden a ser Idénticos. No es común que el último pixel de una fila sea idéntico al primer pixel de la fila siguiente.

Explique el algoritmo RLE como trabaja para su funcionamiento.
El código es muy sencillo. Comienza por la conversión de la matriz —M— en un vector unidimensional —x—; para ello, guarda en f y c el número de filas y de columnas, respectivamente —[f, c] = size (M)—, y con el bucle for van introduciendo en x las filas de la matriz —M (k, :)—, una tras otra. Cada run length, continúa de una línea a la siguiente y se calculan todos a partir de x, mediante las siguientes operaciones:
·         N = f c, calcula el número de elementos de la matriz, N. La suma de los elementos —de 2 a N— de x (x (2 : N)), con los elementos —de 1 a N − 1— de x (x (1 : N − 1)), proporciona el vector z, que contendrá unos en los lugares clave .
·         Con la búsqueda de los unos en z, obtenemos una matriz unidimensional z1 (z1 = find(z == 1)), con la que se construyen dos vectores: el primero —i1—, formado por todos los elementos de z1 con N al final (i1 = [z1 N]); el segundo —i2—, formado por todos los elementos de z1 precedidos por 0 (i2 = [0 z1]).
·         La resta i1 − i2 genera todos los run lengths de la matriz M.
La desventaja del algoritmo RLE para imágenes consiste en que cuando se modifica la imagen, normalmente los run lengths tienen que ser reconstruidos por completo. La salida proporcionada por el método RLE en imágenes complejas, a veces puede ser más grande que el almacenamiento de la imagen sin comprimir (i.e., una imagen sin comprimir —un volcado píxel a píxel del bitmap original—).

Codificar el algoritmo de compresión RLE








No hay comentarios:

Publicar un comentario