• No se han encontrado resultados

PRUEBAS Y EXPERIMENTOS REALIZADOS

Esta sección pretende hacer mención de las pruebas realizadas por el algoritmo para la compresión de imágenes.

Prueba No. 1.

ESIME Zacatenco

Resultados obtenidos.

Dimensiones de la imagen real: 200 X 200, tamaño: 3,64 Kb, Número de colores: 2385.

Primera prueba con fallas. El método de descompresión presentaba fallas al momento de leer los colores por lo que siempre tomaba el color negro. Este error se corrigió al modificar en el código fuente la sección correspondiente al ingresar en la variable cadena la información de la imagen.

ESIME Zacatenco

Prueba No. 2.

Figura 4.2. Compresión de una imagen de alta resolución con 2385 colores. Resultados obtenidos.

Dimensiones de la imagen real: 200 X 200, tamaño: 3,64 Kb, Número de colores: 2385.

Esto es debido a que esta imagen a pesar que ante el ojo humano posee pocos colores, en realidad tiene mucho más, lo cual se concluye que por este método no es posible que se realice la compresión.

ESIME Zacatenco

Prueba No. 3.

Figura 4.3. Compresión de una imagen de alta resolución con 5 colores. Resultados obtenidos.

Dimensiones de la imagen real: 300 X 300, tamaño: 263 Kb, Número de colores: 5.

Dimensiones de la imagen comprimida: 300 X 300, tamaño: 179 bytes. Por lo cual se obtuvo una compresión del 68%.

ESIME Zacatenco

Prueba No. 4.

Figura 4.4. Compresión del logotipo de una empresa de comida. Esta imagen tiene 11 colores Resultados obtenidos.

Dimensiones de la imagen real: 332 X 320, tamaño: 52,6 Kb, Número de colores: 11. Dimensiones de la imagen comprimida: 330 X 320, tamaño: 229 bytes.

En esta imagen se obtuvo una compresión del 90%. Este es un ejemplo muy claro de que este algoritmo tiene un funcionamiento optimo, dependiendo del número de colores que contenga.

ESIME Zacatenco

Prueba No. 5.

Figura 4.5. Compresión de una toma satelital de un lago. Esta imagen contiene 12 colores. Resultados obtenidos.

Dimensiones de la imagen real: 350 X 624, tamaño: 107 Kb, Número de colores: 12. Dimensiones de la imagen comprimida: 350 X 624, tamaño: 270 bytes.

En esta imagen, igual que en la anterior se obtiene una compresión del 90%. Por lo regular las tomas satelitales son imágenes de alta resolución y de poco colores.

ESIME Zacatenco

Prueba No. 6.

Figura 4.6. Compresión de una toma satelital del continente americano. Esta imagen contiene 14 colores.

Resultados obtenidos.

Dimensiones de la imagen real: 799 X 543, tamaño: 212 Kb, Número de colores: 14.

Dimensiones de la imagen comprimida: 799 X 543, tamaño: 166 bytes. Se obtiene una compresión del 90% nuevamente.

ESIME Zacatenco

Prueba No. 7.

Figura 4.7. Compresión de una toma satelital de la ciudad de Villahermosa, Tabasco. Esta imagen contiene 67 colores.

Resultados obtenidos.

Dimensiones de la imagen real: 400 X 345, tamaño: 135 Kb, Número de colores: 67.

Dimensiones de la imagen comprimida: 400 X 345, tamaño: 821 bytes. Se obtiene una compresión cerca del 90%.

ESIME Zacatenco

Prueba No. 8.

Figura 4.8. Compresión de un cuadro artístico. Esta imagen contiene 64 colores. Resultados obtenidos.

Dimensiones de la imagen real: 900 X 637, tamaño: 560 Kb, Número de colores: 64.

Dimensiones de la imagen comprimida: 900 X 637, tamaño: 382 bytes. Se obtiene una compresión de más del 90% a comparación con el tamaño de la imagen real.

ESIME Zacatenco

Prueba No. 9.

Figura 4.9. Compresión de una toma satelital de la ciudad de Irapuato. Esta imagen contiene 567 colores.

Resultados obtenidos.

Dimensiones de la imagen real: 500 X 375, tamaño: 184 Kb, Número de colores: 567. Dimensiones de la imagen comprimida: 500 X 375, tamaño: 934 bytes. Se obtiene una compresión de más del 90% a comparación con el tamaño de la imagen real. Se puede apreciar que conforme el número de colores aumenta, el tamaño de la imagen comprimida es mayor.

ESIME Zacatenco Comparaciones.

En la tabla 4.1 se muestra la comparación del método propuesto contra los métodos de compresión más usados en la actualidad.

Figura Numero de colores Tamaño de la imagen Original Compresión por método de recorridos RSI Compresión por JPEG Compresión por el Código Huffman 567 184 Kb 934 bytes 22,3 Kb 609 Kb 67 135 Kb 821 bytes 53,0 Kb 64,5 Kb 12 107 Kb 270 bytes 37,9 Kb 28,4 Kb

Tabla 4.1. Tabla comparativa del método de recorridos sobre una imagen vs jpeg y Huffman. Como se ve en la tabla, este método aplicándose sobre imágenes de alta resolución y de pocos colores, es más efectivo que la compresión por jpeg y Huffman.

ESIME Zacatenco

CONCLUSIONES

De las imágenes de prueba mostradas en el capitulo anterior concluyo que este algoritmo es útil si se requiere comprimir imágenes de alta resolución pero que posea pocos colores.

La principal razón por la cual este método no puede aplicarse a cualquier imagen es que, como la misma tiene una gran cantidad de colores, los cuales debe obtener su posición exacta, llega un momento en que son tantos datos, tantos valores que la máquina simplemente ya no puede seguir procesando. Es por esta razón que durante las pruebas con la imagen de 2385 colores, no se obtuvo compresión.

Un dato relevante del método es su escaneo. Este paso es de vital importancia, puesto que nos dice realmente cuantos colores posee una imagen, a pesar que ante el ojo humano pareciera tener pocos colores. Esto se corroboro con la misma imagen de la figura 4.3, que a simple vista tiene solo 4 colores, pero mediante el escaneo que el programa realiza sobre la imagen, se determino que el número de colores contenida en la misma era de 2385.

Por lo tanto, concluyo que este método sólo puede aplicarse a imágenes de alta resolución de pocos colores. En caso de querer comprimir imágenes con un número de colores igual o mayor a 2385, se sugiere utilizar otro método de compresión de los ya conocidos.

Sobre las posibles aplicaciones de este método son mapas geográficos satelitales. Estos mapas poseen la característica de ser imágenes de alta resolución o de formato de 24 bits, que no requieren de muchos colores. Estos mapas requieren de un método que no genere pérdidas debido a los usos en el campo de la física y geografía. Un posible método de compresión para su transporte y manipulación es el que se presenta en este escrito obteniéndose mejores resultados que los métodos de compresión ya existentes en el mercado.

ESIME Zacatenco Por último, concluyo que los objetivos planteados al inicio de esta investigación se han cumplido satisfactoriamente, dando inicio a un método que en el futuro promete obtener una compresión sin pérdidas, no solo para imágenes, sino también para archivos de audio e incluso video.

ESIME Zacatenco

APLICACIONES Y TRABAJO A FUTURO.

Como se mencionó al principio de este escrito, la compresión es un proceso muy importante ya que con él se puede manipular y/o transportar archivos cuyo tamaño es muy grande.

En este trabajo se enfocó única y exclusivamente hacia la compresión de imágenes, pero también puede aplicarse a archivos de video, recordando que un archivo de este tipo es un conjunto de imágenes transmitidas en un intervalo de tiempo, que por lo regular resulta ser igual a 24 imágenes por segundo. Cabe mencionar, que también tendría la misma restricción que al comprimir imágenes estáticas: el video debe contener imágenes de alta resolución y de pocos colores para que la compresión sea eficaz.

Este puede ser un gran avance, ya que por lo regular, en la compresión de video es muy notoria la pérdida de información de las imágenes que conforman estos archivos, lo cual hace que el video digital no sea de muy buena calidad.

ESIME Zacatenco

ANEXOS

Apéndice A.

David Albert Huffman

David Albert Huffman (1925-1999) nació en Alliance, Ohio. Después de graduarse de la Universidad del Estado de Ohio como ingeniero en electrónica a la edad de 18 años, se unió a la marina. Se recibió como Maestro en Ciencias en ingeniería electrónica en el Estado de Ohio en 1949, y cuatro años más tarde, recibió el título de Doctor en Ciencias en el Instituto Tecnológico de Massachusetts (MIT).

Durante su estancia en el MIT, en 1951, en un curso sobre información teórica, le fue dada la opción de tomar un examen final o un trabajo escrito sobre problemas con codificación de información. Huffman durante meses trabajo arduamente en esto sin resultados hasta que en 1952 propuso un método estadístico que permitía asignar un código binario a los diversos símbolos a comprimir (píxeles o caracteres, por ejemplo). Este método es conocido en la actualidad como CÓDIGO HUFFMAN.

El código de Huffman, también conocido como “codificación Huffman”, puede ser usado en casi cualquier aplicación, ya que es un sistema válido para la compresión y posterior transmisión de cualquier dato en formato digital, pudiendo aplicarse a faxes, módems, redes de computadoras y televisión. A lo largo de su vida hizo contribuciones importantes al estudio de aparatos finitos, circuitos aleatorios, síntesis de procedimientos, y diseño de señales.

ESIME Zacatenco Abraham Lempel y Jakob Ziv

Abraham Lempel y Jakob Ziv son los creadores del compresor LZ77, inventado en 1977. Este compresor se utilizó en ese momento para archivar; los formatos ZIP, ARJ y LHA lo utilizan.

En 1978 crearon el compresor LZ78 especializado en compresión de imágenes (o la compresión de cualquier tipo de archivo binario). En 1984, Terry Welch de Unisys lo modificó para utilizarlo en controladores de disco duro; por lo tanto, se agregó la inicial de su apellido a la abreviatura LZ, lo que originó el término LZW.

ESIME Zacatenco

Apéndice B.

El proceso de compresión consta de los siguientes pasos:

BIBLIOTECAS SUGERIDAS PARA EL PROCESO DE COMPRESIÓN. System

System Collections Generic System Component Model System Data

System Data Odbc System Drawing System Text

System Windows Forms System IO

System Runtime InteropServices System Collections

VARIABLES A UTILIZAR EN EL PROCESO DE COMPRESIÓN. Bitmap imagen int tamaño_de_la_imagen int ancho_de_la_imagen int alto_de_la_imagen int numero_de_pixeles_de_la_imagen int numero_de_colores

string cadena, colores, resultado

string vector_cadena

ESCANEO SOBRE LA IMAGEN PARA OBTENER EL NUMERO DE COLORES DE LA IMAGEN

ColoresDeLaImagen (Bitmap imagen) {

...

Color col Int32 bits_

FileInfo (".\\Archivo.DAT");

for (Xcontador = 0; Xcontador < image.Width; Xcontador++) {

ESIME Zacatenco

for (Ycontador = 0; Ycontador < image.Height; Ycontador++) {

col = image.GetPixel(Xcontador, Ycontador) cad = col.R.ToString()

bits_ = Convert.ToInt32(cad) }

... }

ALMACENAMIENTO DE LA INFORMACIÓN EN CADENA. vector_cadena = String.Concat(BaseBinaria(_bits1), BaseBinaria(0), BaseBinaria(_bits2), BaseBinaria(0), BaseBinaria(_bits_), colores)

SECCIÓN DEL PROGRAMA QUE OBTIENE EL NÚMERO DE BITS, LO COLOCA EN CADENA Y HACE LA CONVERSIÓN A BINARIO PARA LA CREACIÓN DEL RSI.

cad1=Convert.ToString(ancho_de_la_imagen) cad2=Convert.ToString(alto_de_la_imagen) _bits1 = Convert.ToInt32(cad1)

_bits2 = Convert.ToInt32(cad1)

FASE FINAL DE COMPRESIÓN DE LA IMAGEN ComienzaLosRecorridos()

{

_cadena_1 = ReadFromFile(".\\Colores.DAT")

int i=1, j=0 int anterior = 0 while (i < _cadena.Length) { auxiliar += Convert.ToString(_cadena[i-1]) j = 0 if (auxiliar.Length==NUMERODEBITS) { while (j < _cadena_1.Length)

ESIME Zacatenco { auxiliar += Convert.ToString(_cadena[j]) if (auxiliar.Length==NUMERODEBITS) { if (auxiliar == auxiliar) { cadena += BaseBinaria24(rec) anterior = recorrido - anterior recorrido++ } else { NO LO HACE } } j++ } } … FileInfo(".\\Archivo.DAT"); … }

ESIME Zacatenco

Apéndice C.

El proceso de descompresión se describe mediante el siguiente algoritmo desglosado:

PARA LA DESCOMPRESIÓN DE IMÁGENES SE CREA UNA NUEVA CLASE Y SE SUGIERE LAS SIGUIENTES BIBLIOTECAS.

System Collections Generic System Component Model System Data

System Drawing

System Drawing Imaging System Media

System Text System IO

System Windows Forms

VARIABLES UTILIZADAS EN ESTE PROCESO. Bitmap bmp

int ancho, alto

string cadena

DANDO INICIO A ESTE PROCESO SE PROCEDE A ALMACENAR LA INFORMACIÓN DEL ARCHIVO RSI EN LA VARIABLE CADENA Y RECONSTRUIR LA IMAGEN..

cadena = ReadFromFile(".\\Archivo.RSI")

bmp = new Bitmap(ancho, alto, PixelFormat FORMATO DE LA IMAGEN); bmpData = bmp.LockBits (ImageLockMode,

bmp.PixelFormat) UnlockBits (bmpData)

int r = Convert.ToInt32 (aux1) Color rojo

int g = Convert.ToInt32 (aux2) Color verde

int b = Convert.ToInt32 (aux3) Color azul Color.FromArgb(r, g, b)

ESIME Zacatenco

GLOSARIO

BMP. Es la extensión que corresponde a un tipo de fichero gráfico de mapa de bits (el estándar en Windows). Ver Bitmap.

Bitmap. También conocido como Mapa de Bits es la representación binaria en la cual un bit o conjunto de bits corresponde a alguna parte de un objeto como una imagen o fuente. Se asocia a un tipo o clase de imágenes para ordenador, en las que se almacena información sobre los puntos que las componen y el color de cada punto.

Código Huffman. Método estadístico que permitía asignar un código binario a los diversos símbolos a comprimir (píxeles o caracteres, por ejemplo).

DCT o “Discrete Cosine Transform”. Es una transformada basada en la transformada discreta de Fourier, pero utilizando únicamente números reales. Formalmente, la transformada de coseno discreta es una función lineal invertible RN -> RN o equivalente una NxN matriz cuadrada. Las variantes más

usadas son la DCT-I y la DCT-II. La DCT-III se conoce popularmente como la IDCT(Transformada inversa). Cada uno de estas posibles variaciones es debida a la periodicidad y el tipo de simetría aplicada a las muestras originales.

DCT-I

DCT-II

ESIME Zacatenco DCT-III

DCT-IV

DWT o Discrete Wavelet Transform. La Transformada Discreta Wavelet (Discrete Wavelet Transform) es una representación de una señal en base orto normal de valores wavelets infinitos. Todas las transformaciones wavelets pueden ser consideradas formas de representación en tiempo-frecuencia y, por tanto, están relacionadas con el análisis armónico. Las transformadas de wavelets son un caso particular de filtro de respuesta finita al impulso. Esta transformada está definida por la siguiente fórmula:

Esta definición de transformada puede ser descompuesta en las siguientes formulas, con el uso de un filtro pasa altas:

Esta transformada es utilizada comúnmente para la compresión de imágenes, por lo que el código fuente que describe el comportamiento de esta transformada es el que se muestra a continuación:

ESIME Zacatenco

public static int[] invoke(int[] input) {

int[] output = new int[input.length];

for (int length = input.length >> 1; ; length >>= 1) { for (int i = 0; i < length; i++) {

int sum = input[i*2]+input[i*2+1];

int difference = input[i*2]-input[i*2+1]; output[i] = sum; output[length+i] = difference; } if (length == 1) return output;

System.arraycopy(output, 0, input, 0, length<<1); }

}

Microsoft Visual C#. Lenguaje de programación orientado a objetos, evolución del lenguaje C++, desarrollado por Microsoft.

Label. El control Label se utiliza comúnmente para proporcionar texto descriptivo de otros controles, tales como cuadros de texto. También se pueden utilizar para agregar texto descriptivo de los controles utilizados en un form cread por el usuario..

Lossless. La compresión de datos “Lossless” hace uso de algoritmos de compresión que permiten que datos de las imágenes o archivos originales puedan ser reconstruidos a partir de datos comprimidos.

Lossy. Se refiere a las técnicas de compresión de datos en la que cierta cantidad de datos de la imagen original se pierden.

Picturebox. El control PictureBox es un control que muestra imágenes en diferentes formatos, incluyendo. Bmp,. JPEG,. Gif,. Wmf, y los iconos. Estos se pueden accederse desde varios lugares: Hard drives, Sitios Web, Recursos archivo, etc.

ESIME Zacatenco Quadtree. El termino quadtree es utilizado para describir clases de estructuras de datos jerárquicas cuya propiedad común es que están basados en el principio de descomposición recursiva del espacio. En un quadtree, el centro de sus elementos está siempre en un punto. Al insertar un nuevo elemento, el espacio queda divido en cuatro cuadrantes. Al repetir el proceso, el cuadrante se divide de nuevo en cuatro cuadrantes, y así sucesivamente.

Textbox. El control TextBox muestra el texto introducido en tiempo de diseño que pueden ser editados por los usuarios en tiempo de ejecución, o cambiar mediante programación. Normalmente, un control TextBox se utiliza para mostrar una sola línea de texto o permitir que una sola línea de texto que se aporte por el usuario.

Umbral. Es la cantidad mínima de señal que debe estar presente para ser registrada por un sistema.

Wavelet. El término original wavelet, en inglés, ha sido traducido también al castellano como onda. Sin embargo, por su brevedad y mayor semejanza con el paradigma latino, comúnmente se asocia con la palabra ondula, la cual para fines prácticos, es más apropiada esta traducción. Una ondula es una función matemática utilizada para dividir una determinada función o en tiempo continuo de señales en frecuencias diferentes componentes y estudio de cada componente con una resolución que coincide con su magnitud.

Windows form. Al crear un nuevo proyecto de aplicación para Windows, un formulario denominado Form1 se agrega automáticamente al proyecto.

Zerotree. El zerotree se basa en la hipótesis de que si un coeficiente de onda en una escala gruesa es insignificante con respecto a un umbral, entonces todos los coeficientes de onda de la misma orientación en la misma ubicación

ESIME Zacatenco espacial en la escala más fina es probable que sea insignificante con respecto al mismo umbral.

ESIME Zacatenco

REFERENCIAS

[1] A. K. Jain, “Fundamentals of digital image processing”, Prentice Hall International, Englewood Cliffs, 1989.

[2]Cosio Robles Alma Lillian, García Sánchez Miriam, González Fernández Judith, “Comparación de algoritmos de compresión de imágenes”, Agosto 2004. [3] “Bitmap property: Height, Physical Dimension, width, raw format and size”, http://www.java2s.com/Code/CSharp/2D- Graphics / Bitmapproperty Height Physical Dimension width raw formatandsize.htm

[4] “Video e imágenes digitales”, http://es.kioskea.net/video/lumiere.php3 [5] “ZDNet Definition for: Lossless Compression”,

http://images.google.com.mx/imgres

[6] Mike Kitchen, “C# Tutorial” http://en.csharp-online.net/, 2007 – 2008. [7] Balamurali Balaji, “Conversión of Decimal to any Base (Binary, Octal or Hexa) and vice-versa (C#)” http://www.codeproject.com/KB/cs/balamurali_balaji. aspx.

[8] Ceballos Sierra Francisco Javier, “Enciclopedia de Microsoft Visual C#”, Alfa omega grupo editor S. A. de C. V., 2006

[9] Ceballos Sierra Francisco Javier, “Microsoft C#. Lenguaje y aplicaciones.”, Alfa omega grupo editor S. A. de C. V., 2006

Documento similar