Metodología
Para la realización de este proyecto se hizo uso de la metodología Rational Unified Process, abreviado como RUP, el cual es un proceso de ingeniería de software propuesto por Rational® Software que es iterativo e incremental[34]. La metodología se puede adaptar a las necesidades del proyecto ya que cada proyecto es diferente y por lo tanto se modifican los procesos a realizar dependiendo de lo que se necesite. Además, este se puede describir en dos dimensiones ya que en una fase se realizan varias iteraciones y en cada una de ellas se pueden hacer más de un proceso a la vez, un ejemplo se puede ver en la imagen a continuación[41]:
Figura : Ciclo de Vida RUP - Fases e Iteraciones [18]
Como se puede observar en la imagen anterior RUP define cuatro fases:
-
Iniciación: Se delimita el alcance del proyecto.
-
Elaboración: Se realiza el análisis y plan del proyecto a realizar
-
Construcción: Se realiza el desarrollo de los componentes establecidos y se integran al proyecto.
-
Transición: Se hace la transición hacia el usuario del producto.
Teniendo en cuenta que el tiempo para realizar el Trabajo de Grado es corto, no es viable realizar la fase de Transición, por lo tanto se realizarán las primeras tres fases de la misma.
III - CONTRIBUCIONES -
Pipeline:
Es un estilo arquitectural de software que permite segmentar y ejecutar en paralelo componentes a los que se llaman Filtros, a través de conectores, llamados Tuberías, formando, al ejecutarlo, un flujo de datos, en donde los filtros transforman uno o más datos de entradas en uno o más datos de salidas, los cuales se transportan entre las tuberías de un filtro al otro.[33]
Filtros:
Componente de un pipeline que recibe unos datos de entrada (inputs), los procesa internamente, y da como resultado unos datos de salida(outputs) que son generalmente pasados a otros filtros que los reciben como datos de entrada.
Output:
Datos de salida generadas por un filtro que son consecuencia del procesamiento de datos de entrada o Inputs.
Input:
Datos de entrada de un filtro que son procesados por el mismo para generar un resultado o dato de salida (outputs).
ITK:
El “Insight Segmentation and Registration Toolkit” es una librería gratis, open-source, y multiplataforma, desarrollada en C++, que ofrece herramientas para la visualización y análisis de imágenes, especialmente ofrece mecanismos de segmentación, registro, y filtrado. Al igual que VTK, ITK provee una arquitectura de tubos y filtros para realizar el procesamiento de las imágenes.[25]
VTK:
VTK, también llamado “The Visualization Toolkit”, es una librería gratis, open-source, y multiplataforma, desarrollada en C++ por el grupo Kitware que permite la visualización y procesamiento de imágenes. Para lograr esto transforma datos a entradas de imágenes que facilitan el análisis de los mismos y por lo tanto hace uso de flujo de datos, o pipelines, para realizar el procesamiento de los datos. Es por esta razón que el enfoque de la investigación de la herramienta es el análisis de cómo funciona el sistema de tubos y filtros del toolkit.[54]
Estado del Arte
Medical Image Processing, Analysis, and Visualization (MIPAV):
Es una aplicación multiplataforma desarrollada en lenguaje de programación Java por el “Center for Information Technology” en los Institutos Nacionales de Salud de los Estados Unidos (NIH por sus siglas en ingles), que permite el análisis y la visualización de imágenes medicas, que además ofrece la posibilidad de compartir datos y análisis a través de sitios remotos en internet. Funciona también como un API por lo que permite el desarrollo de otras aplicaciones de procesamiento de imágenes y visualización.
La manera como funciona esta aplicación se puede resumir de la siguiente forma: Al incluir un archivo de imagen, se lee el encabezado del mismo para de esta manera asignarle el buffer de tipo-de-dato que debe leer a la imagen. Por lo tanto este buffer guarda la información de los tipos de datos de la imagen, tanto las nativas como extendidas, y es por esto que también se puede referir a este buffer de datos como modelo de la imagen. Así mismo, existen tres bloques funcionales que hacen uso de este modelo, el primero es el de las Vistas, que permite visualizar y manipular la imagen; luego esta el modulo de Volumen de Interés (VOI por sus siglas en ingles) el cual permite la segmentación interactiva; y por último esta los algoritmos de procesamiento y las herramientas de análisis.[29][30][31]
CreaTools:
Es un framework open-source y multiplataforma en lenguaje de programación C++ desarrollado por el grupo de investigación CREATIS, que permite la visualización y procesamiento de imágenes médicas al igual que un ambiente para el desarrollo de herramientas[12]. Para realizar el procesamiento de las imágenes el framework permite la creación de una estructura de “Tubos y Filtros” o “Pipeline” cuyo principal componente son las cajas negras que hacen las veces de filtros, y por lo tanto el BBTK[14] o Black Box Toolkit es uno de los elementos claves que hacen parte de Creatools, ya que este permite el desarrollo y manejo de los filtros que luego se incorporan al pipeline, los cuales se conectan a través de scripts bbs (black box script)[11]. Así mismo, si un pipeline es estable y se necesita re-implementar, se puede convertir a este en una caja negra que se maneja como un filtro más en otro pipeline. Además, Creatools proporciona herramientas para los usuarios finales que permiten la visualización y edición de las imágenes médicas tales como el recorte, o el remuestreo[13]. Así mismo, tiene un elemento llamado creaContours el cuál, como su nombre lo indica, se usa para la creación de formas de contornos en las imágenes que permiten obtener información de estas. Aparte de las librerías propias ya mencionadas, se hace uso de librerías como ITK y VTK para el manejo de las imágenes, y de QT y WxWidgets para la realización de las interfaces.[13]
Medical Imaging Interaction Toolkit (MITK):
Es un toolkit, open-source y multiplataforma, realizado por el Centro de Investigación Alemán de Cáncer que permite el desarrollo de software para el análisis de imágenes médicas basado en, y haciendo uso de, los toolkits ITK y VTK, pero que además, ofrece características propias que no hacen parte de las librería mencionadas, y que son necesarias para el desarrollo de software interactivo de visualización de imágenes médicas. Una de estas características se refiere a la coordinación de las visualizaciones y sus interacciones. Esto refiere a que, al visualizar más de una área de despliegue de una misma imagen, al realizar un cambio en alguno de los despliegues se deben actualizar todos los otros para que sean consistentes, y esto lo logran generando un árbol de datos que definen todos los contenidos de estas áreas, y haciendo uso de un diseño modelo-vista-controlador. [48][10]
Figura : Relación de MITK con ITK, VTK, y toolkits de interfaz gráfica[48]
Como se puede ver en la figura, MITK usa las clases de VTK, y deriva muchas de ITK además de usarlas, incluyendo el sistema de tubos y filtros que este provee; y además es independiente de la librerías de interfaz gráfica, que en este caso son Qt y FLTK[48].
VolView:
Es un sistema interactivo de usuario final, multiplataforma, y open-source para la visualización del volumen de imágenes que permite el análisis de imágenes médicas y científicas en 3D que esta construida a partir de los toolkits VTK e ITK. Por lo tanto proporciona herramientas como los de filtrado, contornos, medidas, histograma y anotaciones. Además, soporta una arquitectura de plug-in que permite la adición, en tiempo de ejecución, de herramientas de segmentación y procesamiento.[51][10]
Khoros
Es un ambiente visual de desarrollo, cuya especialidad son sus herramientas para el procesamiento de imágenes y señales, desarrollado por la Universidad de Nuevo México. Este provee un lenguaje visual basado en el paradigma de flujo de datos que permite la construcción de aplicaciones, llamado Cantata que esta conformado por elementos llamados “glyph” que son las cajas dentro del flujo, y las cuales se conectan unas a otras por medio de la definición de sus entradas y salidas en donde la entrada de un glyph es la salida de otra. Además de esto, permite compartir datos de programas simultáneamente entre usuarios en una red.[8][26][47]
Figura : Aplicación de Khoros en Cantata[27]
Dostları ilə paylaş: |