instituto politÉcnico nacional · 2017. 12. 13. · vi. esime zacatenco . algoritmo de compresiÓn...
TRANSCRIPT
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 como fondo 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ágenes existen
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 igual a 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.
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.
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 espacial en 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
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 de uno de los colores de la imagen, necesitamos de 8
bits para representar a todos los demás, ya que es la cantidad en bits que se
requieren para representar al 255 en binario (1111 1111).
La figura 3.3 muestra un ejemplo sobre la aplicación de este método.
Supongamos que esta imagen cuenta con 4 colores.
DEFINICIÓN: Sea ф el carácter blanco cuyo valor en
hexadecimal corresponde al 00H.
ESIME Zacatenco
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, los textboxes contendrán el dato o resultado de la imagen, de
acuerdo a la descripción contenida en los labels.
Figura 3.9. Distribución de labels y textboxes.
La figura 3.10 corresponde a un PictureBox con nombre pic113 (para su
fácil uso), sobre el cual se mostrará en pantalla la imagen a comprimir.
Como se puede ver, este recuadro está relacionado con el botón con la
etiqueta “ABRIR UNA IMAGEN NUEVA”, ya que al momento de
presionar dicho botón aparece un cuadro de texto, tal y como se aprecia
en la figura 3.11, con la cual el usuario selecciona la imagen que desea
comprimir.
Para realizar la compresión el usuario sólo debe apretar el botón de
“Realizar Compresión” en el cual, después de apretarlo, el software
13
Ver apéndice A.
ESIME Zacatenco
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.
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:
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 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
65 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS.
espacial en la escala más fina es probable que sea insignificante con respecto
al mismo umbral.
ESIME Zacatenco
66 ALGORITMO DE COMPRESIÓN DE IMAGENES DE ALTA RESOLUCIÓN SIN PÉRDIDAS.
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