SDD 2.1 - pegasus.javeriana.edu.copegasus.javeriana.edu.co/~CIS1510AP04/Docs/SDD.2.1.0.pdf · -...
-
Upload
truongminh -
Category
Documents
-
view
242 -
download
0
Transcript of SDD 2.1 - pegasus.javeriana.edu.copegasus.javeriana.edu.co/~CIS1510AP04/Docs/SDD.2.1.0.pdf · -...
SISTEMA DE APOYO PARA IDENTIFICACIÓN Y ESTIMACIÓN DE
VOLUMETRÍA DE NÓDULOS PULMONARES.
SDD
2.1.0
Software Design Document
Pontificia Universidad Javeriana
José Alejandro León Andrade
Ingeniería de Sistemas
2015
CONTENIDO
ILUSTRACIONES ............................................................................................................................. 2
TABLAS .......................................................................................................................................... 3
1. VISIÓN GENERAL ................................................................................................................... 4
1.1. PROPÓSITO .................................................................................................................... 4
1.2. ALCANCE ........................................................................................................................ 4
2. DEFINICIONES ........................................................................................................................ 4
3. REFERENCIAS ......................................................................................................................... 6
4. DISEÑO CONCEPTUAL ........................................................................................................... 7
4.1. DISEÑO DE SOFTWARE EN CONTEXTO .......................................................................... 7
5. INFORMACIÓN DE DESCRIPCIÓN DE DISEÑO ........................................................................ 7
5.1. STAKEHOLDERS ............................................................................................................. 7
5.2. ARQUITECTURA DE DISEÑO .......................................................................................... 7
5.3. GRAFO DE NAVEGABILIDAD .......................................................................................... 9
6. PUNTOS DE VISTA DEL DISEÑO ........................................................................................... 11
6.1. VISTA DE CONTEXTO ................................................................................................... 11
6.1.1. DIAGRAMA DE CASOS DE USO ............................................................................ 11
6.2. VISTA DE COMPOSICIÓN ............................................................................................. 17
6.2.1. DIAGRAMA DE COMPONENTES .......................................................................... 17
6.3. VISTA LÓGICA .............................................................................................................. 18
6.3.1. DIAGRAMA DE CLASES ........................................................................................ 18
6.3.2. PATRONES ........................................................................................................... 19
6.3.3. INTEGRACIÓN ENTRE HERRAMIENTAS ................................................................ 19
6.4. VISTA DE INTERACCIÓN ............................................................................................... 20
6.4.1. DIAGRAMAS DE SECUENCIAS .............................................................................. 20
7. PUNTOS DE VISTA DEL DISEÑO ........................................................................................... 25
7.1 DESCRIPCIÓN DEL PRODUCTO .................................................................................... 25
ILUSTRACIONES Ilustración 1. Arquitectura del sistema (MVC) .............................................................................. 8
Ilustración 2. Arquitectura del procesamiento de datos (Pipeline o de tubería) ......................... 9
Ilustración 3. Grafo de navegabilidad de la aplicación.................................................................. 9
Ilustración 4. Diagrama de casos de uso ..................................................................................... 12
Ilustración 5. Diagrama de componentes ................................................................................... 17
Ilustración 6: Diagrama de clases. ............................................................................................... 19
Ilustración 7: Diagrama de secuencia para ver el histograma .................................................... 21
Ilustración 8: Diagrama de secuencia para hacer algoritmo ....................................................... 22
Ilustración 9: Diagrama de secuencia para usar herramienta de volumetría ............................. 24
TABLAS Tabla 1. Interfaces entre componentes ...................................................................................... 18
1. VISIÓN GENERAL
1.1. PROPÓSITO Este documento contiene información del diseño de la aplicación para la
identificación y estimación de volumetría de nódulos pulmonares. Se realiza con el
fin de clarificar la implementación de las funcionalidades del software y de esa forma
facilitar el desarrollo y mantenimiento del mismo.
Este documento ofrece diferentes vistas de diseño, con las cuales se provee
información específica como lo son las interacciones en el sistema, interacciones del
usuario con el sistema, la comunicación entre diferentes elementos del sistema y la
arquitectura de software entre otros.
1.2. ALCANCE El diseño del sistema y por tanto la información contenida en este documento se
limita a cumplir con los requerimientos del sistema y por tanto con los objetivos del
proyecto. Se limita a presentar los parámetros especificados por el estándar IEEE
1016-2009 [1].
2. DEFINICIONES
- Arquitectura MVC: Patrón que permite separar la interfaz gráfica de usuario, de
los datos y de la lógica apoyándose en tres componentes: modelo, vista y
controlador[2].
- Arquitectura Pipeline: una tubería (pipeline) conecta componentes (filtros) por
medio de conectores (pipes), de modo que los datos se procesan y ejecutan a
manera de flujo. Los datos se transportan a través de las tuberías entre los filtros,
transformando gradualmente las entradas en salidas[3].
- Controlador: Responde a eventos provocados por el usuario que implican
cambios en el modelo y la vista, dando una correcta gestión a las entradas de
usuario[2].
- Imagen médica: colección de medidas o valores en el espacio bidimensional (2D)
o tridimensional (3D). Dichas medidas o intensidades de imagen son la absorción
de radiación de rayos X, son adquiridas en el dominio continuo (para este
proyecto en particular). La posición de cada medida se conoce como píxel en
imágenes 2D y en imágenes 3D se le llama vóxel[4]
- ITK: Insight Segmentation and Registration Toolkit, es una biblioteca de código
abierto multiplataforma que provee herramientas para el análisis de
imágenes[5].
- Modelo: Representación de los datos y reglas de negocio[2].
- Nódulo Pulmonar Solitario (NPS): masa pulmonar menor de 3 cm de diámetro,
puede constituir un hallazgo incidental y comúnmente representa un tumor
benigno[6].
- QT: Biblioteca multiplataforma para desarrollar aplicaciones con interfaz gráfica
de usuario[7].
- SDD: Software Design Descriptions (Descripción del Diseño de Software) [1].
- TAC: Tomografía que utiliza el tomógrafo axial computarizado; también se
denomina tomografía asistida por computadora[8].
- Tomógrafo: Aparato de rayos X ideado para obtener radiografías seccionales
(tomogramas) del cuerpo[8].
- VTK: Visualization Toolkit, es una biblioteca de código abierto multiplataforma,
que provee herramientas y algoritmos para hacer visualización de datos[9].
- Vista: Permite mostrar la información del modelo en un formato adecuado que
permita la interacción del usuario[2].
- VTK: Visualization Toolkit, es una biblioteca de código abierto multiplataforma,
que provee herramientas y algoritmos para hacer visualización de datos [10].
3. REFERENCIAS [1] Institute of Electrical and Electronics Engineers, IEEE standard for information
technology--systems design--software design descriptions. New York: Institute of
Electrical and Electronics Engineers, 2009.
[2] J. V. Sonia, D. Villa Zapata, y S. Cardona Torres, Programación Avanzada en Java,
Primera. Armenia, Quindio: Elizcom S.a.s.
[3] C. B. Reynoso, «Introducción a la Arquitectura de Software», Univ. B. Aires, vol. 33,
2004.
[4] E. Coto, «Métodos de segmentación de imágenes médicas», Univ. Cent. Venezuela
Lect. En Cienc. Comput., vol. 1, pp. 9–15, 2003.
[5] «ITK - Segmentation & Registration Toolkit». [En línea]. Disponible en:
http://www.itk.org/. [Accedido: 05-abr-2015].
[6] H. Singh, Atlas Practico de Tomografia Computada. Jaypee Brothers, Medical
Publishers, 2012.
[7] «Qt Project». [En línea]. Disponible en: http://qt-project.org/. [Accedido: 25-feb-
2014].
[8] B. J. Melloni, I. Dox, y G. M. Eisner, Diccionario médico ilustrado de Melloni. Reverté,
1982.
[9] «VTK – The Visualization Toolkit». [En línea]. Disponible en: http://www.vtk.org/.
[Accedido: 03-abr-2015].
[10] «VTK - The Visualization Toolkit». [En línea]. Disponible en: http://www.vtk.org/.
[Accedido: 19-nov-2013].
[11] T. Reenskaug y J. O. Coplien, «The DCI architecture: A new vision of object-
oriented programming», Artic. Start. New Blog14pp Httpwww Artima
Comarticlesdcivision Html, 2009.
[12] Y. D. González y Y. F. Romero, «Patrón Modelo-Vista-Controlador.», Rev. Telem
Tica, vol. 11, n.o 1, pp. 47–57, 2012.
[13] L. Ibanez, W. Schroeder, L. Ng, y J. Cates, «The ITK software guide», 2003.
[14] W. J. Schroeder, K. Martin, L. Avila, y C. Law, The VTK User’s Guide. Kitware. Inc,
1998.
[15] M. Fowler y K. Scott, UML gota a gota. Pearson Educación, 1999.
[16] B. C. Falgueras y U. O. de Catalunya, Ingeniería del software. Universitat Oberta
de Catalunya, 2002.
[17] «ITK: Insight Toolkit Documentation». [En línea]. Disponible en:
http://www.itk.org/Doxygen47/html/index.html. [Accedido: 06-abr-2015].
[18] «Documentation | VTK». [En línea]. Disponible en:
http://www.vtk.org/documentation/. [Accedido: 06-abr-2015].
[19] «Qt Documentation». [En línea]. Disponible en: http://doc.qt.io/. [Accedido: 06-
abr-2015].
[20] R. S. Pressman, R. O. Martín, y L. J. Aguilar, Ingeniería del software: un enfoque
práctico. Mac Graw-Hill, 1997.
4. DISEÑO CONCEPTUAL
4.1. DISEÑO DE SOFTWARE EN CONTEXTO A lo largo de este documento se mostrará todos los temas relacionados con el diseño
de la aplicación, ya que ello es muy importante al momento de dar continuidad con
el proyecto en un futuro trabajo.
5. INFORMACIÓN DE DESCRIPCIÓN DE DISEÑO
5.1. STAKEHOLDERS Los stakeholders para este proyecto son principalmente radiólogos y más
específicamente aquellos que trabajan en el hospital San Ignacio de Bogotá.
5.2. ARQUITECTURA DE DISEÑO La arquitectura del sistema tiene dos perspectivas: una desde la aplicación para el
usuario, y otra desde el procesamiento de los datos ya sea de imágenes o de
visualización.
En cuanto se refiere a la aplicación, se implementa una arquitectura que usa el
patrón de modelo-vista controlador (MVC), la cual busca separar los datos y la lógica
de negocio de la interfaz de usuario y del módulo que controla la comunicación entre
ellos, dando la sensación al usuario de la aplicación, que está manipulando los datos
directamente (modelo) [11].
Teniendo en cuenta que se trabaja con tres bibliotecas diferentes ITK[5] (Modelo),
VTK [10]-QT [7] (Vista), el uso de este patrón es necesario y útil en esta aplicación,
ya que existe una separación clara entre los componentes del programa, lo cual
permite que su implementación pueda hacerse por separado y luego unirlos en
tiempo de ejecución, con lo que se facilita también el reemplazo y modificación de
cada uno de los componentes del sistema [12].
En este caso, el modelo es la representación de los datos, es decir todo lo
relacionado con el procesamiento de imágenes médicas, donde se implementan
filtros de ITK. La vista permite mostrar la información que provee el modelo en un
formato adecuado para ser visualizado por el usuario, el cual podrá interactuar con
dichos datos, donde se implementan filtros de VTK en conjunto con métodos de QT.
Finalmente, el controlador responde a los eventos provocados por el usuario en la
interfaz (como un clic o digitar un texto), lo cual implica cambios tanto en el modelo
como en la vista, dando una correcta gestión a las entradas que se presentan [2].
Ilustración 1. Arquitectura del sistema (MVC)
En cuanto al procesamiento de datos, se usa la arquitectura de pipeline (o de tubería),
propios de ITK y VTK, con la cual se pueden convertir o procesar datos de entrada
como imágenes o mallas en datos de salida, mediante diferentes tipos de filtros. Esta
arquitectura soporta la actualización automática de los filtros cuando hay un cambio
en la entrada o en su estado interno, además posee la ventaja que puede romper
datos en piezas más pequeñas para procesarlas una por una, y finalmente juntar los
resultados para dar la salida deseada [13][14].
Ilustración 2. Arquitectura del procesamiento de datos (Pipeline o de tubería)
5.3. GRAFO DE NAVEGABILIDAD Las interacciones que tendrá el usuario con el sistema, pueden verse gráficamente
mediante las pantallas que se muestran, controles en cada una de ellas, o cambios
en los diferentes componentes. A continuación se muestra un gráfico donde puede
apreciarse las diferentes pantallas, controles o cambios que puede haber en cada
una de ellas.
Ilustración 3. Grafo de navegabilidad de la aplicación
Las diferentes relaciones o interacciones entre las pantallas, se pueden visualizar bajo
una flecha direccionada que tiene un identificador para efectos de la descripción,
además las flechas son bidireccionales, lo que indica que se puede navegar de una
pantalla a su antecesora:
1. De pantalla principal a vista sagital:
a. La ventana que tiene los 4 paneles o vistas, es cambiada para mostrar
únicamente la vista sagital en toda la ventana.
2. De pantalla principal a vista coronal:
a. La ventana que tiene los 4 paneles o vistas, es cambiada para mostrar
únicamente la vista coronal en toda la ventana.
3. De pantalla principal a vista transversal:
a. La ventana que tiene los 4 paneles o vistas, es cambiada para mostrar
únicamente la vista transversal en toda la ventana.
4. De pantalla principal a vista de volumen:
a. La ventana que tiene los 4 paneles o vistas, es cambiada para mostrar
únicamente la vista de volumen o combinación de los tres planos en toda
la ventana.
5. De vista sagital a cualquier otra vista:
a. Estando en la vista sagital, es posible ir a cualquiera de las otras vistas.
6. De vista coronal a cualquier otra vista:
a. Estando en la vista coronal, es posible ir a cualquiera de las otras vistas.
7. De vista transversal a cualquier otra vista:
a. Estando en la vista transversal, es posible ir a cualquiera de las otras
vistas.
8. De vista de volumen a cualquier otra vista:
a. Estando en la vista de volumen o combinación de tres planos, es posible
ir a cualquiera de las otras vistas.
9. De pantalla principal a pantalla de histograma:
a. Al seleccionar la opción de “histograma” se abre una nueva ventana con
el histograma de la imagen de entrada, allí se puede hacer zoom y pan al
histograma, además de cambiar el tipo de gráfico y de utilizar máscaras
para realizar el algoritmo.
10. De pantalla principal a panel de datos:
a. Al seleccionar la opción de “datos”, se abre un panel en la ventana
principal, que indica los datos principales del paciente y de la imagen,
obtenidos del encabezado de la imagen DICOM.
11. De pantalla principal a panel de algoritmo:
a. Al seleccionar la opción de “algoritmo”, se abre un panel en la ventana
principal, que contiene el paso a paso del algoritmo.
12. De pantalla principal a panel de volumetría:
a. Al seleccionar la opción de “volumetría”, se abre un panel en la ventana
principal que contiene una herramienta para ver la ubicación de las
regiones candidatas y sus respectivos volúmenes.
13. De panel de volumetría a vista de modelo tridimensional:
a. Al seleccionar la opción de “Ver ubicación en 3D”, se abre una nueva
ventana con el modelo en tres dimensiones del pulmón, los vasos y la
ubicación de la región candidata seleccionada.
14. De pantalla principal a pantalla de modelo tridimensional:
a. Al seleccionar la opción de “modelo tridimensional”, se abre una nueva
ventana que da la posibilidad de visualizar un modelo en tres
dimensiones del pulmón o los vasos, o las regiones candidatas o los tres,
además de la opción de ver los objetos con la opacidad deseada.
6. PUNTOS DE VISTA DEL DISEÑO
6.1. VISTA DE CONTEXTO
6.1.1. DIAGRAMA DE CASOS DE USO El diagrama de casos de uso proporciona una forma de demostrar los límites y
funcionalidades del sistema, debe ser una guía tanto para el usuario del sistema
como para los desarrolladores del mismo, por tal razón se usa un lenguaje no
formal[15].
El diagrama de casos de uso se muestra a continuación, y después su respectiva
documentación:
Ilustración 4. Diagrama de casos de uso
1. Iniciar aplicación: Al hacer clic sobre el ejecutable, la aplicación inicia con la
pantalla principal y los cuatro paneles en blanco. Todos los iconos están
desactivados menos el de “Abrir”.
2. Abrir imagen DICOM: El usuario puede abrir una imagen DICOM, buscando
un directorio en cualquier carpeta del computador.
3. Ver Histograma: El usuario puede ver el histograma de la imagen de entrada
al presionar el botón de “histograma”, puede cambiar el tipo de gráfico y
además puede usar una imagen binaria para ver el histograma en una región
específica.
3.1. Cambiar tipo de gráfico: El usuario es capaz de cambiar el tipo de gráfico
o la forma en cómo se muestran los datos del histograma.
3.1.1. Ver gráfico acumulado: El usuario puede elegir que se muestren
los datos del histograma de forma acumulada bajo una curva.
3.1.2. Ver gráfico de líneas: El usuario puede elegir que se muestren los
datos del histograma en forma de líneas, es decir que cada uno de
los puntos del histograma se junta mediante una línea recta a los
siguientes puntos.
3.1.3. Ver gráfico de barras: El usuario puede elegir que se muestren los
datos del histograma en forma de barras, es decir la forma común
de ver los histogramas.
3.1.4. Ver gráfico de puntos: El usuario puede elegir que se muestren
los datos del histograma en forma de puntos.
3.2. Usar máscara: El usuario puede seleccionar una máscara para reducir el
volumen en donde se hace el histograma.
3.2.1. Seleccionar máscara: El usuario puede elegir una máscara entre
una lista que contiene las imágenes que ya han sido obtenidas en el
algoritmo.
3.3. Cambiar límites de gráfico: El usuario puede seleccionar un límite
mínimo y un límite máximo para visualizar el histograma, ya que el rango
de grises de una imagen DICOM es muy amplio.
4. Ver todas las vistas: El usuario puede seleccionar la vista que más le
convenga para ver e interactuar con las imágenes DICOM.
4.1. Ver vista transversal: El usuario puede seleccionar la vista transversal
para interactuar únicamente con ese plano.
4.2. Ver vista coronal: El usuario puede seleccionar la vista coronal para
interactuar únicamente con ese plano.
4.3. Ver vista sagital: El usuario puede seleccionar la vista sagital para
interactuar únicamente con ese plano.
4.4. Ver vista de volumen: El usuario puede seleccionar la vista de volumen
para interactuar de forma concurrente con los tres planos anteriores y
ver cambios en los cortes y en la visualización de las imágenes.
4.5. Cambiar de corte (slice): El usuario puede en las tres vistas principales
(coronal, sagital y transversal) cambiar el corte que se visualiza.
4.6. Cambiar visualización: El usuario puede en las tres vistas principales
(coronal, sagital y transversal) cambiar la forma de visualización,
haciendo cambio en la forma en cómo se ven las intensidades de grises.
5. Ver panel de algoritmo: El usuario puede ver un panel en la pantalla principal
donde puede desarrollar paso a paso el algoritmo para encontrar candidatos,
además puede ver las imágenes que ya se han realizado.
5.1. Ver imagen: El usuario puede ver en cualquier momento las imágenes
que ya haya realizado durante el algoritmo.
5.1.1. Ver entrada: El usuario puede ver la imagen de entrada, que
corresponde a la imagen en escala de grises de formato DICOM.
5.1.2. Ver mediana: El usuario puede ver la imagen luego de realizado el
filtro de mediana.
5.1.3. Ver región de pulmones: El usuario puede ver la imagen de
segmentación de pulmones.
5.1.4. Ver región de mediastino: El usuario puede ver la imagen de
segmentación del mediastino.
5.1.5. Ver región de interés: El usuario puede ver la imagen de región de
interés, que es aquella que se utiliza para hacer la segmentación de
vasos.
5.1.6. Ver vasos escala de gris: El usuario puede ver la imagen que tiene
las estructuras tubulares realzadas.
5.1.7. Ver segmentación de vasos: El usuario puede ver la imagen que
contiene la segmentación de los vasos y las estructuras tubulares.
5.1.8. Ver intensidad: El usuario puede ver la imagen de características
intensidad que se utilizará como entrada al algoritmo de detección
de candidatos.
5.1.9. Ver segmentación de intensidad: El usuario puede ver la imagen
segmentada que contiene las regiones y objetos con la característica
de intensidad en escala de grises deseada.
5.1.10. Ver valores propios: El usuario puede ver la imagen de salida del
algoritmo realce usando valores propios.
5.1.11. Ver segmentación de valores propios: El usuario puede ver la
imagen de segmentación que surge a partir de la imagen de realce
con valore propios.
5.1.12. Ver contraste local: El usuario puede ver la imagen que surge a la
salida del algoritmo de contraste local.
5.1.13. Ver segmentación de contraste local: El usuario puede ver la
imagen de segmentación de contraste local.
5.1.14. Ver regiones candidatas: El usuario puede ver la imagen que
contiene las regiones y objetos candidatos.
5.2. Hacer mediana: El usuario puede realizar un suavizado de la imagen de
entrada mediante el filtro mediana, usando un radio entre los valores (1,
3, 5, 7).
5.3. Hacer pulmones: El usuario puede realizar la segmentación de los
pulmones, seleccionando dos semillas, una para cada pulmón.
5.4. Hacer mediastino: El usuario puede realizar la segmentación del
mediastino.
5.5. Hacer vasos: El usuario puede realizar la segmentación de los vasos y
estructuras tubulares, seleccionando un valor de sigma que está entre
los valores (1.5, 2.0, 2.5, 3.0, 3.5, 4.0).
5.6. Hacer imágenes de grises: El usuario puede generar las tres imágenes en
escala de grises que serán usadas para encontrar características de
regiones de interés.
5.6.1. Hacer segmentación intensidad: El usuario puede hacer la
segmentación de la imagen de características de intensidad,
eligiendo un umbral de acuerdo a las necesidades.
5.6.2. Hacer segmentación de valores propios: El usuario puede hacer
la segmentación de la imagen de valores propios, eligiendo un
umbral de acuerdo a las necesidades.
5.6.3. Hacer segmentación de contraste local: El usuario puede hacer la
segmentación de la imagen de contraste local, eligiendo un umbral
de acuerdo a las necesidades.
5.7. Hacer imagen de candidatos: El usuario puede hacer la imagen de salida
que contiene las regiones candidatas.
6. Ver datos: El usuario puede ver en un panel dentro de la pantalla principal,
la información importante del paciente y de las imágenes DICOM leídas.
7. Ver volumetría: El usuario puede usar una herramienta que le permite ver el
volumen aproximado de cada región candidata y su ubicación espacial.
7.1. Ver ubicación en 2D: El usuario puede ver la ubicación de la región
candidata deseada, en la imagen DICOM.
7.2. Ver ubicación en 3D: El usuario puede ver la ubicación de la región
candidata deseada en un modelo en tres dimensiones.
8. Ver modelo tridimensional: El usuario puede ver un modelo en tres
dimensiones de los pulmones, los vasos y las regiones candidatas, además de
poder seleccionar la opacidad para cada una.
8.1. Seleccionar estructuras: El usuario puede seleccionar entre pulmones,
vasos, regiones candidatas o una combinación de las tres, para ser
visualizadas.
8.2. Seleccionar opacidades: El usuario puede seleccionar que tan
transparente se debe mostrar cada imagen.
9. Cerrar aplicación: El usuario puede cerrar la aplicación.
6.2. VISTA DE COMPOSICIÓN Se modela la descomposición física del sistema y la relación que hay entre cada uno
de los elementos que componen el sistema, además también permite modelar la
arquitectura en tiempo de ejecución respecto al hardware y software [16].
6.2.1. DIAGRAMA DE COMPONENTES
Con este diagrama se describe la composición física del sistema de software, en
cuanto a su construcción y funcionamiento. La descomposición se hace en
términos de componentes y relaciones. Los componentes son objetos físicos que
existen en tiempo de ejecución o de compilación, tienen una identidad propia o
interfaz bien definida, pueden ser códigos fuente, ejecutables, bibliotecas,
imágenes, documentos, manuales, etc.[16]. En este sentido los principales
componentes del sistema son las bibliotecas VTK para la visualización, ITK para
el procesamiento de imágenes y datos, y QT para usar en conjunto con VTK en la
implementación de la interfaz gráfica. Se tiene además un componente de
“recursos”, que contiene los iconos e imágenes que serán usados en la
aplicación. A continuación, se muestra el diagrama de componentes.
Ilustración 5. Diagrama de componentes
6.2.1.1. INTERFACES DEL DIAGRAMA DE COMPONENTES
En la siguiente tabla se explica la comunicación entre los componentes del
sistema.
Interface Método Descripción
Aplicación – ITK API de ITK[17]. Para realizar todos los algoritmos
que usen las imágenes, leer el
encabezado que contiene los datos
de la imagen (paciente, tamaños en
mm de los píxeles, separación en
mm de cada imagen o slice, entre
otros), e incluso para tener la
imagen en memoria y poderla
visualizar se utilizan métodos y
clases de la biblioteca de ITK.
Aplicación – VTK API de VTK[18]. Para realizar la visualización en 2D
de las imágenes, visualizar
volúmenes, interacciones del
usuario con las imágenes y
volúmenes, también para visualizar
diferentes tipos de gráficas, se
utilizan métodos y clases de la
biblioteca de VTK.
Aplicación – QT API de QT[19]. Para realizar toda la interfaz gráfica
de la aplicación, manejo de
controles y mensajes, y para
integrar la visualización mediante
VTK, se utilizan métodos y clases de
la biblioteca de QT.
Tabla 1. Interfaces entre componentes
6.3. VISTA LÓGICA
6.3.1. DIAGRAMA DE CLASES Es un grafo que describe un conjunto de clases junto con sus atributos, métodos
y nombre, además de la relación que tiene con otras clases. Es un diagrama
estático que encapsula el comportamiento de cada objeto dentro del
sistema[20]. Este diagrama brinda la posibilidad de tener una visión del sistema
ya que muestra qué se debe hacer, mas no cómo. A continuación se muestra el
diagrama de clases del proyecto (Ver anexo Diagrama de clases), su respectiva
documentación se encuentra en el código fuente.
Ilustración 6: Diagrama de clases.
6.3.2. PATRONES
6.3.2.1. PATRÓN MEDIATOR En general, el único patrón usado en el proyecto fue el “Mediator”. En cuanto
a las vistas, todas se comunican con la clase de “MainWindow” la cual sirve
en muchos casos de mediador entre todas vistas y el controlador. Por otra
parte el mediador más visible es el “Coordinator”, el cual se encarga de tomar
las peticiones de la vista, pedir datos al modelo y retornar datos a la vista,
todas las vistas se comunican con el “Coordinator”. Puede verse en el
diagrama de clases, la forma en como el “Coordinator” hace las funciones de
mediador entre la vista y el modelo.
6.3.3. INTEGRACIÓN ENTRE HERRAMIENTAS
Con el fin de integrar las herramientas de ITK, VTK – QT, se hizo uso del patrón
“mediator”, que corresponde a la clase “Coordinator”. Este coordinador o
mediador separa dos grandes elementos, el modelo y la vista. En el componente
“modelo”, únicamente se utilizan métodos de la biblioteca de ITK con el fin de
realizar todo el procesamiento de imágenes, mientras que en el componente
“vista”, se utilizan métodos de la biblioteca de VTK – QT.
6.4. VISTA DE INTERACCIÓN Este tipo de diagramas, se enfocan en mostrar las diferentes actividades y flujos de
comportamiento que el sistema debe cumplir a medida que opera en el tiempo[20].
6.4.1. DIAGRAMAS DE SECUENCIAS
Los siguientes diagramas describen el comportamiento del sistema a través del
tiempo y la interacción de los objetos por los casos de uso más relevantes o de
mayor complejidad. Debe tenerse en cuenta que un diagrama puede hacer
referencia a más de un caso de uso.
6.4.1.1. VER HISTOGRAMA
Ilustración 7: Diagrama de secuencia para ver el histograma
El diagrama anterior describe la forma en como el usuario interactúa con el
sistema, con el fin de poder visualizar un histograma, además el proceso es
similar para todas las acciones que impliquen abrir una nueva ventana.
La acción se inicia cuando el usuario realiza clic sobre la opción de
histograma. Desde la ventana principal, se hace uso del coordinador para
obtener los datos relacionados con imágenes, en este caso el histograma de
la imagen de entrada. A continuación la ventana principal crea un nuevo
objeto de la clase “HistogramForm”, asignándole el coordinador y los datos
del histograma, además de hacer la nueva instancia modal, es decir que no
se podrá seguir trabajando en la ventana principal hasta haber cerrado la
ventana de histograma. Se obtiene la lista de las máscaras que actualmente
tiene la aplicación, de nuevo, es el coordinador responsable de esa tarea. La
ventana principal usa esos datos para asignarlos a la ventana de histograma
y para que sean mostrados al usuario. A partir de este punto el usuario
interactúa directamente sobre la ventana de histograma, y esta a su vez pide
los datos necesarios al coordinador. Este procedimiento es muy similar a la
opción de “Ver modelo tridimensional”, ya que se instancia un nuevo objeto
desde la ventana principal, y dicho objeto se comunica con el coordinador
para pedir datos y mostrarlos al usuario.
6.4.1.2. VER ALGORITMO
Ilustración 8: Diagrama de secuencia para hacer algoritmo
El diagrama anterior describe la forma de usar paneles en la aplicación, en
este caso el panel de algoritmo. Primeramente, el usuario realiza la petición
de ver el panel de algoritmo a la ventana principal, quien a su vez envía esta
solicitud a un objeto de “AlgorithmForm” (instanciado anteriormente por la
misma ventana principal). En la ventana principal se muestra el panel de
algoritmo y este a su vez al usuario, quien puede realizar el algoritmo, por
ejemplo puede hacer la mediana de la imagen de entrada y para ello hace la
solicitud directamente al objeto de la clase “AlgorithmForm”, el cual usa al
coordinador para todas las tareas relacionadas con obtención de datos o
imágenes, para después entregar los datos obtenidos a la ventana principal,
y esta última será la encargada de mostrar los datos al usuario, mediante el
objeto de la clase “FourPanelForm”. De manera similar ocurre al momento
de querer ver una imagen del algoritmo, y además, todas las funciones que
involucran paneles, como lo son: ver datos, ver panel de algoritmo, ver
herramienta de volumetría y ver la vista de los cuatro paneles.
6.4.1.3. VER HERRAMIENTA DE VOLUMETRÍA
Ilustración 9: Diagrama de secuencia para usar herramienta de volumetría
La anterior imagen muestra un procedimiento que aunque involucra un
panel (Herramienta de volumetría), tiene una función específica, y es
mostrar el resultado de localización en 3 dimensiones mediante una nueva
ventana de VTK. El procedimiento es similar al anteriormente descrito,
excepto, al momento que el usuario pide una solicitud para mostrar la
imagen en tres dimensiones. En este punto el usuario interactúa
directamente sobre el objeto de “VolumetricToolForm”, quien se vale del
coordinador para pedir los datos de las tres imágenes a mostrar. Finalmente
el mismo objeto de la clase “VolumetricToolForm” es quien crea la nueva
ventana VTK y con la que el usuario interactúa directamente.
7. PUNTOS DE VISTA DEL DISEÑO
7.1 DESCRIPCIÓN DEL PRODUCTO Para la entrega de la aplicación se realizó tanto un manual de usuario como uno de
instalación, el cual puede ser revisado en los anexos.