Integracin de libreras ITK en MATLAB mediante objetos
Integración de librerías ITK en MATLAB mediante objetos ITK MEX Integración de librerías para del hígado en la segmentación MATLAB mediante procedente. MEX de imágenes CT objetos para de la en entornos multiplataforma segmentación del hígado procedente de imágenes de CT en entornos multiplataforma Julián Gutiérrez Santos
Objetivos del Proyecto �Traducir el código de MATLAB a C++ �Conectar ITK y MATLAB �Instalar Liver. Segm en Ubuntu 64 Bits �Instalar Liver. Segm en Magerit �Conocer el estado actual de la técnica GVA-ELAI-UPM®PFC 0092 -2009 2
Índice 1. 2. 3. 4. 5. 6. 7. Introducción Estado de la técnica Liver. Segm en Ubuntu 64 Bits ITK desde MATLAB Liver. Segm Server C++ Supercomputación Conclusiones GVA-ELAI-UPM®PFC 0092 -2009 3
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 GVA-ELAI-UPM®PFC 0092 -2009 4
2. Estado de la técnica �Adquisición imágenes médicas en 3 D • TAC • RM �Técnicas de segmentación • Detección de fronteras • Clasificación de voxels • Atlas deformables GVA-ELAI-UPM®PFC 0092 -2009 5
Adquisición imágenes médicas TOMOGRAFÍA AXIAL COMPUTARIZADA (TAC) � � Rayos X Radiación ionizante Algo borrosa Barata RESONANCIA MAGNÉTICA (RM) � � Campo magnético No perjudicial Nítida Cara GVA-ELAI-UPM®PFC 0092 -2009 6
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. GVA-ELAI-UPM®PFC 0092 -2009 7
3. Liver. Segm en Ubuntu 64 Bits �Cliente - Servidor • Características �Ubuntu 64 Bits • Ventajas e inconvenientes �CMake �KDevelop �Instalación de Liver. Segm • VTK • FLTK • ITK GVA-ELAI-UPM®PFC 0092 -2009 8
Cliente – Servidor CLIENTE � � 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 SERVIDOR � � 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 GVA-ELAI-UPM®PFC 0092 -2009 9
Ubuntu 64 Bits VENTAJAS � � 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 32 Bits. INCONVENIENTES � � � Baja compatibilidad con drivers y software. Alto costo para obtener funcionalidad total con programas de 32 Bits. Las alternativas de software para 64 Bits, en muchos casos, ofrecen paupérrimos resultados. GVA-ELAI-UPM®PFC 0092 -2009 10
Herramientas utilizadas CMAKE � � Permite gestionar el proceso de construcción de una aplicación independientemente del sistema operativo y compilador elegido CMake. Lists. txt KDEVELOP � � Entorno de desarrollo integrado (IDE) para sistemas Unix Depende del gcc GVA-ELAI-UPM®PFC 0092 -2009 11
Liver. Segm 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 GVA-ELAI-UPM®PFC 0092 -2009 12
4. ITK desde MATLAB �CMake. Lists. txt • Particularidades en objetos MEX �Mex. Function • Entrada • Salida �Depuración ITK-MEX • Windows: Microsoft Visual Studio 2005 • Linux: GDB GVA-ELAI-UPM®PFC 0092 -2009 13
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 GVA-ELAI-UPM®PFC 0092 -2009 14
CMake. Lists. txt �Archivo de configuración de CMake �Particularidades para objetos MEX • Distinciones entre Sistemas Operativos �Win 32, Win 64, Linux 32 y Linux 64 • Librerías de MATLAB �Windows: libmex, libmx y libeng. #Include “mex. h” �Linux: mex, mx y eng • Extensión de las librerías �Linux: *. a y *. so �Windows: *. lib y *. dll GVA-ELAI-UPM®PFC 0092 -2009 15
Mex. Function �Interfaz MATLAB – C++ • Entrada (prhs) • Salida (plhs) GVA-ELAI-UPM®PFC 0092 -2009 16
Paso de parámetros �Entrada • • mx. Get. Scalar mx. Get. Pr mx. Get. Dimensions mx. Array. To. String �Salida ATENCIÓN correspondencia de variables entre MATLAB y C++ • Familia mx. Create. Scalar • Familia mx. Create. Matrix • Familia mx. Create. Array GVA-ELAI-UPM®PFC 0092 -2009 17
5. Liver. Segm Server C++ �Código en MATLAB • Fases �Clases de ITK utilizadas • Clases básicas • Filtros �Liver. Segm Server C++ • Jerarquía GVA-ELAI-UPM®PFC 0092 -2009 18
Código en MATLAB (I) EXPANSIÓN DEL HISTOGRAMA � Normalización del intervalo de valores de la imagen entre cero y uno REDUCCIÓN DE VOLUMEN � Cada dimensión de la imagen es reducida a la mitad GVA-ELAI-UPM®PFC 0092 -2009 19
Código en MATLAB (II) FILTRADO DE DIFUSIÓN ANISOTRÓPICA 3 D � � Filtro no lineal sin parámetros de control Suavizado de la imagen y de sus zonas homogéneas PARÁMETROS ESTADÍSTICOS � Parámetros usados en la umbralización y el post – procesado • media. Gris. Liver: nivel medio de • • gris del hígado min. Sup. Liver: nivel máximo de gris en el hígado. min. Inf. Liver: nivel mínimo de gris en el hígado. medias. CT: nivel medio de gris en cada zona del histograma. std. CT: desviación estándar GVA-ELAI-UPM®PFC 0092 -2009 20
Código en MATLAB (III) DETECCIÓN DE BORDES � � Detector de bordes de Canny Dilatación con máscara 3 x 3 UMBRALIZACIÓN � Umbrales calculados con la media y la desviación superior e inferior GVA-ELAI-UPM®PFC 0092 -2009 21
Código en MATLAB (IV) POST-PROCESADO MORFOLÓGICO � � Refinamiento del borde Búsqueda del objeto mayor CONTORNO ACTIVO EN 3 D � Evolución de una superficie sujeta a las limitaciones de la imagen GVA-ELAI-UPM®PFC 0092 -2009 22
Código en MATLAB (V) REAJUSTE DE TAMAÑO � Redimensionado al tamaño original PUNTUACIONES � � Comparación de la segmentación manual y la automática 0 -100 Resultado 63 GVA-ELAI-UPM®PFC 0092 -2009 23
Clases de ITK utilizadas CLASES BÁSICAS � � � Image. File. Reader Image. Region. Iterator Index Matrix Size FILTROS � � � Binary. Threshold. Image. Filter Canny. Edge. Detection. Image. Filter Cast. Image. Filter Connected. Component. Image. Filter Extract. Image. Filter Import. Image. Filter Not. Image. Filter Or. Image. Filter Relabel. Component. Image. Filter Resample. Image. Filter Rescale. Intensity. Image. Filter Voting. Binary. Hole. Filling. Image. Filter GVA-ELAI-UPM®PFC 0092 -2009 24
Liver. Segm Server C++ Segm. Liver. CT expandir. Histo. CT reduce. Volume 3 D sol. Inicial. CT CA 3 DHig imresize 3 D proc. TVPpar error. Bayes psf. Liver lut 4 D fusion. Umbralizacion alineamiento. Bordes deteccion. Bores nb 3 Dg. Par post. Procesado 25
6. Supercomputación �Supercomputadores • Magerit (UPM) �Utilidades • • Pu. TTY Win. SCP XMing CMake en línea de comandos �Instalación VTK, FLTK, ITK y Liver. Segm GVA-ELAI-UPM®PFC 0092 -2009 26
Supercomputadores �Ordenador con capacidades de cálculo muy superiores a las del resto de equipos de la misma época de fabricación �UPM-Ce. SVi. Ma • Magerit GVA-ELAI-UPM®PFC 0092 -2009 27
Magerit �Clúster de 1204 nodos Blade. Center • 1036 nodos JS 20: 2 núcleos, 2. 2 GHz, 4 GB RAM y 40 GB disco duro 8. 8 GFLOPS • 168 nodos JS 21: 4 núcleos, 2. 3 GHz, 8 GB RAM y 80 GB disco duro 9. 2 GFLOPS �Sistema • • de archivos GPFS /gpfs/projects/. home/A 20 C 01/user Privado /gpfs/projects/A 20 C 01001 Compartido /gpfs/scratch/A 20 C 01001/user Temporal /gpfs/projects/. apps Aplicaciones GVA-ELAI-UPM®PFC 0092 -2009 28
Utilidades �Pu. TTY • Cliente SSH �XMing • Sistema de ventanas X �Win. SCP • Cliente SFTP gráfico que emplea SSH �CMake • En línea de comandos GVA-ELAI-UPM®PFC 0092 -2009 29
Instalación Liver. Segm en Magerit �Directorios • • /gpfs/projects/A 20 C 01001/FLTK-1. 1. 9/bin /gpfs/projects/A 20 C 01001/VTK-5. 2. 0/bin /gpfs/projects/A 20 C 01001/Insight. Toolkit-3. 4. 0/bin /gpfs/projects/A 20 C 01001/Insight. Aplications 3. 4. 0/bin �Campos especiales • CMAKE_INSTALL_PREFIX • ITK_DIR, VTK_DIR, FLTK_DIR GVA-ELAI-UPM®PFC 0092 -2009 30
7. Conclusiones �Resultados �Posibles mejoras GVA-ELAI-UPM®PFC 0092 -2009 31
Resultados �Menor tiempo de ejecución �Mejor resultado �Multiplataforma �Integrado en MATLAB �Integrado en Cliente–Servidor GVA-ELAI-UPM®PFC 0092 -2009 32
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 GVA-ELAI-UPM®PFC 0092 -2009 33
Gracias GVA-ELAI-UPM®PFC 0092 -2009 34
- Slides: 34