Logo Studenta

Algoritmo de Compressão de Imagens de Alta Resolução

¡Este material tiene más páginas!

Vista previa del material en texto

INSTITUTO POLITÉCNICO NACIONAL 
 
ESCUELA SUPERIOR DE INGENIERÍA 
MECÁNICA Y ELÉCTRICA 
 
 
ALGORITMO DE COMPRESIÓN DE IMAGENES DE 
ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
 
 
TESIS 
QUE PARA OBTENER EL TITULO DE INGENIERO 
EN COMUNICACIONES Y ELECTRÓNICA 
PRESENTA: 
MARIO SANDOVAL OLIVÉ 
 
 
 
ASESOR 
DRA. MARIA ELENA ACEVEDO MOSQUEDA 
 
MÉXICO, D. F. SEPTIEMBRE 2008 
INSTITUTO POLITÉCNICO NACIONAL 
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELECTRICA 
UNIDAD PROFESIONAL '"ADOLFO LÓPEZ MATEOS" 
TEMA DE TESIS 
QUE PARA OBTENER ELTITtJLO DE 
INGENIEROEN OOMUNICAOONES y ELECTRÓNICA 
POR LA OPCIÓN DE TITULACiÓN 
TESIS Y EXAMENORALINDIVIDUAL 
DEBERA(N) DESARROLLAR 
c.-MARIO SANDOVAL OUVE 
"ALGORITMO DE COMPRESIÓN DE IMÁGENES DE ALTA RESOLUCIÓN Y POCOS 
COLORES SIN PÉRDIDAS". 
DESARROLLAR UNA ALGORITMO QUE REALICE LA COMPRESIÓN SIN PÉRDIDAS DE 
INFORMACIÓN, DE IMÁGENES DE ALTA RESOLUCIÓN Y POCOS COLORES, UTILIZANDO EL 
LENGUAJE DE PROGRAMACIÓN C#. 
» ANÁLISIS DE LOS ALGORITMOS EXISTENTE: COMPRESIÓN SIN PÉRDIDAS Y 
COMPRESIÓN CON PÉRDIDAS 
» MÉTODO PROPUESTO: COMPRESIÓN RSI (RECORRIDO SOBRE LA IMÁGEN) 
» DESARROLLO DEL MÉTODO 
» PRUEBAS 
MÉXICO D.F., 10 DE NOVIEMBRE DE 2009 
ASESORES 
-\~~\L, 
DRA. MARÍA ELENA ACEVEDO MOSQUEDA. 
DE Le.E. 
 
ESIME Zacatenco 
 
I ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
ÍNDICE 
Resumen ........................................................................................................... III 
Objetivo general ............................................................................................... IV 
Objetivos específicos ...................................................................................... IV 
Hipótesis ............................................................................................................ V 
Justificación ..................................................................................................... VI 
Metodología ..................................................................................................... VII 
 
Capítulo 1. Introducción ................................................................................... 1 
La compresión de imágenes ......................................................................... 1 
Compresión sin pérdidas (LOSSLESS) ....................................................... 1 
Compresión con pérdidas (LOSSY) ............................................................. 2 
Estado del arte ............................................................................................... 4 
 
Capítulo 2. Métodos de compresión de imágenes ......................................... 7 
Teoría de imágenes y colores ....................................................................... 7 
Resolución .................................................................................................... 7 
Modelos de color .......................................................................................... 8 
Métodos de compresión de imágenes ......................................................... 9 
Código Huffman............................................................................................ 9 
JPEG .......................................................................................................... 11 
EZW ........................................................................................................... 14 
SPIHT ......................................................................................................... 17 
RLE ............................................................................................................ 21 
LZW ............................................................................................................ 23 
 
Capítulo 3. Método de recorridos sobre una imagen ................................... 25 
Método de recorrido sobre una imagen ..................................................... 25 
Proceso de compresión por RSM ............................................................... 26 
 
ESIME Zacatenco 
 
II ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
Desarrollo del software ............................................................................... 33 
 
Capítulo 4. Pruebas y experimentos realizados ........................................... 41 
 
Conclusiones ................................................................................................... 52 
Aplicaciones y trabajo a futuro ...................................................................... 54 
Anexos ............................................................................................................. 55 
Apéndice A .................................................................................................... 55 
Apéndice B .................................................................................................... 57 
Apéndice C .................................................................................................... 60 
Glosario ........................................................................................................... 61 
Referencias ...................................................................................................... 66 
 
 
ESIME Zacatenco 
 
III ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
RESUMEN 
El algoritmo de compresión que se propone en este trabajo de investigación 
realiza la compresión sin pérdidas de una imagen de alta resolución. Esto surge 
debido que los algoritmos que se usan en la actualidad presentan detalles que 
hacen que la compresión realizada no sea 100% eficiente. 
Este método se distingue de los actuales por la forma en la que la imagen es 
guardada. El algoritmo recorre la imagen Pixel por Pixel obteniendo la 
información de la imagen, que en el proceso de descompresión utiliza para 
reconstruir una nueva imagen que contiene la información de la imagen original. 
Así, este algoritmo genera una compresión efectiva, en la cual la imagen 
obtenida no presenta pérdida de información. 
Sin embargo, las imágenes las cuales se pueden implementar este método 
deben ser de pocos colores, debido a la forma en que la información de la 
imagen es guardada. 
Es por esto que este método es muy eficaz en aplicaciones de fotografía 
satelitales, debido a que estas imágenes usan muy pocos colores y requieren 
un método de compresión eficaz para su manipulación y transporte. 
 
 
ESIME Zacatenco 
 
IV ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
OBJETIVO GENERAL 
Desarrollar un algoritmo que realice la compresión sin pérdidas de 
una imagen de alta resolución y pocos colores. 
 
OBJETIVOS ESPECIFICOS 
 Hacer un estudio de los métodos de compresión actuales. 
 Describir el método de compresión que se propone. 
 Implementar este algoritmo con imágenes de alta resolución y 
pocos colores. 
 Realizar una comparación y análisis del método propuesto con los 
métodos existentes. 
 
 
ESIME Zacatenco 
 
V ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
HIPOTESIS 
Se realizará un algoritmo capaz de realizar la compresión sin pérdidas de 
una imagen de alta resolución y de pocos colores, dando inicio a nueva 
forma de compresión que sustituya a los métodos actuales en ciertas 
aplicaciones. 
 
 
ESIME Zacatenco 
 
VI ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
JUSTIFICACIÓN 
En la actualidad, han surgido avances tecnológicos de gran relevancia que 
ayudan a facilitar la vida del ser humano. Un claro ejemplo de esto es la 
fotografía digital, en donde las imágenes son capturadas por un sensor 
electrónico, archivándose en una unidad de memoria. Estas imágenes podemos 
verlas muy a menudo en cualquier página de Internet, publicación, revistas o 
incluso comofondo en el escritorio de cualquier computadora, y en el caso de la 
fotografía profesional, ahorra al fotógrafo mucho tiempo al momento del 
revelado. 
Sin embargo, ocupan demasiado espacio lo cual genera dificultad para su 
envío, manipulación o utilización. Por esta razón se requieren de métodos de 
compresión los cuales generen que estas imágenes sean procesadas, 
ocupando menos espacio y siendo de fácil manejo y transporte. 
Este ejemplo nos muestra la importancia de la compresión, ya que sin esta 
diversos formatos de archivo (como pueden ser archivos de sonidos, archivos 
de video, etc.) no podrían ser transportados y ser utilizados en diversas 
aplicaciones de usuario. Sin embargo, estas técnicas de compresión presentan 
pérdidas, que llegan alterar a la imagen de tal forma que no se pueda recuperar 
su forma original. Es el precio que se tiene que pagar al utilizar estos métodos: 
pérdida de información. 
Este proyecto de tesis propone el desarrollo de un algoritmo de programación 
que realice la compresión de imágenes de alta resolución sin que estas 
presenten pérdidas al momento de su reconstrucción. 
De esta forma se obtendría compresión además de no ejercer alguna alteración 
irreversible sobre la imagen a comprimir. 
 
 
 
ESIME Zacatenco 
 
VII ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
METODOLOGÍA 
El proceso a seguir para el desarrollo de este algoritmo es el que se muestra en 
el siguiente diagrama: 
 
 
Figura I. Diagrama de flujo (1). 
 
En el diagrama de flujo (1) se muestra el proceso de compresión de imágenes. 
Como se puede apreciar, el algoritmo actúa sobre una imagen BMP1, y 
mediante una serie de recorridos dentro del vector de almacenamiento, se 
obtiene como respuesta una imagen comprimida. 
Para la construcción de este algoritmo requerimos de un lenguaje de 
programación con resultados óptimos. Por lo tanto se propone Microsoft Visual 
C#, debido a que es capaz de manejar imágenes con una capacidad mayor de 
24 bits además utilizar pocas líneas de código. 
 
1
 BMP = Archivo de mapa de bits. Ver glosario. 
 
ESIME Zacatenco 
 
1 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
CAPÍTULO I 
INTRODUCCIÓN 
Una imagen (viene del latín "imago", del verbo "imitari" que significa imitar) es 
una imitación de una figura real. A partir de esta definición, se define la palabra 
Pixel como la unidad más pequeña de una imagen; proviene de las siglas en 
inglés PICTURE ELEMENT (elemento de una imagen), y además, en una 
imagen los píxeles pueden ser más grandes o más pequeños. Mientras más 
grandes son los píxeles, la imagen se ve más borrosa, mientras más pequeños 
sean estos, es más nítida y tiene más detalles. 
La compresión de imágenes 
El principal inconveniente de las imágenes digitales es, sin duda, la cantidad de 
información que requiere y el tamaño de los archivos que genera. La capacidad 
de trabajo y de almacenamiento de los sistemas informáticos va en aumento, 
pero también nos vamos habituando a disponer de mucho más píxeles. De ahí 
que se mantenga el uso y el interés por la evolución de las técnicas de 
compresión. 
La compresión, en realidad, consiste en sustituir una cadena de datos por otra 
más corta cuando se guarda un archivo. Ciertos métodos son reversibles 
("lossless data compression2", en inglés), porque permiten la reconstrucción 
exacta del original. Pero con otros, la información original sólo se recupera 
aproximadamente, ya que se descarta una parte de los datos ("lossy data 
compression3"), a cambio de relaciones de compresión mucho mayor que este. 
Compresión sin pérdidas (LOSSLESS) 
Es aquella compresión que permite recuperar exactamente la calidad original de 
la imagen. La compresión sin pérdida de datos, es utilizada para comprimir 
 
2
 Lossless data compression = Compresión de datos sin pérdidas. Ver glosario. 
3
 Lossy data compression = Compresión de datos con pérdidas. Ver glosario 
 
ESIME Zacatenco 
 
2 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
archivos o información que contienen datos que no pueden ser degradados o 
perdidos, como pueden ser documentos de texto, archivos ejecutables, etc. 
Se distingue entre sistemas adaptativos, no adaptativos y semiadaptativos, 
según tengan en cuenta o no las características del archivo a comprimir. 
→ Los no adaptativos (se les relacionan con el código Huffman4) establecen a 
priori una tabla de códigos con las combinaciones de bits que más se repiten 
estadísticamente. A estas secuencias se asignan códigos cortos, y a otras 
menos probables claves más largas. El problema que presentan es que un 
diccionario de claves único tiene resultados muy diferentes en distintos 
originales. 
→ Un sistema es semiadaptativo, si se analiza primero la cadena de datos a 
comprimir y se crea una tabla a medida. Se logra mayor compresión, pero 
introduce dos inconvenientes: la pérdida de velocidad al tener que leer el 
original dos veces, por un lado, y la necesidad de incrustar en el archivo 
comprimido el índice de claves, por el otro. 
→ Entre los métodos adaptativos, el más simple es el Run Lengh Encode 
(cuyas siglas significan Ejecutar Longitud Codificar) o RLE, que consiste en 
sustituir series de valores repetidos por una clave con indicador numérico. 
Los compresores de uso general más populares utilizan métodos como éste, 
por eso tardan más en empaquetar los datos que en descomprimirlos. 
Compresión con pérdidas (LOSSY) 
Se define compresión con pérdidas al tipo de compresión que degrada en 
mayor o menor medida la calidad de la imagen. Dentro de esta categoría es 
universalmente conocido por su eficacia el formato JPEG. 
 
4
 El algoritmo Huffman, permite la compresión de datos a través de una tabla de códigos de longitud 
variable. Ver capítulo 2. 
 
ESIME Zacatenco 
 
3 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
Sin embargo, los efectos negativos de este método compresión son el 
empobrecimiento del tono y la nitidez global, que notaríamos más bien en una 
impresión, y la aparición de artefactos a nivel local visibles sobre todo en 
pantalla, aunque JPEG sea un formato habitual en Internet. 
Los principales sistemas de compresión consideran principalmente los 
siguientes aspectos: 
1. Reducir lo mayor posible la información a transmitir. 
2. Reducir el tiempo de enlace o demora. 
3. Reducir los costos de conexión. 
Estos son los principales objetivos que buscan las diferentes técnicas de 
compresión pero para lograr estas es necesario que se cumpla lo siguiente: 
 El código de compresión debe ser lo más compacto posible que el 
original. 
 Eliminar toda o casi toda la redundancia existente en la imagen original. 
Estos algoritmos hacen uso de las limitaciones de percepción de los sentidos 
humanos y son utilizados para el audio y video, por ejemplo al comprimir una 
imagen se puede reducir la información acerca de las variaciones de color 
debido a que el ojo humano no percibe esas variaciones de color, por lo que se 
reduce esa información de cambios de color en la imagen original. 
Pero hay que tener en cuenta que estos algoritmos no pueden ser utilizados en 
textos escritos debido a que estos no presentan una gran gama de colores. 
 
 
ESIME Zacatenco 
 
4 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Figura 1.2. Comparación entre las compresiones con pérdidas y sin pérdidas (lossy y lossless 
respectivamente). Como podemos observar, en la compresión lossy existen pérdidas de la 
información la cual genera que la imagen original no pueda ser recuperada del todo. 
 
ESTADO DEL ARTE 
Dentro de la gran variedad de algoritmos para compresión de imágenesexisten 
los siguientes: 
 Código Huffman: David Huffman propuso un método estadístico que 
permitía asignar un código binario a diversos símbolos a comprimir, tales 
como píxeles o caracteres, sólo por citar algunos ejemplos. Esta 
compresión es realizada a través de arboles, y presenta la desventaja 
que junto al archivo comprimido debe estar también la tabla de códigos 
con las combinaciones de bits que más se repiten estadísticamente con 
la cual se llevó a cabo la compresión, de lo contrario el proceso no sería 
reversible. 
 
ESIME Zacatenco 
 
5 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 JPEG, JPG: Es la Extensión que corresponde a un tipo de fichero gráfico 
de mapa de bits. Es un formato comprimido que pierde definición al 
comprimir: se puede indicar la cantidad de compresión que se desea, 
pero cuanto más se comprima, mayor pérdida de calidad tiene la imagen. 
Para fotografías digitalizadas con 640x480 puntos o más, un nivel de 
compresión entre 15 y 25 suele ser suficiente para reducir mucho el 
espacio ocupado por la imagen, pero a la vez que la pérdida de calidad 
no sea muy apreciable. 
 EZW. Este método explota las propiedades aportada por la transformada 
discreta wavelet para obtener resultados satisfactorios en la compresión: 
un gran porcentaje de coeficientes wavelets próximos a cero y la 
agrupación de la energía de la imagen. 
 SPHIT. El tipo de codificación de este algoritmo se basa en la 
clasificación por orden de bits significativos, resultando ser un método 
efectivo y económico en el uso de recursos. 
 RLE. El método de compresión RLE se basa en la repetición de 
elementos consecutivos. Supone que la imagen se compone de una 
serie de puntos que son del mismo color. En una imagen que contenga 
muchas áreas con el mismo color, este método permite obtener un alto 
nivel de compresión sí que se produzca pérdida de calidad. 
 LZW. Este algoritmo es utilizado con archivos *.tif, *.pdf, *.gif y archivos 
de lenguaje PostScript. Es muy útil con imágenes que contengan áreas 
de gran tamaño, o imágenes sencillas. 
 
 
 
 
 
ESIME Zacatenco 
 
6 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Algoritmo/ 
Característica 
LZW Huffman RLE Aritmética Gzip 
Basados en 
TDC 
Basadas 
en 
wavelets 
Memoria Baja Alta Muy baja Media Baja Media Baja 
Tasa de 
compresión 
Media Media Baja - Media Baja - Media Media Media - Alta Alta 
Operaciones 
complejas 
No 
Construcción 
árbol 
No Punto flotante No Algunos casos 
Algunos 
casos 
Tipo imágenes 
Colores 
uniformes 
Colores 
uniformes 
Colores 
uniformes 
Tonos 
continuos 
Colores 
uniformes 
No tan 
importante 
Casi 
cualquier 
tipo 
Codificación de 
regiones de 
interés (ROI) 
NA NA NA NA NA NA Si 
Manejo de 
errores 
NA NA NA NA Si NA Si 
Con pérdida de 
información 
NA NA NA NA NA Si Si 
Sin pérdida de 
información 
Si Si Si Si Si Si Si 
Figura 1.3. Cuadro comparativo de los diferentes métodos de compresión existentes en la 
actualidad. 
 
 
ESIME Zacatenco 
 
7 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
CAPITULO II 
MÉTODOS DE COMPRESIÓN DE IMAGENES 
Teoría de imágenes y colores. 
→ Resolución. 
Las dimensiones en píxeles de las imágenes de mapa de bits son una medida 
del número de píxeles de altura y anchura de la imagen. La resolución es la 
precisión del detalle en las imágenes de mapa de bits, que se mide en píxeles 
por pulgada (PPP). Cuantos más píxeles por pulgada tenga una imagen, mayor 
es su resolución. En general, las imágenes con mayor resolución producen una 
calidad de impresión mejor. En la figura 2.1, se muestra la comparación de dos 
imágenes con diferente resolución. 
 
Figura 2.1. Imagen idéntica con 72ppp (izquierda) y 300ppp (derecha). 
Si se hace un zoom a 200%, se ve que la imagen de la derecha presenta una 
mejor resolución por contener más puntos por Pixel. 
 
 
ESIME Zacatenco 
 
8 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
→ Modelos de color. 
Una imagen está representada en una tabla bidimensional en la que una celda 
es un Pixel. El proceso para representar una imagen digital es crear una tabla 
de píxeles en la que cada celda contiene un valor. El valor almacenado en cada 
celda de esta tabla se codifica en un determinado número de bits que 
determinan el color o la intensidad del Pixel y se lo denomina profundidad de 
codificación. Existen varios estándares de profundidad de codificación: 
 Mapa de bits blanco y negro. Si se almacena un bit en cada celda, se 
pueden definir dos colores: negro o blanco. 
 Mapa de bits con 16 colores o 16 niveles de gris. Si se almacenan 4 
bits en cada celda, se pueden definir 24 intensidades por cada Pixel, es 
decir, 16 grados de gris desde el negro al blanco o 16 colores diferentes. 
 Mapa de bits con 256 colores o 256 niveles de gris. Si se almacena 8 
bits (equivalente a un byte) en cada celda, se pueden definir 28 
intensidades, es decir, 256 grados de gris desde el negro al blanco o 256 
colores diferentes. 
 Mapa de colores de paleta de colores. Se puede definir una paleta de 
colores, o tabla de colores, con todos los colores que puede contener 
una imagen, para los cuales hay un índice asociado en cada caso. El 
número de bits reservados para la codificación de cada índice de la 
paleta determina el número de colores que pueden utilizarse. 
Por lo tanto, cuando se codifican los índices en 8 bits, se pueden definir 
256 colores disponibles como se vio en el ejemplo anterior; es decir, 
cada celda de la tabla bidimensional que representa la imagen contiene 
un número que indica el índice del color que se utilizará. A la imagen 
cuyos colores estén codificados según esta técnica se la denomina 
imagen de color indexado. 
 
ESIME Zacatenco 
 
9 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 "Colores verdaderos" o "Colores reales". Esta representación permite 
que se represente una imagen al definir cada componente (RGB, 
acrónimo en inglés de Rojo Verde y Azul). Las imágenes RGB utilizan 
tres colores o canales para reproducir los colores en la pantalla. Cada 
Pixel está representado por uno de estos tres componentes, cada uno 
codificado en un byte, obteniéndose en total 24 bits que pueden definir 
224 intensidades que corresponden a 16 millones de colores. 
También es posible agregar un cuarto componente, para poder agregar 
información relacionada con la transparencia o la textura, haciendo que 
la imagen sea más “suave”; en este caso cada Pixel estará codificado en 
32 bits. 
Métodos de compresión de imágenes. 
Los métodos de compresión más usados en la actualidad se mencionan a 
continuación: 
→ Código Huffman. 
Desarrollo del método. El código Huffman enuncia que la longitud de cada 
código no es idéntica para todos los símbolos: se asignan códigos cortos a los 
símbolos utilizados con más frecuencia (los que aparecen más a menudo), 
mientras que los símbolos menos frecuentes reciben códigos binarios más 
largos. La expresión Código de Longitud Variable (VLC) se utiliza para indicar 
este tipo de código porque ningún código es el prefijo de otro. De este modo, la 
sucesión final de códigos con longitudes variables será en promedio más 
pequeña que la obtenida con códigos de longitudes constantes. 
El codificador Huffman crea una estructura arbórea ordenada con todos los 
símbolos y la frecuencia con que aparecen. Las ramas se construyen en forma 
recursiva comenzando con los símbolos menos frecuentes. 
 
ESIME Zacatenco 
 
10 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
La construcción del árbol se realiza ordenando en primer lugar los símbolos 
según la frecuencia de aparición. Los dos símbolos con menor frecuencia de 
aparición se eliminan sucesivamente de la lista y se conectan a un nodo cuyo 
peso es iguala la suma de la frecuencia de los dos símbolos. El símbolo con 
menor peso es asignado a la rama 1, el otro a la rama 0 y así sucesivamente, 
considerando cada nodo formado como un símbolo nuevo, hasta que se obtiene 
un nodo principal llamado raíz. 
El código de cada símbolo corresponde a la sucesión de códigos en el camino, 
comenzando desde este carácter hasta la raíz. De esta manera, cuanto más 
dentro del árbol esté el símbolo, más largo será el código. 
Como ejemplo, se tiene la oración: "COMMENT_CA_MARHE"; tal como se 
muestra en la figura 2.2 muestra las frecuencias de aparición de las letras. 
 
M A C E _ H O N T R 
3 2 2 2 2 1 1 1 1 1 
Figura 2.2. Frecuencia de aparición de las letras del ejemplo citado para explicación del código 
Huffman. 
 
En la figura 2.3 se muestra el árbol correspondiente a este ejemplo en base a la 
figura 2.2. 
 
ESIME Zacatenco 
 
11 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Figura 2.3. Árbol correspondiente al ejemplo del figura 2.1. 
Los códigos correspondientes a cada carácter son tales que los códigos para 
los caracteres más frecuentes son cortos y los correspondientes a los símbolos 
menos frecuentes son largos. Esto se puede apreciar mejor si se ve la figura 
2.4. 
M A C E _ H O N T R 
00 100 110 010 011 1110 1111 1010 10110 10111 
Figura 2.4. Paso final del código Huffman. 
Las compresiones basadas en este tipo de código producen buenas 
proporciones de compresión, en particular, para las imágenes monocromáticas 
(faxes, por ejemplo). Se utiliza especialmente en las recomendaciones T4 y T5 
utilizadas en ITU-T. 
Sin embargo, tiene el defecto de que depende del diccionario que se crea para 
la descompresión de la imagen. Sin este, este método no puede funcionar. 
→JPEG. 
El Joint Photographic Experts Group (cuyas siglas en inglés significan Grupo 
Mixto de Expertos Fotográficos), mejor conocido como JPEG, es el método de 
 
ESIME Zacatenco 
 
12 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
compresión más utilizado actualmente para la compresión de imágenes con 
pérdida. Este método utiliza la transformada discreta del coseno5 (DCT), que se 
calcula empleando números enteros, por lo que se aprovecha de algoritmos de 
computación veloces. El JPEG consigue una compresión ajustable a la calidad 
de la imagen que se desea reconstruir. 
Definición de la transformada discreta del coseno. La imagen de entrada es 
dividida en bloques de NxN píxeles. El tamaño del bloque se escoge 
considerando los requisitos de compresión y la calidad de la imagen. En 
general, a medida que el tamaño del bloque es mayor, la relación de 
compresión también resulta mayor. Esto se debe a que se utilizan más píxeles 
para eliminar las redundancias. Pero al aumentar demasiado el tamaño del 
bloque la suposición de que las características de la imagen se conservan 
constantes no se cumple, y ocurren algunas degradaciones de la imagen, como 
bordes sin definir. Los resultados en la experimentación han demostrado que el 
tamaño del bloque más conveniente es de 8x8 píxeles. 
Cuantificación de los coeficientes de la transformada discreta del coseno. Los 
coeficientes de la transformada son cuantificados en base a un nivel de umbral 
para obtener el mayor número de ceros posibles. Para la cuantificación se 
utiliza una matriz de normalización estándar, y se redondean los resultados a 
números enteros. Este es el proceso donde se produce la pérdida de 
información. El paso siguiente consiste en reordenar en zigzag la matriz de 
coeficientes cuantificados. Ver figura 2.5. 
 
5
 La transformada de coseno discreta (DCT del inglés Discrete Cosine Transform) es una transformada 
basada en la Transformada de Fourier discreta, pero utilizando únicamente números reales. Ver glosario. 
http://es.wikipedia.org/wiki/Transformada_de_Fourier_discreta
 
ESIME Zacatenco 
 
13 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Figura 2.5. Recorrido en zig-zag de la matriz de coeficientes cuantificados. 
Proceso de codificación. Si se codifica con una longitud variable los 
coeficientes, la imagen se puede comprimir aún más. El codificador más 
utilizado es el algoritmo de Huffman, que se encarga de transmitir los 
coeficientes ordenados. Esto es debido a su facilidad de uso. Para comprimir 
los símbolos de los datos, el codificador de Huffman crea códigos más cortos 
para símbolos que se repiten frecuentemente y códigos más largos para 
símbolos que ocurren con menor frecuencia. 
Sin embargo, el precio que se paga cuando se busca una alta compresión es 
una degradación considerable en la calidad de la imagen reconstruida. Por ese 
motivo, esta técnica de compresión no es muy apropiada para el tratamiento 
de las imágenes médicas, donde la calidad ha de conservarse dentro de unos 
márgenes de fiabilidad, además de ser inútil cuando se pretende guardar con 
este formato dibujos con grandes extensiones de colores planos y uniformes o 
con bordes muy definidos. La figura 2.6 nos muestra la comparación de la 
imagen original en contraste a la imagen comprimida con este método. 
 
ESIME Zacatenco 
 
14 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Imagen sin comprimir. 
 
 
 
Imagen comprimida con JPEG. 
 
Figura 2.6. Ejemplo de compresión de imágenes utilizando el método de JPEG. 
→EZW (Embedded Zerotree Wavelet). 
Definición. El método de compresión EZW (Wavelet Zerotree Incrustado) fue 
propuesto por Shapiro en 1993. Este método explota las propiedades aportadas 
por la DWT6 para obtener resultados satisfactorios en la compresión: un gran 
porcentaje de coeficientes wavelets7 próximos a cero y la agrupación de la 
energía de la imagen. Este método permite una compresión progresiva 
conocida como embedded coding (Código Incrustado) de la imagen debido a 
que cuantos más bits se añadan al resultado de la compresión, más detalles se 
estarán transmitiendo. 
Incrustación. La implementación del EZW se realiza mediante el algoritmo de 
incrustación definido por Shapiro. El algoritmo de incrustación cuantifica los 
coeficientes wavelet de la imagen en pasos dados por potencias de dos, 
 
6
 La transformada wavelet (de sus siglas en inglés Discrete Wavelet Transform) es un tipo especial de 
transformada de Fourier que representa una señal en términos de versiones trasladadas y dilatadas de 
una onda finita. Ver glosario. 
7
 Un wavelet es una onda cuya oscilación comienza en cero, aumenta y disminuye a cero nuevamente. 
Ver glosario. 
http://es.wikipedia.org/wiki/Transformada_de_Fourier
 
ESIME Zacatenco 
 
15 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
reduciéndose progresivamente en sucesivas iteraciones. La primera operación 
a realizar consiste en calcular el umbral de partida n (primer paso). Para 
entender esto, ver figura 2.7. 
 
Figura 2.7. Calculo del umbral de partida. 
Construcción del mapa de significancias. A continuación, se construye un mapa 
de significancias (zerotrees8) basado en la búsqueda de los coeficientes 
mayores o iguales al umbral determinado en el paso anterior. Ver figura 2.8. 
 
Figura 2.8. Búsqueda de los coeficientes mayores o iguales al umbral para la compresión de 
una imagen usando EZW. 
Refinamiento. El siguiente proceso se denomina refinamiento. Consiste en la 
transmisión de los bits de todos los coeficientes detectados en los pasos 
previos. Este proceso se repite disminuyendo el umbral hasta alcanzar el 
umbral cero. 
 
8
 El zerotree se basa en la hipótesis de que si el coeficiente de un wavelet es insignificante con respecto a 
un umbral, entonces todos los coeficientes wavelet de la misma orientación en la misma ubicación 
espacialen la escala más fina, es probable que sean insignificantes con respecto al mismo umbral. Ver 
glosario. 
 
ESIME Zacatenco 
 
16 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
Zerotree. La información sobre la significancia de los coeficientes wavelet* 
(mapas de significancias) se almacenan en unas estructuras denominadas 
zerotrees. 
 
Figura 2.9. Recorrido por la matriz de coeficientes wavelet en diferentes sub-bandas. 
La estructura zerotree agrupa los coeficientes de cuatro en cuatro: cada 
coeficiente tiene cuatro hijos, cada uno los cuales tiene sus propios cuatro hijos 
y así sucesivamente. Por lo general, los hijos tienen unas magnitudes menores 
que las de sus padres. 
El método EZW aprovecha esta organización basada en el hecho de que los 
coeficientes wavelet disminuyen a medida que aumenta la escala. Así se puede 
garantizar que los coeficientes de un quadtree9 son más pequeños que el 
umbral de estudio, si su padre es más pequeño que el umbral antes 
mencionado. El EZW transmite el valor de los coeficientes en orden 
decreciente. El recorrido de la matriz de coeficientes se realiza en zig-zag 
transmitiendo el n-ésimo bit más significativo en cada pasada. 
Para entender mejor el concepto explicado con anterioridad, ver figura 2.10. 
 
9
 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. Ver 
glosario 
http://es.wikipedia.org/wiki/Estructuras_de_datos
 
ESIME Zacatenco 
 
17 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Figura 2.10. Recorrido en zigzag que realiza EZW. 
Como se aprecia, al hacer el recorrido en zigzag se etiquetan los coeficientes 
de la siguiente manera: R, si el coeficiente es menor que el umbral de estudio, I, 
si el coeficiente es menor que el umbral pero tiene descendientes con valores 
dentro del rango de estudio (isolated zero), y P, cuando está dentro del rango y 
es positivo o N si es negativo. 
El método de compresión EZW para la compresión de imágenes ofrece unos 
muy buenos resultados, esto es, altas tasas de compresión con una calidad de 
imagen aceptable. 
Una variación del EZW es el algoritmo de compresión SPIHT, el cual se 
procede a explicar a continuación. 
→SPIHT. 
Definición. El SPIHT ofrece una nueva y mejor implementación del EZW basada 
en la utilización de conjuntos de datos organizados en árboles jerárquicos. Ver 
figura 2.11. 
 
ESIME Zacatenco 
 
18 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Figura 2.11. Coeficientes wavelet organizados en árboles jerárquicos. 
Al igual que el EZW, el SPIHT transforma mediante la DWT la imagen a 
comprimir, y organiza los coeficientes wavelet resultantes en árboles de 
orientación espacial. 
Cuantificación. Los coeficientes wavelet obtenidos mediante la transformada 
wavelet discreta son valores reales, que se convertirán a enteros mediante una 
cuantificación. Además, la representación interna del ordenador exige un 
número finito de bits por coeficiente, lo que supone una cuantificación fina. 
Hay que escoger el método más eficaz de cuantificación ya que en este 
proceso se pierde parte de la información, por corresponder a los métodos de 
compresión de imágenes con perdidas. 
En la figura 2.12 podemos observar un esquema de los procedimientos que 
este método realiza. 
 
ESIME Zacatenco 
 
19 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Figura 2.12 Esquema del método de compresión SPIHT. 
Proceso de codificación. El primer paso para la codificación consiste en la 
creación de un mapa de significancia por cada umbral de estudio. Dicho mapa 
contendrá información sobre si un coeficiente está dentro del umbral de estudio 
o no. El mapa de significancia se obtiene empleando los árboles de orientación 
espacial (relación de herencia entre los coeficientes wavelet) y transmitiendo la 
significancia de hijos a padres. 
El primer umbral viene determinado por el bit más significativo del coeficiente 
mayor en valor absoluto. En las etapas sucesivas basta con decrementar este 
umbral de uno en uno. 
El siguiente paso consiste en la transmisión de bits significativos mediante dos 
operaciones de ordenación y refinamiento. 
Para la implementación del algoritmo se usan tres listas: lista de píxeles no 
significativos (LIP), lista de píxeles significativos (LSP) y lista de coordenadas 
no significativas (LIS). Al final de cada paso de ordenación, LSP contiene las 
coordenadas de todos los píxeles significativos para el umbral n 
correspondiente. Como se puede comprobar, también incluye los coeficientes 
hallados en pasos anteriores. Las entradas de LIS son coordenadas de píxeles 
junto con una marca de tipo A o B. La marca es de tipo A cuando representa a 
todos sus descendientes y de tipo B cuando representa a todos los 
descendientes a partir de los nietos. 
 
ESIME Zacatenco 
 
20 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
Inicialización y ordenación. En el paso de inicialización n (el umbral inicial) toma 
el valor más próximo a una potencia de dos, obtenido de la matriz de 
coeficientes (el mayor coeficiente en valor absoluto). LSP está vacía, LIP toma 
las coordenadas de los píxeles de nivel más alto y LIS las coordenadas de los 
píxeles raíz como tipo A. 
La ordenación consiste en verificar si cada entrada de tipo A en LIP es o no 
significante para el n actual. Si lo es se trasmite un uno, además del signo del 
Pixel, para luego mover sus coordenadas a LSP. Si no es significativo se 
trasmite un cero. 
A continuación se comprueba la significancia de la descendencia de cada 
entrada de LIS: 
→ Si no se halla una significancia se trasmite un cero, en caso contrario un uno 
y, de nuevo, se comprueba la significancia de cada miembro de su 
descendencia. 
→ Si lo es se añade a LSP a la vez que se trasmite su signo, y si no, se añade 
a LIP y se transmite un cero. 
→ Si ese Pixel dispone de más descendientes (nietos en adelante), se colocan 
sus coordenadas al final de LIS y se marca como tipo B. 
Por el contrario, si la entrada LIS es de tipo B, se comprueba si tiene 
descendientes significativos a partir de los nietos (incluidos). Si se confirma se 
transmite un uno y se añaden sus coordenadas correspondientes al final de LIS 
marcadas como tipo A. En el caso contrario se transmite un cero y se eliminan 
sus coordenadas de LIS. Las entradas añadidas a LIS no se tienen en cuenta 
en la etapa posterior de refinamiento. 
Refinamiento y empaquetado. El refinamiento consiste en evaluar los 
componentes de LSP introducidos en las pasadas anteriores, enviando el 
enésimo bit más significativo. Por último se decrementa el umbral en uno y se 
 
ESIME Zacatenco 
 
21 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
vuelve al paso de ordenación. El ciclo se repite hasta alcanzar el umbral cero 
(incluido). 
El resultado del algoritmo consiste en un vector compuesto por ceros y unos, 
que serán empaquetados y almacenados en un fichero con extensión RAW. El 
número de elementos de este mapa determina el factor de compresión 
proporcionado por el algoritmo para la imagen dada. 
→ RLE 
Definición. El método de compresión RLE (Run Length Encoding, a veces 
escrito RLC por Run Length Coding cuyas siglas significa Código de Manejo de 
Longitud) es utilizado por muchos formatos de imagen (BMP, PCX, TIFF). 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, como ejemplo, 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%, el cual es un porcentaje 
pésimo. 
Reglas del RLE. La compresión RLE está regida por reglas particulares que 
permiten que se ejecute la compresión cuando sea necesario y que se deje la 
cadena como está cuando la compresión genere pérdida. Las reglas son las 
siguientes: 
 
ESIME Zacatenco 
 
22 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 Si se repiten tres o más elementos consecutivamente, se utiliza el 
método de compresión RLE. 
 De lo contrario, se inserta un carácter de control (00) seguido del número 
de elementos de la cadena no comprimida y después la última. 
 Si el número de elementos de la cadena es extraño, se agrega el 
carácter de control (00) al final. 
 Finalmente, se definen los caracteres de control específicos según el 
código: 
o Un final de línea (00 01). Ver figura 2.13 a. 
o El final de la imagen (00 00). Ver figura 2.13 b. 
o Un desplazamiento de puntero sobre la imagen de XX columnas e 
YY filas en la dirección de lectura (00 02 XX YY). Ver figura 2.13 c. 
Por lo tanto, no tiene sentido utilizar la compresión RLE excepto para datos con 
diversos elementos repetidos de forma consecutiva, en imágenes particulares 
con áreas grandes y uniformes. 
Sin embargo, la ventaja de este método es que es de fácil implementación. 
Existen alternativas en las que la imagen está codificada en bloques de píxeles, 
en filas o incluso en zigzag, tal y como se aprecia en la figura 2.13 d. 
Este problema origina que la compresión genere archivos incluso de mayor 
tamaño que el archivo original. 
 
ESIME Zacatenco 
 
23 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
Figura 2.13. Ejemplificación del proceso que realiza la compresión a través de RLE. 
→ LZW 
Definición. El método LZW es un algoritmo muy rápido tanto para la compresión 
como para la descompresión, basado en la multiplicidad de aparición de 
secuencias de caracteres en la cadena que se debe codificar. Su principio 
consiste en sustituir patrones con un código de índice y construir 
progresivamente un diccionario. 
 
ESIME Zacatenco 
 
24 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
Además, funciona en bits y no en bytes, por lo tanto, no depende de la manera 
en que el procesador codifica información. Es uno de los algoritmos más 
populares y se utiliza particularmente en formatos TIFF y GIF. Dado que el 
método de compresión LZW ha sido patentado por Unisys, el que se utiliza en 
imágenes PNG es el algoritmo LZ77, por el que no se pagan derechos de autor. 
 
Figura 2.14. Comportamiento del algoritmo LZ: # 3 2 significa retroceder tres píxeles y repetir 
dos; # 12 7 significa retroceder 12 píxeles y repetir siete. 
Procedimiento: construcción del diccionario. El diccionario comienza con los 
256 valores de la tabla ASCII. El archivo a comprimir se divide en cadenas de 
bytes (por lo tanto, para las imágenes monocromáticas codificadas en 1 bit, esta 
compresión no es muy eficaz), cada una de estas cadenas se compara con el 
diccionario y se agrega si no se encuentra ahí. 
Proceso de compresión. El algoritmo pasa por la cadena de información y la 
codifica. Si una cadena nunca es más corta que la palabra más larga del 
diccionario, ésta se transmite. 
Al igual que el método Huffman presenta la desventaja de que si se llega a 
perder el diccionario creado, este método es inútil 
 
 
ESIME Zacatenco 
 
25 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
CAPITULO III 
 
MÉTODO DE RECORRIDOS SOBRE UNA IMAGEN 
Este algoritmo realiza la compresión de una imagen sin presentar pérdidas. Se 
distingue de los demás métodos en que, la compresión se obtiene de la forma 
en que los datos de la imagen original son guardados. Así, el algoritmo es 
capaz de descomprimir la imagen sin que ésta presente pérdida de información. 
Este método es conocido como recorridos sobre la imagen (RSM). 
El principio de funcionamiento de esta técnica, se desglosa a continuación: 
→ Obtener los datos de la imagen: dimensiones de la imagen, el número 
de colores de la imagen, número de píxeles, número de bits por Pixel y 
los colores de la imagen. Este paso lo ejecuta, haciéndose un escaneo 
sobre la imagen. 
→ Almacenamiento de la información. El algoritmo crea un vector 
llamado CADENA, el cual sirve como auxiliar para almacenar los datos 
obtenidos del escaneo hecho sobre la imagen. 
→ Archivos *.DAT. La información almacenada en CADENA es guardada 
en archivos (FILES) con formato en binario (extensión .DAT). Los datos 
obtenidos se guardan en este formato para ser leídos y procesados por 
la computadora en el proceso de descompresión. 
→ Descompresión. Los archivos en formato binario son leídos por la 
maquina y acomodados en la forma en la que fueron obtenidos. Sin 
embargo, dependiendo del tamaño del bit más significativo de cada 
archivo, será la representación de cada uno de los demás valores 
almacenado en el. 
Por ejemplo, si en el archivo dimesiones_de_la_imagen.DAT, el bit más 
significativo corresponde al número 15, todos los datos almacenados 
únicamente en ese archivo serán de 4 bits, por que se necesitan 4 bits para 
 
ESIME Zacatenco 
 
26 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
representar al número 15 en binario. Este mismo procedimiento se realiza con 
los demás archivos. 
Debido a la manera en que la información de la imagen es guardada y en la 
forma en que es colocada sobre la imagen descomprimida, el tamaño de la 
imagen se reduce considerablemente, no teniendo pérdida alguna. 
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 
 
27 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
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 deuno 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 
 
28 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
29 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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. 
 
Figura 3.4. Obtención de los datos de la imagen a comprimir. 
 
 
ESIME Zacatenco 
 
30 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
color, en CADENA el algoritmo cuenta la posición en donde se localiza el color 
 
ESIME Zacatenco 
 
31 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
32 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
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 
 
33 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 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 
 
34 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
glosario 
 
ESIME Zacatenco 
 
35 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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, lostextboxes 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 
 
36 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
37 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
38 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
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 
 
39 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
 
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 
 
40 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
 
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 
 
41 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
CAPÍTULO IV 
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. 
 
 
Figura 4.1. Compresión de una imagen de alta resolución con 2385 colores. 
 
ESIME Zacatenco 
 
42 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
43 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
44 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
45 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
46 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
47 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
48 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
49 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
50 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
51 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
52 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
53 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
54 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
55 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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. 
 
http://es.wikipedia.org/wiki/Codificaci%C3%B3n_Huffman
http://es.wikipedia.org/wiki/Fax
http://es.wikipedia.org/wiki/M%C3%B3dem
http://es.wikipedia.org/wiki/Red_de_computadoras
http://es.wikipedia.org/wiki/Televisi%C3%B3n
 
ESIME Zacatenco 
 
56 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
→ 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 
 
57 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
58 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
59 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
{ 
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 
 
60 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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) 
 
SetPixel(POSICIÓN x, POSICIÓN y, Color) 
 
 
ESIME Zacatenco 
 
61 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
 
Es la forma más típicamente utilizada 
 
ESIME Zacatenco 
 
62 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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: 
http://es.wikipedia.org/wiki/An%C3%A1lisis_arm%C3%B3nico
http://es.wikipedia.org/wiki/FIR
 
ESIME Zacatenco 
 
63 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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 
 
64 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS. 
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

Otros materiales