Vous êtes sur la page 1sur 79

Desarrollo de herramientas de

procesamiento de imágenes para


simulación de ultrasonido
por
Hernán Claudio Külsgaard

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, Argentina, Marzo de 2017
2

Índice General

Capítulo 1: Introducción ........................................................................................... 8


1.1. Antecedentes ........................................................................................................... 8
1.2. Motivación............................................................................................................... 9
1.3. Objetivos ............................................................................................................... 10
1.4. Contenidos de la carrera ........................................................................................ 11
1.5. Organización del trabajo........................................................................................ 11
Capítulo 2: Ultrasonido ........................................................................................... 13
2.1. Imágenes B-mode .................................................................................................. 13
2.2. Principios básicos del ultrasonido ......................................................................... 14
2.2.1. Frecuencia, velocidad y longitud de onda ...................................................... 15
2.2.2. Impedancia acústica ........................................................................................ 16
2.3. Fenómenos físicos del ultrasonido ........................................................................ 18
2.3.1. Reflexión......................................................................................................... 18
2.3.2. Refracción ....................................................................................................... 19
2.3.3. Atenuación ...................................................................................................... 20
2.3.4. Scattering ........................................................................................................ 21
2.3.5. Ruido Speckle ................................................................................................. 22
Capítulo 3: Simulación de ultrasonido ................................................................... 24
3.1. Motivación de la simulación ................................................................................. 24
3.2. Simulador de ultrasonido....................................................................................... 25
3.2.1. Modelo de entrada .......................................................................................... 25
3.2.2. Modelo de simulación..................................................................................... 27
3.3. SIMECO ................................................................................................................ 27
3.3.1. Modelo de simulación..................................................................................... 28
3.3.2. Generación de ruido speckle ........................................................................... 30
Capítulo 4: Herramientas de preprocesamiento ................................................... 32
4.1. Preprocesamiento en SIMECO ............................................................................. 32
Índice de General 3

4.2. ParaView ............................................................................................................... 34


4.2.1. Modelo de visualización ................................................................................. 34
4.2.2. Interfaz gráfica de usuario .............................................................................. 36
4.2.3. Plugins y módulos programables .................................................................... 37
4.3. Complemente de ParaView: "PV Filter Creator" .................................................. 38
Capítulo 5: Filtros en ParaView ............................................................................. 41
5.1. Modo de funcionamiento....................................................................................... 41
5.2. Creación de filtros ................................................................................................. 42
5.2.1. Script "Request Data" ..................................................................................... 43
5.2.2. Configuración en XML................................................................................... 43
5.2.3. Script "Request Information".......................................................................... 46
5.3. Uso de filtros ......................................................................................................... 46
5.3.1. Importación de filtros...................................................................................... 46
5.3.2. Cargado de filtro al pipeline ........................................................................... 47
5.3.3. Configuración de Filtros ................................................................................. 47
5.3.4. Ejecución del pipeline ..................................................................................... 48
5.4. Filtros desarrollados para SIMECO ...................................................................... 49
5.4.1. Cargar volumen............................................................................................... 49
5.4.2. Corrimiento de valores.................................................................................... 50
5.4.3. Calcular gradiente ........................................................................................... 50
5.4.4. Aplicar máscara .............................................................................................. 51
5.4.5. Normalización y ecualización de histograma ................................................. 52
5.4.6. Generación de speckle (versión Matlab) ........................................................ 53
5.4.7. Generación de speckle (versión OpenCV/Numpy) ........................................ 55
5.5. Análisis de los filtros de speckle ........................................................................... 56
Capítulo 6: Recreación dinámica de speckle ......................................................... 60
6.1. Metodología de trabajo .......................................................................................... 60
6.2. Preprocesamiento en ParaView ............................................................................. 62
6.2. Preparación y carga de datos ................................................................................. 65
6.4. Procesamiento de simulación ................................................................................ 66
Capítulo 7: Análisis de resultados del speckle dinámico ...................................... 69
Índice de General 4

7.2. Plataforma de pruebas ........................................................................................... 69


7.3. Visualización ......................................................................................................... 70
7.4. Rendimiento .......................................................................................................... 72
Capítulo 8: Conclusiones ......................................................................................... 74
Trabajos Futuros ........................................................................................................... 75
Bibliografía ............................................................................................................... 76
Anexo: Tabla de parámetros de filtros .................................................................. 79
5

Índice de figuras

Figura 2.1: Parámetros de la onda de ultrasonido. ....................................................... 14


Figura 2.2: Longitud de onda. ...................................................................................... 16
Figura 2.3: a)Masas pequeñas unidas por lazos débiles.b)Masas grandes unidas por
lazos fuertes. ................................................................................................................. 17
Figura 2.5: Fenómeno de reflexión de una onda al incidir en una interfaz. ................. 19
Figura 2.5: Fenómeno de refracción de una onda que incide en una interfaz. ............. 20
Figura 2.6: a)Onda reflejada al incidir en una interfaz. b)Onda dispersada al incidir en
un scatterer. .................................................................................................................. 22
Figura 2.7: Patrón de speckle. ...................................................................................... 23
Figura 3.1: Simulador de ultrasonido comercial UltraSim. .......................................... 26
Figura 3.2: De izquierda a derecha, imagen de reflexión, transmisión y scattering..... 29
Figura 3.3: Imagen de ultrasonido simulada por SIMECO. ......................................... 31
Figura 4.1: Flujo de procesamiento de datos a través de filtros mediante arquitectura
de "Pipes and Filters". .................................................................................................. 32
Figura 4.2: Aplicaciones de VTK. a) Renderizado de un volumen anatómico. b)
Visualización del flujo de fluido alrededor de un tubo. ............................................... 33
Figura 4.3: Creación de un gráfico 3D utilizando Matlab. ........................................... 34
Figura 4.4: Tipo de módulos y flujo de datos en VTK. ................................................ 35
Figura 4.5: Interfaz gráfica de usuario de ParaView. ................................................... 37
Figura 4.6: Tipos de vistas disponibles en ParaView ................................................... 37
Figura 5.1: Herramienta de creación de filtros de ParaView. ...................................... 43
Figura 5.2: Métodos de entrada de parámetros por GUI. ............................................. 45
Figura 5.3: ParaView Plugin Manager. ........................................................................ 47
Figura 5.4: Métodos para agregar filtros al pipeline de ParaView. .............................. 48
Figura 5.5: Configuración de puertos de entrada. ........................................................ 48
Figura 5.6: a) Mensaje de finalización exitosa. b) Mensaje de error. .......................... 49
Figura 5.7: Filtro "Cargar volumen". ........................................................................... 50
Figura 5.8: Filtro "Corrimiento de valores" ................................................................. 51
Figura 5.9: Filtro "Calcular gradiente", vista de hoja de cálculo. ................................ 51
Índice de Figuras 6

Figura 5.10: a)Pipeline del aplicado de una máscara. b)Máscara. c)Volumen original.
d)Volumen con máscara aplicada. ................................................................................ 52
Figura 5.11: Histogramas a) Volumen original. b) Volumen normalizado. c) Volumen
normalizado y ecualizado. ............................................................................................ 53
Figura 5.12: Volumen procesado con filtros de ruido speckle (versión Matlab) ......... 54
Figura 5.13: Diagrama de actividades. a)Filtro de generación de ruido. b)Script de
Matlab. .......................................................................................................................... 55
Figura 5.14: Volumen procesado con filtro de ruido speckle (versión
OpenCV/Numpy) ......................................................................................................... 56
Figura 5.15: Comparación de los tiempos de ejecución de los filtros de speckle por
etapa.............................................................................................................................. 59
Figura 6.1: Diagrama de etapas del método de generación de speckle. ....................... 61
Figura 6.2: Volumen anatómico, corte transversal Abdominal. ................................... 62
Figura 6.3: Pipeline de preprocesamiento en ParaView. .............................................. 63
Figura 6.4: Máscaras. a)Conjunto de arterias. b)Vena porta hepática. c)Vena cava
inferior. ......................................................................................................................... 63
Figura 6.5: a) Histograma el volumen original. b)Histograma del volumen filtrado. .. 64
Figura 6.6: a)Corte superior del volumen original. b)Corte superior del volumen
filtrado. c)Corte inferior del volumen original. d)Corte inferior del volumen filtrado.64
Figura 6.7: Representación visual de la caída lineal. ................................................... 65
Figura 6.8: Kernel de PSF. a) Escala de grises. b) Escala de colores. ......................... 66
Figura 6.9: Diagrama de actividades de la etapa de generación de ruido. ................... 66
Figura 6.10: Multiplicación elemento por elemento entre el arreglo de caída lineal y
cada columna del corte anatómico. .............................................................................. 67
Figura 6.11: a)Corte sobre el volumen anatómico. b)Corte sobre el volumen de ruido
...................................................................................................................................... 67
Figura 6.12: a)Matriz de ruido. b)Representación visual de la función módulo
utilizando la matriz de ruido. ........................................................................................ 68
Figura 6.13: Matrices de ruido. a)Sin repetición. b)Textura del 20% del tamaño
repetida. c)Textura del 10% del tamaño repetida. ........................................................ 68
Figura 7.1: a,c)Dirección de la caída lineal en el método original. c,d)Dirección de la
caída lineal en el método propio................................................................................... 71
Figura 7.2: Ruido speckle. a)Método original. b)Método propio. c) Imagen de
ultrasonido real. ............................................................................................................ 71
7

Índice de tablas
Tabla 2.1: Velocidad del sonido en materiales ............................................................. 15
Tabla 2.2: Impedancia acústica en materiales. ............................................................. 17
Tabla 2.3: Coeficientes entre dos medios. .................................................................... 19
Tabla 4.1: Comparación entre métodos de creación de filtros. .................................... 39
Tabla 5.1: Métodos internos de la clase "vtkPythonProgrammableFilter". ................. 42
Tabla 5.2: Elementos del archivo de configuración. .................................................... 44
Tabla 5.3: Tipos de parámetros. ................................................................................... 45
Tabla 5.4: Tiempos en filtro de speckle versión Matlab. ............................................. 57
Tabla 5.5: Resultado del filtro de speckle versión OpenCV/Numpy. .......................... 58
Tabla 7.1: Especificaciones de la computadora utilizada para las pruebas. ................. 69
Tabla 7.2: Resultados obtenidos utilizando el método original y el propio. ................ 72
Tabla A.1: Parámetros de filtros implementados con "PV Filter Creator" .................. 79
8

Capítulo 1: Introducción

1.1. Antecedentes
El ultrasonido es una modalidad de imagen muy utilizada en la actualidad para el
diagnóstico y tratamiento de diversas enfermedades tales como las cardiovasculares, una
de las mayores causas de muerte en el mundo. La Organización Panamericana de la Sa-
lud publicó un artículo en el año 2011 [1] que muestra que un 30% de todas las muertes
que se producen a nivel mundial cada año son atribuibles a enfermedades cardiovascula-
res. En la Encuesta Nacional de Factores de Riesgo realizada en 2009 en Argentina [2]
se señala que sobre un total de 304.525 muertes ocurridas, 89.916 fueron provocadas por
causas cardiovasculares (aproximadamente 30%). La sonografía abdominal focalizada
en trauma (FAST) es una técnica basada en ultrasonido utilizada por cirujanos para el
examinado del fluido pericárdico y peritoneal en la zona del torso y el diagnóstico de
neumotórax en los pulmones en pacientes afectados por trauma. La Organización Mun-
dial de la Salud (OMS) informa que el traumatismo ocasiona más de cinco millones de
muertes al año en países en desarrollo. Esta es una cifra muy alarmante que se puede
comprar con las muertes provocadas por el VIH/SIDA, la malaria y la tuberculosis com-
binadas [3]. Entre otra de sus aplicaciones, el ultrasonido es la herramienta más utilizada
para el estudio de fetos durante el embarazo para la detección de anormalidades congéni-
tas, desórdenes del crecimiento fetal y anormalidades de la placenta [4].

Las características principales del ultrasonido residen en que es seguro ya que es


libre de radiación, posee una buena relación costo/efectividad (dispositivos utilizados
relativamente baratos y portables por su tamaño reducido). Es, además, una modalidad
de imagen en tiempo real y permite inspeccionar pequeños detalles de los tejidos gracias
a su gran precisión. [5,6].

Sin embargo, la interpretación de este tipo de imágenes no es tarea sencilla. Al


momento de realizar el procedimiento, se debe comprender la relación entre el corte
transversal (dos dimensiones) de la imagen de ultrasonido con la anatomía real (tres di-
mensiones). La imagen además es degradada por fenómenos físicos que ocurren produc-
to de la interacción las ondas de ultrasonido con los distintos materiales del cuerpo
examinado. Algunos de ellos provocan efectos como sombras detrás de los huesos, oscu-
recimiento y ruido, en especial el speckle. Éste es un patrón granular dependiente de la
frecuencia del ultrasonido, del transductor y de las propiedades del tejido. Por ello, es
Capítulo 1: Introducción 9

necesario que el personal reciba un extenso entrenamiento con el fin de que adquiera la
experiencia requerida en el uso de los dispositivos de ultrasonido [7].

Así es como surge el uso de los simuladores de ultrasonido como herramienta de


entrenamiento. La gran ventaja que poseen es que brindan acceso a una gran cantidad de
casos de pacientes con condiciones tanto frecuentes como infrecuentes. Si no se dispone
de un simulador, se deben realizar prácticas reales con pacientes en vivo. Esto provoca
que el personal entrenado no siempre tenga la oportunidad de conocer la gran variedad
de casos en poco tiempo. Además, se encuentran regidos por la limitación de tiempo
impuesta por el tipo de práctica [7,8].

1.2. Motivación
Los simuladores de ultrasonido tienen como meta recrear de manera realista el
proceso de captura de imágenes de ultrasonido. Para ello necesitan disponer de un mode-
lo digital que pueda representar la anatomía de un paciente real. Un proceso de acondi-
cionamiento se le debe aplicar al modelo para que se encuentre apto para la simulación.

La simulación de ultrasonido en tiempo real es una tarea muy costosa computa-


cionalmente ya que involucra recrear fenómenos físicos en ambientes tridimensionales
en tiempo real manteniendo un nivel aceptable de interactividad con el usuario. Existen
tareas que no requieren ser ejecutadas en tiempo real y pueden ser realizadas en etapas
previas con el objetivo de alivianar la carga computacional. Por ejemplo, la segmenta-
ción es un proceso por el cual se toma una zona de interés y se elimina el resto con el fin
de concentrar el estudio allí. Otras tareas pueden no ser aptas para ser recreadas en tiem-
po real, como la generación de ruido speckle por la cantidad elevada de cálculos que
precisa. Todo esto se concentra en la etapa de preprocesamiento.

Los filtros son la herramienta fundamental para el pre-procesamiento. Éstos act-


úan sobre el modelo y le aplican distintas modificaciones o generan nuevos resultados
necesarios para la simulación. En la actualidad el pre-procesamiento se realiza de mane-
ra manual mediante scripting o software no especializado como ParaView, que ofrece,
entre otras cosas, un sistema de visualización tridimensional y una plataforma de proce-
samiento paralelo muy potentes. Surge así la idea de diseñar e implementar un comple-
mento que pueda ser utilizado junto con ParaView para la creación, almacenamiento y
aplicación filtros sobre los modelos anatómicos.

El scattering es un fenómeno físico que ocurre cuando las ondas de ultrasonido


atraviesan tejidos. La recreación precisa de scattering en un simulador es un proceso
altamente costoso. Field II es un paquete de software que se encarga de recrear el patrón
de ruido speckle sobre la imagen, producto del scattering. Estudios realizados muestran
Capítulo 1: Introducción 10

que en una computadora estándar en el año 2008, la simulación de una sola imagen
tomaba aproximadamente 20 minutos. Para realizar esto mismo sobre una imagen B-
mode el tiempo de cómputo se aproximaría a 2 días [6]. Esto se realiza en etapa de
preprocesamiento y por ello el tiempo no es un factor limitante, pero si se quisiera hacer
en tiempo real resultaría imposible. D'Amato et al. [25] propone un algoritmo de
recreación de ruido speckle que reduce en un gran porcentaje al tiempo requerido por
Field II. El simulador de ultrasonido SIMECO utiliza esa técnica en el preprocesamiento
del volumen. Sin embargo, el ruido speckle depende del punto de captura, mientras que
su precálculo asume un punto de captura fijo, produciendo así una recreación poco
realista. Surge así la idea de implementar la técnica sobre este simulador SIMECO en
tiempo real para lograr una representación más precisa de este ruido y por ende aumentar
la calidad de la imagen de ultrasonido resultante.

1.3. Objetivos
El trabajo se divide en dos partes. En la primera el objetivo es construir una
herramienta para la creación de filtros de pre-procesamiento que se pueda complementar
con el software de visualización 3D ParaView. Actualmente esta tarea se puede realizar
dentro de ParaView pero no cuenta con la capacidad de modificar parámetros de los fil-
tros desde la interfaz gráfica, por lo que se deben recurrir directamente al código fuente
de éste. Por lo tanto la característica principal que debe tener la herramienta es poder
asignarle a los filtros distintos tipos de parámetros modificables.

Luego se estudiarán filtros necesarios para el pre-procesamiento en simulador de


ultrasonido SIMECO y se crearán utilizando la herramienta. Se describirán los pasos
realizados y los parámetros configurables seleccionados para cada uno. Por otro lado,
existe un filtro correspondiente a la recreación de ruido speckle que posee problemas de
rendimiento. Como objetivo secundario se propone buscar una implementación alterna-
tiva que pueda obtener el mismo resultado pero en una franja de tiempo menor. Se anali-
zarán los resultados comparando el tiempo de procesamiento de cada uno.

El segundo objetivo es estudiar e implementar un algoritmo de recreación de rui-


do speckle dentro de SIMECO que se ejecute en tiempo real. Simular este ruido es com-
putacionalmente muy costoso. Por esta razón simuladores actuales como SIMECO,
optan por realizar la recreación en forma de pre-procesamiento a costa de perder realis-
mo en la simulación. Ya que el proceso deberá ser ejecutado en tiempo real, se hará hin-
capié en el rendimiento del algoritmo. Finalmente se comparará y se analizarán la
performance y los resultado con la versión original.
Capítulo 1: Introducción 11

1.4. Contenidos de la carrera


Diversos contenidos aprendidos en la carrera fueron aplicados para la confección
de este trabajo final. Las cátedras de matemática como Álgebra, Matemática Discreta,
Análisis matemático 1 y 2 fueron claves para la compresión de la teoría desarrollada en
bibliografía para la descripción de la física del ultrasonido. Contenidos de Álgebra lineal
fueron empleados para uso matrices, siendo la estructura de datos principal de este traba-
jo. Cabe destacar que estas materias además sirvieron para elevar mi nivel de abstracción
a lo largo de los años, aspecto primordial para poder acceder al conocimiento de áreas
específicas de sistemas.

Materias como Programación orientada a objetos, Diseño de sistemas, Lenguajes


de programación, Teoría de la Información y Sistemas operativos fueron aplicadas para
el diseño y la implementación de las herramientas de procesamiento de imágenes. Meto-
dologías de Desarrollo de Software resultó muy útil para la creación de los diagramas.
Por último, la optativa Imágenes médicas fue esencial para este proyecto. Brindó todos
los conocimientos básicos de procesamiento de imágenes orientadas a la medicina que
fueron utilizados.

1.5. Organización del trabajo


En el capítulo 2 se realiza una breve descripción de las características de las imá-
genes de ultrasonido donde se presentan sus propiedades físicas y los fenómenos que
ocurren en la práctica.

En el capítulo 3 se presentan los simuladores de ultrasonido, se trata sobre la mo-


tivación que existe para su desarrollo se realiza un análisis su estructura general.

En el capítulo 4 se analizan las herramientas utilizadas para el preprocesamiento


orientado a la simulación de ultrasonido. Luego se describe el complemento implemen-
tado para la construcción de filtros.

En el capítulo 5 se especifican los detalles de la creación y uso de filtros de pre-


procesamiento utilizando la herramienta desarrollada. Además se presentan los filtros
creados para SIMECO y se da una breve descripción de su funcionamiento.

En el capítulo 6 se detalla sobre el modo de funcionamiento del algoritmo de


recreación dinámica implementado.

En el capítulo 7 se analizan los resultados de la implementación del algoritmo de


recreación dinámica de speckle y se lo compara con la versión creada a partir de filtros.
Capítulo 1: Introducción 12

En el capítulo 8 se realizan las conclusiones del trabajo teniendo en cuenta el


aporte hecho, las limitaciones y las posibles mejoras a implementar.
13

Capítulo 2: Ultrasonido
El uso del ultrasonido en diagnóstico médico y en el análisis de órganos y tejidos
ha ido evolucionando en las últimas décadas. Los sistemas modernos de ultrasonido tie-
nen la capacidad de generar mediciones detalladas del movimiento de la sangre en las
venas y de la rigidez de tejidos y permiten la visualización de estructuras tridimensiona-
les en movimiento. La aplicación del ultrasonido ha ido mejorando gracias al avance de
la tecnología y de su aceptación como herramienta para el diagnóstico médico. En sus
comienzos se utilizaba para simples mediciones de dimensiones anatómicas, como el
diámetro biparietal. Hoy en día se realizan para la visualización detallada de anormali-
dades fetales [9], detección de pequeños cambios en la textura de los tejidos y estudios
detallados del flujo de sangre en las arterias.

2.1. Imágenes B-mode


Las imágenes B-mode representan un corte transversal de tejidos y órganos de-
ntro 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 como nombre a la modalidad "brightness mode" (B-mode).
Las imágenes producidas son una recreación de la anatomía en forma de un corte plano.

Para formar una imagen B-mode, se utiliza un transductor como fuente de ondas
de ultrasonido. Éste es colocado sobre la región de interés, por ejemplo en la piel en la
región del abdomen. Allí emite una secuencia de pulsos hacia el interior del cuerpo. Es-
tos pulsos viajan entre los tejidos y son reflejados y dispersados, generando así ecos que
viajan de vuelta hacia el transductor, donde son capturados. Estos ecos son utilizados
para crear la imagen.

Para representar cada eco en la posición correspondiente en la que fue generado


(por ejemplo una interfaz entre dos medios) el sistema requiere conocer la distancia des-
de el origen hasta el transductor y la dirección. Para ello, el transductor emite un pulso
de ultrasonido en el tiempo igual a t=0. La velocidad del sonido en el medio es v y la
profundidad es d. El pulso debe llegar al objetivo en el tiempo t=d/v. En ese punto se
genera un eco que retorna al transductor a la misma velocidad v y tarda el mismo tiempo
t=d/c, por lo que el tiempo total de retorno sería t=2d/c. Luego resulta que la distancia
Capítulo 2: Ultrasonido 14

es d=ct/2. Finalmente, el sistema calcula d midiendo el tiempo t en que tarda en llegar el


eco, asumiendo una velocidad del sonido v fija.

Cuando un pulso viaja a través de los tejidos del cuerpo, se encuentra con inter-
faces y scatterers que generan los ecos. Luego de la transmisión de un pulso, el trans-
ductor cambia a modo de recepción para escuchar los ecos retornantes. Al principio del
procedimiento, los ecos provienen de los objetivos más cercanos al transductor. De ma-
nera secuencial, se reciben ecos de mayor profundidad hasta el máximo deseado. Esta
secuencia se la conoce como pulso-eco[10].

2.2. Principios básicos del ultrasonido


El término ultrasonido (US) es utilizado para describir las ondas de sonido con
frecuencias por encima de 20 kHz. Estas transportan energía y se propagan a través de
distintos medios como ondas de presión mecánica. Pueden ser descritas por parámetros
como densidad de la presión, dirección de propagación, desplazamiento de partículas
(Figura 2.1). El ultrasonido se propaga por los fluidos y gases como ondas longitudinales
en donde las partículas del medio vibran paralelamente a la dirección de la propagación,
comprimiendo el material. En los sólidos, como el hueso, el ultrasonido puede transmi-
tirse además como ondas transversales donde las partículas se mueven perpendicular-
mente a la dirección de la propagación. La interacción de las ondas de ultrasonido y los
tejidos se corresponde con las leyes de la óptica geométrica como la reflexión, la refrac-
ción, la dispersión (scattering), la interferencia y la absorción [11,12].

Figura 2.1: Parámetros de la onda de ultrasonido.


Capítulo 2: Ultrasonido 15

2.2.1. Frecuencia, velocidad y longitud de onda

La longitud de onda es una de las características principales del ultrasonido. Se


denota como  y es una medida de distancia entre dos picos de valores adyacentes,
mínimos o máximos, de la curva senoidal (Figura 2.2). Otra de ellas es la frecuencia 
que refiere a la cantidad picos u oscilaciones de la onda por unidad de tiempo. El pro-
ducto de estos dos valores resulta en la velocidad de propagación de la onda:
(2.1)
 = 𝑣/𝑓

La velocidad de la propagación de la onda está determinada por el medio. En los gases


es relativamente baja en relación a los líquidos, que a su vez es menor que en los sólidos.
Las propiedades de los materiales que determinan la velocidad son la densidad (𝑘) y la
rigidez (𝜌). La primera mide la relación entre el peso y el volumen del material. La rigi-
dez es la medida de cuánto se resiste el material a ser deformado cuando es comprimido.
Un valor bajo de densidad y uno alto de rigidez resulta en una alta velocidad de propa-
gación. Por el contrario, un valor alto de densidad y uno bajo de rigidez produce una
velocidad de sonido baja. Matemáticamente se expresa como:
(2.2)
𝑣= 𝑘/𝜌

En la Tabla 2.1 muestra valores de velocidad del sonido en distintos materiales inclu-
yendo tipos de tejido humano.

Material Velocidad (m/s)

Hígado 1578
Riñón 1560
Fluido amniótico 1534
Grasa 1430
Tejido suave 1540
Agua 1480
Hueso 3190-3406
Aire 333

Tabla 2.1: Velocidad del sonido en materiales


Capítulo 2: Ultrasonido 16

Las velocidades para los tejidos humanos resultan ser lo suficientemente simila-
res como para que en la modalidad B-mode se asuma un valor promedio de 1540 m/s,
sin introducir errores o distorsiones en la imagen. La velocidad en el aire es mucho me-
nor debido a su baja rigidez, en cambio en el hueso es mucho más alta por lo que la ve-
locidad también lo es [13].

Las técnicas de ultrasonido se basan en poder medir el eco que retorna luego de
enviar una onda a través de un medio. Si se conoce la velocidad de propagación del teji-
do que se está investigando, se puede obtener la distancia a la cual se produce la interac-
ción en la cual se produjo el eco. Las características de la señal que retorna otorgan
información sobre la clase de interacción y por ende pueden dar indicaciones del tipo de
medio en el que ocurrió.

Figura 2.2: Longitud de onda.

2.2.2. Impedancia acústica

La impedancia acústica de un medio (𝑧) es la medida de respuesta de las partícu-


las, en forma de velocidad, a una onda de una presión dada. Esta impedancia es determi-
nada por la densidad (𝜌) y la rigidez (𝑘) del mismo medio de la siguiente manera:
(2.3)
𝑧= 𝜌𝑘

Combinando esta ecuación con la de la velocidad del sonido del medio, resulta lo si-
guiente:
(2.4)
𝑧 = 𝜌𝑣

En la Figura 2.3 se observa la representación de dos medios en forma de masas


unidas por lazos. El medio (a) está formado por masas pequeñas y lazos débiles, mode-
lando un material poco rígido. Por el contrario, el medio (b) posee masas más grandes y
Capítulo 2: Ultrasonido 17

lazos fuertes entre ellas, modelando un material con alta rigidez. Si se le aplica una cier-
ta presión por parte de una onda a una masa del medio (a), ganará aceleración fácilmente
y se moverá, sin sufrir resistencia por parte de los lazos débiles. El material posee baja
impedancia acústica cuando las partículas se mueven en gran medida al recibir presión.
En cambio, en el medio (b), las masas de gran tamaño se aceleran menos al aplicarse una
presión dada y su movimiento sufre resistencia por parte de los lazos fuertes. La veloci-
dad de las partículas en este caso es más baja, por lo que se dice que el material posee
mayor impedancia acústica. En la Tabla 2.2 se pueden apreciar valores de impedancia
para distintos materiales:

z
Material
(kg m-2 s-1)
Hígado 1.66 x 106
Riñón 1.64 x 106
Sangre 1.67 x 106
Grasa 1.33 x 106
Agua 1.48 x 106
Aire 430
Hueso 6.47 x 106

Tabla 2.2: Impedancia acústica en materiales.

Figura 2.3: a)Masas pequeñas unidas por lazos


débiles.b)Masas grandes unidas por lazos fuertes.
Capítulo 2: Ultrasonido 18

2.3. Fenómenos físicos del ultrasonido


2.3.1. Reflexión

Cuando una onda de sonido que viaja a través de un medio se encuentra con una
interfaz adyacente a otro medio de impedancia acústica diferente, una parte de la onda es
transmitida en el segundo medio y otra es reflejada hacia el primer medio (Figura 2.4).
La amplitud de las ondas transmitidas y reflejadas dependen del cambio que haya de
impedancia acústica en el proceso.

El coeficiente de amplitud de reflexión (RA) es la relación entre la presión de la


onda reflejada y la incidente. Este valor determina la amplitud de los ecos producidos en
los límites entre diferentes tipos de tejidos. Este coeficiente es representado matemáti-
camente de la siguiente manera:
(2.5)
𝑝𝑟 𝑧2 − 𝑧1
𝑅𝐴 = =
𝑝𝑖 𝑧2 + 𝑧1

donde 𝑝𝑟 y 𝑝𝑖 son la amplitud de las presiones de las ondas reflejadas e indecentes res-
pectivamente. 𝑧1 y 𝑧2 son las impedancias acústicas de los medios involucrados. En la
Tabla 2.3 se muestran valores de coeficientes correspondiente a ciertas interfaces que
pueden encontrarse dentro del cuerpo humano. Para gran parte de las interfaces entre
tejidos suaves, el coeficiente es menor a 0.01(1%). Esta característica es de suma impor-
tancia para imágenes de ultrasonido ya que significa que la mayor parte de energía en los
tejidos suaves es transmitida en gran parte permitiendo alcanzar interfaces más profun-
das donde se producirán los ecos. En las interfaces entre tejido suave y aire, por ejemplo
en los pulmones o en las bolsas de gas, el coeficiente es de 0.999 (99.9%), es decir que
no se podrán generar ecos más allá de esas interfaces. Esta es la razón por la cual es im-
portante remover el aire entre la piel del paciente y el transductor (la fuente del ultraso-
nido) para garantizar la transmisión de las ondas. Entre el tejido suave y el hueso el
coeficiente es de 0.5(50%), por lo que resulta dificultoso obtener ecos más allá de estruc-
turas como las costillas.

En la interfaz, la intensidad de la energía fluye desde la onda incidente y se divi-


de en la onda transmitida y la reflejada. Por lo tanto se dice que:
(2.6)

𝐼𝑡 = 𝐼𝑖 − 𝐼𝑟

El coeficiente de intensidad de transmisión 𝑇𝑖 = 𝐼𝑡 /𝐼𝑖 y el de amplitud de reflexión


se pueden presentar como:
Capítulo 2: Ultrasonido 19

(2.7)
2
𝑇𝑖 = 1 − 𝑅𝐴

Interfaz RA
Hígado-riñón 0.006
Riñón-bazo 0.003
Sangre-riñón 0.009
Hígado-grasa 0.11
Hígado-hueso 0.59
Hígado-aire 0.999

Tabla 2.3: Coeficientes entre dos medios.

Figura 2.5: Fenómeno de reflexión de una onda al incidir en


una interfaz.

2.3.2. Refracción

Si el ángulo de la onda reflejada en una interfaz posee la misma amplitud al de la


onda incidente, se asume que la onda transmitida tiene la misma dirección que la inci-
dente. Esto solo sucede cuando la velocidad del sonido es la misma para ambos materia-
les. Sin embargo, cuando los medios poseen diferentes velocidades y el ángulo de
incidencia es diferente a 90º, la dirección de la onda transmitida el alterada por la refrac-
ción (Figura 2.5).

Cuando una onda atraviesa una interfaz donde la velocidad del sonido se incre-
menta, el ángulo a la normal también lo hace. Por el contrario, cuando la onda experi-
Capítulo 2: Ultrasonido 20

menta una reducción de la velocidad del sonido al momento de cruzar la interfaz, el


ángulo a normal también decrece. La relación entre los ángulos y las velocidades están
descriptas por la ley de Snell:
(2.8)
sin 𝜃𝑖 𝑣1
=
sin 𝜃𝑡 𝑣2

donde 𝜃𝑖 es el ángulo de la onda incidente y 𝜃𝑡 el ángulo de la onda refractada o transmi-


tida. 𝑣1 y 𝑣2 son las velocidades de los medios. Esta ley muestra como estos ángulos son
iguales cuando las velocidades del sonido son la misma para los dos materiales. El cam-
bio de la dirección de la onda al atravesar la interfaz se incrementa cuando la velocidad
también lo hace.

Figura 2.5: Fenómeno de refracción de una onda que incide en una interfaz.

2.3.3. Atenuación

La atenuación es la pérdida de intensidad de la onda de ultrasonido a medida que


se propaga a través de los tejidos. La energía asociada disminuye cuanto más distancia
recorre la onda.

Distintos mecanismos tienen la capacidad de atenuar la onda de ultrasonido. El


más destacado es la absorción, en el cual la energía del ultrasonido es convertida en ca-
lor. Cuando la onda pasa a través del medio, sus partículas se mueven en respuesta a la
presión ejercida por la onda. A bajas frecuencias, el movimiento de las partículas se rea-
liza de una manera en la que la energía es devuelta hacia la onda. A altas frecuencias no
sucede lo mismo ya que las partículas no tienen la capacidad de moverse lo suficiente-
mente rápido al ritmo de la rápida fluctuación de presión. Por ello no son capaces de
devolver la energía asociada al movimiento a la onda, por lo que una cierta porción de la
Capítulo 2: Ultrasonido 21

energía es retenida por el medio, transformándose en calor. La absorción aumenta a fre-


cuencias a las cuales se excita el modo natural de vibración de las moléculas del medio.

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 ta-
maño o muy profundos se utilizan frecuencias bajas, entre 3 y 5 MHz (por ejemplo áreas
abdominales). Las altas frecuencias se asocian con longitudes de ondas más cortas, lo
que lleva a obtener mejores resoluciones de imagen, por lo que para objetivos pequeños
o superficiales se suelen utilizar frecuencias altas de 10 a 15 MHz. Para casos extremos
como la piel o los ojos se utiliza de 15 a 30 MHz [12]. Por lo tanto, según la zona de
análisis, el operador debe elegir la frecuencia más óptima que asegure la mejor resolu-
ción pero que a su vez permita recibir ecos de la profundidad requerida.

2.3.4. Scattering

La reflexión ocurre en interfaces de gran tamaño como pueden ser las que se en-
cuentran entre los órganos del cuerpo, donde hay un cambio significativo en la impedan-
cia acústica. Dentro de la parénquima de la mayor parte de los órganos, existen pequeñas
imperfecciones, llamadas scatterers, que producen variaciones de las propiedades acús-
ticas, y por ende reflexiones de las ondas. Estos poseen un tamaño menor a la longitud
de la onda. Este tipo de reflexiones no actúan de la misma manera que las descriptas
para los casos de grandes interfaces, como los casos mencionados anteriormente. Cuan-
do una onda de ultrasonido incide en un scatterer, la onda es dispersada en distintos
ángulos (Figura 2.6 a y b). La energía dispersada por un scatterer es mucho menor que
la resultante de una reflexión producida por una interfaz de tamaño mayor a la longitud
de onda. Esta energía está relacionado con el tamaño del scatterer y la longitud de onda.

Existen dos aspectos fundamentales del scattering en las imágenes de ultrasoni-


do. El primero es que la energía ultrasónica dispersada hacia el transductor desde el scat-
terer, es mucho menor que la reflejada por las interfaces con tamaño mayor a la longitud
de onda. Por ello los ecos de la parénquima de los órganos como el hígado son relativa-
mente débiles. El segundo aspecto refiere a que el ultrasonido es dispersado en varios
ángulos por los scatterers, por lo que su apariencia en la imagen no cambia significati-
vamente con el ángulo de incidencia de la onda. Por el contrario, el aspecto de las gran-
des interfaces es altamente dependiente del ángulo de incidencia de los rayos de
ultrasonido.
Capítulo 2: Ultrasonido 22

Figura 2.6: a)Onda reflejada al incidir en una interfaz. b)Onda dispersada al incidir en un
scatterer.

2.3.5. Ruido Speckle

El speckle es un tipo de ruido acústico que causa la degradación de la señal y de


la imagen de ultrasonido. Este ruido es característico de las imágenes de ultrasonido por
ser producto del scattering y su estudio ha sido documentado desde los años '70 [14,15].
El speckle se puede observar como un patrón de puntos brillantes y oscuros a largo de la
imagen (Figura 2.7) resultado de la interferencia destructiva de las ondas de ultrasonido
dispersadas por los scatterers, que finalmente son recibidas por el transductor.

A pesar de su apariencia, el ruido speckle no es aleatorio, como lo es el ruido


eléctrico. Si se realizan múltiples capturas bajo las mismas condiciones, en todos los
casos el patrón resulta ser idéntico. Sin embargo, cualquier variación, como la modifica-
ción de la apertura del transductor o la longitud del pulso, produce patrones diferentes.
Esto sugiere que el ruido speckle está relacionado con la estructura del material captura-
do. La intensidad del speckle es causada por las interferencias constructivas y destructi-
vas de la región tomada. La posición del transductor no influye en la intensidad del
speckle ya que los scatterers reflejan las ondas ultrasónicas en todas las direcciones. Por
esta razón, puede resultar de utilidad en el diagnóstico de anomalías. El cambio de inten-
sidad del patrón de speckle en una cierta región puede ser identificado como una situa-
ción anormal. Por ello se considera útil para la detección de quistes y tumores en
órganos. Jeong et al. [16] propone un método para estimar la rigidez de los tejidos mi-
diendo las variaciones del patrón al aplicarle vibraciones externas al objeto. De esta ma-
nera logra detectar quistes en zonas de baja rigidez.
Capítulo 2: Ultrasonido 23

Figura 2.7: Patrón de speckle.


24

Capítulo 3: Simulación de ultrasonido

3.1. Motivación de la simulación


El US es una de las modalidades de imagen más utilizadas en la actualidad en la
medicina. Se caracteriza por ser costo efectiva, libre de radiación, no invasiva y de tiem-
po real. Puede ser utilizada tanto en diagnósticos como en intervenciones guiadas por
imágenes. Sin embargo, requiere de arduo entrenamiento para su correcto uso. Uno de
los desafíos que se presenta al utilizar el scanner de US es poder interpretar la relación
que existe entre el aspecto 2D (bidimensional) de la captura (corte transversal) y el cuer-
po 3D (tridimensional) que se está analizando. Adicionalmente existen diversos efectos
adversos que se presentan en la imagen que dependen de la dirección en la que se realice
la captura y la configuración del transductor. Por ejemplo, se producen sombras detrás
de los huesos, ruido speckle y absorción que disminuyen la calidad de la imagen. Domi-
nar y comprender este tipo de efectos no es tarea sencilla y para ello se requiere un gran
entrenamiento que incumbe coordinación entre el ojo y la mano y habilidad de interpre-
tación [17]. Maul et al. [9] señala que a diferencia de otras técnicas, el US es una moda-
lidad menos estandarizada y más subjetiva, dependiendo en gran parte de la habilidad y
la experiencia del usuario. Por ello se vuelve complicado obtener una segunda opinión
en casos cuestionables o sospechosos.

El entrenamiento clásico que recibe un operario de US se puede dividir en 2 eta-


pas. La primera consiste en la adquisición del conocimiento teórico mediante lecciones y
libros de texto. La segunda etapa corresponde al conocimiento práctico que se adquiere
mediante la experimentación. El US sufre ciertas limitaciones al momento de la práctica.
Una de ellas es la baja frecuencia de ciertos fenómenos que se desean estudiar en pro-
fundidad y la dificultad que esto trae para disponer de pacientes de prueba. Por ejemplo,
ciertas anomalías fetales poseen un porcentaje de ocurrencia de entre 2% al 5%. Las más
raras incluso poseen un nivel de ocurrencia tan bajo que existe la posibilidad de que un
doctor nunca se tope con ella. La precisión en la detección de estas anomalías es funda-
mental y para ello se recurre al entrenamiento [18]. Sin embargo éste resulta insuficiente
por el bajo nivel de ocurrencia. Otra de las limitaciones proviene del tiempo requerido
que lleva realizar el estudio de US. El operador requiere de un lapso de tiempo para po-
der capturar, examinar y analizar la zona de estudio. El paciente debe permanecer pre-
sente a lo largo de la examinación y debe prestarse a la repetición del proceso, que en
determinadas situaciones se puede considerar estresante, tanto para él como para el ope-
Capítulo 3: Simulación de ultrasonido 25

rario. En conjunto con esto, sólo una persona puede realizar la práctica a la vez, mientras
los demás esperan hasta que el paciente y/o el sistema de US estén disponibles.

A raíz de las limitaciones descritas surge la motivación del uso de simuladores de


US. A costa de cierta pérdida de calidad o falta de realismo, los simuladores tiene la ca-
pacidad de responder a las limitaciones ofreciendo así una nueva visión al sistema de
entrenamiento conocido[19]. Existen pruebas de que la simulación puede ser igual de
efectiva que los métodos tradicionales para el entrenamiento de residentes de cirugía en
sonografía abdominal focalizada en trauma (FAST) [20,21]. Maul et al. [9] 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.

Al tratarse de una simulación, no se requiere de un paciente u objeto de estudio,


por ende, todas las restricciones relacionadas a este aspecto desaparecen. Los practican-
tes pueden realizar el estudio una cantidad de veces ilimitada sobre los modelos de pa-
ciente. Múltiples simuladores pueden estar siendo ejecutados simultáneamente,
ahorrando la espera para los operarios y optimizando el tiempo de las sesiones. El pro-
blema de los fenómenos poco frecuentes se soluciona directamente gracias a la capaci-
dad de los sistemas de simulación de US de poder almacenar todos los casos necesarios.
El almacenamiento se realiza una única vez y esta información de pacientes puede ser
compartida entre las distintas organizaciones que se encargan de brindar el entrenamien-
to o grupos de investigación.

3.2. Simulador de ultrasonido


La simulación de US es un proceso complejo que aborda diversos aspectos como
la recreación física de ondas que atraviesan tejidos, el acondicionamiento de los datos de
entrada y la interacción con el usuario mediante objetos que representan al paciente y a
la máquina que genera la imagen. El modelado de un simulador puede ser dividido en
dos categorías principales: el modelo de entrada y el de simulación.

3.2.1. Modelo de entrada

Los sistemas de US procesan información que obtienen a partir de los pacientes y


la transforman en lo que llamamos imágenes de US. La simulación busca prescindir de
los pacientes al momento de la ejecución y para ello se plantea un modelo de entrada que
define el origen, formato y el pre-procesamiento de los datos que representan el objeto a
examinar. A continuación se presentarán ejemplos de simuladores de la actualidad.

UltraSim [22] (Figura 3.1) es un simulador de US comercial orientado a la capa-


citación de estudiantes y residentes. El modelo de entrada es un volumen conformado
Capítulo 3: Simulación de ultrasonido 26

por una serie de imágenes adquiridas a través de un estudio de US real realizado especí-
ficamente para ello. Lo que se almacena es una réplica de un estudio real tomado desde
varias posiciones y ángulos. Los resultados de la simulación son realistas siempre y
cuando el operador mantenga posiciones similares a las cuales se utilizaron para realizar
el estudio original. Si se opta por alejarse de dichas posiciones, la imagen final pierde
realismo. Esto se debe a que los efectos dependientes del posicionamiento son recreados
de manera estática antes de la simulación [5].

Por otro lado, Shams et al. [8] propone extraer los datos de los pacientes a través
de imágenes de CT. En base a ellas se genera una imagen de scattering de posición fija
mediante un software llamado Field II [23,24]. Este programa genera patrones de scatte-
ring tomando como entrada la ubicación y la fuerza de los scatterers. Entre 200.000 y
1.000.000 scatterers deben ser definidos para este proceso que aproximadamente puede
tomar hasta 20 minutos. Si se quisieran almacenar más vistas, el procesamiento podría
llegar a durar varios días. Por esta razón, la generación de scattering se limita a una posi-
ción fija.

SIMECO también utiliza un volumen basado en imágenes extraídas de CT pero


para generar el scattering utiliza un algoritmo desarrollado por D'Amato et al. [25] des-
crito en la próxima sección. A diferencia de Field II, su tiempo de cómputo se reduce a
unos minutos.

Figura 3.1: Simulador de ultrasonido comercial UltraSim.


Capítulo 3: Simulación de ultrasonido 27

3.2.2. Modelo de simulación

A partir de los datos de entrada y sus derivados se realiza una serie de transfor-
maciones y cálculos en tiempo de ejecución que dan como resultado la imagen de US
simulada. Este proceso es descrito por el modelo de simulación. El tipo y la complejidad
de procesamiento depende en gran parte de la fuente de datos que se tenga. En algunos
casos la simulación puede consistir en tareas complejas de recreación de fenómenos físi-
cos como la reflexión y el scattering. En otros, puede limitarse solamente a extraer partes
de la información de entrada.

UltraSim trabaja con imágenes de US reales pre-grabadas. El sistema cuenta con


un transductor ficticio y un sensor que registra los movimientos que realiza el operador.
El simulador se encarga de detectar la posición entregada por este sensor y extrae del
volumen anatómico el sector correspondiente a mostrar. No se realizan procesos adicio-
nales de recreación ya que toda la información necesaria se encuentra en el modelo de
entrada.

Shams et al. [8] desarrolla un modelo acústico para la simulación de reflexiones,


atenuación, sombras y oclusión a partir de las imágenes de CT. Kutter et al. [6] elabora
un método basado en GPU con imágenes de US obtenidas a partir de scans volumétricos
de CT. Utiliza un modelo basado en rayos para generar los fenómenos ultrasónicos de-
pendientes de la posición como son la oclusión, reflexiones y atenuación. Todo esto es
combinado con un patrón de speckle derivado del pre-procesamiento de imágenes de CT
usando un modelo basado en ondas de propagación de ultrasonido en el tejido. De esta
manera, Kutter et al. logra obtener un rendimiento superior a las técnicas basadas en
CPU como la de Shams et al. [8], permitiendo ejecutar paralelamente la simulación y la
visualización a cuadros por segundos lo suficientemente altos como para que la ejecu-
ción pueda ser interactiva para el usuario.

3.3. SIMECO
SIMECO es un simulador de ultrasonido desarrollado en el instituto PLADEMA
de la Universidad Nacional del Centro de la Provincia de Buenos Aires como parte de un
proyecto de investigación en colaboración con el Hospital El Cruce de Alta Complejidad
de Florencio Varela. Los investigadores involucrados son: DSc. Juan D’Amato, DSc.
Ignacio Larrabide, Ing. Pablo Rubí, Ing. Ezequiel Fernández Vera, Dr. Joaquín Larrabi-
de, DSc. Mariana del Fresno, DSc. Rosana Barbuza, DSc. Marcelo Vénere.
Capítulo 3: Simulación de ultrasonido 28

3.3.1. Modelo de simulación

Rubi et al. [26] presenta un modelo acústico que puede ser usado en tiempo real
para la simulación de reflexiones, atenuación, sombras y efectos de oclusión dependien-
tes de la vista, siendo las características principales en una imagen de US. El método
utiliza como modelo de entrada una imagen médica volumétrica, como puede ser un CT,
y emula el efecto de las ondas acústicas atravesando diferentes tejidos mediante una
técnica de ray-casting.

Desde un punto de vista geométrico, la onda de US puede ser modelada como un


rayo que comienza desde el transductor y es procesado utilizando leyes de la física.
Cuando un rayo de US viaja a través de un modelo compuesto por diversos materiales,
suceden principalmente dos tipos de interacciones: la reflexión y la atenuación. La re-
flexión ocurre en la interfaz entre dos materiales con diferentes impedancias acústicas.
La cantidad de energía que es reflejada de vuelta hacia el transductor es determinada por
un coeficiente de reflexión, α𝛼𝑅 , dado por:
(3.1)
𝑧2 − 𝑧1 2
𝛼𝑅 =
𝑧2 + 𝑧1

donde 𝑧1 y 𝑧2 son impedancias acústicas de los materiales. La transmisión es la energía


restante que pasa a través de la interfaz hacia el siguiente medio. Esta es denotada por
𝛼𝑇 y se define como:
(3.2)
𝛼 𝑇 = 1 − 𝛼𝑅

La reflexión de US en las interfaces de los tejidos no es especular y su compor-


tamiento depende del ángulo entre el haz incidente y la superficie normal del tejido. El
modelo de Lambertian scattering es utilizado para describir la intensidad reflejada de la
señal cuando es capturada por el transductor. Acorde a éste, la intensidad de la señal es
independiente del ángulo de visión y sólo depende del ángulo de incidencia. Siendo I0 la
intensidad inicial del rayo e Ii(𝑥) la intensidad en la posición 𝑥, la atenuación acumulada
en 𝑥 estará dada por Ii(𝑥)/I0 . Teniendo en cuenta que la señal vuelve por el mismo me-
dio, la señal capturada por el receptor puede escribirse como
(3.3)
2
𝐼𝑖 𝑥
𝐼𝑟 𝑥 = 𝛼𝑅 𝑟 𝑥 𝑛 𝑥
𝐼0
donde 𝑟 es el vector unitario del haz y 𝑛 es vector normal de superficie.
Capítulo 3: Simulación de ultrasonido 29

El efecto de un rayo de ancho finito producido por una arreglo de elementos del
transductor es modelado integrando las intensidades de las reflexiones percibidas a una
profundidad específica utilizando una “función de ventana” adecuada. Por lo tanto, para
un arreglo lineal se puede escribir
(3.4)
𝑥+1
𝐼𝑖 2 𝑥
𝐼𝑅 𝑥, 𝑦 = 𝛼𝑅 𝑢, 𝑦 𝑟 𝑢, 𝑦 𝑛 𝑢, 𝑦 𝜔 𝑢 𝑑𝑢
𝐼0
𝑥−1

donde 𝜔 es la función ventana y la longitud de la apertura activa, determinada por el


ancho y el espaciado de los elementos activos del transductor.
Otro de los componentes del método es la imagen de scattering generada a partir de la
imagen de CT. Esto permite simular el patrón de speckle que se da en el US real. El scat-
tering se genera previamente a la ejecución y la técnica de construcción será desarrollada
en profundidad en la siguiente subsección. Los artefactos del scattering son dependientes
de la posición en el US real, pero en el método aquí adoptado no lo son. Con el fin de
compensar esto, la imagen de scattering se combina con las de reflexión y transmisión,
que dependen de la posición. La fórmula es la siguiente:
(3.5)
𝐼𝑢𝑠 𝑥 = 𝛼𝐺𝜎1 𝑥 ∗ 𝐼𝑅 𝑥 + 𝛽𝐺𝜎2 𝑥 ∗ 𝛼 𝑇 𝑥 𝐼𝑆 𝑥

donde 𝐼𝑢𝑠 𝑥 es la imagen de ultrasonido, 𝐼𝑅 𝑥 es la imagen de reflexión, 𝐼𝑆 𝑥 es la


imagen de scattering, α y β son coeficientes de blending, 𝐺 es el filtro Gaussiano con
media 0 y desviaciones ajustables (σ1 y σ2), utilizados para suavizar el proceso de com-
binación de las imágenes.
En la Figura 3.2 se pueden observar las componentes descriptas calculadas a par-
tir de una porción de un CT.

Figura 3.2: De izquierda a derecha, imagen de reflexión, transmisión y scattering.


Capítulo 3: Simulación de ultrasonido 30

3.3.2. Generación de ruido speckle

El origen del ruido speckle puede ser evaluado modelando la reflexión con un
número finito de scatterers. Éstos modifican la señal de manera coherente, incrementan-
do o decrementando la fuerza de la señal, dependiendo en la fase relativa de cada scatte-
rer. El ruido speckle proviene de estos patrones de interferencia constructiva y
destructiva, representándose como puntos brillantes y oscuros en la imagen. [11]

D'Amato et al. [25] presenta el método de recreación de speckle que es utilizado


por SIMECO. Para modelar el este tipo de ruido utiliza la siguiente fórmula:
(3.6)
∗ ∗ ∗ ∗
𝑦 =𝑥 𝑛 +𝑎

donde 𝑦 ∗ es el píxel con el ruido aplicado en el medio de una ventana, 𝑥 ∗ es el píxel sin
ruido, 𝑛∗ el ruido multiplicativo y 𝑎∗ el ruido aditivo. El efecto que produce este último
en los sistemas de US puede ser despreciado, por lo que la fórmula puede ser re escrita
de la siguiente manera:
(3.7)
∗ ∗ ∗
𝑦 ≈𝑥 𝑛

La compresión logarítmica es utilizada para ajustar el largo del rango dinámico


del eco, entre 50-70 dB, entonces:
(3.8)
∗ ∗ ∗
log 𝑦 = log(𝑥 ) + log(𝑛 )
luego:
(3.9)
𝑦 =𝑥+𝑛

donde 𝑦 es el píxel observado en la imagen tipo B-mode, 𝑥 es el píxel comprimido sin


ruido y n es el componente de ruido comprimido. El ruido speckle se torna más intenso
en regiones de mayor ecogenicidad. Por ello, 𝑛 no es independiente de 𝑥. Finalmente se
puede definir a una imagen tipo B-mode con ruido speckle de la siguiente manera:
(3.10)
𝑦 = 𝑥 + 𝑥𝑛

donde 𝑛 es ruido blanco Gaussiano convolucionado con una función de propagación de


punto (PSF)[27] que se define como:
(3.11)
𝑁 𝑥, 𝑦 = 𝐻 𝑥, 𝑦 Ⓧ 𝑍(𝑥, 𝑦)
Capítulo 3: Simulación de ultrasonido 31

donde 𝑁 𝑥, 𝑦 es una matriz de ruido, 𝐻 𝑥, 𝑦 es la PSF, 𝑍(𝑥, 𝑦) es la función de impe-


dancia acústica, que puede ser modelada como ruido blanco Gaussiano y Ⓧ es el opera-
dor de convolución de dos dimensiones.
El ruido speckle es proporcional a la intensidad de la señal que llega al tejido.
Las ondas de US a medida que atraviesan los tejidos pierden intensidad de señal debido
a la absorción y al scattering. Con el objetivo de reducir el costo computacional, se re-
crea este efecto mediante una atenuación lineal de la señal, llamándose caída lineal. La
imagen comprimida sin ruido 𝑥 es una imagen de CT ligeramente difuminada mediante
un filtro Gaussiano, donde la difusión isotrópica homogeneíza las intensidad en los teji-
dos y suaviza las interfaces entre estos. Luego de la difusión, 𝑥 es atenuada debido a la
distancia con el transductor. Finalmente se aplica la última Ecuación 3.11 para obtener la
imagen con el scattering (Figura 3.3).

Figura 3.3: Imagen de ultrasonido simulada por SIMECO.


32

Capítulo 4: Herramientas de
preprocesamiento
El pre-procesamiento en SIMECO es una etapa en la que se preparan un conjunto
de estructuras de datos derivadas del volumen anatómico. Ésta se realiza previo a la eje-
cución en tiempo real de la simulación. El conjunto de tareas se realiza por fuera de SI-
MECO utilizando scripting en lenguaje Python junto a la biblioteca VTK y a la
plataforma Matlab. En este capítulo se describe el desarrollo de una herramienta com-
plementaria con ParaView que facilita la creación y visualización de lo scripts enfocados
en el pre-procesamiento de información.

4.1. Preprocesamiento en SIMECO


El preprocesamiento de los datos de entrada en SIMECO se basa en una arquitec-
tura tipo "Pipes and Filters". La información fluye por una estructura de "Pipeline" en la
que atraviesa distintas etapas en las que se le aplican transformaciones (Figura 4.1). De
esta manera, los datos crudos de entrada se convierten en la información procesada re-
querida por el simulador. Las etapas reciben el nombre de filtros y se construyen en for-
ma de scripts. Éstos se elaboran mediante el lenguaje Python junto a un conjunto de
bibliotecas. La más importante de ellas es "Visualization Toolkit"(VTK) [28], un sistema
de software libre orientada a objetos y especializado en computación gráfica, visualiza-
ción y procesamiento de imágenes (Figura 4.2).

Figura 4.1: Flujo de procesamiento de datos a través de filtros mediante arquitectura de


"Pipes and Filters".

Una de sus características principales de VTK es que es "software libre", por lo


que gran cantidad de desarrolladores colaboran constantemente para el crecimiento de la
herramienta. Esta biblioteca cuenta con numerosas aplicaciones en la investigación
científica y en especial de medicina [29,30,31]. La documentación en el software es una
característica fundamental para su evolución y distribución. La falta de registro de la
estructura y funcionalidad de una herramienta provoca que su aprendizaje y uso se vuel-
van tareas complejas, lo que dificulta su llegada hacia el desarrollador. VTK cuenta con
Capítulo 4: Herramientas de preprocesamiento 33

gran cantidad de documentación [32] de todas sus clases y métodos, variedad amplia de
ejemplos prácticos [33] y dos libros oficiales [29,34] en los que se provee de toda la in-
formación relevante de la plataforma y como debe ser utilizada correctamente para la
creación aplicaciones exprimiendo al máximo todo su potencial. VTK está construido en
base a una arquitectura que posee un núcleo compilado en C++ envuelto por una capa
compuesta por un intérprete de lenguajes, como Python o Java, que le permiten comuni-
carse directamente con el núcleo. Esto brinda la posibilidad de utilizar esta biblioteca no
solo con su lenguaje principal sino incluso con otros, sin perder la eficiencia de uso de
CPU y memoria que C++ otorga. VTK soporta una gran variedad de algoritmos de vi-
sualización incluyendo métodos para escalares, vectores, tensores, texturas y volúmenes.
Cuenta con técnicas avanzadas de modelado como modelado implícito, reducción de
polígonos, suavizado de mallas y contorneado y métodos que permiten combinar algo-
ritmos y datos de tipo bidimensionales y tridimensionales [34].

Matlab [35] es un entorno de de desarrollo comercial para computación numérica


y visualización. Posee un lenguaje propio de alto nivel de abstracción enfocado en com-
putación numérica, visualización y desarrollo de aplicación. Provee de funciones ma-
temáticas implementadas para álgebra lineal, estadística, análisis de Fourier, filtrado,
integración numérica, resolución de ecuaciones diferenciales ordinarias, entre otros.
Ofrece además bibliotecas gráficas para la visualización de datos y creación de gráficos
(Figura 4.3). Matlab puede ser utilizado en un amplio rango de aplicaciones que inclu-
yen procesamiento de señales, procesamiento de videos e imágenes, computación finan-
ciera y biológica [36]. En SIMECO se utiliza como software complementario en la
implementación de scripts mediante una API por la que se comunican.

Figura 4.2: Aplicaciones de VTK. a) Renderizado de un volumen anatómico. b) Visuali-


zación del flujo de fluido alrededor de un tubo.
Capítulo 4: Herramientas de preprocesamiento 34

Figura 4.3: Creación de un gráfico 3D utilizando Matlab.

4.2. ParaView
ParaView es una herramienta multiplataforma de análisis y de visualización de
datos científicos. Es una aplicación tanto de uso general como especializado con una
arquitectura distribuida, que permite que pueda ser utilizada en una computadora de es-
critorio o remota con la posibilidad de cómputo paralelo. Posee un framework extensible
acompañado con un conjunto de herramientas y bibliotecas para varias aplicaciones co-
mo scripting en Python o la visualización web a través de ParaViewWeb. Cabe destacar
que el proyecto ParaView es open-source (licencia BSD, commercial software friendly)
y está respaldado por una comunidad activa de desarrollo de software.

4.2.1. Modelo de visualización

La visualización se puede definir como el proceso de convertir datos crudos en


imágenes, volúmenes y otros tipos de representación para mejorar la comprensión de la
información recibida. ParaView utiliza VTK como motor de renderizado y procesamien-
to para la visualización de los datos

El modelo VTK se basa en el paradigma de flujo de datos. Éstos son transmitidos


a través del sistema siendo transformados por módulos en una serie de etapas. Los
módulos realizan un proceso sobre los datos para generar nueva información. Algunos
ejemplos de operaciones son la generación de contornos, el recorte y rebanado de volú-
menes o la combinación de múltiples entradas. Su estructura básica está compuesta por
un puerto de entrada por donde los datos son obtenidos, el cuerpo donde se realiza el
Capítulo 4: Herramientas de preprocesamiento 35

procesamiento y el puerto de salida por donde se transmiten los datos procesados. El


flujo de información comienza con un módulo encargado de introducir información al
sistema. A diferencia del resto, no posee un puerto de entrada, pero sí uno o más de sali-
da. Se les da el nombre de fuente y tienen la capacidad de generar información u obte-
nerla desde un medio externo como un archivo. Desde allí el flujo continúa hacia los
llamados filtros que son los encargados de transformar la información. Por último la
información llega a los módulos sumidero que se encargan de mostrar los datos por pan-
talla o guardarlos en forma de archivos en la memoria secundaria. No poseen puerto de
salida pero si de entrada. Estos tres tipos de módulos conforman una infraestructura
flexible que mediante su conexión se crean los pipelines de procesamiento de alta com-
plejidad (Figura 4.4).

El flujo de trabajo de ParaView está basado en este modelo. Los datos son intro-
ducidos al sistema mediante un lector de archivos o son generados. En su extenso paque-
te de herramientas, ParaView incluye lectores para una gran cantidad de formatos de
archivos usados comúnmente en el ambiente computacional científico como por ejemplo
DICOM, CSV, VTK e imágenes como JPEG y PNG. La información pasa a través de
filtros existentes o se pueden crear manualmente. Finalmente se visualiza el resultado
por pantalla o se guarda en un archivo en formatos como los de entrada [37,38].

Figura 4.4: Tipo de módulos y flujo de datos en VTK.


Capítulo 4: Herramientas de preprocesamiento 36

4.2.2. Interfaz gráfica de usuario

La manera por la cual el usuario puede controlar los tres tipos de módulos que
componen el modelo es mediante la interfaz gráfica de usuario (GUI). Esta interfaz fun-
ciona como un frente gráfico de la plataforma y está diseñada para facilitar la creación
de pipelines de procesamiento. Ésta provee de paneles para inspeccionar y modificar los
filtros, cambiar parámetros, seleccionar datos, generar renderings, entre otras funcionali-
dades.

La GUI está compuesta por componentes como menús, paneles, barras de herra-
mientas y el Viewport, como se puede observar en la Figura 4.5. Los menús proveen del
conjunto de opciones típicas de una aplicación de escritorio incluyendo el guardado y
cargado de archivos(menú “File”), las acciones de deshacer y rehacer (menú “Edit”) ,
intercambiar la visibilidad de los paneles (menú “View”), entre otros. Además, se en-
cuentra la opción de generar datos de varios tipos (menú “Sources”) y de agregar filtros
(menú “Filters”). El menú “Tools” da acceso a características avanzadas, dentro de las
cuales se pueden destacar “Plugin Manager” y “Python Shell”

Los paneles son los encargados de brindar una vista sobre el estado de la aplica-
ción. Uno de ellos es el “Pipeline Browser” que permite inspeccionar el pipeline de vi-
sualización y realizarle modificaciones. Este es el más importante y es una de las
razones por la cual se ha elegido ParaView como la plataforma de preprocesamiento.
“Properties” e “Information” brindan la capacidad de modificar y observar los paráme-
tros y propiedades de los filtros. “Color Map Editor” corresponde al mapa de colores
utilizado para la representación de los datos que produjo el pipeline. En la sección de los
filtros creados se mostrarán distintas configuraciones armadas mediante este panel. Dis-
tintas configuraciones de pipelines y filtros serán mostradas en las siguientes secciones
para ejemplificar la utilidad de dichos paneles.

El Viewport se encuentra en la parte central de la ventana y corresponde al área


de visualización de los datos resultantes del pipeline elegido. Los contenedores donde la
información es renderizada son llamados vistas. Existen distintos tipos que se prestan a
diversos propósitos. Por defecto se encuentra la visualización 3D de los datos, pero tam-
bién se puede seleccionar la vista de “hoja de cálculo” donde se presentan todos los va-
lores de las celdas en forma de matriz o la vista de histograma (Figura 4.6).
Capítulo 4: Herramientas de preprocesamiento 37

Figura 4.5: Interfaz gráfica de usuario de ParaView.

Figura 4.6: Tipos de vistas disponibles en ParaView

4.2.3. Plugins y módulos programables

ParaView incluye una gran cantidad de tipos de filtros y lectores, los cuales
fueron escritos en C++ por los desarrolladores del proyecto ParaView y VTK, y
compilados en ejecutables y bibliotecas runtime. Una de las características principales de
esta plataforma es la capacidad de personalización, permitiendo a los usuarios insertar su
propio código dentro de la aplicación con diversos fines como leer un formato de
archivo no soportado de forma nativa o la ejecución de un algoritmo específico. Para
Capítulo 4: Herramientas de preprocesamiento 38

ello, ParaView posee una infraestructura de plugins que permite que los usuarios crear
funcionalidad propia y puedan agregarlos al sistema. Existen dos tipos de plugins, en
formato DLL y XML. El primero de ellos corresponde a las bibliotecas de enlace
dinámico (Dynamic Link Library) que se basan en código C++ compilado en forma de
DLL. El formato XML se enfoca en código escrito en lenguaje Python, que a diferencia
del tipo anterior, no se compila y es interpretado. Los plugins son muy flexibles en
cuanto a la funcionalidad, sin embargo, el proceso de creación puede resultar tedioso. Se
requiere del uso de herramientas complejas para su elaboración y conocimiento de una
extensa cantidad de parámetros a configurar de las API’s de C++ y Python, provistas por
ParaView y VTK.

La plataforma permite otra manera de importar funcionalidad propia de forma


más sencilla mediante módulos programables. Estos permiten incorporar scripts de Pyt-
hon que serán ejecutados por ParaView de la misma manera que los módulos básicos
descriptos anteriormente. NumPy y ScyPy son bibliotecas de procesamiento gráfico para
el lenguaje Python que pueden ser utilizadas. Los módulos programables solamente pue-
den ser implementados en Python y no se pueden incluir scripts para las etapas de "Re-
questInformation" y "RequestUpdateExtent" en el pipeline de ejecución.

4.3. Complemente de ParaView: "PV Filter


Creator"
ParaView cuenta con una infraestructura de plugins y un sistema de módulos
programables que le permite expandir su funcionalidad en base a las necesidades del
usuario. Este nivel de personalización que posee la plataforma es una de sus característi-
cas más importantes y la razón por la cual fue elegida como una de las herramientas para
el preprocesamiento. Dependiendo del nivel de profundidad de personalización al que
quiera acceder el desarrollador, existen distintas alternativas en la manera de importar el
nuevo contenido. Cuanto mayor sea la profundidad, también lo será la dificultad en con-
figuración que habrá. En la Tabla 4.1 se comparan los tres métodos creación filtros en
cuanto a los aspectos de personalización y configuración.

Los módulos programables no fueron el método de generación de filtros elegido


por la imposibilidad que presentan al momento de proveer de parámetros modificables
mediante interfaz gráfica. Esta característica es de suma importancia ya que agiliza el
proceso de edición de parámetros de los scripts sin la necesidad de tener que recurrir a la
edición del código fuente.

En ParaView los filtros pasan por un pipeline de ejecución que consta de tres
etapas en las que se ejecuta el script principal y otros dos secundarios. El script pertene-
Capítulo 4: Herramientas de preprocesamiento 39

ciente a la etapa "RequestData" es el más importante ya que es donde se espera que el


algoritmo produzca el resultado final. "RequestInformation" y "RequestUpdateExtent"
son las etapas previas en donde se configuran cuestiones relacionadas a meta-datos, co-
mo valores de tiempo para los datos temporales o la extensión para los datos estructura-
dos. Sus scripts no son estrictamente necesarios para la ejecución, por ello los módulos
programables pueden restringirse solamente al script de "RequestData". Esto limita la
variedad de filtros que se pueden crear con este método, siendo otra de las razones por la
que no fueron elegidos como parte de la herramienta a implementar.

Aspectos Plugin DLL Plugin XML Módulo Prog

Pipeline de Sólo
Todas las etapas Todas las etapas
ejecución "RequestData"

Personalización

Parámetros
Sólo
modificables Si Si
"OutputType"
por GUI

Si, cada vez que se


realiza una modifi-
Compilación cación se debe repe- No No
tir el proceso de
compilación

Configuración
Manual, gran canti- Manual, gran canti-
dad de parámetros dad de parámetros Automática,
Parámetros
deben ser configu- deben ser configu- excepto el
internos rados para la crea- rados para la crea- script
ción de la DLL ción del XML

Tabla 4.1: Comparación entre métodos de creación de filtros.


Capítulo 4: Herramientas de preprocesamiento 40

En cuanto a los plugins, la versión DLL posee la desventaja de necesitar ser


compilado en cada momento que se quiera realizar una modificación del código, entor-
peciendo el proceso de prueba y corrección de errores. Finalmente la versión XML, solo
presenta la dificultad de la configuración interna del archivo. Sin embargo es una cues-
tión que puede ser solucionada. Existe una gran cantidad de parámetros a configurar
pero no todos son de importancia y pueden ser ignorados, mientras que otros permane-
cen fijos en la mayoría de los casos. Por lo tanto, la automatización de gran parte de la
configuración es una solución posible para el problema planteado. Los parámetros res-
tantes deben ser abordados manualmente ya que dependen de las necesidades del des-
arrollador.

De esta manera surge la motivación de crear un software que actúe de mediador


entre el usuario que desea crear un filtro personalizable y la plataforma ParaView que
brinde los mecanismos para realizarlo. Este software tiene como meta principal trans-
formar la creación de filtros en un proceso ágil, simple y con un alto nivel de personali-
zación. Para ello se determinaron tres elementos que el desarrollador debe definir para
crear un filtro:

Scripts: El algoritmo implementado en lenguaje Python para la etapa "RequestData" es


el núcleo del filtro. También se pueden incluir los scripts para "RequestInformation" y
"RequestUpdateExtent" pero no es obligatorio en todos los casos. Se permite la inclusión
de bibliotecas que se encuentren dentro de ParaView.

Entradas: Los puertos por donde arriban los datos al filtro son el punto de conexión con
el exterior y son la fuente de información que será procesada por el algoritmo. Pueden
haber uno o más puertos de entrada.

Parámetros configurables: El valor de cualquier variable puede ser modificado dentro


del código. Pero se requiere tener conocimiento sobre éste ya que de otro modo se podría
estar modificando un sector crítico que podría provocar efectos inesperados en la ejecu-
ción. Los parámetros configurables permiten que el desarrollador del código indique
cuáles variables pueden modificar su valor. De esta manera el usuario no tiene la necesi-
dad estricta de conocer el código para efectuar un cambio de valor y asegurar la estabili-
dad del filtro. Se pueden seleccionar distintos tipos de variables como parámetros y cada
uno posee una representación gráfica adecuada.
41

Capítulo 5: Filtros en ParaView


En este capítulo se describe la herramienta implementada para la creación de
filtros en ParaView para el preprocesamiento de datos. Primero se explica el modo de
funcionamiento de los filtros dentro de ParaView y cómo son administrados. Luego se
describe el proceso de creación de un filtro utilizando la herramienta, haciendo hincapié
en el tipo y la funcionalidad de cada uno de los componentes que deben configurarse.
Además se muestra la manera en que los filtros son incorporados a ParaView y cómo
construir un pipeline de preprocesamiento.

En la segunda parte se presenta la implementación de un conjunto de filtros me-


diante la herramienta. Su funcionalidad es extraída de scripts utilizados por SIMECO
con el objetivo de mostrar las bondades de la herramienta en un simulador real. Adicio-
nalmente se muestra la construcción de un filtro alternativo para generación de ruido
speckle y se realiza un análisis de su de tiempo de cálculo y calidad de imagen obtenida.

5.1. Modo de funcionamiento


La forma en la que ParaView administra los filtros creados con la herramienta es
mediante la creación de instancias de una clase llamada "vtkPythonProgrammableFil-
ter". Esta clase posee métodos y atributos especialmente diseñados para que ParaView
configure y utilice filtros de fuentes externas. Por cada filtro que se agrega al pipeline, se
crea una instancia de la clase mencionada y se configuran sus atributos según la infor-
mación que brinda el plugin XML del filtro correspondiente. En la Tabla 5.1 se muestran
los principales métodos utilizados. Este proceso es realizado por ParaView internamente,
liberando al usuario de esta tarea.

Para poner en funcionamiento los filtros, ParaView los agrega en su pipeline de


ejecución. Primero se leen los puertos de entrada en busca de datos que hayan arribado
por los canales. Estos son almacenados en atributos dentro del objeto. Se establece los
valores de los parámetros personalizables ingresados por la interfaz gráfica. Se envían
los scripts y los datos mencionados al intérprete de Pyhton para que ejecute el código. Se
toma el resultado y se lo almacena en los puertos de salida para que posteriormente sean
transmitidos por los canales.
Capítulo 5: Filtros en ParaView 42

Método Parámetros Descripción

{int Se indica el número de puertos


SetNumberOfInputPorts
numberOfInputPorts} de entrada que tendrá el filtro

Se guarda en un atributo interno


SetScript {const char*} el script a ejecutar en la etapa
"RequestData"
Se guarda en un atributo interno
SetInformationScript {const char*} el script a ejecutar en la etapa
"RequestInformation"
Se guarda en un atributo interno
SetUpdateExtentScript {const char*} el script a ejecutar en la etapa
"RequestUpdateExtent"
{const char* name, <int |
Se guarda el nombre y valor de
SetParameter double | const char*>
un parámetro personalizable
value }

Se indica el tipo de estructura


SetOutputDataSetType {int}
que tendrá el elemento de salida

Tabla 5.1: Métodos internos de la clase "vtkPythonProgrammableFilter".

5.2. Creación de filtros


La herramienta desarrollada tiene como objetivo transformar la información que
le entrega el usuario en un filtro con un formato que ParaView sea capaz de interpretar.
Se debe tener en cuenta que esta información debe tener una estructura determinada para
que la herramienta sea capaz de interpretarla. Para la crear un filtro se deben disponer de
dos archivos obligatorios, el script correspondiente a la etapa "RequestData" y el código
XML de configuración del filtro (Figura 5.1). Adicionalmente se puede contar con un
archivo opcional de tipo script para la etapa "RequestInformation". A continuación se
profundizará en el método de confección de cada uno de los archivos necesarios para la
creación del filtro.
Capítulo 5: Filtros en ParaView 43

Figura 5.1: Herramienta de creación de filtros de ParaView.

5.2.1. Script "Request Data"

El núcleo de un filtro personalizable en ParaView es el algoritmo que dicta su


comportamiento. Se debe desarrollar en forma de script en el lenguaje Python. Cabe
destacar que para la confección del código pueden ser empleadas solo bibliotecas que se
encuentren importadas en el intérprete de Python incluido en ParaView.

5.2.2. Configuración en XML

Aquí se debe reunir todo lo que refiere a la configuración general del filtro, las
entradas y los parámetros personalizables. Para cada uno de estas categorías existen dis-
tintos elementos a los que se les debe asignar un valor con un formato específico. Cada
uno de ellos será desarrollado en la siguiente tabla:
Capítulo 5: Filtros en ParaView 44

Elemento Variable Valor Descripción

Nombre que recibe el filtro de-


name Valor alfanumérico
ntro de ParaView

Script
Descripción de la funcionalidad
documen-
Valor alfanumérico del filtro que es visualizada en
tation
la interfaz gráfica de ParaView

name Valor alfanumérico Nombre que recibe el parámetro

Input Cualquier nombre de tipo


de variable que pueda ser
Tipo de variable del dato de
type reconocido en el intérprete
entrada
de Python integrado en
ParaView
Valor alfanumérico (debe
ser un nombre de variable
válido en Python y debe Nombre correspondiente a una
name
corresponder con el nombre variable en el script
de alguna variable en el
script)
Tipos de variables permiti-
type das como parámetro. Valo- Tipo de variable del parámetro
Parameter res posibles: int, bool, etc.
Tipo de valor que se co-
Valor por default que tiene el
default rresponda con el de la va-
parámetro
riable
Descripción del parámetro que
documen-
Valor alfanumérico es visualizada en la interfaz
tation
gráfica de ParaView

Tabla 5.2: Elementos del archivo de configuración.

En el caso de los parámetros , en la interfaz gráfica existe un panel para modifi-


car el valor que contienen. Cada tipo posee un estilo de entrada propio, dependiendo de
la naturaleza del dato (Figura 5.2) , como se puede observar en la siguiente tabla:
Capítulo 5: Filtros en ParaView 45

Tipo de paráme-
Descripción Interfaz Gráfica
tro

int Variable de tipo entero Entrada de texto

double Variable de tipo doble Entrada de texto

Variable de tipo cadena


string Entrada de texto
de caracteres

Variable de tipo boolea-


bool Casilla de verificación
na

Variable de tipo arreglo Lista desplegable de


droplist
de cadena de caracteres opciones

Tabla 5.3: Tipos de parámetros.

Figura 5.2: Métodos de entrada de parámetros por GUI.


Capítulo 5: Filtros en ParaView 46

5.2.3. Script "Request Information"

No es obligatorio disponer de un script de "Request Information". A pesar de


ello, existen casos donde es necesario que se tenga cierta información de tipo meta-data
para que el filtro pueda ser ejecutado por ParaView. En este código es donde se debe
especificar dicha información. El paquete de ParaView provee de métodos pregenerados
para realizar dicha tarea.

5.3. Uso de filtros


Luego de haber creado uno o más filtros, la herramienta los colocará en una loca-
lización determinada por Paraview donde éste almacena sus plugins y son cargados al
inicio de la ejecución. Luego los filtros personalizados se encuentran disponibles en el
pool de filtros y pueden ser seleccionados para su uso. Todo filtro posee uno o más puer-
tos de entrada y de salida que deberán ser configurados al agregarlo al pipeline. A medi-
da que se van agregando más filtros, el explorador va mostrando la conexión entre ellos.
En esa misma vista, pueden ser seleccionados para realizar modificaciones de cualquiera
de sus atributos, como variables, visibilidad, rangos de colores, etc.

Luego de haber creado los filtros se deben seguir ciertos pasos para su uso dentro
de ParaView. El proceso comienza importación a ParaView, donde permanecerán dispo-
nibles de forma permanente. Luego se seleccionan y se agregan al pipeline, donde se
estructuran sus conexiones de entrada y salida. Por último se ejecuta y se visualizan los
resultados en el Viewport. A continuación se detallan cada una de las etapas.

5.3.1. Importación de filtros

Existen dos formas de importar un filtro a la plataforma de ParaView. La manera


automática consiste en depositar el archivo del filtro dentro de un directorio específico
donde ParaView aloja los plugins. La herramienta de creación de filtros los guarda allí
automáticamente o pueden ser colocados de forma manual. En la fase de inicio de Para-
View, todos los plugins que se encuentren en dicho directorio serán cargados en el sis-
tema. En el caso que se tenga la plataforma en ejecución y no se quiera reiniciarla, se
puede importar un filtro mediante el administrador de plugins (Figura 5.3). Sin embargo,
no se requiere tener el archivo en una dirección específica, sino que puede ser buscado
en el sistema de directorios.
Capítulo 5: Filtros en ParaView 47

Figura 5.3: ParaView Plugin Manager.

5.3.2. Cargado de filtro al pipeline

Para que el filtro sea usado debe estar dentro del pipeline de procesado. Para ello
debe ser agregado, seleccionándolo dentro de las opciones en el apartado “Sources” en la
barra de herramientas. También puede ser buscado por su nombre mediante la opción
“Search” (Figura 5.4).

5.3.3. Configuración de Filtros

El filtro en principio se encuentra aislado en el pipeline, por ello es necesario


configurar sus puertos de entrada. Para esto se debe abrir el menú contextual del filtro
seleccionado en el panel “Pipeline Browser”. Allí se seleccionará la opción “Change
Input” (Figura 5.5 a) y se abrirá un cuadro donde se permitirá conectar los puertos de
entrada con otros filtros (Figura 5.5 b). Luego se actualizan las conexiones en el Pipeline
Browser (Figura 5.5 c).

Lo siguiente es determinar los valores de los parámetros básicos de ParaView


(“Display” y “Render View”) y los personalizables (“Properties”). Estos se encuentran
en el panel llamado “Properties” (Figura 5.6). Otro de los paneles llamado “Color Map
Editor” brinda un esquema gráfico del mapa de color seleccionado para la representación
de los de las celdas del objeto (Figura 5.7).
Capítulo 5: Filtros en ParaView 48

Figura 5.4: Métodos para agregar filtros al pipeline de ParaView.

Figura 5.5: Configuración de puertos de entrada.

5.3.4. Ejecución del pipeline

Finalmente resta la ejecución de los filtros. Para ello se deberá presionar el botón
“Apply” alojado en el panel “Properties”. Este pone en funcionamiento el pipeline de
ejecución y abre una ventana llamada “Output Window” donde se podrán visualizar to-
dos los mensajes de salida del intérprete (Figura 5.8). Esta ventana puede resultar de
utilidad para mostrar valores numéricos resultantes del procesamiento o mensajes de
alerta o error de ejecución.
Capítulo 5: Filtros en ParaView 49

Figura 5.6: a) Mensaje de finalización exitosa. b) Mensaje de error.

5.4. Filtros desarrollados para SIMECO


Como parte de la primera etapa del trabajo se implementaron un conjunto de fil-
tros mediante PV Filter Creator. Estos son parte del preprocesamiento original de SI-
MECO. Por cada uno de los filtros se presenta una descripción de los aspectos de
desarrollo, funcionalidad y parámetros modificables. Para las figuras se utilizó un volu-
men anatómico de un corte abdominal obtenido a partir de un CT realizado a un paciente
real.

5.4.1. Cargar volumen

El primero de los filtros creados es una fuente de datos. A partir de una dirección
otorgada por el usuario, el filtro carga en memoria un volumen de tipo vtk y lo transmite
por su canal de salida. Para ello se utiliza la clase "vtkStructuredPointsReader", provista
por la biblioteca VTK. Adicionalmente se le asigna un “nombre” (pasado por parámetro)
al volumen.

A pesar de ser una funcionalidad ya presente dentro de ParaView, no resulta de


utilidad ya que si se requiere cambiar el volumen se necesita eliminar el filtro, lo que
implica reconstruir el pipeline. Lo óptimo es disponer de un filtro que represente una
fuente de datos genérica y que luego éste pueda ser instanciado al momento de ejecutar
el pipeline.

En la Figura 5.8 se muestra el filtro de carga en el Pipeline Browser y su resulta-


do en el Viewport. Modificando el parámetro de dirección se puede cargar un volumen
desde el filtro.
Capítulo 5: Filtros en ParaView 50

Figura 5.7: Filtro "Cargar volumen".

5.4.2. Corrimiento de valores

Este filtro tiene como fin desplazar los valores de las celdas de un volumen de
entrada en una cantidad determinada por un valor de corrimiento. Éste es pasado por
parámetro, puede ser negativo o positivo y es aplicado a cada una de las celdas pertene-
cientes al volumen de entrada. En la Figura 5.9 se puede ver el resultado del filtro en
relación al desplazamiento que sufrieron sus valores mínimo y máximo (offset=1024).

5.4.3. Calcular gradiente

Este filtro se encarga de computar los vectores gradiente tridimensionales de un


volumen de entrada. Para ello se utiliza la clase "vtkImageGradient" que realiza los
cálculos necesarios. De esta manera se crea un nuevo volumen compuesto por vectores
3D correspondientes a los gradientes de cada una de las celdas. Luego, cada uno de ellos
es normalizado, convirtiéndose en versores, es decir vectores de norma igual a 1. En la
Figura 5.9 se muestra el volumen gradiente en forma de hoja de cálculo para poder apre-
ciar el valor de los vectores en cada celda.
Capítulo 5: Filtros en ParaView 51

Figura 5.8: Filtro "Corrimiento de valores"

Figura 5.9: Filtro "Calcular gradiente", vista de hoja de cálculo.

5.4.4. Aplicar máscara

El enmascarado es una técnica utilizada para seleccionar o marcar una sección de


un objeto que se quiere transformar, dejando apartado al resto. Para diferenciar las zonas
se utiliza una máscara binaria que indica cual es el sector a modificar y cual a ignorar.
En este filtro, la máscara es un volumen que puede contener cualquier rango de valores.
El algoritmo rastrea las posiciones de las celdas diferentes a “0” y con ellas determina
donde debe modificar el volumen principal. La transformación consiste en colocar un
Capítulo 5: Filtros en ParaView 52

valor fijo en cada posición indicada. El valor puede ser pasado por parámetro por el
usuario (mask_value) o ser elegido automáticamente. Su implementación se basa en la
clase "vtkImageMask" que realiza la tarea de enmascarado. En la Figura 5.10 se observa
un pipeline creado con este filtro, la máscara y el resultado. Se presenta como caracterís-
tica especial la presencia de múltiples puertos de entrada, uno correspondiente al volu-
men a modificar y el otro a la máscara.

Figura 5.10: a)Pipeline del aplicado de una máscara. b)Máscara. c)Volumen original.
d)Volumen con máscara aplicada.

5.4.5. Normalización y ecualización de histograma

Este filtro efectúa el proceso de normalización sobre una entrada de datos. Este
proceso consiste en transformar un conjunto de datos con un rango de valores en otro
conjunto que posea un nuevo rango, manteniendo la relación de sus valores. Esta opera-
ción fue implementada mediante el uso de la biblioteca OpenCV que provee de un
método llamado “normalize” el cual recibe el conjunto de datos y el nuevo rango de va-
lores y devuelve el nuevo conjunto. Adicionalmente se realiza una ecualización del his-
tograma, proceso que consiste en distribuir los valores de manera uniforme dentro del
rango de valores. Esta modificación es opcional y puede ser configurada mediante el
parámetro “Hist_Eq”.
Capítulo 5: Filtros en ParaView 53

La normalización resulta de utilidad para mantener un estándar en el rango de


valores de la información con la que se trabaja. La ecualización aumenta el contraste
general entre los valores del conjunto de datos. Siempre y cuando no sea necesario man-
tener la relación de los valores en su estado original, la ecualización ayuda a la diferen-
ciación de los distintos sectores de una imagen o un volumen, lo que puede resultar de
mucha utilidad para mejorar su visualización o la detección de patrones según intensida-
des por ejemplo. En la Figura 5.11 se visualiza el histograma del volumen original y el
normalizado con y sin ecualización incluida.

5.4.6. Generación de speckle (versión Matlab)

El primer script de generación de ruido speckle invoca un script de Matlab. La


idea principal fue adaptar el código original de la manera más fiel posible. El resultado
de este filtro es el volumen de entrada con el ruido incrustado, listo para ser empleado
por el simulador. Previo a la ejecución se debe configurar, por medio de los parámetros
visibles en Paraview, tres variables que contienen las direcciones del ejecutable de la
consola de Matlab, la carpeta de destino de las imágenes resultantes del script de Matlab
y la carpeta donde se encuentra dicho script. Su ejecución se desarrolla de la siguiente
manera:

Figura 5.11: Histogramas a) Volumen original. b) Volumen normalizado. c) Volumen


normalizado y ecualizado.
Capítulo 5: Filtros en ParaView 54

1. Se comprueba la existencia de la dirección del ejecutable de Matlab y de la car-


peta de salida(utilizada para almacenamiento temporal).
2. Se guarda el volumen con los valores en formato string en un archivo temporal
(será utilizado luego por el script de Matlab).
3. Se llama a la consola de Matlab y se le ordena ejecutar el script de generación de
ruido speckle. El desarrollo es el siguiente:
a. Carga el volumen desde el archivo.
b. Se normalizan los valores al rango [0,255].
c. Se realiza la ecualización del histograma.
d. Se transforma el volumen en planos y a cada uno de ellos se le aplica otro
script de Matlab y luego se guardan como imágenes (planos):
i. Se aplica de filtro Gaussiano para distorsionar.
ii. Se aplica de caída lineal.
iii. Se genera el kernel PSF con parámetros prefijados.
iv. Se genera una matriz 2D de ruido blanco Gaussiano.
v. Se convoluciona el ruido blanco Gaussiano con el kernel PSF.
vi. Se multiplica el resultado del paso anterior con la raíz cuadrada de
la imagen y luego se le suma la imagen.
vii. Se guarda en la carpeta correspondiente la imagen final.
Dichas imágenes son cargadas dentro del script de Python y utilizadas para re-
construir el volumen nuevamente.

En la Figura 5.12 se puede observar el volumen con el filtro aplicado.

Figura 5.12: Volumen procesado con filtros de ruido speckle (versión Matlab)
Capítulo 5: Filtros en ParaView 55

Figura 5.13: Diagrama de actividades. a)Filtro de generación de ruido. b)Script de Matlab.

5.4.7. Generación de speckle (versión OpenCV/Numpy)

El segundo filtro de generación de speckle busca obtener el mismo resultado que


el filtro anterior pero solo utilizando bibliotecas propias de Python, es decir, no depender
de recursos externos. De esta manera se evita todo el trabajo adicional que se requiere
para lograr la conexión con las herramientas exteriores a ParaView. Las bibliotecas utili-
zadas son: OpenCV para normalización, convolución, generación de valores aleatorios y
funciones Gaussianas, y Numpy para las funciones matemáticas y estructuras de datos.
Los pasos realizados para el procesado de los datos son los siguientes:

1. Se transforma el volumen de entrada tipo vtk en una estructura propia de Numpy.


2. Se normaliza el volumen a un rango de [0,255].
3. Se ecualiza el histograma del volumen.
4. Se aplica un filtro Gaussiano al volumen.
Capítulo 5: Filtros en ParaView 56

5. Se crea un volumen de caída lineal y se la multiplica por el volumen para aplicar-


le la caída.
6. Se crea un volumen de ruido blanco Gaussiano.
7. Se llama al método PSF dentro del filtro para crear el kernel PSF.
8. Se van tomando planos del volumen de ruido blanco Gaussiano y se los convolu-
ciona con el kernel PSF.
9. Se unifican los planos para crear el volumen de ruido.
10. Se multiplica el volumen de ruido por la raíz cuadrada del volumen de entrada
y luego se suma el volumen de entrada.
Se vuelve a transforma el volumen de tipo Numpy a VTK y se lo coloca como
elemento de salida.

Finalmente el resultado se muestra en la Figura 5.14.

Figura 5.14: Volumen procesado con filtro de ruido speckle (versión OpenCV/Numpy)

5.5. Análisis de los filtros de speckle


Uno de los objetivos del presente trabajo fue transformar el filtro de generación
de speckle originalmente utilizado para preprocesamiento por el equipo de trabajo de
SIMECO en un filtro de ParaView. Al notar el excesivo tiempo de cálculo, se decidió
estudiar su comportamiento con el fin de detectar la raíz del problema. El primer paso
fue identificar las secciones de código estudiando su contenido:
Capítulo 5: Filtros en ParaView 57

 Configuración inicial: Se crean las estructuras de datos necesarias para comenzar


con el algoritmo. Esto incumbe captar los datos de entrada, guardarlos en disco
en un formato compatible con Matlab y configurar variables de espacio.
 Generación de speckle: Este es el núcleo del algoritmo donde se realizan todos
los cálculos matemáticos complejos con empleo de múltiples matrices y convo-
luciones. Este proceso se realiza mediante el script de Matlab. El producto es una
serie de archivos de imágenes en formato Bitmap (BMP).
 Configuración de salida: Se cargan los archivos mencionados y con ellos se ge-
nera un volumen con el formato adecuado y se lo coloca en el puerto de salida.

Luego se evaluaron los tiempos de procesamiento de cada sección como se puede


ver en la Tabla 5.4:

Sección Tiempo (segundos)

Configuración inicial 24,24

Generación de speckle 22,97

Configuración de salida 0,53

TOTAL 47,74

Tabla 5.4: Tiempos en filtro de speckle versión Matlab.

A simple vista se pueden identificar las dos primeras secciones como las raíces
del problema. No solo la ejecución del núcleo del algoritmo es costosa en tiempo, sino
que también lo es el método de exportación de datos al script de Matlab. Por lo tanto una
solución posible sería no trabajar con esa herramienta, empleando bibliotecas de Python
para realizar los cálculos de generación de speckle evitando la exportación de datos. Este
plan introduce la necesidad de re implementar el algoritmo e integrar al filtro la bibliote-
ca Numpy. En la Tabla 5.5 y en la Figura 5.15 se muestran los resultados junto a la ace-
leración obtenida con respecto a la primer versión del filtro.
Capítulo 5: Filtros en ParaView 58

Sección Tiempo (segundos) Aceleración

Configuración inicial 0,02 1425,94

Generación de speckle 2,96 7,76

Configuración de salida 0,02 29,28

TOTAL 3 15,93

Tabla 5.5: Resultado del filtro de speckle versión OpenCV/Numpy.

Las secciones de configuración se redujeron a un valor muy cercano al cero. En


los dos casos fue reemplazado el trabajo en memoria secundaria por el de memoria pri-
maria. Esto se debió a dos factores:

1. La memoria primaria posee velocidades de lectura y escritura mucho mayores a


las de memoria secundaria.
2. Los métodos utilizados en el segundo filtro para la importación y exportación de
datos provinieron de bibliotecas especializadas, no siendo manuales como en el
primer filtro.

En cuanto al algoritmo re-implementado de generación de speckle, se logró bajar


de un valor de tiempo de 22,97 segundos a 2,96, es decir una versión 7,76 veces más
rápida que la original. Las razones fueron las siguientes:

1. Fue eliminada la necesidad de importar y exportar datos desde esta sección ya


que se disponían en memoria primaria (realizado por Matlab en la primera ver-
sión).
2. No se requirió llamar al intérprete de Matlab, eliminando la interacción con el
sistema operativo.

Finalmente se cumplió el objetivo de reducir el consumo de tiempo total, pasan-


do de 47,74 segundos de procesamiento a 3 segundos, es decir, se logró una versión
15,93 veces más veloz.
Capítulo 5: Filtros en ParaView 59

55
50
45
40
35
30
25
20
15
10
5
0

Figura 5.15: Comparación de los tiempos de ejecución de los filtros de speckle por etapa.
60

Capítulo 6: Recreación dinámica de


speckle
En este capítulo se trata el desarrollo de un método orientado a la recreación de
ruido speckle en tiempo real para el simulador de ultrasonido SIMECO. Primero se pre-
senta el flujo de tareas que se efectúan para un caso de estudio. Luego se describen las
etapas individualmente detallando modo de funcionamiento.

6.1. Metodología de trabajo


La simulación del ultrasonido es un proceso complejo que requiere de gran canti-
dad de cálculos matemáticos para ser llevada a cabo. Debido a que la simulación es un
proceso de tiempo real, se requiere que todos los cálculos sean resueltos lo más rápido
posible para que la interacción con el usuario sea interactiva como en la realidad. Cuanto
mayor sea el número de operaciones que se deban efectuar para emitir una respuesta,
mayor será el retraso que habrá. A partir de esto, ciertas operaciones fueron selecciona-
das para permanecer en tiempo de simulación y otras fueron desplazadas a un tiempo
previo a la ejecución.

La recreación dinámica del ruido tipo speckle se divide en 3 etapas (Figura 6.1).
En primer lugar se encuentra la etapa de preprocesamiento con ParaView donde se pre-
paran los modelos 3D aplicando distintos filtros. Ésta comparte características con la
versión de la generación de speckle en preprocesamiento. Luego, ya en el simulador, la
segunda etapa consiste en la creación de estructuras de datos y la asignación de valores,
así también como cálculos adicionales tales como los del kernel de la PSF. Finalmente la
última etapa corresponde al núcleo de la simulación, es decir, el ciclo en donde se gene-
ran las imágenes de ultrasonido que serán presentados al usuario. Allí es donde se deben
computar sólo las operaciones que dependan de factores que puedan cambiar al momen-
to de la simulación, como puede ser la posición del transductor.

La particularidad de este método reside en cómo es manipulada la matriz de rui-


do. En el transcurso de la simulación, por medio de la información de posición aportada
por el transductor, se van tomando distintas rebanadas del volumen anatómico. Ya que
se busca lograr un ruido que se genere dinámicamente, éste es aplicado en el momento
de la simulación y no en un estadio previo. Para ello, en base a la posición y ángulo del
transductor, se extrae además una rebanada de la matriz de ruido blanco. Este corte su-
Capítulo 6: Recreación dinámica de speckle 61

pone ser el mismo que en el volumen anatómico. Luego, a esta porción de ruido se la
convoluciona con el kernel de la PSF y se aplica la fórmula de D'Amato et al. [25] des-
crita en el capítulo 3.

Figura 6.1: Diagrama de etapas del método de generación de speckle.


Capítulo 6: Recreación dinámica de speckle 62

El caso de estudio se desarrolla a partir de un volumen anatómico obtenido me-


diante imágenes de CT. Éste corresponde a un corte transversal abdominal de un pacien-
te real Figura (6.2).

Figura 6.2: Volumen anatómico, corte transversal Abdominal.

6.2. Preprocesamiento en ParaView


Para la creación del ruido speckle dinámico se tiene como primera etapa un pre-
procesamiento mediante filtros utilizando Paraview como medio de procesamiento. Se
lleva a cabo por única vez y antes de la primera simulación, ya que son cambios que
deben permanecer fijos en el modelo permanentemente. Este proceso no depende del
contexto de la simulación, es decir, cuestiones relacionadas con la posición del transduc-
tor, por ende no es necesario que se realice en tiempo de simulación. La primer etapa de
la recreación de ruido speckle es la única de las tres que ocurre por fuera del simulador.
De esta manera, se puede ahorrar poder de cálculo teniendo listos estos datos al momen-
to de la simulación. Las ventaja principal que posee el preprocesamiento sobre la ejecu-
ción en tiempo real es que no cuenta con un tiempo límite.

En el caso de estudio, se utilizaron cuatro filtros para preprocesar el modelo


anatómico en ParaView (Figura 6.3). El primero es una normalización de los valores de
las celdas al rango [0,255] más una ecualización del histograma. Luego tres filtros de
enmascarado utilizados para eliminar un conjunto de arterias, la vena porta hepática y la
vena cava inferior (Figura 6.4).

En la Figura 6.5 se muestran los histogramas correspondientes al volumen origi-


nal y al filtrado. Allí se puede apreciar el nuevo conjunto de valores utilizados dentro de
Capítulo 6: Recreación dinámica de speckle 63

las celdas y su nueva distribución. Esto da lugar a un mayor contraste entre los valores
mejorando así la visibilidad de las distintas estructuras dentro del modelo. En la Figura
6.6 a y c se observan dos cortes del volumen original donde las estructuras internas del
cuerpo no se diferencian demasiado entre órganos, huesos y el resto. En cambio en Figu-
ra 6.6 b y d donde se muestran dos cortes del volumen filtrado se puede diferenciar cla-
ramente los órganos y huesos (representados en rojo) del resto del interior del cuerpo. En
color azul intenso se muestran las zonas de venas y arterias eliminadas por las máscaras
(Figura 6.6 b y d).

Figura 6.3: Pipeline de preprocesamiento en ParaView.

Figura 6.4: Máscaras. a)Conjunto de arterias. b)Vena porta hepática. c)Vena cava inferior.
Capítulo 6: Recreación dinámica de speckle 64

Figura 6.5: a) Histograma el volumen original. b)Histograma del volumen filtrado.

Figura 6.6: a)Corte superior del volumen original. b)Corte superior del volumen filtrado.
c)Corte inferior del volumen original. d)Corte inferior del volumen filtrado.
Capítulo 6: Recreación dinámica de speckle 65

6.2. Preparación y carga de datos


La segunda etapa tiene lugar dentro del simulador y se encuentra previa a la si-
mulación. Allí se concentra la preparación y carga de de las estructuras de datos utiliza-
das para el desarrollo del modelo de ruido descrito en el capítulo 4. A diferencia de la
etapa anterior, esta debe repetirse por cada simulación que se realice ya que posee varia-
bles que dependen de elementos ligados a cada una de ellas en particular. Cuestiones
como la posición o el tipo de transductor o el tamaño del volumen anatómico son reque-
ridas para le generación de las estructuras.

El flujo de esta etapa comienza con la construcción de una matriz tridimensional


que contiene la información del ruido blanco. En ella se depositan valores de entre 0
(cero) y 1 (uno), según una distribución Gaussiana o Normal.

El siguiente paso consiste en la recreación del fenómeno de absorción que se da


cuando las ondas pierden intensidad a lo largo del trayecto que realizan. Para ello se
aplica una caída lineal sobre el corte anatómico. Se crea un arreglo con la siguiente
fórmula:
(6.1)
𝑖
𝐶 𝑖 = 1− ∗𝛼

siendo ℎ la altura del corte y 𝛼 el factor de caída. Este arreglo es multiplicado elemento
por elemento sobre las columnas de la matriz correspondiente al corte anatómico. En la
Figura 6.7 se muestra el cálculo y una representación visual de la caída lineal.

Figura 6.7: Representación visual de la caída lineal.

Como último paso de la segunda etapa se genera el kernel de PSF para la futura
convolución que se realizará. En la Figura 6.8 se presenta la representación visual del
kernel.
Capítulo 6: Recreación dinámica de speckle 66

Figura 6.8: Kernel de PSF. a) Escala de grises. b) Escala de colores.

6.4. Procesamiento de simulación


La tercera etapa ocurre dentro del motor de simulación, más específicamente
dentro del ciclo de recreación. Allí se simulan los fenómenos del ultrasonido cuando las
ondas emitidas por el transductor atraviesan los tejidos del cuerpo. Estos fenómenos
dependen de la orientación y posición del transductor, que es maniobrado por el usuario
en tiempo de simulación. Por esta razón este procesamiento solo se puede realizar en
tiempo real. La velocidad de respuesta que tenga el simulador con respecto a los movi-
mientos del transductor es un factor determinante del nivel de interactividad con el usua-
rio. A diferencia de las etapas anteriores, aquí existe una restricción de tiempo en la que
el resultado debe presentarse. El nivel de realismo que se puede alcanzar se encuentra
restringido por el tiempo. Por ello el objetivo principal del método de generación de rui-
do implementado no es solo mejorar la calidad de imagen, sino también introducir la
menor cantidad de retraso posible al ciclo de recreación. En la Figura 6.9 se presentan
las tareas realizadas.

Figura 6.9: Diagrama de actividades de la etapa de generación de ruido.

Se comienza la etapa aplicando la caída lineal sobre el corte anatómico. Para ello
se multiplica elemento por elemento el arreglo de caída lineal con cada una de las co-
lumnas de la matriz correspondiente al corte anatómico (Figura 6.10). Así es como se
recrea el fenómeno de absorción de las ondas ultrasónicas que pierden intensidad en las
Capítulo 6: Recreación dinámica de speckle 67

zonas más profundas. En el capítulo 7 se realiza una análisis sobre los resultados visua-
les.

El patrón de ruido speckle se forma en base a la posición y a la cantidad de scat-


terers que haya al producirse el fenómeno de dispersión. Esto a su vez depende de la
estructura del tejido, por lo tanto cada tipo posee un patrón propio. Por esta razón, cuan-
do se observa un mismo tejido desde distintas posiciones o ángulos, el ruido speckle
resulta ser similar. Entonces, para simular este efecto, se supone que para un determina-
do ángulo y posición se genera siempre el mismo ruido en la imagen. Esta simplificación
del fenómeno de dispersión se utiliza con el fin de reducir el costo computacional, ya
que es un aspecto crítico.

Figura 6.10: Multiplicación elemento por elemento entre el arreglo de caída lineal y
cada columna del corte anatómico.

Cada imagen de ultrasonido simulada se puede ver como un plano extraído del
volumen anatómico (Figura 6.11 a). Para obtener un plano determinado se utiliza como
parámetros la posición y el ángulo que indica el transductor. Esta misma técnica se em-
plea para obtener el plano de la matriz de ruido (Figura 6.11 b). De esta manera se logra
disponer siempre del mismo ruido para cada toma en particular, simulando el efecto del
patrón de ruido speckle propio de los tejidos.

Figura 6.11: a)Corte sobre el volumen anatómico. b)Corte sobre el volumen de ruido
Capítulo 6: Recreación dinámica de speckle 68

Esto significa que debe haber una matriz de ruido con las mismas dimensiones
del volumen anatómico. El almacenamiento y las operaciones con matrices resultan cos-
toso en términos de memoria y tiempo respectivamente. Por ello se utiliza una matriz de
menor tamaño que la ideal, junto a una función módulo para obtener los planos (Figura
6.12). Se debe tener en cuenta que las dimensiones no deben ser demasiado pequeñas
para que no se produzca un efecto visual de textura repetida en la imagen. A modo de
ejemplificación, en la Figura 6.13 se puede observar cómo a medida que se disminuyen
las dimensiones de la matriz se acrecienta el efecto visual indeseado de textura repetida.
El plano de ruido es convolucionado con el kernel de PSF [39].

Por último en esta etapa, se aplica la Ecuación 3.10 para generar la imagen de
ultrasonido con el ruido speckle aplicado. En el siguiente capítulo se analizan los resul-
tados de este método con respecto a las mejoras de tiempo y calidad visual obtenidas.

Figura 6.12: a)Matriz de ruido. b)Representación visual de la función módulo utilizando la


matriz de ruido.

Figura 6.13: Matrices de ruido. a)Sin repetición. b)Textura del 20% del tamaño repetida.
c)Textura del 10% del tamaño repetida.
69

Capítulo 7: Análisis de resultados del


speckle dinámico
En este capítulo se presentan y se analizan los resultados obtenidos del método
de generación de ruido speckle implementado sobre el simulador de ultrasonido SIME-
CO. Se tendrán en cuenta los dos aspectos principales, la visualización, que hace refe-
rencia a la calidad de imagen obtenida, y el rendimiento, que impacta sobre el nivel de
interactividad del simulador.

7.2. Plataforma de pruebas


Las pruebas del algoritmo de generación de ruido speckle se realizaron desde el
simulador de ultrasonido SIMECO. Éste fue ejecutado desde una computadora portátil
con las siguientes características:

Modelo Asus SV53N (Notebook)

Modelo de CPU Intel Core i5 2450M @ 2,5GHz

CPU Cores 2 (4 HT)

Memoria RAM 8Gb

Placa de video Nvidia 630M

Sistema Operativo Windows 7 64bits

Tabla 7.1: Especificaciones de la computadora utilizada para las pruebas.

Como entrada de datos se utilizó un volumen anatómico obtenido de imágenes de


CT de un corte abdominal. Éste mismo es utilizado por SIMECO en la sección de explo-
ración hígado. El volumen fue preprocesado utilizando filtros creados con la herramienta
implementada para este trabajo y el pipeline de filtrado se realizó utilizando la ParaView
versión 4.3.1 64-bit.
Capítulo 7: Análisis de resultados del speckle dinámico 70

7.3. Visualización
El segundo objetivo de este trabajo fue implementar un método de recreación de
ruido speckle en tiempo real para mejorar la calidad de la imagen de ultrasonido. Para
ello se tomó como punto de comparación el método que utiliza SIMECO para la recrea-
ción del ruido. Éste se desarrolla en forma de preprocesamiento antes de la ejecución.
Por ende, los efectos dependientes de la posición y ángulo del transductor no son recrea-
dos de la manera más fiel. El método propuesto tiene como fin abordar estos problemas
y aquí se presentan los resultados.

La absorción es un fenómeno físico que sufren las ondas de ultrasonido que pro-
voca la pérdida de su intensidad. En la imagen de ultrasonido este efecto se puede obser-
var como un oscurecimiento en las zonas inferiores que se produce en la misma
dirección en la que apunta el transductor. Para recrear este efecto, en los dos métodos, se
utilizó una función de caída lineal de intensidad de la imagen. En el método original no
se logra que la dirección de la caída lineal se mantenga acorde a la del transductor para
todos los puntos de observación que puede tener el volumen anatómico. Sucede que para
ciertas tomas la dirección de la caída es perpendicular a la del transductor (Figura 7.1 a y
c). Por el contrario, en el método propio se recrea correctamente el efecto como se ob-
serva en la Figura 7.1 b y d, donde la dirección de la caída se mantiene igual a la del
transductor en todas las tomas.

Visualmente el ruido speckle se presenta como un efecto perpendicular a la di-


rección de la onda emitida por el transductor. De esta manera se forman pequeñas zonas
brillantes y oscuras elongadas en dicha dirección. En la Figura 7.2.c se muestra una ima-
gen de ultrasonido real donde se observa dicha elongación del ruido speckle. En el
método original no es posible recrear este fenómeno correctamente ya que el ruido se
genera sin tener en cuenta el transductor (Figura 7.2.a), por lo que solo se puede utilizar
una dirección para el ruido de todo el volumen. Por el contrario, en el método implemen-
tado se construye el ruido en base a la posición y ángulo del transductor en tiempo real,
por ende se recrea el efecto en la dirección correcto, como se puede ver en la Figura
7.2.b.
Capítulo 7: Análisis de resultados del speckle dinámico 71

Figura 7.1: a,c)Dirección de la caída lineal en el método original. c,d)Dirección de la caída


lineal en el método propio.

Figura 7.2: Ruido speckle. a)Método original. b)Método propio. c) Imagen de ultrasonido
real.
Capítulo 7: Análisis de resultados del speckle dinámico 72

7.4. Rendimiento
El segundo aspecto a analizar de los resultados obtenidos es el rendimiento. Lo-
grar mejorar la calidad de la imagen de ultrasonido es fundamental, pero se debe tener en
cuenta el costo computacional que eso conlleva. El método implementado introdujo pro-
cesamiento adicional en la etapa de carga de estructuras. Allí se crearon la matriz de
ruido, el arreglo de caída lineal y el kernel de PSF para la convolución. Luego en el ciclo
de recreación se incorpora la convolución del ruido blanco con el kernel y las fórmulas
para aplicar la caída lineal y el ruido sobre el corte anatómico.

Para evaluar el rendimiento del simulador se realizaron pruebas con el método


original y el propio donde se midieron los siguientes aspectos: tiempo de carga de las
estructuras de datos, tiempo de cómputo requerido para construir una imagen de ultraso-
nido y los cuadros por segundo generados. En la Tabla 7.2 se muestran los valores pro-
medio obtenidos al realizar dichas pruebas.

Tiempo de carga Tiempo de cómpu- Cuadros por se-


(seg) to por imagen (ms) gundo

Método original 8,5 92 10

Método propio 8,6 104 9

Tabla 7.2: Resultados obtenidos utilizando el método original y el propio.

En el tiempo de carga de estructuras del método propio se obtuvo un incremento


de 0,1 segundos con respecto al original, es decir que hubo un 1,18% adicional de tiem-
po de carga. Luego el tiempo de cómputo por imagen aumentó en 12 milisegundos, un
13% más comparado con el original. Ésto impactó directamente en los cuadros por se-
gundo, en donde hubo un decremento de 1 cuadro, es decir, un 10% menos. El decai-
miento de la performance obtenido no se considera significativo si se tiene en cuenta que
se logró una mejora satisfactoria de la calidad visual del ruido speckle. Éste es un efecto
único y distintivo de las imágenes de ultrasonido. Además se debe tener en cuenta que
hasta hace unos años, la recreación de la dispersión y el ruido requería días enteros para
ser producidos y aquí este problema fue resuelto en tiempo real en una computadora
portátil.
Capítulo 7: Análisis de resultados del speckle dinámico 73

Por último, cabe destacar que todo el procesamiento del simulador es realizado
en CPU. Por esta razón los cuadros por segundo resultantes fueron bajos en comparación
al estándar de 30 cps. La implementación en GPU es una solución posible gracias al gran
poder de cómputo y nivel de paralelización que éstas poseen.
74

Capítulo 8: Conclusiones
La modalidad imágenes de ultrasonidos es fundamental para el diagnóstico médi-
co y su uso en la última década ha ido aumentando en gran parte de las ramas de la me-
dicina. Sin embargo, la interpretación de las imágenes de ultrasonido no es una tarea
sencilla. Debido a distintos factores físicos se produce una degradación en la imagen,
por ejemplo, por el ruido tipo speckle, y esto incrementa la dificultad de lectura de la
imagen por parte del usuario. Adicionalmente, el proceso de captura y la configuración
requiere de gran experiencia para ser exitosa. Por ello el entrenamiento en esta modali-
dad es fundamental. Sin embargo no resulta sencillo ya que existen factores limitantes
como el tiempo, la disponibilidad de pacientes o la rareza de los casos. De esta manera
surgen los simuladores de ultrasonido que eliminan la mayor parte de las restricciones
descritas.

La simulación de US es un proceso que se debe ejecutar en tiempo real y debe ser


interactivo con el usuario. Debido a la gran complejidad computacional que esto requie-
re reproducirlo, para mantener un alto grado de interactividad con el usuario se necesita
disminuir la complejidad y mejorar la calidad de simulación. Resulta de gran importan-
cia realizar un balance correcto entre interactividad y calidad. Uno de los fenómenos
más complicados de recrear es el scattering ya que requiere de gran cantidad de cálculos
a comparación del resto. El scattering es la razón por la cual se produce el ruido tipo
speckle, característico de las imágenes de ultrasonido.

En este trabajo se implementaron dos técnicas para la recreación de speckle. La


primera se basa en filtros de pre-procesamiento que son aplicados a un volumen 3D pro-
veniente de un CT. Debido a que este efecto es aplicado en forma de una textura estática
sobre la imagen, los cambios de posición de captura no afectan el resultado y por ende se
pierde realismo. Una segunda técnica fue estudiada e implementada con el objetivo de
mejorar el resultado. Esta se basó en aplicar el patrón de speckle en tiempo de ejecución,
generando que la posición de captura efectivamente modifique su forma. De esta mane-
ra, se logró una mejora en la calidad de la simulación a lo que respecta el ruido speckle
solamente resignando un porcentaje muy bajo de performance del simulador.

Adicionalmente se trabajó en un complemento para ParaView que permitiera


crear filtros personalizados. Estos son empleados para el pre-procesamiento del modelo
de entrada, como fue el filtro de speckle implementado. A partir de la herramienta fue-
ron crearon diversos filtros que eran requeridos por los desarrolladores de SIMECO.
Capítulo 8: Conclusiones 75

Trabajos Futuros
La herramienta para la creación de filtros fue diseñada como una aplicación por
fuera de la plataforma de ParaView, donde luego los filtros son cargados para la genera-
ción de los pipelines de pre-procesamiento. Dentro de ParaView se permite modificar el
código fuente del filtro, pero este no podría ser guardado como permanente. La única
forma que existe hasta el momento es volver a crear el filtro insertando el nuevo código
y cargarlo nuevamente. Para solucionar inconvenientes de esta clase, se podría desarro-
llar la herramienta dentro de la plataforma de ParaView. De esta manera se obtendría un
paquete de software integrado que mejoraría el flujo general de la creación de filtros y
pipelines. Otra alternativa podría ser implementar en la herramienta un sistema de pipe-
lines de filtros y visualización 3D, generando así una propia plataforma.

El uso de Matlab dentro de los filtros produjo inconvenientes al momento de la


ejecución del pre-procesamiento en ParaView, incrementando el tiempo al doble de la
versión original y generando situaciones inesperadas. Por ello es necesario investigar
sobre herramientas alternativas que posean la misma funcionalidad que Matlab y no pro-
duzcan este comportamiento.

Los resultados del desarrollo del algoritmo de generación de speckle en tiempo


real fueron satisfactorios en términos de rendimiento teniendo en cuenta que el procesa-
miento fue realizado solo en CPU. Su implementación en GPU resultaría en una mejora
de performance significativa, por lo que queda como tarea pendiente.

La forma del patrón de ruido speckle depende de parámetros relacionados con el


transductor y con el tejido atravesado por la onda. Si bien las versiones implementadas
en este trabajo contemplan parámetros del transductor, estos no pueden ser cambiados en
tiempo de ejecución. Queda como trabajo futuro agregar en la interfaz gráfica elementos
que le permitan al usuario poder modificar estos parámetros. En cuanto a lo que respecta
al tejido, la técnica utilizada no tiene en cuenta este factor. Resultaría interesante agregar
esta característica dentro del algoritmo de generación de speckle para producir una re-
creación más precisa.
76

Bibliografía
[1] Organización Panamericana de la Salud, “Consulta regional: prioridades para la
salud cardiovascular en las Américas. Mensajes claves para los decisores”,
Ordúñez García P., Campillo Artero C., eds. Washington, D.C.: OPS (2011).
[2] Ferrante D., Linetzky B., Konfino J., King A., Virgolini M., Laspiur S., “En-
cuesta Nacional de Factores de Riesgo 2009: Evolución de la Epidemia de En-
fermedades Crónicas no Transmisibles en Argentina”, Rev Argent Salud
Pública, Vol. 2 – Nº6, pp. 34-41 (2011).
[3] Gosselin R., Spiegel D., Coughlin R., Zirkle L. "Los traumatismos: el problema
sanitario desatendido en los países en desarrollo". Boletín de la Organización
Mundial de la Salud; 87:246-246 (2009).
[4] Ewigman B., Crane J., Fredic D. "Effect of prenatal ultrasound screening on pe-
rinatal outcome". The New England Journal of Medicine. Vol.329 Num.12,
328:821-7 (1993).
[5] Kutter O., Shams R., Navab N., “Visualization and GPU-accelerated simulation
of medical ultrasound from CT images”, Computer Methods and Programs in
Biomedicine 94, 250-266 (2009).
[6] 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).
[7] Gjerald S., Brekken R., Nagelhus T., “Real-time ultrasound simulation for low
cost training simulators”, Medical Imaging 2010: Ultrasonic Imaging, Tomo-
graphy, and Therapy, Proc. of SPIE Vol. 7629, 76290B (2010).
[8] Shams R., Hartley R., Navab N., “Real-Time Simulation of Medical Ultrasound
from CT Images”, Medical Image Computing and Computer-Assisted Interven-
tion – MICCAI 2008, Lecture Notes in Computer Science, Vol. 5242, pp. 734–
741 (2008).
[9] Maul H., Scharf A., Baier P., Wüstemann M. "Ultrasound simulators: experien-
ce with the SonoTrainer and comparative review of others traning systems". Ul-
trasound in obstetrics & gynecology; 24: 581-585 (2004).
[10] Hoskins P., Martin K., Thrush A. "Diagnostic ultrasound : physics and equip-
ment". 2nd ed., Cambridge University Press, ISBN 978-0-521-75710-2 (2010).
[11] Loizou, C., Pattichis, C., "Despeckle filtering algorithms and software for ultra-
sound imaging". Morgan & Claypool Publishers, ISBN: 9781598296211
(2008).
Bibliografía 77

[12] World Health Organization. "Manual of diagnostic ultrasound: volumen 1". 2nd
ed., WHO Library Cataloguing-in-Publication Data, ISBN 978 92 4 154745 1.
[13] Macovski A. "Medical imaging systems". Prentice-Hall information and system
sciences, ISBN 0-13572685-9 (1983).
[14] Burckhardt C. "Speckle in Ultrasound B-Mode Scans". IEEE Transactions on
sonics and ultrasonics, Vol. SU-25, Nº1 (1978).
[15] Wagner R., Stephen S., Sandrik J., Lopez H. "Statistics of Speckle in Ultra-
sound B-Scans". IEEE Transactions on sonics and ultrasonics, Vol.30, Nº3
(1983).
[16] Jeong M., Kwon S. "Tissue stiffness imaging method ussing temporal variation
of ultrasound speckle pattern". IEEE Transactions on ultrasonics, ferroeletrics
and frequency control, Vol.50, Nº4 (2003).
[17] World Health Organization. "Training in diagnostic ultasound: essentials, prin-
ciples and standards: report of a WHO study group". WHO Library Cataloguing
in Publication Data, ISBN 92 4 120875 9 (1998).
[18] Lee K., Kim S., Choi S., Kim J. "Effectiveness of prenatal ultrasonography in
detecting fetal anomalies and perinatal outcome of anomalous fetuses". Yonsei
Medical Journal, Vol.39, Nº4, pp. 372-382 (1998).
[19] Terkamp, C., Kirchner, G., Wedemeyer, J., Dettmer, A. "Simulation of abdo-
men sonography. Evaluation of a new ultrasound simulator.," Ultraschall in der
Medizin; 24: 239-244 (2003).
[20] Salen P., O'Connor R., Passarello B., Pancu D. "Fast education: A comparison
of teaching models for trauma sonography". The Journal of Emergency Medici-
ne, Vol.20, Nº4, pp. 421-425 (2001).
[21] Knudson M., Sisley A. "Training residents using simulation technology: Expe-
rience with ultrasound for trauma". The Journal of Trauma: Injury, Infection,
and Critical Care, Vol.48, Nº4 (2000).
[22] UltraSim. http://www.medsim.com/ultrasim.html.
[23] Jensen J., Svendsen N. " Calculation of pressure fields from arbitrarily shaped,
apodized, and excited ultrasound transducers". IEEE Transactions on ultraso-
nics, ferroeletrics and frequency control, Vol39, Nº2 (1992).
[24] Jensen J., "Field: A program for simulating ultrasound systems," in [10th Nor-
dicbaltic Conference On Biomedical Imaging, Vol. 4, Supplement 1, Part 1],
351-353, Citeseer (1996).
[25] D'Amato J., Lo Vercio L., Rubi P., Vera E., Barbuzza R., Del Frezno M., La-
rrabide I. "Efficient scatter model for simulation of Ultrasound images from
Computed Tomography data". in [11th International Symposium on Medical In-
formation Processing and Analysis (SIPAIM 2015)]. SPIE Vol.9681, 968105
(2015).
[26] 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 Analy-


sis (SIPAIM 2016)]. SPIE Vol. 10160 1016009-1 (2016).
[27] Maurice R., Ohayon J., Frétigny Y., Bertrand M. "Noninvasive vascular elasto-
graphy theorical framework". IEEE Transactions on medical imaging, Vol.23,
Nº2 (2004).
[28] VTK. www.vtk.org.
[29] Kitware. "The VTK User's Guide". 11th Edition. Kitware, Inc. ISBN 978-1-
930934-23-8 (2010).
[30] Hirschmann M., Wagner C., Rasch H., Henckel J. "Standardized volumetric
3D-analysis of SPECT/CT imaging in orthopaedics: overcoming the limitations
of qualitative 2D analysis". BMC Medical Imaging, 12:5 (2012).
[31] Kapur T., Pieper S., Fedorov A., Fillion-Robin J-C. "Increasing the Impact of
Medical Image Computing Using Community-Based Open-Access Hackathons:
the NA-MIC and 3D Slicer Experience". Medical Image Analysis (2016).
[32] VTK Documentation. www.vtk.org/documentation.
[33] VTK Examples. www.vtk.org/Wiki/VTK/Examples.
[34] Schroeder W., Martin K., Loresnen B. "The Visualization Toolkit: An Objetc-
Oriented Approach to 3D Graphics". 4th Edition. Prentice-Hall, Inc. ISBN 1-
930934-19-X (2006).
[35] Matlab. www.mathworks.com/products/matlab.html.
[36] MathWorks. "MATLAB Getting Started Guide". Version 8.4 (R2014b). The-
MathWorks, Inc.
[37] Ayachit U. "The ParaView Guide". Updated for ParaView version 4.3 .Kitware,
Inc. (2015).
[38] Schroeder W., Marin K., Lorensen E. "The Design and Implementation of an
Object-Oriented Toolkit for 3D Graphics and Visualization". Seventh Annual
IEEE Visualization '96. DOI: 10.1109/VISUAL.1996.567752 (1996).
[39] Bürger B., Bettinghausen S., Rädle M., Hesser J. " Real-Time GPU-Based Ul-
trasound Simulation Using Deformable Mesh Models". IEEE Transactions on
medical imaging, Vol.32, Nº3 (2013).
79

Anexo: Tabla de parámetros de filtros


Filtro Nombre Tipo Por defecto Descripción
Dirección donde se encuentra
volume_path string el volumen a cargar
Cargar volumen Nombre que recibe el volu-
volume_name string "DICOMImage" men dentro de la estructura
DICOM
Corrimiento de
offset int "1024" Valor de corrimiento
valores
Prefijo que se le agrega al
Calcular
prefix string "DICOMImage" nombre del volumen gradien-
gradiente te
Selección de modo manual o
mask_value
string "automatic" automático para el valor de
_mode máscara
Aplicar máscara
Valor que se usa como
mask_value int "1" máscara
Establece el valor mínimo del
min int "0" rango
Establece el valor máximo
Normalización max int "255" del rango
Indica si se realiza una ecua-
hist_eq boolean "False" lización del histograma
matlab_exe Dirección donde se encuentra
string el ejecutable de Matlab
_path
Generación matlab_script_p Dirección donde se encuentra
speckle string el script de Matlab
ath
(Matlab) Dirección donde se desea
out_path string alojar las imágenes resultan-
tes
Valor que define la orienta-
Generación orientation int "0" ción del patrón de speckle
speckle
(OpenCV/Numpy) ld_direction int "0" Dirección de la caída lineal

Tabla A.1: Parámetros de filtros implementados con "PV Filter Creator"

Vous aimerez peut-être aussi