desarrollo de herramientas de procesamiento de imágenes

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

Upload: others

Post on 03-Jul-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desarrollo de herramientas de procesamiento de imágenes

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

Page 2: Desarrollo de herramientas de procesamiento de imágenes

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

Page 3: Desarrollo de herramientas de procesamiento de imágenes

Í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

Page 4: Desarrollo de herramientas de procesamiento de imágenes

Í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

Page 5: Desarrollo de herramientas de procesamiento de imágenes

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

Page 6: Desarrollo de herramientas de procesamiento de imágenes

Í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

Page 7: Desarrollo de herramientas de procesamiento de imágenes

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

Page 8: Desarrollo de herramientas de procesamiento de imágenes

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

Page 9: Desarrollo de herramientas de procesamiento de imágenes

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

Page 10: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 11: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 12: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 13: Desarrollo de herramientas de procesamiento de imágenes

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

Page 14: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 15: Desarrollo de herramientas de procesamiento de imágenes

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

Page 16: Desarrollo de herramientas de procesamiento de imágenes

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

Page 17: Desarrollo de herramientas de procesamiento de imágenes

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:

Material z

(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.

Page 18: Desarrollo de herramientas de procesamiento de imágenes

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:

Page 19: Desarrollo de herramientas de procesamiento de imágenes

Capítulo 2: Ultrasonido 19

(2.7)

𝑇𝑖 = 1 − 𝑅𝐴2

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-

Page 20: Desarrollo de herramientas de procesamiento de imágenes

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 𝜃𝑖

sin 𝜃𝑡=

𝑣1

𝑣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

Page 21: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 22: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 23: Desarrollo de herramientas de procesamiento de imágenes

Capítulo 2: Ultrasonido 23

Figura 2.7: Patrón de speckle.

Page 24: Desarrollo de herramientas de procesamiento de imágenes

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-

Page 25: Desarrollo de herramientas de procesamiento de imágenes

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

Page 26: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 27: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 28: Desarrollo de herramientas de procesamiento de imágenes

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 + 𝑧1

2

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.

Page 29: Desarrollo de herramientas de procesamiento de imágenes

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

𝑥−1

𝐼𝑖2 𝑥

𝐼0

𝑟 𝑢, 𝑦 𝑛 𝑢, 𝑦 𝜔 𝑢 𝑑𝑢

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.

Page 30: Desarrollo de herramientas de procesamiento de imágenes

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)

𝑁 𝑥, 𝑦 = 𝐻 𝑥, 𝑦 Ⓧ 𝑍(𝑥, 𝑦)

Page 31: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 32: Desarrollo de herramientas de procesamiento de imágenes

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

Page 33: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 34: Desarrollo de herramientas de procesamiento de imágenes

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

Page 35: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 36: Desarrollo de herramientas de procesamiento de imágenes

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).

Page 37: Desarrollo de herramientas de procesamiento de imágenes

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

Page 38: Desarrollo de herramientas de procesamiento de imágenes

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-

Page 39: Desarrollo de herramientas de procesamiento de imágenes

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

Personalización

Pipeline de

ejecución Todas las etapas Todas las etapas

Sólo

"RequestData"

Parámetros

modificables

por GUI

Si Si Sólo

"OutputType"

Configuración

Compilación

Si, cada vez que se

realiza una modifi-

cación se debe repe-

tir el proceso de

compilación

No No

Parámetros

internos

Manual, gran canti-

dad de parámetros

deben ser configu-

rados para la crea-

ción de la DLL

Manual, gran canti-

dad de parámetros

deben ser configu-

rados para la crea-

ción del XML

Automática,

excepto el

script

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

Page 40: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 41: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 42: Desarrollo de herramientas de procesamiento de imágenes

Capítulo 5: Filtros en ParaView 42

Método Parámetros Descripción

SetNumberOfInputPorts {int

numberOfInputPorts}

Se indica el número de puertos

de entrada que tendrá el filtro

SetScript {const char*}

Se guarda en un atributo interno

el script a ejecutar en la etapa

"RequestData"

SetInformationScript {const char*}

Se guarda en un atributo interno

el script a ejecutar en la etapa

"RequestInformation"

SetUpdateExtentScript {const char*}

Se guarda en un atributo interno

el script a ejecutar en la etapa

"RequestUpdateExtent"

SetParameter

{const char* name, <int |

double | const char*>

value }

Se guarda el nombre y valor de

un parámetro personalizable

SetOutputDataSetType {int} Se indica el tipo de estructura

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.

Page 43: Desarrollo de herramientas de procesamiento de imágenes

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:

Page 44: Desarrollo de herramientas de procesamiento de imágenes

Capítulo 5: Filtros en ParaView 44

Elemento Variable Valor Descripción

Script

name Valor alfanumérico Nombre que recibe el filtro de-

ntro de ParaView

documen-

tation Valor alfanumérico

Descripción de la funcionalidad

del filtro que es visualizada en

la interfaz gráfica de ParaView

Input

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

type

Cualquier nombre de tipo

de variable que pueda ser

reconocido en el intérprete

de Python integrado en

ParaView

Tipo de variable del dato de

entrada

Parameter

name

Valor alfanumérico (debe

ser un nombre de variable

válido en Python y debe

corresponder con el nombre

de alguna variable en el

script)

Nombre correspondiente a una

variable en el script

type

Tipos de variables permiti-

das como parámetro. Valo-

res posibles: int, bool, etc.

Tipo de variable del parámetro

default

Tipo de valor que se co-

rresponda con el de la va-

riable

Valor por default que tiene el

parámetro

documen-

tation Valor alfanumérico

Descripción del parámetro que

es visualizada en la interfaz

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:

Page 45: Desarrollo de herramientas de procesamiento de imágenes

Capítulo 5: Filtros en ParaView 45

Tipo de paráme-

tro Descripción Interfaz Gráfica

int Variable de tipo entero Entrada de texto

double Variable de tipo doble Entrada de texto

string Variable de tipo cadena

de caracteres Entrada de texto

bool Variable de tipo boolea-

na Casilla de verificación

droplist Variable de tipo arreglo

de cadena de caracteres

Lista desplegable de

opciones

Tabla 5.3: Tipos de parámetros.

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

Page 46: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 47: Desarrollo de herramientas de procesamiento de imágenes

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).

Page 48: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 49: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 50: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 51: Desarrollo de herramientas de procesamiento de imágenes

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

Page 52: Desarrollo de herramientas de procesamiento de imágenes

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”.

Page 53: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 54: Desarrollo de herramientas de procesamiento de imágenes

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)

Page 55: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 56: Desarrollo de herramientas de procesamiento de imágenes

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:

Page 57: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 58: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 59: Desarrollo de herramientas de procesamiento de imágenes

Capítulo 5: Filtros en ParaView 59

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

0

5

10

15

20

25

30

35

40

45

50

55

Page 60: Desarrollo de herramientas de procesamiento de imágenes

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-

Page 61: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 62: Desarrollo de herramientas de procesamiento de imágenes

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

Page 63: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 64: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 65: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 66: Desarrollo de herramientas de procesamiento de imágenes

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

Page 67: Desarrollo de herramientas de procesamiento de imágenes

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

Page 68: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 69: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 70: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 71: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 72: Desarrollo de herramientas de procesamiento de imágenes

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

(seg)

Tiempo de cómpu-

to por imagen (ms)

Cuadros por se-

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.

Page 73: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 74: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 75: Desarrollo de herramientas de procesamiento de imágenes

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.

Page 76: Desarrollo de herramientas de procesamiento de imágenes

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).

Page 77: Desarrollo de herramientas de procesamiento de imágenes

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

Page 78: Desarrollo de herramientas de procesamiento de imágenes

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).

Page 79: Desarrollo de herramientas de procesamiento de imágenes

79

Anexo: Tabla de parámetros de filtros

Filtro Nombre Tipo Por defecto Descripción

Cargar volumen

volume_path string

Dirección donde se encuentra

el volumen a cargar

volume_name string "DICOMImage"

Nombre que recibe el volu-

men dentro de la estructura

DICOM

Corrimiento de

valores offset int "1024" Valor de corrimiento

Calcular

gradiente prefix string "DICOMImage"

Prefijo que se le agrega al

nombre del volumen gradien-

te

Aplicar máscara

mask_value

_mode string "automatic"

Selección de modo manual o

automático para el valor de

máscara

mask_value int "1" Valor que se usa como

máscara

Normalización

min int "0" Establece el valor mínimo del

rango

max int "255" Establece el valor máximo

del rango

hist_eq boolean "False" Indica si se realiza una ecua-

lización del histograma

Generación

speckle

(Matlab)

matlab_exe

_path string

Dirección donde se encuentra

el ejecutable de Matlab

matlab_script_p

ath string

Dirección donde se encuentra

el script de Matlab

out_path string

Dirección donde se desea

alojar las imágenes resultan-

tes

Generación

speckle (OpenCV/Numpy)

orientation int "0" Valor que define la orienta-

ción del patrón de speckle

ld_direction int "0" Dirección de la caída lineal

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