Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porDelfina Socorro Modificado hace 11 años
1
Integración de librerías ITK en MATLAB mediante objetos MEX para la segmentación del hígado procedente de imágenes de CT en entornos multiplataforma Integración de librerías ITK en MATLAB mediante objetos MEX para la segmentación del hígado procedente de imágenes de CT en entornos multiplataforma Buenos días, mi nombre es Julián Gutiérrez y voy a realizar la presentación de mi Proyecto Final de Carrera, cuyo título es “Integración de librerías ITK en MATLAB mediante objetos MEX para la segmentación del hígado procedente de imágenes de CT en entornos multiplataforma” Julián Gutiérrez Santos GVA-ELAI-UPM®PFC
2
Objetivos del Proyecto
Traducir el código de MATLAB a C++ Conectar ITK y MATLAB Instalar LiverSegm en Ubuntu 64Bits Instalar LiverSegm en Magerit Conocer el estado actual de la técnica Los principales objetivos de este proyecto son: Partiendo de una nueva versión del método de segmentación de LiverSegm en MATLAB se trata de obtener un código portable en C++ e incluirlo en una aplicación cliente – servidor. Aprender a conectar ITK con MATLAB mediante objetos MEX para realizar la sustitución progresiva del código. Instalar adecuadamente LiverSegm en Ubuntu 64Bits y en Magerit. Conocer las técnicas de adquisición de imágenes médicas en 3D y los métodos de segmentación. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
3
Índice Introducción Estado de la técnica LiverSegm en Ubuntu 64Bits
ITK desde MATLAB LiverSegm Server C++ Supercomputación Conclusiones El Proyecto se ha dividido en 7 capítulos: En el primer capítulo se describen los objetivos de este proyecto y se realiza una breve descripción del mismo. En el capítulo de estado de la técnica se describe el estado de las técnicas de adquisición de imágenes médicas en tres dimensiones, así como los métodos de segmentación de estas imágenes. En el tercer capítulo se explica cómo instalar LiverSegm en un ordenador con Ubuntu 64Bits. Para ello, se describen los programas utilizados y cómo construir las librerías ITK, VTK y FLTK. El cuarto capítulo muestra cómo trabajar con código C++ dentro de MATLAB mediante objetos MEX, así como la sintaxis de los ficheros CMakeLists. Además se explica cómo depurar el código C++ en ejecución dentro de MATLAB. El quinto capítulo está dedicado a la descripción del código y de la jerarquía de funciones del programa de partida escrito en MATLAB. Además se explican las clases de ITK utilizadas para convertir el código de MATLAB a C++. En el capítulo seis se exponen los pasos necesarios para compilar Liver-Segm en el supercomputador Magerit. En el capítulo Séptimo se pretenden dar a conocer las principales conclusiones del proyecto realizado, así como un resumen de las aportaciones realizadas y una estimación de las futuras mejoras que puedan llevarse a cabo en dicho proyecto. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
4
1. Introducción Imagen médica: Distribución espacial de una o más propiedades físicas o químicas dentro del cuerpo humano. Propósitos: Clínicos: diagnosis Médicos: anatomía Una imagen médica representa la distribución espacial de una o más propiedades físicas o químicas dentro del cuerpo humano. Esta imagen puede tener tanto propósitos clínicos (diagnostico) como médicos (anatomía). En la imagen se muestran los tres tipos de vista más usuales en una imagen médica, el sagital, el coronal y el axial. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
5
2. Estado de la técnica Adquisición imágenes médicas en 3D
TAC RM Técnicas de segmentación Detección de fronteras Clasificación de voxels Atlas deformables En el capítulo 2 se explican dos de los métodos de adquisición de imágenes médicas en 3D: Tomografía Axial Computerizada y Resonancia Magnética. Además, se describen las técnicas actuales de segmentación divididas en 3 métodos: Detección de fronteras, clasificación de voxels y atlas deformables. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
6
Adquisición imágenes médicas
Tomografía Axial Computarizada (tac) Resonancia magnética (RM) Rayos X Radiación ionizante Algo borrosa Barata Campo magnético No perjudicial Nítida Cara Para el caso que nos ocupa, los métodos de adquisición de imágenes médicas en 3D más importantes son el TAC y la RM. El TAC obtiene imágenes en 3D mediante un aparato de rayos X que gira sobre el paciente. Sus mayores inconvenientes son la falta de nitidez y la radiación ionizante, aunque resulta un método de adquisición muy barato. La RM obtiene imágenes en 3D mediante un campo magnético que excita los átomos. Sus mayores ventajas son la nitidez y que es una técnica no invasiva, aunque resulta un método de adquisición muy caro. La diferencia de nitidez entre ambos métodos puede apreciarse en las imágenes mostradas. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
7
Técnicas de segmentación
Detección de fronteras Una curva o superficie evoluciona hacia los bordes del objeto sobre la base de un término de la imagen y otro de regularización. Clasificación de Voxels Cada voxel es clasificado a partir de un modelo de intensidades teniendo en cuenta la homogeneidad y la geometría relativa del tejido. Atlas anatómicos Se obtienen unos modelos de los órganos a partir de imágenes de entrenamiento y se alinean con la imagen de estudio para obtener la segmentación. El problema de la segmentación puede ser formulado en una amplia variedad de formas, dando lugar a un gran número de aproximaciones diferentes al problema: Detección de fronteras: Se suele hacer la suposición de que los altos valores del gradiente son indicio de fronteras, aunque también se emplean otras medidas como las discontinuidades en las texturas. Clasificación de voxels: Estos algoritmos toman decisiones acerca del tejido que hay que asociar a un voxel basándose en factores como la intensidad, la vecindad de voxels y propiedades de la modalidad de la imagen. Atlas anatómicos: Busca hacer corresponder un atlas etiquetado a la imagen que queremos segmentar. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
8
3. LiverSegm en Ubuntu 64Bits
Cliente - Servidor Características Ubuntu 64Bits Ventajas e inconvenientes CMake KDevelop Instalación de LiverSegm VTK FLTK ITK En el capítulo 3 se presenta la arquitectura cliente – servidor, utilizada para LiverSegm Server C++ y se explica el proceso para compilar LiverSegm sobre Ubuntu 64 Bits GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
9
Cliente – Servidor cliente servidor
Papel activo en la comunicación (dispositivo maestro o amo) Espera y recibe las respuestas del servidor Puede conectarse a varios servidores a la vez Interactúa directamente con los usuarios finales Papel pasivo en la comunicación (dispositivo esclavo) Procesa y envía la respuesta Acepta conexiones desde un gran número de clientes No interactúan directamente con los usuarios finales La arquitectura cliente – servidor permite realizar tanto una separación lógica como física del programa. El cliente sólo sirve de interfaz con el usuario por lo que, cuando recibe una petición, la reenvía al servidor para que éste la procese. Una vez ha terminado devuelve el resultado al cliente. Una de las principales ventajas de este sistema es que permite la conexión de varios clientes con el mismo servidor. Una de las ventajas de esta arquitectura es que, independientemente de las capacidades del equipo cliente, el procesamiento se realizará a la velocidad del equipo servidor, normalmente mucho más rápida que un equipo normal. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
10
Ubuntu 64Bits ventajas inconvenientes
Mejor uso de los recursos máquina (procesador, gpu, etc.) Las transferencias de datos son más rápidas. Capacidad de ejecutar múltiples programas de forma eficiente. Para servidores, alcanza mejor rendimiento que un 32Bits. Baja compatibilidad con drivers y software. Alto costo para obtener funcionalidad total con programas de 32Bits. Las alternativas de software para 64Bits, en muchos casos, ofrecen paupérrimos resultados. Las ventajas de usar LiverSegm en Ubuntu 64Bits son: Mejor rendimiento de los recursos de la máquina, como memoria, procesador, etc. Mayor velocidad de transferencia de datos. Posibilidad de ejecutar varios programas a la vez con un alto rendimiento. Mejor rendimiento en el uso para servidores. Por otro lado, existen algunas desventajas que se deben tener en cuenta : Posee una baja compatibilidad con programas de 32Bits y, por lo tanto, con el software y los drivers más comunes. Además, las alternativas de software de 64Bits ofrecen pobres resultados, al ser comparado con software de 32Bits. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
11
Herramientas utilizadas
Cmake kdevelop Permite gestionar el proceso de construcción de una aplicación independientemente del sistema operativo y compilador elegido CMakeLists.txt Entorno de desarrollo integrado (IDE) para sistemas Unix Depende del gcc Las herramientas utilizadas para compilar LiverSegm en Ubuntu 64 Bits son CMake y KDevelop. CMake es un generador de proyectos de compilación multiplataforma, es decir, configura los parámetros de compilación y linkado mediante la información contenida en el archivos CMakeLists.txt independientemente del IDE elegido. KDevelop es un entorno de desarrollo para sistemas Unix que depende del gcc. Posee las mismas características que cualquier suite gráfica, por lo que es muy fácil de usar. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
12
LiverSegm en Ubuntu Instalar VTK, FLTK e ITK
Campos especiales Comprobar que están reconocidos todos los parámetros referidos a las librerías en CMake. VTK_DIR ITK_DIR FLTK_DIR Compilar en KDevelop LiverSegm depende de las ITK para el procesamiento, de las VTK para el renderizado y de las FLTK para el entorno gráfico, por lo que se deben compilar antes que LiverSegm. Es muy importante que todos los parámetros de estas librerías estén bien reconocidos en CMake cuando se configure LiverSegm ya que, de lo contrario, posteriormente pueden surgir problemas. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
13
4. ITK desde MATLAB MATLAB CMakeLists.txt MexFunction
Particularidades en objetos MEX MexFunction Entrada Salida Depuración ITK-MEX Windows: Microsoft Visual Studio 2005 Linux: GDB En el capítulo 4 se muestra cómo crear los objetos MEX para ejecutar código escrito en C++ dentro de MATLAB. Para ello se explica la sintaxis adecuada para configurar CMake, la función que realiza la interfaz entre MATLAB y C++ y la depuración de éste código. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
14
MATLAB Software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M) Lenguaje M: interpretado Lento C/C++: compilado Rápido MATLAB es un software matemático con un IDE integrado con un lenguaje de programación propio (lenguaje M) de muy alto nivel. El lenguaje M es un lenguaje interpretado por lo que teóricamente es más lento que uno compilado, como C++, de ahí la necesidad de traducir éste código a C++ para obtener una mayor rapidez. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
15
CMakeLists.txt Archivo de configuración de CMake
Particularidades para objetos MEX Distinciones entre Sistemas Operativos Win32, Win64, Linux32 y Linux64 Librerías de MATLAB Windows: libmex, libmx y libeng. Linux: mex, mx y eng Extensión de las librerías Linux: *.a y *.so Windows: *.lib y *.dll #Include “mex.h” El archivo CMakeLists.txt contiene la información necesaria para el compilado y linkado del código fuente. En el caso de compilar objetos MEX, existen ciertas particularidades: La extensión del objeto MEX depende del sistema operativo en el que se quiera compilar. Depende de 3 librerías de MATLAB. Las librerías con las que se linka poseen diferente extensión según el sistema operativo. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
16
MexFunction Interfaz MATLAB – C++ Entrada (prhs) Salida (plhs)
La MexFunction realiza la interfaz entre MATLAB y C++ traduciendo los datos de entrada desde MATLAB (prhs) a punteros de C++ y convirtiendo las salidas de la ejecución en parámetros de MATLAB (plhs). Los pasos que se deben realizar en la MexFunction son: Declarar los punteros que se van a usar. Inicializar los mxArray de salida. Obtener los punteros que apunten a las entradas y salidas Llamar a la función escrita en C++ GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
17
correspondencia de variables entre MATLAB y C++
Paso de parámetros Entrada mxGetScalar mxGetPr mxGetDimensions mxArrayToString Salida Familia mxCreateScalar Familia mxCreateMatrix Familia mxCreateArray ATENCIÓN correspondencia de variables entre MATLAB y C++ Para recoger los valores de entrada de un mxArray se usan las funciones: mxGetScalar: obtener un escalar mxGetPr: obtener un puntero al vector de datos mxGetDimensions: obtener las dimensiones de un vector n-dimensional mxArrayToString: obtener una cadena de caracteres Para inicializar las salidas se usan las familias de funciones: Familia mxCreateScalar, inicializar la salida como un escalar Familia mxCreateMatrix, inicializar la salida como una matriz del tamaño indicado Familia mxCreateArray, inicializar la salida como un vector n-dimensional del tamaño indicado. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
18
5. LiverSegm Server C++ Código en MATLAB Clases de ITK utilizadas
Fases Clases de ITK utilizadas Clases básicas Filtros LiverSegm Server C++ Jerarquía En el capítulo 5 se explica el método de segmentación del que se parte en MATLAB. Posteriormente se indican las clases de ITK utilizadas para el procesamiento en C++ y la jerarquía de funciones obtenida en C++ GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
19
Expansión del histograma
Código en MATLAB (I) Expansión del histograma Reducción de volumen Normalización del intervalo de valores de la imagen entre cero y uno Cada dimensión de la imagen es reducida a la mitad La segmentación del hígado empieza con la expansión del histograma entre 0 y 1 para que un mayor número de grises trabajen en la imagen. Posteriormente la imagen es reducida a la mitad en todas las dimensiones para agilizar el procesamiento. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
20
Código en MATLAB (II) Filtrado de difusión anisotrópica 3d
Parámetros estadísticos Filtro no lineal sin parámetros de control Suavizado de la imagen y de sus zonas homogéneas Parámetros usados en la umbralización y el post – procesado mediaGrisLiver: nivel medio de gris del hígado minSupLiver: nivel máximo de gris en el hígado. minInfLiver: nivel mínimo de gris en el hígado. mediasCT: nivel medio de gris en cada zona del histograma. stdCT: desviación estándar La imagen reducida es filtrada por un filtro no lineal sin parámetros de control que homogeniza las zonas del hígado sin difuminar los bordes. Sobre esta imagen se realiza un análisis estadístico que permite obtener ciertos valores de medias y desviaciones que serán utilizados en las siguientes etapas para el procesamiento. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
21
Código en MATLAB (III) Detección de bordes Umbralización
Detector de bordes de Canny Dilatación con máscara 3x3 Umbrales calculados con la media y la desviación superior e inferior A la imagen filtrada se le aplica el detector de bordes de Canny para obtener los bordes de la imagen, éstos bordes se dilatan con una máscara de 3x3. La imagen filtrada es umbralizada con los valores estadísticos obtenidos en las etapas anteriores. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
22
Post-procesado morfológico
Código en MATLAB (IV) Post-procesado morfológico Contorno activo en 3d Refinamiento del borde Búsqueda del objeto mayor Evolución de una superficie sujeta a las limitaciones de la imagen Sobre la imagen umbralizada se realiza el post-procesado morfológico que elimina las imperfecciones de la umbralización y se queda con el objeto más grande de la imagen. En esta etapa se obtiene una solución inicial bastante acertada. Luego se lleva a cabo la evolución de un contorno activo en 3D que refina la solución inicial ajustando el contorno a los límites del hígado. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
23
Código en MATLAB (V) Resultado 63 Reajuste de tamaño puntuaciones
Redimensionado al tamaño original Comparación de la segmentación manual y la automática 0-100 Por último la imagen obtenida tras el contorno activo es redimensionada al doble para devolverla a su tamaño original. Para comprobar la bondad de la segmentación obtenida, se compara con la segmentación manual y devuelve un valor entre 0 y 100 indicando el grado de parecido entre ambas segmentaciones. Resultado 63 GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
24
Clases de ITK utilizadas
Clases básicas filtros Image ImageFileReader ImageRegionIterator Index Matrix Size BinaryThresholdImageFilter CannyEdgeDetectionImageFilter CastImageFilter ConnectedComponentImageFilter ExtractImageFilter ImportImageFilter NotImageFilter OrImageFilter RelabelComponentImageFilter ResampleImageFilter RescaleIntensityImageFilter VotingBinaryHoleFillingImageFilter Las clases de ITK utilizadas para la segmentación del hígado se dividen en dos clases: Básicas: relativas a operaciones comunes con imágenes, como son, leer del disco, recorrer los píxeles, etc… Filtros: realizan algún tipo de procesamiento sobre la imagen. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
25
LiverSegm Server C++ SegmLiverCT expandirHistoCT reduceVolume3D
solInicialCT procTVPpar psfLiver fusionUmbralizacion deteccionBores postProcesado CA3DHig errorBayes lut4D alineamientoBordes nb3DgPar imresize3D Una vez traducido el código a C++, la jerarquía de funciones que se obtiene es la mostrada. Cada una de las funciones indicadas implementa uno de los pasos del procesamiento anteriormente descritos. GVA-ELAI-UPM®PFC
26
6. Supercomputación Supercomputadores Utilidades
Magerit (UPM) Utilidades PuTTY WinSCP XMing CMake en línea de comandos Instalación VTK, FLTK, ITK y LiverSegm En el capítulo 6 del Proyecto se explican los conceptos básicos sobre supercomputación, en concreto, acerca del supercomputador Magerit, sobre el que se ha realizado esta parte del trabajo. Después se explica como compilar LiverSegm en este supercomputador, incluyendo las ITK, VTK y FLTK. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
27
Supercomputadores Ordenador con capacidades de cálculo muy superiores a las del resto de equipos de la misma época de fabricación UPM-CeSViMa Magerit Un supercomputador es un ordenador con capacidades de cálculo muy superiores a los ordenadores de la misma época, ya que no se pueden comparar, por ejemplo, los primeros spectrum a las máquinas actuales. En este caso, se va a trabajar con Magerit, un supercomputador surgido del convenio entre la UPM y el CeSViMa. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
28
Magerit Clúster de 1204 nodos BladeCenter Sistema de archivos GPFS
1036 nodos JS20: 2 núcleos, 2.2GHz, 4GB RAM y 40GB disco duro GFLOPS 168 nodos JS21: 4 núcleos, 2.3GHz, 8GB RAM y 80GB disco duro GFLOPS Sistema de archivos GPFS /gpfs/projects/.home/A20C01/user Privado /gpfs/projects/A20C Compartido /gpfs/scratch/A20C01001/user Temporal /gpfs/projects/.apps Aplicaciones Magerit es un clúster de 1024 nodos BladeCenter de dos tipos: JS20: posee 2 núcleos a 2.2GHz lo que permite alcanzar los 8.8 GFLOPS (1 GFLOP = mil millones de FLOPS) JS21: posee 4 núcleos a 2.3GHz lo que permite alcanzar los 9.2 GFLOPS. El sistema de archivos usado es de IBM, se conoce como General Parallel File System. Los 4 directorios más usados son: Privado: particular para cada usuario del proyecto Compartido: Común para todos los usuarios del proyecto, pero privado para el resto. Temporal: Para almacenar la información durante la ejecución. Aplicaciones: En este directorio se encuentran todas las aplicaciones disponibles. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
29
Utilidades PuTTY XMing WinSCP CMake Cliente SSH Sistema de ventanas X
Cliente SFTP gráfico que emplea SSH CMake En línea de comandos Al tratarse de un equipo a distancia se deben usar los siguientes programas para realizar la conexión y transferencia: PuTTY: Cliente SSH usado para ejecutar comandos sobre Magerit XMing: Sistema de ventanas X para visualizar las aplicaciones gráficas en Magerit WinSCP: Cliente SFTP para realizar las transferencias de archivos. CMake: generador de proyectos de compilación multiplataforma, en este caso se usará en modo línea de comandos. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
30
Instalación LiverSegm en Magerit
Directorios /gpfs/projects/A20C01001/FLTK-1.1.9/bin /gpfs/projects/A20C01001/VTK-5.2.0/bin /gpfs/projects/A20C01001/InsightToolkit /bin /gpfs/projects/A20C01001/InsightAplications /bin Campos especiales CMAKE_INSTALL_PREFIX ITK_DIR, VTK_DIR, FLTK_DIR Antes de compilar LiverSegm en Magerit se debe instalar las ITK, VTK y FLTK. Los campos de configuración en CMake son los mismos que en el caso de Ubuntu 64Bits, ya que Magerit trabaja sobre un sistema operativo basado en Unix. Los únicos campos que se deben modificar son las direcciones de cada librería y el directorio de instalación ya que no se tiene acceso a la ruta predeterminada. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
31
7. Conclusiones Resultados Posibles mejoras GVA-ELAI-UPM®PFC0092-2009
Por último, en el capítulo 7 se exponen los resultados obtenidos y las futuras mejoras que se deberán llevar a cabo. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
32
Resultados Menor tiempo de ejecución Mejor resultado Multiplataforma
Integrado en MATLAB Integrado en Cliente–Servidor Al traducir el código de MATLAB a C++ el tiempo de ejecución se ve reducido, aunque ciertos algoritmos necesitan ser mejorados Los resultados de la segmentación se mejoran respecto a LiverSegm, ya que se incluyen nuevos algoritmos. El código funciona bajo Windows y bajo Linux, tanto en 32 como en 64Bits. Todas las funciones obtenidas se pueden integrar en MATLAB, ya que cada una tiene programada su MexFunction. El código final se ha integrado en una arquitectura cliente – servidor que permite ejecutar el código sobre máquinas lentas sin rechazar a la rapidez de procesamiento. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
33
Posibles mejoras Paralelización de algoritmos
Incluir información de los pulmones Reducir la memoria consumida Integración del algoritmo en equipos de imagen médica Seguimiento semiautomático de lesiones Entre las posibles mejoras para el futuro se deben tener en cuenta: Paralelización de los algoritmos que consumen un mayor tiempo de ejecución. Incluir en la segmentación la información de los pulmones y del corazón para eliminar algunos errores. Disminuir la cantidad de memoria consumida durante la ejecución. Integración del algoritmo en equipos de imagen médica para facilitar la tarea a los radiólogos. Incluir un módulo que permita el seguimiento semiautomático de lesiones hepáticas. GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
34
Gracias Gracias GVA-ELAI-UPM®PFC GVA-ELAI-UPM®PFC
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.