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
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.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
Í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
Í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
Í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
Í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
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].
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 tiem-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 Pamane-raView, 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.
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.
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.
Capítulo 1: Introducción 12
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
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].
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
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á investiganteji-do, 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) 𝑧 = 𝜌𝑣
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.
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)
𝐼𝑡 = 𝐼𝑖− 𝐼𝑟
(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).
experi-Capítulo 2: Ultrasonido 20
menta una reducción de la velocidad del sonido al momento de cruzar la interfaz, el ángulo a normal también decrece. La relación entre los ángulos y las velocidades están descriptas por la ley de Snell:
(2.8) sin 𝜃𝑖
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.
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 ultrasoniCuan-do 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.
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.
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 tiem-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 habimoda-lidad y la experiencia del usuario. Por ello se vuelve complicado obtener una segunda opinión en casos cuestionables o sospechosos.
ope-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.
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.
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
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 𝑟 𝑥 𝑛 𝑥
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.
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 decrementanincrementan-do la fuerza de la señal, dependienincrementan-do 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:
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).
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 estrucarquitec-tura 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".
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.
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 daprocesamien-tos
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].
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 filparáme-tros. “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.
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
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 puepue-den 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.
pertene-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
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.
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.
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
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
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.
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.
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
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).
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.