Fusión de modelos de tejido en la simulación de imágenes ...

68
Fusión de modelos de tejido en la simulación de imágenes de ultrasonido en tiempo real (SIMECO). Por Saraceno Leandro, Vitale Santiago Trabajo Final de la carrera de grado de Ingeniería de Sistemas de la Universidad Nacional del Centro de la Provincia de Buenos Aires Director: Dr. Ignacio Larrabide Co-Director: Ing. Pablo Andrés Rubi Tandil, Pcia de Buenos Aires, Argentina, Marzo 2018

Transcript of Fusión de modelos de tejido en la simulación de imágenes ...

Page 1: Fusión de modelos de tejido en la simulación de imágenes ...

Fusión de modelos de tejido en la simulación de imágenes de ultrasonido en tiempo real

(SIMECO).

Por Saraceno Leandro,

Vitale Santiago

Trabajo Final de la carrera de grado de Ingeniería de Sistemas de la Universidad Nacional del Centro de la Provincia de Buenos Aires

Director: Dr. Ignacio Larrabide

Co-Director: Ing. Pablo Andrés Rubi

Tandil, Pcia de Buenos Aires, Argentina, Marzo 2018

Page 2: Fusión de modelos de tejido en la simulación de imágenes ...

Índice

Capítulo 1: Introducción 4 1.1 Antecedentes 4 1.2 Simulación de Ultrasonido y Estado del Arte 5 1.3 Motivación y objetivos de trabajo 8 1.4 Contenido de la carrera aplicados en el desarrollo de este trabajo 9 1.5 Organización del trabajo 10

Capítulo 2: Imagen de ultrasonido 12 2.1 Imágenes B - Mode 12 2.2 Transductor y creación de una imagen B - Mode 12 2.4 Características y artefactos de una imagen de ultrasonido 14

Capítulo 3: Integración de técnica de ruido Speckle en tiempo real 18 3.1 Modelo de Volumen 18 3.2 Ruido Speckle generado en SIMECO 20 3.3 Modelo de ruido Speckle en tiempo real 22

3.3.1 Validación de resultados 23 3.4 Integración de ruido Speckle en tiempo real 24

3.4.1 Motivación y Objetivos específicos 25 3.4.2 Implementación 25

3.5 Rendimiento 26 3.5.1 Plataforma de prueba 27 3.5.2 Análisis de memoria 27 3.5.3 Análisis de tiempo de carga 28

Capítulo 4: Reestructuración de SimEco 30 4.1 Arquitectura de Simeco 30

4.1.1 Dependencias 34 4.2 Build system 35

4.2.1 CMake 35 4.2.1.1 Sentencias de CMake 37

4.2.2 Configuración de SIMECO 38 4.3 Motivación a generar una librería dinámica 39

4.4.1 Cambios en el Diseño del módulo Core 40 4.4.2 Build System 44

4.5 Resultados 47

Capítulo 5: Integración de Modelo de Superficie 50 5.1 Modelo de Superficies 50 5.2 Motivación para incorporar el Modelo de Superficies 52

1

Page 3: Fusión de modelos de tejido en la simulación de imágenes ...

5.3 Arquitectura de Burger 52 5.4 Incorporación del modelo a SIMECO 54

5.4.1 Construcción de la librería dinámica 54 5.4.2 Actualización del módulo Interfaz 56

5.5 Comparación entre los modelos implementados en SIMECO 59

Capítulo 6 62 6.1 Conclusiones 62 6.2 Trabajos futuros 62

Bibliografía 64

Anexo 67 Diagrama de clases del módulo Core 67 Diagrama de clases del módulo Interfaz 68

2

Page 4: Fusión de modelos de tejido en la simulación de imágenes ...

Índice de imágenes

Capítulo 1: Introducción. Figura 1.2.1 Estado del arte en simulación de ultrasonido. 8

Capítulo 2: Imagen de ultrasonido.

Figura 2.2.1 Simulación del barrido. 13 Figura 2.3.1 Resolución espacial. 14 Figura 2.4.1 Tipos de reflecciones. 15 Figura 2.4.2 Refracción de una onda. 16 Figura 2.4.3 Patrón speckle. 17 Figura 2.4.4 Sombra acústica. 17

Capítulo 3: Integración de técnica de ruido Speckle en tiempo real.

Figura 3.1.1 Modelo de volumen. 20 Figura 3.2.1 Imagen de ultrasonido generada por SIMECO. 21 Figura 3.3.1 Imagen de ultrasonido generada a partir de la técnica de Külsgaard. 23 Figura 3.3.1.1 Dirección de la caída lineal. 24 Figura 3.5.2.1 Comparación en el uso de memoria. 28 Figura 3.5.3.1 Comparación en los tiempos de carga. 29

Capítulo 4: Reestructuración de SimEco. Figura 4.1.1 Visión general de SIMECO. 32 Figura 4.1.2 Vista dinámica de un ejercicio en SIMECO. 33 Figura 4.2.1.1 Árbol de directorios de un proyecto CMake. 36 Figura 4.2.2.1 Archivo CMake, pseudocódigo de simeco. 39 Figura 4.4.1.1 Clase handle de la clase simeco. 42 Figura 4.4.1.2 Diagrama de clases de Idiom pimpl. 43 Figura 4.4.2.1 Archivo CMake de simecolib. 44 Figura 4.4.2.2 Archivo findSimeco.CMake. 46 Figura 4.4.2.3 Nuevo archivo CMake de SIMECO. 47 Figura 4.5.1 Comparación de tiempos de compilación. 48

Capítulo 5: Integración del modelo de superficie Figura 5.1.1 Onda intersectando con malla. 50 Figura 5.3.1 Vista general de Burger. 53 Figura 5.4.1.1 Patrón pimpl aplicado a la clase Burger. 54 Figura 5.4.1.2 Achivo findBurger.CMake. 56 Figura 5.4.2.1 Diagrama de clase parcial del módulo interfaz. 58 Figura 5.4.2.2 Vista general de la relacion entre Burger y SIMECO. 59 Figura 5.5.1 Trade off entre interactividad y precisión. 60 Figura 5.5.2 Comparación de imagen de ultrasonido generada por ambos modelos. 61

3

Page 5: Fusión de modelos de tejido en la simulación de imágenes ...

Capítulo 1: Introducción

1.1 Antecedentes

Estudios [1] recientes en Estados Unidos, publicados en la British Medical Journal, revelan

que los eventos adversos durante la atención hospitalaria es una de las principales causas de muertes

en los centros de salud de todo el mundo. En Argentina, luego del último relevamiento oficial del

Ministerio de Salud [2], se señala que más del 12% de los pacientes sufren algún tipo de

complicación en su estadía en el nosocomio. La muestra constituida por más de 1600 pacientes de 6

grandes hospitales reveló que el 25% de los eventos adversos son ocasionados por errores de

procedimiento y un 3% errores de diagnóstico. Si bien constituyen menos de un tercio de la

naturaleza de los eventos, estos errores generan riesgos de intensidad moderada y graves en más del

75% de los casos y poseen una tasa de evitabilidad relativamente alta, correspondiente al 40% y 80%

respectivamente. Los datos mencionados anteriormente revelan una alarmante situación de amenaza

a la seguridad del paciente en nuestro país.

En el ámbito de la medicina, el ultrasonido es una técnica utilizada para detectar distintos

órganos, tejidos y vasos como así también posibles cambios en aspectos y funciones de los mismos.

Al ser una herramienta segura y no invasiva (libre de radiaciones y punciones) que obtiene resultados

en tiempo real de manera económica y sin la necesidad del traslado del paciente (practica repetible),

se ha convertido en una práctica habitual para el diagnóstico médico, guía de procedimiento

(drenajes, punciones, remoción de cuerpos) y emergentología.

Las imágenes por ultrasonido están basadas en el mismo principio que el sonar utilizado por

murciélagos y barcos: cuando una onda acústica choca contra un objeto, rebota provocando eco. Al

medir estas ondas causadas por el eco, es posible determinar la distancia al cuerpo, como así también

su forma, tamaño y consistencia. En un examen de ultrasonido, un transductor envía ondas acústicas

de alta frecuencia hacia adentro del cuerpo al presionarlo contra la piel. A medida que las ondas

rebotan en los órganos internos, fluidos o tejidos, el receptor del transductor registra los cambios

mínimos que se producen en el tono y direcciones del sonido. Una computadora se encarga de medir

las ondas y crear una imagen en tiempo real en un monitor. La imagen se crea a partir de la amplitud

(volumen), frecuencia (tono) y tiempo que lleva la señal de ultrasonido retornar desde el área

4

Page 6: Fusión de modelos de tejido en la simulación de imágenes ...

examinada hasta el transductor, como así también la estructura de los cuerpos y la composición de

sus tejidos a través de la cuales viaja la onda de sonido.

Sin embargo, la ecografía es un método operador-dependiente. Su éxito radica en la capacidad

del operario en adquirir la imágen, interpretarla en tiempo real y traducirla para generar un

diagnóstico. La tarea no es sencilla, ya que se debe comprender la relación del corte bidimensional de

la imagen ultrasónica con la anatomía real en tres dimensiones, sumado a la degradación de la

imagen provocada por sombras y ruidos generados por la frecuencia del ultrasonido y las propiedades

de los tejidos. Esto conlleva la necesidad de un entrenamiento intensivo y extensivo con el fin de que

el operador adquiera la técnica y habilidad del uso de dispositivos de ultrasonido. Así es como surge

el uso de los simuladores de ultrasonido como herramienta de entrenamiento.

1.2 Simulación de Ultrasonido y Estado del Arte

El uso de imágenes de ultrasonido (US) sufre ciertas limitaciones al momento del aprendizaje

y entrenamiento. La principal es la relacionada con la cantidad de tiempo que requiere un operario

para capturar, examinar y analizar la zona de estudio. Sumado a esto, el paciente debe permanecer

presente a lo largo de toda la examinación y debe prestarse a repeticiones del proceso lo que genera a

veces situaciones estresantes tanto para él como para el operario. Conjuntamente, hay que añadir que

solo un aprendiz puede realizar la práctica a la vez y que, si no existe un equipo dedicado

exclusivamente a tales fines, las prácticas se ven limitadas por el uso del dispositivo en horario de

trabajo y de la disponibilidad de pacientes con el diagnóstico a estudiar. Otra limitación es la baja

frecuencia de ciertos escenarios clínicos y la dificultad que ésto trae para disponer pacientes de

prueba. Por ejemplo existen anomalías fetales con un porcentaje de ocurrencia menor al 5%. A raíz

de las limitantes mencionadas anteriormente y la necesidad de mejorar la seguridad del paciente,

obliga a buscar otras estrategias alternativas de aprendizaje y evaluación. La reproducibilidad de los

escenarios clínicos, la capacidad de aplicar métricas de rendimiento medibles y la oportunidad de

encontrar y responder a eventos anormales o críticos en un entorno seguro son argumentos muy

convincentes a la hora de considerar a la simulación como una propuesta para satisfacer las

necesidades educativas en el área de la salud[3].

El uso de simuladores como parte integral del entrenamiento de nuevos profesionales ha

cobrado importancia en los últimos años. Existen pruebas de que la simulación puede ser igual de

5

Page 7: Fusión de modelos de tejido en la simulación de imágenes ...

efectiva que los métodos tradicionales para el entrenamiento de residentes de cirugía en sonografía

abdominal focalizada en trauma (FAST) [4]. Maul et al. [5] muestran que sujetos que fueron

entrenados con simulación lograron grandes avances en la detección de anomalías fetales con

respecto a los que no lo hicieron.

Los simuladores de US tienen como meta representar de la manera más fiel posible la práctica

del estudio de ultrasonido. Llevar a cabo esta tarea es muy costosa computacionalmente ya que

involucra tanto la recreación de fenómenos físicos como el de las ondas ultrasónicas atravesando los

tejidos en ambientes tridimensionales. El modelado del simulador puede ser dividido en dos partes

bien definidas: el modelo de entrada y el modelo de simulación. El primero define el origen, formato

y preprocesamiento de los datos que se encargan de representar la anatomía del objeto a examinar

para prescindir del paciente real en el momento de la ejecución. El segundo describe el proceso en el

cual los datos de entradas y sus derivados realizan una serie de cálculos y transformaciones en tiempo

de ejecución para dar como resultado la imagen de US simulada.

El realismo de la simulación depende en gran medida de la elección de la técnica de

simulación y de los modelos subyacentes. Se reconocen principalmente dos enfoques distintos de

simulación. El enfoque interpolativo como UltraSim [6], un simulador de US comercial orientado a

la capacitación de estudiantes y residentes, utiliza como volumen de entrada una réplica de un

conjunto de imágenes de ultrasonido adquiridas a traveś de un estudio real de ultrasonido. La mayor

parte del trabajo computacional recae sobre el procesamiento de estos datos para construir dicho

volumen que luego se muestrea para generar nuevas vistas y cortes durante la simulación. Los efectos

dependientes de la vista como las sombras dificultan la recuperación de información oculta detrás de

los artefactos que la generan, por lo que la captura de información se realiza desde varias posiciones

y ángulos de modo que la información oculta en una dirección de visualización esté disponible con

otra. El modelo de simulación se encarga de detectar la posición entregada por el transductor ficticio

con sensores de movimiento y de extraer del volumen anatómico (generado con las imágenes de

ultrasonido) el sector que se desea mostrar. Uno de los principales problemas de este enfoque es que,

si bien se genera una simulación realista cuando el operador mantiene posiciones similares a las

cuales se utilizaron para realizar el estudio original, la imagen pierde realismo al alejarse de dichas

posiciones debido a los efectos dependientes del posicionamiento que son recreados de manera

estática antes de la simulación. Además, la simulación se ajusta a los parámetros del dispositivo de

US al momento de la adquisición; por lo tanto, la simulación de diferentes ajustes de la máquina

6

Page 8: Fusión de modelos de tejido en la simulación de imágenes ...

como frecuencia, ganancia y enfoque requiere la adquisición previa de las imágenes con los

parámetros correspondientes.

En contraparte, el enfoque generativo propuesto por Shams et al. [7] y Kutter et al. [8] utilizan

como modelo de entrada volúmenes creados por medio de imágenes de tomografías computarizadas

(CT). En base a ellas, un software llamado Field II [9] genera patrones de scattering de posición fija.

Se deben definir entre 200.000 y 1.000.000 scatterers (ubicación y fuerza) para el proceso que puede

llevar hasta 20 minutos. Si se pretenden almacenar varias vistas, el procesamiento tomaría varios

días, por esta razón se limita la generación de scattering a una posición fija. Desde el punto de vista

del modelo de la simulación, este enfoque intenta recrear la interacción completa del frente de onda

con el medio, generando simulaciones más precisas, a un coste de soluciones numéricas y cálculos de

uso intensivo de recursos. Debido a que se modela la propagación de la onda y su interacción con el

medio, los efectos y artefactos tales como el sombreado, la reflexión y la refracción se incluyen

automáticamente en la simulación. Sin embargo existen tipos de tejido que son difíciles de

caracterizar y modelar de forma precisa y detallada debido a su heterogeneidad o su compleja

estructura interna, por lo que algunas de las imágenes resultantes y sus texturas pueden parecer

artificiales o demasiado simples, en comparación con las imágenes reales. La flexibilidad que ofrece

este enfoque para simular diferentes escenas y su gama más amplia de efectos reproducibles ha

motivado a investigadores a centrar sus esfuerzos en buscar mejoras en el rendimiento mediante el

uso de paralelismo u otras técnicas como la simplificación de los cálculos.

SIMECO es un simulador para entrenamiento en imágenes de ecografía pensado para la

formación profesional. El mismo surge como un proyecto de colaboración entre la UNICEN y el

Hospital El Cruce de Alta Complejidad de Florencio Varela, siendo un desarrollo conjunto entre los

grupos de investigación Yatiris y MediaLab del Instituto Pladema. A su vez forma parte el Banco

Nacional de Proyectos de Desarrollo Tecnológico Social (PDTS, PCTI 158). Este simulador permite

realizar prácticas de diagnóstico en pacientes de forma virtual, donde las imágenes se generan

virtualmente en tiempo real a través del uso de modelos computacionales. SIMECO utiliza un

enfoque generativo de simulación el cual se basa en volúmenes generados a partir de imágenes de

CT como modelo de entrada. El patrón de scattering es generado con un algoritmo desarrollado por

D’Amato et al. [10], reduciendo el tiempo de cómputo a unos minutos respecto del software Field II.

Por otro lado, el modelo de simulación Rubi et al. [11] presenta un modelo acústico que emula el

efecto de las ondas acústicas atravesando diferentes tejidos mediante una técnica de ray-casting para

la simulación de reflexiones, atenuación, sombras y efectos de oclusión en tiempo real. .

7

Page 9: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 1.2.1: Estado del arte en simulación de ultrasonido

1.3 Motivación y objetivos de trabajo

La reconstrucción de distintos escenarios clínicos en imágenes de ultrasonido puede dividirse

en dos grandes grupos.

Simulaciones estáticas: imágenes que muestran anomalías en los tejidos como lo son

inflamaciones, retención de líquidos o hemorragias internas por traumatismo. Comúnmente

ecografías de abdomen o tendones.

Simulaciones dinámicas: representación de las propiedades mecánicas de los tejidos y/o la

deformación al interactuar con los mismos. Tal es el caso de la simulación del latido del corazón,

ecografías ginecológicas o ecografías con deformaciones de tejidos para guiar punciones, colocación

de catéteres o drenajes.

Obtener simulaciones en tiempo real a un coste computacional aceptable para la gran variedad

de casos clínicos exige la necesidad de tener en el simulador distintos modelos tridimensionales y

técnicas de procesamiento de imágenes para representar cada escenario de manera eficiente.

SIMECO propone como solución un modelo de volúmenes con una técnica de corte y de ray-casting

para la generación de ecografías de abdomen. La utilización de esta técnica para simulaciones

dinámicas no es recomendable debido a los altos costos computacionales que conlleva. Un modelo de

mallas deformable para la simulación de deformación de tejidos con una técnica de ray-tracing

permite agregarle propiedades mecánicas a los tejidos y mejorar la simulación de artefactos

específicos de ultrasonido en tiempo real.

8

Page 10: Fusión de modelos de tejido en la simulación de imágenes ...

En este contexto, la motivación de este trabajo se basa en incorporar las nuevas técnicas y

modelos computacionales desarrollados para la simulación de ecografías en el instituto PLADEMA

al simulador SIMECO. El objetivo principal es obtener un motor de simulación más complejo y

robusto que genere imágenes de ultrasonido de mayor calidad y que permita la incorporación de

nuevos modelos de simulación y escenarios clínicos en un futuro. Para lograr dicha meta se pretende:

● Generar una librería dinámica con el motor de simulación actual que permita incorporarse a

cualquier aplicacion de simulacion de escritorio.

● Generar una librería dinámica con otro modelo de enfoque generativo desarrollado dentro del

instituto.

● Adaptar a SIMECO como un software modular de simulación que permita intercambiar sus

módulos para probar futuros modelos y algoritmos y permita el uso de diferentes formatos de

entrada.

● Incorporar a SIMECO las librerías generadas y probadas para ser usadas en la simulación de

ultrasonido.

1.4 Contenido de la carrera aplicados en el desarrollo de este trabajo

Para llevar a cabo este trabajo final fueron aplicados los contenidos aprendidos en el

transcurso de la carrera. La cátedra de Lenguajes de Programación nos aportó conceptos muy

importantes para comprender la construcción y utilización de punteros de forma eficiente y la

creación de funciones teniendo en cuenta el tipo de pasaje de parámetro para mejorar el rendimiento

de la herramienta. Materias como Diseño de Software y Programación Orientada a Objetos fueron

claves para comprender la arquitectura y el diseño de SIMECO, además de la detección e

implementación de patrones de diseño necesarios para hacer efectiva la separación del motor de

simulador de la interfaz. Los conocimientos adquiridos en la cátedra de Sistemas Operativos hicieron

posible la comprensión del concepto de librerías, su utilidad, y de cómo el sistema operativo

interactúa con ellas. Sumado a los conceptos aprendidos en Diseño de Compiladores, se llevó a cabo

la tarea de convertir los modelos de simulación en librerías dinámicas solucionando y sobrellevando

los problemas en tiempo de compilación y linkeado de la aplicación.

Cursos contenidos en el desarrollo de la carrera de ing. en sistemas tales como Álgebra

Lineal, Análisis Matemático I y II, física general e introducción al cálculo diferencial e integral, así

como también probabilidades y estadística fueron una herramienta clave para la comprensión y la

9

Page 11: Fusión de modelos de tejido en la simulación de imágenes ...

implementación de los fenómenos físicos y los modelos aplicados para la simulación de las imágenes

de ultrasonido.

La cátedra de Metodologías de Software nos capacitó para la elaboración de diagramas y

vistas arquitectónicas presentadas a lo largo de esta tesis.

1.5 Organización del trabajo

Con el fín de facilitar la comprensión y la lectura del trabajo, se encuentra desarrollado en

capítulos seccionados que se detallan a continuación:

Capítulo 2: Se proporciona una visión general de la información necesaria para comprender

mejor los conceptos mencionados durante el desarrollo de este trabajo. Se cubren nociones básicas

para la interpretación de las imágenes de ultrasonido y sus fenómenos físicos.

Capítulo 3: En este capítulo se mencionan y detallan dos técnicas de simulación de ruido

Speckle, uno de ellas utilizado por SIMECO y la segunda una mejora a incluir al simulador. Finaliza

con un análisis comparativo entre ambos modelos.

Capítulo 4: Se presentan tres etapas de trabajo sobre la arquitectura del sistema. En la primera

se menciona la arquitectura originaria del simulador y se presenta la motivación para incorporar una

mejora a la mismo. La segunda etapa desarrolla la implantación de la propuesta. Por último, se hace

un análisis de performance en tiempo de ejecución y compilación.

Capítulo 5: Se hace hincapié en la inclusión de un nuevo modelo de simulación basado en

superficies. Detalla el funcionamiento del mismo y el procedimiento de incorporación al simulador.

Finaliza con un apartado comparativo entre los modelos de simulación descritos.

Capítulo 6: Se presentan y analizan las conclusiones del trabajo teniendo en cuenta el aporte

realizado y poniendo énfasis en cómo éste ha logrado la optimización del simulador SIMECO.

Además, se mencionan las dificultades que se presentaron en el proceso y los trabajos a futuro

teniendo en cuenta las posibles mejoras a implementar.

10

Page 12: Fusión de modelos de tejido en la simulación de imágenes ...

Capítulo 2: Imagen de ultrasonido

Este capítulo contiene una breve descripción de cómo funcionan los dispositivos de imágenes

de ultrasonido. Esto ayudará a la comprensión de los artefactos y características de las imágenes

modo B de ultrasonido.

2.1 Imágenes B - Mode

Las imágenes de ultrasonido B-Mode son las típicas imágenes ruidosas y borrosas en escala

de grises que la mayoría de las personas asocian con una imagen de ultrasonido. Representan un corte

plano de la anatomía de tejidos y órganos del cuerpo. La construcción de la imagen se basa en ecos

generados por el reflejo de ondas de ultrasonido en los límites de los órganos y en las pequeñas

imperfecciones en los tejidos. Cada eco es representado en la imagen como un punto, creándose un

mapa a escala del producto de los ecos. El brillo en cada uno de los puntos refiere a la fuerza o

amplitud del eco, dándole el nombre a la modalidad de "brightness mode" (B-mode).

2.2 Transductor y creación de una imagen B - Mode

Un transductor de ultrasonido es un dispositivo que convierte señales eléctricas en energía

acústica utilizada para crear y enviar impulsos ultrasónicos. También actúa como un receptor

ultrasónico detectando energía acústica y convirtiéndola nuevamente en señales eléctricas. Las

sondas de ultrasonido están construidas con varios transductores dispuestos en una variedad de

geometrías. Éstos se estimulan secuencialmente de forma individual o grupal para enviar pulsos

acústicos al tejido para "barrer" el área de interés. Después de enviar el pulso, los transductores se

configuran en modo receptor para esperar los ecos entrantes producto de la reflexión o dispersión de

los impulsos ultrasónicos.

Debido a que se conoce la velocidad media del sonido, el tiempo entre el pulso y el eco se

puede determinar la distancia del reflector a la sonda. Si se suma la dirección del haz y la intensidad

de los ecos, es posible mapear los ecos en una imagen con píxeles de intensidad variable. El mapeo

de todos los ecos en un barrido dará como resultado la imagen de ultrasonido.

11

Page 13: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 2.2.1: Simulación del Barrido. Los transductores se activan secuencialmente de un lado al otro; los ecos detectados se componen juntos para crear una sola imagen.

2.3 Resolución espacial

Durante el proceso de formación de imagen, se supone que el haz de ultrasonidos se centra

perfectamente a lo largo de su eje, es decir, el haz se desplaza en línea recta con intensidad uniforme

y no hay variaciones en la anchura o la dirección. En realidad, la intensidad del haz de ultrasonido

varía con la distancia y el ángulo. Las señales de eco detectadas siempre se muestran, en la imagen, a

lo largo del eje del haz, aunque la posición real del objeto que causa el eco podría no estar en él. Esto

afecta la resolución lateral de la imagen resultante, haciendo que los objetos parezcan borrosos a lo

largo del eje x, o, si dos reflectores están muy juntos, podrían aparecer como un solo objeto. Del

mismo modo, la resolución de elevación se ve afectada por el grosor del haz. Aunque la imagen final

es bidimensional, el haz y los ecos viajan en un espacio tridimensional, lo que contribuye a la imagen

final (como se ve en la Figura 2.3.2 (b)). Ambas resoluciones se pueden mejorar enfocando el haz. La

resolución axial se ve afectada por la duración del pulso ultrasónico. Si los pulsos son largos, los ecos

reflejados de los objetos que están muy juntos a lo largo del eje del haz se pueden interpretar como

un pulso y los objetos se presentarán como uno solo. La solución a este problema es aumentar la

frecuencia del ultrasonido para acortar la duración del pulso. Sin embargo, los haces de alta

frecuencia pierden energía rápidamente y no se pueden usar para visualizar estructuras más

profundas.

12

Page 14: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 2.3.1: Resolución espacial. a) Resolución lateral: El haz no está enfocado, los objetos cercanos entre sí aparecen como una imagen renderizada. b) Resolución de elevación: dos objetos no alineados pueden aparecer alineados en la imagen 2d final. c) Resolución axial: los ecos largos de diferentes reflectores se detectan como un solo objeto.

2.4 Características y artefactos de una imagen de ultrasonido

Algunas estructuras se pueden reconocer fácilmente por los artefactos asociados a ellas, por

ejemplo, los ecos generados por las piedras de la vesícula biliar dejan un rastro de reflejos similares a

la cola de un cometa. Sin este artefacto, las piedras probablemente no serían fáciles de encontrar.

Un concepto importante a definir para mejorar el entendimiento de los artefactos generados

en la imagen de ultrasonido es impedancia acústica. La impedancia acústica es la resistencia que

oponen los tejidos al paso del ultrasonido y es igual al producto de la densidad del medio por la

velocidad de propagación del sonido en dicho medio. Si dos materiales tienen la misma impedancia

acústica, su límite no produce eco. Si la diferencia es pequeña, se producirá un eco débil y la mayor

parte del haz seguirá viajando a través del segundo medio. Si la diferencia es grande, se producirá un

eco intenso. Si la diferencia es muy grande, todo el haz de ultrasonido será reflejado y el eco será

máximo. Típicamente, en los tejidos blandos la amplitud del eco que se produce en su interfase es

baja. Sin embargo, las áreas que contienen hueso o aire no permiten que el ultrasonido pase más allá

de la interfase y producen unos ecos muy intensos. La intensidad de la reflexión se expresa en escala

de grises, de manera que los ecos más intensos se representan en tono blanco (hiperecoico), los más

13

Page 15: Fusión de modelos de tejido en la simulación de imágenes ...

débiles en diversos tonos de gris (hipoecoico) y cuando no hay reflexión, en negro (anecoico). Las

estructuras del cuerpo están formadas por diferentes tejidos, lo que da lugar a múltiples interfases.

Algunas de las características y artefactos más importantes que se encuentran en las imágenes

B - Mode son:

Reflexiones y scattering. Cuando un haz de sonido encuentra una interfaz de dos tejidos con

diferente impedancia acústica, se refleja su energía. Se pueden apreciar dos tipos de reflexiones. Una

de ellas es la reflexión especular, que se produce cuando la superficie reflectante es lisa. La dirección

de desplazamiento del haz es perpendicular a la interfaz, el mismo haz se reflejará de nuevo al

transductor y se detectará una señal de eco con intensidad relativa a la distancia con el transductor.

Por el contrario, dentro de la mayor parte de los órganos, existen pequeñas imperfecciones de

superficie rugosa llamadas scatterers, que producen variación de las propiedades acústicas, y por

ende reflexiones de ondas. Este tipo de reflexiones, denominadas scattering, actúan de una forma

diferente a las anteriores. Cuando el haz incide sobre un scatterer, se dispersa en distintas direcciones

con una energía proporcional y mucho menor que una reflexión especular. Esta energía está

relacionada con el tamaño del scatterer y la longitud de onda. Un aspecto importante a considerar es

que el scattering no cambia significativamente su apariencia en la imagen con el ángulo de la onda,

mientras que el aspecto de las grandes interfaces son altamente dependientes del ángulo de incidencia

de los haces.

Figura 2.4.1:Tipos de reflexiones. a) Onda reflejada al incidir sobre una interfaz. b) Onda reflejada en varias direcciones

al incidir sobre un scatterer.

Refracción: El ángulo de la onda reflejada en una interfaz posee la misma amplitud que la

onda incidente si la velocidad del sonido en ambos materiales es la misma. Se asume que la onda

transmitida tiene la misma dirección que la onda incidente. Sin embargo cuando la velocidad del

sonido de ambos tejidos es diferente, el ángulo de incidencia difiere de 90° y la dirección de la onda

14

Page 16: Fusión de modelos de tejido en la simulación de imágenes ...

transmitida es alterada. Este fenómeno se lo conoce como refracción. Cuando la onda atraviesa una

interfaz donde la velocidad del sonido incrementa, el ángulo a la normal también lo hará. Por el

contrario, si la onda experimenta una reducción de velocidad al atravesar la interfaz, el ángulo a la

normal también decrecerá.

Figura 2.4.2: refracción de una onda que incide sobre una interfaz de dos medios con diferente velocidad de onda

Ruido Speckle: Es el patrón de puntos brillantes y oscuros a lo largo de la imagen de

ultrasonido B - Mode producto de la dispersión de las ondas de ultrasonido por los scatterers. Los

diferentes tipos de tejido tienen diferentes concentraciones y distribución de los scatterers, por lo

tanto, los patrones producidos por los tejidos blandos son diferentes entre sí.

El ruido speckle no es aleatorio, es decir, si se realizan múltiples capturas en iguales condiciones el

patrón resultara idéntico para el mismo tejido. Sin embargo, cualquier variación de la apertura del

transductor o la longitud del pulso produce patrones diferentes. Esta característica resulta útil para el

diagnóstico de anomalías. Un cambio en la intensidad del patrón de speckle en una región

determinada puede considerarse una situación anormal, como lo puede ser la presencia de quistes o

tumores en zonas de baja rigidez.

Atenuación y sombra acústica: A medida que la onda de ultrasonido se propaga a través del

tejido, su intensidad va disminuyendo. La cantidad de energía que se absorbe depende de la distancia

recorrida y la frecuencia de la onda. Cuando se dan grandes niveles de atenuación, los ecos que

retornan hacia el transductor desde grandes profundidades son débiles. Por ello, para órganos de gran

tamaño o muy profundos como el área abdominal, se utilizan frecuencias bajas entre 3 y 5 MHz. Para

los objetos pequeños o superficiales se suelen utilizar frecuencias más altas de 10 a 15 MHz ya que a

altas frecuencias las longitudes de ondas son más cortas y por ende la resolución de la imagen

15

Page 17: Fusión de modelos de tejido en la simulación de imágenes ...

mejora. Existen estructuras que obstruyen el paso de la onda de ultrasonido, resultando así una

completa reflexión o absorción del sonido. Este fenómeno crea un área anecoica denominada sombra

acústica. Puede estar producida por el gas que refleja el 99% del sonido generando una sombra

“sucia” y no homogénea, o por los huesos que absorben la mayor parte de la onda generando una

sombra “limpia” y uniformemente negra. Este artefacto puede ser muy útil para la detección de

cálculos en vesícula y riñones porque tienden a comportarse como el hueso.

Figura 2.4.3: Patrón speckle. Figura 2.4.4: Sombra acústica generada por una costilla.

16

Page 18: Fusión de modelos de tejido en la simulación de imágenes ...

Capítulo 3: Integración de técnica de ruido Speckle en tiempo real

En el presente capítulo se desarrolla el algoritmo de simulación de imagen de ultrasonido

mediante un modelo de volumen y la implementación de las técnicas para producir ruido speckle en

una etapa de preprocesamiento y en tiempo real. Se propone una inclusión efectiva de esta última a

SIMECO y se analizan los resultados obtenidos.

3.1 Modelo de Volumen

Rubi et al. [11] presentan un modelo acústico para la simulación de reflexiones, atenuación,

sombras y efectos de oclusión, siendo las características principales en una imagen de ultrasonido. El

método utiliza como modelo de entrada una imagen médica en un volumen CT, y emula mediante la

técnica de ray-casting el efecto de las ondas acústicas atravesando diferentes tejidos.

Desde un punto de vista geométrico, la onda de ultrasonido se puede modelar como un rayo

que comienza desde el transductor y se calcula utilizando leyes conocidas de la física. Cuando un

rayo de ultrasonido viaja a través de un modelo con diferentes materiales, se distinguen dos

interacciones principales: reflexiones y atenuación. Las reflexiones se producen en la interfaz entre

dos materiales con diferentes impedancias acústicas. La cantidad de energía que se refleja hacia el

transductor está determinada por un coeficiente de reflexión, αR, dado por:

αR = ( )Z +Z2 1

Z −Z2 12

 donde Z1 y Z2 son las impedancias acústicas de los materiales. La transmisión es simplemente la

energía restante que pasa a través de la interfaz en el siguiente medio, la cual está definida por la

siguiente fórmula:

αT = 1 − αR

La reflexión de ultrasonido en las interfaces de los tejidos no es especular y se comporta de

manera diferente según el ángulo entre el haz incidente y la superficie normal del tejido. Para

considerar esto, se usa un modelo de Lambertian scattering para describir la intensidad reflejada de la

17

Page 19: Fusión de modelos de tejido en la simulación de imágenes ...

señal captada por el transductor. Debido a éste, la intensidad de la señal es independiente del ángulo

de visión y solo depende del ángulo de incidencia.

El efecto de un ancho de haz finito producido por un arreglo de elementos del transductor se

modela integrando las intensidades de reflexión percibidas a lo largo del frente de onda a una

profundidad específica usando una función de ventana adecuada.

Otro componente del método es una imagen de scattering (speckle) generada a partir de la

imagen de CT. Esta imagen permite la simulación de speckle visible en ultrasonido real. Los

artefactos de scattering en el ultrasonido dependen de la vista, mientras que la dispersión

precalculada no es dependiente de la visión. Para compensar esto, la imagen de dispersión se

combina con la información dependiente de la vista que se encuentra en las imágenes de reflexión y

transmisión por medio de la fórmula:

(x) αG (x) (x) G (x) (x) )I (x)IUS = ( σ1 * IR + β σ2 * αT S

donde es la imagen de ultrasonido, es la imagen de reflexión, es la imagen de (x)IUS (x)IR (x)IS

dispersión, α y β son coeficientes de mezcla (blending), y G es un filtro gaussiano con media 0 y

desviación ajustable (σ1 y σ2 ) utilizado para suavizar el proceso de fusión de imágenes. Los

coeficientes de mezcla, α, β, σ1 y σ2 son ajustados por el usuario para obtener los mejores resultados

de visualización.

El núcleo de la implementación de este modelo es un algoritmo de emisión de rayos

(ray-casting). Un transductor virtual se coloca dentro del espacio de un volumen de CT. Tanto el

volumen CT como el volumen de dispersión precalculado se cargan en la memoria en una primera

etapa. En un segundo paso, el algoritmo calcula los valores de reflexión, atenuación y ruido de

speckle durante el raycast y almacena estos valores en tres buffers diferentes. Una última etapa usa la

ecuación para calcular la imagen final de ultrasonido basada en esos buffers. La imagen resultante

tiene un amplio rango dinámico, por lo que es comprimida la señal utilizando un método de

compresión de registro.

18

Page 20: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 3.1.1 (a) Se observa el rango que el transductor capta sobre el volumen CT anatómico. (b) Simulación generada por la combinación de las imágenes de reflexión y dispersión para la región de interés mostrada en (a). Se observa el sombreado en el lado derecho debido a una interfaz de tejido de aire y en la parte inferior media de la imagen debido a una interfaz de tipo hueso.

3.2 Ruido Speckle generado en SIMECO

El simulador de ultrasonido SIMECO utiliza una técnica de recreación de ruido speckle

propuesta por D'Amato et al. [10], la cual es modelada con la siguiente fórmula:

n a . y * = x * * + *

donde indica el pixel con ruido aplicado en el medio de una ventana, el píxel sin ruido, y * x * n *

el ruido multiplicativo y el ruido aditivo, que puede ser despreciado en los sistemas de a *

ultrasonido por lo que se elimina. Si al resultado se le aplica una compresión logarítmica para ajustar

el rango dinámico del eco entre 50-70 dB la fórmula queda expresada como:

) ) ) log( y * = log( x * + log( n *

luego: y = x + n

donde y es el pixel de una imagen tipo B - Mode, x es el pixel comprimido sin ruido de una imagen

de CT a la cual se le aplican filtros para suavizar las interfaces y homogeneizar las intensidades de

los tejidos, y n es el componente de ruido comprimido. Sin embargo, el ruido speckle es más intenso

en regiones de mayor ecogenicidad, por lo tanto n no es independiente de x. Por consiguiente:

19

Page 21: Fusión de modelos de tejido en la simulación de imágenes ...

ny = x + √x

donde es definido como la convolución de ruido blanco Gaussiano con una función de n

propagación de punto (PSF)[12] por medio de la ecuación:

) , y) ⊗ Z( x , y ) N ( x , y = H( x donde es una matriz de ruido, es la PSF y es la impedancia acústica ) N ( x , y , y)H( x ) Z( x , y

modelada como ruido blanco Gaussiano.

Hay que considerar que el ruido speckle es proporcional a la intensidad de la señal que llega

al tejido. Puesto que las ondas de US pierden intensidad de la señal en la medida que avanzan sobre

los tejidos, debido a la absorción y al scattering, se aplica una atenuación lineal llamada caída lineal.

Como se mencionó en el Capítulo 1, la imagen de scattering es generada en el modelo de

entrada del simulador, es decir, durante la etapa de preprocesamiento del volumen previa a la

ejecución en tiempo real del simulador. Por esta razón se limita la generación de scattering con la

caída lineal aplicada a una posición fija.

Figura 3.2.1: Imagen de US generada por SIMECO.

20

Page 22: Fusión de modelos de tejido en la simulación de imágenes ...

3.3 Modelo de ruido Speckle en tiempo real

Külsgaard en [13], implementa una técnica de generación de scattering considerando la

posición del transductor en tiempo real para lograr representaciones más realistas del ruido y por

ende aumentar la calidad de la imagen de ultrasonido resultante de SIMECO.

El modelo de ruido speckle propuesto se divide en tres etapas para llevarse a cabo. La primera

se realiza en el modelo de entrada del simulador, en el cual, a partir de modelos 3D a los cuales se les

aplica una serie de filtros, genera un volumen de scattering utilizado como entrada para el simulador.

La etapa intermedia se basa en la asignación de valores y la creación de estructuras de datos, como la

matriz de ruido blanco y el kernel de la PSF. Ésta tiene lugar en el modelo del simulador ya que se

necesita información del tipo y la posición del transductor y el tamaño del volumen para la

generación de las estructuras.

La última etapa ocurre dentro del motor de simulación. Cuando las ondas emitidas por el

transductor atraviesan los tejidos del cuerpo se simulan los fenómenos del ultrasonido, dependiendo

de la orientación y posición del transductor. La velocidad de respuesta que tenga el simulador con

respecto a los movimientos del transductor es un factor determinante del nivel de interactividad con

el usuario. Es aquí donde existe una restricción de tiempo en la que deben mostrarse los resultados,

por lo tanto la generación de ruido implementado no solo pretende mejorar la calidad de imagen, sino

también introducir la menor cantidad de retraso posible al ciclo de recreación. La etapa se comienza

aplicando la caída lineal sobre el corte anatómico para recrear el fenómeno de absorción de las ondas

ultrasónicas que pierden intensidad en las zonas más profundas.

El patrón de ruido speckle no solo se forma en base a la posición y a la cantidad de scatterers

que haya al producirse el fenómeno de dispersión, sino también depende de la estructura del tejido.

Podemos decir que cada uno de éstos posee un patrón propio y por esta razón, cuando se observa un

mismo tejido desde distintas posiciones o ángulos, el ruido speckle resulta ser similar. Podemos

asumir, sin pérdida de generalidad, que el ruido generado en imágenes de tejidos similares son

consistentes (i.e similares) independientemente de la orientación o posición del transductor. Esta

simplificación del fenómeno de dispersión se utiliza con el fin de reducir el costo computacional.

Luego se extrae un plano del volumen anatómico utilizando como parámetros la posición y el

ángulo que indica el transductor, simulando el efecto del patrón de ruido speckle propio de los

21

Page 23: Fusión de modelos de tejido en la simulación de imágenes ...

tejidos. El plano de ruido es convolucionado con el kernel de PSF [14] y se genera la imagen de

ultrasonido con el ruido speckle aplicado.

Figura 3.3.1 Imagen US generada a partir de la técnica implementada por Külsgaard.

3.3.1 Validación de resultados

Como detalla Külsgaard en [13], la técnica de scattering en tiempo real incluye dos mejoras

de calidad a las imágenes de ultrasonido generadas por SIMECO. Por un lado recrea correctamente el

efecto de absorción, manteniendo la dirección de la caída lineal acorde al transductor como se

muestra en la figura 3.3.1.1 b) y d). El método original de SIMECO genera siempre el decaimiento

lineal en una misma dirección. Sucede así que para algunas tomas del volumen atómico la caída

lineal es perpendicular al transductor, generando el fenómeno de absorción de manera errónea, figura

3.3.1.1 c). Por otra parte, incorpora el efecto de pequeñas zonas brillantes y oscuras elongadas del

ruido speckle perpendicular a la dirección de la onda en base a la posición y ángulo del transductor.

SIMECO no recrea este efecto correctamente, ya que utiliza una única dirección para generar el ruido

de todo el volumen.

22

Page 24: Fusión de modelos de tejido en la simulación de imágenes ...

figura 3.3.1.1: Dirección de la caída lineal aplicada a la imagen US. a,c) fenómeno de absorción generado por la técnica

original de SIMECO. b,d) fenómeno de absorción generado por la técnica implementada por Külsgaard.

La recreación de los nuevos fenómenos en tiempo real impactó directamente sobre la

performance del modelo de simulación. Las estructuras y cálculos adicionales incrementan el tiempo

de carga en un 1,18% y los tiempos de cómputos en un 13% comparado con la generación de ruido

speckle original. Esto disminuyó la cantidad de cuadros generados por segundo en un 10%. Sin

embargo la caída de la performance obtenida no se considera significativa si se tiene en cuenta las

mejoras en la calidad visual del ruido speckle.

3.4 Integración de ruido Speckle en tiempo real

La generación en tiempo real del scattering no solo trae como consecuencia mayor tiempo de

cómputo, sino que también se suman nuevas estructuras auxiliares encargadas de contener los nuevos

cálculos. Esto produce un aumento en la demanda de páginas necesarias para mantener en memoria

principal las estructuras que necesita el motor de simulación, además de incrementar el tiempo de

carga de las mismas.

23

Page 25: Fusión de modelos de tejido en la simulación de imágenes ...

3.4.1 Motivación y Objetivos específicos

SIMECO cuenta con dos técnicas de modelado de ruido Speckle. Una de ellas generada en el

modelo de entrada, mientras que la otra es generada en el modelo de simulación. Durante la

ejecución del simulador ambos modelos arrojan como resultado la matriz de ruido correspondiente

para utilizarla en la imagen final de US, sin embargo es el usuario quien decide cual de las dos

técnicas mostrar en la interfaz gráfica.

Uno de los objetivos específicos que se pretende cumplir es mantener en tiempo de ejecución

del simulador un solo modelado de ruido speckle para evitar la construcción innecesaria de las

estructuras auxiliares de la otra técnica. Por otro lado se tiene como objetivo utilizar estructuras

optimizadas y aprovechar las ventajas del lenguaje para optimizar el uso de memoria.

3.4.2 Implementación

Un ejercicio de prueba se carga en el simulador por medio de un archivo de configuración que

contiene todos los parámetros configurables por el usuario para la creación de la imagen de

ultrasonido. Se agregó una nueva variable al archivo con el fin de que el usuario elija qué técnica de

scattering usará el simulador. Ésta recibe el nombre de ScatteringMode y puede ser seteada con los

valores “Preprocessed”, si se pretende usar el método original, o “RealTime” si se escoge la nueva

técnica. La clase Simulator carga la información correspondiente desde el archivo de configuración,

incluyendo el nuevo parámetro que setea una nueva variable privada de la clase, ScatteringRealTime,

por medio del método setScatteringRealTime. El valor que tome esta variable determinará qué

estructuras serán generadas y qué métodos llamará la función encargada de generar la nueva imagen

de ultrasonido. Otorgar mayor posibilidad de configuración al usuario, potencialmente genera nuevos

errores en la configuración. Es posible que no se indique correctamente el valor al parámetro de

ScatteringMode. En este caso se emitirá un mensaje de error “Scattering Mode Wrong”, el cual será

indicado a través de un mensaje de error en la aplicación y a su vez quedará asentado en el archivo de

logs de SIMECO.

Para incluir este caso de error, fue necesaria la implementación de una nueva excepción en la

clase Exception que compruebe la presencia o valor del parámetro ScatteringMode, de tal manera que

si su valor es erróneo se emitan los mensajes mencionados. Si este parámetro es faltante, por defecto

se utilizará la técnica de tiempo real.

24

Page 26: Fusión de modelos de tejido en la simulación de imágenes ...

Se detectó el envío de matrices OpenCV como parámetro por copia a varios métodos de la

clase Simulator. La forma en la que

se realiza este mecanismo es

ineficiente ya que al usar un pasaje

de parámetros de este tipo, opencv

utiliza métodos propios para crear

la copia. Esta misma es almacenada

en el heap y a su vez es

referenciada. Finalizada la función,

se debe invocar al método

destructor de la matriz copiada que

disminuye el contador de

referencias; si el contador es igual a

cero se libera el espacio que

ocupaba la matriz en el heap. Todo

esto genera perdida de tiempo y

memoria es por ello que se decidió

cambiar al tipo de pasaje de

parámetros por referencia para

evitar copias innecesarias de las

matrices. A su vez si de antemano

se podría detectar que dicho

parámetro no va a ser modificado, se lo define como constante de forma explícita por medio de la

palabra reservada const para que el compilador aplique las optimizaciones pertinentes.

25

Page 27: Fusión de modelos de tejido en la simulación de imágenes ...

3.5 Rendimiento

En el desarrollo de la presente sección se realiza un análisis de los resultados obtenidos tras la

nueva integración efectiva del modelo de generación de ruido speckle. Los análisis están

determinados a partir de aspectos tales como la memoria que necesita el programa durante la

ejecución de un ejercicio y el tiempo de carga de las estructuras necesarias la simulación.

3.5.1 Plataforma de prueba

Las pruebas de las mejoras aplicadas al simulador de ultrasonido SIMECO han sido

ejecutadas desde una computadora portátil con las las siguientes características:

Modelo Dell Inspiron 15 7000 series

CPU Core I5 5200

Memoria RAM 6 Gb

Placa de video Intel HD Graphics 5500

Sistema Operativo Linux elementary OS

Cada técnica de generación de ruido Speckle utiliza un volumen anatómico propio, obtenido a

partir de un conjunto de datos IRCAD compuesto de conjunto de componentes de tomografías

computarizadas abdominales segmentadas de hombres y mujeres.

3.5.2 Análisis de memoria

Durante este análisis se tuvo en cuenta el consumo de memoria producidas por ambas

implementaciones de la integración de la técnica de generación de ruido speckle.

Se puede identificar un mayor consumo para la implementación que existente desde un

principio. Ésta mantenía en tiempo de ejecución las dos implementaciones de ruido speckle, tanto el

modelo pre procesado propuesta por D'Amato et al. en [10], como también la implantación

incorporada por Külsgaard en [13]. Los cambios que se propusieron en la implementación arrojaron,

según las pruebas que realizamos en el equipo descrito en la sección anterior, un uso inferior de

26

Page 28: Fusión de modelos de tejido en la simulación de imágenes ...

memoria de un 11% para el ruido pre procesado, y de un 10% para el ruido obtenido en tiempo real.

Los resultados obtenidos se pueden apreciar en la Figura 3.5.2.1.

Figura 3.5.2.1 Comparación en el uso de memoria de la integración del ruido speckle en tiempo real.

3.5.3 Análisis de tiempo de carga

En esta etapa de análisis se le dio importancia al atributo de calidad performance en base al

tiempo que tarda el simulador a la hora de cargar un ejercicio de practica seleccionado por el usuario.

Para llevarse a cabo este análisis se realizaron quince pruebas de ejecución de SIMECO para el

modelo con y sin mejora tomando el tiempo de carga del ejercicio. Los resultados se promediaron y

fueron los siguientes:

Pre procesado (ms) Tiempo real (ms)

Sin Mejora 7225,6 7225,6

Con Mejora 5810,2 6079,4

27

Page 29: Fusión de modelos de tejido en la simulación de imágenes ...

Los datos de carga demoran por igual tanto para la técnica de preprocesamiento como la de

tiempo real para el algoritmo sin mejora por el hecho de que se están ejecutando ambos en

simultáneo. Al aplicar la mejora se puede apreciar una diferencia de tiempos entre cada técnica e

ruido speckle ya que la cantidad de estructuras que se deben cargar es menor. Como se muestra en la

figura 3.5.3.1 se puede observar una mejora del 15,86% para la técnica en tiempo real y 19,59% para

la pre procesada.

Figura 3.5.3.1 Comparacion de los tiempos de carga entre modelado de scattering

28

Page 30: Fusión de modelos de tejido en la simulación de imágenes ...

Capítulo 4: Reestructuración de SimEco

Es natural notar que la aplicación se vuelve inestable como consecuencia de las múltiples

modificaciones, adaptaciones o mejoras que surgen a lo largo del tiempo. Esto conlleva a pensar en

que cada vez que se pretende realizar un cambio se producen efectos colaterales inesperados, por lo

que se hace necesario aplicar una reingeniería del software. El simulador de imágenes de ultrasonido

SIMECO es un proyecto en constante mejora por lo que se pretende hacer una re-arquitectura con el

fin de reutilizar componentes, facilitar la comprensión del sistema, cambiar y probar con el fin de

reducir errores y costos de mantenimiento.

En este capítulo presentamos la arquitectura actual de SIMECO y el desarrollo de su

re-arquitectura para lograr un software más simple y adaptable.

4.1 Arquitectura de Simeco

SIMECO presenta una estructura modular determinada por dos módulos bien definidos: Core

y UI (Interfaz de usuario). El primero es el motor del simulador y se encarga de generar la imagen de

ultrasonido. Está conformado principalmente por las siguientes clases:

Clase Descripción Interfaces

TransducerElement

(TE)

Representa a cada uno de los rayos del transductor.

Get/Set: ● Vector de posición ● Vector de dirección

Transducer

Contenedor de los elementos del transductor. Define el número y ancho de elementos del transductor como así también el espacio entre los que son adyacentes entre si y cuales son los activos. También setea la intensidad inicial de la onda, la profundidad del rayo y el delta de muestreo.

Get/Set: ● Cantidad de TE ● Número de TE activos ● Ancho de cada TE ● Espacio entre TE adyacentes ● Longitud de apertura activa ● Ventana de TE ● Intensidad inicial ● Profundidad del rayo ● Delta de muestreo ● Intervalo random entre

deltas de muestre

29

Page 31: Fusión de modelos de tejido en la simulación de imágenes ...

InputManager

Controla las entradas de teclado/joystick para mover al transductor.

Actualización de entradas por teclado o joystick. Set: ● Transducer ● Sensibilidad de traslación

CTVolume

Es la entidad responsable de la representación del CT.

Get: ● Valor en un punto

determinado Set: ● Volumen CT

Simulator

Es la estructura encargada de calcular una imagen simulada de ultrasonido.

Simulación del frame Get ● Imagen simulada

Set: ● Transducer ● CTVolume

Renderer

Se encarga actualizar el contenido del frame proveniente de la simulación.

● Get: Último frame

Set: ● Información de entrada ● Rango de entrada ● Ganancia aplicada a los

datos de entrada ● Factor gamma aplicado a los

datos de entrada

Simeco

Crea y administra los elementos necesarios para la simulación.

Set: ● Foco ● TCG ● Ganancia

SimecoAPI

Define las interfaces que los clientes de simeco pueden utilizar para interactuar con simeco.

Set: ● Foco ● TCG ● Ganancia

SimecoClient Es el nexo entre el módulo core con el exterior.

Notificación de frame finalizado.

30

Page 32: Fusión de modelos de tejido en la simulación de imágenes ...

El módulo restante se encarga de mostrar la simulación del ecógrafo y genera las distintas

vistas de la interfaz de usuario. Sus clases principales son:

Clase Descripción Interfaces

SimecoThread Encargada de construir una instancia de Simeco.

Get: ● Último frame de imagen

ultrasonido. Set: ● Foco ● TCG ● Ganancia

ExcerciseNode Abstracción principal de los ejercicios de simulación.

Método de inicialización del ejercicio.

MainMenu Menú principal de la interfaz, se construyen los botones que inician los ejercicios.

Señales: ● Iniciar ejercicio

SimecoWidget Construye el panel en el cual se mostrará la imagen simulada.

Crear panel de imagen.

La figura 4.1.1 muestra una vista general del sistema y la comunicación entre los objetos dentro y

fuera de los módulos.

Figura 4.1.1. Vista general de Simeco

SIMECO inicia su ejecución del lado del módulo de Interfaz construyendo un nuevo objeto

del tipo ExcersiceNode por cada ejercicio disponible, mostrandolos en una lista de botones en el

31

Page 33: Fusión de modelos de tejido en la simulación de imágenes ...

menú principal del programa. Cuando un usuario presiona alguno de estos, MainMenu emite una

señal de que el ejercicio ha sido iniciado, en efecto está siendo invocado el método start() de la clase

Exercise. Este método se encarga de crear una nueva instancia del objeto SimecoThread, el cual hace

de nexo con el módulo de simulación debido a que hereda de SimecoClient. A su vez, dicho método

ejecutará el thread recientemente creado e iniciará su propio método start(), el cual se encarga de

crear una instancia de Simeco. Por otro lado Exercise recibe también el último frame actualizado por

el core de simulación, emitiendo una señal de finalización de frame con los nuevos datos para

actualizar la imagen de ultrasonido. Dicha imagen es mostrada en una instancia de la clase

SimecoWidget, encargada de generar la interfaz gráfica que recrea a un simulador de ultrasonido.

Una vez creado el objeto Simeco por medio de su método init(), se crean todas las instancias

de las clases del core necesarias para la simulación de las imágenes de ultrasonido. Luego de la etapa

de inicialización, se invoca el método run() que inicializa un loop infinito hasta el cierre del ejercicio.

Éste actualizará la instancia de transducer para tener las nuevas posiciones de los elementos del

transductor y generar la simulación de la nueva imagen de ultrasonido en la instancia de la clase

Simulator. Por último, Renderer renderizará la imagen para que simeco emita una señal notificando

que está disponible el nuevo frame a visualizar.

Figura 4.1.2 Vista dinámica de la construccion y ejecucion de un ejercicio en SIMECO.

32

Page 34: Fusión de modelos de tejido en la simulación de imágenes ...

4.1.1 Dependencias

SIMECO reutiliza un conjunto de librerías third-party para implementar toda su

funcionalidad. Dentro de ellas se encuentra:

● GLM: Es una librería matemática only header para programas de gráficos basados en en

lenguaje de sombreado OpenGL. SIMECO utiliza esta librería para la representación de las

posiciones y la orientación del transductor, así como también para los elementos del

transductor y los volúmenes de entrada.

● VTK: Es un sistema de software libre para la realización de gráficos 3D por computadora,

procesamiento de imágenes y visualización. Admite una amplia variedad de algoritmos de

visualización y técnicas de modelado avanzadas. Presenta además un extenso marco de

visualización de la información y un conjunto de widgets de interacción 3D. SIMECO hace

uso de esta librería para cargar los volúmenes anatómicos de entrada y para visualizarlos en la

interfaz de usuario.

● OpenCV: Es una librería open source que proporciona una infraestructura común para

aplicaciones de visión artificial y machine learning. Fue diseñado para la eficiencia

computacional y con un fuerte enfoque en aplicaciones en tiempo real. SIMECO utiliza esta

librería para generar las imágenes de ultrasonido de forma eficiente.

● SFML: Es una API cuyas funcionalidades permiten al usuario crear videojuegos y programas

interactivos. SIMECO aprovecha el módulo “graphics” para el control del transductor por

medio del teclado y el joystick.

● QT: Es un framework multiplataforma usado para desarrollar programas que utilicen interfaz

gráfica de usuario.

● GTest: Es una biblioteca para escribir casos de pruebas en el lenguaje de programación C ++.

● Inih: Es una librería pequeña y simple para analizar archivos .INI. SIEMCO utiliza archivos

de configuración .INI para cargar las configuraciones del simulador que pueden ser

modificadas por el usuario.

● Easylogging: Es una librería only header utilizada para el registro eficiente de logs en

aplicaciones C ++. Es extremadamente potente, extensible y configurable para los requisitos

del usuario.

33

Page 35: Fusión de modelos de tejido en la simulación de imágenes ...

● PSMoveAPI: Es una biblioteca de código abierto multiplataforma para acceder al controlador

de movimiento Sony Motion a través de Bluetooth y USB directamente desde un PC sin la

necesidad de una PS3.

● MyAHRS plus: es un AHRS de alto rendimiento y bajo costo. Los AHRS son sensores

tridimensionales formados por giróscopos, acelerómetros, y magnetómetros, que

proporcionan datos en los tres ejes del espacio. SIMECO tiene un traductor ficticio creado a

partir de una placa MyAHRS plus y utiliza su SDK de para obtener las posiciones del

transductor.

● Serial: Esta es una biblioteca multiplataforma escrita en C ++ para interactuar con puertos en

serie rs-232. Simeco utiliza esta librería para leer el puerto serial donde se conecta el maniquí

y luego traducir esa información en la posición del transductor.

4.2 Build system

El proceso de compilación de un programa no es trivial y necesita varios pasos para llevarse a

cabo. A medida que el proyecto crece, ya sea por incluir nuevas librerías third-party, módulos

propios, o expandirse a otras plataformas entre otros motivos, se desea que su construcción sea lo

más automático y fiable posible para evitar muchos errores en el transcurso de este proceso.

SIMECO utiliza la herramienta CMake para definir su proceso de compilación por varios motivos:

● Sintaxis simple para la especificación de las dependencias entre los archivos y las acciones

que se tienen que llevar a cabo.

● Genera binarios multiplataforma.

● Recopilación únicamente de los archivos modificados.

4.2.1 CMake

CMake es una familia de herramientas de plataforma abierta diseñada para desarrollar, probar

y empaquetar software. Es utilizada para controlar el proceso de compilación del software usando

plataformas simples y archivos de configuración independientes del compilador para generar

makefiles y espacios de trabajo nativos que se pueden usar en un entorno de compilación a elección.

CMake propone una estructura básica de directorios, como se muestra en la figura 4.2.1.1, para

organizar un proyecto. La carpetas src contienen todos los archivos y clases propias del proyecto

34

Page 36: Fusión de modelos de tejido en la simulación de imágenes ...

necesarias para compilar. Include es el directorio que contiene los archivos cabeceras que se

pretenden compartir hacia el exterior del proyecto, mientras que carpeta Lib incluye todas las

librerías estáticas enlazadas al proyecto. El proyecto se compila generalmente en un directorio build,

dentro de la carpeta raíz. Las configuraciones están centralizadas por defecto en un archivo llamado

CMakeLists.txt. Éste es el encargado de indicar toda la información necesaria para que se haga

efectiva la compilación del proyecto.

Figura 4.2.1.1: árbol de directorios estándar de un proyecto compilado con Cmake.

Indica qué archivos se deben compilar, qué librerías necesita el programa y cómo las incluye,

qué librerías y ejecutables se generan y otros parámetros adicionales que requiera el compilador. El

formato mínimo de este archivo suele ser:

PROJECT ( nombre_del_proyecto )

ADD_EXECUTABLE ( nombre_del_ejecutable {VARIABLE} )

La primera sentencia es la definición del proyecto y es de requisito obligatorio. La segunda

línea es la encargada de definir el archivo ejecutable. El primer parámetro define el nombre del

ejecutable mientras que el segundo es la listas de archivos necesarios para la compilación del

proyecto.

35

Page 37: Fusión de modelos de tejido en la simulación de imágenes ...

4.2.1.1 Sentencias de CMake

El lenguaje de CMake es imperativo, se ejecuta de forma secuencial y su sintaxis es regular y

simple:

COMANDO 1 (ARG1 ARG2)

COMANDO 2 (ARG1 ARG2 ARG3 …)

Si bien se mostró en la sección anterior la estructura mínima para definir un archivo CMake,

no es suficiente para configurar proyectos de gran tamaño. Existen otras sentencias comunes para

completar la configuración, las más usadas son:

● SET (< variable > [< archivos >]). Setear una variable.

● < variable >: Nombre de la variable. Existen varias convenciones que se recomienda

seguir, por ejemplo debe terminar en SRC si incluye ficheros a compilar.

● < archivos >: Lista de archivos a utilizar.

● ADD_SUBDIRECTORY(< directorio >): Añadir un directorio. Antes de procesar el

directorio actual, se procesa cada uno de los subdirectorios indicado.

○ < directorio > ruta relativa del directorio a incluir.

Definición de librerías

● ADD_LIBRARY(< nombre libreria > [ TIPO ] < archivos | variables >): Definir una

librería.

● < nombre librería > Define el nombre de la librería

● TIPO define el tipo de librería, el cual puede ser definido como:

○ SHARED define una librerıa de tipo dinámica (.so - .dll)

○ STATIC definiría una librería estática ( .a )

● < archivos | variables > Archivos necesarios para la librería.

36

Page 38: Fusión de modelos de tejido en la simulación de imágenes ...

Uso de librerías

● FIND_PACKAGE(): Encontrar archivos cabeceras de librerías externas. El comando busca

la ruta del módulo Find<nombre-librería>.cmake. Las rutas de búsqueda son las definidas en

la variable CMAKE_MODULE_PATH o el directorio de módulos de CMake

<CMAKE_ROOT>/share/cmake/Modules/. Si el paquete fue encontrado, se setea en true la

variable <nombre-librería>_FOUND.

● INCLUDE DIRECTORIES( < directorios > ): Insertar directorios para los include.

Mediante esta variable se añaden nuevas rutas para buscar los archivos cabecera.

● TARGET_LINK_LIBRARIES (< ejecutable | librería > [< librerías >]): Generar Enlaces

entre librerías.

● < ejecutable | librería >: Nombre del ejecutable o librería definido anteriormente.

● < librerías > : Archivo o variable de la librería que se desea enlazar.

.

4.2.2 Configuración de SIMECO

El archivo CmakeList de SIMECO incluye los archivos header y source de los módulos core e

interfaz y administra las dependencias de cada uno de ellos. Además activa algunos flags del

compilador de C++ como por ejemplo la funcionalidad de la versión 14. A continuación en la figura

4.2.2.1 se puede apreciar un pseudocódigo del archivo de configuración.

37

Page 39: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 4.2.2.1: Archivo CmakeList.txt. PseudoCódigo ilustrativo del archivo de configuración de compilación de

SIMECO

4.3 Motivación a generar una librería dinámica

Las librerías son paquetes que almacenan funcionalidad similar en una sola unidad, siendo

una forma sencilla y versátil de modularizar y reutilizar código. Si la librería se vincula a un

programa en tiempo de compilación, ésta será tratada como cualquier otro módulo objeto y se

integrará a la imagen binaria del programa. De este modo cada programa que utilice la librería tendrá

una copia de la misma, desperdiciando espacio en disco y memoria principal. Además un cambio

sobre ella obligaría al usuario a volver a compilar todo el programa.

En contraparte, si la librería pospone su vinculación a un programa hasta el tiempo de

ejecución del mismo, dentro de la imagen binaria del programa se incluirá un pequeño fragmento de

código llamado stub para indicar cada referencia de una rutina de la librería. El stub se encarga de

localizar la rutina adecuada de la librería residente en memoria o cómo cargarla si esa rutina no está

todavía presente. Luego se sustituye así mismo por la dirección de la rutina y la ejecuta, así, la

siguiente vez que se ejecute ese segmento de código concreto se ejecutará directamente la rutina de la

libreria, sin tener que realizar de nuevo el montaje dinámico. La librería contiene una tabla de

38

Page 40: Fusión de modelos de tejido en la simulación de imágenes ...

exportaciones que almacena el nombre de cada función exportada a otros ejecutables. Las funciones

presentes en esta tabla son el único punto de entrada a la librería, el resto de funciones son privadas.

Usar librerías de enlace dinámico trae como ventaja:

● Ahorrar memoria y reducir el intercambio de páginas. Muchos procesos pueden utilizar

simultáneamente una mismo libreria dinamica, compartiendo una sola copia de la misma en la

memoria.

● Ahorrar espacio en disco. Se almacena una única copia de la librería en disco.

● Facilitar la actualización de la librería. Cuando se cambian las funciones de la librería no es

necesario volver a compilar y vincular las aplicaciones que la utiliza si no cambian los

argumentos de la función y los tipos de valores devueltos.

● Admitir programas multilenguaje. Programas creados con distintos lenguajes de

programación pueden llamar a la misma función siempre que sigan la convención de llamada

a la función.

Teniendo en cuenta todas las ventajas que traería convertir el módulo de simulación de

SIMECO en una librería dinámica , se propone hacer efectiva dicha transformación para permitir

reutilizar el motor en otras aplicaciones las cuales sea necesario generar imágenes de ultrasonido a

partir de volúmenes de CT. Como ventaja colateral obtenemos la facilidad de modificar y actualizar

el módulo de forma sencilla sin afectar el resto del simulador y mejorar los tiempos de compilación.

4.4 Implementación

La construcción de la librería dinámica se puede dividir en dos partes. Por un lado están los

cambios realizados sobre el diseño del módulo del simulador, relacionados con la abstracción de las

clases compartidas al exterior. Por el otro la modificación del archivo cmake para actualizar el build

system.

4.4.1 Cambios en el Diseño del módulo Core

Una de las consideraciones a tener en cuenta al definir una librería es cuáles van a ser sus

interfaces, es decir qué métodos se exportarán para que otra aplicación pueda hacer uso de ellas. El

core de simulación comparte con el exterior las clases:

39

Page 41: Fusión de modelos de tejido en la simulación de imágenes ...

● SimecoClient: Es la clase que el programa externo tendrá que heredar para comunicarse con

la librería.

● Simeco: Necesaria para poder crear el motor de simulación en sí.

● Transducer: Necesario para acceder a las posiciones, rotaciones y orientaciones del

transductor.

● Simulation Size: Computa en milímetros el tamaño de la simulación.

El hecho de que en C++ todos los data members tengan que ser visibles en el archivo de

cabecera obliga a incluir archivos que contienen detalles de implementación y se pretenden mantener

privados. Por lo tanto cuando un programa tercero utilice alguna de las clases compartidas por la

librería no podrá compilarla, ya que no tiene acceso a aquellas clases privadas incluidas en la

anterior. Para dar un ejemplo, la clase simeco incluye a la clase simulator para crear una instancia de

ésta y generar la imagen de ultrasonidos simulada. Sin embargo es un archivo privado de

implementación de la librería que no pretende ser compartido pero si no se comparte se le impedirá a

la aplicación de terceros la compilación de la clase Simeco. Para resolver este inconveniente existe

una expresión idiomática (idiom) denominada Pointer To Implementation (Pimpl) o puntero opaco

para ocultar la implementación de una clase en C++. Este patrón propone separar en dos clases

distintas la interfaz pública de los detalles de implementación. El archivo cabecera de la clase pública

o también llamada handle tiene solamente los métodos públicos y un puntero a la clase privada o

body, de la que solo existe una declaración anticipada (forward declaration) . En el archivo source de

handle se especifica su constructor y destructor y se tiene acceso a la implementación definida en la

clase privada. Es relevante destacar la existencia de la declaración anticipada de la clase Body dentro

del archivo cabecera de la clase handle. Ésta técnica se utiliza cuando el programador hace uso de

una estructura que aún no ha dado su definición completa. Para el caso particular de compilaciones

separadas, durante el proceso de compilación, el compilador acepta el uso de una estructura declarada

pero no definida, asumiendo que el linker encontrará la definición al momento que se están

enlazando las librerías definidas en el archivo Cmake.

40

Page 42: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 4.4.1.1: Clase handle de la implementación del

patrón Pimpl sobre la clase simeco. naranja) archivo

cabecera simeco.h. azul) archivo source simeco.src.

La figura 4.4.1.1 muestra la implementacion

de la clase handle del patrón en la clase

simeco.

La clase body, que se denomina de la misma

forma seguida de Impl, contiene la

implementación de la clase pública,

incluyendo atributos y métodos privados.

Normalmente cuando se modifica una clase

añadiendo atributos o métodos privados

nuevos se obliga al usuario de la clase a

re-compilar por algo que no utilizan

directamente. Utilizando Pimp, cualquier

cambio que se realice en la implementación

que no afecte directamente a la interfaz

pública (cambio en los tipos de retorno,

cambio en la cantidad o tipos de parámetros)

no requiere la re-compilación de los usuarios

de las clases.

Como pretendemos que el core de simulación

sea un componente reutilizable, aprovechamos las ventajas ofrecidas por el patrón y lo aplicamos

sobre las clases que funcionan como interfaces de la librería (transducer, simulationSize, Simeco).

Esto puede reflejarse de forma negativa para la comprensión de la arquitectura ya que se agregan

nuevas clases para representar la funcionalidad ya existente. Las clases Transducer, SimulationSize y

Simeco se transforman en la clase handle del patrón y se incorporan TransducerImpl,

SimulationSizeImpl y SimecoImpl como clase body respectivamente.

41

Page 43: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 4.4.1.2 Diagrama de Clases de idiom Pimpl aplicado a las clases simulationSize, simeco y transducer.

42

Page 44: Fusión de modelos de tejido en la simulación de imágenes ...

4.4.2 Build System

La creación de la nueva librería implica la construcción de un nuevo archivo CMakeList para

configurar el proceso de compilación de la misma. La figura 4.4.2.1 muestra un pseudocodigo del

archivo, el cual incluye las sentencias para incorporar los archivos de cabecera e implementación,

soportar las nuevas funcionalidades de C++14, incluir y linkear las librerías externas y la sentencia

Add_library con parámetro SHARED para indicar que construcción de la librería dinámica.

Figura 4.4.2.1 Pseudocódigo del archivo CmakeList.txt de SimecoLib.

43

Page 45: Fusión de modelos de tejido en la simulación de imágenes ...

El sub árbol de directorios de la carpeta raíz del proyecto se compone por :

● include: Contiene los archivos cabecera de las clases mencionadas anteriormente que la

librería compartirá con las aplicaciones terceras.

● src: Contiene todos los archivos de cabecera e implementación propios de la librería.

● lib: Directorio que contiene las librerías que utiliza Simecolib.

● build: Directorio donde se buildea la librería.

● CmakeList.txt y findSIMECO.cmake

findSIMECO.cmake es un archivo de módulos cuya utilidad es facilitar la búsqueda manual de la

cada uno de los archivos que la librería exporta para su utilización. Como todo archivo de módulo, su

estructura básica está determinada por:

1. Definir el directorio de la librería. La ruta del directorio se configura desde el archivo

Cmake a través de la variable SIMECO_ROOT.

2. Buscar los archivos cabecera y las bibliotecas que se exportan. Se utilizan los comandos

FIND_PATH y FIND_LIBRARY para buscar los archivos de encabezado y biblioteca,

respectivamente. Los resultados se guardan en las variables SIMECO_INCLUDE_DIR y

SIMECO_LIBRARY).

3. Definir la variable booleana SIMECO_FOUND para determinar si la librería fue

encontrada o no. El paquete se considera encontrado si todas las variables que referencian al

directorio include y a la librería contienen resultados válidos. Para definir esta variable, se

usa la macro find_package_handle_standard_args ().

4. Establecer las variables que se utilizarán en el archivo CMake con los resultados de la

búsqueda. SIMECO_INCLUDE_DIRS tendrá los resultados de SIMECO_INCLUDE_DIR y

SIMECO_LIBRARIES se completará con los resultados de SIMECO_LIBRARY.

44

Page 46: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 4.4.2.2: archivo findSIMECO.cmake

El archivo CMakeList original de SIMECO tuvo cambios radicales con la separación del motor de

simulación. Se eliminaron todos los archivos fuente del módulo Core y también todas las

instrucciones para incluir sus dependencias. Además se incluyó la nueva librería con el Core de

simulación (simecolib). Cuando se ejecuta el archivo CmakeList se tiene que definir la variable

SIMECO_DIR con la ruta del directorio de la librería para que el archivo de módulo la encuentre. La

figura 4.4.2.3 representa un pseudocódigo del archivo CmakeList resultante de los cambios

aplicados.

45

Page 47: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 4.4.2.3: nuevo archivo CMakeList.txt de SIMECO luego de generar la librería dinámica.

4.5 Resultados

Se llevaron a cabo pruebas de compilación para realizar un análisis cuantitativo entre la

arquitectura original que desde un principio poseía SIMECO y la que hemos propuesto. Partiendo de

la teoría de que el tiempo de compilación bajaría al convertir el módulo de simulación en una librería

dinámica, ya que no es necesario volver a compilar todo el proyecto ante un cambio en dicho

módulo, se registraron los tiempos de compilación de la arquitectura original y la nueva para:

1. Compilar SIMECO

2. Agregar un variable privada en una clase que utiliza el idom PImpl

3. Incluir la técnica de ruido speckle

Los datos obtenidos se reflejan en la siguiente tabla:

46

Page 48: Fusión de modelos de tejido en la simulación de imágenes ...

ITEM SIMECO SIMECO CORE SIMECO INTERFAZ MEJORA

1 0:03:43 0:01:31 0:01:44 12,56%

2 0:00:20 0:00:11 - 45%

3 0:02:00 0:00:30 - 75%

La primera vez que se compila el proyecto, sea de forma unificada o con compilaciones separadas,

debieran tener valores similares. Notamos que la propuesta presentada de separar los módulos tiene

una leve mejora que se le atribuye a la utilización de declaraciones anticipadas.

Las mejoras significantes en los tiempos de compilación se pueden apreciar a simple vista cuando se

hacen modificaciones sobre la nueva librería sin afectar a las interfaces que comunica con

aplicaciones terceras. Nuestra implementación evitará la recopilación de todo el proyecto, como lo

hace SIMECO originario, y mejorará drásticamente los tiempos de compilación. En la Figura 4.5.1

se observan los resultados obtenidos.

 Figura 4.5.1 Comparación de tiempos de compilación entre SIMECO originario y SIMECO importando la nueva librería

dinámica del Motor de simulación.

47

Page 49: Fusión de modelos de tejido en la simulación de imágenes ...

Por otro lado hay que analizar el rendimiento del motor de simulación en tiempo de ejecución

luego de haber implementado el idiom Pimpl. La indirección adicional que agrega el patrón con el

puntero a la clase body implica una pequeña pérdida de rendimiento.

Se hicieron pruebas para calcular los frames por segundo que se generaban para visualizar la

imagen de ultrasonido tanto con la técnica de generación de speckle en tiempo real como

preprocesado. Los resultados fueron 8 y 9 frames por segundo respectivamente. Si se comparan los

resultados con aquellos obtenidos previamente a esta implementación, se observa que hay una caída

de un frame por segundo. Esta pérdida de rendimiento no debe considerarse relevante ya que no

disminuye la interactividad con el usuario y además considerando que los frames aumentarán

drásticamente si se implementa el algoritmo en GPU.

48

Page 50: Fusión de modelos de tejido en la simulación de imágenes ...

Capítulo 5: Integración de Modelo de Superficie

En este capítulo se mencionará y explicará una nueva forma de simular imágenes de

ultrasonido en tiempo real a partir de un modelo de superficies. En principio se describe cómo es el

modelo y por qué es importante incluirlo. Luego se describe el procedimiento de implementación

para poder incluirlo de manera efectiva. Se finaliza el capítulo realizando un análisis comparativo

contra el modelo de volúmenes que implementa SIMECO.

5.1 Modelo de Superficies

Este modelo propuesto por Rubi et al en [17] tiene como núcleo un algoritmo de lanzamiento

de rayos. Las ondas de ultrasonido se suponen como rayos que se comportan de manera consistente

con leyes de física conocidas. Los rayos se rastrean desde el transductor hasta la escena donde se

encuentran los modelos de malla de los órganos humanos. Cada tejido tiene un conjunto de

propiedades que describen sus características mecano-acústicas, como la impedancia acústica,

necesaria tanto para la física de los rayos como para la simulación de dispersión.

Cuando un rayo interseca una malla con un ángulo de incidencia θinc, se refracta en un ángulo

θrefr y se refleja en un ángulo θrefl (Figura 5.1.1). Estos ángulos se calculan usando la Ley de Snell.

Figura 5.1.1: onda intersectando una malla

La intensidad de las nuevas ondas están dadas por las ecuaciones de Fresnel. Usando estas

ecuaciones, un algoritmo recursivo es responsable de crear el rango de rayos comenzando desde el

transductor. Puesto que cada rayo crea dos rayos en cada impacto, la cantidad de rayos emitidos crece

49

Page 51: Fusión de modelos de tejido en la simulación de imágenes ...

exponencialmente con la profundidad de la recursión. Para tener en cuenta el grosor del transductor,

que crea efectos no despreciables, se inician varias capas de rayos en diferentes pasos de elevación

para cada uno de los elementos del transductor. Los ecos recibidos por el transductor consisten en un

término de reflexión y un término de retrodispersión. El término de reflexión se puede calcular en

cada golpe durante la fase de emisión de rayos del algoritmo. En este modelo, las reflexiones se

consideran como especulares, difusas o una combinación de ambas. Se usa un factor para describir la

rugosidad de la interfaz, donde 0 describe una superficie completamente difusa e infinito corresponde

a una superficie perfectamente especular. Para amplificar pequeñas reflexiones, Burger propone un

coeficiente de mejora α [14].

El Backscattering o retrodispersión se produce en cada punto de muestra a lo largo del rayo y

se calcula utilizando un método basado en convolución propuesto por Meunier [18]. La

retrodispersión recibida por el transductor se puede escribir como

IBi (l) = i (l) * (P )(l) ⊗ S (x, y, z)

Siendo la intensidad en un punto a lo largo del rayo, P una función de dispersión I i (l)

puntual (PSF) y S una función que describe los scatterers en cualquier punto del espacio para un

tejido dado. La PSF se modela como un gaussiano 3D modulado por una función de coseno. Tres

parámetros, σx, σy y σz, dan forma al perfil del haz en direcciones axial, lateral y de elevación,

respectivamente.

La función S que describe los scatterers se define con tres parámetros, que se dan para cada

tejido. Un par (μ, σ) describe la distribución normal de las amplitudes del scatterer, mientras que un

tercer parámetro ρ es la densidad del scatterer, que proporciona un umbral de probabilidad por

encima del cual un scatterer proporcionará una contribución de imagen. [14].Una vez que se calcula

la información de reflexión y dispersión, cada línea de exploración de eco se crea al agregar ambos

términos.

Para generar la imagen final se realizan algunos pasos de postprocesamiento. Se elabora una

operación de valor absoluto sobre las líneas de exploración para aproximar una operación envolvente;

un paso de conversión de escaneo se usa para modelar un transductor curvo; y se realiza una etapa de

compresión logarítmica para reducir el rango dinámico de la imagen.

50

Page 52: Fusión de modelos de tejido en la simulación de imágenes ...

Es necesaria la descripción de escena donde cada malla corresponde a un tejido diferente.

Cada tejido tiene dos materiales asociados, material interno y externo. Cada material tiene seis

parámetros que definen sus propiedades físicas: impedancia acústica, atenuación de la señal,

especularidad y tres valores estadísticos que dan forma a la textura de dispersión. La simulación

también requiere dos parámetros que detengan el algoritmo recursivo de difusión de rayos: un nivel

máximo de profundidad y un umbral mínimo de intensidad. También se debe proporcionar una

posición del transductor, orientación y material de partida.

5.2 Motivación para incorporar el Modelo de Superficies

Una de las principales desventajas de los modelos basados en volumen es la imposibilidad de

cubrir todo el rango de efectos que se pueden crear con los enfoques generativos. Por ejemplo aplicar

deformaciones en tiempo real está imposibilitado por el conjunto de datos que no aprovechan al

máximo las capacidades de GPU. Por este motivo es importante incluir en SIMECO un nuevo

modelo basado en mallas propuesto por Rubi et al en [17].

5.3 Arquitectura de Burger

Burger es un sistema que emula imágenes de ultrasonido en tiempo real utilizando un motor

de simulación basado en superficies. Este sistema fue implementado por Rubi, y está conformado

principalmente por las siguientes clases:

Clase Descripción Interfaces

scene

Carga la escena (construyendo

las mallas de los tejidos a partir

de un archivo de configuración)

y el transductor.

Obtener la lista de segmentos por cada elemento del transductor. Distancia entre dos puntos de un segmento.

51

Page 53: Fusión de modelos de tejido en la simulación de imágenes ...

rfimage

Imagen de radiofrecuencia.

Encargada de almacenar los ecos

resultantes del ultrasonido

colisionando con los tejidos.

Get: ● Tiempo delta que representa

un píxel Aplicar convolución Aplicar envolvente Aplicar un postprocesamiento.

transducer

Contenedor de los elementos del

transductor. Define el número y

ancho de elementos del

transductor, el espacio entre los

elementos adyacentes entre si y

cuales de ellos son los activos.

Obtener elementos del transductor.

main

Programa principal. Obtiene

como resultado una imagen de

ultrasonido.

Figura 5.3.1: Vista general de Burger. Muestra las conexiones entre componentes para generar una imagen de

ultrasonido.

52

Page 54: Fusión de modelos de tejido en la simulación de imágenes ...

5.4 Incorporación del modelo a SIMECO

Para incluir este nuevo modelo a SIMECO el proceso de desarrollo fue dividido en dos

etapas: la construcción de una librería dinámica para el nuevo modelo de simulación y la adaptación

del módulo interfaz para incorporar y visualizar ejercicios de mallas de superficie.

5.4.1 Construcción de la librería dinámica

Se realizaron modificaciones estructurales dentro del proyecto y también se modificó el

archivo de configuración de CMake para que pueda ser compilado como una librería dinámica.

El archivo main.cpp fue re-implementado como una nueva clase llamada burger. Puesto que

esta clase se encarga de administrar la simulación, incluye a una gran cantidad de archivos y librerías

propias de la implementación que se pretenden ocultar a terceros. Ya que esta clase será una de las

interfaces de la librería con el exterior, se tiene que ocultar su implementación y para ello se aplica el

idiom Puntero Opaco. Como se explicó en el capítulo anterior, este patrón crea una clase pública, en

este caso burger, y una clase body denominada burgerImpl. La figura 5.4.1.1 muestra la

instanciación del patrón en la clase burger.

Figura 5.4.1.1 patrón Pimpl aplicado a la clase burger.

53

Page 55: Fusión de modelos de tejido en la simulación de imágenes ...

Se sumaron nuevas clases que amplían la funcionalidad del modelo, estas son:

Class Descripción

Renderer El objetivo principal de esta clase es

actualizar el buffer con la información de la

imagen ultrasonido, dependiendo de la

posición del transductor. El resultado de

esta actualización es un puntero a char que

contiene la imagen de ultrasonido en

formato RGBA.

InputManager Esta clase es la encargada de obtener los

input del teclado, y de esta manera realizar

una traslación del transductor en las

coordenadas X, Y y Z.

BurgerClient Es la clase que el programa externo tendrá

que heredar para comunicarse con la librería

El único cambio radical que se realizó sobre el archivo de configuración fue el reemplazo de

la sentencia:

ADD_EXECUTABLE (burgercpp ${burgercpp_SRC}) 

por ADD_LIBRARY(burger SHARED {SRC}),

de esta manera el motor de simulación se convierte en una librería de tipo dinámica.

En el árbol de directorios se crea la carpeta Include en la cual se van a incluir los archivos burger.h y

burgerClient.h para compartir con aplicaciones terceras. Por último, se tiene que crear un archivo de

módulo findBURGER.cmake del mismo modo como se hizo con findSIMECO.cmake. La figura

4.4.1.2 muestra el archivo de modulos creado para facilitar la búsqueda manual de la cada uno de los

archivos que la librería exporta.

54

Page 56: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 5.4.1.2: Archivo findBURGER.cmake

5.4.2 Actualización del módulo Interfaz

Una segunda etapa de desarrollo consistió en incluir el nuevo modelo basado en superficies

dentro SIMECO.

Se añadieron clases nuevas que facilitan la comunicación entre el modelo de mallas y la

interfaz de SIMECO. Estas clases fueron agregadas siguiendo el diseño original de la relación entre

interfaz con el modelo de volumen, haciendo uso de la herencia que abstrae cada uno de los

ejercicios que pueden ser ejecutados. En la siguiente tabla se especificará cada una de las clases que

fueron agregadas:

55

Page 57: Fusión de modelos de tejido en la simulación de imágenes ...

Class Descripción

BurgerThead

Esta clase hereda de la clase burgerClient. El

objetivo principal de esta clase es inicializar un

modelo de mallas con sus respectivos archivos

de configuración y ejecutarlo en un thread

distinto al que utiliza la interfaz.

ExeciseMesh

Esta clase hereda ExerciseNode. El objetivo

principal de esta clase es generar un ejercicio

correspondiente al modelo de mallas. Se debe

implementar el método start(), el cual crea una

nueva instancia de BurgerThread y cuando éste

actualiza el frame (el cual contiene la

información de la simulación) por medio de la

señal frameFinished, se comunicara con

UltrasoundLabel quien será la encargada de

mostrar la matriz resultante en la interfaz.

ExercisePMesh

Esta es una herencia de ExeciseMesh, la cual

fue diseñada para ejercicios de práctica

correspondientes al modelo de mallas. Esta

clase está pensada para que en un futuro, si se

desean agregar ejercicios básicos y de medición

simplemente se deba crear una nueva clase

similar con las configuraciones

correspondientes al ejercicio.

En la figura 5.4.2.1 se puede apreciar el resultado de incluir las nuevas clases en el diagrama

de clases del módulo interfaz.

56

Page 58: Fusión de modelos de tejido en la simulación de imágenes ...

Figura 5.4.2.1: diagrama de clases parcial del módulo Interfaz

El archivo CmakeList de SIMECO debe incluir la librería de la misma forma que hace con el otro modelo, las sentencias para a agregar son:

find_package(BURGER REQUIRED) if (BURGER_FOUND) include_directories(${BURGER_INCLUDE_DIR}) target_link_libraries(interfaz ${BURGER_LIBRARIES}) endif()

cuando se ejecuta el archivo CmakeList se tiene que definir la variable BURGER_DIR con la ruta del directorio de la librería para que el archivo de módulo la encuentre.

57

Page 59: Fusión de modelos de tejido en la simulación de imágenes ...

Finalmente la figura 5.4.2.2 muestra una vista general de cómo se comunican las entidades dentro de la librería y cómo se desarrolla el nexo de ésta con SIMECO.

Figura 5.4.2.2: vista general que muestra la relacion entre burger con SIMECO

5.5 Comparación entre los modelos implementados en SIMECO

La simulación de procesos físicos implica modelar los fenómenos físicos acordes, algunos de los

cuales no se entienden completamente o resultan demasiados complejos para modelarlos de manera

eficiente. Como consecuencia se obtiene modelos simplificados o incompletos que no pueden imitar

correctamente los fenómenos del proceso modelado. Para la validación y comparación de modelos

para la simulación de imágenes de ultrasonido, la dificultad no solo radica en los fenómenos físicos,

sino también en el modelado de la forma y las propiedades de los tejidos además de los procesos

aleatorios de dispersión y ruido. Debido a estas limitaciones, no es posible obtener imágenes 100%

realistas y las evaluaciones bajo este criterio fracasarán. Entonces hay que definir la simulación en

términos de realismo aceptable o adecuado y para ello primero hay que definir cuales son los

criterios.

La validación se divide en tres partes: el realismo percibido, la precisión de los resultados y el

rendimiento en cuanto a framerate. Existen varios factores que impactan directamente sobre estas

características. Se pueden identificar:

58

Page 60: Fusión de modelos de tejido en la simulación de imágenes ...

● La cantidad de rayos: Aumentar o disminuir la cantidad de rayos afecta el tiempo de

renderizado y artefactos como el enfoque.

● Tamaño del modelo: Para el caso del modelo de superficie, una geometría altamente detallada

se compone de una cantidad más elevada de triángulos, esto se traduce a un número mayor de

colisiones y por consiguiente mayor cantidad de cálculos que afectan a la performance.

● Efectos simulados: artefactos como la refracción, deformación y ruido speckle generan un

mayor número de cálculos que pueden afectar negativamente al rendimiento; ajustar su

calidad u omitirlos es una alternativa para mejorar el rendimiento.

La combinación óptima de estos factores es relativa a los requisitos y limitaciones de hardware

disponibles. Existe un trade off entre precisión e interactividad. Cuanto más interactivo se pretende

ser, se simulan menos efectos y se disminuye el número de rayos, lo que da como resultado imágenes

nítidas y planas. En sentido contrario, cuando se busca mayor precisión, las sombras, reflejos y

estructuras se ven borrosas lo que resulta ser una imagen más realista.

Figura 5.5.1: Trade off entre interactividad y precisión

Al comparar el modelo de volúmenes contra el modelo de mallas pudimos detectar los siguientes

aspectos importantes:

● El modelo de volúmenes muestra un corte del modelado 3D obtenido a partir de las imágenes

de CT, esto simula estructuras anatómicas como realmente son. En contraparte el modelo de

mallas capta el tiempo que pasa en recibir un eco y ésta es la forma en que funciona un

ecógrafo real.

● La atenuación en el modelo de volúmenes se calcula a partir de aplicar un decaimiento lineal

sobre el volumen generado a partir de las imágenes de CT. En el Modelo de mallas la

atenuación es una propiedad que puede ser configurada.

● El modelo de volúmenes no puede simular artefactos dependientes de la vista, como la

refracción. El modelo de mallas sí tiene en cuenta la refracción al cambiar la dirección de las

ondas durante se realizan los cálculos.

59

Page 61: Fusión de modelos de tejido en la simulación de imágenes ...

Todos los fenómenos físicos incorporados en el modelo de mallas generan más artefactos de las

imágenes de ultrasonido como la refracción y la distorsión de rango mostrando imágenes más

precisas. Sin embargo trae aparejado un notable decaimiento de performance como para mantener la

interactividad mínimamente requerida.

Se realizaron pruebas de simulación con dos ejercicios del modelo de mallas.

El primero compuesto por dos mallas, un cuadrado de material grasa y una bola de material hueso. Al

ser pocos elementos relativamente sencillos de modelar con triángulos se logró mantener en

ejecución una media de 4 frames por segundo. Cuando se probó con las mallas que modelan la

anatomía humana los frames por segundo bajaron a menos de 1 debido a la complejidad en el

modelado de los tejidos. Si bien la calidad y precisión de la imagen mejoran en gran medida como se

muestra en la figura 5.5.2, el modelo de mallas no puede competir contra lo 10 frames por segundos

que propone el modelo de volumen para mantener una interactividad respetable.

Sin embargo los datos obtenidos no pueden considerarse concluyentes ya que se están ejecutando los

modelos sobre CPU cuando el máximo potencial de ambos modelo de se puede lograr con la

paralelización en GPU.

Figura 5.5.2: Comparación de imagen de ultrasonido de Receso hepatorrenal generada por ambos modelos. a) Imagen

real b) Modelo de volumen c) Modelo de superficies

60

Page 62: Fusión de modelos de tejido en la simulación de imágenes ...

Capítulo 6

6.1 Conclusiones

En el transcurso del proyecto se establecieron tres puntos elementales a destacar.

Con la integración del modelo de ruido speckle en tiempo real se observó que el rendimiento

de la performance aumento debido a la disminución del consumo de memoria durante la ejecución y

del tiempo de carga de los ejercicios.

En la reestructuración de la arquitectura se implementó una librería dinámica del módulo de

simulación, lo que permitió una mejora en los tiempos de compilación y la posibilidad de reutilizar el

motor de simulación como una librería third-party para programas ajenos que necesiten recrear una

imagen de ultrasonido.

El último punto a destacar es la integración efectiva de un nuevo modelo de simulación

basado en mallas, implementando, al igual que en la reestructuración de la arquitectura, una librería

dinámica. Con dicho proceso se amplió la complejidad del simulador al incorporarse un nuevo

modelo que genera imágenes más reales como resultado de una mejora en la simulación de los

fenómenos físicos, a costa de una potencial disminución significativa de interactividad. No se pueden

establecer como resultados concluyentes a causa de que todos los procesos son realizados en CPU,

cuando se obtienen resultados considerablemente mejores con GPU.

6.2 Trabajos futuros

Los próximos objetivos deben centrarse en la implementación de GPU, ya que todos los

procesos de simulación son realizados en CPU, lo que generan resultados por debajo de los 30 fps

propuestos por el estándar. Dicha implementación es una solución posible gracias a que en los

últimos años, con el desarrollo de GPU masivamente paralelas, los tiempos de renderización se han

reducido considerablemente, lo que permite el desarrollo de escenarios de casos de capacitación más

adecuados.

61

Page 63: Fusión de modelos de tejido en la simulación de imágenes ...

Además es necesario mejorar la representación y comportamiento de órganos y tejidos en la

simulación de imágenes de ultrasonido aplicando modelos 3D deformables. Los modelos actuales, en

su mayoría no consideran las propiedades mecánicas de los tejidos y su deformación al interactuar

con ellos, es por eso que se buscará desarrollar modelos con estas propiedades manteniendo los

requisitos de performance impuestos por la ejecución en tiempo real de los simuladores de

ultrasonido. Esto implicaría basarse en estudio de simulación de imágenes de ultrasonido a partir de

modelos tridimensionales deformables para la representación de objetos que cambian de forma (ej.

debido a presión) o que tienen movimiento (ej. latido del corazón, respiración).

62

Page 64: Fusión de modelos de tejido en la simulación de imágenes ...

Bibliografía [1] Martin A Makary, Michael Daniel. “Medical error—the third leading cause of death in the

US”. BMJ 2016;353:i2139.

[2] Organización Mundial de la Salud, Organización Panamericana de la Salud. Estudio “IBEAS:

PREVALENCIA DE EFECTOS ADVERSOS EN HOSPITALES DE LATINOAMÉRICA”. 2008

[3] R. Lewiss, B. Hoffmann, et al (2014). Point-of-Care Ultrasound Education: The Increasing

Role of Simulation and Multimedia Resources. JUM January 2014 33:27-32;

doi:10.7863/ultra.33.1.27.

[4] a) Salen P., O'Connor R., Passarello B., Pancu D. "Fast education: A comparison of teaching

models for trauma sonography". The Journal of Emergency Medicine, Vol.20, No4, pp. 421-425

(2001).

b) Knudson M., Sisley A. "Training residents using simulation technology: Experience with

ultrasound for trauma". The Journal of Trauma: Injury, Infection, and Critical Care, Vol.48, No4

(2000).

[5] Knudson M., Sisley A. "Training residents using simulation technology: Experience with

ultrasound for trauma". The Journal of Trauma: Injury, Infection, and Critical Care, Vol.48, No4

(2000).

[6] UltraSim. http://www.medsim.com/ultrasim.html.

[7] Shams R., Hartley R., Navab N., “Real-Time Simulation of Medical Ultrasound from CT

Images”, Medical Image Computing and Computer-Assisted Intervention – MICCAI 2008, Lecture

Notes in Computer Science, Vol. 5242, pp. 734–741 (2008).

[8] Kutter O., Karamalis A., Wein W., Navab N., “A GPU-Based Framework for Simulation of

Medical Ultrasound”, Medical Imaging 2009: Visualization, Image-Guided Procedures, and

Modeling, Proc. of SPIE Vol. 7261, 726117(2009).

63

Page 65: Fusión de modelos de tejido en la simulación de imágenes ...

[9] a) Jensen J., Svendsen N. " Calculation of pressure fields from arbitrarily shaped, apodized,

and excited ultrasound transducers". IEEE Transactions on ultrasonics, ferroeletrics and frequency

control, Vol39, No2 (1992).

b) Jensen J., "Field: A program for simulating ultrasound systems," in [10th Nordicbaltic

Conference On Biomedical Imaging, Vol. 4, Supplement 1, Part 1], 351-353, Citeseer (1996).

[10] D'Amato J., Lo Vercio L., Rubi P., Vera E., Barbuzza R., Del Fresno M., Larrabide I.

"Efficient scatter model for simulation of Ultrasound images from Computed Tomography data". in

[11th International Symposium on Medical Information Processing and Analysis (SIPAIM 2015)].

SPIE Vol.9681, 968105 (2015).

[11] Rubi P., Vera E., Larrabide J., Calvo M., D'Amato J., Larrabide I. "Comparison of real-time

ultrasound simulation models using abdominal CT images". in Bibliografía 78 [12th International

Symposium on Medical Information Processing and Analysis (SIPAIM 2016)]. SPIE Vol. 10160

1016009-1 (2016).

[12] Maurice R., Ohayon J., Frétigny Y., Bertrand M. "Noninvasive vascular elastography

theorical framework". IEEE Transactions on medical imaging, Vol.23, No2 (2004).

[13] Hernán Claudio Külsgaard “Desarrollo de herramientas de procesamiento de imágenes para

simulación de ultrasonido”. Trabajo Final de la carrera de grado de Ingeniería de Sistemas de la

Universidad Nacional del Centro de la Provincia de Buenos Aires.(2017).

[14] Bürger B., Bettinghausen S., Rädle M., Hesser J. " Real-Time GPU-Based Ultrasound

Simulation Using Deformable Mesh Models". IEEE Transactions on medical imaging, Vol.32, No3

(2013).

[15] CMake documentation. http://www.cmake.org/documentation/

[16] Vallejo Fernández D. Angelina C.M “Desarrollo de videojuegos: un enfoque práctico. Vol 3,

Técnicas avanzadas”. (2015).

[17] Rubi P., Manterola H. L.,Fernandez Vera E., Díaz A., Larrabide I., “Modelling vascular

structures in real-time abdominal ultrasound simulation” Trabajo sin publicar - en revisión.

64

Page 66: Fusión de modelos de tejido en la simulación de imágenes ...

[18] Meunier and M. Bertrand, “Ultrasonic texture motion analysis: theory and simulation,” IEEE

transactions on medical imaging 14, 293–300 (1995).

65

Page 67: Fusión de modelos de tejido en la simulación de imágenes ...

Anexo

Diagrama de clases del módulo Core

66

Page 68: Fusión de modelos de tejido en la simulación de imágenes ...

Diagrama de clases del módulo Interfaz

67