Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Herramienta WEB para la Visualización y Segmentación 3D de Imágenes Médicas Gustavo Tajes Genga Trabajo de grado presentado como requisito para optar al título de: Ingeniería de Sistemas Directores: Dra. Mariana del Fresno Dr. Juan D’Amato 1 Resumen El análisis de imágenes médicas y el diagnóstico asistido por computadora es un campo en continuo desarrollo. Con la evolución de la tecnología han ido surgiendo diferentes modalidades de captura de imágenes médicas, que se usan para explorar el cuerpo humano con el fin de diagnosticar, controlar o tratar afecciones. Las diversas técnicas utilizadas para la obtención de dichas imágenes por parte de distintos fabricantes generó la definición de un estándar, llamado DICOM, para estandarizar su almacenamiento y comunicación. Para su análisis e interpretación, las imágenes suelen ser procesadas previamente. Dentro de las distintas etapas de procesamiento, una de las etapas más importantes consiste en la segmentación, es decir la delineación de estructuras anatómicas o patológicas que resulten de interés. Actualmente existen numerosas herramientas para segmentación y visualización de imágenes, pero en muchos casos son costosas, además de no estar consolidadas y depender de componentes adicionales. Siguiendo la creciente tendencia al desarrollo de aplicaciones web, en este trabajo se presenta el desarrollo de una herramienta web para gestionar, visualizar y segmentar imágenes médicas 2D y 3D en formato DICOM. La herramienta proporciona funcionalidades para la construcción de los algoritmos de procesamiento por parte del usuario, además de permitir la interacción con las imágenes tanto en 2D como en 3D. Palabras clave: imágenes médicas, procesamiento de imágenes, segmentación de imágenes, dicom, web 2 Agradecimientos Quiero hacer un agradecimiento por haber sido parte de esta aventura: ● A mis padres: Mirta y Rodolfo, por su esfuerzo, por apoyarme y animarme en toda esta etapa. De ellos aprendí a perseverar y a levantarme con cada caída. ● A mi esposa: Angela, por ser mi apoyo y sostén durante este último tramo del camino. Por su tiempo y su comprensión. ● A los hermanos y amigos que la vida me regaló: por alentarme en cada paso, por sus oraciones y por su ayuda cada vez que la necesité. ● A mis directores: Mariana y Juan, por acompañarme y guiarme durante el desarrollo de esta tesis. Por sus sugerencias, su disponibilidad y su ayuda constante. ● A todos los docentes y no docentes con los cuales compartí mi trayecto por la Universidad pública: por su dedicación y por haber sido parte de mi formación como profesional. ● A Dios: por las personas que puso en mi camino, las que están y las que ya no, pero que de una u otra forma pusieron su granito de arena. Por su providencia, sin ella nada de esto hubiera sido posible. 3 Contenido Resumen 1 Agradecimientos 2 Lista de Figuras 5 Lista de Tablas 7 Lista de Bloques de Código 8 1 Introducción 9 1.1 Motivación y objetivo del trabajo 10 1.2 Organización del trabajo 11 2 Visualización y Segmentación de imágenes médicas 12 2.1 Imagen médica 12 2.2 Estándar DICOM 13 2.1 Etapas del procesamiento de imágenes médicas 14 2.1.1 Captura 15 2.1.2 Preprocesamiento 16 2.1.3. Extracción de características 16 2.1.4 Segmentación 17 2.1.5. Registración 18 2.1.6 Visualización 18 2.2 Análisis y Elección de Tecnologías 19 2.2.1 Tecnologías de Visualización 19 webDICOM 20 med3web 20 Papaya 21 OHIFViewers 22 4 2.2.2 Tecnologías de almacenamiento 25 DICOMcloud 25 Orthanc 26 2.2.3 Tecnologías de procesamiento 27 VTK 27 ITK 28 SimpleITK 28 2.2.4 Tecnologías de comunicación 28 3 Diseño e Implementación 30 3.1 Diseño del visualizador WEB 31 3.2 Diseño del segmentador de imágenes 35 3.2.1 Plugin de Orthanc 35 3.2.2 SimpleITK + Spring Boot 37 4 Resultados 44 5 Conclusiones y trabajos futuros 52 5.1 Conclusiones 52 5.2 Trabajos futuros 52 Anexo A: Utilización de la herramienta 54 A1. Interfaz web del servidor de imágenes DICOM 54 A2. Interfaz web del visualizador de imágenes 55 A3. Interfaz web del segmentador 57 A3-1. Interfaz basada en ReactJS 57 A3-2. Interfaz mediante Swagger UI 59 Bibliografía 63 5 Lista de Figuras Figura 2-1. Etapas del procesamiento de imágenes médicas. 15 Figura 2-2. Interfaz gráfica de la herramienta webDICOM. 20 Figura 2-3. Interfaz gráfica de la herramienta med3web. 21 Figura 2-4. Visualizador 3D de la herramienta med3web. 21 Figura 2-5. Interfaz gráfica de la herramienta Papaya. 22 Figura 2-6. Interfaz gráfica de la herramienta OHIFViewer. 23 Figura 3-1. Módulos de la aplicación y flujo de interacción entre ellos. 31 Figura 3-2. Descripción del layout original del visualizador OHIF. 32 Figura 3-3. Herramientas para la manipulación de las vistas 3D. 34 Figura 3-4. Vista del selector de pipelines. 34 Figura 3-5. Diagrama de secuencia de una segmentación desde el visualizador. 35 Figura 3-6. Ejemplo de un pipeline de procesamiento ITK/SimpleITK. 37 Figura 3-7. Ejemplo de un pipeline de procesamiento ITK/SimpleITK simplificado. 38 Figura 3-8. Modelo de la entidad que representa a la tabla Pipeline. 39 Figura 3-9. Diagrama de clases de un filtro. 39 Figura 3-10. Endpoints para la consulta de filtros. 43 Figura 3-11. Endpoints para las operaciones CRUD sobre los pipelines. 43 Figura 4-1. Utilización de memoria y CPU del perfil 1 al momento del arranque del segmentador. 45 Figuras 4-2. Capturas de pantalla de la segmentación del ventrículo cerebral izquierdo vistas en diferentes ángulos. Vista frontal (izq.) y vista anterior derecha (der.). 47 Figura 4-3. Vista 2D de un corte de la MRI (izq) y vista 3D (der) de la segmentación. 47 Figura 4-4. Utilización de memoria y CPU del perfil 2 al momento del arranque del segmentador. 48 6 Figura 4-5. Vistas 3D de la segmentación de pulmones y arterias pulmonares. 50 Figura A1-1. Vista general de la interfaz web del servidor DICOM. 54 Figura A1-2. Vista general de la interfaz web para la carga de estudios. 55 Figura A2-1. Vista general de la interfaz web de autenticación del visualizador. 55 Figura A2-2. Vista general de la interfaz web para listar los estudios existentes. 56 Figura A2-3. Vista general de la interfaz web para visualización de imágenes 2D y 3D. 56 Figura A3-1. Vista del listado de pipelines y botones para interactuar con los mismos. 58 Figura A3-2. Vista de la configuración de filtros de un pipeline. 58 Figura A3-3. Vista de la configuración de parámetros de un filtro. 59 Figura A3-4. Vista de los controladores y endpoints del segmentador en Swagger. 59 Figura A3-5. Vista de un endpoint en Swagger. 61 7 Lista de Tablas Tabla 2-1. Tabla comparativa de características y funcionalidades de las herramientas evaluadas. 24 Tabla 2-2. Tabla comparativa de características y funcionalidades de los servidores DICOM evaluados. 27 Tabla 4-1. Tabla de resultados del perfil 1 para la segmentación del ventrículo cerebral izquierdo. 46 Tabla 4-2. Tabla de resultados del perfil 2 para la segmentación del ventrículo cerebral izquierdo. 48 Tabla 4-3. Tabla de resultados del perfil 1 para la segmentación de los pulmones y arterias pulmonares. 50 Tabla 4-4. Tabla de resultados del perfil 2 para la segmentación de los pulmones y arterias pulmonares. 51 8 Lista de Bloques de Código Bloque 3-1. Template del motor BlazeJS para visualización de imágenes 3D. 33 Bloque 3-2. Definición del endpoint rest en el plugin. 36 Bloque 3-3. Ejemplo de carga de una imagen con ITK. 36 Bloque 3-4. Modelo JSON de un Filtro. 37 Bloque 3-5. Ejemplo de filtro (RescaleIntensityImageFilter) sin instanciar en un pipeline. 41 Bloque 3-6. Ejemplo de filtro (RescaleIntensityImageFilter) instanciado en un pipeline. 42 9 1 Introducción Durante los últimos años, la medicina se ha visto beneficiada por diversos avances científicos y tecnológicos. Entre ellos, han surgido diferentes modalidades de imágenes médicas que se usan para explorar el cuerpo humano con el fin de diagnosticar,controlar o tratar afecciones [1]. La obtención de las diferentes imágenes implica, en muchos casos, irradiar al paciente con algún tipo de energía y las distintas técnicas utilizadas se pueden clasificar en función de la radiación que emplean, siendo éstas: radiación ionizante o no ionizante. Dentro del primer grupo se distinguen las que emplean rayos X, siendo algunas de ellas: la radiografía, la mamografía, la angiografía y la tomografía computada; como así también las técnicas de medicina nuclear. En el caso de la radiación no ionizante, es decir, radiación electromagnética y/o campos magnéticos, se incluyen la ecografía y las imágenes de resonancia magnética [2,3]. Para llevar a cabo el diagnóstico o evaluación de tratamientos, en muchos casos los médicos se basan en el análisis e interpretación de la información contenida en una o más imágenes. Esta tarea requiere tiempo y esfuerzo, y en ciertos casos puede resultar tediosa y susceptible a errores humanos, especialmente debido al gran volumen de datos que suelen contener algunas modalidades. Es por este motivo que se han desarrollado diferentes aplicaciones para el diagnóstico asistido por computadora (CAD, por Computer-Aided Diagnosis) y asimismo para guiar la planificación y evaluación de tratamientos, temas que son objeto de investigación y avances continuos [4]. El área del análisis de imágenes médicas ha progresado notablemente en los últimos años, ofreciendo diversas alternativas para procesamiento, visualización y segmentación de imágenes, ya sean automáticas o semiautomáticas. En algunos casos, a pesar de los avances en computación gráfica y visualización computacional, las facilidades suelen realizarse sobre los cortes bidimensionales (2D) de las imágenes, aunque sean volumétricas, siendo el médico quien debe interpretarlas espacialmente como si estuviera viendo un modelo tridimensional (3D). A tal fin, puede resultar de utilidad proporcionar vistas de los volúmenes o superficies de los objetos de interés en dichas imágenes para asistir al profesional. Esta funcionalidad puede complementarse con la aplicación de diversas técnicas de pre-procesamiento, como la mejora del contraste, la supresión de “ruido” y la segmentación de la imagen seleccionando las estructuras de interés en base a diferentes características [5]. https://sciwheel.com/work/citation?ids=10721426&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9938763,10721433&pre=&pre=&suf=&suf=&sa=0,0 https://sciwheel.com/work/citation?ids=11262439&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9278796&pre=&suf=&sa=0 10 1.1 Motivación y objetivo del trabajo Existen numerosas herramientas CAD para el procesamiento de imágenes, disponibles para fines de investigación y diagnóstico. Algunas de ellas, como por ejemplo 3D Slicer [6], MIPAV [7] o 3D-Doctor [8], permiten preprocesar, segmentar y visualizar imágenes médicas en 3D. Además, brindan soporte para el formato estándar DICOM (Digital Imaging and Communication in Medicine), el cual desde hace años se considera el estándar para transmisión y almacenamiento de imágenes médicas [9]. Sin embargo, muchas de estas herramientas están disponibles sólo como aplicaciones locales, limitando el acceso a los datos y su procesamiento desde estaciones de trabajo específicas [10]. Un requerimiento cada vez más importante a la hora de trabajar con imágenes médicas es la capacidad de acceder de forma fácil y rápida a los datos. Es por esto que la evolución de las tecnologías web y de las características de los navegadores han favorecido el desarrollo de aplicaciones de imágenes médicas basadas en web [11]. Este tipo de soluciones se están difundiendo, permitiendo así expandir las capacidades de exploración y análisis de información médica según la creciente demanda de servicios hacia diversas áreas geográficas incluso remotas, con beneficios en el área de la telemedicina y del trabajo colaborativo entre especialistas [12]. Sin embargo, algunas de las herramientas web propuestas suelen tener una funcionalidad deficiente de interfaz de usuario o requieren que el usuario descargue e instale componentes adicionales, que generan dependencias con alguna otra aplicación o sistema operativo (por ejemplo, la Java Virtual Machine para el caso de Java Applets o Windows en el caso de los controles ActiveX). Esto ocasiona la pérdida de muchas ventajas de las aplicaciones web basadas en estos componentes, además de ser utilizados para explotar vulnerabilidades o riesgos de seguridad en las estaciones de trabajo donde son ejecutados [10]. Por estos motivos, la tendencia actual es buscar el desarrollo de aplicaciones que faciliten la visualización y procesamiento de imágenes médicas en el navegador, sin requerir instalación o descarga previa de componentes, favoreciendo al mismo tiempo el acceso desde cualquier estación de trabajo o dispositivo. Varios proveedores comerciales de equipos radiológicos han comenzado a adoptar soluciones basadas en web. No obstante, hay una creciente tendencia hacia el desarrollo de soluciones basadas en el concepto de software de código abierto (open source), que brinden mayor flexibilidad y extensibilidad [13]. El objetivo de este trabajo es el desarrollo de una herramienta web open source para gestionar, visualizar y segmentar imágenes médicas, para análisis de imágenes individuales o de secuencias de imágenes DICOM 2D (planas) o 3D (volúmenes). La herramienta provee acceso a las imágenes, controles básicos y facilidades de visualización. También permite la configuración y combinación de diferentes algoritmos para procesamiento de las imágenes basados en la librería ITK, a fin de asistir en la exploración y segmentación de estructuras de interés, los que son ejecutados en un servidor de procesamiento. La comunicación entre los https://sciwheel.com/work/citation?ids=10722320&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10722326&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10722361&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=11178354&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10722374&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=11178183&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=11178439&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10722374&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=11178415&pre=&suf=&sa=0 11 módulos se lleva a cabo a través de servicios REST, sin requerir la instalación de componentes adicionales. 1.2 Organización del trabajo Este documento se organiza en una serie de capítulos que abordan los distintos aspectos involucrados en el desarrollo del presente Trabajo Final. En el Capítulo 2 se introducen las características de las imágenes médicas, del estándar DICOM utilizado para su almacenamiento y comunicación y de las etapas que abarca el procesamiento de imágenes. También se aborda el análisis de tecnologías disponibles y la elección de aquellas que fueron utilizadas en el trabajo. El Capítulo 3 describe los diferentes aspectos considerados en el diseño e implementación de la herramienta desarrollada, bajo el concepto de software libre. En el Capítulo 4 se presentan algunos resultados obtenidos a fin de evaluar la performance de la herramienta, realizados sobre diferentes perfiles de hardware. Finalmente, en el Capítulo 5 se incluyen las conclusiones y posibles trabajos futuros. 12 2 Visualización y Segmentación de imágenes médicas En este capítulo se presenta una introducción al concepto de imagen médica, sus características y al estándar utilizado por la industria para el almacenamiento y comunicación de las mismas. Luego se explican las etapas de procesamiento de imágenes médicas y finalmente se describe el proceso de análisis y elección de tecnologías utilizadas en el presente trabajo. 2.1 Imagen médica Una imagen médica permite observar, ya sea interna o externamente, el cuerpo humano o partes de él con propósitos clínicos, a fin de diagnosticar o tratar diversas enfermedades. También son consideradascon propósitos científicos, brindando información para el estudio de la anatomía o funcionamiento del organismo. Las técnicas y procedimientos utilizados para la obtención de las imágenes, comúnmente denominadas “modalidades de de imagen”, consisten en irradiar distintos tipos de energía sobre el cuerpo humano o, en algún caso, desde el interior del mismo. Estas imágenes son producidas por una amplia variedad de equipos, que en cada caso convierten las mediciones obtenidas por los sensores a niveles de gris o tonos de color capaces de ser visualizados y analizados posteriormente. Según el tipo de radiación utilizada, las modalidades de imagen se pueden diferenciar según utilicen radiación ionizante, la cual debe usarse en forma controlada para evitar daños sobre los tejidos con los que interaccionan, o no ionizante, que no tiene capacidad de dañarlos [3]. En el primer grupo de técnicas de adquisición se encuentran la radiografía, que mediante el uso de rayos X generan imágenes anatómicas planas del interior del cuerpo según la capacidad de absorción de tales ondas por parte de los distintos materiales (los rayos X atraviesan con facilidad los tejidos blandos como los órganos y la piel mientras que son absorbidos por los tejidos duros como los huesos). También basadas en la utilización de rayos X se encuentran la mamografía, que usa bajas dosis de radiación para la exploración de las estructuras mamarias, la angiografía, que permite examinar los vasos sanguíneos mediante inyección de contraste, y la tomografía computada (CT, por Computed Tomography), capaz de generar imágenes tridimensionales a partir de cortes transversales reconstruidos desde diferentes proyecciones del cuerpo humano (obtenidas en forma secuencial en los tomógrafos tradicionales o con multidetectores en los tomógrafos helicoidales multicorte de última generación). Además, se incluyen en este grupo las imágenes de medicina nuclear, como la Tomografía por Emisión de Positrones (PET, por Positron Emission Tomography), en la cual https://sciwheel.com/work/citation?ids=10721433&pre=&suf=&sa=0 13 se utilizan radiotrazadores administrados al paciente, cuyas emisiones son detectadas mediante una cámara gamma para generar imágenes funcionales de la actividad corporal. Por otra parte, se encuentran las imágenes de resonancia magnética (MRI, por Magnetic Resonance Imaging), que mediante la utilización de un poderoso campo magnético y ondas de radiofrecuencia logran alinear las moléculas de agua en el cuerpo y producir imágenes tridimensionales detalladas de los tejidos blandos, articulaciones, etc. Otra modalidad ampliamente utilizada es la ecografía, en la cual se emplea ultrasonido (US, por Ultra Sound) para generar imágenes bidimensionales o tridimensionales a partir del eco recibido desde el interior del cuerpo como respuesta a las ondas emitidas por un transductor. Debido a la existencia de diferentes modalidades de captura, como así también de características propias de almacenamiento según los distintos fabricantes de dispositivos, surgió la necesidad de unificar el formato de las imágenes médicas. De esta forma, se crea el estándar DICOM, el cual define no solo un formato de almacenamiento común para las imágenes e información contextual, sino también todo un protocolo de comunicación de las mismas [9]. A continuación se presenta una introducción a dicho estándar, y en particular, en las áreas de almacenamiento y comunicación, las que son de interés para el presente trabajo. 2.2 Estándar DICOM Existe un continuo desarrollo de nuevas técnicas en imágenes médicas y un incremento en las modalidades de imágenes en formato digital. Esto ha ocasionado el desarrollo de sistemas de administración de imágenes médicas llamados PACS (por Picture Archiving and Communication System) [14,15]. La evolución en el diseño de PACS avanza hacia una arquitectura abierta, con equipos de distintos proveedores basados en el estándar DICOM. Los principales objetivos de este estándar son: ● Promover la comunicación de imágenes digitales sin importar el fabricante del dispositivo. ● Facilitar el desarrollo y expansión de PACS que puedan interconectarse con otros sistemas de información hospitalaria. ● Permitir la creación de bases de datos de información de diagnóstico que se puedan consultar por una amplia variedad de dispositivos distribuidos geográficamente. DICOM es un estándar que contempla el modelo orientado a objetos, buscando con ello que los desarrollos en software del mismo sean más rápidos y que se elimine la necesidad de reinventar cada vez que se hace una implementación de DICOM, dado que depende de https://sciwheel.com/work/citation?ids=11178354&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899105,11178357&pre=&pre=&suf=&suf=&sa=0,0 14 modelos explícitos y detallados de cómo están descritos y relacionados los objetos (pacientes, imágenes, reportes, etc). El diseño orientado a objetos proporciona una manera de describir la información y qué hacer con ella, y DICOM hace uso de este concepto definiendo servicios como “almacenar una imagen” u “obtener información del paciente”. Estos servicios se implementan en DICOM usando construcciones conocidas como un conjunto genérico de operaciones y notificaciones llamados Elementos de Servicio de Mensaje DICOM o DIMSE (DICOM Message Service Element) [14]. Como se explica en [16], la forma en que se accede a la información provista por DICOM ha ido cambiando a medida que las prestaciones aumentaron, de estar limitada dentro de un hospital a ser compartida en toda la institución y entre instituciones. Estos cambios requirieron nuevos requisitos de seguridad y políticas de tecnologías de la información para DICOM. Como resultado, a partir de 2003 DICOM introdujo tecnologías web. Inicialmente llamada WADO (por Web Access to DICOM Objects), esta tecnología definió un método para recuperar objetos DICOM usando HTTP, la misma tecnología utilizada en la web. Con el tiempo, se agregaron otros servicios a DICOM; esto incluyó la búsqueda a través de QIDO-RS (consulta basada en ID para objetos DICOM) y la carga a través de STOW-RS (almacenamiento en la web). Posteriormente, WADO se actualizó a WADO-RS para seguir más de cerca el estilo RESTful emergente de las interfaces web. En conjunto, estas tecnologías se conocieron como DICOMweb. Las mismas agregan servicios web sobre HTTP a DICOM, modelados según el estilo de REST (Representational State Transfer) [17]. REST se ha convertido en el estilo de API dominante utilizado por empresas y mercados de todo el mundo [18]. Las imágenes médicas se definen en el estándar DICOM como objetos de información o conjuntos de datos. Un objeto de información representa una instancia de un objeto de información del mundo real (es decir, una imagen) y está compuesto de múltiples elementos de datos que contienen los valores codificados de atributos de ese objeto. Cada elemento de datos se compone de tres campos: la etiqueta del elemento de datos, la longitud del valor y el valor del campo. La etiqueta del elemento de datos es un identificador único que consta de un número de grupo y un número de elemento en notación hexadecimal, y se utiliza para identificar el atributo específico del elemento. Por ejemplo, los datos de píxeles de una imagen se almacenan en elementos con una etiqueta [7FE0, 0010], donde 7FE0 representa el número de grupo y 0010 representa el número de elemento. La longitud del valor especifica el número de bytes que componen el valor del campo. El valor del campo contiene los valores del elemento de datos. 2.1 Etapas del procesamiento de imágenes médicas El procesamiento de imágenes se puede definir como la manipulación y el análisis de la información contenida en las mismas. En general, puede dividirse en 6 etapas (Figura 2-1), de https://sciwheel.com/work/citation?ids=9899105&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=5234065&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899101&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9901932&pre=&suf=&sa=015 las cuales solo algunas pueden ser necesarias, dependiendo de los requerimientos de la aplicación involucrada [19]. En primer lugar se encuentra la etapa de captura de la imagen mediante algún dispositivo. A continuación, en la etapa de preprocesamiento, se puede mejorar el aspecto de la imagen mediante diferentes técnicas para facilitar las etapas subsiguientes. En la etapa de extracción de características se obtienen propiedades de interés de la imagen, útiles para la aplicación en la cual será utilizada. En la etapa de segmentación se delimitan las áreas de interés a analizar, utilizando diferentes algoritmos y criterios para diferenciarlas. En la etapa de registración es posible combinar distintas imágenes, con el fin de correlacionar la información, usualmente proveniente de distintas modalidades, y finalmente en la etapa de visualización se puede analizar de forma gráfica el resultado del procesamiento. Figura 2-1. Etapas del procesamiento de imágenes médicas. A continuación se presenta una explicación más detallada de cada una de estas etapas. 2.1.1 Captura La primera etapa del procesamento de imágenes consiste en la captura de la imagen mediante alguna técnica o modalidad específica. En lo que respecta a imágenes médicas, según el tipo de energía utilizada, algunas de las modalidades más utilizadas son: radiación electromagnética por rayos X (radiología), radiación electromagnética por rayos gamma (medicina nuclear), ultrasonido (ecografía), ondas de radio (resonancia magnética). Con el avance de la tecnología y la aparición de nuevas modalidades, ha aparecido otro criterio de clasificación en modalidades morfológicas (o estructurales) y funcionales. Las primeras se caracterizan por producir imágenes de muy buena resolución, que permiten una representación detallada de la anatomía del paciente. Las segundas, en cambio, se caracterizan por aportar información sobre el funcionamiento de los diferentes órganos o sistemas, algún rasgo de su metabolismo, su perfusión sanguínea, su capacidad para acumular ciertas sustancias, etc. En la etapa de captura, se registra la interacción de la energía con la muestra (el paciente). Esta información es procesada y traducida en imágenes digitales que los médicos y/o https://sciwheel.com/work/citation?ids=9919990&pre=&suf=&sa=0 https://lucid.app/documents/edit/e9daf5a0-2302-45d3-92e2-3858709a6a54/0?callback=close&name=docs&callback_type=back&v=678&s=595.4399999999999 16 profesionales pueden analizar, y que además sirve como información de entrada a la siguiente etapa del procesamiento [2]. 2.1.2 Preprocesamiento Comúnmente la calidad de una imagen médica se ve deteriorada debido a la heterogeneidad de los tejidos, la presencia de cuerpos extraños o artefactos, errores de hardware y software, o movimientos del paciente durante la captura. Estos defectos pueden ocultar detalles anatómicos y por ende, reducir la posibilidad de detectar lesiones [20]. El preprocesamiento de las imágenes tiene como fin corregir estos defectos mediante diferentes técnicas, como así también mejorar la apariencia visual de la imagen, resaltar características importantes y suprimir o atenuar las características no deseadas. A continuación se describen algunas de estas técnicas de preprocesamiento: ● Resampleo (resampling): Se trata de una técnica cuyo fin es crear una nueva versión de la imagen, con diferente ancho y alto en píxeles. Para agrandar una imagen (upsampling), esta técnica hace que aumente la cantidad de píxeles, lo cual suele resultar en una imagen más borrosa debido a la disminución de información por pixel. Por otro lado, al achicar una imagen (downsampling), es necesario descartar información de la imagen original, sin embargo, esto puede resultar en una imagen más nítida [21]. ● Realce de contraste: Es común que las imágenes digitales posean un pobre contraste debido a un rango de escala de grises reducido. Mediante ajustes en la intensidad de cada píxel, puede mejorarse notablemente el contraste, a fin de poder diferenciar más fácilmente distintos objetos de interés [22]. ● Remoción o atenuación del ruido: Debido a variaciones en la fuente de energía o a interferencias, es común que aparezcan componentes ajenos al objeto de interés dentro de las imágenes médicas. A estos componentes se los conoce como ruido de fondo. Los píxeles pertenecientes al ruido en una imagen tienen la característica de tener un nivel de intensidad muy diferente a sus vecinos. Distintos algoritmos de preprocesamiento, dependiendo el tipo de ruido en cuestión, se encargan de eliminar la intensidad de dichos píxeles para lograr una imagen de mayor calidad. 2.1.3. Extracción de características Esta etapa consiste en extraer diferentes propiedades o indicadores de las imágenes, que son de utilidad para su análisis. Una característica o indicador es un escalar que cuantifica una determinada propiedad de un punto o sector de la imagen. Dependiendo del problema a https://sciwheel.com/work/citation?ids=9938763&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9963791&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9963914&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9964074&pre=&suf=&sa=0 17 abordar, se determinan las características que es necesario extraer de la imagen. El espacio de características puede dividirse en tres categorías generales [19] : ● De intensidad: Caracterizan cada región de interés de la imagen mediante los valores de niveles de gris de las mismas. Otra aproximación para la obtención de este tipo de características consiste en medir la diferencia entre el nivel de gris medio de la región y el nivel de gris medio de los píxeles circundantes. ● Geométricas: Se basan en obtener un indicador de la forma de las regiones de interés a analizar dentro de la imagen, pudiendo calcularse por ejemplo, a partir del tamaño, área y borde de las mismas. ● De textura: El análisis de la textura de regiones de interés tiene importantes aplicaciones en la práctica clínica, como por ejemplo la segmentación y la diferenciación de lesiones. Las características de textura se pueden obtener mediante diferentes técnicas, las cuales se diferencian en su manera de medir las interrelaciones entre los píxeles de la imagen. 2.1.4 Segmentación La etapa de segmentación consiste en el proceso de extraer una o más regiones de interés de una imagen. En las imágenes médicas, esta etapa consiste en delinear estructuras anatómicas o patológicas, las cuales resultan homogéneas respecto a una o más características (como intensidad, color o textura). En este proceso, se pueden distinguir dos tareas complementarias: el reconocimiento y la delineación [23]. Durante el reconocimiento se determina, a grandes rasgos, la ubicación del objeto de interés dentro de la imagen. La delineación consiste en determinar la extensión espacial del objeto de forma precisa. Estas dos tareas son cotidianamente llevadas a cabo por un observador humano especialista, pero no es trivial para los algoritmos computacionales. Las diferentes técnicas de segmentación de imágenes, se distinguen por el grado de intervención humana durante el proceso y su automatización. La segmentación manual es realizada por un profesional médico. A pesar de que, en general, existen diferencias entre las segmentaciones realizadas por distintos expertos (variabilidad inter-observador), así como también entre la misma segmentación realizada múltiples veces por el mismo experto (variabilidad intra-observador), este tipo de segmentación es considerado el más preciso [24], aunque consume esfuerzo y tiempo. La segmentación automática no requiere de intervención humana. En este tipo de segmentación, las regiones de interés son determinadas automáticamente mediante algoritmos que procesan la imagen. Son muy útiles para segmentar gran cantidad de imágenes, pero frecuentemente presentan desafíos ante la presencia de múltiples objetos y la ausencia de bordes definidos [25]. Por último, la https://sciwheel.com/work/citation?ids=9919990&pre=&suf=&sa=0https://sciwheel.com/work/citation?ids=10319526&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=8726267&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10331114&pre=&suf=&sa=0 18 segmentación semiautomática implica una conjunción de las dos anteriores, ya que uno o varios pasos manuales pueden preceder o proseguir a un paso automatizado. Por ejemplo, algunas técnicas semiautomáticas pueden requerir el ingreso manual de puntos de referencia o de inicio que luego serán tomados como entrada para el algoritmo automático. En otros casos, el resultado de un paso automatizado, puede ser corroborado y editado manualmente por un experto para obtener un resultado más preciso [19]. 2.1.5. Registración La registración de imágenes consiste en alinear y combinar distintas imágenes de la misma escena, encontrando puntos de una imagen que puedan ser mapeados a los correspondientes puntos de la otra imagen. En el caso de las imágenes médicas, esta etapa del procesamiento es de gran utilidad para correlacionar información procedente de imágenes, en general capturadas mediante distintas modalidades (registro multimodal). Las imágenes utilizadas durante la etapa de registración pueden provenir de un mismo paciente (registro intra-paciente), o de distintos pacientes (registro inter-paciente). Para llevar a cabo el registro de imágenes generalmente se utiliza alguno de los siguientes criterios [26]: ● Marcadores: Consiste en la alineación mediante puntos característicos (denominados marcadores o landmarks) que describen a un objeto de interés dentro de la imagen, los cuales pueden ser identificados en cada una de las imágenes que se desean combinar. Dichos puntos pueden ser indicados manual o automáticamente. ● Segmentación: Consisten en la alineación de forma rígida o deformable de estructuras previamente segmentadas. El éxito de estos tipos de registros de imágenes depende del preprocesamiento previo y de la segmentación. ● Intensidad: Compara los patrones de intensidad en las imágenes. A pesar de que alinear imágenes según este criterio es el más costoso en cuanto a recursos computacionales, es el método que logra el mayor nivel de precisión. 2.1.6 Visualización La visualización de imágenes involucra la transformación, presentación e interacción con los conjuntos de datos asociados a imágenes, especialmente tridimensionales. Mediante la visualización se facilita la inspección visual de las imágenes médicas, pasando de la simple inspección de las sucesivas secciones individuales adquiridas originalmente al análisis de la anatomía tridimensional completa y su exploración desde distintas orientaciones. Estas https://sciwheel.com/work/citation?ids=9919990&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10319536&pre=&suf=&sa=0 19 capacidades proporcionan herramientas poderosas de aplicación al diagnóstico y tratamiento, como así también a la investigación clínica [5]. Se han propuesto diferentes métodos de visualización computacional para el desarrollo de aplicaciones. Por una parte, mediante técnicas de reconstrucción multiplanar, es posible generar vistas de los cortes ortogonales principales (sagital, coronal y axial, que es comúnmente el considerado en la captura) o por la generación de planos oblicuos arbitrarios [3]. Por otro lado, la visualización de imágenes volumétricas se puede llevar a cabo mediante dos técnicas diferentes de rendering sobre la pantalla plana: ● Volume rendering: es una técnica poderosa y versátil, en la cual la visualización resulta directamente de la composición de las contribuciones de los puntos que componen la imagen, proyectados al plano de corte, llevada a cabo mediante algoritmos de ray-casting. ● Surface rendering: que requiere una segmentación y clasificación previa del volumen de la imagen a fin de determinar un modelo explícito para las superficies correspondientes a las estructuras de interés. También es posible generar estos modelos de iso-superficies directamente desde el volumen de la imagen mediante algoritmos conocidos como marching cube. 2.2 Análisis y Elección de Tecnologías 2.2.1 Tecnologías de Visualización Para el diseño del visualizador WEB que se detalla en la sección 3.1 se consideró que el mismo tiene que poder ser ejecutado en un web browser permitiendo que el usuario interactúe con las imágenes tanto 2D como 3D. Para ello, se realizó un relevamiento de algunas herramientas de visualización existentes, que podrían servir como punto de partida del visualizador a desarrollar. Entre los aspectos considerados para el relevamiento se tuvo en cuenta que un usuario de este tipo de herramientas requiere: ● Rotar/Mover las imágenes y volúmenes 3D. ● Definir puntos o áreas de interés sobre las imágenes 2D y/o 3D. ● Ver el estado previo y posterior al procesamiento de una imagen. https://sciwheel.com/work/citation?ids=9278796&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10721433&pre=&suf=&sa=0 20 webDICOM En primera instancia se consideró la herramienta webDICOM [27]. Esta herramienta permite, mediante Javascript y HTML5, visualizar y manipular imágenes DICOM. Entre sus funcionalidades podemos encontrar: zoom, desplazamiento, medición de longitudes y control de brillo y contraste. A continuación se presenta una captura de pantalla de la UI (Figura 2-2): Figura 2-2. Interfaz gráfica de la herramienta webDICOM. Es importante destacar que las imágenes sólo pueden ser cargadas manualmente desde una carpeta local. med3web Luego se evaluó la herramienta med3web [28]. Ésta permite cargar imágenes desde archivo o url. Provee funcionalidades para medición de longitudes, ángulos y áreas. También permite zoom, anotaciones de texto y manipulación de brillo y contraste de las imágenes, como se puede observar en la Figura 2-3: https://sciwheel.com/work/citation?ids=9899106&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899092&pre=&suf=&sa=0 21 Figura 2-3. Interfaz gráfica de la herramienta med3web. Posee también un visualizador 3D simple de las imágenes, con controles para modificar el brillo y contraste, rotar y hacer zoom, como se puede observar en la Figura 2-4. Figura 2-4. Visualizador 3D de la herramienta med3web. La carga de archivos desde una url se debe realizar mediante un archivo de texto que contenga una lista de imágenes a cargar. Papaya Seguidamente, se consideró la herramienta Papaya [29], cuyo entorno se muestra en la Figura 2-5. Esta herramienta está basada en HTML5 y Javascript, soporta los formatos DICOM y NIFTI y permite cargar una imagen o una carpeta con imágenes desde un sistema de archivos https://sciwheel.com/work/citation?ids=9899198&pre=&suf=&sa=0 22 local o una URL remota. Posee un visualizador ortogonal para mostrar las vistas axial, coronal, y sagital de una imagen, como así también funcionalidades de zoom, ajuste de brillo y contraste, desplazamiento y medición de longitudes. Figura 2-5. Interfaz gráfica de la herramienta Papaya. OHIFViewers Finalmente, se evaluó la herramienta OHIFViewers [30]. Esta herramienta es un framework de código abierto, desarrollado y mantenido por la Open Health Image Foundation [31], para construir aplicaciones de imágenes médicas basadas en la web. El framework mencionado anteriormente, utiliza las tecnologías HTML5, CSS y Javascript, en conjunto con la librería Cornerstone [32], para visualizar y manipular imágenes médicas. Está construido con MeteorJS [33], una plataforma Javascript full-stack basada en Node.js, que provee un sistema de extensibilidad de las aplicaciones mediante packages que pueden ser desarrollados específicamente para la aplicación, o pueden ser descargados desde el repositorio principal de paquetes AtmosphereJs [34], u otros repositorios provistos por la comunidad. OHIFViewers presenta 3 aplicaciones de visualización a modo de ejemplo: ● OHIF Viewer: Un visor DICOM de propósito general que puede ser ampliado fácilmente para usos específicos. Entre sus funcionalidades principales, se puede mencionar que permite visualizaruna lista de los estudios existentes y filtrar los mismos en base a diferentes criterios (nombre del paciente, fecha del estudio, modalidad, descripción del estudio, etc.). Además posee herramientas para realizar anotaciones, diversas mediciones, cálculos de áreas, zoom, definir regiones de interés https://sciwheel.com/work/citation?ids=9899098&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899102&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899095&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899104&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899103&pre=&suf=&sa=0 23 (ROI, por Region Of Interest), ajustar brillo y contraste, proyección en modo CINE de las imágenes, rotación y espejado H/V. ● Lesion Tracker: Una aplicación de imagen enfocada en oncología, que está diseñada para facilitar evaluaciones cuantitativas de la carga tumoral a lo largo del tiempo. ● Standalone Viewer: Un visor independiente, que solo ofrece las funcionalidades del lado del cliente de OHIF viewer, con las páginas de la lista de estudios eliminadas. Permite incluir cargadores de imagen adicionales para objetos que no sean DICOM (por ejemplo, PNG, JPEG). El visualizador OHIF Viewer puede ser extendido fácilmente e incluye una amplia variedad de herramientas y funcionalidades para interactuar con las imágenes, y tanto su código como la plataforma sobre la que está desarrollado son abiertos y libres. En la Figura 2-6 se presenta una vista general de su interfaz gráfica donde puede verse la barra de herramientas con algunos de los controles descritos anteriormente: Figura 2-6. Interfaz gráfica de la herramienta OHIFViewer. Meteor soporta distintos frameworks para la construcción de las interfaces gráficas, entre ellos VueJS [35], ReactJs [36] y BlazeJS [37]; siendo este último el utilizado por OHIF como motor de templates. https://sciwheel.com/work/citation?ids=10867280&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10867281&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10867285&pre=&suf=&sa=0 24 Tabla 2-1. Tabla comparativa de características y funcionalidades de las herramientas evaluadas. Herramientas Características y funcionalidades webDICOM med3web Papaya OHIFViewe r HTML5/CSS/JS ✓ ✓ ✓ ✓ Mediciones ✓ ✓ ✓ ✓ Zoom ✓ ✓ ✓ ✓ Brillo y contraste ✓ ✓ ✓ ✓ Desplazamiento ✓ ✗ ✓ ✓ ROI ✗ ✗ ✗ ✓ Rotación ✗ ✗ ✗ ✓ Espejado H/V ✗ ✗ ✗ ✓ Anotaciones de texto ✗ ✓ ✗ ✓ Visualización 3D ✗ ✓ ✗ ✗ Servidores DICOM ✗ ✗ ✗ ✓ Extensible ✓ ✓ ✓ ✓ Open source ✓ ✓ ✓ ✓ Soporte para segmentación ✗ ✗ ✗ ✗ 25 En la Tabla 2-1 se resumen las características y funcionalidades de las herramientas relevadas que se fueron mencionando anteriormente. Como se puede ver todas ellas se basan en HTML5, CSS y Javascript, además de ser open source y permitir la extensibilidad. En relación a las prestaciones y características de cada una, se puede observar que la mayoría de las herramientas brindan las posibilidades de realizar mediciones, zoom, control de brillo/contraste y desplazamiento de las imágenes. Las principales diferencias se hallan en otras funcionalidades como ROI, rotación, espejado y visualización 3D. Debido a que la herramienta webDICOM solo permite cargar imágenes desde un sistema de archivos local y también a sus reducidas funcionalidades, esta herramienta fue descartada. En el caso de med3web, como se mencionó anteriormente la misma no permite una carga de imágenes dinámicamente de una forma sencilla, y posee un conjunto de funcionalidades reducido. Es por ello que se decidió descartarla. Al igual que las dos herramientas anteriores, Papaya presenta funcionalidades muy básicas además de no permitir conexión directa con un repositorio DICOM, lo que también llevó a descartarla. Como conclusión, se puede mencionar que se seleccionó la herramienta OHIFViewer como la más adecuada para ser utilizada como punto de partida en el desarrollo del visualizador, ya que la misma posee la mayoría de las funcionalidades y características esperadas y es la única que soporta integración directa con servidores DICOM. 2.2.2 Tecnologías de almacenamiento Dado que la herramienta de visualización elegida soporta integración con servidores DICOM mediante DICOMWeb (RESTful DICOM) y DIMSE , para la elección y diseño del servidor se realizó una evaluación de las soluciones existentes que permiten comunicación mediante dichos protocolos. DICOMcloud En primera instancia, se consideró el servidor DICOMcloud [38]. Es un servidor DICOMweb de código abierto escrito en C# .NET que puede ser ejecutado en sistemas operativos Windows o en el cloud Azure [39]. Provee una implementación RESTful de los servicios DICOMweb/WADO en DICOM parte 13. El servidor proporciona una implementación de los siguientes servicios: ● QIDO-RS: Consulta basada en ID para objetos DICOM por servicios RESTful. ● WADO-RS: Acceso web a objetos DICOM por servicios RESTful. ● STOW-RS: Almacenado (STore) a través de la web por servicios RESTful. https://sciwheel.com/work/citation?ids=9899099&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899100&pre=&suf=&sa=0 26 ● DICOM WADO-URI: Acceso web a objetos DICOM por URI. Además, el servidor implementa los siguiente servicios RESTful que no forman parte del estándar DICOM: ● DELOW-RS: Borrado (DELete) a través de la web por servicios RESTful. ● DICOM OHIF-Viewer: Servicio de integración con el visualizador OHIF, para devolver la información de los estudios (series e instancias), formateada según los requisitos del mismo. Orthanc Orthanc [40] es un servidor DICOM ligero y open source para imágenes médicas. Tiene una arquitectura liviana e independiente, por lo tanto no se requiere una administración compleja de la base de datos, ni la instalación de dependencias de terceros. Está escrito en C++, lo cual le brinda portabilidad con diferentes sistemas operativos. Proporciona una API RESTful, lo que posibilita interactuar con el servidor desde cualquier lenguaje de computadora. También presenta un mecanismo de plugins o complementos para agregar nuevos módulos que amplían las capacidades principales de su API. Una implementación parcial del estándar DICOMweb está actualmente disponible en forma gratuita como complemento. Algo importante a mencionar es que Orthanc es el servidor de imágenes sugerido por los desarrolladores de OHIF Viewer, lo que facilita la integración de ambos sistemas. https://sciwheel.com/work/citation?ids=9899091&pre=&suf=&sa=0 27 Tabla 2-2. Tabla comparativa de características y funcionalidades de los servidores DICOM evaluados. Servidores Características y funcionalidades DICOMcloud Orthanc Open Source ✓ ✓ Multiplataforma ✗ ✓ DICOMweb/WADO ✓ ✓ Compilación y deployment ● Visual Studio 2017/2015 ● Azure Cloud ● Visual Studio 2017/2015 ● Cmake ● otros compiladores C++ ● Disponibilidad de binarios en repositorios de algunas distribuciones linux ● Docker Dado que DICOMcloud presenta ciertas limitaciones en lo que respecta a las plataformas donde puede ser ejecutado, finalmente se decidió optar por Orthanc como servidor de imágenes. 2.2.3 Tecnologías de procesamiento Para el diseño del segmentador, se comenzó realizando un relevamiento de las tecnologías existentes para el procesamiento de imágenes, dado que se deseaban utilizar en la implementación del mismo. VTK El Visualization Toolkit (VTK) [41] es un software de código libre orientado a objetos para computación gráfica, visualización y procesamiento de imágenes. Posee algoritmos de filtrado para suavizado de imágenes, obtención de contornos, conversión de tipos de imagen, además de algunos widgets para segmentación. Admite una amplia variedad de algoritmos de visualización y técnicas de modelado avanzadas, y aprovecha el procesamiento paralelo de https://sciwheel.com/work/citation?ids=9899329&pre=&suf=&sa=0 28 memoria compartida y distribuida para velocidad y escalabilidad, respectivamente. VTK está diseñado para ser independiente de la plataforma. Esto significa que puede serejecutado en la mayoría de los sistemas operativos, en la web, e incluso en dispositivos móviles. Cabe mencionar que este software tiene su principal foco en aspectos de visualización más que en aspectos de manipulación y procesamiento de imágenes. ITK Insight Toolkit (ITK) [42] es una librería multiplataforma de código abierto que brinda a los desarrolladores una amplia variedad de herramientas de software que permiten el análisis de imágenes. El mismo está basado en una arquitectura probada para el procesamiento, la segmentación y el registro de imágenes científicas en dos, tres o más dimensiones. Esta librería es utilizada en miles de aplicaciones comerciales y de investigación, desde laboratorios importantes hasta investigadores independientes. SimpleITK SimpleITK [43] es una interfaz de programación simplificada para los algoritmos y las estructuras de datos de ITK. Admite bindings para múltiples lenguajes de programación, incluidos C++, Python, R, Java, C#, Lua, Ruby y TCL. Estos bindings permiten a los científicos desarrollar flujos de trabajo de análisis y procesamiento de imágenes en el lenguaje de programación con el que están más familiarizados. El kit de herramientas admite más de 15 formatos de archivo de imagen diferentes y proporciona más de 280 filtros de análisis y procesamiento de imágenes. Dado que las tecnologías evaluadas anteriormente no componen una herramienta o aplicación en sí mismas, debido a que son librerías diseñadas para ser utilizadas en el desarrollo de software, la elección final de la tecnología de procesamiento a utilizar será explicada en la sección 3.2.2, ya que esta elección es parte de las decisiones de diseño correspondientes. 2.2.4 Tecnologías de comunicación Como se mencionó en la sección 2.2.2, el servidor DICOM y el visualizador seleccionados soportan integración entre sí mediante DICOMWeb. Es por esta razón que se decidió implementar la comunicación entre el visualizador y el segmentador de imágenes mediante el protocolo REST, y de esta manera unificar la comunicación entre los 3 módulos bajo un mismo protocolo. Los servicios REST, a diferencia de los servicios web tradicionales, presentan una interfaz basada en el protocolo estándar HTTP, lo cual le otorga una interfaz sencilla con un conjunto pequeño y conocido de operaciones estándar tales como POST, DELETE, PUT y GET los cuales tienen una asociación intuitiva a las operaciones alta, baja, modificación y consulta respectivamente. A través de estos métodos se puede crear (POST), eliminar (DELETE), modificar (PUT) y listar (GET) un recurso. Un recurso es un elemento de información que se https://sciwheel.com/work/citation?ids=9899335&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=9899347&pre=&suf=&sa=0 29 puede considerar como una entidad que representa un concepto de negocio que puede ser accedido públicamente y es identificado por medio de un identificador uniforme de recursos (URI, por Uniform Resource Identifier). Estos pueden tener múltiples formatos de representación tales como HTML, XML, JSON, etc. Este estilo se centra en publicar recursos en vez de un conjunto de métodos y operaciones. Los servicios REST no deben conservar el estado del recurso, es decir, ningún estado (por ejemplo, de la sesión) se almacena en el servidor, toda la información que se requiere para mostrar el recurso que se solicita debe estar en la consulta por parte del cliente. 30 3 Diseño e Implementación Uno de los principales aspectos considerados para el diseño de la herramienta fue que la misma sea extensible, permitiendo incorporar módulos de segmentación de otros estudios de imágenes, como así también extender las posibilidades de visualización e interacción del usuario con la misma. Es por ello que los módulos principales que la componen, y que detallaremos en este capítulo, fueron construidos bajo el concepto de software de código abierto. La herramienta desarrollada, como se puede ver en la Figura 3-1, se compone de 3 módulos principales: ● Un visualizador WEB que permite mostrar los estudios médicos disponibles, como así también visualizar y manipular las imágenes. ● Un Servidor de imágenes DICOM que permite almacenar los estudios, series, imágenes, frames y metadatos. ● Un Servicio de segmentación de imágenes, que posibilita crear y almacenar distintos pipelines de procesamiento, como así también ejecutarlos sobre un conjunto de imágenes, con el fin de obtener las segmentaciones correspondientes. 31 Figura 3-1. Módulos de la aplicación y flujo de interacción entre ellos. En lo que respecta al diseño del servidor DICOM, no se realizaron cambios significativos sobre la implementación del mismo. Solo se hizo una prueba de concepto (PoC, por sus siglas en inglés) del desarrollo de un plugin para resolver la segmentación de las imágenes, que luego se decidió descartar debido a que no se pudieron satisfacer los requerimientos esperados de la segmentación. Esta decisión será explicada en más detalle en la sección 3.2.2 correspondiente al diseño del segmentador de imágenes. A continuación, se detallan todos los aspectos que fueron considerados para la implementación de la herramienta, como así también el uso de distintas librerías externas. 3.1 Diseño del visualizador WEB Para el diseño del visualizador se comenzó realizando una inspección de código con el fin de comprender cómo estaba conformado el layout gráfico de la herramienta OHIFViewer, que fue la herramienta elegida; específicamente el área de visualización de imágenes. Este análisis permitió comprender que el mismo se compone de una grilla o cuadrícula, configurable por el usuario en la cantidad de filas y columnas, que contiene en cada una de sus celdas un viewport que permite visualizar una serie DICOM en 2D, junto con su información y las anotaciones correspondientes. En la Figura 3-2 se muestra una vista de dicho layout: https://app.lucidchart.com/documents/edit/f02dda8a-1687-421a-badf-ed1d43c44fba/0?callback=close&name=docs&callback_type=back&v=1009&s=505 32 Figura 3-2. Descripción del layout original del visualizador OHIF. Tanto la grilla como los viewports están modelados como templates de BlazeJS. Siguiendo este modelado, se decidió crear un nuevo template (viewer3D.html) basado en el template de viewport para la visualización de las imágenes en 3D, como se puede observar en el bloque de código Bloque 3-1: 33 Bloque 3-1. Template del motor BlazeJS para visualización de imágenes 3D. <template name="viewer3D"> <div id="imageViewerViewport3D" class='imageViewerViewport3D' oncontextmenu='return false;' unselectable='on' onselectstart='return false;' tabindex='0' style="width: 100%; height: 100%; text-align: center"> <style> .dg .c { color: black; } #my-gui-container { position: fixed; top: 10px; right: 10px; z-index: 1; } </style> <div class="dg ac" style="position: absolute; top: 0px" ></div> <div id="my-gui-container"></div> <canvas id="wglcanvas" style="width: 100%; height: 100%"></canvas> </div> </template> El template creado implementa su lógica de negocio mediante un script de Javascript (viewer3D.js). El mismo implementa la visualización 3D mediante la librería AMI (A Medical Imaging toolkit) [44], la cual permite visualizar un stack de imágenes DICOM y volúmenes 3D mediante una etiqueta canvas de HTML5 y que está construida sobre ThreeJS [45], una poderosa librería Javascript de propósito general para visualización 3D. Junto con la visualización, se proveen también controles para manipular la orientación de los planos del stack (axial, coronal, sagital), los niveles de brillo y contraste, y la navegación del stack de imágenes, permitiéndose además la variación de la opacidad del volumen visualizado y su color (Fig 3-3). https://sciwheel.com/work/citation?ids=10867383&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=10891465&pre=&suf=&sa=0 34 Figura 3-3. Herramientas para la manipulación de las vistas 3D. Como se mencionó en la sección 2.2.1, las aplicaciones basadas enMeteorJS pueden ser extendidas mediante packages. Aprovechando esta característica, se desarrolló un package para poder mostrar los pipelines de segmentación existentes y seleccionar alguno de ellos para generar una segmentación sobre la serie que se está visualizando actualmente en pantalla. El componente se implementó mediante una lista desplegable que muestra los pipelines por nombre, y también permite buscar los mismos mediante entrada de texto por teclado (Fig 3-4). Figura 3-4. Vista del selector de pipelines. Finalmente, se incluyeron 2 botones junto a la lista desplegable (Fig 3-4). El primero de ellos, denominado “Select mode”, activa el modo que permite seleccionar una segmentación 3D para ajustar sus propiedades de color y opacidad mediante el conjunto de herramientas que se visualiza en la Figura 3-3. En el caso del segundo, denominado “View 3D”, realiza la llamada 35 al servicio de segmentación para segmentar la serie 2D que se está visualizando, pasando por parámetros los identificadores del estudio (studyId), la serie (serieId) y el pipeline seleccionado en la lista desplegable (pipelineId). En la Figura 3-5 se presenta un diagrama de secuencia que modela esta funcionalidad: Figura 3-5. Diagrama de secuencia de una segmentación desde el visualizador. 3.2 Diseño del segmentador de imágenes En lo que respecta al servicio de segmentación de imágenes, se desarrolló una implementación propia, en vez de utilizar alguna existente, ya que se desea que el mismo pueda ser reutilizado en otras aplicaciones. Esto implica que el funcionamiento y la interfaz de comunicación del segmentador deben ser independientes del resto de los módulos que conforman la arquitectura de la aplicación desarrollada. Otro requisito a considerar es que la implementación debe basarse en las tecnologías de procesamiento evaluadas en la sección 2.2.3. Para llevar a cabo el desarrollo del segmentador, se evaluaron distintas alternativas de implementación: 3.2.1 Plugin de Orthanc Se comenzó realizando una PoC con el propósito de verificar si la segmentación podía ser realizada mediante un plugin que extendiera las funcionalidades del servidor Orthanc, aprovechando que tanto el servidor como la librería ITK comparten el mismo lenguaje (C++). La segmentación requiere del acceso a las imágenes, por lo que realizarlo directamente en el repositorio es la forma más eficiente de acceder a las mismas, ya que se elimina el overhead de transmitir las imágenes por red hacia otro módulo. El plugin desarrollado extiende la API Rest del servidor añadiendo un nuevo endpoint que recibe los Ids del estudio y la serie que se desea segmentar, como se observa en bloque siguiente: 36 Bloque 3-2. Definición del endpoint rest en el plugin. ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext *context) { context_ = context; OrthancPlugins::RegisterRestCallback<GetVtk>(context, "/vtk/studies/([^/]*)/series/([^/]*)", true); LogInfo("URI to VTK API: /vtk/"); return 0; } Luego de recibir un request, el plugin delega las tareas de procesamiento y segmentación a la librería ITK. La primera dificultad encontrada con este enfoque fue que todas las etapas (filtros) de los pipelines de procesamiento debían ser definidas a priori, ya que C++ es un lenguaje fuertemente tipado y todos los tipos de datos utilizados se deben definir en tiempo de compilación. Dado que ITK no provee métodos para instanciar los filtros en tiempo de ejecución, se decidió desarrollar una librería propia que implemente factory methods [46] para crear los filtros de ITK en tiempo de ejecución. Con esta implementación, se logró resolver el problema a la hora de instanciar las diferentes etapas del pipeline, pero la misma no logró resolver totalmente el problema descrito anteriormente, ya que es necesario conocer de antemano la representación de los pixeles de las imágenes para instanciar los filtros, como se muestra en el bloque de código 3-3: Bloque 3-3. Ejemplo de carga de una imagen con ITK. constexpr unsigned int Dimension = 2; using PixelType = unsigned char; using ImageType = itk::Image<PixelType, Dimension>; using ReaderType = itk::ImageFileReader<ImageType>; ReaderType::Pointer reader = ReaderType::New(); reader->SetFileName(argv[1]); reader->Update(); ImageType::Pointer image = reader->GetOutput(); Por último, esta implementación no satisface el requisito de independencia de otras aplicaciones planteado al inicio de esta sección, ya que al ser un plugin del servidor DICOM https://sciwheel.com/work/citation?ids=9899097&pre=&suf=&sa=0 37 no se podría reemplazar el segmentador sin un impacto directo en el servidor de imágenes y viceversa. Estos inconvenientes determinaron que la PoC no sea satisfactoria y se decidió descartar este enfoque. 3.2.2 SimpleITK + Spring Boot Dado que el enfoque anterior no permitió obtener los resultados esperados, se decidió realizar una nueva PoC, en este caso utilizando la librería SimpleITK e integrando la misma en una aplicación web desarrollada con Spring Boot. Esta PoC tuvo resultados satisfactorios en lo que respecta a los requerimientos del segmentador y fue la alternativa elegida finalmente para su desarrollo. Spring Boot facilita la creación de aplicaciones basadas en el framework Spring [47], reduciendo considerablemente la configuración necesaria para su desarrollo. Mediante esta tecnología, se desarrolló una aplicación web orientada a servicios (SOA) que permite la creación de pipelines de procesamiento dinámicamente, es decir en tiempo de ejecución, sin necesidad de que los mismos sean compilados previamente. A continuación, se detallan los aspectos relevantes del diseño de esta aplicación. Un pipeline lineal en ITK/SimpleITK se compone de objetos de datos (data objects) y objetos de procesamiento (process objects). Mientras que los data objects (por ejemplo, imágenes y mallas) son utilizados para representar datos, los process objects (por ejemplo, fuentes, filtros y mapeadores) son clases que operan sobre los data objects y pueden producir nuevos data objects. Las fuentes (sources) pueden generar imágenes sin necesidad de una entrada de datos, es decir especificando las dimensiones y los píxeles, o por el contrario, a partir de una entrada de datos (readers). Los filtros (filters) toman datos de entrada y los procesan para producir nuevos datos y los mapeadores (mappers) reciben datos para enviarlos a un archivo o algún otro sistema. En general, el término filtro se usa ampliamente para referirse a los tres tipos. A continuación se presenta una vista, a modo de ejemplo, de un flujo de procesamiento: Figura 3-6. Ejemplo de un pipeline de procesamiento ITK/SimpleITK. https://sciwheel.com/work/citation?ids=9899094&pre=&suf=&sa=0 38 De una forma más general, e ignorando las imágenes intermedias, un pipeline puede ser visto como un conjunto de sources, filters y mappers que interactúan secuencialmente: Figura 3-7. Ejemplo de un pipeline de procesamiento ITK/SimpleITK simplificado. En la aplicación desarrollada, los pipelines y los filtros son modelados como recursos REST y son definidos mediante una notación JSON (Javascript Object Notation). Además son persistidos en una base de datos Postgresql para su posterior utilización. El modelo de persistencia, se compone de 3 atributos: id, name y json que representan el id autogenerado para ese pipeline, el nombre definido por el usuario y la lista de filtros asociados, respectivamente. Dicha lista de filtros se mantiene en formato json (texto plano) y se persiste de la misma manera por comodidad. En la Figura 3-8 se puede apreciar la representación de este modelo: Figura 3-8. Modelo de la entidad que representa a la tabla Pipeline. La aplicación provee servicios para la creación (POST), actualización (PUT), borrado (DELETE) y consulta (GET) de pipelines. Por otro lado, también provee servicios para la consulta (GET) de los filtros disponibles para la definición de los pipelines, y por último, provee un servicio para lageneración y obtención de las segmentaciones en forma volumétrica (3D). Los recursos filter poseen la siguiente representación: 39 Bloque 3-4. Modelo JSON de un Filtro. { "filterClass": "string", "links": { "empty": true }, "methods": [ { "name": "string", "parameters": [ { "casting": "string", "multidimensional": "string", "name": "string", "value": "string" } ] } ], "uuid": "string" } Internamente, los filtros son modelados como clases cuyas relaciones pueden visualizarse en el siguiente diagrama de clases de la Figura 3-9: Figura 3-9. Diagrama de clases de un filtro. Como se puede observar, un filtro (Filter) posee un identificador único (uuid) que es utilizado para resolver la ambigüedad cuando existe más de un filtro con la misma clase en un pipeline, una clase (filterClass) que lo representa en SimpleITK y una lista de métodos (methods) asociados. De igual manera, un método (Method) posee un nombre (name) y una lista de parámetros (parameters). Por último, un parámetro (Parameter) se compone de un nombre que lo describe (name), un valor asociado (value), una clase de casting (casting) que es https://app.lucidchart.com/documents/edit/4b2ac1bf-10c1-4071-a5f7-dcfb9c206e84/0?callback=close&name=docs&callback_type=back&v=805&s=594 40 utilizada para resolver los tipos de datos entre los wrappers y los datos primitivos en java, y una clase opcional para el caso de parámetros multidimensionales (multidimensional), es decir arreglos. El modelo de filtros es utilizado tanto para describir los filtros disponibles al momento de construir un pipeline, como así también para instanciar los mismos al momento de segmentar una imagen. Al describir los filtros disponibles, cada filtro contiene la lista completa de métodos que dicho filtro posee con los valores de sus parámetros en estado nulo. A modo de ejemplo, en el bloque 3-5 se presenta la descripción del filtro RescaleIntensityImageFilter con algunos de sus métodos: 41 Bloque 3-5. Ejemplo de filtro (RescaleIntensityImageFilter) sin instanciar en un pipeline. { "uuid": "29e79c60-c641-4544-8047-bebd95da836a", "filterClass": "org.itk.simple.RescaleIntensityImageFilter", "methods": [ { "name": "getName", "parameters": [] }, { "name": "getOutputMinimum", "parameters": [] }, { "name": "setOutputMaximum", "parameters": [ { "name": "arg0", "casting": "java.lang.Double", "value": null, "hasValues": false, "values": null } ] }, { "name": "getOutputMaximum", "parameters": [] }, { "name": "setOutputMinimum", "parameters": [ { "name": "arg0", "casting": "java.lang.Double", "value": null, "hasValues": false, "values": null } ] } ] } Por el contrario, cuando un filtro es instanciado en un pipeline, solo contiene los métodos de interés para dicha instanciación junto con los valores de sus parámetros, como se puede observar en el bloque 3-6: 42 Bloque 3-6. Ejemplo de filtro (RescaleIntensityImageFilter) instanciado en un pipeline. { "id": 180, "name": "lungs", "filters": [ { "uuid": "11b2d3c0-01b1-4f65-8375-8d8a6b35fdde", "filterClass": "org.itk.simple.RescaleIntensityImageFilter", "methods": [ { "name": "setOutputMinimum", "parameters": [ { "name": "arg0", "casting": "java.lang.Double", "value": "0", "hasValues": false, "values": null } ] }, { "name": "setOutputMaximum", "parameters": [ { "name": "arg0", "casting": "java.lang.Double", "value": "255", "hasValues": false, "values": null } ] } ] } ] } Para la consulta de los filtros, la aplicación expone 2 endpoints que, respectivamente, permiten consultar todos los filtros disponibles y también un filtro específico basándose en su nombre de clase, ya sea en forma simple (BinaryThresholdImageFilter) o canónica (org.itk.simple.BinaryThresholdImageFilter), como se puede observar en la Figura 3-10: 43 Figura 3-10. Endpoints para la consulta de filtros. Como se mencionó anteriormente, la aplicación también provee endpoints para realizar operaciones CRUD (Create, Read, Update, Delete) sobre los pipelines. En la Figura 3-11 se presenta una vista de dichos endpoints: Figura 3-11. Endpoints para las operaciones CRUD sobre los pipelines. Para finalizar, cabe mencionar que en la etapa de diseño también se consideraron aspectos referidos al despliegue (deployment) y ejecución de los módulos que componen la herramienta. Para facilitar estas tareas se decidió proveer contenedores, mediante Docker [48], que permitan desplegar y ejecutar dichos módulos independientemente de la arquitectura o sistema operativo del servidor en donde sean ejecutados. De esta manera se consiguió eliminar la dependencia de un sistema operativo específico o la necesidad de instalar componentes adicionales para su ejecución. En el Anexo A, se presenta una guía de uso de la herramienta y detalles del despliegue. https://sciwheel.com/work/citation?ids=11312955&pre=&suf=&sa=0 44 4 Resultados En este capítulo se exponen los resultados obtenidos de diferentes pruebas de segmentación con el propósito de medir el rendimiento o performance del diseño presentado anteriormente. Los mismos fueron realizados sobre diferentes perfiles de hardware y repetidos varias veces para poder obtener indicadores promedio de dicho rendimiento. A continuación se detallan los diferentes perfiles de hardware utilizados: ● Perfil 1: ○ Dispositivo: Notebook MSI ○ SO: Ubuntu 18.04.5 LTS, kernel 4.15.0-135-generic x86_64 ○ CPU: Intel Core i3-3110M (4 cores) 2400Mhz ○ RAM: 12 GB ○ Browser: Google Chrome 88.0.4324.150 (64 bits) ○ Java: Oracle Java Runtime Environment (JRE) 11.0.10 ● Perfil 2: ○ Dispositivo: Notebook Dell Latitude 7490 ○ SO: Ubuntu 18.04.1, kernel 5.4.0-65-generic x86_64 ○ CPU: Intel Core I7-8650U (8 cores) 1900Mhz ○ RAM: 16 GB ○ Browser: Google Chrome 88.0.4324.150 (64 bits) ○ Java: Open Java Runtime Environment (JRE) 11.0.10 Para las pruebas se realizaron 2 segmentaciones diferentes. La primera, denominada segmentación 1, corresponde a un ventrículo cerebral izquierdo y fue generada a partir de una MRI Orbital compuesta por 176 cortes (o slices) de 256x256 píxeles, obtenida de un paciente masculino de 24 años. La segunda segmentación, denominada segmentación 2, se corresponde con los pulmones y arterias pulmonares y fue generada a partir de una CT con contraste (agente: Omnipaque 350) compuesta por 273 slices de 512x512 píxeles, obtenida de un paciente anónimo. 45 Al momento del arranque de la aplicación con el perfil 1, la memoria utilizada por la JVM es aproximadamente de 210 MB y el promedio de uso del CPU es del 14% (Fig 4-1). Figura 4-1. Utilización de memoria y CPU del perfil 1 al momento del arranque del segmentador. Para generar la segmentación 1, se utilizó un pipeline compuesto por 4 filtros o algoritmos ITK, cada uno con los parámetros que se indican debajo: ● Filtro para reducción de ruido (CurvatureFlowImageFilter): ○ Timestep: 0,125 ○ Iterations: 5 ● Segmentación mediante crecimiento de regiones utilizando de puntos similares conectados (ConfidenceConnectedImageFilter): ○ Iterations: 2 ○ Radius: 1 ○ Multiplier: 3 ○ Seed: [44.921875%, 30.46875%, 48.8636363636364%] equivalente al punto [115, 78, 86] ● Operación morfológica de cierre (BinaryMorphologicalClosingImageFilter): ○ Kernel: Ball ○ Radius: 1 ● Extracción de la región de interés (RegionOfInterestImageFilter): ○ Index: [0%, 0%, 47.159090909%] equivalente al punto [0, 0, 82] 46 ○ Size: [100%, 100%, 52.840909091%] equivalente al punto [256, 256, 93] Durante de las pruebas realizadas en el perfil 1 con dicha segmentación, se pudieron obtener los resultados promedios de tiempos de segmentación, tiempos de visualización (desde que se invocó al servicio de segmentación hasta que se finalizó con el renderizado), uso de memoria y de CPU, que se muestran en la Tabla 4-1: Tabla 4-1. Tabla de resultados del perfil 1 para la segmentación del ventrículo cerebral izquierdo. Iteración Tiempo de Visualizació n (ms) Tiempo de Segmentació n (ms) Memoria (MB)Uso de CPU (%) Tamaño de archivo generado 1 15036 ms 10390 ms 260 MB 58 % 92,1 KB 2 14996 ms 10410 ms 264 MB 47 % 3 14606 ms 10670 ms 346 MB 51 % 4 10463 ms 10290 ms 329 MB 48 % 5 14780 ms 10531 ms 334 MB 50 % Totales 69880 ms 52291 ms 1533 MB 254 % Promedio s 13976 ms 10458,2 ms 306,6 MB 50,8 % A modo de ejemplo, se adjuntan algunas capturas de pantalla de la segmentación realizada. En la Figura 4-2, se puede observar la vista de la segmentación del ventrículo cerebral izquierdo, desde diferentes ángulos: 47 Figura 4-2. Capturas de pantalla de la segmentación del ventrículo cerebral izquierdo vistas en diferentes ángulos. Vista frontal (izq.) y vista anterior derecha (der.). Mientras que en la Figura 4-3 se puede observar la misma segmentación, pero en este caso junto con su vista 2D correspondiente a un corte de la MRI: Figura 4-3. Vista 2D de un corte de la MRI (izq) y vista 3D (der) de la segmentación. Al momento del arranque con el perfil 2, la memoria utilizada por la JVM es aproximadamente de 150 MB y el promedio de uso del CPU es del 2% como se observa a continuación en la Figura 4-4: 48 Figura 4-4. Utilización de memoria y CPU del perfil 2 al momento del arranque del segmentador. En las pruebas realizadas con el perfil 2, se pudieron obtener los siguientes resultados, que se detallan en la Tabla 4-2: Tabla 4-2. Tabla de resultados del perfil 2 para la segmentación del ventrículo cerebral izquierdo. Iteración Tiempo de Visualizació n (ms) Tiempo de Segmentació n (ms) Memoria (MB) Uso de CPU (%) Tamaño de archivo generado 1 8979 ms 6170 ms 206 MB 34.6 % 92,1 KB 2 8243 ms 5470 ms 174 MB 33.4 % 3 8199 ms 5500 ms 205 MB 24.6 % 4 8498 ms 5410 ms 141 MB 24.8 % 5 8341 ms 5570 ms 197 MB 43 % Totales 42260 ms 28120 ms 923 MB 160.4 % Promedio s 8452 ms 5624 ms 184.6 MB 32.08 % 49 Luego se procedió a realizar la segunda prueba, en este caso utilizando la segmentación 2, donde se utilizó un pipeline compuesto por 3 filtros o algoritmos ITK: ● Filtro para reducción de ruido (CurvatureFlowImageFilter): ○ Timestep: 0,01 ○ Iterations: 5 ● Segmentación mediante umbralado de puntos conectados (ConnectedThresholdImageFilter): ○ Lower: -990 ○ Upper: -250 ○ Seed: [152, 277, 152] ● Re-escalado de intensidades (RescaleIntensityImageFilter): ○ OutputMinimum: 0 ○ OutputMaximum: 255 Para el caso del perfil 1, se obtuvieron los siguientes resultados, que se detallan en la Tabla 4-3: 50 Tabla 4-3. Tabla de resultados del perfil 1 para la segmentación de los pulmones y arterias pulmonares. Iteración Tiempo de Visualizació n (ms) Tiempo de Segmentació n (ms) Memori a (MB) Uso de CPU (%) Tamaño de archivo generado 1 70895 ms 32640 ms 161 MB 49.2 % 36,2 MB 2 74539 ms 36320 ms 182 MB 53.3 % 3 73735 ms 35470 ms 208 MB 48.7 % 4 75210 ms 40220 ms 197 MB 51.8 % 5 74172 ms 39628 ms 203 MB 52.4 % Totales 368551 ms 184278 ms 951 MB 255.4 % Promedio s 73710,2 ms 36855,6 ms 190.2 MB 51.08 % A continuación se adjuntan algunas capturas de pantalla de dicha segmentación en donde pueden visualizarse los pulmones y sus arterias desde una vista frontal con superposición del eje axial (izq.) y del eje coronal (der.) Figura 4-5. Vistas 3D de la segmentación de pulmones y arterias pulmonares. 51 Para el caso del perfil 2, se obtuvieron los siguientes resultados, que se detallan en la tabla 4-4: Tabla 4-4. Tabla de resultados del perfil 2 para la segmentación de los pulmones y arterias pulmonares. Iteración Tiempo de Visualizació n (ms) Tiempo de Segmentació n (ms) Memori a (MB) Uso de CPU (%) Tamaño de archivo generado 1 48878 ms 16160 ms 180 MB 24.6 % 36,2 MB 2 55355 ms 22320 ms 212 MB 28.1 % 3 54710 ms 21500 ms 113 MB 28.3 % 4 46567 ms 20000 ms 212 MB 15.3 % 5 62030 ms 23330 ms 211 MB 46.5 % Totales 218300 ms 103310 ms 948 MB 142.8 % Promedio s 43660 ms 20662 ms 189.6 MB 28.56 % Haciendo un análisis de los resultados obtenidos, se puede apreciar que tanto el uso promedio de CPU, como así también los tiempos de segmentación, de visualización de los resultados y la memoria utilizada difieren entre ambos perfiles. En primer lugar, los tiempos de segmentación y la memoria utilizada dependen de los algoritmos empleados y de la cantidad de slices a procesar, dado que la primer segmentación utiliza 4 algoritmos y reduce la cantidad de slices mediante ROI, mientras que la segunda solo utiliza 3 algoritmos y no aplica reducción de slices. En segundo lugar, los tiempos de visualización se ven afectados en mayor medida a la diferencia de tamaño de los volúmenes VTK generados y la transmisión de dichos volúmenes a través de la red, lo que genera mayores tiempos de latencia. Por último, las disimilitudes en la utilización de CPU se deben principalmente a las diferencias tecnológicas entre ambos procesadores. 52 5 Conclusiones y trabajos futuros En el presente capítulo se resumen los aspectos más relevantes del trabajo realizado. También, se recapitulan los resultados obtenidos mediante las pruebas de la herramienta en diferentes perfiles de hardware. Finalmente, se enumeran los trabajos futuros que pueden surgir a partir del presente trabajo. 5.1 Conclusiones Aunque hoy existen diversas soluciones existentes para procesamiento y segmentación de imágenes médicas, ninguna está consolidada de manera general ya que su utilización suele depender del tipo de imagen y aplicación considerada. En este sentido, el uso de ITK como soporte al procesamiento de imágenes permite cubrir diferentes situaciones de segmentación con algoritmos complejos y puede ser extendida con nuevos algoritmos. Otro aspecto a señalar es que las herramientas disponibles, en general, dependen de componentes adicionales o están diseñadas para funcionar en un sistema operativo o ambiente específico limitando su uso. En este trabajo se presentó el desarrollo de una herramienta web open-source para la gestión, visualización y segmentación de imágenes digitales 2D y 3D, que se diseñó buscando eliminar estas dependencias o limitaciones. La herramienta provee un servidor DICOM para acceder a los estudios individuales o series de imágenes e implementa un servicio de segmentación de las mismas, mediante varios de los filtros provistos por la librería para análisis de imágenes ITK. También brinda facilidades de visualización de las imágenes 2D o 3D y herramientas básicas para control de brillo y contraste, rotación, zoom, anotaciones y mediciones. Su extensibilidad facilita la incorporación de nuevas características y soportes. También es importante mencionar que al utilizar tecnologías web multiplataforma, facilita el acceso y procesamiento de imágenes desde cualquier estación de trabajo con acceso a internet. El diseño de la herramienta se realizó teniendo en cuenta los estándares de comunicación tanto de las imágenes DICOM (WADO, DICOMWeb) como también de los módulos que la componen (REST), lo que facilita la integración de la herramienta con otras soluciones. 5.2 Trabajos futuros Dadas las posibilidades de extensión de la herramienta y sus módulos, se podría considerar a futuro la posibilidad de implementar la comunicación entre los mismos utilizando gRPC [49] y Protocol Buffers [50] para mejorar su performance. https://sciwheel.com/work/citation?ids=11009315&pre=&suf=&sa=0 https://sciwheel.com/work/citation?ids=11009324&pre=&suf=&sa=0 53 Por otro lado, podría considerarse implementar los pipelines de segmentación como grafos para poder realizar procesamientos paralelos y soportar filtros ITK de múltiples imágenes de entrada. Finalmente, podría implementarse alguna integración del segmentador con Python, y de esta manera hacer uso de la implementación de SimpleITK para este lenguage de scripting posibilitando la incorporación de algoritmos basados en inteligencia artificial a las segmentaciones; tema que tiene una amplia investigación y desarrollo en la actualidad. 54 Anexo A: Utilización de la herramienta En este anexo se presenta una breve guía sobre la utilización
Compartir