Title: Visualizador de imgenes remotas
1Visualizador de imágenes remotas
- Alumno Juan Pablo García Ortíz
Director Vicente Gonzalez Ruiz
2Descripción del entorno
Lo que se persigue es implementar un sistema que
nos permita transmitir imágenes astronómicas de
gran tamaño almacenadas en un servidor y que un
cliente que se conecte pueda visualizarlas en un
tiempo mínimo y de manera progresiva. El servidor
correrá en una maquina con un sistema operativo
con arquitectura UNIX (en nuestro caso
Solaris). La arquitectura bajo la cual se
ejecutará el cliente no tiene por qué ser única.
3Principales inconvenientes
- Imágenes a transmitir de gran tamaño (1024x1024,
...) - Conexión cliente-servidor a través de Internet
- Arquitectura del cliente variable
- Transmisión progresiva de la imagen
4Solución adoptada
- Algoritmo de compresión/descompresión SPIHT para
poder transmitir progresivamente las imágenes de
manera eficiente. - Java como lenguaje para la implementación del
cliente, asegurandonos que éste sea
multiplataforma. - El servidor será implementado en C para obtener
una mayor potencia y un amplio soporte por parte
del sistema operativo donde se va a ejecutar
(Solaris)
5Algoritmo de compresión SPIHT
El algoritmo SPIHT (Set Partitioning in
Hierarchical Trees) fue expuesto por Amir Said y
William A. Pearlman en IEEE Transactions on
Circuits and Systems for Video Technology,
Volumen 6 de Junio de 1996. Este algoritmo nos
permite transmitir progresivamente la imagen bit
a bit, de manera que es posible mostrar una
imagen completa que será mas reconocible conforme
mas datos se reciban. En la mayoría de los casos,
con el 1 de la imagen (ya comprimida) que se
transmita, ya es posible mostrar en el cliente
una imagen perfectamente reconocible.
6Programa servidor en C
La elección del lenguaje C es siempre una buena
elección para cualquier desarrollo debido a su
gran potencia y flexibilidad. En nuestro caso, al
ser el sistema operativo tipo UNIX, su elección
viene mas que justificada. La mayoría de estos
sistemas operativos están desarrollados en este
lenguaje, por lo que la integración es plena.
Además, suelen proveer un amplio soporte para
este lenguaje (compilador, documentación, etc)
sin necesidad de adquirir herramientas externas
de desarrollo.
7Programa cliente en Java
Java nos asegura que el cliente puede ejecutarse
sobre cualquier plataforma. El problema podría
ser la velocidad de ejecución que presenta, al
ser Java interpretado por una maquina virtual. Un
programa en Java, en el mejor de los casos, puede
alcanzar el 80 de la velocidad del mismo
programa con código nativo, pero en el pero de
los casos, su velocidad puede llegar a ser
extremadamente lenta. Sin embargo, con la
tecnología JIT (Just-In-Time) podemos compilar el
programa en Java y obtener código nativo. Además,
los navegadores actuales poseen ya esta
tecnología.
8Protocolo de comunicación
El servidor se ejecutará en el directorio donde
estén almacenadas las imágenes. Estas imágenes
estarán ya comprimidas con el algoritmo antes
mencionado, y tendrán una extensión .prog para
diferenciarlas del resto de los archivos que
pudiesen existir. El servidor atenderá una sola
petición por conexión realizada, de manera que si
un cliente quisiera bajarse n imágenes, tendría
que realizar n conexiones distintas con el
servidor. El servidor no envía información
adicional para las imágenes, simplemente va
enviando byte a byte el archivo asociado.
9El formato de las imágenes .prog es el siguiente
0
Byte mas significativo del ancho de la imagen
1
Byte menos significativo del ancho de la imagen
2
Byte mas significativo del alto de la imagen
3
Byte menos significativo del alto de la imagen
4
Numero de planos
....
Datos de la imagen
10El servidor acepta tres tipos diferentes de
peticiones
- Petición de imagen el servidor enviara la
imagen completa que solicite el cliente.
Cliente
Servidor
L
E
N
A
0
Imagen no encontrada
0
1
Imagen encontrada
(Datos de la imagen)
11- Petición de directorio el servidor enviará un
porcentaje de cada imagen contenida en el
directorio especificado.
Cliente
Servidor
M
D
I
R
0
Directorio no encontrado
0
2
Porcentaje
msb
lsb
Nombre de la imagen
L
E
N
A
0
Tamaño de la imagen
Directorio encontrado
msb
b2
b3
lsb
Datos de la imagen
....
1
0
12- Petición de jerarquía de directorios el
servidor enviará la jerarquía de directorios que
cuelga del directorio en el que se encuentra.
Cliente
Servidor
1
0
M
D
I
R
0
D
I
R
1
0
....
1
0
....
1
0
13Descripción del programa cliente
El programa cliente está desarrollado con el JDK
1.2.2, pero el código es compatible con versiones
anteriores hasta la 1.1.5. Para la interfaz se
han empleado únicamente los paquetes AWT. No se
han utilizado los paquetes Swing de las JFCs para
asegurar una mayor compatibilidad. No se han
incluido componentes desarrollados por terceras
personas. Todos los componentes no estándar del
programa han sido desarrollados específicamente
para el proyecto. El programa ha sido testado
bajo los entornos gráficos Windows 98 y
X-Windows, con el Internet Explorer 5.0 (solo en
Windows) y Nestcape Navigator 4.5 (en ambos
entornos).
14El programa cliente lleva implementado el
algoritmo de descompresión SPIHT. Para conseguir
la visualización progresiva de una imagen,
tenemos la siguiente implementación
Proceso 1 Va descomprimiendo la imagen
conforme van llegando datos
Datos del servidor
Buffer de la imagen
Proceso 2 Está continuamente mostrando la
imagen en pantalla