Full text
DermaSystem Gestión Informática en Dermatología Juan Luis Álvarez Herradón David Arévalo Ruiz Jesús García Sojo Carlos Marhuenda Palmón Proyecto de la Facultad de Informática Departamento de Ingeniería del Software e Inteligencia Artificial Universidad Complutense de Madrid Trabajo Fin de Grado en Ingeniería Informática e Ingeniería del Software Curso 2013-2014 Director: Gonzalo Pajares Martinsanz Colaboradora: María Guijarro Mata-García Colaboradora externa: Isabel Longo Imedio
Índice Autorización _________________________________________________________________ 1 Resumen ____________________________________________________________________ 2 Palabras clave _______________________________________________________________ 2 Abstract ____________________________________________________________________ 3 Keywords ___________________________________________________________________ 3 Introduction _________________________________________________________________ 4 1. Introducción _______________________________________________________________ 8 1.1. Generalidades _________________________________________________________________ 8 1.2. Planteamiento del sistema _______________________________________________________ 9 1.3. Análisis de la situación actual ____________________________________________________ 10 1.4. Objetivos ____________________________________________________________________ 12 1.5. Organización del trabajo ________________________________________________________ 13 1.6. Contribuciones personales ______________________________________________________ 14 1.6.1. Juan Luis Álvarez Herradón ____________________________________________________________ 14 1.6.2. David Arévalo Ruiz ___________________________________________________________________ 16 1.6.3. Jesús García Sojo ____________________________________________________________________ 19 1.6.4. Carlos Marhuenda Palmón ____________________________________________________________ 21 2. Métodos utilizados en tratamiento de imágenes _________________________________ 23 2.1. Binarización mediante detección de umbral ________________________________________ 24 2.1.1. Selección del umbral _________________________________________________________________ 24 2.1.2. Método de Otsu _____________________________________________________________________ 25 2.2. Histograma __________________________________________________________________ 26 2.2.1. Media _____________________________________________________________________________ 27 2.2.2. Varianza ___________________________________________________________________________ 27 2.2.3. Asimetría __________________________________________________________________________ 27 2.2.4. Energía ____________________________________________________________________________ 27 2.2.5. Entropía ___________________________________________________________________________ 28 3. Análisis y diseño ___________________________________________________________ 28 3.1. Especificación de requisitos _____________________________________________________ 30 3.1.1. Sistema de marcado __________________________________________________________________ 30 3.1.2. Control del sistema de marcado ________________________________________________________ 31 3.1.3. Base de datos _______________________________________________________________________ 31 3.1.4. Autenticación de usuarios _____________________________________________________________ 31
3.1.5. Historial de imágenes_________________________________________________________________ 31 3.1.6. Carga y eliminación de imágenes _______________________________________________________ 32 3.1.7. Tratamiento de imágenes _____________________________________________________________ 32 3.2. Diagrama de casos de uso _______________________________________________________ 32 3.3. Especificación de casos de uso ___________________________________________________ 33 3.3.1. NewPicture _________________________________________________________________________ 34 3.3.2. AnalyzePicture ______________________________________________________________________ 34 3.3.3. ViewTreatedPicture __________________________________________________________________ 35 3.3.4. DeletePicture _______________________________________________________________________ 36 3.3.5. ModifyCommentTreatedPicture ________________________________________________________ 36 3.3.6. ShowHistogram _____________________________________________________________________ 37 3.4. Diseño ______________________________________________________________________ 38 3.4.1 Definición de Patrones ________________________________________________________________ 39 3.4.2 Plataforma y requerimientos derivados para el desarrollo de la aplicación ______________________ 44 3.4.3. Base de Datos _______________________________________________________________________ 45 3.5. Diagrama de Clases ____________________________________________________________ 47 3.6. Diagramas de secuencia ________________________________________________________ 49 3.6.1. Diagrama de secuencia subir imagen al historial del paciente_________________________________ 49 3.6.2 Diagrama de secuencia de analizar imagen ________________________________________________ 51 4. Implementación ___________________________________________________________ 53 4.1. Tecnologías utilizadas __________________________________________________________ 53 4.1.1. Java _______________________________________________________________________________ 53 4.1.2. Java Swing _________________________________________________________________________ 53 4.1.3. Java Advanced Imaging _______________________________________________________________ 53 4.1.4. JCalendar __________________________________________________________________________ 54 4.1.5. JFileChooser ________________________________________________________________________ 54 4.1.6. Hibernate __________________________________________________________________________ 54 4.1.7. Assembla __________________________________________________________________________ 55 4.1.8. IDEs _______________________________________________________________________________ 55 4.1.9. Subclipse ___________________________________________________________________________ 56 4.1.10. Trello _____________________________________________________________________________ 56 4.2. Interfaces ____________________________________________________________________ 56 4.2.1. PatientPictureHistory _________________________________________________________________ 56 4.2.2. PictureProcessingView ________________________________________________________________ 57 4.2.3. TreatedPictureView __________________________________________________________________ 58 4.2.4. PatientViewInfo _____________________________________________________________________ 58 5. Conclusiones y futuro _______________________________________________________ 59 5.1. Conclusiones _________________________________________________________________ 59 5.2. Futuro de la aplicación _________________________________________________________ 60
Conclusions and future work ___________________________________________________ 61 6. Glosario __________________________________________________________________ 63 7. Bibliografía _______________________________________________________________ 64 Anexo _____________________________________________________________________ 65 Manual de usuario ________________________________________________________________ 65 A1. Historial de imágenes ________________________________________________________ 65 A1.1. Agregar una imagen al historial de un paciente. ____________________________________________ 66 A1.2. Borrar una imagen del historial. _________________________________________________________ 67 A1.3. Consultar detalles de imagen. __________________________________________________________ 68 A1.4. Analizar imagen. _____________________________________________________________________ 68 A1.5. Ver el historial de imágenes tratadas. ____________________________________________________ 69 A1.6. Volver a la información del paciente. ____________________________________________________ 70 A2. Analizar imagen de un paciente __________________________________________________ 71 A2.1. Recortar una imagen _________________________________________________________________ 71 A2.2. Procesar una imagen _________________________________________________________________ 74 A2.3. Obtener información de la imagen ______________________________________________________ 76 A2.4. Histograma de la imagen ______________________________________________________________ 78 A2.5. Guardar imagen _____________________________________________________________________ 79 A3. Historial imágenes tratadas ______________________________________________________ 81 A3.1. Volver al historial de imágenes. _________________________________________________________ 82 A3.2. Eliminar imagen tratada. ______________________________________________________________ 83 A3.3. Consultar detalles de imagen tratada. ____________________________________________________ 83
1 Autorización Se autoriza a la Universidad Complutense de Madrid a difundir y utilizar con fines académicos, no comerciales y mencionando expresamente a sus autores, tanto la propia memoria, como el código, la documentación y/o el prototipo desarrollado. Firmado: Juan Luís Álvarez Herradón David Arévalo Ruiz Jesús García Sojo Carlos Marhuenda Palmón
2 Resumen DermaSystem es un proyecto desarrollado como Trabajo de Fin de Grado que ha servido para que sus autores demuestren conocimientos adquiridos en la Ingeniería Informática, llevándolos a la práctica, tras sus años de estudio en la Facultad de Informática de la Universidad Complutense de Madrid. Además les ha dado la oportunidad de trabajar para un cliente real, la Doctora en medicina Dª Isabel Longo Imedio, especialista en Dermatología Médico-Quirúrgica y Venereología en el Hospital Central de la Defensa Gómez Ulla, quien propuso la iniciativa de desarrollar una aplicación de escritorio en la que apoyar sus labores de consulta con los pacientes, no sólo en la administración de los mismos, sino también en los posibles diagnósticos y tratamientos. Con tal propósito DermaSystem, que constituye la continuación de un trabajo previo desarrollado durante el curso anterior, se diseña con una doble funcionalidad intrínseca: a) desarrollar un módulo de gestión de la Base de Datos con fines de almacenamiento y recuperación de información (datos de pacientes, gráficos de diagnóstico e imágenes); b) desarrollo de un módulo de tratamiento de imágenes dermatológicas, que se almacenan en la Base de Datos tanto las originales como las procesadas para su posterior recuperación durante el proceso de consulta de información de pacientes. El principal objetivo fue llegar a cubrir todas las necesidades y requisitos para dicha aplicación, ampliando los ya existentes, con nuevas funcionalidades como el procesamiento de imágenes. La ampliación ha consistido exactamente en la mejora del módulo de gestión de la Base de Datos y el desarrollo completo del módulo de tratamiento de imágenes. Todo sin olvidar la gran importancia de hacer de DermaSystem una aplicación escalable, que pueda ser mejorada y ampliada en el futuro, expandiendo su funcionalidad con fin de convertirse en una herramienta imprescindible en los diagnósticos. Palabras clave Aplicación informática, sistema de marcado, dermatología, Java, Modelo Vista Controlador, programación orientada por eventos, i18n, Hibernate, tratamiento de imágenes, umbral, histograma, método de Otsu.
3 Abstract DermaSystem is a project developed as Final Degree Project that has allowed its authors to demonstrate the knowledge acquired in Computer Science, putting it into practice, after years of study in Facultad de Informática, at Universidad Complutense de Madrid. In addition, it has brought the opportunity to work for an actual client, the Medicine Doctor Ms. Isabel Longo Imedio, specialist in Medical-Surgical Dermatology and Venereology at Hospital Central de la Defensa Gómez Ulla, in Madrid, who suggested the initiative of developing a desktop application to support her work in patient consultation. Not only to have them managed, but also with possible diagnostics and treatments. With that purpose DermaSystem, which is the extension of a previous work developed during the last course, is designed with a twofold functionality: a) development of a database management module to store and recover information (patients’ data, diagnostic graphics and images); b) developments of a module to process dermatologic images, stored in the database, both the original ones and the processed, so they can be recovered during the consults with patients. The main aim was to cover all needs and requirements for this application, extending the previous ones, with new functionalities like image processing. The extension has consisted in the database module improvement and the complete development of the new image processing module. All this without forgetting the immense importance of making DermaSystem scalable, getting improved and extended in the future, expanding its functionality in order to become an essential tool in diagnostic medical. Keywords Computer-based application, marking system, dermatology, Java, Model View Controller, event-driven programming, i18n, Hibernate, image treating, threshold, histogram, Otsu’s method.
4 Introduction This project is an extension of the Final Degree Project started by three of our mates in 2012-2013 course (Llorente-Navarro and col., 2013). Called DermaSystem, it was suggested by Medicine Doctor Ms. Isabel Longo Imedio, specialist in MedicalSurgical Dermatology and Venereology at Hospital Central de la Defensa Gómez Ulla, who provided the initiative of developing a desktop application to support her work in patient consultation. The first version of DermaSystem consisted of Database management with two main roles: administrator and user. Patients’ information was arranged in this database, including diagrams where the possible injuries in different parts of the body were marked with proper symbols and descriptions. This system allowed report generations, as well as report recovery for new editions and information updates. Maintaining the original functionality detailed before, the new version of DermaSystem has evolved towards a new design with new features. In this sense, there are two new improvements. The database management module has been developed with several performances so as to store original images from the patients and also the processed ones, as the information and comments added to each picture. The other new module is able to process the injuries images as a help to diagnostic. The Computer Vision techniques incorporate specific methods from Artificial Intelligence. As the previous version of DermaSystem, this one is open to new functionalities and improvements related to Database and Image Processing modules in the future. The design of this application is based on the requirements in the dermatology area and additional considerations of computational sciences developments. To develop the DermaSystem the following points have been considered: System approach The starting point of this project is its real nature, in dermatology, with a specific use in the hospital. It serves as support in daily dermatology practices. The project fulfills with the requirements provided by the specialist as an end-user. Under these assumptions DermaSystem is designed as a support tool in dermatology, facilitating the daily work. Although DermaSystem has been designed for a specific user, it can be adapted to other medical specialties. In addition to the above, which is the main objective, the system has been designed considering with a high degree of scalability in order to provide the incorporation of new features and functionalities with minimal effort.
5 In short, as mentioned before, the project has been focused on the following issues: DataBase improvement: addition of new functionalities with reference the previous version. Development of a new Image Processing module, with its associated functionalities. Integration of both modules, for data and image management. Current state analysis To carry out this project, it is vital to know the current status of the area to be covered, management in dermatology by computer-based system, while knowing the dynamic of a consult in dermatology. As mentioned before, the main goal of the project is to serve as a tool for the specialist, being mandatory to know the actions in the consult. With such purpose, the specialist is the most appropriate to provide this information. Interviews are appropriate tools to extract the underlying knowledge in the area of Knowledge Engineering (Pajares y Santos, 2005). Considering that the doctor cannot remember each patient’s historical record, DermaSystem provides operability in this way, saving time that can be applied to other activities, such as research or diagnosis. Dermatology is an area where the evolution of injuries is very important, where all details and related data become an important issue. Objectives Based on the above, the main goal of DermaSystem is to facilitate the work of the dermatologist related to patient records. Under this assumption the following objective arises: Develop a computer-based application to view the logs with maximum ease. The starting point is the previous version of DermaSystem (Llorente-Navarro y col. 2013) with a similar approach and a Database. In the version described in this paper its robustness is to be improved, while new functionalities have been developed to store the information from the images. In dermatology the evolution of injuries along the time must be studied and analysed. Image processing techniques provide functionalities to facilitate this.
12 1.4. Objetivos Reiterando lo ya mencionado previamente, la razón por la cual ha surgido la idea de la aplicación DermaSystem no es otra que la de facilitar el trabajo de los médicos, y más concretamente de los dermatólogos, durante las consultas con sus pacientes, resolviendo los problemas que puedan surgir a la hora de obtener el historial del paciente o de documentar el análisis realizado durante la consulta, por lo tanto, se pretende lo siguiente: Desarrollar una aplicación informática en dermatología que facilite el tratamiento de la información del paciente, haciendo que el médico pueda revisar el historial médico del paciente durante la consulta, a la vez que añadir las anotaciones convenientes con respecto al tratamiento. Se parte de la versión inicial desarrollada previamente (Llorente-Navarro y col. 2013), que ya contenía un planteamiento y diseño de la Base de Datos. En este caso se trata de mejorar su robustez a la vez que se han diseñado nuevas estructuras para la incorporación de la información procedentes de las imágenes, así como las imágenes mismas. En un área como la dermatología, donde las lesiones y manchas del paciente aparecen en la piel, por lo que están a simple vista, y que evolucionan a lo largo del tiempo, surge de manera natural la necesidad de analizar y documentar esas lesiones y manchas por medio de imágenes. A su vez, con la integración de los sistemas informáticos en las consultas, resulta natural aprovechar el potencial relativo al procesamiento de imágenes digitales que pueden ofrecer los programas específicos desarrollados a tal efecto, con el fin de simplificar de proporcionar toda la información subyacente posible para facilitar el diagnóstico y su posterior tratamiento. Dicho esto, se plantea: Añadir un módulo de tratamiento de imágenes, no desarrollado en la primera versión de DermaSystem, que sirve de apoyo para analizar la evolución de las lesiones y manchas dermatológicas presentes en el paciente. El módulo permitirá seleccionar el área concreta de una imagen a analizar y utilizarla para todas las imágenes de la misma lesión o mancha en el tiempo. Es importante garantizar que el área analizada a lo largo del tiempo sea la misma entre las distintas imágenes que componen la secuencia de una misma zona afectad del paciente. Esto se realiza considerando el tamaño exacto de la lesión o mancha, así como otros datos que permitan conocer el estado de la misma y su evolución a lo largo del tiempo. Se espera la ampliación de este módulo en el futuro con la adhesión de nuevos métodos de tratamiento de imágenes, que permitan extraer mayor información subyacente en las imágenes. Para añadir el citado módulo de tratamiento de imágenes, surge la necesidad de disponer de un sistema de almacenamiento para las imágenes, tanto las originales como las que hayan sido tratadas y analizadas, así como para todos los parámetros y
13 resultados diagnósticos obtenidos mediante dicho análisis. Todo esto desemboca en el siguiente objetivo: Modificar la Base de Datos de la versión original de DermaSystem para adaptarla a las nuevas necesidades surgidas como consecuencia de añadir el módulo de procesamiento de imágenes. Estas necesidades consisten en almacenar en la Base de Datos un número de imágenes relativamente grande, así como la correspondiente información derivada del análisis de cada una de ellas. Al ser DermaSystem una aplicación que maneja datos personales de pacientes, necesita de un sistema de seguridad para que únicamente las personas autorizadas para ello puedan tener acceso a tales datos. Por ello se necesita una base de datos robusta y un sistema de autenticación de usuarios mediante usuario y contraseña. Debido a tal necesidad, se especifican los siguientes objetivos: Continuar con el sistema de autenticación de usuarios mediante nombre de usuario y contraseña. Asegurar la robustez de la base de datos para que la información privada de los pacientes permanezca segura. En resumen, estos son los objetivos planteados para el desarrollo de DermaSystem con el fin de convertirse en una herramienta de apoyo a la gestión y ayuda al diagnóstico en el área de la dermatología, y de esa manera, facilitar la labor del dermatólogo durante la consulta. A lo anterior se añade la necesidad de desarrollar el sistema bajo un entorno amigable para simplificar su uso a la vez que robusto para garantizar su eficiencia. 1.5. Organización del trabajo En esta memoria se presenta de forma detallada cada una de las etapas de desarrollo por las que ha pasado el proyecto. En ellas se puede encontrar la arquitectura y tecnologías utilizadas. También se encuentran detallados los objetivos perseguidos en el desarrollo de DermaSystem para convertirse en una aplicación útil para el propósito planteado y de utilización en un entorno real, surgido de una necesidad igualmente real. El proyecto se ha estructurado de acuerdo a cinco etapas bien diferenciadas, cada una de ellas representa una parte esencial de lo que se considera el ciclo de vida de un proyecto de desarrollo de software:
14 Especificación de requisitos: se detallan los requerimientos indispensables que debía cumplir DermaSystem para ser aceptado por el usuario final. Especificación de casos de uso: donde se precisan las acciones que se pueden llevar a cabo en la aplicación como consecuencia de los procesos de trabajo habituales. Se determinan tanto el camino a seguir para completar la acción, como los usuarios que podrán realizarlas. Diseño: se especifica la arquitectura a utilizar en la aplicación. Se nombran los patrones utilizados y se explica cómo y porqué han sido utilizados. Tecnologías utilizadas: se detallan las tecnologías utilizadas y su función dentro del proyecto. Implementación: se explica el diseño de los distintos componentes de la aplicación, aportando parte del código desarrollado en forma de imágenes y esquemas. Como paso previo al desarrollo de las anteriores etapas, se plantea el capítulo dos, relativo a la descripción de los métodos aplicados en el tratamiento de imágenes. Las etapas anteriores se detallan y concretan a lo largo de las secciones tres y cuatro, que componen una parte importante de la presente memoria. Más específicamente en la sección tres se incluyen los aspectos relativos al análisis y diseño del sistema, donde se contiene el análisis de requisitos, así como los casos de uso y el diseño. La sección cuatro recoge los aspectos relacionados con la implementación. En ellos se incluyen los detalles relativos a las diferentes tecnologías utilizadas. Finalmente la sección cinco contiene las conclusiones más relevantes y el trabajo futuro de cara a las posibles mejoras de la aplicación. Se incluye como Anexo el manual de usuario de la aplicación conteniendo los detalles de aplicación y utilidad de las diferentes funciones disponibles. 1.6. Contribuciones personales 1.6.1. Juan Luis Álvarez Herradón La labor principal de mi contribución al proyecto se centró en el análisis de imágenes, tanto en la parte gráfica como en la parte interna de la aplicación. Así fue decidido en una de las primeras reuniones del grupo, a fin de aligerar la carga cognitiva en el proyecto y centrarse exclusivamente en una parte del mismo. Tras especificar los requisitos de esta ampliación, buena parte del tiempo fue dedicada a la investigación, no solo por formación en tratamiento y procesado de imágenes, sino también en el uso
15 del paquete Java Advanced Imaging (2014) con el que se han llevado a cabo los procesos pesados en el análisis. Este paquete fue recomendado por los directores del proyecto DermaSystem, puesto que ante las diversas opciones en lenguajes de programación para el análisis de imágenes, lo mejor era desarrollarlo en Java, de manera nativa a la aplicación. El trato con este paquete fue especialmente complicado, dada la escasez en documentación que, además, databa de algunos años atrás, e incluso llevando a enlaces que ya habían desaparecido de Internet. Por tanto, hubo que crear proyectos paralelos que se centraron exclusivamente en conocer las clases de JAI, cómo aprovechar su potencial, depurar sus procedimientos y resolver conflictos y problemas que surgieron a la hora de utilizar un paquete relativamente poco documentado. En lo que respecta a formación en análisis de imágenes, partiendo desde cero, invertí tiempo en aprender cómo, y especialmente, por qué se utilizaban diversas operaciones en matrices que contienen una imagen, y qué resultados podía obtener que resultasen de interés para el objetivo principal de esta parte del proyecto. En ello, el profesor Gonzalo Pajares fue de gran ayuda gracias a su experiencia en el campo del tratamiento de imágenes y la Visión por Computador. Parte del trabajo realizado consistió en la comprensión del significado de las rutinas de tratamiento de imágenes aplicadas así como la interpretación de sus resultados en dermatología. Gran parte de esta labor se centró en la realización de diversas pruebas de ensayo y error, no sólo desde el punto de vista de eficiencia de los tratamientos realizados sino de las posibilidades de uso en la aplicación a desarrollar. Más específicamente, analicé las rutinas que se especifican a continuación desde el punto de su especificación y validación: binarización y las transformaciones a escala de grises con y sin JAI, observando qué forma podía ser más adecuada para nuestros objetivos. Tras el análisis, parte de la actividad se centró en considerar el desarrollo de rutinas propias o el uso de las JAI, siempre con tendencia al uso de éstas con el fin de que en el futuro se puedan aplicar los métodos del paquete JAI que se consideren necesarios con vistas a las ampliaciones previstas. Luego de este tiempo de investigación y formación, mi enfoque se trasladó a la implementación en Java de los algoritmos y procesos que se determinaron para la aplicación, considerando cuál sería la metodología a utilizar por el cliente a la hora de llevar a cabo el análisis de las imágenes, es decir, el flujo por el que debería pasar todo proceso de análisis que el usuario desee realizar. Durante la creación de estas herramientas, aprecié detalles puntuales y significativos al hecho de que no sería sencillo decidir qué valor de umbral habría que aplicar a la imagen al comienzo del análisis para capturar correctamente la forma de la mancha o lesión, problema que resolví con la inserción del método de binarización de Otsu (1979), que aprendí y utilicé en la asignatura de Percepción Computacional, de forma tal que el cliente no tuviera que pensar sin conocimiento previo qué valor proporcionar, haciendo el sistema automático por defecto y sólo cambiándose a manual siempre que la imagen tuviera unos patrones concretos o un color muy similar, es decir, como una ayuda externa opcional.
16 Para garantizar que los resultados obtenidos eran fiables, tras la implementación de las funciones tanto propias como de las JAI, y además se correspondían con la algoritmia real de la teoría utilicé MATLAB (The Matworks, 2014), aprovechando sus funciones predefinidas y validadas, así como su potencia computacional para generar los mismos procesos usados en el proyecto. Además de esto, tuve que obtener mediante un desarrollo propio la información que queríamos extraer de la imagen, puesto que la utilización del paquete JAI es demasiado potente o costosa para esta operación. Esto consistió en recorrer la matriz de imagen tratada, y con los píxeles de interés obtener de la imagen original la media, varianza, asimetría, energía y entropía. Con toda esta información, implementé la extracción del histograma de la imagen y, por supuesto, la visualización del mismo en su respectiva vista. Con el resto de valores estadísticos, creé otra vista dedicada a su visualización para cada canal de color, en una tabla, de la misma forma que el área de la lesión dermatológica a tratar procedente de la imagen. Con toda esta implementación terminada, la vista para el análisis de imágenes resultó no haber respetado desde su naturaleza el Modelo Vista Controlador. Por ello, fui el encargado de arreglar este problema y adaptarlo, añadiendo el código y clases necesarios en vista, controlador y modelo para la creación y captura de los eventos nuevos y la nueva forma de mover la información internamente en el programa. No sólo eso, sino que también tuve que adaptar la posible alternancia de idiomas de la aplicación, tanto en inglés como en castellano, ya que el sistema contempla la posibilidad de utilizar estos dos idiomas. Asimismo, integré el nuevo módulo de análisis en el resto de DermaSystem, enlazando las partes ajenas a él, e implementando las llamadas a métodos que se comunican con la base de datos, creados por el resto de miembros del equipo de desarrollo, que se habían dedicado a esta labor. Con ello, terminé resolviendo algunos de los errores de mi parte dedicada del proyecto, surgidos del entramado de la aplicación. Para concluir mi contribución a este proyecto, colaboré en la obtención de los diagramas presentes en esta memoria, así como en lo relativo a la documentación del proyecto. Posteriormente, añadí la introducción en idioma inglés, los casos de uso, la descripción de las interfaces y parte del anexo dedicada al análisis de imágenes en el manual de usuario. 1.6.2. David Arévalo Ruiz Para llevar a cabo las ampliaciones planteadas sobre el proyecto decidimos dividir las tareas en dos grupos principales. Por un lado las tareas asociadas a la ampliación de la base de datos, la conexión desde la aplicación a la base de datos y las interfaces para gestionar el nuevo sistema de imágenes. Por otro lado el tratamiento de imágenes. Yo junto con Carlos me dediqué al primer grupo de tareas. Mis aportaciones al proyecto se podrían resumir en:
17 Resolución de problemas iniciales. Análisis del proyecto heredado. Desarrollo e implementación. Integración de los desarrollos generados a partir de ambos grupos de tareas. Corrección de fallos y depuración. Labores de documentación. Resolución de problemas iniciales. Ya que partíamos de una aplicación heredada lo primero que necesitábamos era conseguir que funcionara todo lo desarrollado hasta ese momento. Para ello necesitábamos reproducir la infraestructura que soportaba la aplicación inicial. En un principio busqué un host online gratuito que permitiera accesos remotos para la base de datos, ya que no teníamos acceso a la usada el año anterior. Tras una búsqueda y pruebas en varios servidores encontré db4free.net. Una vez encontrada la base de datos modifique los archivos de configuración asociados a Hibernate para poder acceder a ella sin problemas. Tras esto al intentar iniciar la aplicación me encontré con el problema de no disponer de las claves de acceso para la aplicación, ya que las existentes en la base de datos estaban encriptadas mediante el algoritmo md5. Deshabilitando el algoritmo de encriptado conseguí acceder al modo de administrador y así crear nuevos usuarios, una vez dados de alta volví a habilitar el cifrado. Entendimiento del proyecto heredado. Para poder realizar las ampliaciones requeridas con base en el proyecto inicial, primero fue necesario un proceso de comprensión de la estructura del proyecto heredado, así como de los patrones y tecnologías empleadas. Además de repasar el código, necesité refrescar mis conocimientos sobre los conceptos acerca de los patrones Modelo-VistaControlador y Singleton, construcción de consultas SQL, manejo de WindowsBuilder. Del estudio del código del proyecto heredado obtuve el punto de integración para nuestra ampliación. Dentro de la clase PatientView podríamos integrar las diferentes vistas como Internal Frames sin alterar la estructura original del proyecto. Desarrollo e implementación. Durante la fase de implementación de las interfaces de usuario y su lógica de negocio asociada, me encargué de mantener el contacto de manera periódica con la
18 colaboradora del proyecto María Guijarro con un continuo asesoramiento en todo lo concerniente a la programación en Java. Al comenzar el desarrollo, primero decidimos reformar la base de datos para incluir las nuevas tablas que nos harían falta. Ambos grupos de desarrollo con el asesoramiento de los directores definimos los requisitos a cumplir por la nueva base de datos. Tras lo cual, Carlos y yo, discutimos diferentes esquemas hasta llegar a una solución de consenso. El diseño de la base de datos resultante es la que se muestra en la figura 8. Para la administración de imágenes que deseábamos integrar en el programa, necesitábamos crear dos interfaces de usuarios que gestionaran los diferentes grupos de imágenes, originales y procesadas. Fui el encargado de desarrollar una versión inicial para ellas, que constaba de un panel central para visualizar la imagen seleccionada y pequeños paneles en el lateral derecho para seleccionar otras posibles imágenes. Se trataba de una vista similar a la que se puede ver actualmente en el diseño final en TreatedPictureView o PictureHistoryView, si bien menos depurada y sin las funcionalidades que éstas aportan. Tras estas actividades, creé el conjunto de clases para soportar la galería de imágenes tratadas, las cuales incluyen: TreatedPicture (pictureProcessing), TreatedPictureView, JDialogPictureDescription TreatedPicture (model), DaoTreated. Además de incluir modificaciones en las clases: PatientView, Controller y Model. Integración de los desarrollos generados a partir de ambos grupos de tareas. Una vez finalizados ambos desarrollos procedimos a integrar el módulo de tratamiento de imágenes en el desarrollo principal. En esta tarea colaboré con Juan Luis para llevar a cabo la integración, de manera similar a como se había hecho con las diferentes galerías de imágenes existentes. Corrección de fallos y depuración. Al final del desarrollo tuve la tarea de revisar el código y corregir diversos errores que fuimos detectando tras la finalización de la fase de integración. Se trataban de diferentes “bugs” que el programa podría generar en secuencias de ejecución menos habituales. Labores de documentación. En cuanto a la elaboración de la memoria, colaboré en la descripción de los casos de uso, en el punto de implementación así como en la obtención de los diferentes diagramas explicativos e imágenes de ejemplo.
19 1.6.3. Jesús García Sojo Actividades previas Al comienzo de un proyecto como este, lo más importante es la organización, saber qué tareas hay que realizar y entonces, dividir el trabajo entre los componentes del grupo. En nuestro caso, realizamos diversas reuniones entre los componentes del equipo y los directores del presente trabajo. En estas reuniones se analizaban los progresos realizados y las futuras acciones a seguir. En las primeras reuniones se establecieron dos campos de trabajo, uno incluía la renovación y adaptación de la Base de Datos a las nuevas necesidades del proyecto y la creación de una interfaz que permitiese el trabajo con imágenes reales de afecciones dermatológicas de los pacientes, así como la gestión de un historial de las mismas. El otro campo de trabajo estaba orientado hacia la investigación en la librería de tratamiento de imágenes JAI, Java Advanced Imaging, la utilización de la misma para aplicar diferentes métodos de tratamiento de imágenes y la implementación de la interfaz que permitiera la realización del análisis de imágenes dentro de la aplicación. Mientras que David y Carlos se hacían cargo del primer campo, Juan Luis y yo comenzamos a trabajar en el segundo. Investigación El primer paso consistió en una investigación conjunta sobre la librería JAI, para ello, comenzamos buscando en la página oficial de las JAI (2014), no sin ciertas dificultades, por la ausencia de actualización de la información disponible, ya que la última correspondía al año 2007 y la mala navegación entre los enlaces (páginas no disponibles). Finalmente, encontramos un tutorial sobre la librería que nos sirvió para estudiar los diferentes métodos disponibles y su posible aplicación para la implementación de los métodos de tratamiento de imágenes que DermaSystem iba a proporcionar. Desarrollo e implementación Tras la investigación sobre las JAI, librería que no habíamos utilizado anteriormente en el Grado de Ingeniería Informática, realizamos la primera de las reuniones con el director del proyecto, Gonzalo Pajares, experto en el campo del tratamiento de imágenes, para concretar qué métodos de tratamiento de imágenes formarían parte de la aplicación, y de esta manera, diseñar también la interfaz de usuario para el tratamiento de las imágenes. Mientras Juan Luis se encargaba de la implementación de los métodos, yo comencé con la interfaz de usuario. Mantuvimos reuniones semanales, con los directores del proyecto para verificar el progreso y establecer nuevas pautas de actuación de cara a la solución de los problemas surgidos hasta el momento, así como en lo relativo a la continuación del proyecto.
20 La interfaz, PictureProcessingView, consta de un panel en el que se muestra una imagen, y dos grupos de controles, uno para la navegación general dentro de la aplicación, y otro para el propio tratamiento de la imagen. El panel contenedor de la imagen, debía cumplir dos funciones, motivo por el cual se utilizan dos paneles diferentes, un Selector y un DisplayJAI, que se muestran según la función a cumplir en ese momento. El Selector proporciona al usuario la posibilidad de recortar la imagen. Para realizar el recorte, el usuario debe clicar sobre una parte de la imagen y desplazar el ratón sin soltarlo hasta tener seleccionada el área deseada. El DisplayJAI muestra tanto la imagen original, recortada o sin recortar, como la imagen obtenida después de realizar el tratamiento correspondiente. El grupo de controles que dirige las tareas que puede realizar el usuario se compone de lo siguiente, cuyo diseño e implementación corrió a mi cargo: Botón de recortar (icono de tijeras), habilita la opción de recortar la imagen. Botón de guardar (icono de disquete), guarda tanto el recorte realizado sobre la imagen como el resultado obtenido tras su análisis. Botón de restaurar original, permite restaurar la imagen original después de realizar un recorte o tras el análisis. Botón de analizar, realiza el tratamiento sobre la imagen. Barra y cuadro de texto, permiten cambiar el umbral aplicado en el tratamiento de la imagen. Botón de información, muestra los datos obtenidos tras el tratamiento de la imagen. Botón de histograma, muestra el histograma de la imagen. Integración Al finalizar el trabajo que cada uno de los grupos tenía asignado, se realizó la integración del módulo de tratamiento de imágenes en el bloque principal de DermaSystem. Con esto se dio por finalizado el código así como la fase de integración. Tareas en las que participé en las partes mencionadas previamente. Documentación Tras la finalización de las partes esenciales de desarrollo e implementación, participé en la documentación de las mismas y recogidas en la presente memoria, en particular en lo que se refiere a la descripción detallada de los métodos que desarrollé.
21 1.6.4. Carlos Marhuenda Palmón El proyecto por sus grandes dimensiones fue fraccionado en dos secciones. Una parte relativa al desarrollo de la aplicación en la plataforma java y otra más centrada en el tratamiento de imágenes. Yo fui asignado a la parte correspondiente a la plataforma java sin perder de vista la del tratamiento de imágenes. Las actividades que realicé durante el desarrollo del proyecto tuvieron una serie de hitos que describo a continuación: Entendimiento del proyecto heredado. Planteamiento de objetivos reales a afrontar en consenso con los profesores directores. Reparto de tareas: diseño e implementación. Reuniones periódicas para trasvase de conocimiento y estado de cada una de las partes. Memoria del proyecto Comprensión del proyecto heredado. El hecho de retomar un proyecto en el que no había colaborado requirió mucha paciencia y esfuerzo por mi parte desde un principio. Uno de mis objetivos iniciales fue entender el proyecto en su globalidad, si bien por la envergadura del mismo tuve que subdividirlo en dos partes. Base de datos: analizando el modelo relacional de la misma y los atributos declarados pude llegar a ver cómo afrontar las ampliaciones reales que pudiéramos plantear. Además de tener que aprender el uso y nomenclatura de hibernate para poder implantar las mejoras previstas y decididas en las reuniones iniciales del proyecto. Modelo Vista Controlador: tomando como referencia el proyecto inicial, a pesar de su envergadura, era posible visualizar claramente las clases pertenecientes a cada una de las secciones de este patrón. Razón por la cual, gran parte de la actividad llevada a cabo en el proyecto se centró en el desarrollo de los componentes relativos a este patrón. El objetivo era impedir la violación de alguna de sus normas con el fin de no perder su modularidad ante posibles ampliaciones futuras. Planteamiento de objetivos reales a afrontar en consenso con los profesores Tras entender el alcance del proyecto, mi idea y la compartida con los directores del proyecto, era avanzar un paso más tomando como referencia la incorporación de imágenes reales al proyecto y a su tratamiento, aplicando funciones y métodos
28 12 0( ( )) L g E P g La energía tiene valor máximo 1 para una imagen con un único nivel de gris y disminuye a medida que aumenta el número de niveles de gris. 2.2.5. Entropía Nos informa también sobre la distribución de los niveles de gris: 1 2 0( )log ( ) L g e P g P g (10) Cuanto mayor es el número de niveles de gris en la imagen mayor es la entropía, esta medida tiende a variar inversamente con la energía. 3. Análisis y diseño Como paso previo a los pasos de análisis y diseño detallados, en la figura 3 se muestra un esquema general de funcionamiento del sistema, exactamente el mismo que el propuesto en Llorente-Navarro y col. (2013). En dicho diagrama se muestran cuatro bloques básicos que constituyen el conjunto del diseño: Interfaz de usuario Gestión de la Aplicación Base de Datos Procesado de imágenes El usuario accede a la aplicación a través de la interfaz de usuario, que envía información hacia el módulo Gestión de la Aplicación procedente de aquel. Tras la realización de los procesos necesarios el usuario recibe la información pertinente como resultado del proceso realizado.
29 Figura 3: Arquitectura del sistema La doble flecha determina la existencia de un trasvase de información e instrucciones en el doble sentido especificado. El módulo Gestión de la Aplicación se encarga de la organización de los procesos, así como de la adquisición de la información procedente bien de la Base de Datos o directamente de las cámaras que capturan las imágenes. La Base de Datos contiene información relativa tanto a pacientes como a la propia gestión del sistema. En el primer caso se trata de datos e imágenes de pacientes con su correspondiente identificación de informes asociados. En el segundo caso, se hace referencia a la gestión de usuarios por parte del administrador del sistema y el acceso de estos mismos usuarios. El módulo identificado como procesado de imágenes, que incluye su captura, es el encargado de la obtención de imágenes a través de las cámaras correspondientes, que fotografían las lesiones de los pacientes. En relación a las fases concretas relativas al análisis y diseño del sistema, éstas se desglosan como sigue: Especificación de requisitos: que incluye la definición de las funcionalidades del sistema en relación a las necesidades reales del usuario. Interfaz de usuario Gestión de la Aplicación Trasvase de información e instrucciones BD Datos de pacientes informes Gestión de usuarios Transferencia de datos
30 Especificación de casos de uso: relativos al establecimiento de la funcionalidad global del sistema. Diseño: que se concreta en el modelo de patrones utilizados, plataforma de implantación, base de datos. Diagramas de clase y secuencia: como parte intrínseca del diseño. 3.1. Especificación de requisitos DermaSystem debe convertirse en la aplicación que, como ya se ha mencionado anteriormente, ayude a los especialistas en dermatología con sus labores diarias en la consulta de cara a la gestión y el diagnóstico de pacientes. Su base de operación consiste en el manejo apropiado y eficiente de los historiales médicos del paciente, y especialmente con el sistema de marcado y análisis de imágenes, según el esquema mostrado en la figura 3. Por sistema de marcado se entiende la funcionalidad orientada a gestionar la parte del sistema encargada de insertar, editar, modificar y eliminar los símbolos específicamente diseñados con el fin de proporcionar una visualización general de la ubicación de las lesiones y manchas de los pacientes y su distribución en el cuerpo. La gestión eficiente de los historiales médicos es parte de la base de datos, así como la gestión de usuarios según su rol respecto de la aplicación, esto es administrador del sistema o médico como usuario normal, incluyendo la autenticación de los mismos. Finalmente, el manejo del historial de las imágenes, la carga y eliminación de las mismas sobre la base de datos, así como la parte relativa al tratamiento de las mismas constituye el tercer aspecto relevante del sistema. Teniendo en cuenta los aspectos anteriores, la especificación de requisitos del sistema está orientada a recoger los aspectos relevantes relacionados con ellos. A continuación se especifican los requisitos teniendo en cuenta el sistema de marcado y su control, la base de datos en relación al manejo de la información, junto con la autenticación de usuarios. Finalmente se incluyen los aspectos relacionados con las imágenes, su historial, la carga y eliminación, así como su tratamiento. 3.1.1. Sistema de marcado Este sistema permite a los dermatólogos poder añadir y eliminar marcas, así como crear comentarios específicos para cada una de ellas. Estas marcas se colocarán
31 sobre imágenes prediseñadas que representen total o parcialmente el cuerpo humano. Además de las marcas, el doctor podrá añadir una descripción detallada propia si lo desea. 3.1.2. Control del sistema de marcado Las marcas quedarán registradas según la fecha y la hora de su creación. En el caso de la eliminación de las marcas, éstas desaparecerán de la imagen en la que fueron creadas, pero todavía aparecerán como parte del historial del paciente, para poder comprobar la evolución de sus lesiones cuando sea necesario. 3.1.3. Base de datos Los datos pertenecientes al historial médico del paciente se almacenarán en una base de datos, concretamente se guardarán: los datos personales, todas las marcas y anotaciones realizadas por el doctor, los datos obtenidos y el área concreta de la imagen analizada, así como el diagnóstico realizado asociado a todas o cada una de las marcas identificadas del paciente. La base de datos necesitará albergar una gran cantidad de datos, así como un elevado número de pacientes, cada uno de ellos a su vez conteniendo un elevado número de imágenes asociadas, es por esto que el diseño de esta base de datos ha sido pensado para ser exportado a un sistema de mayor capacidad y prestaciones, como pueda ser la propia base de datos del Hospital Central de la Defensa Gómez Ulla de Madrid. 3.1.4. Autenticación de usuarios La aplicación dispondrá de un sistema de verificación de usuarios, el cual permitirá a los propios usuarios acceder adquiriendo diferentes roles en el momento de su registro. El rol de administrador permitirá realizar tareas relacionadas con el mantenimiento de la aplicación gestionando el acceso de los usuarios. El dermatólogo desempeñará el rol de usuario habitual, el cual se limita a utilizar la aplicación para los propósitos para los que ha sido creada. 3.1.5. Historial de imágenes Resulta interesante disponer de un historial de imágenes para cada paciente, para que el médico pueda observar durante la consulta el estado de las lesiones y marcas en las anteriores visitas del propio paciente. Este historial contendrá cada una de las imágenes almacenadas del paciente, y las relacionadas con cada una de ellas, es decir, las imágenes resultantes obtenidas al analizar tales imágenes. De esta manera podrá realizar comparaciones entre las imágenes actuales, las anteriores y los datos de
32 las mismas con el fin de determinar la evolución de las lesiones, así como los efectos de los tratamientos seguidos por los pacientes y su consideración. 3.1.6. Carga y eliminación de imágenes Al introducir en la aplicación tanto el historial como el módulo de tratamiento de imágenes, surge la necesidad de incorporar un sistema para controlar la carga y la eliminación de imágenes en la aplicación. Este sistema permitirá cargar imágenes desde el ordenador en el cual se esté ejecutando la aplicación, y también facilitará la eliminación de las mismas cuando ya no se requiera su conservación. Las imágenes que sean cargadas sobre la aplicación se almacenarán en la base de datos, y se borrarán de la misma al realizar la operación de eliminación. 3.1.7. Tratamiento de imágenes Las imágenes disponibles de cada paciente, bien por existir en la base de datos o procedentes de una nueva captura podrán ser tratadas con el objetivo de proceder a su análisis y posterior registro de las lesiones o manchas de la manera más detallada posible. De esta forma, se busca facilitar al médico la tarea de comprobar la evolución de la lesión o mancha, permitiendo comparar, mediante valores numéricos proporcionados por las funciones de tratamiento de imágenes, determinados parámetros de interés para el diagnóstico, tales como: tamaño, color, forma o textura. El médico podrá elegir la zona exacta de la imagen a analizar para obtener unos resultados más precisos resultados del análisis. 3.2. Diagrama de casos de uso A continuación se muestra el diagrama de casos de uso que posteriormente se desglosan en detalle para una mayor comprensión de los mismos. Este diagrama corresponde al subsistema de operaciones o posibles casos que el usuario, dermatólogo en DermaSystem, puede realizar sobre la ficha que contiene todos los datos de un determinado paciente dentro de la aplicación. En la figura 4 se muestra un diagrama genérico de casos de uso del sistema desarrollado.
33 Figura 4: Diagrama genérico de casos de uso 3.3. Especificación de casos de uso Los casos de uso de los subsistemas de usuarios y pacientes son básicamente los contenidos en la memoria descriptiva de la primera versión de DermaSystem y contenidos en la correspondiente memoria descriptiva (Llorente-Navarro y col., 2013). En la versión que se describe en la presente memoria sólo existe un carácter de uso y, por consiguiente, un único rol, que es el de usuario estándar o dermatólogo. Si bien en la aplicación completa, además de éste existe, el rol de administrador del sistema, que se desarrolló íntegramente en la primera versión de DermaSystem. En relación al subsistema de análisis de imágenes, los casos de uso más representativos de dicho subsistema que se han generado son los siguientes: NewPicture: carga una nueva imagen mediante el selector de archivos y la almacena en la base de datos. AnalyzePicture: trata una imagen para la posterior extracción de información, y la almacena en la base de datos, relacionada con la imagen original. ViewTreatedPicture: accede a las imágenes tratadas que están relacionadas con la imagen original. DeletePicture: elimina una imagen de la base de datos. ModifyCommentTreatedPicture: modifica los comentarios introducidos al analizar una imagen.
34 ShowHistogram: muestra el histograma de la imagen durante el análisis. A continuación se detallan los casos anteriores, teniendo en cuenta que los relativos al resto del sistema se describen en la mencionada referencia (Llorente-Navarro y col., 2013). 3.3.1. NewPicture Precondiciones: El usuario que ejecuta la acción debe ser doctor y además estar registrado en el dominio correctamente (“logueado”), así como mostrar el paciente a tratar. Flujo normal: 1. Pulsar el botón “Historial de imágenes” 2. La aplicación muestra la primera imagen del paciente, si la hubiera, así como una galería del resto, todas ellas ordenadas cronológicamente por antigüedad. Pulsando en “Cargar nueva imagen” aparecerá un diálogo de selección de fichero. 3. Seleccionar la imagen y pulsar “Aceptar”. Al hacerlo, aparecerá la nueva imagen al final de la galería. Alternativas: Del paso 2 al 3 el doctor puede cancelar el proceso de carga de imágenes. 3.3.2. AnalyzePicture Precondiciones: El usuario que ejecuta la acción debe ser doctor y además estar registrado en el dominio correctamente (“logueado”), debe existir un paciente y una imagen relacionada con el mismo, así como ser seleccionada la imagen a tratar. Flujo normal: 1. Pulsar el botón “Analizar”.
35 2. La aplicación muestra la imagen en una nueva vista. Pulsar el botón de “Recortar” (tijeras). 3. Seleccionar con el ratón la lesión concreta a analizar, eliminando así la mayor superficie de piel sana posible. 4. Pulsando el botón “Analizar”, la imagen se binarizará apareciendo su nuevo aspecto. 5. Pulsar el botón “Información” para obtener los valores característicos de la imagen. 6. Para guardar el resultado del análisis de la imagen, pulsar “Guardar” (disquete). Aparecerá un diálogo para introducir el nombre. Pulsar “Aceptar”. 7. Aparecerá un diálogo para introducir un comentario. Tras pulsar “Aceptar” se mostrará un diálogo de confirmación. Alternativas: El paso 2 se puede omitir si se considera que la imagen está bien encuadrada con la mancha que se desea tratar. Entre los pasos 4 y 5, es posible cambiar el valor automático de umbral. Para ello se procede como sigue: o Desactivar el checkbox “Umbral automático”. o Elegir un valor en el selector deslizante, o introducirlo en el cuadro de texto correspondiente. En los pasos 6 y 7 el doctor puede cancelar el proceso de guardado 3.3.3. ViewTreatedPicture Precondiciones: El usuario que ejecuta la acción debe ser doctor y además estar registrado en el dominio correctamente (“logueado”), debe existir un paciente y al menos una imagen asociada al mismo. Flujo normal: 1. Pulsar el botón “Historial de imágenes”.
36 2. Seleccionar una imagen de la galería. Tras ello, se mostrará la imagen en el panel central. 3. Pulsar el botón de “Imágenes relacionadas”. 4. Seleccionar la imagen tratada que se desea visualizar. Alternativas: El paso 2 se puede navegar en la galería con los botones “Arriba” y “Abajo”. 3.3.4. DeletePicture Precondiciones: El usuario que ejecuta la acción debe ser doctor y además estar registrado en el dominio correctamente (“logueado”), debe haber un paciente y al menos una imagen relacionada al mismo. Flujo normal: 1. Pulsar el botón “Historial de imágenes”. 2. Seleccionar una imagen de la galería. Tras ello, se mostrará la imagen en el panel central. 3. Pulsar el botón de “Borrar”. Se refrescará la vista con la imagen eliminada. Alternativas: En el paso 3, en caso de error en la eliminación, aparecerá un mensaje de error. 3.3.5. ModifyCommentTreatedPicture Precondiciones: El usuario que ejecuta la acción debe ser doctor y además estar registrado en el dominio correctamente (“logueado”), debe haber un paciente, al menos una imagen relacionada con el mismo y una imagen tratada a partir de ésta que se encontrará seleccionada y activa.
37 Flujo normal: 1. Pulsar el botón “Historial de imágenes”. 2. Seleccionar una imagen de la galería. Tras ello, se mostrará la imagen en el panel central. 3. Pulsar el botón de “Imágenes relacionadas”. 4. Seleccionar la imagen tratada que se desee. Se mostrará esa imagen en el panel central. 5. Pulsar el botón “Detalles”. Aparecerá una ventana emergente con la información obtenida del tratamiento y los comentarios asociados. 6. Pulsar en el cuadro de texto de comentarios y modificar el texto. 7. Pulsar el botón “Guardar”. Desaparecerá la ventana emergente y volverá al estado del punto 4. Alternativas: Durante los pasos 6 y 7 el usuario puede cancelar la acción para no guardar los cambios pulsando en el botón “Cancelar”. En el paso 7, en caso de error en la modificación del comentario, aparecerá un mensaje de error. 3.3.6. ShowHistogram Precondiciones: El usuario que ejecuta la acción debe ser doctor y además estar registrado en el dominio correctamente (“logueado”), debe existir un paciente y una imagen relacionada con el mismo, así como ser seleccionada la imagen a tratar. Flujo normal: 1. Pulsar el botón “Analizar”. 2. La aplicación muestra la imagen en una nueva vista. Pulsar el botón de “Recortar” (tijeras). 3. Seleccionar con el ratón la lesión concreta a analizar, eliminando así la mayor superficie de piel sana posible.
44 Esta interfaz únicamente expresa qué acciones se van a realizar, pero no como se realizarán. Por consiguiente, una clase que herede de la interfaz se obliga a implementar el cómo realizará la implementación de dichos métodos o acciones. public class DaoPicture implements Dao { } Por consiguiente, en relación a la usabilidad del patrón en el proyecto y según lo mencionado previamente, se consigue homogeneizar el diseño y estructura del proyecto ante futuras mejoras. 3.4.2 Plataforma y requerimientos derivados para el desarrollo de la aplicación En cuanto a la plataforma para el desarrollo de la aplicación DermaSystem, indicar que se ha empleado eclipse Juno en su versión Juno Service Release 2 y como máquina virtual java JVM v1.8 con Java ToolKit v8. Los sistemas operativos en los que se puede continuar el desarrollo y sus requisitos son los siguientes: Windows Windows 8 (escritorio) Windows 7 Windows Vista SP2 RAM: 128 MB; 64 MB para Windows XP (32 bits) Espacio en disco: 124 MB Mac OS X Mac basado en Intel que ejecuta Mac OS X 10.7.3 (Lion) o posterior. Privilegios de administrador para la instalación Linux Oracle Linux 5.5+ Oracle Linux 6.x (32 bits)*, 6.x (64 bits)*
45 Red Hat Enterprise Linux 5.5+, 6.x (32 bits)*, 6.x (64 bits)* Ubuntu Linux 10.04 y superior SUSE Linux Enterprise Server 10 SP2, 11.x 3.4.3. Base de Datos Premisas de partida del proyecto Al tratarse de un proyecto heredado, un importante esfuerzo se ha centrado en ampliar el diseño de la base de datos para adaptarla a las nuevas necesidades del mismo. En este sentido, conviene tener en cuenta que este proyecto no está subvencionado por ningún cliente por lo que existen mejores tecnologías comerciales que las mencionadas previamente, la elección de las utilizadas en el presente proyecto no implican ningún coste adicional y además cumplen perfectamente los requerimientos exigidos al proyecto, ya que en esencia es un prototipo o germen de un proyecto más amplio y ambicioso. Sistema gestor de base de datos o SGBD y hospedaje MySQL es el sistema de gestión de base de datos utilizado. Es un sistema de gestión de bases de datos relacionales que se ejecuta como un servidor, proporcionando acceso de múltiples usuarios a una serie de bases de datos. Ha sido elegido por ser uno de los más utilizados por la comunidad internacional en proyectos de similar naturaleza al aquí desarrollado y por ser de naturaleza open source (código abierto). Al trabajar sólo con unos cientos de datos, MySQL se amolda perfectamente a las necesidades de DermaSystem. El servidor de base de datos se aloja de forma online por la facilidad que ofrece a la hora de centralizar la base de datos en un servidor en la nube, lo que permite su acceso a la hora de trabajar en ordenadores diferentes. El sitio elegido con tal finalidad ha sido www.db4free.net que nos permite realizar tal hospedaje sin ningún tipo de coste económico. La velocidad de acceso a datos de este servidor no es muy alta, si bien esto no representa ningún problema para el correcto funcionamiento de la aplicación. Modelo entidad relación Para realizar el modelo relacional se ha empleado la herramienta de diseño MySqlWorkBeanch la cual permite plasmar los cambios que se desean realizar en la base de datos de una manera gráfica, a la vez que obtener el script para su despliegue
46 en el repositorio de web de la misma con el fin de poder ser compartida por todos los usuarios de la aplicación y los miembros del equipo en su desarrollo. En la figura 8 se muestra el diagrama entidad-relación correspondiente a la base de datos diseñada. La parte enmarcada en color rojo corresponde al diseño de las nuevas tablas añadidas en la ampliación del proyecto a partir de la versión original de DermaSystem (Llorente-Navarro y col., 2013). Figura 8: Diagrama entidad-relación de la base de datos Detalles de las nuevas tablas añadidas se concretan como sigue: Tabla picturehistory: esta tabla contiene las imágenes originales de los pacientes con toda la información relevante, tal como, nombre, fecha de carga de la imagen en el sistema y una descripción de la misma sobre los motivos por los que ha sido considerada de interés por el médico dermatólogo. Tabla treatedPicture: es el lugar donde persisten los datos necesarios para recrear la aplicación de los métodos de tratamiento de las imágenes originales. También se guardan comentarios relacionados con los diagnósticos resultantes tras la aplicación de los citados métodos por el usuario médico.
47 3.5. Diagrama de Clases La figura 10 muestra el correspondiente diagrama de clases de clases sobre el que se fundamentaba la primera versión de DermaSystem. En la figura 9 se muestra el diagrama de clases en detalle que muestra la expansión del anterior, como consecuencia de la incorporación de las nuevas funcionalidades incorporadas en la nueva versión de DermaSystem, tal y como se recogen en la presente memoria. Figura 9: Diagrama de clases detallado relativo a la ampliación de DermaSystem
48 Figura 10: Diagrama de clases del proyecto DermaSystem en su primera versión
49 3.6. Diagramas de secuencia Como bien es sabido, un diagrama de secuencia contiene detalles de implementación del escenario, incluyendo los objetos y clases que se usan para implementar el dicho escenario y mensajes intercambiados entre los objetos. Por este motivo hemos seleccionado dos operaciones que conllevan el mayor número de interacciones entre objetos posibles para poder obtener una mejor comprensión global de la aplicación. 3.6.1. Diagrama de secuencia subir imagen al historial del paciente El diagrama de secuencia de la figura 11 muestra el esquema de diseño para la secuencia subir imagen al historial del paciente. La descripción de las acciones es la que se muestra a continuación: El usuario desde la perspectiva “historial de imágenes” solicita “cargar nueva imagen”. Desde el diálogo que se muestra tras la acción anterior, el usuario irá navegando por el árbol de directorios hasta encontrar la imagen que desea añadir al historial del paciente. La imagen tiene que estar en formato JPEG, elegido por su extendido uso en multitud de dispositivos y aplicaciones. La vista realiza la invocación al controlador con los datos recibidos de la ventana emergente y éste a su vez los transmite al modelo. El modelo llama al DAO, éste crea una conexión con la base de datos y ejecuta una instrucción del tipo “INSERT” en la base de datos añadiendo una nueva entrada en la misma. Una vez persistidos los datos se realiza una actualización del historial de imágenes de las que dispone dicho paciente (Clase log). El modelo lanza un evento indicando que se ha realizado correctamente la creación, el cual es capturado por la vista, que a su vez presenta finalmente una notificación de que dicha operación se ha realizado satisfactoriamente.
50 Figura 11: Diagrama de secuencia “subir imagen al historial del paciente”
51 3.6.2 Diagrama de secuencia de analizar imagen En la figura 12 se muestra el diagrama de secuencia analizar imagen. La descripción de las acciones es la que se muestra a continuación: El usuario desde la perspectiva de “historial de imágenes” selecciona la imagen original que desea tratar. Se le aplica un proceso de binarización a la imagen original seleccionada a través de las funciones y algoritmos proporcionados por las librerías de tratamiento de imágenes. Devolviéndole dicha imagen al usuario. El usuario selecciona la operación que desea realizar a través de la correspondiente función sobre una imagen, invocándose a la función umbral o threshold con los parámetros específicos de dicho filtro, tras lo cual se pasa el control desde la vista al controlador. El controlador llama a la función del modelo la cual devuelve la imagen aplicándole la operación seleccionada para posteriormente pasarlo a la vista. El usuario desencadena la llamada “createTreatedPicture” desde la vista, la cual le pasa la llamada al controlador. El controlador verifica los datos llamando al modelo y éste a través del daoTreated ejecuta una acción del tipo “save” en la base de datos, asignándole un nuevo identificador. Se notifica a la vista que todo ha ido correctamente, ésta a su vez muestra un mensaje confirmando el éxito de la operación.
52 Figura 12: Diagrama de secuencia “analizar imagen”
53 4. Implementación Una vez se dispone del diseño de la aplicación, el paso siguiente es su implementación. En este capítulo se describen por un lado las tecnologías utilizadas con tal propósito, así como los interfaces previstos con tal finalidad. 4.1. Tecnologías utilizadas En esta sección se enumeran y detallan cada una de las tecnologías utilizadas en la implementación de DermaSystem en su versión actual, cuyo diseño se corresponde básicamente con el realizado previamente, lo que implica la coincidencia de la mayoría de las tecnologías utilizadas en la versión original descrita en Llorente-Navarro y col., (2013). 4.1.1. Java DermaSystem ha sido programado en Java en su totalidad, debido a que, al tratarse de una aplicación con gran carga de interacción con el usuario, se ha querido utilizar un lenguaje que facilitase la programación dirigida por eventos. Gracias a las prestaciones que ofrece este “tipo” de programación, se han logrado controlar de manera eficiente las actividades que llevan a cabo tanto usuario como aplicación. 4.1.2. Java Swing Java Swing es una herramienta de diseño de interfaces gráficas de usuario, conocido usualmente como GUI, del inglés graphical user interface. Su popularidad y su gran cantidad de componentes, lo convierten en la herramienta ideal para desarrollar la interfaz de DermaSystem, puesto que permite crear la experiencia de usuario deseada de una manera fácil y eficaz. 4.1.3. Java Advanced Imaging Java Advanced Imaging, o como se conoce habitualmente, JAI (2013), es una extensión de Java que proporciona un conjunto de interfaces orientadas a objetos, permitiendo a los desarrolladores crear sus propias rutinas de manipulación de
60 La parte de gestión de la base de datos se encuentra bastante avanzada en el momento actual. Respecto del módulo de tratamiento de imágenes, se ha realizado un primer desarrollo, no incluido en la versión original de DermSystem. Gracias a ello se ha podido comprobar la posibilidad de realizar tratamientos de imágenes, almacenando la información extraída, compatible con el resto de funcionalidades de gestión. Es hora de ahondar en este sentido en futuras versiones del sistema, dotándole de funcionalidades de mayor calado orientadas hacia técnicas de aprendizaje e inteligencia artificial en el ámbito de la visión por computador. 5.2. Futuro de la aplicación DermaSystem es un proyecto con una enorme proyección de futuro, que hasta el momento, cubre las necesidades básicas que puede tener un especialista en dermatología durante la consulta. Desde el comienzo, la aplicación se ha diseñado para su continuidad de futuro, con idea de poder ser ampliada con facilidad, de manera que se pueda añadir funcionalidad sin la necesidad de iniciar el proyecto desde cero o estudiar a fondo la implementación anterior. A continuación se indican una serie de funcionalidades y aspectos que en el futuro se podrían añadir a DermaSystem como continuación y mejora del mismo: Marcado automático de imágenes tras su procesamiento y análisis de su evolución. Posibilidad de añadir nuevas marcas gráficas relativas a diversas lesiones. Elaboración gráfica de informes sobre la información contenida en la base de datos. Impresión de los informes conteniendo todas las áreas con sus correspondientes marcas e imágenes, tanto originales como tratadas. Añadir nuevos tratamientos a las imágenes, con el fin de obtener la máxima información posible sobre la lesión o mancha reflejada en la imagen. Añadir funcionalidades de procesamiento automático de imágenes, basadas en métodos de aprendizaje, como parte esencial de ayuda al diagnóstico. Todos estos puntos, junto con las funcionalidades y aspectos ya desarrollados e implementados en la aplicación, suponen un producto final de DermaSystem que sin duda facilita la gestión informática de pacientes y en el futuro servirá como ayuda base al diagnóstico médico en dermatología.
61 Conclusions and future work DermaSystem is a computer tool designed with the purpose of supporting medical consults in dermatology area. It has been developed with two aims: As a help in patient management by means of data and images storage, making easy access easy in a graphical and textual way, with the possibility of informs generation. As a help to diagnostic, thanks to an image processing module which makes it possible to obtain information about several parameters in skin injuries, rashes or spots of the patient (color, texture or size). The system has been designed based on proper methodology and structure to obtain a consistent and useful application, with two new modules that cover the previous objectives. As a daily use application for consults, it has been designed a graphic interface in which the user can access all the functionalities easily and quickly. In addition, DermaSystem manages patients private information, so it has been included a user authentication system that guarantees data security. Thus, system administration has been separated from the application part related to the functionalities that the dermatologist would use. Besides, this software, initially designed by the ideas and necessities of Medicine doctor Ms. Isabel Longo Imedio, has been designed and implemented with the possibility of extension in the future. To sum up, in this moment this application permits to manage patients’ medical histories, with a system to mark the dermatologic illnesses that will provide control over them, as well as an image processing module that the doctor can use to obtain detailed information about the injury seen in the analyzed image. The database management part is quite advanced at this moment. On the other hand, the image processing module is in its first revision, because it was not included in the previous version of DermaSystem. The following is a list of functionalities that could be added in the future to DermaSystem: Automatic labelling of the images, once they have been processed. Addition of new graphic labels related to injuries. Graphical reports generation about the information stored in the Database. Printing of reports with all areas and preserving the annotated labels. Add new image processing techniques, to extract all information from the images.
62 Include learning-based methods to design an intelligent system that learns with the information processed. All these points, together with all functionalities included in the current version of DermaSystem, make it a product of great help in dermatology.
63 6. Glosario B2B: Business-to-Business BD: Base de Datos BSD: Berkeley Software Distribution CORBA: Common Object Request Broker Architecture DAO: Data Access Object DB: Data Base GUI: Graphical User Interface. IDE: Integrated Development Environment IIOP: Internet InterORB Protocol IP: Image Processing JAI: Java Advanced Imaging JPEG: Joint Photographic Experts Group JVM: Java Virtual Machine LDAP: Lightweight Directory Access Protocol MD5: Message-Digest algorithm 5 MVC: Modelo Vista Controlador ORM: Object-Relational Mapping POJO: Plain Old Java Object. RAM: Random Access Memory RDBMS: Relational DataBase Management System SGBD: Sistema de Gestión de Bases de Datos SQL: Structured Query Language TI: Tratamiento de Imágenes XML: eXtensible Markup Language.
64 7. Bibliografía 1. Assembla. (2014). https://www.assembla.com/home 2. Bloch J. (2008). Effective Java. 2ª Ed. Addison-Wesley. 3. Gamma E., Helm R., Johnson R., Vlissides J. (2005). Design Patterns: Elements of Reusable ObjectOriented Software. Edición Internacional. CBR. 4. Hibernate. (2014). http://hibernate.org/ 5. JAI Java Advanced Imaging API (2014). Oracle. http://www.oracle.com/technetwork/java/javase/tech/jai-142803.html 6. JMathPlot (2014). Interactive 2D and 3D plots. http://jmathtools.berlios.de/doku.php 7. Llorente-Navarro, S.; Muñoz-Díaz, C.M.; Olivar-Conde, J.C. (2013). DermaSystem: Gestión Informática en Dermatología. Proyecto Fin de Grado. Facultad de Informática. Universidad complutense de Madrid. Madrid. 8. MATLAB. The Mathworks (2014). http://www.mathworks.es/ 9. Otsu, N. (1979). A threshold selection method from gray-level histogram, IEEE Transactions on System Man Cybernetics, Vol. SMC-9, No. 1, 1979, pp. 62-66. 10. Pajares G., de la Cruz J.M. (2007). Visión por computador: imágenes digitales y aplicaciones. 2ª Ed. RA-MA. 11. Pajares G., Santos, M. (2005). Inteligencia Artificial e Ingeniería del Conocimiento. RA-MA. 12. Pressman, Roger S. "Ingeniería de Software. Un enfoque práctico". 5ª Ed. Editorial Mac Graw Hill, Madrid, España, 2001. 13. Reenskaug T., Coplien J.O. (2009). The DCI Architecture: A New Vision of Object-Oriented Programming. http://www.artima.com/articles/dci_vision.html 14. Subversion. (2014). http://subversion.apache.org/
65 Anexo Manual de usuario A continuación se describen tres Anexos del manual de usuario, relativos a la parte específica que se ha desarrollado en la ampliación de la versión actual de DermaSystem. Más concretamente, son los relativos a: Historial de imágenes, Analizar imagen de un paciente, Historial imágenes tratadas. El resto de funcionalidades del programa se encuentran en el Anexo correspondiente a la descripción del manual de usuario de la memoria relativa a la versión previa de DermaSystem (Llorente-Navarro y col., 2013), que se enumeran a continuación: Acceso a la aplicación Cambio de idioma Información y ayuda Mi cuenta Editar mi cuenta Gestión de usuarios Gestión de pacientes Marcas A1. Historial de imágenes Requerimientos iniciales: Tener acceso a la aplicación con permisos de usuario médico Tener un paciente seleccionado. Es bien conocido que el acceso al gestor de pacientes con permisos de administrador está restringido.
66 Existe un paso común para todos los puntos siguientes: desde la ventana del paciente, donde se encuentra la información, pulsar en el botón “Historial de Imágenes” (figura A1). Figura A1: Historial de imágenes A1.1. Agregar una imagen al historial de un paciente. Una vez situados en esta ventana Historial de Imágenes pulsar en el botón “Cargar Imagen” (figura A2). Se abrirá una ventana emergente que nos permitirá navegar por el árbol de directorios para seleccionar la imagen que deseamos asignarle al paciente. Nota: el sistema sólo permite la carga de imágenes en formato .jpg por lo que sólo se visualizarán aquellas con dicho formato presentes en las carpetas abiertas por el explorador de ficheros.
67 Figura A2: Cargar imagen Pulsamos “Abrir” (figura A2) y automáticamente el sistema asigna la referencia de dicha imagen al paciente en el que nos encontramos, al mismo tiempo que refresca la pantalla con la nueva imagen cargada. A1.2. Borrar una imagen del historial. Una vez situados en esta ventana Historial de Imágenes seleccionamos la imagen que deseamos borrar. Esto implica que dicha imagen tiene que estar ubicada en el lugar central de la pantalla. Una vez asegurados de dicho posicionamiento pulsamos “Borrar”. De esta manera se borrará la imagen y por tanto su vinculación a este paciente. Este paso es irreversible por lo que es necesario considerar esta circunstancia.
68 A1.3. Consultar detalles de imagen. Con esta operación el dermatólogo especialista puede consultar los datos y observaciones más relevantes del paciente que hayan sido anotadas o extraídas durante el seguimiento del mismo. Permitiendo así tomar nuevas decisiones sobre el tratamiento. Figura A3: Detalles de imagen A1.4. Analizar imagen. Desde la ventana Historial de Imágenes seleccionamos la imagen de la que deseamos consultar su colección de imágenes previas tratadas. Tras esta acción dicha imagen pasa a la posición central de la ventana). A continuación pulsamos el botón “Analizar” (figura A4). Se abrirá una nueva ventana con las posibles operaciones que podemos realizar sobre la imagen original seleccionada en el paso anterior. Figura A4: Analizar imagen
69 A1.5. Ver el historial de imágenes tratadas. De nuevo realizando la misma operación previa desde la ventana Historial de imágenes seleccionamos la imagen de la que deseamos consultar su colección de imágenes tratadas. Finalmente pinchamos en el botón “Imágenes relacionadas” (figura A5). Figura A5: Consultar imágenes relacionadas Dicha acción nos abrirá una nueva perspectiva donde visualizamos unas imágenes que han sido obtenidas aplicándole el correspondiente tratamiento a la imagen que hemos seleccionado en el paso anterior. Figura A6: Imágenes relacionadas
76 Figura A14: Imagen analizada, umbral manual Cuando la zona a identificar sea la deseada, la imagen estará lista para ser guardada, obtener su información o visualizar el histograma. Si no se está satisfecho y se quiere variar parte del proceso, se puede pulsar “Restaurar original” para comenzar de nuevo. A2.3. Obtener información de la imagen Requerimientos iniciales: Disponer de una imagen analizada Con la imagen analizada en pantalla, pulsar “Información” (figura A15).
77 Una vez pulsado dicho botón, aparecerá una nueva ventana donde se mostrará la información de la imagen analizada (figura A16). Figura A15: Obtener información Figura A16: Información de imagen
78 A2.4. Histograma de la imagen Requerimientos iniciales: Tener una imagen analizada Con la imagen analizada en pantalla, pulsar “Histograma” (figura A17). Figura A17: Obtener histograma Una vez pulsado dicho botón, aparecerá una nueva ventana donde se mostrará el histograma de la imagen analizada (figura A18).
79 Figura A18: Histograma de imagen A2.5. Guardar imagen Requerimientos iniciales: Disponer de una imagen analizada o recortada Es posible guardar la imagen siempre que se realice algún cambio sobre ella, ya sea un recorte o su procesamiento. Para realizar la operación de guardado, debemos pulsar en el botón de “Guardar”, representado con el icono de un disquete (figura A19). Una vez pulsado dicho botón, aparecerá un cuadro de diálogo que solicitará introducir el nombre de la imagen. Debemos introducir el nombre y pulsar “Aceptar” (figura A20). Cuando aceptemos el nombre, aparecerá otro cuadro de diálogo para introducir las anotaciones deseadas en relación a la imagen. Finalizada esta operación se pulsa “Aceptar” (figura A21).
80 Figura A19: Guardar imagen Figura A20: Introducir nombre de imagen Figura A21: Introducir comentario de imagen
81 Finalmente, se mostrará un cuadro en el que se indicará que la imagen se ha guardado correctamente. Para finalizar el proceso, es necesario pulsar “Aceptar” (figura A22). Figura A22: Guardado correctamente A3. Historial imágenes tratadas Requerimientos iniciales: Tener acceso a la aplicación con permisos de usuario médico Tener un paciente seleccionado. El paciente tiene que tener alguna imagen en su historial. Conviene reseñar que el acceso al gestor de pacientes con permisos de administrador está restringido. El siguiente paso es común para todos los puntos siguientes: si del paciente seleccionado no se dispone de imágenes tratadas del conjunto que conforman su historial de imágenes sólo se mostrará la imagen original sin tratar. Para posicionarse en esta ventana, desde la perspectiva de Historial de Imágenes seleccionamos una imagen y una vez que ésta se encuentra seleccionada pulsamos en “Imágenes relacionadas”.
82 Figura A23: Historial de imágenes relacionadas A3.1. Volver al historial de imágenes. Una vez situados en esta ventana Imágenes relacionadas pulsar en el botón “Volver a galería” (figura A24). Figura A24: Volver a galería Con esta acción volvemos a la ventana principal de Historial de Imágenes del paciente.
83 A3.2. Eliminar imagen tratada. Seleccionamos la imagen tratada que deseamos eliminar y pulsamos el botón “Borrar” (figura A25). Figura A25: Borrar imagen tratada A3.3. Consultar detalles de imagen tratada. Para ejecutar esta consulta pulsamos seleccionar las imágenes de las que queremos ver sus comentarios introducidos previamente por el doctor y pulsamos “Detalles” (figura A26). Por último aparecerá una ventana emergente donde el doctor podrá visualizar todos los comentarios disponibles en relación con esa imagen tratada, permitiendo también la edición de los mismos junto con las operaciones de tratamiento de imágenes aplicadas.
84 Figura A26: Detalles de imagen tratada