UNIVERSIDAD POLIT ´ ECNICA DE MADRID ESCUELA T ´ ECNICA SUPERIOR DE INGENIER ´ IA Y DISE ˜ NO INDUSTRIAL Grado en Ingenier´ ıa Electr´ onica y Autom´atica Industrial TRABAJO FIN DE GRADO VOLUMETR ´ IA INTRACRANEAL Y DEL HIPOCAMPO DESDE IM ´ AGENES DE RESONANCIA MAGN ´ ETICA USANDO FREESURFER Sandra Rodr´ ıguez Rodrigo Tutor: Carlos Platero Due˜ nas Departamento: Ingenier´ ıa El´ ectrica, Electr´ onica, Autom´ atica y F´ ısica Aplicada Madrid, Septiembre 2015
103
Embed
VOLUMETR IA INTRACRANEAL Y DEL HIPOCAMPO DESDE IMAGENES … · DEL HIPOCAMPO DESDE IMAGENES DE RESONANCIA MAGNETICA USANDO FREESURFER Sandra Rodr guez Rodrigo Tutor: Carlos Platero
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
UNIVERSIDAD POLITECNICA DE MADRID
ESCUELA TECNICA SUPERIOR DE INGENIERIA Y
DISENO INDUSTRIAL
Grado en Ingenierıa Electronica y Automatica Industrial
TRABAJO FIN DE GRADO
VOLUMETRIA INTRACRANEAL YDEL HIPOCAMPO DESDE IMAGENES
DE RESONANCIA MAGNETICAUSANDO FREESURFER
Sandra Rodrıguez Rodrigo
Tutor: Carlos Platero Duenas Departamento: IngenierıaElectrica, Electronica,Automatica y Fısica Aplicada
Madrid, Septiembre 2015
ii
UNIVERSIDAD POLITECNICA DE MADRID
ESCUELA TECNICA SUPERIOR DE INGENIERIA Y
DISENO INDUSTRIAL
Grado en Ingenierıa Electronica y Automatica Industrial
TRABAJO FIN DE GRADO
VOLUMETRIA INTRACRANEAL YDEL HIPOCAMPO DESDE IMAGENES
DE RESONANCIA MAGNETICAUSANDO FREESURFER
Firma Autor
Firma Tutor
ii
iii
Tıtulo: Volumetrıa intracraneal y del hipocampo desde imagenes de resonanciamagnetica usando Freesurfer.Autor: Sandra Rodrıguez RodrigoTutor: Carlos Platero Duenas
EL TRIBUNAL
Presidente:
Vocal:
Secretario:
Realizado el acto de defensa y lectura del Trabajo Fin de Grado el dıa ....... de.................... de ... en .........., en la Escuela Tecnica Superior de Ingenierıa y DisenoIndustrial de la Universidad Politecnica de Madrid, acuerda otorgarle la CALIFI-CACION de:
VOCAL
SECRETARIO PRESIDENTE
iv
Agradecimientos
En primer lugar querıa dar las gracias a mis companeros Jose Marıa Sanz yJuan Manuel Aunon. Por todas esas tardes en la quinta planta, por aquellas risasabriendo nueces como si fueran cerebros y por ayudarme en aquellos momentos dedesesperacion... por todo eso y mas, gracias, sin vosotros no habrıa sido lo mismo.
Tambien nombrar a nuestro tutor Carlos Platero, agradecerle haber podido for-mar parte de este gran proyecto, habernos atendido semanalmente y habernos dadola oportunidad de poder hacer simulacros de presentacion que nos han ayudado amejorar poco a poco y a darnos confianza.
Por otra parte, agradecer a mis padres, a mi hermano, a mis abuelos y a Sergiopor todo el apoyo que me habeis dado diariamente e ilusionaros con cada logro.
Dedicaros a todos vosotros este TFG pero en especial a mi abuelo Adrian quienfallecio hace anos con Alzheimer, gracias por darle en parte un sentido a mis estudios.
Gracias.
v
vi AGRADECIMIENTOS
Resumen
Este proyecto se resume en el tratamiento de imagenes cerebrales T1-MRI queconforman las bases de datos del Proyecto Vallecas y del estudio ADNI. Concreta-mente se realizara la eliminacion de zonas no cerebrales y el etiquetamiento de cadauna de las subregiones cuya finalidad sera la de obtener resultados numericos sobrevolumetrıa intracraneal, hipocampal y de materia gris que ayuden a la deteccionprecoz del Alzheimer. Como principal herramienta se utilizara FreeSurfer, la cualademas se paralelizara debido a su elevado tiempo de ejecucion.
Para el caso de las imagenes del Proyecto Vallecas, se realizara una comparacioncon los resultados obtenidos por el CTB mientras que para el caso de ADNI, setomara el DICE como medida de similitud entre lo realizado por este software y elground truth.
This project could be summarized in the treatment of T1-MRI brain images fromPV database and ADNI study. The extraction of non-brain areas and the labelingof each subregion will be crucial to obtain numerical results about intracranial andhippocampal volume in order to the Alzheimer early detection.
Also, because of the high runtime of the main tool used which is FreeSurfer, itwill be necessary to parallelize it.
For PV images, it will be made a comparison with the CTB’s results while forADNI images, the value of DICE will be taken as a measure of similarity between theaccomplishments of this software and the labels given considered as ground truth.
6.1. Resultados para el sujeto id 036 . . . . . . . . . . . . . . . . . . . . . 39
xv
xvi INDICE DE TABLAS
Capıtulo 1
Introduccion
1.1. Motivacion del proyecto
Tanto las enfermedades neurodegenerativas como ciertos trastornos psiquiatri-cos estan frecuentemente asociados con cambios estructurales en el cerebro. Estoscambios pueden ir desde variaciones en el volumen o en la forma de las regionessubcorticales ası como alteraciones en el espesor o el area del cortex cerebral.
El hipocampo se localiza en la parte interna del lobulo temporal y desempenaprincipalmente funciones importantes en la memoria. Determinar si han existidocambios en el volumen de esta region puede ser crucial para el diagnostico de enfer-medades tales como el Alzheimer o la Esquizofrenia.
La principal motivacion de este proyecto es, por tanto, contribuir en la deteccionprecoz y eficaz del Alzheimer analizando imagenes T1-MRI procedentes de:
Proyecto Vallecas
Con la colaboracion de la Fundacion Reina Sofıa, la Fundacion CIEN y ObraSocial Caja Madrid nace el Proyecto Vallecas. A partir de imagenes de volun-tarios entre 70 y 85 anos evaluados anualmente durante un periodo total de5 anos surge este programa con la intencion de ayudar en la busqueda de undiagnostico preciso y temprano del Alzheimer. Se emplearan concretamente 163imagenes de este proyecto.
ADNI: Alzheimer’s Disease Neuroimaging Initiative
ADNI es una iniciativa que cuenta con imagenes de pacientes de mas de 50anos con la finalidad de crear una gran base de datos relativos al cerebro pa-ra posteriores estudios tales como la segmentacion del hipocampo. De estafuente se trataran 19 imagenes y 126 de ADNI-HHP (elegidas segun el Har-monized Hippocampal Protocol basado en sucesivas votaciones entre expertossobre que puntos deberıan incluirse en esta base) Tambien se realizara el skull-stripped de otras 5 de las 134 totales del ya nombrado estudio ADNI-HHP
1
2 CAPITULO 1. INTRODUCCION
1.2. Objetivos
El objetivo de este proyecto consiste en la implementacion de las tecnicas defusion de etiquetas basadas en el registro no rıgido. Se abarcaran las tecnicas de seg-mentacion de subestructuras corticales desde imagenes T1-MRI cuya segmentacionse basa en el registro de los atlas sobre la imagen del paciente.
Se obtendran los datos de volumetrıa hipocampal, intracraneal y de materia grispara las imagenes de los pacientes del Proyecto Vallecas y ADNI ası como los ficheroscorrespondientes tras proceder con la eliminacion del craneo (skull-stripped) y conel etiquetado de cada uno de ellos.
Tambien se procurara reducir tiempos de ejecucion con la finalidad de podertratar un mayor numero de imagenes.
1.3. Materiales utilizados
Concretamente se ha elegido FreeSurfer como herramienta de trabajo para eltratamiento de imagenes, la version 5.3. Con ella ha sido posible distinguir y estudiarlas diferentes zonas que conforman el cerebro obteniendo ademas los resultados devolumetrıa para cada uno de los pacientes. (En el capıtulo 3 se desarrollara en masprofundidad)
Ademas se han empleado Visual Studio 2008 y Matlab para la realizacion deMEX y este ultimo ademas para paralelizar FreeSurfer. En ocasiones, como visor seha utilizado BrainSuite11 para el caso de las imagenes ADNI.
Tambien cabe destacar el empleo de algunos no tan conocidos como:
1.3.1. PuTTY
Este emulador nos permite introducir una direccion IP y generar una terminaldesde la que poder trabajar como si estuvieramos dentro del propio escritorio de lamaquina remota de la que hemos escrito la direccion.
Para abrir Matlab desde PuTTY es necesario escribir la siguiente lınea de co-mandos:
matlab −nodesktop
Con ello, la terminal pasa a ser la empleada por Matlab y es posible lanzar los scriptsgenerados con los comandos de FreeSurfer y dejarlos ejecutando durante el tiempoque necesiten.
1.3.2. FileZila
Es un cliente multiplataforma de codigo abierto y software libre. FileZilla pro-porciona una interfaz grafica desde la que es posible navegar por las carpetas y verlos contenidos tanto de la maquina remota como la de la local ası como transferir-los. FileZila facilita enormemente emplear PuTTY ya que es posible visualizar eldirectorio en el que se esta trabajando.
1.4. ESTRUCTURA DEL DOCUMENTO 3
1.3.3. Doxygen
Es un generador de documentacion para lenguajes tan conocidos como C++, C oJava. Para ello es necesario configurar la herramienta indicando el directorio dondese encuentra nuestro codigo y de que manera queremos obtener esa documentacion,ya sea HTML o PDF generado con LaTeX.
Ademas, se ha trabajado desde el escritorio remoto Lyapunov con sistema ope-rativo Windows y desde Gauss con Devian. Gracias a ello, ha sido posible conseguirque el programa continuara ejecutandose y tener disponible las herramientas en todomomento.
1.4. Estructura del documento
Este TFG se estructura de la siguiente forma:
En el capıtulo 1 se realiza una introduccion.
En el capıtulo 2 se reflejan las tecnicas utilizadas para llevar a cabo la segmen-tacion del hipocampo desde T1-MRI
En el capıtulo 3 se detalla en que consiste FreeSurfer y como se ha procedidopara el tratamiento de las imagenes.
En el capıtulo 4 se detalla el codigo desarrollado para la experimentacion de lafusion de etiquetas.
En el capıtulo 5 se muestra lo obtenido tras aplicar FreeSurfer tanto para elproyecto PV como para el estudio ADNI.
En el capıtulo 6 se desarrolla una conclusion.
En el apendice A, se adjunta la documentacion del codigo implementado .
En el apendice B, se puede leer el codigo fuente realizado del que se ha docu-mentado.
En el apendice C se adjuntan las tablas excel de los resultados obtenidos.
En el apendice D, se puede encontrar el informe que se redacto al realizar laspracticas ITK, MEX y OpenMP donde ademas se explica cada uno de estosterminos.
4 CAPITULO 1. INTRODUCCION
Capıtulo 2
Estado de la tecnica de lasegmentacion del hipocampodesde T1-MRI.
2.1. Fusion de etiquetas
Dependiendo del tipo de imagen a tratar y de la aplicacion entre otros, la tecnicade segmentacion que se aplicara sera diferente, sin embargo, la mas utilizada sepodrıa considerar la segmentacion basada en atlas.
Un atlas se define como una imagen de la misma naturaleza que la que se quieresegmentar pero con la particularidad de contener tanto la localizacion como la rela-cion espacial entre sus estructuras. [8] La creacion de un atlas suele ser realizada demanera manual aunque tambien es posible obtenerla semi-automaticamente.
Se ha demostrado que emplear multiples atlas mejora la calidad de la segmenta-cion ademas de reducir el error posiblemente existente. Para ello, cada atlas debeser tratado de manera independiente aplicandole su correspondiente transformacionde tal manera que como salida se obtengan diferentes imagenes segmentadas. Lafinalidad de ello es combinarlas, generando una unica segmentacion. Este proceso esdenominado como fusion de etiquetas
A lo largo de este capıtulo, se desarrollaran algunos de los metodos de fusion deetiquetas que hacen esto posible los cuales, segun la literatura, podrıan clasificarseen dos grandes grupos estrategias globales y locales. [1]
Estrategias globales: para estimar la precision de la segmentacion se utilizaun valor de manera global para toda la imagen. Dentro de esta categorıa seencuentran metodos como Majority Voting y Weighted Voting
Estrategias locales: A cada voxel de la imagen se le asigna un valor diferentede manera local. Generalized Local Weighted Voting y STAPLE pertenecen aesta clasificacion.
Para definir el criterio optimo en cuanto a la eleccion del metodo a emplear serıanecesario tener en cuenta el contraste de grises entre cada region en particular consus alrededores (vecinos) [1]
5
6CAPITULO 2. ESTADO DE LA TECNICA DE LA SEGMENTACION DEL HIPOCAMPO DESDE T1-MRI.
2.1.1. Estrategias globales
Estas estrategias asignan a cada segmentacion un valor o peso de manera globalaunque la decision en realidad se toma pıxel a pixel.
Votacion por mayorıa
Mayority voting (MW) es la tecnica mas sencilla y mas utilizada en la segmen-tacion de imagenes medicas. En ella, todas las segmentaciones a fusionar tienenexactamente el mismo peso. Generalmente es usada cuando no hay conocimiento apriori sobre la certeza de cada clasificador. [1]
Con este metodo, a cada voxel se le asigna la etiqueta con la que coinciden variassegmentaciones.
Matematicamente, quedarıa expresado como:
(2.1)
(2.2)
(2.3)
E(x) se concibe como la combinacion de varios clasificadores salida obtenidos.Para la muestra x, E(x) debe ser la clase que maximice la probabilidad de clasifi-car correctamente los voxels de la imagen de tal manera que se obtengan mejoresresultados que utilizando clasificadores de manera individual.
Un clasificador basado en atlas queda definido por un conjunto de atlas y por sustransformaciones de coordenadas. Aplicando una determinada transformacion sobreun conjunto de atlas segmentadas, es posible obtener una segmentacion estimada dela imagen objetivo. Esta estimacion puede ser considerada como una segmentacioncandidata.
Ahondando mas en la expresion, en terminos generales, cuando varias segmenta-ciones candidatas, en este caso k, coinciden en la asignacion de x con la etiqueta iesto se llevara a cabo. Es decir, el resultado sera 1, en caso de no ser ası el resultadosera 0.
2.1. FUSION DE ETIQUETAS 7
Votacion ponderada
Weighted Voting (WV) tiene como particularidad la asignacion de ponderacionesa cada segmentacion de manera global.
Es conmunmente utilizado en reconocimiento de patrones, puesto que permitemaximizar la precision cuando se tienen conocimientos a priori Sin embargo, estoes distinto para el campo de la segmentacion basada en atlas, ya que es muy difıcilsaber la calidad de ellas de antemano por lo que los pesos se asignan teniendo encuenta la similitud entre la imagen registrada y la imagen objetivo segun la siguienteexpresion: [1]
(2.4)
En la que m es la medida de similitud y p es el exponente de ganancia asociado.Si el valor de m no es muy significativo, podrıa ser necesario aumentar el valor de ppara que las diferencias entre los pesos sean relevantes.
Tambien, se ha demostrado que se puede mejorar la precision de la segmenta-cion utilizando estrategias locales calculando para cada pıxel su valor de m en unsubvolumen de la imagen dependiente del pıxel. [8] Se desarrollara mas adelante en(Generalized Local Weighted Voting)
Por otra parte, dentro de este metodo nace una clasificacion mas especıfica te-niendo en cuenta el tipo de algoritmo a implementar y el valor de p a emplear:
(GWV-NCC) Votacion ponderada de forma global basada en el Coeficiente deCorrelacion Normalizado
(GWV-MI) Votacion ponderada de forma global basada en la Informacion Mu-tua o Mutual Information
(GWV-MSD) Votacion ponderada de forma global basada en la Distanciacuadratica media o Mean Square Distance
1. Basada en el Coeficiente de Correlacion Normalizado
Este coeficiente, en ingles Normalized cross-correlation (NCC) aplicado a dosimagenes viene definido por la siguiente expresion: [1]
(2.5)
Es decir, viene dado por el resultado de dividir la covarianza de las dos imagenesentre la multiplicacion de la raız cuadrada de cada una de las varianzas. En este caso,el exponente de ganancia p utilizado sera 4. Sin embargo, si se emplean imagenesdesde IBSR (Internet Brain Segmentation Repository) habra que utilizar 6.
8CAPITULO 2. ESTADO DE LA TECNICA DE LA SEGMENTACION DEL HIPOCAMPO DESDE T1-MRI.
2. Basada en la Informacion Mutua
Mutual Information (MI) El valor de p debe ser mayor que el anterior caso con lafinalidad de ampliar las diferencias entre los pesos por lo que se utilizara 8. Mientrasque para IBSR 4.
Para llevar a cabo su implementacion serıa necesario emplear ITK (Insight Seg-mentation and Registration Toolkit) para adquirir cada imagen y aplicar la corres-pondiente mascara.
3. Basada en la Distancia Cuadratica Media
Mean Square Distance (MSD) En este caso en particular, no serıa necesario utili-zar ningun valor de ganancia porque las diferencias existentes entre las imagenes esya bastante amplia. Por lo que, se decide tener en cuenta la relacion inversa entrela distancia cuadratica media y la imagen superpuesta despues de registrarse con pigual a -1 (Si fuera desde IBSR tambien se utiliza este valor)
Limitaciones de usar Estrategias Globales
Queda comprobado que estas estrategias ofrecen mejores resultados que si se tra-baja con atlas individualmente, sin embargo, tienen algunas limitaciones. Debido aque los pesos estimados son los mismos para todos los voxels de la segmentacion glo-balmente hay casos en los que esto puede afectar negativamente como en el ejemplosiguiente: [1]
Figura 2.1: Ejemplo que demuestra las limitaciones de usar estrategias globales
Se puede comprobar que para el primer caso, la Imagen 1 obtenida concuerda ensu mayorıa con la de origen excepto por uno de los brazos. Esto no ocurre con laImagen 2 cuyo brazo anteriormente descrito se ajusta a la perfeccion, sin embargo,sigue teniendo otros fallos.
Puesto que los pesos se han generado de manera global, esto no se podrıa apro-vechar. Si se hiciera de manera local se podrıa solucionar consiguiendo una mayorprecision en la segmentacion.
2.1. FUSION DE ETIQUETAS 9
2.1.2. Estrategias locales
En lugar de asignar a todos los voxel de la segmentacion el mismo peso, cada unode ellos pueden tener diferentes valores.
Votacion ponderada generalizada de manera local
Generalized Local Weighted Voting es similar al metodo WV pero con la particu-laridad de utilizar medidas de similitud locales.
Es decir, m, a diferencia de las estrategias globales, depende de dos parametrosque son la forma o shape s y el radio r de tal manera que su expresion queda de laforma [1]
(2.6)
Es decir, se calcula para cada pıxel la medida de similitud en un subvolumen dela imagen dependiente del pıxel.
Con la asignacion de un peso diferente para cada voxel, se aumenta el numero degrados de libertad del problema. Por lo que, surge la necesidad de buscar la formade asegurar que la variacion entre los pesos asignados es suave con el fin de evitarque la imagen pueda tener ruido.
Esto se podrıa solucionar aumentando el valor del radio aunque con ello los pesosno serıan tan locales y el resultado podrıa ser peor.
Por otra parte, para evitar la carga que puede suponer el asignar un peso acada voxel de manera particular, a nivel de compilacion, en ocasiones se le asignadirectamente la etiqueta si todas las segmentaciones candidatas coinciden en ellosin tener en cuenta los pesos. En otras palabras, se tendrıa en cuenta el metodo devotacion por mayorıa para conseguir ahorrar tiempos de compilacion entre otros.
Al igual que en el caso de la votacion ponderada de manera global, tambien sepuede distinguir entre:
(LWV-NCC) Votacion ponderada de forma local basada en el Coeficiente deCorrelacion Normalizado
(LWV-MI) Votacion ponderada de forma local basada en la Informacion Mutuao Mutual Information
(LWV-MSD) Votacion ponderada de forma local basada en la Distancia cuadrati-ca media o Mean Square Distance
10CAPITULO 2. ESTADO DE LA TECNICA DE LA SEGMENTACION DEL HIPOCAMPO DESDE T1-MRI.
1. Basada en el Coeficiente de Correlacion Normalizado
Al igual que en GWV-NCC se emplea el coeficiente de correlacion normalizadoexcepto porque en este caso se define en una region cuadrada alrededor de cada pıxelcon r igual a 10. Ademas, la ganancia p tendra un valor de 5 siendo por otra partede 2 en el caso de utilizar imagenes de IBSR.
2. Basada en la Informacion Mutua
En esta ocasion se define de manera normalizada la ecuacion a utilizar para llevara cabo mutual information: [1]
(2.7)
Donde NMI surge como resultado de dividir la suma de entropıas para las image-nes 1 y 2 entre la entropıa conjunta de las dos. La entropıa de una imagen se calculadesde su histograma h(x) a partir de la siguiente expresion: [1]
(2.8)
En la cual N representa el numero de intervalos del histograma, xi es el centroidedel intervalo correspondiente al numero i La medida de similitud se realiza sobreuna region cuadrada en 2-D de radio isotropico 15 con p igual a 8. (Sera igual paraIBSR)
3. Basada en la Distancia Cuadratica Media
La medida de similitud se concibe como la distancia cuadratica media en unaregion cuadrada alrededor del voxel de interes de tamano 10 en cada dimension.Con p igual a -6 se pretende tener en cuenta la relacion inversa entre la distancia ysimilitud existentes entre las imagenes. En caso de utilizar IBSR este valor es de -1.
2.1. FUSION DE ETIQUETAS 11
STAPLE
STAPLE (Simultaneous Truth and Performance Level Estimation) es una estrate-gia de fusion por votacion ponderada que se estima mediante un algoritmo iterativode maxima expectacion (EM) [8]
Este metodo calcula una estimacion probabilıstica de la verdadera segmentaciony mide el nivel de eficiencia o calidad que representa cada segmentacion elegida.
Existen tres implementaciones diferentes. [1]Warfield y Rohlfing et al. [9] se basan en numeros binarios para ello de tal manera
que para cada voxel, la estructura de interes queda registrada como present con elnumero 1 y absent con el 0. Ademas, presentaron dos generalizaciones de este metodopara trabajos en los que se utiliza multilabels
STAPLE trata la fusion de etiquetas como un problema de maximizacion de pro-babilidades y lo resuelve usando EM. Este algoritmo procede realizando estimacionesde manera iterativa y maximizando la funcion de probabilidad.
Breve comparativa
Diversos estudios concluyen en que las estrategias locales son mejores en zonas quepresentan alto contraste con respecto a su alrededor, mientras que por el contrariolas globales deberıan aplicarse a regiones que presentan intensidades similares. [1]Debido a esto, es facil plantearse lo beneficioso que serıa aplicar estrategias localesen estructuras con alto contraste en los bordes por lo que a la hora de decidir cualmetodo usar, podrıa ser un buen punto de partida.
Por otra parte, tanto MV como STAPLE no utilizan la informacion que propor-ciona la imagen de origen (target image) como hacen otros metodos como WV, sinoque se centran en los atlas. Por lo que, dependiendo de los recursos de los que separta esto tambien podrıa tenerse en cuenta.
Tambien cabrıa destacar la rapidez con la que el metodo de Votacion por mayorıaopera con respecto al resto (Se desarrollara mas en el Capıtulo 4)
En conclusion, en realidad no se puede determinar cual es el optimo para todoslos casos ya que ningun metodo es mejor que otro siempre sino que depende de lasregiones que se traten y de las imagenes.
12CAPITULO 2. ESTADO DE LA TECNICA DE LA SEGMENTACION DEL HIPOCAMPO DESDE T1-MRI.
2.2. Skull-stripped
2.2.1. Introduccion
La total extraccion del cerebro o skull-stripped se refiere al proceso de separar elcerebro (materia gris (GM) y materia blanca (WM)) de lo que no lo es (como porejemplo el craneo o la dura madre) [6]
Este proceso es de suma importancia a la hora de analizar las imagenes delcerebro ya que dependiendo de ello los resultados obtenidos pueden tener grandesvariaciones.
Dependiendo de la aplicacion, se incluira o no el fluido cerebroespinal o CSFEn nuestro caso, para el calculo del ICV (volumen intracraneal) se ha decidido notenerlo en cuenta y dejarlo como la suma de GM mas WM
Se puede llevar a cabo de manera manual, semi-automatica o automatica. Eneste trabajo se ha procedido de manera automatica, concretamente usando HWA enFreesurfer (Capıtulo 5)
A continuacion se hara una breve explicacion de cada uno de ellos.
Semi-automatica
En este caso, para realizar la extraccion del cerebro se seleccionan de formamanual dos umbrales de intensidad con el fin de diferenciar los voxel pertenecientesal cerebro (generar unos lımites) y hacer una primera separacion. Para recuperaraquellas zonas de cerebro que no han podido no tenerse en cuenta, se aplica undeterminado coeficiente de dilatacion y se edita la segmentacion tambien de maneramanual. Como se puede comprobar, para ello es necesario la experiencia de unapersona cualificada que ademas dedique mucho tiempo en ello, por lo que es mascomun hacerlo de manera automatica.
Automatica
Existen cuatro formas que hacen posible el skull-stripping: [6]
(BET) Brain Extraction Tool en FMRIB Software Library: estima los valoresde intensidad mınima y maxima de la imagen y genera un modelo deformablepara adaptarse a la superficie del cerebro que ademas tiene en cuenta el centrode gravedad. [5]
(BSE) Brain Surface Extractor en BrainSuite: utiliza un operador en dos di-mensiones para detectar los bordes del cerebro despues de aplicar un filtro dedifusion anisotropica.
(MAPS) Multi-Atlas Propagation and Segmentation: sigue tres pasos para llevara cabo la extraccion del cerebro:
1. Seleccion de la plantilla: registro afın de la imagen origen con la imagende referencia elegida (de las plantillas). Ademas se calcula el coeficiente decorrelacion entre ambas imagenes como criterio para saber si es buena laseleccion.
2.3. SEGMENTACION 13
2. Propagacion de etiquetas: los atlas que mejor se adapten se registran con laimagen de origen utilizando registro no rıgido. Ademas se calculan valoresde umbralizacion y se procede con la dilatacion de los voxels.
3. Fusion de etiquetas: se aplican los metodos de fusion de etiquetas desarro-llados en este capıtulo.
(HWA) Hybrid Watershed Algorithm en Freesurfer: combina algoritmos waters-hed y modelos deformables. Este algoritmo proporciona una estimacion inicialrobusta del volumen del cerebro gracias a la cual se puede establecer un modeloque se adapte a la superficie del cerebro. Ademas, se utiliza un atlas estadısticopara validar y corregir la extraccion.
2.3. Segmentacion
La segmentacion automatica de las estructuras subcorticales del cerebro juega unpapel muy importante en la medicina.
En numerosas enfermedades neurodegenerativas y psiquiatricas como la esquizo-frenia, epilepsia o el Alzheimer, se han observado cambios en la volumetrıa y formadel hipocampo.
Poder determinar estos parametros, es por tanto, crucial para el diagnostico.
Sin embargo, realizar una segmentacion del hipocampo que sea totalmente acer-tada es una tarea especialmente difıcil, concretamente en imagenes T1-MRI. Esto esdebido a que los bordes del hipocampo no estan siempre totalmente definidos y a lacalidad de la imagen. En ocasiones, es facil confundir las zonas proximas a la cabezay a la cola del hipocampo con otras zonas como la amıgdala y el pulvinar [8] [4]
Por lo que, surgen diversos protocolos de definicion del hipocampo y de las es-tructuras que se consideran en su segmentacion.
Como ya se ha mencionado con anterioridad y al igual que en el caso del skull-stripped, la segmentacion se puede realizar de manera manual o automatica. Laprimera de ellas, a pesar de ofrecer buenos resultados, es mucho mas tediosa ysupone un mayor numero de tiempo.
Se prefiere por tanto, la utilizacion de algoritmos como por ejemplo los mencio-nados en fusion de etiquetas.
Con la finalidad de comparar las segmentaciones del hipocampo realizadas ydeterminar la que mejor pueda acercarse a la realidad, es necesario definir algunosconceptos importantes como:
2.3.1. DICE
DICE o similarity index (SI) es la medida mas utilizada para evaluar la actuacionde los algoritmos de segmentacion. El fundamento de este ındice se basa en compararlas similitudes existentes entre dos imagenes, matematicamente se define como: [1]
(2.9)
14CAPITULO 2. ESTADO DE LA TECNICA DE LA SEGMENTACION DEL HIPOCAMPO DESDE T1-MRI.
Donde A y B indican el numero de voxels de la correspondiente segmentacion.Su valor varıa de 0 a 1. En el caso de ser 0, esto indica que no existe ninguna
similitud entre los voxels de ambas imagenes, lo contrario ocurre si es 1.
Este ındice se empleara en el Capıtulo 5 en las imagenes de ADNI para comprobarel nivel de exactitud que FreeSurfer proporciona en cuanto al etiquetamiento delhipocampo.
2.3.2. Volumetrıa
El calculo de la volumetrıa no es en sı una medida aunque es de gran utilidad enel diagnostico del Alzheimer.
Para ello, basta con contar el numero de voxeles que consta el hipocampo y mul-tiplicar por el tamano del voxel (spacing) de la segmentacion. El numero sera menorconforme mas atrofiado este aunque suele rondar las cifras 2000-4000. Obtener unvalor de volumetrıa del hipocampo muy superior a este numero o ınfimo puede sertambien de gran ayuda para determinar si la segmentacion realizada es incorrecta.
En este TFG, se calculara tanto la volumetrıa de ambos hipocampos, de materiagris e ICV para las imagenes ADNI y de PV con FreeSurfer.
2.3.3. Tecnica empleada en Freesurfer
A continuacion se explica brevemente algunas de las funciones que FreeSurferemplea en la segmentacion de regiones.
Tanto el etiquetado de zonas corticales y subcorticales realizadas por FreeSurferemplean el mismo algoritmo. La segmentacion final se basa en un atlas probabilısticoy de ciertos valores de medida.
En primer lugar, se construye un atlas a partir de un conjunto de sujetos sobrelos que se ha realizado un etiquetado manual.
A continuacion, esas etiquetas se llevan a un espacio comun en el que correspon-den voxel a voxel todos los sujetos (espacio Talairach) (1)
FreeSurfer emplea una funcion que determina de forma probabilıstica la etiquetade un determinado punto teniendo en cuenta la asignada a sus vecinos.
Ademas de esta funcion, utiliza la denominada PDF (probability distribution fun-ction) la cual se modela como una distribucion normal. Esta funcion calcula la mediay la varianza para cada etiqueta en cada punto en el espacio segun el valor medidode intensidad en el voxel. [3]
FreeSurfer emplea un gran tiempo en realizar todo ello en la segmentacion deimagenes, por lo que, como se vera mas adelante, sera necesario paralelizar el proceso.
Por otra parte, relacionandolo con la fusion de etiquetas, cabe mencionar quesegun Nestor et al. [7] se ha demostrado que los metodos basados en multi-atlasproporcionan una mayor exactitud que FreeSurfer por lo que podrıa ser bueno tenerloen cuenta en futuros estudios.
Freesurfer es un software de codigo abierto para el procesamiento y analisis deimagenes de resonancia magnetica MRI del cerebro humano. Es muy util para tareascomo skull-stripping o cortical and subcortical segmentations entre muchas otras mas.
3.1. Introduccion
Para la instalacion de FreeSurfer, para este caso la version 5.3 , se necesita previa-mente tener VirtualBox como administrador de maquinas virtuales en el ordenador.Posteriormente, se pueden seguir dos metodos:
1. Instalar Linux como Sistema Operativo en VirtualBox y posteriormente Free-Surfer.
2. Instalar directamente FreeSurfer como imagen virtual en VirtualBox (Con Li-nux tambien como S.O.)
En ambos casos, el enlace para ello serıa el siguiente: http://freesurfer.net/
fswiki/Download
Nota: Se recomienda optar por el segundo metodo por su comodidad.
Primera opcion
Para este caso sera necesario escribir las siguientes indicaciones en la terminalcada vez que se quiera iniciar FreeSurfer:
export FREESURFER HOME=<f r e e s u r f e r i n s t a l l a t i o n d i r e c t o r y >/ f r e e s u r f e rexport SUBJECTS DIR=<work ing d i r ec to ry >/datasource $FREESURFER HOME/ SetUpFreeSurfer . sh
La segunda lınea serıa opcional, ya que se podrıa trabajar directamente en eldirectorio que ofrece FreeSurfer, pero por comodidad se recomienda cambiarlo.
Tambien es posible configurarlo en tcsh ejecutando:
chsh −s / bin / tcshsetenv FREESURFER HOME < f r e e s u r f e r i n s t a l l a t i o n d i r e c t o r y >/ f r e e s u r f e rsetenv SUBJECTS DIR <work ing d i r ec to ry >/datasource $FREESURFER HOME/ SetUpFreeSurfer . csh
Para este segundo caso, se recomienda asignar a la maquina virtual una memoriade aproximadamente 1 GB para su correcto funcionamiento y usar como disco durovirtual el archivo proporcionado por la pagina web.
Para comprobar que la instalacion ha sido correcta, al abrir la terminal deberanaparecer las siguientes lıneas de comando:
Se t t i ng up environment f o r FreeSur f e r /FS−FAST ( and FSL)FREESURFER HOME / usr / l o c a l / f r e e s u r f e rFSFAST HOME / usr / l o c a l / f r e e s u r f e r / f s f a s tFSF OUTPUT FORMAT n i iSUBJECTS DIR / usr / l o c a l / f r e e s u r f e r / s u b j e c t sMNI DIR / usr / l o c a l / f r e e s u r f e r /mni
3.2. Skull-stripped
Hybrid Watershed Algorithm (HWA) es el metodo que se llevara a cabo a lo largode este trabajo para analizar las imagenes dadas del Proyecto Vallecas.
Antes de aplicarlo es necesario tener una imagen base ya segmentada del craneocon la que trabajar (la denominada brainmask.mgz) Para ello es necesario escribir:
recon−a l l −sub j i d / su b j e c t −autorecon1
El anteriormente mencionado algoritmo watershed es utilizado con la finalidad deestablecer un lımite entre el craneo y el cerebro. Sus lıneas de comando en Freesurferson las siguientes:
recon−a l l − s k u l l s t r i p −wsthresh <h> −c lean−bm −sub j i d <s ub j e c t name>
Donde h es remplazada por un determinado valor. Si tras hacer skull stripping partedel cerebro se ha eliminado, sera necesario que este valor sea superior a 25. Por elcontrario, en el caso de que haya quedado parte sin eliminar, debera ser menor que25.
Por otra parte, tambien se podrıa anadir -no-wsgcaatlas (siendo wsgcaatlas: withskull gaussian classifier array atlas) en el caso de que se eliminara demasiado cerebro.
Dentro de mri watershed se pueden encontrar todas estas palabras clave y otrasmas tambien utiles a la hora de realizar la extraccion del cerebro.
Segun Leung et al. [6] el mejor parametro serıa -less con el que se obtiene mayorvalor de Jaccard index, usado para medir la similitud de superposicion entre dossegmentaciones.
mri watershed − l e s s T1 . mgz bra in . mgz
Siendo T1.mgz la imagen de entrada y brain.mgz la de salida. El tiempo que estaoperacion tarda en llevarse a cabo es de aproximadamente 1 minuto por imagen.Los resultados obtenidos al aplicarlo fueron muy beneficiosos consiguiendo mejorarla extraccion sin tener que probar con distintos valores de h como ocurre con el casoanteriormente mencionado.
3.3. ICV 17
3.3. ICV
Intracranial volume (ICV) se define como la suma de materia gris (GM) y materiablanca (WM). Debido a que la incorporacion de CFS en esta adicion produce errores,se decide no tenerlo en cuenta a la hora de su calculo.
Freesurfer permite obtener este valor ası como realizar su correccion (util en casosen los que la estructura se escala con el tamano de la cabeza)
Con el uso de recon-all se llama automaticamente a mri-segstats generando el de-nominado eTIV: estimed Total Intracranial Volume (ICV) el cual se puede encontraren el archivo aseg.stats:
#Measure IntraCran ia lVo l , ICV , I n t r a c r a n i a l Volume , 2053447.999698 ,mmˆ3
Esto queda recogido en el denominado Protocolo ENIGMA el cual ofrece doscaminos a seguir para su correcta estimacion:
1. A partir del archivo aseg.stats
Tal y como se ha adelantado anteriormente, aseg.stats se define como un archivode texto que contiene los volumenes de estructuras especıficas.
Estos valores pueden extraerse usando:
cat aseg . s t a t s | grep Int raCran ia lVo l | awk −F, ’{ pr in t $4 } ’cat aseg . s t a t s | grep BrainSegVolNotVent | awk −F, ’{ pr in t $4 } ’
Por comodidad, se guardan en forma de tabla en un archivo .txt y se escribe losiguiente:
echo ” sub j id , IntraCran ia lVol , BrainSegVolNotVent” > g l o b a l s i z e F S . csvf o r s u b j i d in ‘ cat l i s t s u b j e c t s . txt ‘ ; doecho −n ”${ s u b j i d } ,” >> g l o b a l s i z e F S . csvecho −n ” ‘ cat ${SUBJECTS DIR}/${ s u b j i d }/ s t a t s / aseg . s t a t s | grep Int raCran ia lVo l |
awk −F, ’{ pr in t $4 } ’ | sed ’ s /\ //g ’ ‘ , ” >> g l o b a l s i z e F S . csvecho ” ‘ cat ${SUBJECTS DIR}/${ s u b j i d }/ s t a t s / aseg . s t a t s | grep BrainSegVolNotVent |
awk −F, ’{ pr in t $4 } ’ | sed ’ s /\ //g ’ ‘ ” >> g l o b a l s i z e F S . csvdone
2. Sin el archivo aseg.stats
En primer lugar, se aplica -autorecon1 tal y como se ha descrito en skull-stripped.Para este caso, no se necesitara el archivo aseg.stats de tal manera que los valoresse obtendran de talairach.xfm
Usando el comando xfm2det, el cual puede descargarse en este (link), se generauna tabla con esos valores de ICV y a continuacion se escriben las siguientes lıneasde codigo:
echo ” sub j id , In t raCran ia lVo l ” > i n t r a c r a n i a l v o l . csvf o r s u b j i d in ‘ cat l i s t s u b j e c t s . txt ‘ ; doecho ”${ s u b j i d } , ‘ xfm2det ${SUBJECTS DIR}/${ s u b j i d }/ mri/ t rans forms / t a l a i r a c h . xfm |
awk ’{ pr in t $2 } ’ ‘ ” >> i n t r a c r a n i a l v o l . csvdone
Para este TFG se ha seguido la primera opcion cuyo valor tambien puede leerseimpreso por pantalla tras generarse el correspondiente skull-stripped de la imagen atratar.
Determinar el volumen del hipocampo supone un biomarcador de gran impor-tancia para poder detectar los primeros indicios de Alzheimer. Su atrofia se producede forma progresiva, siendo mas agresiva por lo general en el lado derecho que en elizquierdo.
Para poder obtener este valor en FreeSurfer es necesario previamente haber obte-nido la imagen aseg.mgz con las etiquetas correspondientes a cada zona del cerebro.Para ello es necesario aplicar:
recon−a l l −sub j i d / su b j e c t −autorecon2
Tras su ejecucion se produce el error de que el archivo ribbon.mgz no se ha creado.Este problema es algo que FreeSurfer no ha conseguido solventar completamentehasta el momento, por lo que, tras hacer una busqueda sobre una posible solucionen diversos foros, se decide generar el denominado ribbon.mgz escribiendo:
mris volmask −− l a b e l l e f t w h i t e 2 −− l a b e l l e f t r i b b o n 3 −− l a b e l r i g h t w h i t e 41 −−l a b e l r i g h t r i b b o n 42 −−save r ibbon −−s a v e d i s t a n c e / s ub j e c t
Este archivo es de gran importancia para el calculo de la volumetrıa de la materiagris ya que es el que contiene las etiquetas correspondientes a la materia blanca ygris.
Volviendo al calculo de la volumetria hipocampal, la lınea de comandos encargadade ello serıa:
mri labe l vo lume −eTIV \$ s d i r / t rans forms / t a l a i r a c h . xfm 1948 \$ s d i r / aseg . mgz 17 53
Con ello, se especifica la transformacion a usar (talairach) ademas de ofrecer comosalida el numero de voxels de cada hipocampo indicado con las etiquetas 17 para elizquierdo y 53 para el derecho.
3.5. Volumetrıa Materia Gris
Tras solventar el problema descrito en el punto anterior, el valor de volumetrıapara este caso es posible localizarlo en aseg.stats:
Los ficheros generados por FreeSurfer no se encuentran en el espacio nativo, porlo que es necesario ejecutar en caso de:
Volumenes:
mr i vo l 2vo l −−mov bra in . mgz −−targ rawavg . mgz −−regheader −−o brain−in−rawavg .mgz −−no−save−reg
Segmentaciones:
m r i l a b e l 2 v o l −−seg aseg . mgz −−temp rawavg . mgz −−o aseg−in−rawavg . mgz −−regheader aseg . mgz
Desglosando los comandos a emplear:
brain.mgz y aseg.mgz : ficheros de skull-stripping y etiquetamiento respectivamen-te. Ambos generados por FreeSurfer con spacing 1mm3 y de dimension 256x256x256y que por tanto queremos obtener en el espacio nativo.
rawavg.mgz : fichero que conserva el dimensionamiento de la imagen de origen yque se emplea como plantilla.
brain-in-rawavg.mgz y aseg-in-rawavg.mgz : skull-stripping y etiquetamiento ya enespacio nativo. A partir de ellos se calcularan los valores de volumetrıa anteriormentemencionados.
20 CAPITULO 3. FREESURFER
3.7. Diagrama
A continuacion se expone el diagrama explicativo del proceso en conjunto parael tratamiento de imagenes empleando FreeSurfer.
Figura 3.1: Diagrama explicativo de FreeSurfer
Sin embargo, se decide realizar uno propio que resuma el anterior y refleje laslıneas mencionadas a lo largo de este capıtulo
3.7. DIAGRAMA 21
Figura 3.2: Diagrama esquematico de FreeSurfer
Es muy importante tener en cuenta que FreeSurfer trabaja con formatos .mgz,por lo que, antes de realizar cualquier proceso es necesario que nuestras imagenestengan este formato.
Puesto que las proporcionadas tenıan formato .nii.gz fue necesario aplicar, tal ycomo indica el diagrama, mri convert de la siguiente forma:
mri\ conve r t − i t n i i id \ 001 . n i i . gz −ot mgz 001 .mgz
Tambien, tal y como se ha mencionado anteriormente, tanto los archivos de skull-stripped como de segmentacion generados por FreeSurfer no estan en el espacio na-tivo. Por lo que, siguiendo el esquema, serıa necesario ademas realizar esta transfor-macion sobre aseg.mgz, brainmask.mgz y ribbon.mgz segun lo explicado en la pagina19 antes de anotar los resultados numericos.
Debido al elevado tiempo que FreeSurfer emplea en tratar las imagenes, se escribeun script en Matlab con los comandos necesarios aplicando ademas una paraleli-zacion de 8 workers. Este script se lanza desde PuTTY tal y como se explico en elprimer capıtulo obteniendo muy buenos resultados en cuanto a mejora de tiemposde ejecucion.
22 CAPITULO 3. FREESURFER
Capıtulo 4
Experimentacion con Fusion deetiquetas
4.1. Votacion por mayorıa
Como experimentacion de este punto se implemento en C++ la funcion MajorityVoting
Tras su compilacion en este lenguaje se genero la determinada ”MEX”tanto enRelease como en Debug, gracias a la cual es posible que la determinada funcion seejecute con solo ser llamada dentro de Matlab.
Los scripts de partida con los que se llevo a cabo la experimentacion se puedenencuentran desarrollados en la siguiente referencia: [2], concretamente siguiendo elsiguiente (link)
Para el caso de votacion por mayorıa:
1 f unc t i on auto seg=major i tyVot ing ( at lasesToTarget )2 auto seg=s i n g l e ( at lasesToTarget (1 ) . l abe l >0) ;3 f ixnumAtlases=numel ( at lasesToTarget ) ;4 i f ( f ixnumAtlases >1)5 f o r i =2: f ixnumAtlases6 auto seg=auto seg+s i n g l e ( at lasesToTarget ( i ) . l abe l >0) ;7 end8 end9 auto seg = auto seg / f ixnumAtlases ;
10 end
Entre los elementos que la definen cabe destacar:
atlasesToTarget: (input) lista de los atlas registrados. Se concibe como unaestructura 1x5 formada por dos matrices tridimensionales: imIn y label
• imIn Imagen de entrada (48x39x50 int 56)
• label Etiqueta (48x39x50 logical)
auto seg: (output) segmentacion obtenida tras aplicar el metodo de majorityvoting (48x39x50 single)
Tras su ejecucion se obtendran los valores DICE de las imagenes utilizadas.
24 CAPITULO 4. EXPERIMENTACION CON FUSION DE ETIQUETAS
4.1.1. Llamada a la funcion desde Matlab
La llamada a la funcion majorityVoting viene definida por: [2]
1 t i c ;2 auto seg R1=major i tyVot ing ( at lasesToTarget R1 ) ;3 toc ;4 t i c ;5 auto seg R2=major i tyVot ing ( at lasesToTarget R2 ) ;6 toc ;7 d i c e t r a i n ( i , 1 )=d i c e ( auto seg R1 > .5 , lbROI 1 ) ;8 d i c e t r a i n ( i , 2 )=d i c e ( auto seg R2 > .5 , lbROI 2 ) ;9 f p r i n t f ( ’DICE: %.3 f %.3 f \n ’ , d i c e t r a i n ( i , 1 ) , d i c e t r a i n ( i , 2 ) ) ;
10
11
Se ha decidido emplear tic, toc para obtener los tiempos que se emplean paracalcular cada valor los cuales quedaran guardados en la variable DICE y ası compa-rarlos con los dados al ejecutar la funcion desde la MEX (Estos ultimos deberan sermenores si se ha realizado bien)
Resultados de su ejecucion
- Sin emplear MEX
Se ejecuta el codigo en Matlab obteniendo los siguientes resultados para las 3primeras iteraciones:
Target 1Elapsed time is 0.006931 seconds.Elapsed time is 0.005247 seconds.DICE: 0.801 0.827Target 2Elapsed time is 0.005106 seconds.Elapsed time is 0.005115 seconds.DICE: 0.786 0.749Target 3Elapsed time is 0.005026 seconds.Elapsed time is 0.005099 seconds.DICE: 0.706 0.676...
Siendo la media de los DICE igual a 0.7915 0.7984
4.1. VOTACION POR MAYORIA 25
- Empleando MEX
Para este caso, la salida obtenida para los 3 primeros casos es la siguiente:Target 1Elapsed time is 0.004657 seconds.Elapsed time is 0.004761 seconds.DICE: 0.801 0.827Target 2Elapsed time is 0.003667 seconds.Elapsed time is 0.003801 seconds.DICE: 0.786 0.749Target 3Elapsed time is 0.004807 seconds.Elapsed time is 0.004749 seconds.DICE: 0.706 0.676...
Como se puede observar, los tiempos obtenidos son bastante menores utilizandoMEX. En esta ocasion, la funcion dada ya era bastante rapida pero esto es muyutil para aquellos casos en los que el tiempo de compilacion pueda llegar a durarminutos.
Nuevamente, para comprobar que desde la MEX se ejecutan correctamente losvalores, se calcula la media de los DICE que resulta al igual que en el primer caso:0.7915 0.7984
La documentacion del codigo en Doxygen puede encontrarse en el Apendice A
26 CAPITULO 4. EXPERIMENTACION CON FUSION DE ETIQUETAS
Capıtulo 5
Experimentacion con FreeSurfer
Las imagenes a tratar con FreeSurfer son resonancias magneticas (T1) proceden-tes de pacientes tanto del Proyecto Vallecas como del estudio ADNI (Alzheimer’sDisease Neuroimaging Initiative)
5.1. Proyecto Vallecas
Se pide comparar los resultados obtenidos por el CTB con los generados trasaplicar el diagrama mencionado en el Capıtulo 3 Esto se realiza debido a que noexiste lo que se denomina como Ground Truth para tomarlo como referencia.
Se completa una tabla en excel con los datos, dedicando una columna para lavariacion en porcentaje entre los valores de las dos fuentes (dicha tabla puede en-contrarse en el Apendice C)
Para trabajar con FreeSurfer se realizo un script en Matlab desde el que se lan-zaron los comandos necesarios para llevar a cabo el tratamiento de las imagenes.
En primer lugar, las imagenes dadas se encuentran en formato .nii.gz y Freesurfertrabaja con .mgz por lo que fue necesario convertirlas antes de proceder obteniendoel skull-stripped
5.1.1. Skull-stripped
Tal y como se describio en el Capıtulo 3 se realiza una primera extraccion pa-ra, por ejemplo, el primer sujeto id 001.nii.gz de PV obteniendo no muy buenosresultados:
Figura 5.1: Skull-stripping aplicando unicamente -autorecon1
27
28 CAPITULO 5. EXPERIMENTACION CON FREESURFER
La segmentacion obtenida tiene bastantes fallos, esto es principalmente debido aque -autorecon1 viene referido a una imagen de ejemplo ya aportada por el programaque tiene una orientacion distinta a la nuestra (No se ha realizado ningun tipo detransformacion afın) Por lo que, para corregirlo, es necesario acudir al algoritmowatershed
Eligiendo primeramente para h un valor de 25, posteriormente aplicando 50 yejecutando con un valor de 15 -no-wsgcaatlas se obtiene la siguiente imagen:
Figura 5.2: Skull-stripping aplicando watershed
Figura 5.3: Imagen de partida id 001.nii.gz
Como se puede apreciar, la mejora es notable aunque todavıa podrıa perfilarseun poco mas. La desventaja de aplicar este metodo es el aumento de contraste quepresenta la imagen. Freesurfer ofrece poder cambiar estos valores de forma manualdesde su visualizador de imagenes freeview aunque serıa conveniente que esto nosucediera.
Sin embargo, debido a las numerosas imagenes que conforman el Proyecto Valle-cas, seguir este procedimiento en el que se va variando el valor de h hasta dar conel mas acertado puede ser bastante costoso. Como ya se indico en la parte teorica,finalmente se decide hacer uso del comando -less por su exactitud y comodidad.
5.1. PROYECTO VALLECAS 29
Figura 5.4: Skull-stripping con less sobre id 002.nii.gz
Figura 5.5: Skull-stripping con h 25 sobre id 002.nii.gz
Como se puede apreciar, la realizada variando el valor de h podrıa considerarsecomo valida a simple vista, sin embargo presenta un falso negativo en la regionsenalada si se compara con less
Imagenes rotadas
Se observo que algunas de las imagenes del PV estaban ligeramente inclinadascomo se puede ver a continuacion:
Figura 5.6: Vista sagital y coronal del paciente id 004.nii.gz
Para tratar este tipo de imagenes con otros metodos fue necesario rotarlas de talforma que la comisura anterior y posterior del cerebro quedaran en lınea recta conel eje horizontal antes de realizar skull-stripping.
Lo anteriormente mencionado puede resumirse en la imagen siguiente, cuya fuentepuede encontrarse siguiendo este (link)
Siendo AC las iniciales para anterior commissure y PC para posterior commissureel proposito serıa:
Se intento llevar a cabo este mismo procedimiento con FreeSurfer utilizando lasmatrices de talairach generadas por 3DSlicer que definen esta rotacion.
Los resultados obtenidos fueron los siguientes:
Figura 5.8: Skull-stripping tras rotacion en id 004.nii.gz
Figura 5.9: Skull-stripping sin rotar en id 004.nii.gz
Como se puede apreciar, el resultados generado sin llevar a cabo la rotacionindicada es sin duda mucho mas acertado.
Se concluyo por tanto que para el caso de tratarlas con FreeSurfer no se harıaesta distincion.
5.1. PROYECTO VALLECAS 31
5.1.2. ICV
En cuanto al calculo del ICV, para que este valor sea correcto, es necesario quela realizacion de skull-stripped sea lo mas precisa posible.
Tras ejecutar el comando less con el que se termina de perfilar la extraccion ya enel espacio nativo, este valor aparece impreso por pantalla y gracias al script desdeel que se lanza FreeSurfer, se guarda en icv.txt:
Figura 5.10: Valor de ICV paciente id 001.nii.gz recogido en icv.txt
5.1.3. Volumetrıa hipocampal
Previamente a su calculo, es necesario obtener el denominado aseg.mgz generadocon el comando -autorecon2 que contiene el etiquetado del cerebro. Para este casoen particular fue necesario localizar ambos hipocampos, asignados por las etiquetas17 y 53 respectivamente. Volviendo a poner como ejemplo la primera imagen del PVid 001.nii.gz:
Figura 5.11: Etiquetado paciente id 001.nii.gz
Figura 5.12: Detalle etiquetado Figura 5.13: Leyenda
32 CAPITULO 5. EXPERIMENTACION CON FREESURFER
Una vez senalada la etiqueta, se emplea mri label volume para obtener el valor devolumen para cada hipocampo el cual aparece impreso por pantalla y es guardadoen etiv.txt
Figura 5.14: Volumetrıa hipocampal de las tres primeras imagenes del PV archivo etiv.txt
5.1.4. Volumetrıa Materia Gris
Al igual que para el caso anterior, es necesario tener localizada la zona sobre laque se quiere calcular el volumen, es decir, su etiqueta.
Para este caso, el archivo es ribbon.mgz el cual deberıa generarse automaticamenteal ejecutar -autorecon2, sin embargo, es necesario generarlo con mris volmask poraparecer el siguiente error:
Figura 5.15: Error ribbon.mgz
5.1. PROYECTO VALLECAS 33
Para el paciente id 001.nii.gz, el archivo ribbon.mgz que le corresponde es el si-guiente:
Figura 5.16: Etiquetado-2 id 001.nii.gz
Figura 5.17: Leyenda-2
El valor de volumetrıa queda recogido tras aplicar mri segstats en aseg.stats loca-lizado en el directorio subject/stats/aseg.stats siendo subject la carpeta workspacedestinada para cada imagen.
Se opta por guardar todos estos datos en un unico archivo txt denominado comograyVol.txt por comodidad.
Figura 5.18: Volumetrıa materia gris paciente id001.nii.gzarchivograyVol .txt
34 CAPITULO 5. EXPERIMENTACION CON FREESURFER
5.1.5. Tiempo empleado
Como ya se ha mencionado con anterioridad, el tiempo que FreeSurfer emplea entratar cada una de las imagenes, obteniendo los valores pedidos es muy superior.
Realizando un script en Matlab unicamente para el tratamiento de una imagen,el tiempo obtenido fue de exactamente de 29471,848463 segundos (8,18 horas)
Desglosado, 8.048887 segundos corresponderıan a la primera operacion de conver-sion a mgz, 2721.034620 segundos a las operaciones de skull-stripping e ICV mientrasque el tiempo restante estarıa dedicado al calculo del resto de volumetrıas.
Paralelizacion
A la vista de estos resultados, se opta por emplear paralelizacion incorporandolas siguientes lıneas en el script de Matlab:
1 matlabpool l o c a l 8 ;2 par f o r i =1:313 . .4 matlabpool c l o s e ;
En primer lugar, se verifica el tiempo que tardarıan en realizarse las 31 primerasimagenes. Puesto que ahora las operaciones para cada imagen se realizan paralela-mente, el tiempo obtenido es de 33319.912416 segundos (9,25 horas)
Sin aplicarlo, tomando como referencia el anterior dato obtenido para una so-la imagen, el tiempo que se tardarıa en realizar estas 31 imagenes deberıa ser de913627,3004 segundos (253,78 horas)
Como se ha demostrado, el tiempo ahorrado al paralelizar es muy notable.
5.2. ADNI 35
5.2. ADNI
Tal y como se ha descrito anteriormente, se lleva a cabo cada una de estas etapastambien para las imagenes de ADNI. Nuevamente se genero un archivo excel conestos valores el cual se puede encontrar tambien en el Apendice C
A diferencia del PV, para este caso sı que se tienen las etiquetas consideradas co-mo Ground Truth por lo que se calcularon los valores de DICE para cada hipocampoen relacion con ellas.
Figura 5.19: Sujeto ADNI 002 S 0295 - Etiqueta izquierda (ya dada)
Figura 5.20: Sujeto ADNI 002 S 0295 - Etiquetas obtenidas con FS (generada)
Sobre la extraccion tambien realizada con FreeSurfer para, por ejemplo, el sujetoADNI 002 S 0295 de ADNI-HHP se superponen las etiquetas a comparar con elcalculo del DICE resultando lo anteriormente mostrado (el visor empleado en estecaso es BrainSuite11)
36 CAPITULO 5. EXPERIMENTACION CON FREESURFER
Se comparan por tanto, las etiquetas 17 y 53 correspondientes a ambos hipocam-pos segun FreeSurfer con las ya dadas.
El script en Matlab para el calculo del DICE, a diferencia de los anteriores, no fuenecesario escribirlo partiendo de cero, sino que fue suministrado. Sin embargo, se in-corporaron las siguientes lıneas de codigo con la finalidad de especificar que etiquetasde la segmentacion realizada por FreeSurfer se deseaba comparar:
l abe l i nvLab =(targetImage2==17) | ( targetImage2==53) ;
No se hara demasiado hincapie en este script, ya que como se ha mencionado, hasido proporcionado. Unicamente aclarar que en las lıneas mostradas, targetImage2serıa el archivo aseg.mgz en espacio nativo que genera FreeSurfer, es decir, el quecontiene las etiquetas y label invLab la propia etiqueta.
Tabla 5.2: Valores de DICE - Etiqueta hipocampo derecho
En ninguno de los casos este valor es muy proximo a 1 aunque es cierto que losresultados han sido mejores para ADNI-HHP.
En cuanto a valores de ICV, la media para las 19 imagenes que conforman el grupoADNI-OLD es de 1490969,842 mm3 mientras que en ADNI-HHP es algo superior,1549901,635 mm3
5.3. CONSIDERACIONES TENIDAS EN CUENTA 37
5.3. Consideraciones tenidas en cuenta
En este epıgrafe se resumen los problemas y consideraciones que se han realizadoen cuanto al tratamiento de imagenes. Mencionar que, para el caso de los resultadosobtenidos en el PV por el CTB, se desconoce la metodologıa empleada, por lo que eldiagrama expuesto sobre los pasos que se han llevado a cabo no es del todo fijo. Sedecidio optar por la utilizacion de esos comandos tras el estudio del software perocualquier otro camino que pueda llevar a resultados similares tambien serıa valido.
En cuanto a los problemas ocurridos al tratar estas imagenes con FreeSurfer fueel hecho de que tanto el skull-stripped y etiquetamiento no estaban en el espacionativo. Esto se descubrio al ejecutar el script de Matlab necesario para el calculodel DICE de las imagenes del proyecto ADNI.
FreeSurfer genera los volumenes y etiquetas con dimension 256x256x256 y spacing1mm3 sin embargo, existe un determinado archivo rawavg.mgz que conserva losvalores de la imagen de origen. A partir de ella, utilizandola como plantilla, seobtuvieron las correspondientes al espacio nativo con las que se recalcularon todoslos valores de volumetrıa.
Tambies es necesario tener en cuenta que el script utilizado para calcular el valorde DICE utiliza la mex MedicalVolumeLoaderITKMEX la cual toma las etiquetasen espacio nativo con formato .nii.gz. FreeSurfer genera estos archivos en mgz por loque es necesario realizar previamente esta conversion para poder ejecutar el script.Ademas, el etiquetamiento realizado por FreeSurfer abarca todas las zonas cerebralespor lo que es necesario especificar que lo que se va a comparar son las etiquetas 17y 53.
Por otra parte, y como ya se ha adelantado anteriormente en el calculo de lamateria gris, al ejecutar el comando -autorecon2 este se cierra con errores, el archivoribbon.mgz no se crea. Tras buscar este problema en foros se ve que es un problemageneral y que la unica manera de obtenerlo es ejecutando mris volmask
En cuanto a las imagenes tratadas, no se llevo a cabo la correspondiente al pa-ciente id 140.nii.gz del PV por no tener disponibilidad de la imagen fuente y se hadecidido no tener en cuenta la volumetrıa hipocampal obtenida para id 106.nii.gzpuesto que los valores fueron 1563 para el caso del hipocampo derecho y 444 parael izquierdo.
Tanto la documentacion del codigo en Doxygen como las tablas excel realizadascon los resultados pueden encontrarse en el Apendice A y en el Apendice C
38 CAPITULO 5. EXPERIMENTACION CON FREESURFER
Capıtulo 6
Conclusiones
Conclusion
Gracias a la experimentacion llevada a cabo ha sido posible encontrar posiblesdiscrepancias en los valores de volumetrıa hipocampal obtenidos por el CTB. Unejemplo de ello se puede apreciar en el paciente id 036.nii.gz
El valor de volumetrıa obtenido para el caso del hipocampo izquierdo difiere deldado por el CTB en un 44,18 %.
Se concluye que el valor 1367 podrıa ser incorrecto ya que ademas el diagnosticoteniendo en cuenta este dato deberıa ser superior a 2, ya que la atrofia es muy altapara tener un estado amnesico leve.
Por otra parte, se ha podido comparar FreeSurfer con otros software utilizadospara el tratamiento de imagenes. Se ha visto como FreeSurfer se ejecuta de una formabastante automatica ya que no es necesario realizar ningun tipo de rotacion librepara mejorar el skull-stripping o determinar manualmente los centros de gravedadnecesarios para ello como ocurre con BET. En algunos casos, incluso se han obtenidomejores extracciones, en particular para las imagenes del estudio ADNI.
Sin embargo, aunque es ventajoso en ciertos sentidos, tambien es necesario men-cionar que en cuanto a la realizacion del DICE para las imagenes de ADNI el resul-tado obtenido por otros companeros que no han empleado FreeSurfer ha sido mejor.
Cabe destacar ademas la ayuda que ha supuesto la elaboracion de los scriptscon los que se ha lanzado desde Matlab de forma paralelizada FreeSurfer. Con ellosha sido posible mejorar notablemente los tiempos de ejecucion tal y como se hademostrado. Sin su realizacion no hubiera sido posible tratar las aproximadamente
39
40 CAPITULO 6. CONCLUSIONES
300 imagenes de pacientes que conforman este TFG y poder formar parte del estudioADNI y del Proyecto Vallecas.
Desarrollos futuros
Un posible desarrollo para este caso podrıa ser la obtencion del hipocampo comoun fichero unico. Es decir, FreeSurfer genera el etiquetado del cerebro en su conjuntocuyo proceso de obtencion es el que mas tiempo tarda. Si se consiguiera que esteproceso centrara su ejecucion en la localizacion de las etiquetas 17 y 53 se ahorrarıabastante tiempo de ejecucion.
Ademas, llevar a cabo la segmentacion de las subregiones del hipocampo podrıaser un buen punto de partida como desarrollo futuro con el fin de profundizar unpoco mas en este estudio.
Por otra parte, tambien se podrıa continuar desarrollando MEX para los respec-tivos metodos de fusion de etiquetas.
Apendice A
Documentacion del codigo
A continuacion se adjunta la documentacion realizada con Doxygen del codigodesarrollado para este TFG siguiendo el siguiente orden:
Majority Voting o Votacion por mayorıa - Capıtulo 4
Script para FreeSurfer - Capıtulo 5
En el primer caso, se ha realizado el codigo en C++ con Visual Studio 2008mientras que en el segundo, se ha escrito directamente en Matlab.
Cabe mencionar que durante la parte de experimentacion se realizaron numerososscripts con los comandos de FreeSurfer que se iban aprendiendo a utilizar poco apoco. Para la documentacion se ha decidido unificar todos ellos en uno.
El codigo en su totalidad puede encontrarse en el Apendice B
2.1.2.2 void mexFunction ( int nlhs, mxArray ∗ plhs[ ], int nrhs, const mxArray ∗ prhs[ ] )
Variables
mxArray *mx;int fixnumAtlases=(int)mxGetNumberOfElements(prhs[0]);atlas *atlasesToTarget = new atlas[fixnumAtlases];float *auto_seg=(float*)mxGetPr(plhs[0]);
Se leen los valores recibidos
for (int i=0;i<fixnumAtlases;i++){
mx = mxGetField(prhs[0], i, "imIn");atlasesToTarget[i].imIn=(float*)mxGetPr(mx);mx=mxGetField(prhs[0], i, "label");atlasesToTarget[i].label=(bool*)mxGetLogicals(mx);
savedata2 = sprintf(’head -18 %s/stats/aseg.stats | tee -a grayVol.txt’, aux3);disp(savedata2)system(savedata2);
toc;endmatlabpool close;
Generated on Mon Aug 31 2015 19:03:07 for Code DocumentationSurfer by Doxygen
60 APENDICE A. DOCUMENTACION DEL CODIGO
Apendice B
Codigo realizado
Fusion de etiquetas
majorityVoting.cpp
#inc lude ” major i tyVot ing . h”
void mexFunction ( i n t nlhs , mxArray ∗ plhs [ ] , i n t nrhs , const mxArray ∗prhs [ ] ){
mxArray ∗mx;i n t f ixnumAtlases=( i n t ) mxGetNumberOfElements ( prhs [ 0 ] ) ;a t l a s ∗ at lasesToTarget = new a t l a s [ f ixnumAtlases ] ;f o r ( i n t i =0; i<f ixnumAtlases ; i++){
mx = mxGetField ( prhs [ 0 ] , i , ” imIn ”) ;at lasesToTarget [ i ] . imIn=( f l o a t ∗)mxGetPr(mx) ;mx=mxGetField ( prhs [ 0 ] , i , ” l a b e l ”) ;at lasesToTarget [ i ] . l a b e l =(bool ∗) mxGetLogicals (mx) ;
}
const s i z e t numDimensiones = mxGetNumberOfDimensions (mx) ;const mwSize ∗v=mxGetDimensions (mx) ;
p lhs [0 ]= mxCreateNumericArray ( numDimensiones , v , mxSINGLE CLASS, mxREAL) ;f l o a t ∗ auto seg =( f l o a t ∗)mxGetPr( p lhs [ 0 ] ) ;
major i tyVot ing ( at lasesToTarget , f ixnumAtlases , v , auto seg ) ;}void major i tyVot ing ( a t l a s ∗ at lasesToTarget , i n t f ixnumAtlases , const mwSize ∗v ,
f l o a t ∗ auto seg ) {f o r ( i n t i =0; i<v [ 0 ] ; i++)
f o r ( i n t j =0; j<v [ 1 ] ; j++)f o r ( i n t k=0;k<v [ 2 ] ; k++)
auto seg [ v [ 0 ] ∗ v [ 1 ] ∗ k+v [ 0 ] ∗ j+i ] = ( f l o a t ) ( at lasesToTarget [ 0 ] . l a b e l [ v [ 0 ] ∗ v[ 1 ] ∗ k+v [ 0 ] ∗ j+i ]>0) ;
i f ( f ixnumAtlases >1){
f o r ( i n t m=1; m<f ixnumAtlases ; m++){f o r ( i n t i =0; i<v [ 0 ] ; i++)
f o r ( i n t j =0; j<v [ 1 ] ; j++)f o r ( i n t k=0;k<v [ 2 ] ; k++)
auto seg [ v [ 0 ] ∗ v [ 1 ] ∗ k+v [ 0 ] ∗ j+i ]= auto seg [ v [ 0 ] ∗ v [ 1 ] ∗ k+v [ 0 ] ∗ j+i ]+( f l o a t) ( at lasesToTarget [m] . l a b e l [ v [ 0 ] ∗ v [ 1 ] ∗ k+v [ 0 ] ∗ j+i ]>0) ;}
}f o r ( i n t i =0; i<v [ 0 ] ; i++)
f o r ( i n t j =0; j<v [ 1 ] ; j++)f o r ( i n t k=0;k<v [ 2 ] ; k++)
auto seg [ v [ 0 ] ∗ v [ 1 ] ∗ k+v [ 0 ] ∗ j+i ] = auto seg [ v [ 0 ] ∗ v [ 1 ] ∗ k+v [ 0 ] ∗ j+i ] / ( f l o a t )f ixnumAtlases ;
61
62 APENDICE B. CODIGO REALIZADO
majorityVoting.h
major i tyVot ing . h#inc lude ”mex . h”#inc lude <vector>
#i f de f ined ( MSC VER)#pragma warning ( d i s a b l e : 4786 )#e n d i fs t r u c t a t l a s {
f l o a t ∗ imIn ;bool ∗ l a b e l ;
} ;
// Declaramos l o s p r o t o t i p o s de l a s func i one s que vayamos a emplearvoid major i tyVot ing ( a t l a s ∗ at lasesToTarget , i n t f ixnumAtlases , const mwSize ∗v ,
f l o a t ∗ auto seg ) ;
FreeSurfer
A continuacion se expone el script generado en Matlab mediante el cual se hantratado las imagenes con FreeSurfer lanzandolo desde PuTTY.
Particularmente se utilizo para las imagenes de ADNI-HHP pero cambiando losdirectorios )pathId donde se localizan las imagenes de los pacientes a tratar y path-Subj workspace donde se guardaran los resultados) fue tambien posible aplicarlopara PV y ADNI-OLD
f unc t i on s c r i p t B r a i n s ( )
% s c r i p t B r a i n s%% Input :% Imagenes de ADNI−HHP T1−MRI en formato . n i i . gz .%% Output :% brainmask . mgz : s ku l l−s t r i p p i n g de l a imagen de o r i g en .% aseg . mgz : segmentaci on de l c e r ebro en par t e s .% ribbon . mgz : segmentaci on n e c e s a r i a para e l c a l c u l o de mater ia g r i s%% e t i v . txt : v a l o r e s de vo lumetr ı a hipocampal de l a s imagenes t ra tadas% grayVol . txt : datos de mater ia g r i s r e c o g i d o s .% i cv . txt : v a l o r e s de ICV obten idos .%%% Sandra Rodrıguez , 07/2015
% %I n i c i a l i z a c i o n de FreeSur f e r desde l a te rmina l% export FREESURFER HOME=/usr / l o c a l / f r e e s u r f e r% source / usr / l o c a l / f r e e s u r f e r / SetUpFreeSurfer . sh% export SUBJECTS DIR=/home2/ s r o d r i g u e z / f r e e s u r f e r / data
% chsh −s / bin / tcsh% setenv FREESURFER HOME / usr / l o c a l / f r e e s u r f e r% setenv SUBJECTS DIR /home2/ s r o d r i g u e z / resultsADNI% source $FREESURFER HOME/ SetUpFreeSurfer . csh
% %P a r a l e l i z a c i o n FreeSur f e r
pathSubj = ’/home2/ s r o d r i g u e z / resultsADNI / ’ ;pathId = ’/home2/ s r o d r i g u e z /ADNI/ ’ ;pathOrig = ’/ mri/ o r i g / ’ ;commandConvert = ’ mri convert ’ ;command2 = ’ mris volmask ’ ;commandVolEtiv = ’ mr i labe l vo lume ’ ;commandVolGray = ’ mr i s e g s t a t s ’ ;
FREESURFER 63
commandLess = ’ mri watershed ’ ;o r i g = ’001 . mgz ’ ;f i leName = ’∗ . n i i . gz ’ ;l i s tF i ch Img = d i r ( s t r c a t ( pathId , f i leName ) ) ;
matlabpool l o c a l 8 ;pa r f o r i =1:134
t i c ;
% %Creaci on de l o s d i r e c t o r i o s de t raba joaux3 = l i s tF i ch Img ( i ) . name ( 1 2 : 1 6 ) ;d i r e c t i o n = s p r i n t f ( ’ mksubjdirs %s ’ , aux3 ) ;d i sp ( d i r e c t i o n )system ( d i r e c t i o n ) ;
% %Conversi on n i i . gz − mgzaux2 = l i s tF i ch Img ( i ) . name ( ) ;input = s t r c a t ( pathId , aux2 ) ;input2 = s t r c a t ( pathSubj , aux3 , pathOrig , o r i g ) ;convert = s p r i n t f ( ’ %s − i t n i i %s −ot mgz %s \n ’ , commandConvert , input , input2) ;
d i sp ( convert )system ( convert ) ;
% %Skul l−s t r i p p i n g & ICVlinecommand = s p r i n t f ( ’ recon−a l l −sub j i d %s −autorecon1 \n ’ , aux3 ) ;d i sp ( linecommand )system ( linecommand ) ;
l e s s = s p r i n t f (’ %s − l e s s %s /mri/T1 . mgz %s /mri/brainmask . mgz | t e e a u x i l i a r . txt\n ’ , commandLess , aux3 , aux3 ) ;
d i sp ( l e s s )system ( l e s s ) ;
savedata1 = s p r i n t f ( ’ t a i l −8 a u x i l i a r . txt | t e e −a i cv . txt \n ’ ) ;d i sp ( savedata1 )system ( savedata1 ) ;
copy = s p r i n t f ( ’ cp %s /mri/brainmask . mgz %s /mri/brainmask . auto . mgz ’ , aux3 , aux3 );
d i sp ( copy )system ( copy ) ;
% %Volumetr ıa hipocampallinecommand2 = s p r i n t f ( ’ recon−a l l −sub j i d %s −autorecon2 \n ’ , aux3 ) ;d i sp ( linecommand2 )system ( linecommand2 ) ;
r ibbon = s p r i n t f (’ %s −− l a b e l l e f t w h i t e 2 −− l a b e l l e f t r i b b o n 3 −−l a b e l r i g h t w h i t e 41 −− l a b e l r i g h t r i b b o n 42 −−save r ibbon −−s a v e d i s t a n c e %s ’ ,command2 , aux3 ) ;
d i sp ( r ibbon )system ( r ibbon ) ;
e t i v = s p r i n t f ( ’ %s −e t i v %s /mri/ t rans forms / t a l a i r a c h . xfm 1 %s /mri/ aseg . mgz 1753 | t e e −a %s / e t i v . txt \n ’ , commandVolEtiv , aux3 , aux3 , pathSubj ) ;
d i sp ( e t i v )system ( e t i v ) ;
% %Materia Grisc r e a t e = s p r i n t f ( ’ touch %s / s t a t s / aseg . s t a t s ’ , aux3 ) ;d i sp ( c r e a t e )system ( c r e a t e ) ;
vo lgray = s p r i n t f (’ %s −−seg %s /mri/brainmask . mgz −−sum %s / s t a t s / aseg . s t a t s −−sur f−ctx−vo l −−t o t a l g r a y −−s ub j e c t %s ’ , commandVolGray , aux3 , aux3 , aux3 ) ;
d i sp ( vo lgray )system ( vo lgray ) ;
savedata2 = s p r i n t f ( ’ head −18 %s / s t a t s / aseg . s t a t s | t e e −a grayVol . txt ’ , aux3 ) ;d i sp ( savedata2 )
64 APENDICE B. CODIGO REALIZADO
system ( savedata2 ) ;
toc ;endmatlabpool c l o s e ;
Por otra parte, se implemento otro script para pasar las imagenes al espacionativo y guardar las etiquetas en formato .nii.gz en otro directorio para calcularsu DICE. Estas lıneas se incorporaron al codigo anteriormente mencionado segunrefleja la documentacion:
f unc t i on nat ive space ( )pathSubj = ’/home2/ s r o d r i g u e z /resultsADNI OLD / ’ ;pathId = ’/home2/ s r o d r i g u e z /ADNI OLD/ ’ ;commandVol = ’ mr i vo l2vo l ’ ;commandAseg = ’ mr i l ab e l 2vo l ’ ;commandConvert = ’ mri convert ’ ;s k u l l s t = ’ brainmask . mgz ’ ;l a b e l e d = ’ aseg . mgz ’ ;l abe l ed2 = ’ r ibbon . mgz ’ ;na t ive = ’ rawavg . mgz ’ ;s k u l l s n a t i v e = ’ brain−in−rawavg . mgz ’ ;l a b e l e d n a t i v e =’aseg−in−rawavg . mgz ’ ;l a b e l e d n a t i v e 2 =’ ribbon−in−rawavg . mgz ’ ;o r i g = ’ aseg00 . mgz ’ ;f i leName = ’∗ . n i i . gz ’ ;mri = ’ mri ’ ;l i s tF i ch Img = d i r ( s t r c a t ( pathId , f i leName ) ) ;
matlabpool l o c a l 8 ;pa r f o r i =1:19
aux3 = l i s tF i ch Img ( i ) . name ( 6 : 7 ) ;aux2 = l i s tF i ch Img ( i ) . name ( ) ;
path = s t r c a t ( pathSuj , aux3 , mri ) ;input = s t r c a t ( pathId , aux2 ) ;input2 = s t r c a t ( pathSubj , aux3 , o r i g ) ;
nat iveVol = s p r i n t f ( ’ %s −−mov %s/ %s −−targ %s/ %s −−regheader −−o %s/ %s −−no−save−reg \n ’ , commandVol , path , s k u l l s t , path , nat ive , path , s k u l l s n a t i v e ) ;
d i sp ( nat iveVol )system ( nat iveVol ) ;
nat iveAseg = s p r i n t f ( ’ %s −−seg %s/ %s −−temp %s/ %s −−o %s/ %s −−regheader %s/ %s \n ’ , commandAseg , path , l abe l ed , path , nat ive , path , l abe l edna t i v e , path ,l a b e l e d ) ;
d i sp ( nat iveAseg )system ( nat iveAseg ) ;
nativeRibbon= s p r i n t f ( ’ %s −−seg %s/ %s −−temp %s/ %s −−o %s/ %s −−regheader %s/ %s\n ’ , commandAseg , path , labe l ed2 , path , nat ive , path , l abe l ednat i v e2 , path ,l abe l ed2 ) ;
d i sp ( nativeRibbon )system ( nativeRibbon ) ;
convert = s p r i n t f ( ’ %s − i t mgz %s/ %s −ot n i i %s \n ’ , commandConvert , path ,l a b e l e d n a t i v e , input2 ) ;
d i sp ( convert )system ( convert ) ;
endmatlabpool c l o s e ;
Apendice C
Tablas de resultados
En este anexo se incorporan las tablas de resultados obtenidas tras aplicar Free-surfer. Queda estructurado por tanto en:
PV
Una primera columna refleja el nombre del sujeto a tratar denominada porIDMEG. Mientras que, una segunda, tambien coloreada en verde, muestra eldiagnostico dado por el CTB siendo:
• 1 - Healthy Control
• 2 - Amnestic MCI
• 3 - Amnestic multiple domain MCI
• 4 - Alzheimer
En las siguientes, se recogen los datos de volumetrıa hipocampal, intracranealy de materia gris. Los de color naranja son los realizados por el CTB mientrasque los azules son los realizados en este TFG. En amarillo se da el porcentajede variacion entre ambos datos.
ADNI
Tanto para las imagenes de ADNI-OLD como para las de ADNI-HHP ademasde mostrar los datos de volumetrıa obtenidos en este TFG, se recogen los valoresde DICE de los etiquetados.
El objetivo de esta practica es el estudio de las librerıas ITK (Insight Segmenta-tion and Registration Toolkit) ası como de los interfaces MEX y OpenMp para eltratamiento de imagenes.
ITK
Filtro binomial
Los filtros binomiales son estructuras eficientes basadas en los coeficientes bino-miales resultantes de la implementacion de Gauss.
Este filtro usa la convolucion gracias a la cual es posible simplificar las matemati-cas y ahorrar tiempo. Tambien resulta muy util para el procesamiento de imagenesen algunos casos como para la detencion de bordes.
Dado el siguiente codigo de Matlab:f unc t i on imgSal = binomialMatlab ( imgEnt )maskConv = [ 1 2 1 ;2 4 2 ;1 2 1 ] . / 1 6 ;imgSal = i m f i l t e r ( imgEnt , maskConv , ’ r e p l i c a t e ’ ) ;\ l a b e l {2}
Se nos pide conseguir una funcionalidad similar usando las librerıas ITK. El primerpaso sera escribir el archivo CMakeLists.txt
1 # Indicamos e l nombre que queremos que tenga nuest ro proyecto2 PROJECT( Binomia lF i l t r o )3
4 #Buscamos l i b r e r i a s de ITK5 FIND PACKAGE(ITK REQUIRED)6 INCLUDE( ${ITK USE FILE})7 # Indicamos que e l proyecto va a c r e a r una l i b r e r i a e indicamos l o s a r ch ivo s que
van a dar lugar a l a l i b r e r i a8 # Deben e s t a r creados antes de e j e c u t a r CMake9 ADD EXECUTABLE(Binom
A partir de ello, se determinan las carpetas donde se encuentran los Fuentes(Binomial.h y Binomial.cpp) y donde queremos que se guarden los Binarios.
Del filtro solo se configuraran la imagen de entrada y el numero de repeticionesque deseamos que se ejecute. Por lo que, se tendran como parametros la imagencameraman.tif sobre la que se aplicara, el numero de iteraciones elegidas (en nuestrocaso 10) y la imagen filtrada de salida.
1 typede f unsigned char num;2 // Imagenes en 2D3 const unsigned i n t numDims = 2 ;4 typede f i t k : : Image< unsigned char , numDims > ImageEnt ; // Imagen de Entrada5 typede f i t k : : Image< unsigned char , numDims > ImageSal ; // Imagen de Sa l ida6 typede f i t k : : ImageFileReader< ImageEnt > ReaderType ;7 typede f i t k : : ImageFi leWriter< ImageSal > WriterType ;8 typede f i t k : : Binomia lBlurImageFi l ter<ImageEnt , ImageSal> BinB lu rF i l t e r ;
ITK 77
Resultado
Se muestra el resultado con las ITK y se compara con el obtenido tras la imple-mentacion desde Matlab con la funcion binomialMatlab llamada 10 veces.
Figura D.1: Imagen de entrada Figura D.2: ITK - Imagen de salida
Figura D.3: binomialMatlab - Imagen de salida
El resultado es muy similar pero por diferencias en la implementacion, si seobservan detenidamente pixel a pixel se vera que no son iguales.
78 APENDICE D. ANEXO: ITK, MEX Y OPENMP
MEX
Las funciones MEX son muy utiles, ya que nos permiten emplear codigo escritoen C/C+ desde Matlab.
Filtro binomial
Al igual que en el caso anterior, se pide implementar un filtro binomial que tengala funcionalidad descrita.
Sin embargo, para llevarlo se tienen en cuenta previamente las siguientes consi-deraciones:
Los bordes que conforman el borde sera necesario replicar los valores antes deaplicar el filtro
Sera necesario convertir los valores de unsigned char a coma flotante para elcaso de la entrada, y hacer la conversion opuesta para la salida.
Debido a que la convolucion de la imagen coincide con la correlacion de lamisma con la mascara, por ser esta simetrica, se usara correlacion a diferenciade las ITK (ademas de ser mas facil de implementar)
Se dividira la imagen en 9 partes para facilitar nuevamente la implementacion.
En cuanto al CMakeLists.txt empleado:
1 PROJECT( f i l t r o B i n )2 IF (WIN32) # Windows3
4 SET(MATLAB LIB [HKEY LOCAL MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7 . 1 0 ;MATLABROOT] / extern / l i b /win64/ mic ro so f t )
7 FIND LIBRARY(MATLAB MEX LIBRARY8 l ibmex9 ${MATLAB LIB}
10 )11 FIND LIBRARY(MATLAB MX LIBRARY12 l ibmx13 ${MATLAB LIB}14 )15 FIND LIBRARY(MATLAB ENG LIBRARY16 l i b e n g17 ${MATLAB LIB}18 )19
20 FIND PATH(MATLAB INCLUDE21 ”mex . h”22 ${MATLAB INC}23 )24 INCLUDE DIRECTORIES( ${MATLAB INCLUDE})25 ADD LIBRARY( f i l t B i n MODULE26
27 umbral izacionC . cpp28 umbral izacionC . h29 )30 IF (WIN32) # Windows31 IF (CMAKE SIZEOF VOID P EQUAL 4) # 32 b i t s32 SET TARGET PROPERTIES( f i l t B i n PROPERTIES SUFFIX ” . mexw32”)33
34
35 ELSE(CMAKE SIZEOF VOID P EQUAL 4) # 64 b i t s36 SET TARGET PROPERTIES( f i l t B i n PROPERTIES SUFFIX ” . mexw64”)
MEX 79
37 ENDIF(CMAKE SIZEOF VOID P EQUAL 4)38 ENDIF(WIN32)39
40 # Indicamos que l a l i b r e r i a creada va a s e r de t ipo MEX41 ADD DEFINITIONS(−DMATLAB MEX FILE)42 IF (WIN32)43 SET TARGET PROPERTIES( f i l t B i n44 PROPERTIES45 LINK FLAGS ”/ export : mexFunction”46 )47 ENDIF(WIN32)48
49 #Incorporar l a s l i b r e r i a s i n t e r f a z ent r e Matlab y C++50 SET(MATLAB LIBRARIES51 ${MATLAB MEX LIBRARY}52 ${MATLAB MX LIBRARY}53 ${MATLAB ENG LIBRARY}54 )55 TARGET LINK LIBRARIES( f i l t B i n56 ${MATLAB LIBRARIES}57 )
Posteriormente, para la obtencion del resultado final es necesario implementar lasiguiente funcion de test:
1 f unc t i on imgSal = t e s t ( )2 imgEnt=imread ( ’ cameraman . t i f ’ ) ;3 imgSal=f i l t B i n ( imgEnt ) ;4 imshow ( [ imgEnt , imgSal ] ) ;5
6 end
Siendo fitlBin el archivo obtenido despues de compilar los binarios en Release conVisual Studio.
En este caso, unicamente se tendra como parametro de entrada la imagen a aplicarel filtro, en nuestro caso la ya tratada cameraman.tif
80 APENDICE D. ANEXO: ITK, MEX Y OPENMP
Resultado
Se obtienen los siguientes resultados:
Figura D.4: Resultados con MEX
Figura D.5: Resultados con binomialMatlab
OPENMP 81
OPENMP
La interfaz de programacion de aplicaciones (API) OpenMp (Open Multi-Processing)esta destinada a la programacion multiproceso de memoria compartida en multiplesplataformas.
Permite el procesamiento en paralelo de programas escritos en C, C++ o Fortran.Consiste ademas en un conjunto de directivas para el compilador, unas bibliotecasde funciones y una serie de variables de entorno que controlan el comportamientode la ejecucion.
Se basa en la existencia de multiples hilos de ejecucion que comparten una regionde memoria.
Paralelizacion bwDistC
Para esta parte, se partira del codigo fuente en C++, bwDistC el cual implementala funcion bwdist que calcula para cada pıxel de entrada la distancia mas cercana aun valor distinto de cero proximo a el. Tanto para la entrada como para la salida,se usaran matrices lo que facilitara que se ejecute en paralelo.
El objetivo es probar a paralelizar distintas regiones del codigo y determinar cuales la mas adecuada mediante una comparacion de tiempos.
Resultado
Primera comprobacion
Se hace paralelismo en la inicializacion. Para poder llevarlo a cabo sera necesariomodificar la siguiente lınea de codigo:
1 #pragma omp p a r a l l e l f o r schedu le ( guided )2 f o r ( i =0; i<numElem ; i++) {3 imgAntes [ i ]= imgIn [ i ] ;4 imgOut [ i ]=0;5 }
Con la directiva pragma omp for se consigue que las iteraciones del del buclefor que acompana sean ejecutadas en paralelo. En el momento de la ejecucion,las iteraciones se distribuyen entre todos los hilos que se lancen.
82 APENDICE D. ANEXO: ITK, MEX Y OPENMP
Tras obtener los Binarios, obtener bwDistC.mexw64 compilando desde Releaseen Visual Studio y gracias al script scriptBWDist.m con la imagen dada BWHigse ha obtenido lo siguiente:
El codigo de C ha tardado una media de: 1.331467 s
El codigo de C paralelizado ha tardado una media de: 1.272789 s
Se observa que gracias a la paralelizacion se minoriza el tiempo.
Segunda comprobacion
Se realiza nuevamente otra prueba haciendo paralelismo en el bucle for dedilatacion:
1 #pragma omp p a r a l l e l f o r schedu le ( guided )2 f o r ( k=0;k<n s l i c e s ; k++) {3 f o r ( j =0; j<nco l ; j++) {4 f o r ( i =0; i<nrow ; i++) {5 ind = i+j ∗nrow+k∗numElemSlice ;6 i f ( imgDespues [ ind ]=imgAntes [ ind ] )7 cont inue ;8 i f ( i−1>=0)9 i f ( imgDespues [ ind ]=imgAntes [ ind −1])
10 cont inue ;11 i f ( i+1<nrow )12 i f ( imgDespues [ ind ]=imgAntes [ ind +1])13 cont inue ;14 i f ( j−1>=0)15 i f ( imgDespues [ ind ]=imgAntes [ ind−nrow ] )16 cont inue ;17 i f ( j+1<nco l )18 i f ( imgDespues [ ind ]=imgAntes [ ind+nrow ] )19 cont inue ;20 i f (k−1>=0)21 i f ( imgDespues [ ind ]=imgAntes [ ind−numElemSlice ] )22 cont inue ;23 i f ( k+1<n s l i c e s )24 imgDespues [ ind ]=imgAntes [ ind+numElemSlice ] ;25 }26 }27
Para este caso se obtiene que el tiempo tambien es menor:
El codigo de C paralelizado ha tardado una media de: 1.212789 s
ITKMEX 83
ITKMEX
El proposito sera ver como se puede incluir codigo de las librerıas ITK en archivosMEX que seran ejecutados desde MATLAB.
Para ello, a partir del codigo desarrollado en el primer ejercicio del informe (ITK)se convertira en un archivo MEX que posteriormente se probara con el script script-Binomial.m Ademas, para este caso, se introduciran manualmente los valores conlos que se quiere trabajar para la umbralizacion.
Filtro binomial
El archivo CMakeLists.txt sera similar mientras que el archivo de cabecera um-bralizacionITKMEX.h contendra cosas tanto de ITK como de MEX:
1 #inc lude ”mex . h”2 #inc lude <i tkImage . h>3 #inc lude <i t k ImageReg ion I t e ra to r . h>4 #inc lude <i tk ImageReg ionConst I te rator . h>5 #inc lude <i tkBinaryThresho ld ImageFi l t e r . h>
Propio de MEX:
1 typede f unsigned char PixelEnt ;2 typede f unsigned char P i x e l S a l ;3
Propio de ITK:
1 const unsigned i n t numDims = 2 ;2 typede f i t k : : Image< PixelEnt , numDims > ImageEnt ;3 typede f i t k : : Image< Pixe lSa l , numDims > ImageSal ;
Nuevas clases:
1 typede f i t k : : ImageRegionIterator< ImageEnt > I t e r a t o r ;2 typede f i t k : : ImageRegionConstIterator< ImageSal > Cons t I t e ra to r ;
Propio de MEX:
1 typede f i t k : : BinaryThresholdImageFi l ter< ImageEnt , ImageSal > Thre sho ldF i l t e r ;2
3 void umbra l i zac ion ( PixelEnt ∗ imgEnt , mwSize numDims , const mwSize∗ dimImgEnt , PixelEntumbInf , PixelEnt umbSup , P i x e l S a l ∗ imgSal ) ;
4
En esta ultima funcion sin embargo, se observa un cambio, ya que recibe dosparamentros mas, el valor inferior y superior de umbralizacion de la imagen deentrada.
84 APENDICE D. ANEXO: ITK, MEX Y OPENMP
Resultado
Tras seguir los pasos y obtener el archivo umbralizacionITKMEX.mexw64 se desa-rrolla la siguiente funcion de test para poder obtener las imagenes:
1 imEnt=imread ( ’ cameraman . t i f ’ ) ;2 umbInf=20; umbSup=100;3 imSal=umbralizacionITKMEX ( imEnt , umbInf , umbSup) ;4 imshow ( [ imEnt , imSal ] )
Figura D.6: Resultado obtenido
Bibliografıa
[1] Xabier Artaechevarria, Arrate Munoz-Barrutia, and Carlos Ortiz-de Solorzano.Combination strategies in multi-atlas image segmentation: Application to brainmr data. Medical Imaging, IEEE Transactions on, 28(8):1266–1277, 2009.
[2] M.Carmen Tobar Carlos Platero. A label fusion method using conditional ran-dom fields with higher-order potentials: Application to hippocampal segmenta-tion. 2015.
[3] Bruce Fischl, David H Salat, Evelina Busa, Marilyn Albert, Megan Dieterich,Christian Haselgrove, Andre Van Der Kouwe, Ron Killiany, David Kennedy,Shuna Klaveness, et al. Whole brain segmentation: automated labeling of neu-roanatomical structures in the human brain. Neuron, 33(3):341–355, 2002.
[4] Kourosh Jafari-Khouzani, Kost V Elisevich, Suresh Patel, and Hamid Soltanian-Zadeh. Dataset of magnetic resonance images of nonepileptic subjects and tempo-ral lobe epilepsy patients for validation of hippocampal segmentation techniques.Neuroinformatics, 9(4):335–346, 2011.
[5] Shiva Keihaninejad, Rolf A Heckemann, Gianlorenzo Fagiolo, Mark R Symms,Joseph V Hajnal, Alexander Hammers, Alzheimer’s Disease Neuroimaging Initia-tive, et al. A robust method to estimate the intracranial volume across mri fieldstrengths (1.5 t and 3t). Neuroimage, 50(4):1427–1437, 2010.
[6] Kelvin K Leung, Josephine Barnes, Marc Modat, Gerard R Ridgway, Jonat-han W Bartlett, Nick C Fox, Sebastien Ourselin, Alzheimer’s Disease Neuro-imaging Initiative, et al. Brain maps: an automated, accurate and robust brainextraction technique using a template library. Neuroimage, 55(3):1091–1108,2011.
[7] Sean M Nestor, Erin Gibson, Fu-Qiang Gao, Alex Kiss, Sandra E Black, Alzhei-mer’s Disease Neuroimaging Initiative, et al. A direct morphometric comparisonof five labeling protocols for multi-atlas driven automatic segmentation of thehippocampus in alzheimer’s disease. NeuroImage, 66:50–70, 2013.
[8] M Tobar Puente. Optimizacion de una energıa mediante cortes de grafos. seg-mentacion de imagenes. 2014.
[9] Simon K Warfield, Kelly H Zou, and William M Wells. Simultaneous truth andperformance level estimation (staple): an algorithm for the validation of imagesegmentation. Medical Imaging, IEEE Transactions on, 23(7):903–921, 2004.