Documentación Image Processing APIs - cecilianomeibel/ProyectoI_DatosII Wiki

Breve descripción del problema

Imagine que se encuentra laborando para una empresa importante y se le ha asignado la tarea de desarrollar una aplicación capaz de colocar filtros a una serie de imágenes seleccionadas por un usuario. Para ello se debe hacer uso de un protocolo de comunicación cliente-servidor (sockets) donde el cliente será el encargado de recibir las imágenes y enviarlas al servidor para su respectivo procesamiento. Una vez han sido modificadas, el servidor envía al cliente el resultado final, con el objetivo de que este ultimo sea el que interactúe con el usuario y le muestre la imagen con uno de los filtros elegidos. Para este proyecto en particular se tendrá a disposición del usuario 4 filtros: escala de grises, gaussian blur, control de brillo y corrección gamma.

Además, se le comunica que hay un inconveniente en el sistema, el cual impide enviar la imagen de manera completa, pues el ancho de banda es limitado, una solución a este problema es segmentar la imagen y transmitirla en fragmentos a través del cliente al servidor o viceversa. Lo anterior es posible al emplear un algoritmo de paginación.

El emisor debe enviar la imagen fragmentada y el receptor debe reconstruirla, de forma que se tenga como un solo paquete. Por otro lado, con el fin de desacoplar y generalizar la interacción entre el cliente y el servidor, la comunicación entre ambos módulos se hará a través de APIs, estas interfaces de programación de aplicaciones son módulos de software con una firma definida y se encargan de llevar a cabo una tarea especifica. Finalmente, como garantía de que los APIs aplicados funcionan correctamente y su programación es de calidad, se vuelve necesario generar un conjunto de pruebas unitarias que contrasten los valores resultantes con los valores esperados.

Diagrama de Clases

Diagrama de Clases Server/Cliente

Descripción del funcionamiento del algoritmo de paginación

Para la implementación del funcionamiento del algoritmo de paginación, consiste en que el programa solo recibirá formatos de imágenes, sea jpg, png, bmp, jpeg como input. Para aplicar el algoritmo es necesario que la imagen pase a la conversión de base64 esto permite que al momento de dividir la imagen se posible pasar la imagen en fragmentos reducidos de la imagen en formato base64, cada uno de los fragmentos pasaran por la conexión de cliente a servidor hasta terminar de construir la imagen en base64 para implementar los filtros.

Protocolo de comunicación entre cliente y servidor

El protocolo a utilizar para este proyecto es el protocolo de control de transmisión TCP/IP, el cual funciona mediante una conexión mutua entre cliente y servidor, a través de la red permite que se envíen y reciban flujos de datos de forma simultánea entre ambas partes. Lo que resulta en una comunicación ideal, pues se necesita que el flujo de información sea lo más inmediato posible.

Se opera mediante sockets, de acuerdo con Crespo y Candelas (1998) cada segmento TCP contiene los números de puerto fuente y destino con el fin de identificar la aplicación emisora y la receptora. Estos dos valores, combinados con las direcciones IP fuente y destino, identifican cada conexión de forma única. La combinación de un número de puerto y una dirección IP se conoce como socket. Por tanto, el cuarteto compuesto por la dirección IP del Cliente, el número de puerto del Cliente, la dirección IP del Servidor y el número de puerto del Servidor; forma la pareja de sockets que identifican cada conexión TCP (p.57). Finalmente, se considera confiable, ya que en caso de pérdida de datos se detecta en el momento, permitiendo que la solución pueda realizarse más rápidamente.