• No se han encontrado resultados

PROCESO DE COMPRESIÓN POR RSM.

Para iniciar el proceso de compresión, debemos obtener los siguientes datos: 1. Ancho de la imagen.

2. Alto de la imagen. 3. Número de colores.

4. Número de píxeles. Este dato es útil para obtener la información de los colores. En la descompresión se utiliza para situar cada color en la imagen.

5. Número de bits por píxeles. Determina el tamaño en que son representados cada Pixel. Se utiliza en la descompresión.

Este método pretende comprimir imágenes de alta resolución, es decir, deben contener en cada Pixel 24 bits.

Figura 3.1. Número de bits por Pixel para el algoritmo de programación.

Se requieren de 24 bits para poder representar una imagen de color real, basado en la fórmula incluida en la figura 3.2.

ESIME Zacatenco Figura 3.2. Obtención del número de muestras de un archivo.

Esta fórmula se obtuvo en base al teorema de muestreo y es utilizado comunicaciones para el proceso de compresión de archivos.

Para nuestro ejemplo utilizaremos una variable a la que llamaremos CADENA. Esta variable almacena en archivos con formato en binario la información de la imagen a comprimir. Para discernir cada dato, se incluyen blancos*, cuya función es separar una variable de otra. En el proceso de conversión de decimal a binario un blanco corresponde a 0000 0000 en 8 bits.

Para indicar la posición de cada color sobre el Pixel, CADENA almacena la información de cada Pixel y realiza comparaciones para determinar a qué color corresponde. Por ejemplo, si CADENA llega a contener “0000”, quiere decir que el algoritmo identifica a ese color como el negro y le agrega un blanco para distinguir al siguiente color en ser escaneado.

Es así como se identifica cada color de la imagen, y dependiendo del mayor de estos colores será el tamaño en bits de cada dato. Por ejemplo, si 255 es la representación más alta de uno de los colores de la imagen, necesitamos de 8 bits para representar a todos los demás, ya que es la cantidad en bits que se requieren para representar al 255 en binario (1111 1111).

La figura 3.3 muestra un ejemplo sobre la aplicación de este método. Supongamos que esta imagen cuenta con 4 colores.

DEFINICIÓN: Sea ф el carácter blanco cuyo valor en hexadecimal corresponde al 00H.

ESIME Zacatenco Entonces CADENA almacena:

Ancho ф Alto ф Número de píxeles ф Número de bits por Pixel ф Número de colores.

De estos datos, número de colores ya es conocido. Número de bits por pixel tiene un valor de 24 por ser de una imagen de alta resolución:

CADENA = Ancho ф Alto ф Número de píxeles ф

24DECIMALф 4DECIMAL.

Solo faltan determinar ancho, alto y numero de píxeles, para que la información almacenada en CADENA sea guardada en un archivo con formato *.DAT.

Figura 3.3. Representación de una imagen de alta resolución de pocos colores. Los números del uno al cuatro representan 4 colores diferentes contenidos en esta imagen. Cada celda representa un Pixel, mismo que contiene en su interior 24 bits, esto es por que como se mencionó corresponde a una imagen de alta resolución.

Para este ejemplo, supóngase que la imagen mide 512 píxeles de ancho x 456 píxeles de alto. Ver figura 3.4.

ESIME Zacatenco Así, tenemos los siguientes valores, tomando en cuenta también que alto x ancho = número de píxeles en la imagen:

CADENA = 512DECIMALф 256DECIMALф 131072DECIMALф 24DECIMALф 4DECIMAL

Para representar a los datos de esta imagen en base binaria, se toma el

número más grande; este corresponde a 131072. Para representar en binario a este número requerimos de 18 bits. Por lo tanto, todos los datos guardados en este archivo, serán de 18 bits.

ESIME Zacatenco La tabla 3.1 muestra los valores de los datos en base binaria.

Dato 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 512 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 256 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 131072 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 Blanco 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Tabla 3.1. Conversión de los datos de la imagen. Estos datos se guardan en un archivo llamado DIMESIONES.DAT.

Supóngase que los 4 colores de la imagen sean los que se muestran a continuación:

Color 1 = 0101 1111 0000 1111 0101 Color 2 = 1111 0101 0101 1001 0001 Color 3 = 0000 1101 0111 1101 1011 Color 4 = 1000 0100 0100 1000 0000

Como color 4 es el mayor de los colores, los datos almacenados en CADENA, serán representados con 24 bits. Esta información es guardada en el archivo COLORES.DAT.

NOTA: Este archivo no lleva blancos. Esto se debe a que en DIMENSIONES.DAT se especifica que esta imagen tiene 4 colores, y en este archivo se especifica que se almacenaron datos de 24 bits.

Recorridos sobre la imagen. Para guardar en otro archivo la posición de cada

ESIME Zacatenco 1. Color 1 ocupa la posición 0 (ver figura 3.5) Este valor se transforma a base binario y es almacenado en CADENA.

Figura 3.5. Recorrido sobre la imagen.

Después, se detecta la siguiente posición de color 1. En este caso corresponde al lugar 1. La siguiente posición de color 1 es en el lugar 11. Para llegar hasta esa posición se requiere de sumar 9 a la posición en la que estamos. Entonces el valor a almacenar en CADENA no es 11, sino 9, que fue el número que se requirió para llegar hasta esa posición. Se transforma este valor en base binaria y se almacena de nueva cuenta en CADENA.

Este procedimiento se hace sobre la imagen para obtener los incrementos que se utilizaran en la etapa de descompresión, con el fin de ubicar a los colores de la imagen en la misma. El resto de los recorridos se muestran a continuación en base a la figura 3.6.

Posiciones del color 1: 0, 1, 9, 5, 1, 1, 8, 4, 1, 6, 1, 8, 3, 15.

De igual forma que se hizo con los dos archivos anteriores, se toma el valor más grande de estos datos, que en este caso corresponde el numero 15. Debido a que se requiere de 4 bits para representar al número 15 en base binaria todos los datos guardados en este archivo, con nombre RECORRIDOS.DAT tienen ese tamaño.

ESIME Zacatenco Figura 3.6. Recorridos e identificación de la posición de los colores sobre la imagen. Después de localizar la posición del color, observamos que se cuenta desde uno la siguiente localidad. NOTA: El número mayor de los recorridos debe ser el mayor de los cuatro colores.

Descompresión. La información de los tres archivos creados en la etapa de

compresión es concatenada en el vector CADENA para ser procesada por la maquina. De esta forma, se especifica el alto y ancho de la imagen y el número de colores que contiene la misma.

Para colocar cada color sobre la imagen el algoritmo realiza el siguiente procedimiento:

Identifica los colores de la imagen. Toma el primer color.

ESIME Zacatenco Dependiendo de los datos almacenados en el archivo RECORRIDOS.DAT, se va incrementando la posición en donde será puesto este color. Ver imagen 3.7.

Este mismo paso se realiza con el resto de los colores, excepto por el ultimo ya que por default, los espacios restantes de la imagen son ocupados por este color.

Figura 3.7. Proceso de descompresión de la imagen mediante RSM.

Esto da como resultado la reconstrucción de la imagen original pero de menor tamaño. El tamaño se determina por la suma de los bits que componen esta imagen.

Desarrollo del software.

En esta sección se procederá a explicar la creación y el uso de este algoritmo de compresión.

ESIME Zacatenco Se ocuparon 3 Windows form* para elaborar este software. Como primer paso, se procedió a elaborar una aplicación Windows en el cual se tuvieran tres botones con las siguientes funciones de usuario:

1. Abrir una imagen nueva.

2. Realizar compresión (que será en donde se ejecute el método de recorridos sobre la imagen, explicado en el capítulo anterior).

3. Descomprimir imagen.

En la figura 3.8 se muestran las distribuciones de estos elementos. Como se aprecia, además de los botones que permitirán ejecutar las acciones sobre la imagen, se usaron otras herramientas que el lenguaje C# proporcionaba como son Labels10, TextBoxes11 y un PictureBoxes12, sobre el cual la imagen a abrir se mostrará.

Figura 3.8. Distribución de los componentes gráficos del software de aplicación.

10 Label = representa una etiqueta en Windows. Ver glosario. 11

TextBox = representa un control contenedor de caracteres en Windows. Ver glosario.

12 PictureBox = representa un control de cuadro de imagen de Windows para mostrar una imagen. Ver

ESIME Zacatenco A continuación, se procederá a explicar a detalle la función de cada uno de los elementos del software.

En la figura 3.9, se aprecian los labels y los textboxes de software. El propósito de los labels sobre el software es de indicar al usuario el campo que describen a los textboxes que tienen a su lado; por el contrario, los textboxes contendrán el dato o resultado de la imagen, de acuerdo a la descripción contenida en los labels.

Figura 3.9. Distribución de labels y textboxes.

La figura 3.10 corresponde a un PictureBox con nombre pic113 (para su fácil uso), sobre el cual se mostrará en pantalla la imagen a comprimir. Como se puede ver, este recuadro está relacionado con el botón con la etiqueta “ABRIR UNA IMAGEN NUEVA”, ya que al momento de presionar dicho botón aparece un cuadro de texto, tal y como se aprecia en la figura 3.11, con la cual el usuario selecciona la imagen que desea comprimir.

Para realizar la compresión el usuario sólo debe apretar el botón de “Realizar Compresión” en el cual, después de apretarlo, el software

13 Ver apéndice A.

ESIME Zacatenco abrirá una ventana nueva mostrando la carpeta en donde la imagen comprimida se alojará con la extensión del método utilizado.

Figura 3.10. Usos del PictureBox “pic1”.

Figura 3.11. Cuadro de dialogo del botón “ABRIR IMAGEN”. El proceso de compresión mediante se enuncia a continuación:

ESIME Zacatenco 1. Apretar el botón “Realizar compresión”. Esto abrirá una ventana como la que se ilustra en la figura 3.12, sobre la cual se aprecia un mensaje de texto que nos dice el tiempo estimado que realizará el proceso de compresión.

Figura 3.12. Ventana inicial del proceso de compresión mediante el método RSI. 2. Este proceso consta de 3 pasos:

a. El primer paso consta en llenar la variable “CADENA” con los datos de la imagen. Esto se puede ver en la figura 3.13.

b. El segundo paso consta de crear el archivo con extensión dat, para construir el archivo con extensión RSI. Ver figura 3.14

c. El último paso es crear el archivo RSI para ser utilizado posteriormente en el proceso de descompresión. Ver figura 3.15.

ESIME Zacatenco Figura 3.13.Paso 1 de la compresión de imágenes a través de RSI. Utilización de la

variable cadena.

Figura 3.14.Paso 2 de la compresión de imágenes a través de RSI. Conversión a binario.

ESIME Zacatenco Figura 3.14.Paso 3 de la compresión de imágenes a través de RSI. Creación del

archivo con extensión RSI.

Una vez que hayamos comprimido una imagen tenemos la opción de descomprimirla a través de nuestro software, y en base a la explicación de la sección anterior. Para descomprimir una imagen, se aprieta el botón “DESCOMPRIMIR IMAGEN”, el cual mostrará la imagen descomprimida con sus respectivas propiedades. Esto se ilustra en la figura 3.15.

ESIME Zacatenco Figura 3.15. Descompresor de imágenes. Como se puede apreciar posee dos botones:

uno para ver la imagen comprimida por este método y otro para guardarla. Para este ejemplo esta imagen posee cerca de 40,000 colores originalmente presenta un tamaño de 3.16 Kb con el método JPG. Utilizando este método, el tamaño de compresión lograda fue de 106 Kb.

ESIME Zacatenco

CAPÍTULO IV

Documento similar