PDF - thèse - Université Toulouse III
Transcription
PDF - thèse - Université Toulouse III
THÈSE En vue de l'obtention du DOCTORAT DE L’UNIVERSITÉ DE TOULOUSE Délivré par l'Université Toulouse III - Paul Sabatier Spécialité : Radiophysique et Imagerie Médicales Présentée et soutenue par Guillaume VIGUIE Le 18 décembre 2008 APPORT DE LA PROGRAMMATION GRAPHIQUE POUR LA RECONSTRUCTION RAPIDE D’IMAGES 3D EN TOMOGRAPHIE PAR EMISSION MONOPHOTONIQUE JURY : Jean-Louis BARAT, Professeur, Université de Bordeaux, Rapporteur Denis MARIANO-GOULART, Professeur, Université de Montpellier, Rapporteur Jean-Paul ESQUERRE, Professeur, Université de Toulouse III, Directeur de thèse Dominikus NOLL, Professeur, Université Toulouse III, Directeur de thèse Daniel GOURION, Maître de conférences, Université d’Avignon Pierre GANTET, Maître de conférences, Université Toulouse III Ecole doctorale : Génie Electrique, Electronique, Télécommunications, UPS Unité de recherche : Traceurs et Traitement de l’Image EA3033, Laboratoire de Biophysique 133 Route de Narbonne, 31062 Toulouse Cedex 2 Remerciements Cette thèse a été réalisée en collaboration entre l’équipe d’accueil traceurs et traitement de l’image EA3033, le laboratoire mathématiques pour l’industrie et la physique (UMR5640), pour l’encadrement scientifique et la société Segami qui en a assuré le financement par l’intermédiaire d’une bourse CIFRE. Je remercie M. Jean-Paul Esquerré, chef du service de médecine nucléaire de l’hôpital de Purpan et M. Dominikus Noll, professeur de mathématiques à l’université Paul Sabatier, pour avoir encadré cette thèse, et m’avoir fourni leur aide dans leurs domaines respectifs. Je remercie également M. Denis Mariano-Goulart et M. Jean-Louis Barat, pour avoir accepté d’être mes rapporteurs et m’avoir fourni leurs conseils éclairés pour la correction de ce document. Remerciement tout particulier à M. Pierre Gantet pour l’aide inestimable qu’il a pu m’apporter tout au long de cette thèse par ses grandes connaissances dans le domaine de l’imagerie médicale, ainsi que pour son dévouement. Je remercie M. Daniel Gourion dont les travaux ont servi de base solide pour la correction d’atténuation, M. Pierre Payoux qui est souvent intervenu pour me fournir ses conseils, ainsi que M. Pierre Maréchal. Je remercie la société Segami pour avoir financé cette thèse, tout particulièrement Maleaume Bonnin pour m’avoir beaucoup appris sur la programmation des cartes graphiques. Je remercie le personnel du laboratoire de Biophysique en particulier Mme. Pierrette Azuelos. Je tiens à remercier mes parents sans qui je ne serais là, mes grands-parents sans qui je ne serais là, mes arrières grands-parents… etc. Et à toute ma famille en général, que ce soit pour la fourniture du patrimoine génétique, le soutien moral, les gâteaux et de tout type de nourriture que je n’aurais jamais cuisiné moi-même, etc. Finalement, pour être sûr de ne rien oublier, je remercie toute personne, animal, végétal ou objet 3 qui directement, indirectement, volontairement ou non, aurait contribué à cette thèse. On parle beaucoup de l’effet des battements d’ailes des papillons, mais on oublie souvent de remercier les dits papillons, car même si certains produisent des cyclones, il ne faut pas généraliser, d’autres ont des effets très positifs. Sans compter tous les autres animaux qui ont des ailes ou pas. 4 Table des matières TABLE DES MATIERES ................................................................................................................................................. 5 TABLE DES ILLUSTRATIONS ....................................................................................................................................... 10 FIGURES ................................................................................................................................................................... 10 ABREVIATIONS ET NOTATIONS ................................................................................................................................. 14 INTRODUCTION ........................................................................................................................................................ 17 1. ACCELERATION MATERIELLE AVEC LE GPU ...................................................................................................... 21 1.1. LA CARTE GRAPHIQUE ET SES COMPOSANTS ............................................................................................................. 21 1.1.1. Le GPU ...................................................................................................................................................... 21 1.1.2. Mémoire vidéo .......................................................................................................................................... 23 1.1.3. Interface entre la carte graphique et la carte mère ................................................................................. 23 1.1.4. BIOS Vidéo ................................................................................................................................................ 23 1.1.5. RAMDAC ................................................................................................................................................... 24 1.2. 2. PIPELINE GRAPHIQUE .......................................................................................................................................... 24 1.2.1. API graphique ........................................................................................................................................... 24 1.2.2. Pilote graphique ....................................................................................................................................... 25 1.2.3. Transformation et éclairage ..................................................................................................................... 25 1.2.4. Assemblage des primitives ....................................................................................................................... 26 1.2.5. Rastérisation ............................................................................................................................................. 26 1.2.6. Application de texture et frame buffer ..................................................................................................... 27 1.2.7. Shaders programmables ........................................................................................................................... 28 1.3. BASES DU GPGPU ............................................................................................................................................. 29 1.4. PLATEFORMES DEDIES AU GPGPU ........................................................................................................................ 32 LA TOMOGRAPHIE PAR EMISSION MONOPHOTONIQUE ................................................................................. 33 2.1. PRINCIPE .......................................................................................................................................................... 33 2.2. RADIOISOTOPES ................................................................................................................................................. 33 2.2.1. Définition .................................................................................................................................................. 33 2.2.2. Le technétium 99 métastable ................................................................................................................... 34 2.2.3. Le thallium 201 ......................................................................................................................................... 34 2.2.4. L’iode 123 ................................................................................................................................................. 34 2.3. GAMMA-CAMERA .............................................................................................................................................. 35 2.3.1. Historique ................................................................................................................................................. 35 2.3.2. Collimateur ............................................................................................................................................... 35 2.3.2.1. Rôle ................................................................................................................................................................. 35 2.3.2.2. Géométries des collimateurs. ......................................................................................................................... 36 5 2.3.2.3. 2.3.3. Cristal scintillant ....................................................................................................................................... 39 2.3.4. Photomultiplicateur .................................................................................................................................. 40 2.3.5. Le système électronique de positionnement ............................................................................................ 40 2.4. RAPPEL SUR LES INTERACTIONS DES PHOTONS AVEC LA MATIERE .................................................................................. 41 2.4.1. Effet photoélectrique ................................................................................................................................ 41 2.4.2. Diffusion Compton .................................................................................................................................... 42 2.4.3. Matérialisation ......................................................................................................................................... 44 2.5. 3. Calcul des performances des collimateurs multi-trous ................................................................................... 37 FACTEURS DE DEGRADATION DE L’IMAGE ................................................................................................................ 44 2.5.1. Atténuation............................................................................................................................................... 44 2.5.2. Diffusion.................................................................................................................................................... 45 2.5.2.1. Définition......................................................................................................................................................... 45 2.5.2.2. Correction ....................................................................................................................................................... 46 2.5.3. Résolution spatiale variable avec la distance ........................................................................................... 47 2.5.4. Effet de volume partiel ............................................................................................................................. 48 2.5.5. Décroissance du taux d’activité ................................................................................................................ 49 2.5.6. Mouvements du patient ........................................................................................................................... 49 2.5.7. Bruit poissonien ........................................................................................................................................ 50 2.5.7.1. Principe ........................................................................................................................................................... 50 2.5.7.2. Correction ....................................................................................................................................................... 50 2.5.7.3. Simulation ....................................................................................................................................................... 51 RECONSTRUCTION TOMOGRAPHIQUE ............................................................................................................ 52 3.1. INTRODUCTION .................................................................................................................................................. 52 3.2. METHODES ANALYTIQUES .................................................................................................................................... 53 3.2.1. Modélisation de l’acquisition .................................................................................................................... 53 3.2.2. Rétroprojection ......................................................................................................................................... 54 3.2.3. Le théorème des projections ..................................................................................................................... 55 3.2.4. La rétroprojection filtrée ........................................................................................................................... 56 3.2.5. La fonction de filtrage............................................................................................................................... 57 3.2.6. Limite des méthodes analytiques ............................................................................................................. 58 3.3. METHODES ITERATIVES ........................................................................................................................................ 59 3.3.1. Algorithme d’Espérance Maximisée ......................................................................................................... 59 3.3.2. Algorithme OSEM ..................................................................................................................................... 60 3.3.3. Algorithme du Gradient Conjugué ............................................................................................................ 62 3.4. OPTIMISATION MATHEMATIQUE ............................................................................................................................ 63 3.4.1. Principe général de l’optimisation ............................................................................................................ 63 3.4.2. Exemples de fonction objectif avec régularisateur ................................................................................... 64 3.4.3. Exemples d’optimiseurs ............................................................................................................................ 65 6 3.5. 4. CALCUL DES COEFFICIENTS DE LA MATRICE DE PROJECTION ET IMPLEMENTATION ............................................................. 66 3.5.1. Projection simple (1D)............................................................................................................................... 66 3.5.2. Projection avec modélisation de la perte de résolution avec la profondeur ............................................. 67 3.5.3. Projection avec atténuation ..................................................................................................................... 67 3.5.4. Calcul implicite des coefficients par rotation du volume .......................................................................... 68 3.5.5. Utilisation du GPU pour accélérer la reconstruction ................................................................................ 69 TOMOGRAPHIE CARDIAQUE ........................................................................................................................... 71 4.1. LE CŒUR .......................................................................................................................................................... 71 4.1.1. Anatomie générale ................................................................................................................................... 71 4.1.2. Vascularisation du cœur ........................................................................................................................... 72 4.1.3. Le ventricule gauche ................................................................................................................................. 73 4.2. 5. ACQUISITION TOMOGRAPHIQUE ............................................................................................................................ 73 4.2.1. Acquisition simple ..................................................................................................................................... 73 4.2.2. Acquisition synchronisée........................................................................................................................... 74 4.3. VISUALISATION AVEC LE « BULL’S EYE » ................................................................................................................. 75 4.4. FANTOMES MATHEMATIQUES DE COEUR ................................................................................................................. 75 4.4.1. Le fantôme MCAT ..................................................................................................................................... 75 4.4.2. Le fantôme NCAT ...................................................................................................................................... 76 CORRECTION DE L’ATTENUATION ................................................................................................................... 77 5.1. CONSEQUENCES ................................................................................................................................................. 77 5.1.1. Exemple d’atténuation sur un cylindre homogène ................................................................................... 77 5.1.2. Atténuation diaphragmatique .................................................................................................................. 78 5.1.3. Atténuation mammaire ............................................................................................................................ 78 5.2. ESTIMATION DE LA CARTE D’ATTENUATION .............................................................................................................. 79 5.2.1. Carte uniforme sur un contour ................................................................................................................. 79 5.2.2. Utilisation d’une source externe de transmission gamma........................................................................ 80 5.2.3. Correction avec utilisation d’un scanner à rayons X ................................................................................. 81 5.2.4. Estimation préalable par utilisation des conditions de consistance ......................................................... 82 5.2.4.1. Conditions de consistance analytiques ........................................................................................................... 82 5.2.4.2. Conditions de consistance algébriques ........................................................................................................... 83 5.2.5. 6. Reconstruction simultanée de l’émission et de l’atténuation ................................................................... 83 METHODES DEVELOPPEES ............................................................................................................................... 86 6.1. CREATION D’UN PROJECTEUR ET D’UN RETROPROJECTEUR SUR GPU............................................................................. 86 6.1.1. Projecteur ................................................................................................................................................. 87 6.1.1.1. Base ................................................................................................................................................................. 87 6.1.1.2. Prise en compte de la perte de résolution avec la profondeur ....................................................................... 87 6.1.1.3. Atténuation ..................................................................................................................................................... 89 7 6.1.1.4. Fan beam ......................................................................................................................................................... 89 6.1.1.5. Algorithme ...................................................................................................................................................... 90 6.1.2. 6.1.2.1. Base ................................................................................................................................................................. 90 6.1.2.2. Prise en compte de la perte de résolution avec la profondeur ....................................................................... 90 6.1.2.3. Atténuation ..................................................................................................................................................... 90 6.1.2.4. Fan beam ......................................................................................................................................................... 91 6.1.2.5. Algorithme ...................................................................................................................................................... 91 6.2. VERSION CPU DU PROJECTEUR ET DU RETROPROJECTEUR ........................................................................................... 91 6.3. OSEM ............................................................................................................................................................. 92 6.3.1. Emission .................................................................................................................................................... 92 6.3.2. Transmission ............................................................................................................................................. 93 6.3.3. Optimisation de l’émission et de la transmission en alternance .............................................................. 94 6.4. GRADIENT CONJUGUE ......................................................................................................................................... 95 6.5. METHODE AVEC KNITRO .................................................................................................................................... 95 6.5.1. Introduction .............................................................................................................................................. 95 6.5.2. Objectif de Poisson ................................................................................................................................... 96 6.5.3. Objectif de Gauss ...................................................................................................................................... 98 6.5.4. Calcul du gradient pour l’atténuation....................................................................................................... 99 6.5.5. Estimation par zones .............................................................................................................................. 100 6.5.6. Régularisation ......................................................................................................................................... 100 6.6. PLATEFORME DE TEST ET DONNEES UTILISEES ......................................................................................................... 101 6.6.1. Fantôme numérique de cœur NCAT........................................................................................................ 101 6.6.2. Données cliniques ................................................................................................................................... 103 6.6.2.1. Examen TEMP-CT avec atténuation diaphragmatique .................................................................................. 103 6.6.2.2. Base de données de 33 TEMP myocardiques ................................................................................................ 104 6.6.3. Affichage des trois vues .......................................................................................................................... 104 6.6.4. Maximum Intensity Projection................................................................................................................ 105 6.6.5. Bull’s Eye ................................................................................................................................................. 106 6.7. 7. Rétroprojecteur......................................................................................................................................... 90 SIMULATEUR DE MONTE-CARLO ......................................................................................................................... 107 6.7.1. Algorithme général ................................................................................................................................. 107 6.7.2. Version GPU ............................................................................................................................................ 109 RESULTATS ACCELERATION GPU ................................................................................................................... 111 7.1. EVALUATION DE LA QUALITE DE RECONSTRUCTION .................................................................................................. 111 7.1.1. Comparaison OSEM/Gradient Conjugué ................................................................................................ 111 7.1.2. Influence du nombre de sous-ensembles ................................................................................................ 114 7.1.3. Importance de la précision de l’interpolation ......................................................................................... 116 7.1.4. Influence de la correction symétrique/asymétrique de l’atténuation .................................................... 118 8 7.1.5. 7.2. TEMPS DE CALCULS ........................................................................................................................................... 120 7.2.1. Temps de calculs sur la 7950GX2 ............................................................................................................ 120 7.2.2. Temps de calculs sur la GTX 280 ............................................................................................................. 123 7.3. 8. Comparaison OSEM GPU/CPU ................................................................................................................ 118 SIMULATEUR DE MONTE CARLO .......................................................................................................................... 124 RESULTATS CORRECTION D’ATTENUATION A PARTIR DES DONNEES D’EMISSION ........................................ 125 8.1. ETUDE EN SIMULATION ...................................................................................................................................... 125 8.1.1. Atténuation seule inconnue .................................................................................................................... 125 8.1.1.1. Activité uniforme........................................................................................................................................... 125 8.1.1.2. Activité réaliste ............................................................................................................................................. 126 8.1.2. Reconstruction simultanée activité et atténuation ................................................................................ 127 8.1.2.1. Acquisition sur 360° sans bruit ...................................................................................................................... 127 8.1.2.2. Acquisition sur 180° avec bruit poissonnien ................................................................................................. 128 8.2. ETUDE SUR PATIENTS......................................................................................................................................... 129 8.2.1. Exemple d’atténuation diaphragmatique ............................................................................................... 129 8.2.2. Exemple d’atténuation mammaire ......................................................................................................... 130 8.2.3. Etude des Bull’s Eyes d’une série de patients référencés ........................................................................ 131 CONCLUSION .......................................................................................................................................................... 135 BIBLIOGRAPHIE ...................................................................................................................................................... 138 BIBLIOGRAPHIE PERSONNELLE EN RELATION AVEC LA THESE................................................................................. 147 ANNEXE A. ALGORITHME DE CALCUL DE LA DISTRIBUTION ANGULAIRE DES PHOTONS COMPTON EN FONCTION DE LEUR ENERGIE E0 ............................................................................................................................................... 148 ANNEXE B. ALGORITHME DU PROJECTEUR AVEC GPU ....................................................................................... 149 ANNEXE C. ALGORITHME DU RETROPROJECTEUR AVEC GPU ............................................................................ 151 ANNEXE D. EXEMPLE DE PROGRAMME GPGPU ................................................................................................. 153 9 Table des illustrations Figures FIGURE 1-1 EVOLUTION DE LA PUISSANCE DES GPU (SOURCE : NVIDIA) .......................................................................................... 22 FIGURE 1-2 PIPELINE GRAPHIQUE ............................................................................................................................................. 24 FIGURE 1-3 RASTERISATION D’UNE LIGNE DEFINIE PAR DEUX SOMMETS A ET B. ................................................................................. 27 FIGURE 2-1 REPRESENTATION DES DIFFERENTES GEOMETRIES DE COLLIMATEURS ............................................................................... 36 FIGURE 2-2 : REPONSES SIMULEES POUR UNE SOURCE PONCTUELLE DE 99M TC DE 9 COLLIMATEURS DE MEME RESOLUTION SPATIALE, POUR DIFFERENTES EPAISSEURS DE CLOISONS (A) : 0,12MM – ON NOTE UNE PENETRATION SEPTALE IMPORTANTE, (B) : 0,25 MM, (C) : 0,28 MM, ET POUR DIFFERENTES DIMENSIONS DE TROUS, (1) : 2 MM, (2) : 3 MM, (3) : 4 MM. (D’APRES [16]). .......................... 38 FIGURE 2-3 SCHEMA D'UN PHOTOMULTIPLICATEUR COUPLE A UN SCINTILLATEUR .............................................................................. 40 FIGURE 2-4 PREDOMINANCE RELATIVE DES TROIS PRINCIPALES INTERACTIONS PHOTON-MATIERE, EN FONCTION DE L’ENERGIE DES PHOTONS GAMMA ET DU NUMERO ATOMIQUE DU MILIEU.................................................................................................................. 41 FIGURE 2-5 SCHEMATISATION DE L’EFFET PHOTOELECTRIQUE ........................................................................................................ 41 FIGURE 2-6 SCHEMATISATION DE LA DIFFUSION COMPTON ........................................................................................................... 42 FIGURE 2-7 DISTRIBUTION ANGULAIRE DES PHOTONS DIFFUSES COMPTON POUR TROIS ENERGIES DE PHOTONS INCIDENTS : 70, 150 ET 200 KEV. .......................................................................................................................................................................... 43 FIGURE 2-8 SCHEMATISATION DE LA MATERIALISATION................................................................................................................. 44 FIGURE 2-9 PHENOMENE D’ATTENUATION ................................................................................................................................. 45 FIGURE 2-10 ARTEFACTS DUS A L’EFFET COMPTON...................................................................................................................... 46 FIGURE 2-11 : ILLUSTRATION DE LA VARIATION DE LA REPONSE DU COLLIMATEUR POUR TROIS SOURCES PONCTUELLES DANS DEUX PLANS DE PROJECTIONS. LA REPONSE IMPULSIONNELLE S’ELARGIT QUAND LA DISTANCE SOURCE-DETECTEUR AUGMENTE ............................... 48 FIGURE 2-12 : BRUIT POISSONIEN EN FONCTION DU NOMBRE DE PHOTONS DETECTES......................................................................... 50 FIGURE 3-1 PROJECTION D’ANGLE Θ=0 (A) D’UN EXAMEN DE PERFUSION CEREBRALE, ET SINOGRAMME POUR Z CORRESPONDANT A LA LIGNE ROUGE (B). ................................................................................................................................................................ 52 FIGURE 3-2 VOLUME DE LA DISTRIBUTION DU TRACEUR D’UNE PERFUSION CEREBRALE, VISUALISE SOUS LES PLANS AXIAL, CORONAL ET SAGITTAL. ................................................................................................................................................................... 52 FIGURE 3-3 RELATION ENTRE LE SYSTEME DE COORDONNEES FIXE (X,Y) ET LE SYSTEME DE COORDONNEES TOURNANT (T,L), Θ ETANT L’ANGLE DE ROTATION PAR RAPPORT A L’AXE X. ............................................................................................................................. 54 FIGURE 3-4 PROJECTIONS CHOISIES POUR COMPOSER UN SOUS-ENSEMBLE (EN CLAIR) A PARTIR D’UN ENSEMBLE DE 64 PROJECTIONS PARTITIONNE EN 8 SOUS-ENSEMBLES ............................................................................................................................... 61 FIGURE 3-5 DISCRETISATION DE L’OPERATEUR DE PROJECTION. ...................................................................................................... 66 FIGURE 3-6 : MODELISATION 1D ET 3D DE LA PROJECTION D’UN VOXEL. EN 3D LA REPONSE S’ETALE SUR PLUSIEURS PIXELS, DU FAIT DE LA RESOLUTION LIMITEE. ................................................................................................................................................... 67 FIGURE 3-7 DISCRETISATION DE L’OPERATEUR DE PROJECTION, CAMERA PARALLELE A LA GRILLE DES PIXELS PAR ROTATION DU VOLUME. ...... 68 FIGURE 4-1 SCHEMA DU CŒUR (SOURCE : WIKIMEDIA COMMONS) ................................................................................................ 71 10 FIGURE 4-2 ARTERES CORONAIRES (CC PATRICK J. LYNCH, 2006) .................................................................................................. 72 FIGURE 4-3 SCHEMA VENTRICULES DROITS ET GAUCHE ET PLANS DE COUPE. ..................................................................................... 73 FIGURE 4-4 CARTE D’ACTIVE EN TOMOGRAPHIE CARDIAQUE APRES REORIENTATION D’UN CŒUR NORMAL. ............................................. 74 FIGURE 4-5 IMAGE RECONSTRUITE DE TOMOGRAPHIE CARDIAQUE AVEC DEFAUT DE PERFUSION DE LA PAROI INFERIEURE. .......................... 74 FIGURE 4-6 CARTE POLAIRE DES ACTIVITES CARDIAQUES (BULL’S EYE). CŒUR NORMAL A GAUCHE ET HYPOFIXATION INFERIEURE A DROITE. .. 75 FIGURE 4-7 FANTOME NCAT, DISTRIBUTION D’ACTIVITE. ............................................................................................................. 76 FIGURE 4-8 FANTOME NCAT, CARTE D’ATTENUATION. ................................................................................................................ 76 FIGURE 5-1 RECONSTRUCTION DES PROJECTIONS ATTENUEES D’UN FANTOME NUMERIQUE REPRESENTANT UN CYLINDRE HOMOGENE SANS CORRECTION D’ATTENUATION......................................................................................................................................... 77 FIGURE 5-2 VUE CORONALE D’UNE ATTENUATION DIAPHRAGMATIQUE. IMAGE TEMP SANS CORRECTION, IMAGE CT, IMAGE TEMP CORRIGEE DE L’ATTENUATION (ACQUISITION TEMP/CT). .................................................................................................................. 78 FIGURE 5-3 VUE SAGITTALE D’UNE ATTENUATION MAMMAIRE. IMAGE TEMP SANS CORRECTION, IMAGE CT, IMAGE TEMP CORRIGEE DE L’ATTENUATION (ACQUISITION TEMP/CT). ...................................................................................................................... 79 FIGURE 6-1 INTERFACE DE LA PLATEFORME DE TEST ................................................................................................................... 101 FIGURE 6-2 FANTOME NCAT D’ATTENUATION ET EMISSION ........................................................................................................ 102 FIGURE 6-3 ACQUISITION TEMP/CT AVEC ATTENUATION DIAPHRAGMATIQUE. .............................................................................. 104 FIGURE 6-4 SCHEMA POUR LA GENERATION DU BULL’S EYE ......................................................................................................... 107 FIGURE 7-1 EVOLUTION DE L’ERREUR AVEC LES ITERATIONS AVEC OSEM 1 SUBSET (EM) ET LE GRADIENT CONJUGUE (GC) AVEC (+AC) OU SANS CORRECTION D’ATTENUATION ET AVEC (3D) OU SANS (1D) PRISE EN COMPTE DU COLLIMATEUR SUR LE FANTOME NCAT EN PRECISION 32 BITS. .................................................................................................................................................... 112 FIGURE 7-2 EVOLUTION DE L’ERREUR AVEC LES ITERATIONS AVEC OSEM3D+AC 1ET LE GRADIENT CONJUGUE+AC SELON LA PRECISION 16BITS OU 32BITS SUR LE FANTOME NCAT. ................................................................................................................... 112 FIGURE 7-3 COMPARAISON VISUELLE PAR LES DIFFERENTES METHODES DE RECONSTRUCTION SUR LE FANTOME NCAT. .......................... 113 FIGURE 7-4 EVOLUTION DE L’ERREUR AVEC LE NOMBRE DE MISE A JOUR EN FONCTION DU NOMBRE DE SOUS-ENSEMBLES POUR UNE RECONSTRUCTION OSEM1D+AC SUR LE FANTOME NCAT. .............................................................................................. 114 FIGURE 7-5 EVOLUTION DE L’ERREUR AVEC LE NOMBRE DE MISE A JOUR EN FONCTION DU NOMBRE DE SOUS-ENSEMBLES POUR UNE RECONSTRUCTION OSEM3D+AC SUR LE FANTOME NCAT. .............................................................................................. 115 FIGURE 7-6 EVOLUTION DE L’ERREUR AVEC LE NOMBRE DE MISE A JOUR EN FONCTION DU NOMBRE DE SOUS-ENSEMBLES POUR OSEM3D+AC AVEC UN NOMBRE DE COUPS TRES FAIBLE (PROJECTIONS DE TYPE DATSCAN AVEC UN MAXIMUM DE 10) ................................... 115 FIGURE 7-7 EVOLUTION DE L’ERREUR AVEC LE NOMBRE D’ITERATIONS POUR CHAQUE PRECISION ET CHAQUE MODE D’INTERPOLATION SUR LE FANTOME NCAT. ...................................................................................................................................................... 116 FIGURE 7-8 COMPARAISON VISUELLE EN FONCTION DU MODE D’INTERPOLATION ET DE LA PRECISION EN VIRGULE FLOTTANTE SUR UNE PERFUSION CEREBRALE. ............................................................................................................................................... 117 FIGURE 7-9 EVOLUTION DE L’ERREUR AVEC LES ITERATIONS EN OSEM3D+AC SELON LE MODE D’ATTENUATION AVEC LA CARTE D’ATTENUATION EXACTE SUR LE FANTOME NCAT. ........................................................................................................... 118 FIGURE 7-10 EVOLUTION DE L’ERREUR AVEC LES ITERATIONS EN OSEM3D+AC AVEC CORRECTION D’ATTENUATION POUR LES VERSIONS CPU ET GPU SUR LE FANTOME NCAT. ................................................................................................................................. 119 FIGURE 8-1 ATTENUATION RECONSTRUITES SUR FANTOME NCAT A PARTIR DE PROJECTIONS 360° SANS BRUIT AVEC ACTIVITE UNIFORME. . 126 11 FIGURE 8-2 ATTENUATION RECONSTRUITE SUR FANTOME NCAT A PARTIR DE PROJECTIONS 360° SANS BRUIT. ..................................... 126 FIGURE 8-3 ATTENUATION ET EMISSION RECONSTRUITE SUR FANTOME NCAT A PARTIR DE PROJECTIONS 360° SANS BRUIT AVEC OSEM3DA. .............................................................................................................................................................................. 127 FIGURE 8-4 RECONSTRUCTION EMISSION SUR FANTOME NCAT A PARTIR DE PROJECTIONS 360° SANS BRUIT AVEC BULL’S EYE................. 128 FIGURE 8-5 RECONSTRUCTION EMISSION SUR FANTOME NCAT A PARTIR DE PROJECTIONS 180° AVEC BRUIT AVEC BULL’S EYE................. 128 FIGURE 8-6 RECONSTRUCTION CARDIAQUE DANS LE CAS D’UNE ATTENUATION DIAPHRAGMATIQUE. .................................................... 129 FIGURE 8-7 RECONSTRUCTION CARDIAQUE DANS LE CAS D’UNE ATTENUATION MAMMAIRE. .............................................................. 130 FIGURE 8-8 BULL’S EYES MOYENS SUR 8 SUJETS AVEC ATTENUATION DIAPHRAGMATIQUE SUPPOSEE. .................................................. 131 FIGURE 8-9 BULL’S EYES MOYENS SUR 10 SUJETS AVEC ATTENUATION MAMMAIRE SUPPOSEE. ........................................................... 132 FIGURE 8-10 BULL’S EYES MOYENS SUR 9 SUJETS NORMAUX. ...................................................................................................... 133 FIGURE 8-11 BULL’S EYES MOYENS SUR 6 SUJETS AVEC HYPOFIXATION INFERIEURE SUPPOSEE. ........................................................... 134 12 Tableaux TABLEAU 5-1 NOMBRES HOUNSFIELD ET TISSUS .......................................................................................................................... 81 TABLEAU 6-1 ACTIVITE ET ATTENUATIONS FIXEES POUR LE FANTOME NCAT. .................................................................................. 102 TABLEAU 6-2 STRUCTURE D’UN PHOTON EN MEMOIRE VIDEO ...................................................................................................... 110 3 TABLEAU 7-1 TEMPS DE CALCULS SUR 7950GX2 POUR 8 ITERATIONS ET 5 SOUS-ENSEMBLES : CERVEAU 128 120 PROJECTIONS. .......... 120 3 TABLEAU 7-2 TEMPS DE CALCULS SUR 7950GX2 POUR 8 ITERATIONS ET 5 SOUS-ENSEMBLES : CŒUR 64 30 PROJECTIONS. .................. 120 TABLEAU 7-3 FACTEUR D’ACCELERATION SUR 7950GX2 POUR OSEM3D 8 ITERATIONS ET 5 SOUS-ENSEMBLES EN FONCTION DE LA TAILLE DES DONNEES ............................................................................................................................................................ 121 3 TABLEAU 7-4 TEMPS PRIS PAR CHACUN DES OPERATEURS SUR 7950GX2 POUR UNE ITERATION EM 3D SUR UN VOLUME 128 , 120 PROJECTIONS. ........................................................................................................................................................... 122 TABLEAU 7-5 PROPORTION DU TEMPS DE CALCUL TOTAL PRIS PAR LES OPERATEURS EN FONCTION DU TYPE DE RECONSTRUCTION SUR GPU. .............................................................................................................................................................................. 122 3 TABLEAU 7-6 TEMPS DE CALCULS SUR GTX 280 POUR 8 ITERATIONS ET 5 SOUS-ENSEMBLES : CERVEAU 128 120 PROJECTIONS............. 123 3 TABLEAU 7-7 TEMPS DE CALCULS SUR GTX 280 POUR 8 ITERATIONS ET 5 SOUS-ENSEMBLES : CŒUR 64 30 PROJECTIONS..................... 123 TABLEAU 7-8 FACTEUR D’ACCELERATION SUR GTX 280 POUR OSEM3D 8 ITERATIONS ET 5 SOUS-ENSEMBLES EN FONCTION DE LA TAILLE DES DONNEES. ................................................................................................................................................................ 124 TABLEAU 8-1 PROPORTION DE COUPS PAR RAPPORT AU TOTAL DANS LES BULL’S EYES AVEC OSEM3D ET OSEM3DA SUR DES EXAMENS AVEC ATTENUATION DIAPHRAGMATIQUE SUPPOSEE. ......................................................................................................... 131 TABLEAU 8-2 PROPORTION DE COUPS PAR RAPPORT AU TOTAL DANS LES BULL’S EYES AVEC OSEM3D ET OSEM3DA SUR DES EXAMENS AVEC ATTENUATION MAMMAIRE SUPPOSEE. .................................................................................................................... 132 TABLEAU 8-3 PROPORTION DE COUPS PAR RAPPORT AU TOTAL DANS LES BULL’S EYES AVEC OSEM3D ET OSEM3DA SUR DES EXAMENS CONSIDERES NORMAUX. .............................................................................................................................................. 133 TABLEAU 8-4 PROPORTION DE COUPS PAR RAPPORT AU TOTAL DANS LES BULL’S EYES AVEC OSEM3D ET OSEM3DA SUR DES EXAMENS AVEC HYPOFIXATION INFERIEURE SUPPOSEE. .................................................................................................................... 134 13 Abréviations et notations AGP : Accelerated Graphics Port. Norme de bus informatique. API : Application Programming Interface. Interface de programmation. ARB : OpenGL Architecture Review Board. Groupe d’industriels surveillant la specification OpenGL. ART : Algebric Reconstruction Technique. Cg : C for graphics. Langage shaders. CPU : Central Processing Unit. Processeur central. CT : Computed Tomography. Scanner à rayon X. CTM : Close To Metal. Interface de programmation GPGPU. CUDA : Compute Unified Device Architecture. Interface de programmation GPGPU. DVI : Digital Video Interface. EM : Algorithme d’Espérance Maximisée. FLOPS : FLoating-point Operations Per Second. Operation en virgule flottante par seconde. GLSL : OpenGL Shading Language. Langage shaders. GPU : Graphic Processing Unit. Processeur graphique. GPGPU : General Purpose computing on Graphics Processing Units. Utilisation des GPUs pour réaliser des calculs généraux non liés à l’affichage graphique. ISA : Industry Standart Architecture. Norme de bus informatique. KNITRO : Karush Non-linear Interior point Trust Region Optimization. Algorithme d’optimisation L-BFGS-B : L pour "Limited memory", B pour "Bounded", BFGS les initiales de Broyden Fletcher Goldfarb Shano. Algorithme d’optimisation. LUT : Look-Up Table. Table de correspondance permettant d’associer des valeurs. MCAT : Mathematical CArdiac Torso. Fantôme numérique de cœur. MIP : Maximum Intensity Projection. NCAT : NURBS-based CArdiac Torso. Fantôme numérique de cœur. OpenGL : Open Graphic Library. OSEM : Ordered Subsets Expectation Maximisation, version d’EM utilisant les sous-ensembles. OSEM1D : OSEM sans prise en compte de la perte de résolution avec la profondeur. 14 OSEM2D : OSEM avec prise en compte de la perte de résolution avec la profondeur uniquement dans le plan de la coupe. OSEM3D : OSEM avec prise en compte de la perte de résolution avec la profondeur en 3D. OSEMA : OSEM avec calcul Alterné de l’émission et de la transmission à partir des seules données d’émission, de manière à corriger les images d’activité de l’Atténuation OSEM3DA : OSEMA avec prise en compte de la perte de résolution avec la profondeur en 3D. PCI : Peripheral Component Interconnect. Norme de bus informatique. RAM : Random Access Memory. Mémoire vive ou mémoire centrale. RAMDAC : Random Access Memory Digital-Analog Converter. ROM : Read Only Memory. Mémoire morte. SIMD : Single Instruction Mutilple Data. Une seule instruction, données multiples, mode de calcul parallèle. TEMP : Tomographie d’Emission MonoPhotonique. SPECT en anglais : Single Photon Emission Computed Tomography. 15 16 Introduction L’imagerie médicale est devenue un outil indispensable dans l’établissement de nombreux diagnostics. Certaines modalités comme la radiographie et le scanner à rayons X s’attachent à visualiser l’anatomie du corps humain, tandis que d’autres permettent la visualisation de son fonctionnement. Parmi ces dernières, on trouve les techniques d’imagerie de médecine nucléaire, qui permettent de visualiser la répartition d’un produit radioactif (le traceur) préalablement administré dans le corps humain. Le but est d’obtenir des informations sur le fonctionnement de l’organe ciblé, comme l’irrigation, la capacité de fixation et la redistribution du traceur. Le présent travail concerne le développement de techniques de traitement d’image dans le domaine de la Tomographie par Emission Mono-Photonique (TEMP). La TEMP est une modalité d’imagerie nucléaire qui utilise un détecteur de photons gamma, appelée gamma caméra, pour enregistrer plusieurs images de la concentration radioactive selon différents plans de projection en effectuant une rotation autour du patient. La principale problématique réside dans la mise en œuvre d’un algorithme de reconstruction performant permettant d’obtenir, à partir de cet ensemble d’images planes (2D), la distribution volumique (3D) du traceur. Le problème de la reconstruction d’un volume à partir de ses projections est résolu depuis longtemps dans le cas théorique idéal, c'est-à-dire sans le bruit statistique lié à la désintégration radioactive ni la prise en compte des nombreux facteurs physiques qui dégradent la qualité des images acquises. Parmi ces facteurs, citons les plus importants : - Premièrement, la perte de résolution spatiale, variable avec la distance entre la source d’émission et le détecteur. Cette perte de résolution est liée à « l’optique » utilisée par les gamma caméras, appelée collimateur. - Un autre facteur perturbant la qualité d’image est l’atténuation : un photon émis depuis l’intérieur du sujet examiné a une certaine probabilité de disparaître avant d’arriver au détecteur. Cette probabilité dépend de la distance parcourue au sein des différents tissus traversés, et de la nature de ces tissus. Dans le cas de la tomographie cardiaque, il en résulte des artefacts de reconstruction qui peuvent rendre le diagnostic difficile, voire erroné. 17 - Enfin, un troisième facteur est la diffusion Compton : un photon peut changer de direction avant d’être détecté. Ce phénomène se traduit par une sorte de voile de fond, diminuant le contraste dans les images. L’étude de la correction de ces différents phénomènes physiques a déjà fait l’objet de nombreux travaux. Ces travaux ont montré l’intérêt des méthodes itératives de reconstruction, par rapport aux méthodes analytiques, comme la rétroprojection filtrée. En effet, ces dernières, bien qu’encore très utilisées en routine clinique du fait de leur rapidité d’exécution, sont difficilement adaptables à la prise en compte des facteurs de dégradation physiques. Par contre, les méthodes itératives permettent d’intégrer plus efficacement au sein du processus de reconstruction une modélisation fine de ces phénomènes physiques. L’algorithme le plus populaire en TEMP est OSEM (Ordered Subsets Expectation Maximisation), que l’on nomme OSEM3D lorsque la perte de résolution avec la profondeur est modélisée. Or, l’inconvénient majeur des méthodes itératives est, qu’elles demandent beaucoup plus de temps de calculs que les méthodes analytiques, ce qui fait que ces méthodes sont encore peu utilisées en routine clinique. Le premier objectif de cette thèse est donc de chercher une méthode rapide de reconstruction des images en TEMP intégrant les principaux facteurs physiques de dégradation des images, notamment la perte de résolution et l’atténuation. Pour atteindre cet objectif, notre axe de recherche s’est orienté dans un domaine très particulier de l’informatique : celui de la programmation directe des cartes graphiques. En effet, le marché actuel des jeux vidéo pousse les constructeurs de cartes graphiques à proposer à moindre coût des processeurs de plus en plus performants dans le but d’améliorer le réalisme des scènes virtuelles dynamiques 3D. Les processeurs graphiques (GPU : Graphics Processing Unit) ont récemment acquis plus de flexibilité dans leur utilisation, ce qui permet de les détourner de leur utilisation graphique habituelle, et de s’en servir pour des calculs plus généraux, ce que l’on nomme le GPGPU (General-purpose computing on graphics processing units). Les GPUs sont conçus pour traiter de grands flux de données en parallèle, chose qui n’était auparavant possible que sur les grilles de processeurs de superordinateurs très couteux ; ce qui, à-priori, offre de bonnes perspectives pour créer une implémentation d’OSEM3D dans un temps raisonnable pour une utilisation en routine clinique. 18 Le deuxième objectif de cette thèse est de chercher une méthode permettant de corriger l’atténuation à partir des seules données d’émission pouvant être appliquée en particulier à la tomographie cardiaque en routine clinique. En effet, corriger l’atténuation en TEMP nécessite généralement de disposer des informations anatomiques supplémentaires sur le patient, en utilisant d’autres modalités d’imagerie comme le scanner à rayons X ou l’emploi d’une source radioactive externe. Les méthodes qui n’utilisent pas ces données dites « de transmission » font l’approximation que l’atténuation est uniforme à l’intérieur du corps. Si une telle approximation peut être justifiée dans certains cas, comme dans celui de l’imagerie cérébrale, il n’en est pas de même en imagerie cardiaque. Or, en pratique quotidienne, il est rare de disposer des données de scanner X permettant de corriger l’atténuation des données TEMP. Depuis ces dernières années, il existe des systèmes hybrides TEMP-scanner qui permettent de réaliser les deux examens sur un même appareil, mais ces systèmes sont encore peu répandus et la réalisation d’une image scanner X augmente la dose d’irradiation patient. Nous avons donc cherché à mettre au point une méthode qui permette de corriger l’atténuation en imagerie cardiaque sans données de transmission. Les travaux effectués jusqu’à présent dans ce domaine étaient limités à la reconstruction de coupes jointives indépendantes, et ne tenaient donc pas compte du phénomène de résolution en 3D. Par ailleurs, à notre connaissance, aucun de ces travaux n’était allé jusqu’à proposer une méthode réellement utilisable et testée sur une série d’examens 3D de patients en routine clinique. Nous avons donc abordé ce sujet de recherche en utilisant la programmation graphique, et en testant la faisabilité de plusieurs méthodes de correction. Le plan de cette thèse comporte deux grandes parties : la première (chapitres 1 à 5) présente un état des lieux des thèmes abordés, et la deuxième partie (chapitres 6 à 8) présente les travaux réalisés. Concernant la première partie, on peut noter que ce travail se situe au carrefour de plusieurs disciplines : informatique, physique, mathématique, et médicale. Aussi, cette première partie n’est pas un exposé spécialisé dans un domaine particulier, mais essaie plutôt de présenter les éléments essentiels concernant les différents domaines dans le but d’introduire les méthodes développées dans la deuxième partie. En premier lieu, nous présentons les bases de l’élément clef de ce travail, à savoir le principe de la programmation graphique et l’utilisation du GPU, principal thème de recherche en informatique de cette thèse. Le deuxième chapitre énonce les généralités sur la TEMP, expliquant le processus d’acquisition ainsi que les phénomènes physiques qui s’y rattachent. Le troisième 19 chapitre parle de la reconstruction des tomographies et décrit les algorithmes mathématiques associés. Le quatrième chapitre présente plus précisément le cas de la tomographie cardiaque et décrit l’anatomie et la physiologie du cœur. Le cinquième chapitre rappelle les différentes méthodes de correction de l’atténuation développées par le passé, plus particulièrement celles utilisant seulement les données de l’émission. Dans la deuxième partie sont présentés les méthodes développées et les résultats obtenus. Le chapitre 6 décrit notamment l’implémentation sur GPU du projecteur et du rétroprojecteur en géométrie 1D et 3D ainsi que l’utilisation des ces opérateurs dans les méthodes de reconstruction OSEM, Gradient Conjugué, et par optimisation KNITRO. Sont présentés notamment la manière de calculer alternativement les images d’activité et d’atténuation à partir des seules données d’émission dans un processus appelé OSEMA (OSEM Alterné) ainsi que les calculs mathématiques détaillés concernant la manière de calculer le gradient des images d’activité et d’atténuation pour l’optimisation simultanée par KNITRO des deux types d’image, en fonction des objectifs envisagés (critères de Poisson ou de Gauss). Par ailleurs, la plateforme de test et les jeux de données utilisés pour tester les algorithmes sont présentés. Enfin, nous décrivons comment nous avons implémenté la méthode de Monte Carlo pour simuler le rayonnement diffusé sur GPU. Les deux derniers chapitres rassemblent les résultats obtenus. Le chapitre 7 évalue les différentes méthodes de reconstruction envisagées, d’abord en comparant ces méthodes entre elles du point de vue de la qualité de la reconstruction, puis en comparant les temps de calcul entre CPU et GPU dans différentes configurations. Le huitième chapitre présente l’évaluation de la correction de l’atténuation à partir des données de l’émission seule, d’abord en simulation avec OSEMA et KNITRO, puis sur les données cliniques réelles dont nous disposions. En conclusion, nous soulignons le gain apporté par la programmation graphique pour la reconstruction en TEMP, permettant l’utilisation en routine clinique des algorithmes de reconstruction tomographiques les plus performants. Ce gain permet également d’envisager d’aller plus loin dans le développement des méthodes de reconstruction, comme le développement de méthodes de résolution simultanée de l’émission et de la carte d’atténuation. Nous terminons par des perspectives de travail, notamment pour améliorer la méthode OSEMA développée. . 20 1. Accélération matérielle avec le GPU Au début, simple élément électronique servant à gérer l’affichage sur les écrans d’ordinateurs, la carte graphique est devenue, au cours du temps, un élément clef de l’ergonomie des ordinateurs et de leur réussite commerciale. En fait, aujourd’hui ces cartes sont dotées d’une puissance de calcul bien supérieure aux processeurs centraux pour certaines tâches. 1.1. LA CARTE GRAPHIQUE ET SES COMPOSANTS La carte graphique ou carte vidéo, a pour objectif principal de convertir les données numériques internes à l’ordinateur en signal compatible avec un moniteur afin d’obtenir une image. Les premières cartes vidéo ne pouvaient effectuer que des calculs en 2D. Vint ensuite l’époque des cartes dites accélératrices 3D qui se présentaient sous la forme d’une carte séparée. Chacune des deux cartes était alors dotée d’un processeur spécifique. Aujourd’hui toutes les cartes gèrent à la fois la 2D et la 3D. 1.1.1. Le GPU Le GPU (Graphic Processing Unit) est un processeur présent sur les cartes graphiques des ordinateurs actuels. A l’origine il était censé décharger le processeur central (CPU) de certaines tâches. Il est spécialisé dans le rendu graphique et la production d’images de synthèse. Ils se sont généralisés à la fin des années 1990, leur puissance a évolué exponentiellement, bien plus que celle des CPUs. Cette remarque est toutefois à pondérer, car même si les GPUs surpassent les CPUs en termes de milliards d’instructions en virgule flottante à la seconde (GFLOPS), ces deux composants s’attaquent à des problèmes très différents. Un CPU est capable de traiter tout type de tâches, il est très flexible. Le GPU, quant à lui va traiter un nombre de tâches plus limitées, mais va être capable de l’appliquer à un très grand nombre de données. Si les premiers GPU avait un pipe-line assez rigide qui ne permettait que d’activer ou de désactiver certaines fonctions, l’introduction d’unités programmables permet aujourd’hui de les utiliser à d’autres fins que le rendu graphique, on parle alors de GPGPU (General-Purpose Computing on Graphics Processing Units). Leur architecture utilise une forme de parallélisme nommée SIMD (Single Instruction Multiple Data). Les GPUs sont dotés de plusieurs unités de traitement, sur les anciennes 21 générations de GPU les unités étaient réparties entre les unités de traitement des sommets (vertex pipeline) et unités de traitement des pixels (pixel pipeline), sur les versions récentes l’architecture est unifiée et il n’y a plus qu’un seul type d’unité de traitement nommé processeur de flux. Par exemple une nVidia GeForce 7950 GX travaille avec 24 unités de pixels et 8 unités de sommets. Les GeForce 8800 GTX plus récentes disposent de 128 processeurs de flux, et les GeForce GTX 280, tout dernier modèle de la marque, de 240 processeurs de flux. Les HD 4850 de la marque ATI, disposent de 800 processeurs de flux, toutefois les différences d’architecture font que la puissance n’est pas directement proportionnelle au nombre de processeurs, la puissance de cette dernière carte étant de l’ordre de celle des GTX 280. Figure 1-1 Evolution de la puissance des GPU (source : Nvidia) L’importance du marché des jeux vidéo permet de grands volumes de production qui conduisent à des économies d’échelle, le coût unitaire de production d’un GPU devient donc relativement faible. Le coût pour une puissance d’un GFLOP était de 50000 $ en 1997 [1], alors que les GPUs actuels sont descendus à moins de 1$/GFLOPS. Ainsi un problème qui, il y a dix ans, aurait nécessité un super ordinateur et engendré des coûts faramineux, peut être aujourd’hui résolu sur des ordinateurs de bureau. L’idée d’implémenter des algorithmes généraux sur du matériel destiné à des applications graphiques a été introduite en 1990 avec Lengyel qui l’utilise pour planifier les mouvements d’un robot en temps réel [2]. Un peu plus tard en 1994, Cabral l’utilise pour accélérer la reconstruction tomographique [3], travaux qui vont nous intéresser et dont nous reparlerons au chapitre 3. 22 1.1.2. Mémoire vidéo La mémoire vidéo est une mémoire embarquée sur la carte graphique, dédiée au stockage des éléments destinés à être affichés. Elle offre des temps d’accès plus courts et un débit nettement supérieur à la mémoire centrale de par sa voie de communication privilégiée avec le processeur graphique. Cette mémoire va permettre de stocker les diverses données géométriques comme les sommets des primitives et colorimétriques comme les textures, ainsi que les images avant affichage, partie de la mémoire vidéo que l’on nomme « frame buffer ». 1.1.3. Interface entre la carte graphique et la carte mère La connexion entre la carte graphique et la carte mère se fait par un port relié à un bus. Cette connexion permet au CPU et à la mémoire centrale de communiquer avec le GPU et la mémoire vidéo. Les premières cartes graphiques utilisaient les bus standard comme les bus ISA (Industry Standard Architecture), puis leurs remplaçants les bus PCI (Peripheral Component Interconnect), qui permettent de rajouter des extensions à la carte mère, comme les cartes son, les carte réseaux, etc. En 1997, trouvant le bus PCI trop lent pour l’affichage 3D avec ses 133 Mo/s, Intel lança le bus AGP (Accelerated Graphics Port) destiné exclusivement aux cartes graphiques. Dans sa dernière version le bus AGP atteint des débits de 2Go/s Actuellement, une nouvelle norme, le PCI Express est en train de remplacer le bus AGP avec des débits pouvant aller jusqu’à 8 Go/s. 1.1.4. BIOS Vidéo Le BIOS vidéo de la carte graphique a la même fonction que celui de la carte mère. C’est un petit programme enregistré dans une mémoire morte (ROM) qui sert au démarrage de la carte graphique et à stocker des informations sur la carte graphique, comme par exemple les modes graphiques supportés. 23 1.1.5. RAMDAC Le RAMDAC (random access memory digital-analog converter) permet de convertir les images numériques stockées dans le frame buffer en signaux analogiques à envoyer au moniteur. La fréquence du RAMDAC détermine les taux de rafraîchissement que la carte graphique peut supporter. Il est inutilisé dans le cas d’une connexion DVI (Digital Video Interface) où des signaux numériques sont directement envoyés au moniteur. 1.2. PIPELINE GRAPHIQUE API Graphique Application OpenGL ou CPU DirectX Pilote(Driver) Transformation Assemblage & Eclairage Primitives Rastérisation Application Frame Buffer Texture Vertex Pixel Shader Shader GPU Texture Figure 1-2 Pipeline graphique 1.2.1. API graphique Il existe des APIs (Application Programming Interface, interface de programmation) graphiques, qui permettent de faire abstraction du matériel et d’assurer que quel que soit le GPU sur lequel le programme tourne on ait le même résultat, à condition toutefois que la carte graphique ait les fonctionnalités requises. OpenGL (Open Graphics Library) est une spécification qui définit une API multiplateforme pour la conception d'applications générant des images 3D et 2D. Cette spécification est 24 contrôlée par l’ARB (OpenGL Architecture Review Board), constitué d’un ensemble de sociétés intéressées par la conception d'une interface standard. Il existe de nombreuses implémentations suivant cette norme généralement fournies par les constructeurs de matériels graphiques, avec les pilotes de la carte graphique. L’avantage d’OpenGL est sa grande portabilité qui lui permet de fonctionner sur de nombreux systèmes d’exploitations et architectures. DirectX et plus particulièrement sa composante nommée Direct3D fournit des fonctions similaires mais est uniquement disponible pour les systèmes d’exploitation Windows. 1.2.2. Pilote graphique Le pilote (ou driver en anglais) est un programme qui permet à l’API de communiquer avec le matériel en traduisant les instructions dans un langage spécifique au matériel. Dans le cas des cartes graphiques, il est très important et son implémentation peut affecter les performances, ainsi le temps d’exécution d’un même programme tournant sur GPU peut varier selon la version du pilote. Le moindre bug dans le pilote peut avoir des conséquences catastrophiques. 1.2.3. Transformation et éclairage L’unité transformation et éclairage, également nommée vertex pipeline a pour but de calculer la transformation des vertices (vertex en anglais), les sommets 3D des objets fournis par l’application et les calculs d'éclairage appliqués à ces sommets. Chacun des sommets est défini par : - sa position dans l’espace objet (x,y,z). - sa couleur définie par les composantes rouge, vert, bleu et alpha. - sa normale, un vecteur qui va servir pour calculer comment la lumière va se réfléchir. - sa coordonnée de texture qui permet de définir comment la texture va se plaquer sur l’objet. L’objectif est de projeter les objets de la scène 3D dans l’espace 2D que constitue l’image à afficher. Si nous avons un objet défini par ses sommets et que cet objet doit se déplacer ou tourner, il est bien plus simple de donner des coordonnées de base une fois pour toutes, et de leur appliquer une matrice de transformation, que de calculer et de fournir de nouvelles coordonnées à chaque affichage. C’est ce qu’on nomme la matrice de modèle, elle contiendra toutes les transformations de type translation, rotation et mise à l’échelle que subit l’objet. 25 Les coordonnées de textures associées au vertex, qui permettront plus tard de définir comment va se placer le placage de texture subissent également une transformation au moyen d’une matrice de texture. Viennent ensuite divers effets comme l’éclairage, qui peut être défini pour chaque sommet en fonction de la position de la lumière et de la normale associée au vertex. Au final le tout est transformé par une matrice de projection qui peut donner un effet de perspective ou effectuer une simple projection orthogonale. 1.2.4. Assemblage des primitives L’assemblage des primitives est une étape qui va transformer les sommets en primitives géométriques comme des points, des lignes et des triangles. On y retrouve des opérations comme le culling, par exemple pour spécifier un triangle on peut donner ses sommets dans le sens des aiguilles d’une montre ou dans le sens contraire selon les paramètres. Cela permet de définir si c’est une face avant ou une face arrière. Si le culling est activé on peut décider de ne pas afficher les triangles qui tournent le dos à la caméra. Egalement le clipping va détecter et éliminer les fragments qui sont en dehors de l’écran, et comme le culling éviter ainsi de faire des calculs inutiles. 1.2.5. Rastérisation La rastérisation convertit les primitives géométriques en pixels, aussi nommés fragments. La primitive est définie par son type et ses sommets, les pixels appartenant à la primitive recevront pour caractéristiques (couleur, coordonnées de textures, etc.), une valeur interpolée en fonction de leur distance à chacun des sommets. Ainsi, si deux points d’une ligne sont de couleurs différentes on obtiendra un dégradé Figure 1-3. A noter que la couleur du pixel donnée à la fin de la rastérisation ne sera pas forcément celle qui sera affichée au rendu final, car le module d’application de texture peut encore la modifier. 26 B A Figure 1-3 Rastérisation d’une ligne définie par deux sommets A et B. 1.2.6. Application de texture et frame buffer Une texture est une image qui va être appliquée à une surface ou à un volume 3D. On peut l’assimiler à un papier peint très déformable que l'on applique en 3D en fonction des coordonnées de textures fournies pour chaque sommet. Chaque unité de texture, le texel, contient 4 composantes, rouge, vert, bleu et alpha qui représentent les trois couleurs primaires de la synthèse additive plus l’alpha qui est utilisé pour le mélange des couleurs et sert généralement à créer des effets de transparence. A l’origine il n’y avait que 8 bits par composante car cela suffit pour générer suffisamment de couleurs différentes pour l’œil humain. Mais les cartes actuelles supportent une précision de 16 bits ou 32 bits par composantes. La version 32 bits correspondant à la simple précision de la norme IEEE sur l'arithmétique en virgule flottante (IEEE-754). Le frame buffer ou tampon d’image est un espace mémoire réservé de la mémoire vidéo. Parmi eux le front buffer stocke l’image en cours d’affichage, le back buffer, lui, contient l’image suivante qui est en train d’être générée. Le Z buffer est le tampon qui permet de déterminer quels pixels sont visibles en fonction de leur profondeur (si par exemple un pixel n’en cache pas un autre). Le stencil buffer est un masque utile pour certains algorithmes comme la génération d’ombres portées. Les cartes récentes permettent de définir des frames buffers additionnels. 27 Une texture peut ainsi être directement liée à un frame buffer, et peut ainsi être accédée en écriture directement, sans passer par la mémoire centrale. La texture remplace ainsi l’écran et c’est elle qui reçoit le rendu. On peut ainsi utiliser les textures comme des tableaux de flottants, pour faire du calcul non graphique. Pour le GPGPU, on se contentera d’appliquer la texture sur un carré ou un rectangle qui remplira l’image de sortie. Grâce à un fragment shader, on peut ainsi prendre une ou plusieurs textures en entrée, faire les opérations voulues et les afficher dans une autre texture en sortie. 1.2.7. Shaders programmables Pour donner plus de flexibilité aux GPUs, on a introduit les shaders programmables qui vont permettre de reprogrammer les fonctions câblées du GPU. Pour cela le vertex shader court-circuite le module de transformation et d’éclairage, et le fragment shader se charge du module d’application de texture. Dans un premier temps la programmation des cartes graphiques se faisait par l’intermédiaire d’un langage bas niveau de style assembleur, mais des langages de haut niveau se sont vite développés. Le premier développé fut le Cg Shader Language développé au début de l’année 2001 par nVidia [4], un fabricant de processeurs graphiques, qui fournit une interface de programmation indépendante fonctionnant autant sur OpenGL que DirectX et même sur des cartes avec des processeurs autres que les siens. Pour gérer les différences de fonctionnalités qu’il peut y avoir entre les anciens et les nouveaux GPUs, on utilise des « profils ». Vient ensuite le DirectX High-Level Shader Language (HLSL) qui ne fonctionne qu’avec l’API DirectX [5]. A part ce point, il est quasiment identique à Cg du fait qu’il a été conjointement développé par Microsoft et nVidia. Enfin, l’OpenGL shading language (GLSL) [6] est un langage de shader standardisé par l'ARB qui s’utilise dans OpenGL. Ces trois langages sont très proches syntaxiquement, tous ressemblant au langage C. Leur principale différence étant dans leur mode de compilation. 28 Pour Cg un code assembleur bas niveau intermédiaire est généré en fonction du profil. L’API le transforme ensuite dans un assembleur au format binaire, et ensuite le driver le transforme dans un format spécifique au matériel. Pour DirectX HLSL comme il est lié à l’API, le compilateur le transforme directement en assembleur binaire qui est envoyé au driver. GLSL quant à lui court-circuite toutes ces opérations et envoie directement le code au niveau du driver. L’avantage de cette dernière méthode est que le fabricant de matériel est le plus à même de connaître les optimisations pour chaque instruction, l’inconvénient étant qu’il oblige tous les fabricants à intégrer un compilateur à leurs drivers. 1.3. BASES DU GPGPU Nous n’avons pas à nous soucier du nombre de processeurs dont dispose la carte, le pilote graphique gérant cela de façon transparente. Nous allons juste devoir définir un traitement pour chaque pixel. C’est surtout le fragment shader qui va nous intéresser pour le traitement d’image, car pour chaque pixel affiché dans le frame buffer le même programme va être appliqué. Prenons ce simple programme en GLSL qui réalise une simple addition de deux textures : uniform sampler2D Texture1; uniform sampler2D Texture2; void main() { vec4 texelColor1 = texture2D( Texture1, gl_TexCoord[0].xy ); vec4 texelColor2 = texture2D( Texture2, gl_TexCoord[0].xy ); gl_FragColor = texelColor1 + texelColor2; } 29 Les paramètres précédés de uniform sont donnés à l’extérieur du shader par le programme principal. gl_TexCoord[0].xy est la coordonnée en x et y du pixel sur le frame buffer de sortie, L’instruction texture2D va chercher dans une texture en entrée la couleur d’un pixel à une certaine coordonnée. Dans cet exemple on va donc chercher dans les deux textures en entrée un pixel situé à la même coordonnée que le pixel de sortie. gl_FragColor est la couleur du pixel de sortie, ici on lui affecte la somme des couleurs des deux textures. Dans le programme principal, le code OpenGL aura la forme suivante : frameBuffer->attach(textureOut); program->setTexParameter("Texture1", texture1); program->setTexParameter("Texture2", texture2); program->enable(); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex2f(0,0); glTexCoord2f(0,1); glVertex2f(0,1); glTexCoord2f(1,1); glVertex2f(1,1); glTexCoord2f(1,0); glVertex2f(1,0); glEnd(); program->disable(); D’abord on attache la texture de sortie au frame buffer, pour que tous les affichages se déroulent à l’intérieur de celle-ci. Ensuite on passe les deux textures au shader, puis on active le 30 programme pour qu’il affecte le fragment. Ensuite on dessine un carré en spécifiant chacun de ses sommets avec l’instruction glVertex, on donne par la même occasion la coordonnée de texture avec l’instruction glTexCoord2f. Ici les coordonnées sont normalisées entre 0 et 1, sur les dernières versions on peut choisir un type particulier de textures nommées « textures rectangles » qui permettent de spécifier des coordonnées non normalisées, cela peut être plus pratique ou non, tout dépend du problème. Le programme complet en C++ est décrit en Annexe D. Autre exemple, on peut également réaliser une convolution : uniform sampler2D Texture1; uniform float step void main() { Vec2 coords = gl_TexCoord[0].xy; vec4 texelColor = texture2D( Texture1, coords); coords.x = gl_TexCoord[0].x - step; vec4 texelColorM = texture2D( Texture1, coords); coords.x = gl_TexCoord[0].x + step; vec4 texelColorP = texture2D( Texture1, coords); gl_FragColor = (texelColorM + texelColor + texelColorP)/3; } Ici nous avons une seule texture en entrée, mais on va chercher trois pixels dans cette texture, celui à la même position que le pixel de sortie, et ceux d’avant et d’après. La variable step est le déplacement nécessaire pour aller au pixel d’à coté, elle est donnée à l’extérieur du shader, car à l’intérieur on ne sait pas la taille totale de l’image en cas de coordonnées normalisées entre 0 et 1. On peut placer des structures de contrôle comme en langage C de type choix conditionnel à l’intérieur du shader pour effectuer un traitement sélectif. On peut également utiliser des boucles, mais celles-ci vont être très limitées, car elles doivent pouvoir être entièrement déroulées par le compilateur. On ne peut donc pas effectuer toute l’algorithmique qui serait normalement disponible sur un programme s’exécutant sur le CPU, il faudra donc parfois ruser et par exemple faire générer le shader par l’application. 31 Autre point, le shader est limité en nombre d’instructions, qui dépend des capacités de la carte graphique, il faut donc faire attention à ce point, un shader trop gros risque de ne pas passer sur des cartes trop anciennes, où de ne pas passer du tout. Pour un tutoriel sur l’utilisation du GPGPU pour des calculs mathématiques de base on peut également consulter [7]. 1.4. PLATEFORMES DEDIES AU GPGPU Dans les approches précédemment citées, la création de programmes utilisant le GPU nécessite de bonnes connaissances en programmation graphique, afin de savoir comment détourner certaines fonctions des cartes dans le but de faire des calculs généraux. La nécessité d’avoir ces connaissances additionnelles étant un frein au développement industriel, des langages et des bibliothèques spécifiques ont été développées. Brook a été développé par l’université de Stanford pour la programmation de « streaming processors », des processeurs parallèles utilisés dans les superordinateurs [8]. Il a été ensuite adapté par Buck et al en 2004 pour utiliser les GPU [9], et est devenu ainsi le premier langage dédié au GPGPU. Il utilise le langage C standard avec quelques variations. Son développement a été abandonné pendant une longue période avant d’être repris en 2007. L’environnement CUDA (Compute Unified Device Architecture), introduit par nVIDIA en 2006 avec la série des GeForce 8 est un compilateur avec des outils de développement. Le langage est assez similaire à Brook. AMD Stream SDK, le successeur de CTM (Close to Metal), quant à lui est développé pour les cartes ATI. Dans sa thèse Jansen décrit GPU++ [10], un système de développement intégré au langage C++ en utilisant la surcharge d’opérateur, qui permet de faire abstraction du matériel. Il rajoute des optimisations sur le code. Ces plateformes sont en plein développement et les choses évoluent très vite pour pouvoir profiter de la puissance et des nouvelles fonctionnalités des GPUs. 32 2. La tomographie par émission monophotonique 2.1. PRINCIPE La Tomographie par Emission Mono-Photonique (TEMP) dite en anglais SPECT (Single photon emission computerized tomography) est une modalité d’imagerie médicale qui a pour objectif la visualisation de la fixation d’une molécule marquée par un isotope radioactif, émetteur de photons gamma, dans l’organisme d’un patient. Un détecteur de photons gamma, la gammacaméra, va ensuite effectuer une rotation autour de l’organe et ainsi récupérer plusieurs plans de projection qu’il sera ensuite nécessaire de reconstruire pour obtenir un volume en 3D. C’est une imagerie de type fonctionnel et métabolique, elle permet d’observer le fonctionnement de nombreux organes en fonction de la distribution ou de la cinétique du produit radioactif utilisé. Ce chapitre a pour but de décrire le processus d’acquisition ainsi que les phénomènes physiques qui lui sont associés. 2.2. RADIOISOTOPES 2.2.1. Définition Le radioisotope, ou marqueur, est un atome radioactif possédant les mêmes propriétés chimiques que l’atome stable dont il est l’isotope. Il suit donc le même parcours dans l’organisme mais a la particularité de pouvoir être détecté grâce au rayonnement qu’il émet. Il est souvent intégré dans une molécule que l’on nomme alors traceur radioactif, ou encore radiopharmaceutique. Les radioisotopes les plus utilisés en médecine nucléaire sont des émetteurs gamma artificiels produits à l’aide d’accélérateurs de particules ou de réacteurs nucléaires. L’énergie des photons varie de plusieurs dizaines à quelques centaines de keV. Il faut qu’elle soit suffisante pour traverser les tissus de l’organisme sans être trop atténuée, sans toutefois être trop importante pour faciliter leur détection et diminuer les problèmes de radioprotection. Une des caractéristiques importantes des radioisotopes est la durée de demi-vie ou période physique Tp, c'est-à-dire le temps au bout duquel la moitié des atomes de l’isotope s’est désintégrée. Il faut aussi considérer la durée de demi-vie biologique Tb, qui est le temps au bout duquel la moitié des molécules marquées ont été éliminées de l’organisme. La demi-vie effective Te 33 est alors le temps au bout duquel la moitié des molécules radioactives ont disparu de l’organisme et se calcule de la manière suivante : 1 1 1 Te Tp Tb Parmi les nombreux radio-isotopes utilisés en médecine nucléaire nous retiendrons les trois suivants avec lesquels nous avons le plus travaillé. 2.2.2. Le technétium 99 métastable Le technétium 99 métastable (Tc99m) est très utilisé car il a de nombreux avantages. Sa demi-vie de 6 heures est suffisamment longue pour permettre le suivi des processus physiologiques mais assez courte pour limiter l’irradiation. C’est un émetteur gamma pur (du fait qu’il est métastable), produit par désintégration du molybdène 99, et dont le spectre ne comporte qu’une seule raie à 140 keV. Cette énergie est suffisante pour traverser les tissus vivants et peut être interceptée efficacement par les cristaux d’iodure de sodium utilisés dans les gamma caméras. Il peut être associé à de nombreuses molécules biologiques, ce qui lui permet d’être utilisé aussi bien dans les scintigraphies osseuses, que pour les études cardiaques ou les perfusions cérébrales. 2.2.3. Le thallium 201 Sous sa forme ionisée, cet atome possède un comportement biologique voisin de celui du potassium. Il est utilisé notamment pour évaluer la perfusion sanguine myocardique. Il émet essentiellement des photons X, causés par capture électronique, autour de 75 keV et quelques photons gammas à plus haute énergie (167 keV). L'énergie de la majeure partie de ses photons étant faible, les images obtenues sont donc particulièrement sujettes à la dégradation causée par l'atténuation et la diffusion. De plus, la dose qu'il est possible d'administrer est limitée en raison de l'abondance relativement importante de radiations non pénétrantes, auxquelles il convient de limiter l'exposition des patients. Pour toutes ces raisons il tend à être délaissé au profit des marqueurs au technétium. 2.2.4. L’iode 123 L’iode 123 est bien adapté à l’imagerie de par sa période de 13 heures et de par ses radiations riches en photons gamma de 159 keV, mais le coût de fabrication est élevé. Il est utilisé 34 pour l’imagerie des récepteurs de l’organisme, notamment les neurorécepteurs, et également pour étudier le métabolisme thyroïdien. 2.3. GAMMA-CAMERA 2.3.1. Historique Les premières applications de médecine nucléaire, développées au début du XXème siècle, utilisaient des compteurs Geiger-Muller (GM) et avaient un très faible rendement pour les photons gamma (environ 2%). Seidling, Marinelli et Oshry ont découvert en 1943, en traitant des patients atteints d'un cancer de la thyroïde avec de l'iode 131, que l'ont pouvait, grâce au compteur GM, procéder à la localisation de métastases du cancer de la thyroïde, fixant elles aussi l'iode 131. Les travaux de recherche du physicien allemand Heinz Kallmann ont montré en 1948 que l'utilisation de tubes photomultiplicateurs en association avec un cristal scintillateur était plus efficace pour la détection des rayons gamma. Benedict Cassen a ensuite exploré le remplacement des tubes Geiger-Muller par des scintillateurs et des tubes photomultiplicateurs. En 1957 Hal Anger mit au point la première caméra à scintillations avec une possibilité de translation pour l’image en corps entier et possibilité de rotation pour la tomographie [11]. Si les caméras actuelles ont évolué, notamment au niveau de leurs performances, leur principe est toujours basé sur la caméra d’Anger. Elles sont constituées d’une optique : le collimateur, d’un transformateur d’énergie gammaUV : le cristal, d’un détecteur de photons UV : les photomultiplicateurs, et d’une électronique. 2.3.2. Collimateur 2.3.2.1. Rôle Le collimateur joue le rôle de l’optique des appareils photographiques. Sans lui des photons venant de n’importe où frapperaient le détecteur et l’image ne serait qu’une tâche floue. Le collimateur est généralement constitué par une plaque de plomb percée de trous. Le plomb arrête la quasi-totalité des photons qui le frappent et ne laisse arriver au détecteur que les photons passant par les trous. Il faut noter que les photons traversant le collimateur ne sont pas tous strictement dans la direction de l’axe des trous. Un collimateur accepte des photons incidents dont la direction est comprise dans un certain « cône d’acceptance ». La conséquence est que la résolution se dégrade avec la distance du point source à la caméra. Pour améliorer la résolution spatiale, on peut utiliser 35 des trous de plus petits diamètres, mais cela diminue la sensibilité, c'est-à-dire le nombre de photons détectés, et augmente le bruit dans les images. 2.3.2.2. Géométries des collimateurs. Il existe différentes géométries de collimateurs, en particulier les collimateurs parallèles, les collimateurs en éventail (fan-beam) ou coniques (cone-beam), et les collimateurs sténopé (pin-hole) (Figure 2-1). Profil de la réponse impulsionnelle moyenne (A) Cristal h Profil de la réponse impulsionnelle e moyenne (C) Cristal P h e Profil de la réponse impulsionnelle moyenne (B) Cristal h e P : distance source/cristal e : diamètre des trous P : distance focale h : hauteur du collimateur (A) Parallèle (B) Eventail ou conique (C) Sténopé Figure 2-1 Représentation des différentes géométries de collimateurs 36 Les géométries permettant d’avoir un effet de grandissement (éventail, conique, ou sténopé) améliorent la sensibilité de détection, mais sont réservées à l’imagerie des organes de petites dimensions par rapport au diamètre du détecteur. Dans le reste de ce document, nous n’envisagerons plus que le cas le plus répandu, celui de la collimation parallèle à trous hexagonaux disposés en forme de nid d’abeille. 2.3.2.3.Calcul des performances des collimateurs multi-trous Les performances d’un collimateur peuvent être calculées selon trois approches différentes : Les formules analytiques, les méthodes de simulation, et le calcul de la fonction de transfert de modulation. Nous présentons ici succinctement ces différentes approches dans le cas du collimateur parallèle. Formules dites de « Anger » pour le calcul de la résolution collimateur Cette approche, la plus immédiate, consiste à appliquer des formules obtenues par des considérations géométriques simples ( [11] [12] [13] [14]). Dans ces calculs, on s’intéresse à la réponse moyenne du collimateur, comme s’il était en mouvement. La résolution collimateur s’exprime alors par la largeur à mi-hauteur de la réponse impulsionnelle moyenne. Soit e le diamètre d’un trou du collimateur, et h la hauteur du collimateur. Pour un point situé à une distance , la résolution collimateur Rc est donnée par : 𝑒 𝑅𝑐 = × La résolution totale du système (collimateur et détecteur) Rt s’écrit alors : Rt Rc2 Ri2 avec : Ri la résolution intrinsèque de la caméra. Si on souhaite prendre en plus compte la pénétration septale, il faut remplacer h par he . 2 h he étant le coefficient d’atténuation du collimateur en plomb, par exemple μ =27 cm-1 à 140 keV. Ces formules simples présentent un intérêt pratique évident. Bien qu’elles ne rendent pas compte de tous les aspects physiques qui entrent en jeu dans la collimation, le seul paramètre de 37 largeur à mi-hauteur suffit dans la plupart des situations pour décrire la réponse impulsionnelle en approximant celle-ci par une gaussienne. Méthodes de simulation La deuxième approche est la simulation numérique, soit par « lancé de rayons » ( [15], [16]) soit par méthode de Monte Carlo ( [17], [18]). Une méthode de type « lancé de rayon » permet de prendre en compte, pour le calcul de la réponse impulsionnelle, la géométrie exacte des trous, ainsi que la pénétration septale, et la géométrie de la source (linéaire ou ponctuelle) (Figure 2-2). Figure 2-2 : Réponses simulées pour une source ponctuelle de 99mTc de 9 collimateurs de même résolution spatiale, pour différentes épaisseurs de cloisons (A) : 0,12mm Ŕ on note une pénétration septale importante, (B) : 0,25 mm, (C) : 0,28 mm, et pour différentes dimensions de trous, (1) : 2 mm, (2) : 3 mm, (3) : 4 mm. (d’après [16]). Une simulation de type Monte Carlo permet en plus de modéliser le rayonnement diffusé Compton produit dans le collimateur, au prix de temps de calcul beaucoup plus importants. On peut noter cependant que le numéro atomique du matériau du collimateur étant très élevé, l’effet Compton est très peu probable comparativement à l’effet photoélectrique, et peut donc être négligé pour les photons de basse énergie. 38 Notion de fonction de transfert appliquée aux collimateurs La troisième approche fait référence à la notion de fonction de transfert géométrique (FTG), ou fonction de transfert de modulation (FTM) du collimateur. L'intérêt essentiel de la notion de fonction de transfert est de pouvoir analyser les différents éléments d’une chaîne de mesure, en calculant la réponse système (collimateur+détecteur) à partir de la réponse du collimateur et de celle du détecteur, par simple multiplication dans le domaine des fréquences. Plusieurs auteurs ont proposé le calcul analytique de la fonction de transfert des collimateurs pour chaque distance source-détecteur, soit en considérant la réponse moyenne et l’invariance par translation [19], [20], [21] soit en calculant la réponse géométrique théorique en chaque point [22]. Or, la collimation ne correspond pas un opérateur linéaire, car la présence des trous et des septas introduit une non-invariance par translation, qui peut par exemple se traduire par l'apparition des trous du collimateur sur l'image. En toute rigueur, il n’est donc pas juste de parler de fonction de transfert d’un collimateur. Pour ne pas perdre de vue ce phénomène, de Lagrevol et al. [23] a proposé de noter FTM* la transformée de Fourier de la FTG calculée en un point particulier, et a proposé des formules simples pour la calculer. L'allure générale de cette FTM* comporte deux parties. Une première partie décroissante à basse fréquence, puis un rebond à haute fréquence. La première partie caractérise la réponse "utile", alors que le rebond est dû à la présence des trous. Par ailleurs, la pénétration septale introduit une composante importante à très basse fréquence. Dans ce cas, la tangente à la fréquence 0 cm-1 n'est plus parallèle à l'axe des abscisses, mais s'incline vers le bas d'autant plus que la pénétration septale est importante [23]. 2.3.3. Cristal scintillant La scintillation est un phénomène de fluorescence. Des atomes du matériau reçoivent un rayonnement incident et sont excités, c'est-à-dire qu’un électron passe à un niveau énergétique supérieur. Lors de la désexcitation, un photon est émis, qui est dans ce cas précis un photon ultraviolet proche du visible. En TEMP la plupart des caméras sont équipées d’un cristal d’iodure de sodium activé au Thallium (NaI(Tl)), dont la plus grande dimension peut dépasser les 50 cm, mais dont l’épaisseur est faible (0,625 à 1,25 cm). Le cristal absorbe l’énergie des photons collectés qui excite les électrons des atomes de Thallium situés au voisinage de l’interaction et provoque la scintillation. Le cristal étant transparent à la lumière qu’il émet, celle-ci va frapper la photocathode du photomultiplicateur. 39 2.3.4. Photomultiplicateur Les photomultiplicateurs convertissent l’énergie lumineuse des photons de scintillation en signal électrique. Ils sont composés d'un tube à vide contenant une photocathode, plusieurs dynodes, et une anode. Les photons incidents arrivant sur la photocathode interagissent par effet photoélectrique et produisent des électrons qui sont accélérés par un champ électrique. A chaque fois qu’un électron percute une dynode, de nouveaux électrons sont à leur tour arrachés et sont attirés vers la dynode suivante. Lorsque l'anode est atteinte, l'accumulation de charges crée une impulsion de courant, qui marque l'arrivée d'un photon sur la cathode. A la sortie le gain est d’un facteur supérieur à 106. Les premières caméras comportaient une dizaine de photomultiplicateurs de forme circulaire, à l’heure actuelle elles en comportent une centaine, en général de forme hexagonale, de façon à mieux couvrir le champ de détection. Photocathode Electrons Anode Photon incident Connecteurs électriques Scintillateur Photon UV Dynode Tube photomultiplicateur Figure 2-3 Schéma d'un photomultiplicateur couplé à un scintillateur 2.3.5. Le système électronique de positionnement Les impulsions électriques fournies par les photomultiplicateurs sont converties en signaux numériques par des convertisseurs analogiques digitaux. Pour chaque photon incident, on détermine ses coordonnées, en calculant le barycentre de la tâche lumineuse reçue par les différents photomultiplicateurs dans le détecteur, et d’autre part, l’énergie gamma cédée au cristal, proportionnelle à la quantité d’énergie lumineuse totale produite. Grâce à des fenêtres en énergie préétablies, on peut séparer les photons gamma primaires des photons diffusés et également, le cas échéant, séparer plusieurs traceurs. 40 2.4. RAPPEL SUR LES INTERACTIONS DES PHOTONS AVEC LA MATIERE Une partie des photons gamma émis par le traceur vont interagir avec la matière contenue dans le corps du patient avant d’atteindre le détecteur. Ceci va fausser la reconstruction de l’activité, et causer deux phénomènes qui vont être parmi les principaux facteurs de dégradation de Numéro Atomique Z l’image à savoir l’atténuation et la diffusion. 100 90 80 70 60 50 40 30 20 10 0 0.01 Effet photoélectrique dominant Matérialisation de paires dominante Diffusion Compton dominante 0.1 1 10 Energie (MeV) 100 Figure 2-4 Prédominance relative des trois principales interactions photon-matière, en fonction de l’énergie des photons gamma et du numéro atomique du milieu. 2.4.1. Effet photoélectrique Cette interaction est dominante pour les photons de faible énergie. Lorsqu’un photon percute un électron, il lui transfère toute son énergie et disparaît. Electron secondaire Photon primaire Interaction photoélectrique Figure 2-5 Schématisation de l’effet photoélectrique L’effet photoélectrique est beaucoup plus efficace sur les électrons des couches internes de l'atome, donc surtout sur la couche K, la plus profonde. Si l'énergie du photon incident est 41 inférieure à l'énergie de liaison de la couche K, il ne peut se produire d'interaction photoélectrique avec les électrons de cette couche. Quand l'énergie du photon atteint l'énergie de liaison de la couche K, on aura donc une augmentation très importante de la section efficace d'interaction. C'est ce qu'on appelle la discontinuité K ("K-edge"). On fait souvent appel à des formules empiriques pour calculer la section efficace d’interaction, valides seulement dans des intervalles restreints en énergie et en numéro atomique. 2.4.2. Diffusion Compton Dans le cas de la diffusion Compton seule une partie de l’énergie sert à arracher un électron de son orbite. L'énergie restante est réémise sous forme d'un nouveau photon gamma de moindre énergie et dont la direction d'émission est différente de la direction incidente du photon gamma d'origine. C'est le principal mécanisme d'absorption des rayons gamma dans la gamme d'énergie entre 100 keV et 10 MeV. Photon diffusé θ Photon primaire Interaction Compton Electron secondaire Figure 2-6 Schématisation de la diffusion Compton L’énergie Ed emportée par le photon diffusé et l’angle de déviation θ qu’il subit sont liés par la formule suivante : Ei Ei avec E d 1 (1cos ) m e c2 me étant la masse de l’électron, c la vitesse de la lumière dans le vide et Ei l’énergie du photon 2 incident. Donc me c =511 kev. La loi de Klein et Nishina [24], donne la section efficace σ par unité d’angle solide Ω, en fonction de l’énergie du photon incident et de l’angle de diffusion : 42 2 d r0 Ed d 2 Ei 2 E E i d sin 2 E d Ei r02 1 cos2 2 (1cos )2 2 (1 (1cos ))2 (1 (1cos ))3 -13 Avec r0 , rayon classique de l’électron ( re 2.817 10 cm ). Ce qui nous permet de déduire la distribution angulaire des photons diffusées. Section efficace par unité d’angle θ : r02 d d d 1 cos 2 2 (1cos )2 2 sin d d d 2 (1 (1cos )) 2 (1 (1cos ))3 0.012 70 keV 0.01 150 keV d d 0.008 500 keV 0.006 0.004 0.002 0 0 20 40 60 80 100 120 140 160 180 Figure 2-7 Distribution angulaire des photons diffusés Compton pour trois énergies de photons incidents : 70, 150 et 200 keV. L’intégration de la formule de Klein-Nishina nous permet d’obtenir la section efficace totale pour un électron : = 𝑗 =2,=2 𝑗 =0,=0 𝑑 = 2𝑟02 1 + 2(1 + ) ln(1 + 2) 𝑙𝑛(1 + 2𝛼) 1 + 3𝛼 − + − 𝑐𝑚²/é𝑙𝑒𝑐𝑡𝑟𝑜𝑛 1 + 2 2𝛼 ² 1 + 2𝛼 ² Dans une très mince couche de matériau absorbant de numéro atomique Z, qui possède N atomes par cm3, d'épaisseur dx, on trouve (NZ) électrons par cm3 et (NZdx) électrons par cm2. On définit le coefficient Compton d'atténuation linéaire par : c =NZσ cm 43 -1 Pour créer un générateur aléatoire qui suit la distribution angulaire des photons Compton on peut utiliser l’algorithme décrit dans [25], voir aussi Annexe A. 2.4.3. Matérialisation L'énergie du photon gamma incident peut spontanément être convertie en masse à proximité d’un noyau, sous la forme d'une paire électron-positon. La production d'une telle paire nécessite un photon d’une énergie supérieure ou égale à la masse au repos des particules qui la composent, soit 1,022 MeV, mais cette réaction ne devient importante que pour des énergies supérieures à 5 MeV. L'énergie excédentaire est transférée sous forme d'énergie cinétique à la paire formée. Après ralentissement, le positon se combine avec un autre électron du milieu, la masse totale de ces deux particules est alors convertie en deux photons gamma de 0,511 MeV chacun qui sont émis à 180° l’un de l’autre. e- Annihilation e + Photon primaire Matérialisation eFigure 2-8 Schématisation de la matérialisation En imagerie nucléaire, on travaille généralement à des énergies bien inférieures à celles nécessaires pour produire une matérialisation, heureusement car cette dernière pourrait causer un grand nombre d’artefacts. 2.5. FACTEURS DE DEGRADATION DE L’IMAGE 2.5.1. Atténuation L’atténuation est consécutive aux interactions que subissent les photons avec la matière, comme l’effet photoélectrique, la diffusion Compton et la matérialisation. 44 Soit N un nombre de photons monoénergétiques émis dans une direction donnée. Après traversée d’une épaisseur l d’un matériau, il reste une quantité N de photon transmis selon la relation suivante : N = N0e- l N N0 l Figure 2-9 Phénomène d’atténuation est le coefficient d’atténuation linéique, il dépend de l’énergie des photons et du numéro atomique du milieu traversé, il est la somme des coefficients d’atténuation de chaque interaction photon matière. Total Compton Photoéléctrique Matérialisation Par exemple, pour des photons de 140 keV (émission gamma du Tc99m ) il est égal à 0.03 cm-1 dans les poumons, à 0.12 cm-1 dans les tissus mous, et à 0.3 cm-1 dans les os. Les méthodes de correction seront traitées plus loin dans le chapitre 5. 2.5.2. Diffusion 2.5.2.1. Définition Pour l’énergie des radioéléments utilisés en TEMP qui vont de 70 à 600 keV, et pour les éléments des milieux qui composent l’organisme qui ont des numéros atomiques peu élevés, la diffusion Compton est l’interaction la plus probable. Deux problèmes distincts sont issus du phénomène de diffusion. Certains photons qui devraient être détectés ne le sont pas (Figure 2-10, cas A). D’autres photons qui n’auraient pas dû être détectés le sont (Figure 2-10, cas B). 45 A B Figure 2-10 Artefacts dus à l’effet Compton Dans le cas des reconstructions tomographiques c’est le cas B qu’on appelle généralement par abus de langage phénomène de diffusé Compton. Le cas A, où le photon ne sera pas détecté, sera considéré dans le phénomène d’atténuation. 2.5.2.2. Correction Comme les photons diffusés ont une énergie plus faible que les photons primaires, la première chose à faire est de régler la caméra pour qu’elle n’accepte que les photons ayant des énergies proches du pic photoélectrique. Malgré tout, à cause de la résolution en énergie des systèmes d’acquisition, cela ne suffit pas à éliminer complètement le rayonnement diffusé. La méthode la plus connue est sans doute la soustraction de Jaszczak [26], elle est pratiquement la seule à être utilisée en routine clinique du fait de sa simplicité. Elle consiste à prendre une fenêtre d’acquisition secondaire à une énergie plus basse que celle du pic principal et à la soustraire aux mesures en la pondérant par un facteur k. Dcorrigé Dpic kDcompton Il peut arriver que l’on obtienne des valeurs négatives ce qui n’a pas de sens du point de vue physique. Dans ce cas on met la valeur à 0. Le facteur k est choisi en fonction de la largeur respective des fenêtres du primaire et de diffusé. On considère généralement qu’à largeurs de fenêtres égales, il y a deux fois plus de photons diffusés dans la fenêtre secondaire que dans la principale. Par exemple, pour du 99mTc avec une fenêtre de largeur ±10% du pic photoélectrique (126 à 154 keV) et une fenêtre de même largeur (24 keV) pour le diffusé soit de 97 à 125 keV, 46 alors k = 0,5. Bien que cette méthode paraisse assez grossière elle donne des résultats satisfaisants dans la plupart des cas [27]. Il existe aussi une méthode de triple fenêtrage qui reprend ce principe en ajoutant une troisième fenêtre pour prendre en compte le diffusé Compton de rayonnement à plus haute énergie que le pic photoélectrique considéré [28]. Le phénomène de diffusion peut également être intégré au processus de reconstruction en utilisant des simulations par la méthode de Monte-Carlo. Cette méthode est basée sur le suivi statistique du devenir d’un grand nombre de photons émis depuis une source. Ces photons sont considérés l’un après l’autre, et les lois statistiques d’interaction des photons sont appliquées en fonction de leur énergie et des caractéristiques du milieu. Les résultats sont d’autant plus précis que le nombre de photons considérés est grand. Aussi, cette méthode est connue pour être très lourde en temps de calcul. Nous analyserons la faisabilité d’une programmation sur carte graphique de la modélisation de Monte-Carlo avec prise en compte de la diffusion Compton (Chapitre 6). 2.5.3. Résolution spatiale variable avec la distance Nous avons rappelé dans le paragraphe 2.3.2.1 le principe de fonctionnement des collimateurs, et les différentes méthodes de détermination de leur réponse impulsionnelle. Nous avons vu que chaque point du volume exploré se projette sur le plan de détection sous la forme d’une tâche, et non d’un point. Du fait du fonctionnement du collimateur, plus le point est éloigné du détecteur, plus le diamètre de la tâche est important (Figure 2-11) Le calcul précis de la tâche, ou réponse impulsionnelle, nécessite le recours à des méthodes sophistiquées rappelées précédemment. Ces méthodes sont utiles dans le cadre de la conception, et de l’évaluation des performances d’un collimateur. Toutefois, dans le domaine de la reconstruction tomographique, on utilise uniquement l’approximation de la réponse par une gaussienne dont la largeur à mi-hauteur est égale à la résolution spatiale Rt calculée selon les formules de Anger. Citons par exemple les auteurs de [29] qui ont travaillé à élaborer une méthode de calcul de la fonction de transfert géométrique [22], [30] mais qui, dans les algorithmes de reconstruction, utilisent l’approximation gaussienne [29]. 47 Figure 2-11 : Illustration de la variation de la réponse du collimateur pour trois sources ponctuelles dans deux plans de projections. La réponse impulsionnelle s’élargit quand la distance source-détecteur augmente L’écart-type de la gaussienne modélisant la réponse impulsionnelle système est telle que : Rt 2 2ln 2 En chaque point du détecteur de distance x par rapport au centre le tâche, la réponse est donc : - x2 P( x) 1 2 e 2 2 Cette gaussienne, modélisant la réponse impulsionnelle variable avec la profondeur, peut être prise en compte dans le processus de reconstruction tomographique, de manière à compenser la perte résolution, soit en filtrant les projections selon le principe de fréquence-distance avant reconstruction, analytique [31] [32] ou itérative [33], soit en incorporant cette réponse dans le projecteur et le rétroprojecteur dans les algorithmes itératifs, comme l’espérance maximisée [34] ou le gradient conjugué [35]. Kohli et al [33] a montré la supériorité de la prise en compte de la réponse dans le projecteur-rétroprojecteur par rapport au filtrage fréquence-distance en terme de rapport signal sur bruit. 2.5.4. Effet de volume partiel Après reconstruction tomographique, la quantification de la concentration de l’activité se trouve faussée lorsque cette activité est contenue dans des structures de petite taille par rapport à la résolution système post-reconstruction [36]. En TEMP, la résolution spatiale étant de l’ordre du 48 centimètre, la quantification se trouve faussée dans des structures de taille inférieure à 3 cm. C’est le cas en imagerie oncologique [37] ou en imagerie de la neurotransmission dopaminergique [38]. Des techniques de correction de l’effet de volume partiel peuvent être appliquées pour tenter de restaurer l’activité, à partir de la connaissance de la forme de ces structures généralement obtenue à l’aide d’une imagerie anatomique haute résolution (scanner ou IRM) [39], [40], [41], [42]. 2.5.5. Décroissance du taux d’activité La loi de décroissance radioactive exprime le fait que le nombre d’atomes susceptibles de subir une désintégration diminue au cours du temps. La loi est exponentielle de paramètre qui est spécifique au traceur : N (t ) N e- t 0 La durée de demi-vie T, représente le temps nécessaire en moyenne à la désintégration de la moitié des atomes est obtenue par la relation suivante : T ln(2) Cette durée ne doit pas être trop importante pour des raisons de radioprotection du malade et de l’environnement, ni trop courte pour des raisons d’acquisition et de gestion des stocks. Pour le Technétium 99m, on a λ=1,1151 h -1 donc T=6,02 h, au bout de 20 minutes la concentration radioactive a baissé de 3,8%, phénomène faible mais non négligeable pour la reconstruction, c’est pourquoi les caméras sont équipées de dispositifs permettant de corriger ce phénomène. Pour le Thallium 201, on a λ=0,014 h -1 donc T=72 h. La baisse de concentration radioactive durant l’acquisition est ici négligeable. 2.5.6. Mouvements du patient Une bonne acquisition en TEMP suppose que le patient ne bouge pas pendant l’examen. Celui-ci est parfois immobilisé par divers dispositifs (sangles pour les bras, gouttière pour la boite crânienne). Restent les mouvements liés à la respiration du patient et son activité interne, mais ceux-ci sont difficiles à empêcher. Pour les examens cardiaques, certaines acquisitions sont faites en simultanéité avec un électrocardiogramme pour examiner le cœur dans les différentes phases de fonctionnement. 49 2.5.7. Bruit poissonien 2.5.7.1. Principe La désintégration radioactive est un phénomène aléatoire, statistique, ce qui se traduit au niveau des images par des variations aléatoires d’un pixel à l’autre. Ces variations suivent une loi précise en fonction de l’activité moyenne, appelée loi de Poisson. Plus le nombre de photons détectés est faible, plus le bruit est important (Figure 2-12). En principe, il faut essayer de détecter le plus possible de photons. Or le nombre de photons détectés dépend de nombreux facteurs qu’il n’est pas toujours facile d’optimiser. Il s’agit notamment de l’activité administrée au patient (qui ne doit pas dépasser un certain seuil pour limiter l’irradiation du patient), de la durée de l’acquisition (limitée par l’inconfort du patient pouvant entraîner une perte de l’immobilité requise pendant l’examen), de l’efficacité géométrique du collimateur (limitée par la nécessité d’avoir une résolution spatiale correcte), mais aussi de la spécificité du radiopharmaceutique, et de l’atténuation des tissus (liée à la corpulence du patient). Projection idéale Nombre de coups moyen : 60 Nombre de coups moyen : 6 Figure 2-12 : Bruit poissonien en fonction du nombre de photons détectés. 2.5.7.2. Correction La solution la plus simple est d’appliquer un filtre passe-bas sur l’image pour atténuer le problème, mais il va s’ensuivre une perte de contraste. D’autres méthodes comme SHINE (Statistical and Heuristic Image Noise Extraction) [43] sont plus spécifiquement adaptées à la réduction du bruit poissonien. Une restauration itérative tenant compte de la fonction de dispersion moyenne a pour effet de diminuer le bruit tout en rehaussant le contraste [44]. De même, la correction de la perte de résolution avec la profondeur diminue généralement le bruit dans les images 3D reconstruites, puisqu’elle entraine la contribution de plusieurs pixels d’une projection sur chaque pixel du volume, le tout en conservant un meilleur contraste [45]. 50 2.5.7.3. Simulation Pour générer des projections réalistes à partir de fantômes numériques, il est donc nécessaire d’introduire un bruit poissonien. Pour cela on peut utiliser l’algorithme de Knuth [46] : Pour chaque pixel de l’image de valeur λ : L ← e−λ k ← 0 p ← 1 Faire : k ← k + 1 Générer un nombre aléatoire uniforme u compris dans [0 1]. p ← p * u Tant que p ≥ L Le pixel bruité a pour valeur k-1. 51 3. Reconstruction tomographique 3.1. INTRODUCTION Après l’acquisition, la caméra nous donne une série d’images correspondant chacune à une incidence d’angle autour de l’objet. La Figure 3-1 A, présente un exemple d’une image de projection. Une autre manière de présenter les mêmes données est de faire varier l’angle d’incidence pour chaque niveau de coupe z : c’est le sinogramme au niveau z. La Figure 3-1 B montre un exemple de sinogramme. Pour pouvoir visualiser la distribution du traceur en trois dimensions, il sera nécessaire d’effectuer une reconstruction, qui va, à partir de cette série d’image 2D, générer le volume 3D correspondant (Figure 3-2) A B z θ t t Figure 3-1 Projection d’angle θ=0 (A) d’un examen de perfusion cérébrale, et sinogramme pour z correspondant à la ligne rouge (B). y z z z x y x Figure 3-2 Volume de la distribution du traceur d’une perfusion cérébrale, visualisé sous les plans axial, coronal et sagittal. 52 Il existe deux grandes familles de méthodes pour reconstruire un objet à partir de ses projections : les méthodes analytiques et les méthodes itératives. Dans le cas des méthodes analytiques, l’objet à reconstruire est considéré comme étant une fonction continue représentant la concentration radioactive dans l’espace, et l’image de la projection de cet objet est modélisée par une intégrale spatiale de la fonction objet perpendiculairement au plan de détection. Dans le cas des méthodes itératives, l’objet à reconstruire est considéré comme étant un ensemble de voxels (discrets), et la projection de cet objet est modélisée par un opérateur discret décrivant la probabilité de détection d’un voxel donné en un lieu de projection donné. 3.2. METHODES ANALYTIQUES Dans ce type de méthode la projection est considérée comme étant une projection orthogonale simple, sans prendre en compte la fonction de dispersion ponctuelle du système d’imagerie. Aussi, il est possible, pour simplifier l’écriture, de considérer que l’objet 3D à reconstruire est un empilement de coupes 2D indépendantes, dont chacune se projette selon une ligne 1D pour chaque angle de projection. Autrement dit, il s’agit de reconstruire une à une chaque coupe de l’objet à partir de leur sinogramme, puis d’empiler ces coupes. Il faut remarquer que ce problème a été résolu d’un point de vue théorique bien avant l’invention de la tomographie, en 1917 par J. Radon [47]. 3.2.1. Modélisation de l’acquisition Soit un objet contenant de la radioactivité et une coupe de cet objet définie dans un plan perpendiculaire à l’axe de rotation de la caméra (axe z sur Figure 3-3 et Figure 3-1). Soit f(x,y) la quantité de radioactivité au point (x,y) contenu dans le plan. Des projections sont obtenues sous différentes incidences, tout autour de la coupe considérée, en intégrant l’activité dans la direction d’une ligne L perpendiculaire à la ligne de détection, et passant par le point correspondant. L’angle de projection suit le repère tournant de coordonnée cartésienne (t,l) ; ce repère est tourné de l’angle θ par rapport au repère fixe de l’image (x,y). 53 y l L t f(x,y) x,y θ x p(t, θ) )x,y Figure 3-3 Relation entre le système de coordonnées fixe (x,y) et le système de coordonnées tournant (t,l), θ étant l’angle de rotation par rapport à l’axe x. La fonction p(t,θ) représente les données de projection, c’est la « transformée de Radon » de la fonction f : p(t , ) f ( x, y)dl L Les lieux des points (x,y) qui participent au domaine d’intégration (L) pour le point t d’une projection d’angle θ est donné par : t x cos y sin Autrement dit, par : t A sin( ) 2 2 avec : A ( x y ) et 12 atan( y / x) pour x 0 / 2 pour x=0 D’où l’appellation sinogramme des projections. 3.2.2. Rétroprojection Une méthode simpliste pour reconstruire serait de projeter en sens inverse (rétroprojeter) la valeur de chacun des éléments de détection sur le plan de reconstruction. Pour un angle donné θ la 54 valeur de p(t,θ) est assignée à tous les pixels qui se trouvent le long de la ligne d’intégration (L). La superposition linéaire de toutes les rétroprojections forme l’image de rétroprojection. L’opération de rétroprojection peut être formalisée par : f * ( x, y ) p (t , )d 0 Bien que la plupart de l’information qualitative de la distribution originale soit préservée, les structures de l’image n’apparaissent pas nettement. Une composante importante à basse fréquence perturbe l’image. 3.2.3. Le théorème des projections Le problème est d’obtenir une bonne estimation, ou reconstruction, de f(x,y), à partir de la connaissance des p(t,θ). Pour cela on montre qu’il existe un théorème qui relie la transformée de Fourier de f(x,y) à la transformée de Fourier de p(t,θ). La transformée de Fourier à 1 dimension de la projection d’angle θj est : 𝑃 𝜔, 𝜃𝑗 = 𝑃 𝜔, 𝜃𝑗 = 𝑝 𝑡, 𝜃𝑗 𝑒 −𝑖𝜔𝑡 𝑑𝑡 𝑓(𝑥, 𝑦)𝑒 −𝑖𝜔𝑡 𝑑𝑡 𝑑𝜃 où t, θj, x et y sont reliés par : t x cos j y sin j Le point défini en coordonnées polaires par (ω,θj) peut être exprimé dans un système de coordonnées orthogonales par : x cos j y sin j La transformée de Fourier bi-dimensionnelle de la distribution originale est : F ( x y ) f ( x, y )e i ( x x y y ) dxdy d’où : P(, j ) F (x , y ) Le théorème des projections peut s’énoncer de la façon suivante : La transformée de Fourier 1D d’une projection selon un certain angle, correspond au profil central pris à cet angle de la transformée de Fourier 2D de la fonction originale. 55 Ce théorème permet d’envisager la reconstruction par une méthode directe à l’aide de la transformée de Fourier inverse. En pratique, cette méthode directe est très peu utilisée en SPECT à cause du difficile problème d’interpolation en coordonnées polaires. On peut noter cependant qu’en tomographie par émission de positons en acquisition 3D1 (3D-TEP), des travaux récents ont montré qu’il était possible d’avoir par méthode directe des temps de reconstruction inférieurs à la méthode de rétroprojection filtrée [48] [49]. 3.2.4. La rétroprojection filtrée A partir de la transformée de Fourier 2D inverse de F(ωx, ωy), on peut obtenir la fonction f(x,y). On a : f ( x, y ) 1 4 1 f ( x, y ) 4 2 2 F ( x , y )eit d x d y P ( , )eit d x d y La fonction P(ω,θ) est en coordonnées polaires. Pour changer l’intégration dans le système de coordonnées orthogonales vers un système de coordonnées polaires, on utilise : dx d y d d d’où : f ( x, y ) 1 4 2 2 0 P(, )eit dd Comme le point défini par (ω,θ) est le même que celui défini par (-ω,θ+π), on a : f ( x, y ) 1 4 2 0 P(, ) eit dd et soit : 1 p(t , ) 2 P( , ) eit d alors : f ( x, y) 1 2 1 0 p(t , )d Remarquons que le terme 3D a une signification différente en TEP et en TEMP. En TEP, il s’agit d’un type d’acquisition qui permet d’enregistrer des projections obliques sur le plan de détection. Ce que nous appellerons géométrie 3D en reconstruction TEMP est le fait considérer la fonction de dispersion ponctuelle variable avec la distance source caméra. 56 Ceci revient à dire que f(x,y) peut être obtenue par rétroprojection de la fonction p(t , ) . Si on définit une fonction (t ) telle que sa transformée de Fourier soit |ω| : (t )eit dt alors la convolution de la projection p(t,θ) avec cette fonction donne : p(t , ) (t ) 1 2 P(, ) eit d p(t , ) En d’autres termes, les données de projection originales doivent être filtrées par la fonction (t ) puis rétroprojetées. 3.2.5. La fonction de filtrage La fonction (t ) , dont la transformée de Fourier de |ω| est : (t ) eit d Cette intégrale, qui définit la fonction de filtrage dans le domaine spatial, diverge dans le cas où on ne limite pas le domaine d’intégration. Limiter le domaine d’intégration revient à multiplier la fonction rampe R(ω)=|ω| avec une fenêtre rectangulaire. 1 si -< < 0 sinon ( ) (t ) eit d - Puisque l’objet est échantillonné à des intervalles égaux à la distance entre points adjacents dans la projection, t cm, la fréquence spatiale significative la plus haute est donnée par la fréquence de Nyquist : 1 cm1 2t La coupure brusque de la fenêtre rectangulaire à la fréquence Ω donne lieu à des oscillations en bordure d’objet. Ceci est connu sous le nom de phénomène de Gibbs. Cet effet peut être réduit en utilisant d’autres types de fenêtre, dans lesquelles la coupure s’effectue lentement, par exemple : La fenêtre introduite par Shepp et Logan : sinc( ) si -< < 0 sinon est très similaire à la fenêtre rectangulaire. Elle donne une résolution comparable et a pour effet de réduire l’amplification du bruit pour des données comportant des fluctuations statistiques. 57 La fenêtre de Hamming : - (1 ) cos(2 ) si -< < 0 sinon avec 0 1 est une fenêtre générale. Si α=1, la fenêtre devient rectangulaire. Si α=0, la fenêtre est consinusoïdale. Le filtre de Hamming avec α=0.5 est souvent utilisé. Il permet de réduire le bruit dans les images, mais s’accompagne d’une perte de résolution. Il est intéressant de pouvoir jouer sur la fréquence maximale ωm de ces fenêtres, en fonction des conditions physiques, notamment pour atténuer le bruit haute fréquence. Si on diminue ωm, on obtient des images moins sensibles au bruit et plus lissées. La contrepartie inévitable est alors une dégradation de la résolution spatiale. Le choix de la fenêtre dépend donc du bruit dans les données et de la nature de l’objet à reconstruire. En plus de ces fenêtres de filtrage passe-bas, certains ont proposé d’ajouter des filtres compensateurs de résolution soit stationnaires, par exemple : filtre de Metz et filtre de Wiener [50], soit variables selon la distance [31] [32]. Ces filtres inverses ont bien pour effet d’améliorer le contraste au niveau des détails dans les images, mais, dans la pratique, ils ont aussi pour effet d’augmenter le bruit statistique puisqu’ils rehaussent certaines hautes fréquences [51]. 3.2.6. Limite des méthodes analytiques Les méthodes analytiques sont encore très utilisées, du fait de la rapidité de leurs algorithmes. Toutefois, elles ne permettent pas de prendre en compte de manière satisfaisante une modélisation précise des phénomènes physiques intervenant dans l’acquisition des images. Comme nous l’avons vu, avec ces méthodes l’amélioration de la résolution, selon le principe de déconvolution stationnaire [50] ou non stationnaire [31] [32], s’accompagne classiquement d’une augmentation du bruit, contrairement aux méthodes itératives. Par ailleurs, des méthodes ont été proposées pour corriger une atténuation uniforme [52] [53], mais il n’existe pas, à notre connaissance, de technique pour prendre en compte l’atténuation non uniforme au sein du processus de reconstruction. Une post-correction par une méthode itérative est possible [54] [55] [56] mais il semble 58 que les résultats soient inférieurs à ceux obtenus d’emblée par une méthode itérative, par exemple en tomographie cardiaque [57] [58]. Dans la suite de cette présentation, le problème de la prise en compte des phénomènes physiques intervenant dans les données réelles sera abordé seulement en rapport avec les techniques itératives. 3.3. METHODES ITERATIVES L’avantage de ce type de méthodes est de pouvoir incorporer au sein du processus de reconstruction une modélisation précise des phénomènes réels intervenant dans l’acquisition des images. L’inconvénient majeur de ces méthodes est la quantité de calculs plus importante qui accroît considérablement les temps de reconstruction. Le principe général repose sur le fait qu’il est possible de calculer la projection d’un objet discret quelconque, par une somme pondérée des voxels de cet objet. Soit Rijk la probabilité conditionnelle pour qu’un photon provenant du voxel i soit détecté dans le dexel j de la caméra à l’angle k, soit fi l’activité inconnue dans le voxel i, et soit djk les données mesurées dans le dexel j à l’angle k. Alors, 𝑑𝑗𝑘 = 𝑅𝑖𝑗𝑘 . 𝑓𝑖 𝑖 Sous forme matricielle, soit R l’opérateur de projection et R* l’opérateur de rétroprojection associé, et f et d respectivement les vecteurs objet et données de projection, on a : 𝑑 = 𝑅𝑓. Les méthodes de reconstruction itératives consistent à calculer l’objet f en fonction d grâce à des estimations f(n) successives de f en minimisant l’erreur entre les projections calculées Rf(n) et les projections réelles mesurées d. 3.3.1. Algorithme d’Espérance Maximisée L’algorithme d’Espérance Maximisée (EM) donné en 1977 par Dempster [59], est un algorithme itératif permettant de calculer le maximum de vraisemblance à partir de données incomplètes. Il a l’avantage de prendre en compte la nature poissonienne des variables en jeu. La formule itérative de l’algorithme d’espérance maximisée est la suivante [60], [61] : 59 f (n+1) i f i(n) = R ijk j,k j,k R ijk d jk R (n) ljk l f l Ce qui équivaut sous forme matricielle à : 𝑓 (𝑛+1) = 𝑓 (𝑛) ∗ 𝑑 𝑅 𝑉 𝑅𝑓 (𝑛) V étant le volume de normalisation défini de cette façon : Vi Rijk j ,k On a donc la division des projections mesurées par les projections calculées qui sont rétroprojetées puis multipliées par le volume de l’itération précédente. A chaque itération de l’algorithme, l’estimation de f au sens du maximum de vraisemblance est améliorée. De plus, la positivité des mesures et de l’estimée initiale f (0) implique la positivité des f (n), ce qui est utile en TEMP où les valeurs de f sont positives. Le bruit statistique présent dans les mesures empêche l’algorithme de converger vers une solution non bruitée. Au fur et à mesure que le nombre d’itérations augmente, le bruit devient de plus en plus important dans les images reconstruites. L’ajout d’une régularisation ou d’une connaissance a priori sur f dans le modèle permet de forcer l’algorithme à converger vers une solution moins bruitée [62] [63] [64] [65] [66]. Malheureusement cela complexifie cet algorithme qui a pour intérêt d’être simple. Dans la pratique, on opère souvent une régularisation artificielle en stoppant l’algorithme après un certain nombre d’itérations dépendant du type d’acquisition, ce qui permet de reconstruire suffisamment d’informations à partir des projections pour le diagnostic, sans trop amplifier le bruit. 3.3.2. Algorithme OSEM L’algorithme EM convergeant très lentement une méthode dérivée appelée OSEM (Ordered Subsets Expectation Maximization) [67] a suscité beaucoup d’intérêt. Au lieu de prendre l’ensemble des projections pour le calcul d’une itération, ce sont des sousensembles (subsets) qui sont utilisés. Soit f (0,0) notre point initial et S1..SM les sous ensembles, on a l’algorithme suivant pour N itérations : 60 Pour n=0..N-1 (itérations de l’algorithme) { Pour m=1..M (parcours des subsets) { On effectue une itération de type EM avec les projections correspondant au sous-ensemble Sm : fi ( m,n ) d jk fi ( m-1,n ) Rijk ( m -1, n ) Rijk j ,kSm Rljk fl j , kSm l } Tous les sous ensembles ayant été utilisés, on a notre nouveau point de départ pour l’itération suivante : f (0,n1) f ( M ,n ) } La manière de partitionner les projections est importante. Il faut que chaque sous-ensemble contienne le même nombre de projections, afin qu’aucun d’entre eux n’ait plus d’importance qu’un autre lors de la mise à jour. A l’intérieur de chaque sous-ensemble les projections doivent avoir une répartition angulaire régulière et la plus étendue possible. Figure 3-4 Projections choisies pour composer un sous-ensemble (en clair) à partir d’un ensemble de 64 projections partitionné en 8 sous-ensembles Enfin l’ordre de passage des sous-ensembles est également choisi afin que chacun d’entre eux soit le plus éloigné possible du précédent. Par exemple si on dispose de 64 projections sur 360°, S = { s1 = 0° , …. , s64 = 354,37° }, on peut le partitionner en 8 sous-ensembles de 8 projections chacun. Ainsi on prendra : S1 = { s1, s9, s17, … , s57 }, S2 = { s2, s10, s18, … , s58 }, S8 = { s8, s16, s24, … , s64 } Après l’ordre de parcours sera le suivant : S1, S5, S3, S7, S2, S6, S4, S8. 61 L’algorithme OSEM souffre d’un défaut de convergence par rapport à EM, car il n’utilise pas le même ensemble de données à chaque itération et tend vers un cycle limite. Cela n’est en général pas néfaste en pratique pour la reconstruction car les valeurs du cycle limite sont proches les unes des autres. Ce défaut théorique est traité dans une méthode appelée RBI (Rescaled Block Itération) [68] qui est une version convergente de OSEM. Néanmoins, la modélisation de la perte de résolution avec la profondeur entraîne une sorte de lissage des données ce qui permet d’utiliser OSEM avec un grand nombre de sous-ensembles. Dans [69] on propose même de n’utiliser que 2 projections par sous-ensemble, la différence obtenue entre OSEM et EM étant minime. 3.3.3. Algorithme du Gradient Conjugué La méthode du gradient conjugué est un algorithme itératif qui permet de résoudre des systèmes d'équations linéaires dont la matrice est symétrique et définie positive. Soit un système de la forme : Γf=b Dans notre cas X est un vecteur qui représente le volume à reconstruire. On prend : Γ=R*R, ce qui correspond à un opérateur qui effectue une projection puis une rétroprojection. b=R*d, ce qui correspond à la rétroprojection des projections mesurées. On va donc résoudre : R*Rf=R*d Initialisation : f0 quelconque. G0 R* Rf 0 - R*d H 0 =G0 Mise à jour à chaque itération : 62 N Vitesse de descente : H N 1 ,GN 1 H N 1 , R* RH N 1 f N f N 1 H N 1 N GN GN 1 R* RH N 1 N R* RX N R*d H N GN H N 1 GN ,GN GN 1 ,GN 1 Où 𝑋 , 𝑌 représente le produit scalaire de X par Y. Critère d’arrêt : GN ,GN Ici le critère d’arrêt a une importance toute particulière car le gradient conjugué est une méthode dont la convergence est rapide, mais parallèlement l’amplification du bruit est également très rapide. Bien sûr, pour cette méthode aussi il existe des techniques de régularisation, par exemple [70]. 3.4. OPTIMISATION MATHEMATIQUE 3.4.1. Principe général de l’optimisation En mathématiques, l’optimisation d’une fonction dépendante de f consiste à chercher les valeurs de f qui minimisent cette fonction en respectant certaines règles sur les valeurs possible de f, appelées contraintes. Les problèmes d’optimisation comportent trois composantes principales : Une fonction dite « objectif » à minimiser, représentant le plus souvent l’écart entre les données observées et des prédictions. Un jeu d’inconnues f ou de variables qui modifient la valeur de la fonction objectif. Les contraintes qui déterminent le domaine possible des valeurs des solutions f, c’est-à-dire excluent certaines valeurs et en autorisent d’autres, par exemple, la positivité est une contrainte évidente dans les problèmes de reconstruction d’images en TEMP. 63 En ce qui concerne les variables, il faut distinguer deux types de problèmes d’optimisation, celui où les variables sont discrètes (optimisation combinatoire) et celui où les variables sont continues dérivables. Dans le domaine de la reconstruction d’image, on ne s’intéressera qu’à l’optimisation continue, puisque les variables représenteront la concentration radioactive, ou le coefficient d’atténuation linéique, en tous points du volume. Par ailleurs, dans le domaine continu, on distingue les problèmes linéaires, c'est-à-dire ceux dont la fonction objectif dépend linéairement des variables, des problèmes non linéaires. Par exemple, en TEMP, si l’on considère seulement la reconstruction des données d’émission (concentration radioactive), il s’agit d’un problème linéaire car le contenu des images acquises d dépend linéairement de l’activité f, par contre, si l’on cherche à connaître l’atténuation des tissus (carte des µ), il s’agit d’un problème non linéaire (introduction d’une somme d’exponentielles). 3.4.2. Exemples de fonction objectif avec régularisateur Prenons l’exemple de la reconstruction tomographique de l’activité en TEMP. Les critères utilisés comme fonction objectif peuvent prendre par exemple les formes suivantes : Critère des moindres carrés, ou critère de Gauss, régularisé : 𝑅𝑖𝑗𝑘 𝑓𝑖 − 𝑑𝑗𝑘 ² + 𝐼(𝑓) min 𝑓 𝑗𝑘 𝑖 Critère du maximum de vraisemblance, qui découle de la loi statistique de Poisson pour l’émission radioactive, régularisé : min − 𝑓 𝑅𝑖𝑗𝑘 . 𝑓𝑖 ) + 𝐼(𝑓) 𝑅𝑖𝑗𝑘 𝑓𝑖 − 𝑑𝑗𝑘 𝑙𝑜𝑔( 𝑗𝑘 𝑖 𝑖 o 𝐼(𝑓) est un terme de régularisation qui a pour rôle d’éviter que les solutions ne soient trop bruitées. 𝐼(𝑓) est donc une valeur qui doit augmenter lorsque f présente de rapides variations d’un voxel à l’autre. o est un facteur de pondération à choisir de manière nuancer l’importance du terme régularisant par rapport au critère. 64 Dans le cas d’un problème mal posé, comme celui de la reconstruction, une régularisation est nécessaire. La minimisation avec régularisation revient à sélectionner, parmi les solutions possibles, celle qui est la plus éloignée des solutions bruitées. Un des régularisateurs les plus utilisés en optimisation est l’opérateur de Tikhonov qui utilise le gradient de voisinage en différence finie de f. Il a pour expression : 𝐼 𝑓 = 𝑓𝑖+𝑁 − 𝑓𝑖 2 + 𝑓𝑖+1 − 𝑓𝑖 2 𝑖 où i+N est le voxel situé au dessus du voxel i, et i+1 le voxel situé à droite du voxel i. 3.4.3. Exemples d’optimiseur La résolution de ce genre de problème passe par l’utilisation d’un « optimiseur ». Les optimiseurs sont des logiciels développés au sein de laboratoires de mathématiques ou de sociétés privées qui permettent la recherche des solutions d’un problème d’optimisation quelconque. Selon la méthode utilisée ces optimiseurs demandent en plus de la fonction f(x) à minimiser, le gradient, composé par la dérivée première de f(x), et le Hessien, composé par la dérivée seconde de f(x). L’optimiseur BFGS (des initiales de ses concepteurs Broyden-Fletcher-Goldfarb-Shanno est très connu pour résoudre un problème d'optimisation continu non-linéaire sans contraintes. L'intérêt principal de cet optimiseur est de ne pas demander explicitement le Hessien, mais de le construire lui-même par approximation, en analysant les différents gradients successifs. Une variante de cet optimiseur est le L-BFGS-B (L pour "Limited memory", B pour "Bounded"), permettant d’économiser la mémoire de calcul et acceptant des contraintes de bords [71] [72]. L’optimiseur KNITRO (Karush Non-linear Interior point Trust Region Optimization) est un optimiseur non linéaire avec contraintes moderne. Particulièrement adapté aux problèmes de grande traille et mal conditionnés, il utilise les techniques d'optimisation les plus performantes, aussi bien du point de vue de la robustesse que de la rapidité d'exécution. Outre les avantages offerts par BFGS, il offre plusieurs possibilités pour l’approximation du hessien, et même l’approximation du gradient, mais aussi pour l’utilisation de différents types de contraintes. En France, ce logiciel est commercialisé par la société Artelys, Paris. 65 3.5. CALCUL DES COEFFICIENTS DE LA MATRICE DE PROJECTION ET IMPLEMENTATION 3.5.1. Projection simple (1D) Ici on se place dans le cas où on ne cherche pas à modéliser la réponse du collimateur. Si on considérait le problème en trois dimensions on se retrouverait avec une matrice très creuse puisque les projections s’effectuent toujours dans le plan de la coupe. On traite donc les coupes indépendamment en posant le problème de manière bidimensionnelle. On dispose alors d’un système d’équation linéaire à N inconnues et MxS données, N étant le nombre de voxels à reconstruire dans une coupe, S le nombre d’angles de la caméra et M le nombre de dexels pour chaque angle. Pour des raisons de simplicité on choisit une taille de pixel égale à la taille des dexels et on prend N=M² car la résolution de reconstruction ne peut être meilleure que celle des projections. La discrétisation idéale pour un collimateur parallèle parfait est de calculer directement la fraction d’aire interceptée par un dexel j,k dans un pixel i (Figure 3-5). On a alors : Rijk Aijk A Aijk est l’aire interceptée par le voxel i par la bande provenant du dexel j,k et A est l’aire totale du voxel i. Caméra à l’angle k dexel j Aijk Pixel i Figure 3-5 Discrétisation de l’opérateur de projection. Ces coefficients de projections correspondent à une géométrie d’acquisition particulière de la caméra. Comme en routine clinique on utilise un protocole d’acquisition qui ne varie qu’avec le 66 type d’acquisition, il est inutile de calculer avant chaque reconstruction des coefficients que l’on peut préalablement stocker sur disque. 3.5.2. Projection avec modélisation de la perte de résolution avec la profondeur On peut considérer plusieurs façons de modéliser la perte de résolution. On peut se contenter de laisser les coupes indépendantes et de ne modéliser la perte de résolution seulement dans le plan de coupe, on parlera alors d’EM2D, OSEM2D, ou GC2D, lorsqu’EM, OSEM, ou GC utiliseront ce type de projecteur. Mais pour plus de précision on peut également faire une modélisation complète et rendre les coupes dépendantes, ce que l’on nommera alors sur le même principe EM3D, OSEM3D, GC3D. Le nombre de coefficients non nuls de la matrice R augmente alors sensiblement par rapport à la version 1D, surtout dans la version 3D où les coupes ne sont plus indépendantes. La mémoire vive nécessaire pour contenir les informations relatives à la matrice devient alors très importante pour des volumes 1283, de l’ordre de 1 giga-octet, si bien qu’il peut être préférable de les rééchantillonner en 643 [73]. Figure 3-6 : Modélisation 1D et 3D de la projection d’un voxel. En 3D la réponse s’étale sur plusieurs pixels, du fait de la résolution limitée. 3.5.3. Projection avec atténuation On note R[μ] le projecteur qui prend en compte les effets de la carte d’atténuation, cette fois les coefficients ne vont pas dépendre seulement de l’aire du pixel i, mais de l’aire de tous les pixels devant i. Il faudra donc ordonner les pixels en fonction de leur distance à la caméra. On notera 67 i jk i ' si le pixel i’ est plus proche que le pixel i’ de la caméra en une position k et s’ils sont tous les deux traversés par la bande issue du dexel j. On obtient : Rijk Rijk e Ai ' jk Ai ' jk i i ' e i i ' e jk On prend α=0.5 pour prendre en compte l’atténuation due au pixel duquel est issue l’activité. 3.5.4. Calcul implicite des coefficients par rotation du volume Ici on propose d’effectuer une rotation du volume initial autour de l’axe z et ainsi de calculer un nouveau volume en effectuant une interpolation des voxels [74]. Ainsi, quel que soit l’angle on se retrouve toujours dans le cas idéal (Figure 3-7) où le dexel est aligné avec une colonne entière de voxels. Aijk Figure 3-7 Discrétisation de l’opérateur de projection, caméra parallèle à la grille des pixels par rotation du volume. Les coefficients de la matrice de radon ne sont donc pas réellement calculés et n’ont pas besoin d’être stockés ce qui élimine les problèmes de mémoire des versions précédentes. On se retrouve donc avec un problème simplifié, ce qui va faciliter la tâche pour rajouter toutes les corrections futures. Pour la correction d’atténuation, il suffit de faire subir la même rotation à la carte d’atténuation pour obtenir les bons coefficients, chaque pixel situé devant le pixel projeté est parcouru durant la même distance qui est égale à la taille du pixel. 68 Autre avantage de cette méthode le projecteur et le rétroprojecteur deviennent aisément parallèlisables. Le mode d’interpolation utilisée lors de la rotation va influer sur la qualité de l’image reconstruite. Di Bella dans [75] teste différentes méthodes d’interpolation. Sur des données non bruitées, le plus proche voisin est celui qui donne les plus mauvais résultats comme on pouvait s’y attendre, alors que les interpolations bilinéaires et bicubiques donnent des résultats à peu près équivalents. Néanmoins la conclusion est que dans le cas de données bruitées, l’interpolation au plus proche voisin donne des résultats acceptables. 3.5.5. Utilisation du GPU pour accélérer la reconstruction Les premières tentatives sont réalisées par Cabral en 1994 [3] sur l’accélération de la rétroprojection filtrée, réalisé à l’époque sur des SGI (Silicon Graphics) Onyx. Mueller et Yagel [76] appliquent la méthode à l’algorithme ART (Algebric Reconstruction Technique). Exécutée à l’époque sur une station SGI Octane avec un frame buffer de 12 bits par composante et utilisant la bibliothèque OpenGL. Les temps passaient de 51 minutes par itération pour la version logicielle à 42.2 secondes pour la version accélérée soit un facteur de 73 pour un volume 1283 et 80 projections, ces stations SGI, ancêtres des GPUs modernes, ayant un coût pouvant dépasser les 20 000$. Plus récemment, avec l’émergence de PC ayant les mêmes capacités graphiques pour des prix grand public, Chidlow et Möller [77] ont utilisé une NVidia GeForce 4 pour accélérer OSEM. La carte ne supportant que 8 bits entiers par composante, cela limite beaucoup la précision de la reconstruction. Les additions et les multiplications sont réalisées à l’époque en utilisant les fonctionnalités du blending qui permettent normalement de gérer les paramètres de fusion des couleurs lors de l’affichage. Il est alors nécessaire de faire des transferts entre la mémoire centrale et la mémoire vidéo pour effectuer certaines opérations. A partir de 2005, Xu et Mueller [78] commencent à utiliser les shaders avec des NVidia FX 5900 et des ATI Radeon 9800. Wang [79] utilise la même génération de cartes graphiques et l’applique aux géométries fan beam. 69 La reconstruction tomographique est un problème qui se prête bien à l’accélération par le GPU. Nous verrons au Chapitre 6 comment l’appliquer à l’algorithme OSEM3D avec une prise en compte de la réponse de collimateur et de l’atténuation. 70 4. Tomographie cardiaque 4.1. LE CŒUR 4.1.1. Anatomie générale Le cœur est un muscle qui est constitué de quatre cavités. Les deux cavités inférieures sont les appelées les ventricules tandis que les deux cavités supérieures sont nommées les oreillettes. Le cœur est aussi séparé en deux parties : droite et gauche. Chacune comprenant une oreillette et un ventricule. La paroi qui sépare les oreillettes et les ventricules de la partie droite et gauche est appelée le septum (Figure 4-1). 1 : Oreillette droite 2 : Oreillette gauche 3 : Veine cave supérieure 4 : Aorte 5 : Artère pulmonaire 6 : Veine pulmonaire 7 : Valve mitrale (auriculo-ventriculaire) 8 : Valve aortique 9 : Ventricule gauche 10 : Ventricule droit 11 : Veine cave inférieure 12 : Valve tricuspide (auriculo-ventriculaire) 13 : Valve sigmoïde (pulmonaire) Figure 4-1 Schéma du cœur (source : Wikimedia Commons) L’oreillette droite récupère le sang qui a parcouru tout le corps, et l’envoie dans le ventricule droit qui l’éjecte vers les poumons pour y être ré-oxygéné. L’oreillette gauche collecte le sang fraîchement oxygéné qui vient de traverser les poumons et l’achemine au ventricule gauche qui éjecte le sang dans l’ensemble du corps. Le sang circule toujours dans le cœur dans la même direction grâce aux quatre valves cardiaques (tricuspide, pulmonaire, mitrale et aortique). Le sang entre dans le cœur depuis les 71 veines caves inférieure et supérieure, transite dans l’oreillette droite et est éjecté par le ventricule droit. De façon similaire, le sang parvient au cœur gauche via les quatre veines pulmonaires, transite dans l’oreillette gauche, et est éjecté dans le corps par le ventricule gauche. Les valves servent de clapets anti-retour en empêchant le sang de refluer dans le mauvais sens. Le cœur comprend un système de conduction électrique automatique qui assure chacun de ses battements. C’est ce que l’on appelle le nœud sinusal, il se trouve dans la paroi de l’oreillette droite. Cette région produit une impulsion électrique qui gagne une région centrale du cœur appelée nœud auriculo-ventriculaire, d’où elle est transmise à l’ensemble du tissu musculaire ventriculaire. Cette onde électrique produit la contraction du muscle cardiaque responsable de l’éjection du sang vers les poumons et l’aorte. Le nombre de contractions observées par minute correspond au rythme cardiaque. 4.1.2. Vascularisation du cœur Figure 4-2 Artères coronaires (CC Patrick J. Lynch, 2006) Le muscle cardiaque est vascularisé par les artères coronaires qui le nourrissent en lui apportant l’oxygène nécessaire à son fonctionnement. Il peut arriver que les artères soit obstruées ce qui entraine une diminution de l’apport sanguin au myocarde et peut perturber son fonctionnement. C’est ce que l’on nomme une ischémie myocardique. En cas d’obstruction partielle d’une artère on a des symptômes de type angine de poitrine. Si l’obstruction est totale, les cellules ne sont plus oxygénés ce qui entraine leur mort, on a alors une nécrose d’une partie du muscle cardiaque. C’est ce qu’on appelle un infarctus du myocarde. 72 4.1.3. Le ventricule gauche Le ventricule gauche est la partie du cœur la plus étudiée en médecine nucléaire. Ses parois étant bien plus épaisses que celles du ventricule droit, on le distingue nettement sur les images alors que celles du ventricule droit sont très peu visibles. Il est segmenté en plusieurs parties : - L’apex, qui est la pointe. - Le septum qui est la séparation entre les deux ventricules. - La paroi inférieure sur laquelle repose le cœur dans le corps. - La paroi latérale. - La paroi antérieure se situant à l’avant, près des côtes. Paroi inférieure (postérieure) Septum Coupes grand axe VD Paroi latérale VG Coupe petit axe Paroi antérieure Apex Figure 4-3 Schéma ventricules droits et gauche et plans de coupe. 4.2. ACQUISITION TOMOGRAPHIQUE 4.2.1. Acquisition simple On réalise ici une tomographie classique sans se soucier du mouvement du cœur, on obtient alors une image moyenne sur l’ensemble du cycle cardiaque. Sur un cœur normal (Figure 4-4) on aperçoit alors très bien la paroi du ventricule gauche. 73 Antérieur Apex Antérieur Septal Septal Latéral Apex Latéral Inférieur Inférieur Figure 4-4 Carte d’activé en tomographie cardiaque après réorientation d’un cœur normal. En cas de pathologie ischémique, le sang ne circulant pas correctement dans une partie du cœur, cela entraine un défaut de fixation du traceur dans certaines zones du cœur. On peut ainsi voir sur la Figure 4-5, que la paroi inférieure n’est pas correctement irriguée. Apex Antérieur Antérieur Septal Septal Latéral Latéral Inférieur Apex Inférieur Figure 4-5 Image reconstruite de tomographie cardiaque avec défaut de perfusion de la paroi inférieure. 4.2.2. Acquisition synchronisée Ici l’acquisition TEMP est couplée avec un électrocardiogramme. Au lieu d’avoir une image pour chaque angle, on en a plusieurs, généralement 8. Chaque image correspond à une étape du cycle cardiaque. Après reconstruction tomographique, on se retrouve ainsi avec une sorte de « film » de la distribution de la radioactivité dans le cœur, qui permet d’en étudier la cinétique. 74 4.3. VISUALISATION AVEC LE « BULL’S EYE » Antérieur Septal Apex Antérieur Latéral Septal Apex Latéral Inférieur Inférieur Figure 4-6 Carte polaire des activités cardiaques (Bull’s Eye). Cœur normal à gauche et hypofixation inférieure à droite. Une fois l’activité cardiaque reconstruite, on peut également la visualiser sous la forme d’une carte polaire en deux dimensions (Figure 4-6) nommée « bull’s eye ». Il existe de nombreuses méthodes pour le calculer, l’objectif étant à chaque fois de représenter toutes les coupes d’une manière concentrique avec l’apex au centre et la base du cœur en périphérie. 4.4. FANTOMES MATHEMATIQUES DE COEUR Les fantômes mathématiques en TEMP sont des simulations numériques qui tentent de modéliser de la façon la plus réaliste possible la distribution de l’activité ainsi que l’atténuation d’une partie du corps. On peut ainsi générer un jeu de projections correspondant et, le volume de départ étant connu, vérifier de la validité, au moins du point de vue numérique, des algorithmes de reconstruction. 4.4.1. Le fantôme MCAT Le fantôme MCAT (Mathematical Cardiac-Torso Phantom) modélise les organes internes du torse humain en utilisant des combinaisons d’objets et de surfaces géométriques décrits par des équations mathématiques simples. Défini avec des surfaces continues il peut être généré à toute résolution spatiale. 75 4.4.2. Le fantôme NCAT Le fantôme MCAT décrit précédemment est limité dans sa capacité à modéliser les organes et les variations anatomiques, aussi une nouvelle version nommée NCAT a été développée [80]. Elle intègre une méthode de modélisation des formes à base de NURBS (Non-Uniform Rational BSplines). Une surface NURBS est une représentation paramétrique en deux dimensions d’un objet, elle est définie par des points de contrôles. La modification d’un point de contrôle ne modifie la surface que localement, ce qui offre de nombreux avantages pour réaliser des modèles mathématiques de torse humain. Pour créer le fantôme NCAT les points de contrôles des NURBS ont été définis pour le cœur à partir d’image IRM et pour le reste des organes du torse à partir de la base de données d’images du « visible human project » [81]. On pourra ainsi générer les cartes d’activité (Figure 4-7) et d’atténuation (Figure 4-8). Figure 4-7 Fantôme NCAT, distribution d’activité. Figure 4-8 Fantôme NCAT, carte d’atténuation. 76 5. Correction de l’atténuation Nous avons décrit précédemment (2.5.1) les phénomènes physiques qui sont la cause de l’atténuation, et comment intégrer l’atténuation au processus de reconstruction une fois la carte des coefficients d’atténuation linéiques connue (3.5.3). Dans ce chapitre seront développées les conséquences de l’atténuation en TEMP ainsi que les différentes méthodes utilisées pour estimer la carte des coefficients. 5.1. CONSEQUENCES L’atténuation est responsable d’une déperdition d’environ 50% des photons dans le cas cérébral et 70% dans le cas cardiaque. Cette baisse de la statistique de comptage associée à la nature poissonienne de l’émission radioactive se traduit par une dégradation du rapport signal sur bruit. Plus grave pour la reconstruction, l’atténuation est rarement uniforme, ce qui peut induire des artefacts. Les structures les plus proches de la caméra sont moins affectées que les plus éloignées. Si l’angle de rotation est 360° les zones les plus centrales seront sous estimées. 5.1.1. Exemple d’atténuation sur un cylindre homogène Voici l’illustration de la reconstruction d’un cylindre de 10 cm de diamètre avec une atténuation uniforme (μ=0.15 cm-1). 64 projections sont simulées sur 360° en ne modélisant que l’atténuation. On reconstruit sans correction d’atténuation avec l’algorithme EM arrêté au bout de 40 itérations. Fantôme numérique homogène Reconstruction sans correction Figure 5-1 Reconstruction des projections atténuées d’un fantôme numérique représentant un cylindre homogène sans correction d’atténuation. La perte des photons est de plus de 20% au bord, alors qu’elle est de 50% au milieu du cylindre (Figure 5-1). La reconstruction est donc mauvaise même à un facteur multiplicatif près. 77 5.1.2. Atténuation diaphragmatique En imagerie du myocarde, le diaphragme et les organes sous-diaphragmatiques [82] peuvent occasionner des artefacts liés à l’hétérogénéité de l’atténuation, et conduire à des erreurs de diagnostic. Sur la figure suivante un fantôme numérique de cœur NCAT a été projeté sur 180°, avec les paramètres de rotation d’une acquisition cardiaque classique en prenant en compte l’atténuation. La carte d’atténuation (CT) montre la morphologie du patient, dont le diaphragme élevé va passer entre le cœur et la caméra durant l’acquisition. Poumon Artéfact d’atténuation Diaphragme CT Atténuation corrigée Figure 5-2 Vue coronale d’une atténuation diaphragmatique. Image TEMP sans correction, image CT, image TEMP corrigée de l’atténuation (acquisition TEMP/CT). Sur cet exemple l’effet de l’atténuation pourrait être confondu avec une ischémie ou un infarctus de la partie inférieure du ventricule gauche. Ce type d’artefact se rencontre fréquemment en routine clinique, et peut perturber le diagnostic. 5.1.3. Atténuation mammaire Chez la femme, la présence des seins peut également entrainer des artefacts. Cette atténuation peut s’avérer problématique en raison de la grande variabilité interindividuelle de la quantité de tissu mammaire. On aura alors une diminution apparente de l’activité sur la partie antérieure, comme l’illustre la figure 5-3. 78 Artéfact Sein d’atténuation CT Atténuation corrigée Figure 5-3 Vue sagittale d’une atténuation mammaire. Image TEMP sans correction, image CT, image TEMP corrigée de l’atténuation (acquisition TEMP/CT). 5.2. ESTIMATION DE LA CARTE D’ATTENUATION Pour corriger l’atténuation en TEMP, il est nécessaire de disposer d’une estimation de la carte d’atténuation. Plusieurs méthodes ont été proposées, soit sans données supplémentaires, soit à partir d’une image proche de la carte d’atténuation. 5.2.1. Carte uniforme sur un contour C’est l’estimation la plus simple et la première utilisée en routine clinique associée à la méthode de Chang [52]. Elle nécessite d’obtenir le contour du corps atténuant et un coefficient d’atténuation qui sera uniforme à l’intérieur du contour. Cette méthode est surtout utilisée sur des images de cerveau, car dans ce cas la carte d’atténuation est quasi uniforme à l’exception des os du crâne. Pour obtenir le contour, on peut utiliser les données d’émission, on procède alors à une première reconstruction rapide de l’objet, par une rétroprojection filtrée, ou après quelques itérations d’OSEM, pour ensuite obtenir le contour par seuillage. On peut utiliser soit le rayonnement direct acquis dans la fenêtre du pic photoélectrique, soit le rayonnement diffusé dans une fenêtre énergétique plus basse [83]. Comme le diffusé Compton provient de toutes les structures anatomiques et pas seulement de celles qui ont fixé le traceur, ces méthodes donnent de meilleurs résultats que celles à partir du pic photoélectrique [84]. 79 Le coefficient uniforme μ de l’objet est généralement laissé au choix de l’utilisateur. On choisit en principe un μ égal à celui de l’eau pour l’énergie du traceur correspondant, donc proche de 0.15 cm-1 pour une acquisition au technétium à 140keV. 5.2.2. Utilisation d’une source externe de transmission gamma Ici on utilise une source radioactive placée à l’extérieur du patient, tournant autour du patient de façon à se retrouver toujours face à la caméra. Le même détecteur (la gamma caméra) réalise à la fois l’acquisition des données d’émission liées à la concentration radioactive, et aussi l’acquisition des données de transmission, relatives à l’atténuation des photons de la source externe par les tissus à l’intérieur du sujet. Les deux acquisitions tomographiques sont réalisées soit simultanément, soit successivement. Cette méthode possède plusieurs limitations. Si les deux modalités sont acquises simultanément, il peut y avoir contamination entre les deux types de sources, externes et internes, d’énergies différentes. Les photons de la source radioactive de plus haute énergie peuvent par effet Compton diffuser et donner naissance à des photons d’une énergie proche de celle des photons émis par l’autre source. Si le phénomène n’est pas corrigé des artefacts apparaîtront sur l’image reconstruite. Celler et al. [85] préconisent d’utiliser une source de transmission à pic photoélectrique plus élevé que celle d’émission pour réduire les problèmes. On peut aussi faire l’acquisition des données de transmission après celles des données d’émission, mais ceci entraîne un autre inconvénient, celui d’augmenter le temps d’examen et l’inconfort pour le patient. Après reconstruction des données de transmission, on obtient les coefficients d’atténuation µE2(i) en chaque voxel i du volume pour l’énergie de la source de transmission (E2). Or, pour corriger les données d’émission de l’atténuation des tissus, il est nécessaire de disposer des coefficients d’atténuation des tissus pour l’énergie (E1) de la source d’émission. On peut utiliser une approximation par la relation suivante : 𝐸1 𝑖 = 𝐸2 𝑖 𝐸1 𝑒𝑎𝑢 𝐸2 𝑒𝑎𝑢 Il s’agit d’une méthode de référence pour la correction d’atténuation, car elle permet d’obtenir une carte d’atténuation non-uniforme pour la correction des tomographies cardiaques. 80 Malheureusement elle nécessite du matériel supplémentaire peu répandu en France, et provoque une irradiation supplémentaire pour le patient 5.2.3. Correction avec utilisation d’un scanner à rayons X Un scanner à rayons X mesure l’atténuation des tissus à des photons X. Le principe est comparable au dispositif de transmission gamma vu précédemment, sauf que dans ce cas, il s’agit d’un tube à rayons X au lieu de la source radioactive externe, et que par ailleurs le détecteur n’est pas une gamma caméra, mais un détecteur haute résolution. L’intérêt majeur d’utiliser un scanner X est d’avoir des images peu bruitées et à haute résolution. Actuellement, il existe des caméras multi-modalités TEMP/CT, permettant d’effectuer sur un même appareil à la fois une acquisition TEMP, et une acquisition scanner. L’intérêt d’une telle configuration est d’améliorer le confort du patient, et d’éviter d’effectuer des procédures délicates de recalage d’images inter-modalités. Classiquement, l’image scanner est en unités Hounsfield (NH) qui sont directement liées aux coefficients d’atténuation : NH= μ tissu -μ eau ×1000 μ eau Ce qui donne donc : μ tissu = NH μ eau μ eau 1000 Tissu Nombre Hounsfield Air -1000 Poumons -500 Graisse -100 Eau 0 Muscle 50 Cartilage+Os 1000 Aluminium 2700 Tableau 5-1 Nombres Hounsfield et tissus L’énergie des photons X du CT n’étant pas la même que celle des photons gamma du radioisotope, il faudra effectuer une correction de même type que celle appliquée dans le cas de la source radioactive externe. Par ailleurs, les photons issus d’un tube à rayons X n’étant pas mono- 81 énergétiques, la relation entre les coefficients d’atténuation pour les deux énergies n’est pas strictement linéaire. L’idéal pour évaluer les correspondances entre les unités Hounsfield et les coefficients d’atténuation linéique TEMP est de mettre en place un protocole expérimental qui consiste à un étalonnage précis en employant des matériaux de densités différentes. En TEMP cardiaque, les données d’émission dans la périphérie du thorax peuvent être tronquées sur certaines projections sans que cela n’ait d’importance sur la reconstruction, aussi longtemps que le cœur est dans le champ de vision [86]. Malheureusement ce n’est pas la même chose pour les images de transmission utilisées pour la correction d’atténuation. Il est fréquent d’observer des acquisitions où le thorax dépasse les bords de l’image CT, ce qui entraine une sous correction de l’activité. Egalement, il arrive souvent que l’activité de l’apex soit sous évaluée et qu’il se retrouve aminci sur les images [87] [88]. Malgré ces quelques difficultés, une carte d’atténuation déduite d’un scanner sera plus précise qu’une carte uniforme et permettra de supprimer certains artefacts créés lors d’examens cardiaques comme l’atténuation diaphragmatique. 5.2.4. Estimation préalable par utilisation des conditions de consistance Seules certaines cartes d’atténuation sont compatibles avec les projections. A partir de là, plusieurs approches permettent d’estimer les coefficients d’atténuation sans reconstruire la distribution d’activité. La relation qui relie les projections calculées à la carte d’atténuation est nommée condition de consistance. 5.2.4.1.Conditions de consistance analytiques Natterer [89] est l’un des premiers à s’intéresser à ce type de méthodes. Par la suite Wetch reprend ses idées [90] et a développé une méthode nommée ConTraSPECT dans laquelle la carte d’atténuation est recherchée sous la forme d’une ellipse de μ uniforme. Cette méthode a été programmée et testée sur des données cliniques par Gourion dans [91] et [73]. D’autres essais avec des à priori plus complexes [92], ne furent pas très fructueux : la solution se révèle instable et très dépendante des conditions initiales. 82 Natterer dans [93], utilise une procédure de déformation d’une carte d’atténuation de référence afin de vérifier au mieux les conditions de consistance, et obtenir ainsi des cartes plus précises que celles obtenues avec ConTraSPECT. Faghihi dans [94], utilise une image scanner et utilise les conditions de consistance pour recaler au mieux la carte d’atténuation qui en est déduite. Bronnikov dans [95] utilise des conditions de consistance simplifiées en exploitant la relation linéaire qui existe entre la carte d’atténuation et les projections mesurées à deux positions opposées de 180°. Mais il faut que l’atténuation soit suffisamment faible, car si elle est trop forte les projections opposées risquent de perdre leur relation. Ces méthodes ne fonctionnent que lorsque l’ensemble des projections acquis par la caméra est réparti sur 360°, ce qui risque de poser problème dans le cas d’acquisition cardiaque qui sont sur 180°. 5.2.4.2.Conditions de consistance algébriques A cause de l’instabilité numérique des conditions de consistance analytiques, certains auteurs ont tenté de créer des conditions de consistance algébriques [96] [97] [98]. Ces approches semblent moins instables que les conditions de consistances analytiques, elles ne nécessitent pas toujours d’information à priori sur la carte d’atténuation et engendrent des cartes d’atténuation plus proches de la réalité. 5.2.5. Reconstruction simultanée de l’émission et de l’atténuation Il s’agit de déterminer la carte d’atténuation et l’activité simultanément à partir des seules données d’émission. Dans sa thèse de 2002 intitulée « Correction d’atténuation à partir des seules données d’émission » D Gourion [73] a présenté un panorama complet de ces méthodes. Le problème est rendu difficile d’une part par le fait de la non-linéarité en μ, et d’autre part par le fait que le nombre d’inconnues est doublé par rapport au problème classique où il faut trouver l’activité avec une carte d’atténuation connue. Par ailleurs, il faut rappeler que si la transformée de Radon atténuée est injective par rapport à l’activité seule [99], elle ne l’est plus si elle est aussi fonction de l’atténuation. On constate facilement qu’une source ponctuelle peut engendrer la même transformée de Radon avec deux distributions d’atténuation différentes [100] [101]. 83 Il n’y a donc pas la plupart du temps une unique solution à l’inversion de la transformée de Radon atténuée. De plus le but d’une acquisition TEMP est la reconstruction précise de la carte des distributions de l’activité radioactive du traceur et non de la carte des coefficients d’atténuation. Ainsi, même si cette dernière n’est pas exacte, ce qui importe, est qu’elle engendre une valeur de f proche de la réalité. Dans la pratique, on observe généralement un artefact de cross-talk qui se traduit par une sous-estimation importante de l’atténuation aux endroits de forte activité. Le premier article sur ce sujet date de 1979 [102]. Dicken [103] [104], emploie un critère des moindres carrés et une régularisation de Tikhonov. Une autre approche, basée sur le même principe, est proposée par Panin [105]. Elle procède à une décomposition en valeurs singulières pour linéariser partiellement la dépendance non linéaire par rapport à μ. Une autre façon de résoudre la transformée de Radon atténuée est de prendre en compte la statistique de Poisson pour les données d’émission, associée au critère de maximum de vraisemblance. On obtient un problème d’optimisation de la forme : M S N N min R ijk [µ]fi - d jk log( R ijk [µ]f i ) +αI[f,µ] f,µ j=1 k=1 i=1 i=1 dont le but est de minimiser l’opposé du logarithme de la vraisemblance des variables poissoniennes indépendantes auquel on ajoute d’un terme régularisant I[f,µ]. Krol [106] utilise un algorithme de type EM. Les méthodes de type EM ont l’avantage d’être des procédures itératives simples, mais le cross-talk est très présent. Cet algorithme servira de base pour la méthode implémentée dans la section 6.3.3. Nuyts [107] utilise pour sa part une approche de maximum a posteriori qui incorpore une connaissance a priori sur les coefficients d’atténuation et prend aussi en compte la nature poissonienne de l’émission radioactive. Le cross-talk bien que présent est beaucoup plus léger. Dans toutes les approches citées précédemment, chaque itération de l’algorithme se décompose en une étape optimisant f et une étape optimisant µ. Bien que cela réduise la taille du problème et permette d’utiliser la linéarité du problème en f, cette façon de procéder amplifie le phénomène de cross-talk dans les reconstructions. 84 La méthode développée par Daniel Gourion [73] [108] se distingue par le fait qu’elle optimise vraiment simultanément par rapport à f et µ et par l’étude de plusieurs critères, régularisateurs et points initiaux possibles. L’algorithme d’optimisation utilisé est L-BFGS-B. La méthode a été testée sur une coupe du fantôme MCAT, générée en tenant compte de l’atténuation et du bruit poissonien. Les résultats obtenus sont très proches d’une reconstruction avec la vraie carte d’atténuation, mais le choix du point initial était très important pour parvenir à de tels résultats. Des tests ont également eu lieu sur un fantôme physique striatal RSD rempli d’une activité homogène. Pour obtenir une bonne quantification relative sur l’ensemble du volume il a été nécessaire d’utiliser des a priori anatomiques contraignant les coefficients d’atténuation. L’optimisation n’a pas été réalisée en tenant compte de réponse impulsionnelle 3D du collimateur à cause de la taille du problème et des limitations techniques de l’époque. C’est pour cette raison que nous avons développé une méthode semblable qui traite le volume dans son ensemble tout en prenant en compte la réponse du collimateur dans la section 6.5. 85 6. Méthodes développées Ce chapitre présente les méthodes et les algorithmes que nous avons développés. Les deux opérateurs de base des algorithmes itératifs sont le projecteur et le rétroprojecteur. Une fois ceux-ci réalisés, il est possible de les intégrer à n’importe quel algorithme itératif. Ce sont eux qui consomment le plus de temps sur le CPU et dont le gain de vitesse est le plus important lors du passage à une implémentation sur GPU. D’autres étapes plus simples des algorithmes peuvent également être réalisées sur le GPU pour limiter au maximum les transferts entre la mémoire vidéo et la mémoire centrale. Nous présentons donc dans ce chapitre l’implémentation de ces opérateurs sur GPU, puis comment ces opérateurs ont été utilisés dans différentes méthodes de reconstruction, soit pour reconstruire l’émission radioactive seule par les méthodes OSEM, Gradient Conjugué, et optimisation KNITRO, soit pour reconstruire à la fois l’émission et la transmission avec les méthodes OSEMA et KNITRO. Puis, nous présentons succinctement l’interface du programme de test que nous avons développée pour tester nos méthodes et algorithmes. Enfin, nous présentons l’implémentation d’un simulateur de Monte Carlo sur GPU pour la simulation de l’effet Compton. 6.1. CREATION D’UN PROJECTEUR ET D’UN RETROPROJECTEUR SUR GPU Pour calculer la projection et la rétroprojection nous procédons à une rotation de la texture des coupes du volume en utilisant la méthode avec rotation du volume [74]. La carte graphique possédant des fonctions câblées pour la rotation, cette dernière est accélérée matériellement et donc très rapide par rapport aux versions logicielles des processeurs centraux. La précision utilisée dans les textures utilisées pour le stockage des données est réglable, nous utilisons les deux seules qui nous intéressent à savoir 16 bits et 32 bits par composante. Les sections suivantes décriront chacun des opérateurs, avec une algorithmique spécifique à l’implémentation sur le GPU. 86 6.1.1. Projecteur 6.1.1.1. Base Nous avons donc une pile TexVolume de nbCoupes textures 2D qui représente le volume de distribution de la radioactivité de taille (tailleX, tailleX, nbCoupes), chaque texture de taille (tailleX, tailleX) représentant une des coupes. Nous avons également une autre pile de nbProjs textures nommée TexProj où chaque texture de taille (tailleX, nbCoupes) est destinée à recevoir la projection calculée pour un angle donné. Nous avons également besoin d’une texture temporaire temp1 de taille (tailleX, nbCoupes) pour contenir les résultats intermédiaires. 6.1.1.2. Prise en compte de la perte de résolution avec la profondeur Pour prendre en compte la perte de résolution nous utilisons un fragment shader qui applique une convolution gaussienne à l’image (voir l’exemple section 1.3). Le filtre gaussien étant séparable, on applique une convolution horizontale et verticale pour effectuer OSEM3D, pour OSEM2D, on n’applique que la convolution horizontale. Comme nous voulons appliquer la convolution sous la forme d’un masque nous devons la discrétiser et tronquer les valeurs trop faibles, puisque le masque doit avoir une taille finie. Les coefficients du masque variant avec la profondeur il faut donc un masque pour chaque profondeur. Nous prenons comme unité le pixel, ce qui simplifie les calculs. Nous avons vu précédemment (en page 37) comment calculer la résolution totale Rt en fonction de la distance par rapport à la caméra (), de la taille des trous (e), de l’épaisseur du collimateur (h) et de la résolution intrinsèque de la caméra Ri: 𝑅𝑡 = 𝑒 × 2 + 𝑅𝑖2 Et nous connaissons son lien avec σ : R 2 2ln 2 t Ce qui équivaut à : 𝑒 = × 2 + 𝑅𝑖2 8 𝑙𝑛2 87 Déterminons tout d’abord la profondeur maximale. Pour cela nous avons besoin du rayon de giration de la caméra qui nous donne la distance avec le centre de l’image, ensuite on lui ajoute la moitié de la taille de l’image, ce qui nous permet d’englober tout l’espace entre la caméra et la fin de l’image dans la direction visée, on a donc : 𝑚𝑎𝑥 = 𝑟𝑎𝑦𝑜𝑛_𝑔𝑖𝑟𝑎𝑡𝑖𝑜𝑛 𝑡𝑎𝑖𝑙𝑙𝑒_𝑖𝑚𝑎𝑔𝑒 + 2 𝑡𝑎𝑖𝑙𝑙𝑒_𝑝𝑖𝑥𝑒𝑙 Cette distance va nous permettre d’obtenir l’écart-type maximal de la gaussienne σmax : 𝑒 𝑚𝑎𝑥 = 𝑚𝑎𝑥 × 2 + 𝑅𝑖2 8 𝑙𝑛2 Comme la gaussienne est symétrique nous n’avons besoin de stocker qu’un demi-masque qui est donc de taille : taille _ masque floor ( max t ) 1 floor étant la fonction partie entière et t la variable d’entrée de la fonction de répartition de la gaussienne pour obtenir la population désirée. Ainsi pour t=3.5 on aura 99.98% de la gaussienne. Il ne nous reste plus qu’à calculer les coefficients de la gaussienne, reprenons donc son expression : P( x) -x2 1 exp( 2 ) 2 2 Comme nous avons pris pour unité le pixel, P(0) correspond au pixel sur lequel le masque est centré et P(i) au i-ème pixel après ou avant. Puisque nous avons tronqué les valeurs trop petites de la gaussienne, il faut ensuite normaliser les valeurs pour que la somme soit égale à 1. Pour cela on divise toutes les valeurs par le maximum du masque. Il faut répéter ce calcul pour chaque profondeur, nous avons donc au total tailleX masques. Ces masques seront stockés dans une texture 2D de taille ( taille _ masque ,tailleX), qui passée à un fragment shader lui permettent de trouver aisément les bons coefficients. Dans le cas éventuel où nous avons une acquisition de type « body contour », où la distance avec la caméra est variable avec l’angle, il faut donc une texture pour chaque angle avec les coefficients correspondants, et changer la texture passée au shader à chaque fois. 88 De plus nous utilisons une deuxième texture temporaire temp2 qui est comme la texture temporaire de la version de base de la même taille qu’une projection c’est à dire (tailleX, nbCoupes). On a besoin de cette deuxième texture car la convolution crée une indirection, c'est-àdire que des pixels lus sur la texture de départ n’ont pas la même coordonnée que celui sur la texture d’arrivée, car à cause du parallélisme des opérations, lire et écrire sur la même texture aurait des effets imprévisibles. 6.1.1.3. Atténuation Nous créons une nouvelle pile de textures TexVolumeAtn de même taille que TexVolume qui contient les coefficients multiplicatifs pour l’atténuation, les e -μ i l avec μi coefficient d’atténuation du voxel i et l longueur du voxel. Ici, il faut rajouter une texture temporaire atn qui reçoit la tranche perpendiculaire à l’axe de projection courante, donc toujours de taille (tailleX, nbCoupes). 6.1.1.4. Fan beam Ici, juste après le calcul de la tranche perpendiculaire (émission et atténuation) on applique un facteur de zoom horizontal : 𝑧𝑜𝑜𝑚 = − Avec la distance focale et la distance de la tranche à la caméra. Normalement, dans une acquisition fan beam on s’arrange pour que le point focal ne soit pas dans l’image, donc le cas où - = 0 ne doit pas se présenter. Mais pour la robustesse lorsque est égal à , le facteur de zoom est égal à la dimension de l’image, ce qui fait que le pixel central (en fait l’interpolation des 4 pixels centraux puisque souvent l’image à une dimension puissance de 2) occupe toute l’image. Ce zoom s’effectue avant d’appliquer la convolution. La déformation ainsi créée va simuler les caractéristiques du collimateur. Si, de plus, nous voulons prendre en compte l’atténuation, tous les pixels ne sont plus traversés d’une même distance. Les pixels sur les bords de l’image subissent une atténuation plus importante que les pixels centraux. Soit c la distance au centre et la focale : 89 𝑥𝑓 = 𝑐 ² + ² On obtient ainsi xf le facteur qu’il faut appliquer à la distance normalement traversée (taille du pixel) dans le cas parallèle. 6.1.1.5. Algorithme L’algorithme correspondant au calcul du projecteur est présenté en Annexe B. 6.1.2. Rétroprojecteur 6.1.2.1. Base Nous avons ici aussi TexVolume et TexProj de même taille que pour le projecteur, sauf que cette fois-ci on lit TexProj et on écrit dans TexVolume. Nous avons également besoin d’une texture temporaire temp1 et temp2 cette fois de la taille d’une coupe (tailleX, tailleX) pour contenir les résultats intermédiaires. 6.1.2.2.Prise en compte de la perte de résolution avec la profondeur Les coefficients sont calculés de la même façon que pour la projection. Les shaders sont toutefois quelque peu différents dans leur conception. Il faut d’abord appliquer un shader spécial pour la rétroprojection verticale qui prend la projection courante en entrée et en lisant les lignes audessus et au-dessous de la ligne correspondant à la coupe courante et affiche le résultat sur cette coupe. Pour la convolution horizontale, on l’applique sur la coupe épandue. Ici contrairement à la projection on utilise tous les masques à chaque affichage puisque toutes les profondeurs sont concernées lors de l’épandage. 6.1.2.3. Atténuation Il faut cette fois calculer à partir de la carte d’atténuation l’image des e-dμl pour l’angle courant que l’on multiplie à la coupe épandue. Les e-dμl est une image représentant le cumul des atténuations des pixels traversés pour atteindre le détecteur pour un certains angle. Pour les calculer on applique l’algorithme suivant : Rotation de la carte d’atténuation puis résultat dans tex1 90 Pour la profondeur y de 0 à tailleX-1 (de la plus proche à la plus éloignée) { Si y impair { On multiplie par la ligne y de tex1 les lignes allant de y+1 à tailleX-1 on place le résultat dans tex2. } Si y pair { On multiplie par la ligne y de tex2 les lignes allant de y+1 à tailleX-1 on place le résultat dans tex1. } } 6.1.2.4. Fan beam Comme pour la projection, on a le même facteur de zoom qui dépend de la profondeur et de la focale, mais cette fois on fait un épandage sur une coupe. Nous rétroprojetons normalement sur la coupe, puis après la convolution on étire la coupe de façon à ce que la géométrie soit suivie. 6.1.2.5.Algorithme L’algorithme du rétroprojecteur est présenté en Annexe C. 6.2. VERSION CPU DU PROJECTEUR ET DU RETROPROJECTEUR Pour comparer la qualité des résultats et la vitesse d’exécution, nous avons implémenté une version CPU du projecteur et rétroprojecteur. On utilise toujours la même méthode avec rotation du volume. Pour les tests concernant le temps de calcul, le programme est compilé sous Visual C++ 2005 en mode Release en utilisant l’optimisation de vitesse. Si pour la version GPU, ce genre d’optimisation n’a pas grand effet vu que les instructions CPU de contrôle passent le plus clair de leur temps à attendre le GPU, ici elle a toute son importance. 91 Les variables utilisées pour stocker les données seront en 32 bits (le type float) ce qui permettra de comparer à la version GPU qui utilisera des textures en 32 bits par composantes. 6.3. OSEM 6.3.1. Emission Soit la formule d’EM : f (n 1) i d jk fi(n ) R ijk (n ) R ijk j,k R ljk f l j,k l Le projecteur et le rétroprojecteur sont réalisés de telle manière, que s’il n’y a pas d’atténuation symétrique, le volume de normalisation V soit égal à 1. On obtient donc en utilisant les opérateurs précédents : f ( n 1) f (n) d Retroprojection (n) V Projection( f ) S’il y a atténuation symétrique on crée un tableau normVolume de taille égale au nombre des sous-ensembles. normVolume[subset] contient la piles de texture correspondant au volume de normalisation du sous-ensemble courant. On initialise les textures du volume à 1 Pour chaque itération { Pour chaque sous-ensemble { Projection de volume, résultat dans projCalculées Division de projMesurées par projCalculées, résultat dans projCalculées Retroprojection de projCalculées, résultat dans volumeRetro 92 Multiplication de volumeRetro et volume, résultat dans volume. Si correction d’atténuation symétique, division de volume par normVolume[subset] du sous ensemble, résultat dans volume. } } On ne sort à aucun moment de la mémoire vidéo durant le déroulement de l’algorithme, tout est chargé au début et sauvegardé à la fin. 6.3.2. Transmission Ici c’est la carte d’atténuation que l’on optimise au lieu du volume d’émission. ( n 1) Projection ( f ( n ) ) Retroprojection d (n) A chaque itération l’atténuation de l’itération précédente est donc multipliée par la rétroprojection non atténuée de la projection atténuée de l’activité précédente par les projections mesurées. Ce qui nous donne l’algorithme suivant : On défini un contour par seuillage. A l’extérieur du contour la valeur de la texture est 1 (donc μ=0) et à l’intérieur on prend μeau. Le résultat est placé dans volumeAtn Pour chaque itération { Pour chaque sous-ensemble { Projection de volume atténuée projCalculées. 93 par volumeAtn, résultat dans Division de projCalculées par projMesurées (Attention c’est l’inverse de l’émission), résultat dans projCalculées. Retroprojection non atténuée de projCalculées, résultat dans volumeRetro. On fait volumeAtn = –log(volumeAtn)/ taillePixel pour retrouver les coefficient d’atténuation linéiques. Multiplication de volumeRetro et volumeAtn, résultat dans volumeAtn. On fait volumeAtn = exp(-volumeAtn * taillePixel) pour retrouver les coefficients multiplicatifs de l’atténuation pour la suite du calcul. } } On fait volumeAtn = –log(volumeAtn)/taillePixel pour récupérer l’image finale 6.3.3. Optimisation de l’émission et de la transmission en alternance Cette méthode est basée sur la méthode de Krol [106]. On effectue alternativement une itération d’émission puis une itération de transmission à la suite, de manière à corriger l’image d’émission de l’atténuation, sans données supplémentaires de transmission. Nous appelons cette méthode OSEMA, ou OSEM3DA (comme OSEM ou OSEM3D Alternée avec correction d’Atténuation). Si l’atténuation est symétrique, il ne faut pas oublier de recalculer le normVolume du sous ensemble courant après chaque itération de transmission car la carte d’atténuation est modifiée. A cause du cross talk un problème apparaît dans les zones où l’activité est faible, au fil des itérations les valeurs d’atténuation vont augmenter très vite parfois jusqu’au dépassement de 94 capacité de stockage des valeurs flottantes. Ceci entraînant des artefacts importants rendant l’image reconstruite totalement inutilisable. Un masque sur le contour résout une partie du problème, mais restent les pixels près des bords qui restent affectées. Pour cela dès qu’une valeur d’atténuation dépasse un certain seuil, par exemple une atténuation qu’on n’est pas sensé retrouver sur le patient à l’énergie du traceur courant, on met le pixel d’atténuation à 0. On peut également faire varier la vitesse d’optimisation du critère d’une itération par rapport à l’autre pour que l’optimisation de l’atténuation n’aille pas trop vite par rapport à celle de l’émission. 6.4. GRADIENT CONJUGUE Ici seul l’opérateur R*R (la rétroprojection de la projection) est implémenté sur GPU, le reste des opérations s’effectuant sur CPU, en particulier le produit scalaire. On applique donc l’algorithme tel qu’il est décrit dans la section 3.3.3. Cette méthode s’est révélée plus instable que la méthode OSEM, comme nous le montrerons dans le chapitre 7.1. Aussi, nous ne l’avons mise en œuvre et testée que pour le calcul de l’émission radioactive seule corrigée ou pas de la résolution (GC1D ou GC3D) et pas pour le calcul alterné activité-atténuation. 6.5. METHODE AVEC KNITRO 6.5.1. Introduction Ici nous utilisons l’optimiseur non-linéaire KNITRO (cf. paragraphe 3.4.3) qui prend une fonction objectif qu’il cherche à minimiser. Cet optimiseur a également besoin d’un gradient. Il faut donc calculer les dérivées pour les fonctions objectifs de Poisson et de Gauss. 95 La relation de base est : R ij Tk μ Tk f i , pour tout j B et k S iV Ici : - pjk est la donnée mesurée pour la projection j B à la position k ou θk S . B=série de projections, S=série de position angulaire de la caméra, V=série de voxels. - * Tk rotation inverse au sens de la caméra d’angle θk . Et sont adjoint Tk qui est la rotation * « inverse » de même angle mais dans le sens de la caméra, alors on a Tk Tk I . - f i =activité du voxel i, i =coefficient d’atténuation du voxel i. Le coefficient R ij v g dépend linéairement de l’activité gi mais non linéairement de l’atténuation v. - R ij Tk = l’activité pour la projection j à la position angulaire k, quand le voxel i à une activité unitaire, tous les autres voxels ont un activité nulle, et où l’atténuation des tissus est donnée par . - (…)i est le i-ème élément du vecteur dont les indices sont les voxels. - Pour simplifier i sont toujours les voxels, j les projections, k les positions angulaires. Les coefficients ont la forme : Rij v Rij exp vi ' i ':ii ' Ici on introduit la notation i i ' voxel i’ est derrière le voxel i. 6.5.2. Objectif de Poisson On définit la fonction qui correspond à l’opérateur de projection atténué : Θ jk (f,μ)= R ij Tk μ Tk f i iV Si le modèle de Poisson est utilisé comme dans OSEM on doit minimiser : ( f , ) jk ( f , ) p jk log jk ( f , ) jk Alors les dérivées sont : 96 ( f , ) p jk jk ( f , ) ( f , ) jk jk i* ( f , ) i * jk i * p jk jk ( f , ) 1 jk jk ( f , ) i* Cela explique pourquoi le travail est de calculer essentiellement les gradients de respectivement pour μ et f. Naturellement, la dérivée pour f est obtenue par la même formule. ( f , ) p jk jk ( f , ) ( f , ) jk jk fi* f ( f , ) f i * jk i * p jk jk ( f , ) 1 jk ( f , ) jk fi* Donc ici nous devons connaître : jk ( f , ) fi* Rij Tk iV Tk f i fi* Maintenant nous avons : Tk f i tiik ' fi ' i 'V Tk f i tiik* fi* En substituant on a : jk ( f , ) fi* Rij Tk tiik* iV On écrit : v jk =1- p jk Θ jk f,μ On obtient en substituant par les précédents : ( f , ) v jk Rij Tk tiik* tiik* Rij Tk v jk fi* jk iV iV jk 97 jk Ce n’est rien de plus que l’application de l’opérateur adjoint de l’opérateur sur le vecteur v. On peut calculer le gradient de f avec l’objectif de poisson comme il suit : v=R[mu]f ; // projection de f v=ones-p/v; nabla=R[mu]*v; // retroprojection de v return nabla; 6.5.3. Objectif de Gauss Ici nous avons : ( f , ) 2 1 jk ( f , ) p jk 2 jk Alors les dérivées sont : jk ( f , ) ( f , ) jk ( f , ) p jk i* i* jk Donc le travail est essentiellement le même que pour l’objectif de poisson. On peut écrire : jk ( f , ) ( f , ) v jk i* i* jk Où : 1 p jk jk ( f , ) v jk ( f , ) p jk jk Pour Poisson Pour Gauss L’essentiel du travail est de calculer v. Le gradient pour l’objectif de Gauss pour f est obtenu par la procédure suivante : v=R[mu]f ; // projection de f v-=p; nabla=R[mu]*v; // retroprojection de v return nabla; 98 6.5.4. Calcul du gradient pour l’atténuation On écrit v=Tk μ sous la forme vi tiik i alors Rij Tk (Tk f )i Tk*v Rij v (Tk f )i . Ce qui * * i*V signifie utiliser la règle de dérivation des fonctions composées avec i* tik'i* i 'V . vi* On doit calculer pour les deux choix possible de v : f , v jk iV jk Rij Tk (Tk f )i i* v jk tik'i* Rij Tk Tk f vi ' jk i i 'V v jk tik'i* i 'V jk i Rij Tk Tk f i vi ' v jk tik'i* Rij Tk Tk f i 'V jk i i:i i ' i tik'i* v jk Rij Tk Tk f i k i' j i:i i ' Tk* v jk Rij Tk Tk f i j i:ii ' i 'V i* k On peut l’écrire de la façon suivante : On calcule les vecteurs wk, où wik' v jk Rij Tk Tk f i j et calculer Tk* wk qui est le gradient. k nablaphi=zeros pour k S { w=zeros; pour i V { pour j B { help=Rij[Tkμ](Tkf)i*v[j][k] ; pour (i’ derrière i) { w[i’]+=help ; } 99 i:i i ' } } * nablaphi-= Tk w; } Pour paralléliser cet algorithme et permettre le calcul par le GPU nous allons créer un nouvel opérateur Rpente[μ] et appliquer la formule suivante : R ( Rpente ) f * 6.5.5. Estimation par zones Pour diminuer le nombre de variables à optimiser, on peut prendre le cas où l’activité ou l’atténuation sont uniformes dans une zone. Si on découpe la carte en N zones, le gradient aura donc N valeurs. Notre gradient précédemment calculé lui est d’une taille égale au nombre de pixels. Par conséquent pour calculer le gradient spécifique à chaque zone on prendra la somme des gradients des pixels de la zone. 6.5.6. Régularisation Un opérateur de Thikonov a été implémenté, on peut également compter sur l’effet « lissant » de la correction de la réponse du collimateur. 100 6.6. PLATEFORME DE TEST ET DONNEES UTILISEES Les logiciels de visualisation étant limités dans les traitements disponibles et ne permettant pas de rajouter tout ce dont on a besoin, nous avons développé un programme de visualisation spécifique qui permet de rajouter tous les traitements nécessaires pour les validations. L’API utilisée pour le fenêtrage est wxWidgets, conjointement avec OpenGL. Ce dernier étant cette fois utilisé à des fins graphiques. Figure 6-1 Interface de la plateforme de test Cette plateforme permet de tester les différents algorithmes que nous avons développés, soit sur des données numériques (fantômes), soit sur des données réelles de patients. Nous présentons ci-dessous d’une part les données test sur lesquelles ont été testées les méthodes développées ainsi que quelques outils de visualisation de cette plateforme. 6.6.1. Fantôme numérique de cœur NCAT Le fantôme numérique de cœur NCAT (www.bme.unc.edu/~wsegars/phantom.html) a été utilisé pour tester les possibilités de correction d’atténuation en imagerie cardiaque. Ce fantôme a été paramétré de telle façon que la partie supérieure du diaphragme arrive à un niveau supérieur à la partie inférieure du cœur. Pour chaque organe, nous avons fixé des activités et des coefficients d’atténuation réalistes : 101 Organe Activité (valeurs relatives) Atténuation (cm-1) Cœur 6 0.19 Foie 4 0.19 Poumon 0.25 0.05 Reste du corps 1 0.19 Os 1 0.32 Tableau 6-1 Activité et atténuations fixées pour le fantôme NCAT. Les projections données d’émission et d’atténuation : Activité Atténuation Figure 6-2 Fantôme NCAT d’atténuation et émission Ce fantôme a été considéré comme donnée de référence pour évaluer la qualité des différentes méthodes de reconstruction. Ce volume de référence a été projeté en prenant en compte le collimateur (taille des trous 2 mm, profondeur 3.5 cm, rayon de giration 20 cm, résolution intrinèque de la caméra 3.5 mm) et une atténuation (unifome sur le contour). 120 projections sur 360°, au format 128x128x120, ont été ensuite bruitées par un bruit poissonnien (valeur maximale dans les projections 69, 17 millions de coups au total). On obtient ainsi des projections proches d’une véritable acquisition. 102 La qualité des reconstructions est alors évaluée en les comparant au volume de référence initial, soit visuellement, soit quantitativement à l’aide d’un calcul de l’écart quadratique normalisée : n 2 (reci refi ) r e c r e f i 1 ref n 2 (refi ) i 1 Où refi et reci sont respectivement les activités réelles et reconstruites au voxel i. 6.6.2. Données cliniques Pour étudier la correction d’atténuation, nous disposons de deux types de données cliniques. Premièrement une acquisition sur un appareil multimodalité TEMP-CT du Centre Hospitalier de Perpignan où l’image TEMP non corrigée de l’atténuation présente un artefact d’atténuation diaphragmatique, deuxièmement, une base de données référencée de 33 TEMP myocardiques provenant du CHU de Toulouse Purpan. L’étude consiste à reconstruire ces examens avec OSEM et OSEMA, puis de comparer les Bull’s Eye après réorientation. 6.6.2.1. Examen TEMP-CT avec atténuation diaphragmatique Il s’agit du seul examen TEMP dont nous disposons avec carte d’atténuation scanner associée et atténuation diaphragmatique. L’acquisition TEMP est réalisée avec le patient sur le dos. Les projections sont en 64x64 pixels avec 30 projections sur 180° et une résolution de 5,9 mm par pixel. Réalisée au thallium-201 avec une fenêtre en énergie de 59,5 à 80,5 keV. Le système d’acquisition fournit une carte d’atténuation générée à partir du CT, recalée dans l’espace du TEMP en résolution 643, avec les coefficients d’atténuation linéique. Elle est donc prête à être utilisée. (Figure 6-3). 103 CT TEMP p Figure 6-3 Acquisition TEMP/CT avec atténuation diaphragmatique. 6.6.2.2. Base de données de 33 TEMP myocardiques Nous disposons d’une série de patients provenant du CHU de Purpan à Toulouse, projections en 64x64 pixels, 30 projections sur 180° et 6,6 mm par pixel, également réalisées au thallium-201. On dispose des diagnostics mais pas du CT associé. Cette base de données a été classée en 8 sujets avec artefact d’atténuation diaphragmatique, 10 avec artefact d’atténuation mammaire, 9 sujets normaux sans artefact d’atténuation, 6 cas pathologiques avec une hypofixation inférieure. En effet, pour le praticien expérimenté, il est possible de suspecter des atténuations diaphragmatiques ou mammaires grâce à l’ombre qu’elles laissent sur les projections. Toutefois, il reste difficile d’évaluer subjectivement l’impact d’une ombre dans les projections sur la reconstruction finale. Aussi, nous parlerons d’atténuations suspectées, plutôt que certaines. 6.6.3. Affichage des trois vues Ici nous allons charger l’image sous la forme d’une texture 3D dans la mémoire graphique. La fenêtre sera ensuite découpée en trois et dans chacune des parties s’affichera un carré avec des coordonnées de textures différentes. A chacun de ces carrés on appliquera la texture 3D. Les 104 coordonnées de textures des carrés provoqueront ainsi l’affichage du volume sous la forme de coupes axiales, coronales et sagittales. Pour améliorer la visualisation, nous allons en plus rajouter un shader qui va appliquer une LUT (Look-Up Table) à l’image. La LUT est sous forme d’une texture 1D que le shader va prendre en entrée en plus de la texture 3D. La valeur initiale de chaque pixel de la texture 3D va être transformée en coordonnée de texture sur la texture de LUT. La valeur de la LUT à cette coordonnée devient alors la valeur finale du pixel affiché. 6.6.4. Maximum Intensity Projection La MIP (Maximum Intensity Projection) est un mode de visualisation d’un volume 3D qui affiche sur une image 2D l’intensité maximale de l’image dans l’axe de projection [109]. Nous allons ici effectuer un travail similaire à celui du projecteur d’OSEM. Sauf que cette fois, nous n’avons pas qu’un seul axe de rotation, puisque celle-ci est totalement libre. Mais ce ne sera pas gênant vu qu’il n’y a pas de retroprojection à effectuer ensuite. On aura trois textures. TexVolume la texture 3D qui contient le volume. Et deux texture 2D temp1 et temp2. Initialisation de la texture temp2 à 0. Pour chaque profondeur { Appliquer la matrice de transformation courante à TexVolume. Affichage dans temp1 de TexVolume. Application du fragment program qui prend le max entre temp1 et temp2 et résultat dans temp2. } Affichage de temp2. 105 6.6.5. Bull’s Eye Soit une image de tomographie cardiaque reconstruire réorientée et masquée pour éliminer les sources d’activités provenant de l’extérieur du cœur. Le Bull Eye sera généré comme suit : BE ( x, y) max L( M xy , D xy ) Chaque point du Bull’s Eye est le maximum d’activité située sur une demi-droite qui par d’un point Mxy et suit une direction Dxy, avec : M xy (0, 0, x 2 y 2 ) Dxy Rot (1, 0, 0) Rotθ(1,0,0) étant la rotation du vecteur unité (1,0,0) d’un angle θ autour du grand axe (0,0,1), θ étant obtenu de la façon suivante : y arctan( x ) si x 0 et y 0 y arctan( ) si x 0 et y<0 x y arctan( x ) sinon Ainsi le Bull’s Eye est constitué de cercles concentriques qui représentent chacun une coupe de la reconstruction cardiaque. Mais près de l’apex on effectue un traitement particulier. Les cercles concentriques ne représentent plus des plans. Les lignes vont se redresser progressivement jusqu’à atteindre la verticale de façon à ce que la partie la plus supérieure de l’apex ne forme plus qu’un point. Il faut donc changer le calcul de Dxy. Dxy Rot ( Rot (1,0,0)) Rotφ est la rotation d’angle φ autour de l’axe y (0,1,0), avec : z z turn 2 zturn zturn étant le point où l’on décide de tourner. L’image doit avec cette méthode être préalablement lissée pour éviter que des artefacts ne soient pris en compte. L’image finale est placée dans une texture 2D, on peut également lors de l’affichage appliquer une LUT en utilisant un shader. 106 y x φ ztu x θ rn z Coupe perpendiculaire Coupe parallèle au grand au grand axe axe y z x Bull’s Eye θ Figure 6-4 Schéma pour la génération du Bull’s Eye 6.7. SIMULATEUR DE MONTE-CARLO Cette application a pour but de tester la faisabilité d’un calcul rapide des projections en prenant en compte l’effet Compton sur GPU. Chaque photon émis par le traceur est traité indépendamment. On utilise pour cela la carte d’activité qui va donner pour chaque voxel le nombre de photons à envoyer (valeur du voxel multipliée par un facteur) et la carte d’atténuation pour déterminer les probabilités d’interactions. 6.7.1. Algorithme général Pour chaque photon { Générer une direction aléatoire d selon une loi uniforme. 107 Tant que le photon n’a pas atteint le détecteur ou n’est pas sorti de l’image. { Déterminer les probabilités pour l’atténuation courante d’avoir un effet photoélectrique, Compton ou rien. Générer un nombre aléatoire uniforme qui permettra de déterminer quel effet c’est produit. Si on a un effet photoélectrique. { Destruction du photon. } Sinon si on a un effet Compton. { Changement de direction et d’énergie du photon. Le photon avance d’un pas unitaire dans la nouvelle direction. } Sinon { Le photon avance d’un pas unitaire. } } Choix du plan de projection en fonction de l’angle du photon dans le plan horizontal. Projeter le photon sur le plan de projection choisi. Si (Probabilité de passer le collimateur > 0) { Ajouter le photon au jeu de projection correspondant à son énergie. } } Pour déterminer la probabilité d’avoir une interaction photoélectrique ou Compton, les formules étant assez complexes, on utilise une table avec des valeurs pré-calculées pour chaque type de tissus. 108 Pour le changement de direction aléatoire du photon lors de l’effet Compton et son changement d’énergie on utilise l’algorithme donné dans la section 2.4.2. Pour projeter le photon sur le plan de projection, on calcule l’intersection entre la droite qu’il suit et le plan de projection. On représente le plan par sa normale N et un point du plan A. Le calcul de l’intersection avec le photon de position P et de direction D se calcule comme il suit : OP.N OA.N OI OP D N .D O est l’origine, si N .D 0 , alors la trajectoire du photon est parallèle au plan, il n’y a donc pas d’intersection. Pour calculer la probabilité de passer le collimateur, on calcule l’angle avec lequel le photon percute le collimateur : N .D 1 cos 1 ( ) N . D et l’angle maximum que le collimateur peut laisser passer : h e max tan 1 ( ) Avec e diamètre des trous et h hauteur du collimateur. Il ne suffit pas de prendre les photons où θ1 est inférieur à θmax. Car plus un photon arrive en biais, plus il a de chance de percuter le collimateur. Aussi la probabilité est donc max 1 . max 6.7.2. Version GPU Les données relatives à un même photon sont rangées dans trois texels chacun trois textures à la même position. 109 Rouge Vert Bleu Alpha Texture 1 Position x Position y Position z Non utilisé Texture 2 Direction x Direction y Direction z Energie Atténuation de Atténuation Non utilisé Drapeau de destruction cumulée Texture 3 destruction Tableau 6-2 Structure d’un photon en mémoire vidéo Il est difficile de générer un nombre aléatoire à l’intérieur d’un shader. On prend donc le problème d’une autre façon. A l’initialisation de la texture 3, on génère de manière aléatoire sur CPU l’atténuation au bout de laquelle le photon sera détruit : d l log(r1) avec r1 nombre aléatoire entre 0 et 1. Ceci étant équivalent à dire que : r1 e d l On retrouve donc la probabilité d’atténuation du photon sur une distance l. Le champ atténuation cumulé sera ensuite mis à jour et s’incrémentera en fonction de l’atténuation traversée. Lorsque l’atténuation cumulée aura dépassé le seuil de destruction, le drapeau de destruction sera activé et la position du photon ne sera plus mise à jour. Les photons qui ne sont pas détruits continuent de bouger dans leur direction propre, jusqu’à un nombre d’itérations égal à la diagonale de l’image pour être sûr que tous ont atteint les bords. On ne pourra pas toujours traiter les photons en une seule fois à cause de la limitation de taille des textures, aussi il faudra effectuer plusieurs passes. A la fin de chaque passe, on recharge les photons en mémoire centrale pour les traiter individuellement sur CPU. Les photons qui sont sortis du champ de l’image sont soit détruits, soit ajoutés à la projection correspondante. Les photons qui ont subi l’atténuation sont testés pour savoir s’ils ont fait un effet Compton. Si c’est le cas, on calcule leur nouvelle direction et leur nouvelle énergie. Ils sont ensuite réinjectés dans l’étape suivante et complétés avec les photons primaires qui n’ont pas encore été traités. 110 7. Résultats accélération GPU Dans ce chapitre, nous avons testé et comparé nos méthodes OSEM, GC, OSEM3D, GC3D avec ou sans correction d’atténuation (carte connue), en version GPU ou CPU, à partir des données de projections numériques du fantôme NCAT. Cette comparaison s’est effectuée à deux niveaux, d’une part concernant la qualité des reconstructions, et d’autre part concernant les temps de calculs. Le dernier paragraphe présente les résultats de notre étude de faisabilité concernant un simulateur Monte Carlo sur GPU. 7.1. EVALUATION DE LA QUALITE DE RECONSTRUCTION 7.1.1. Comparaison OSEM/Gradient Conjugué La Figure 7-1 présente l’erreur quadratique normalisée pour les algorithmes OSEM avec 1 seul sous-ensemble (EM) et GC, sans (1D) et avec (3D) prise en compte de la réponse impulsionnelle du collimateur dans le projecteur et le rétroprojecteur, avec (AC) et sans correction d’atténuation, au fil des itérations. En absence de correction d’atténuation, le GC converge plus vite que EM, mais ensuite s’éloigne plus rapidement de la solution. Comme on pouvait l’espérer, avec la correction d’atténuation les résultats sont meilleurs, mais il apparaît cette fois que le GC converge moins vite que OSEM et donne de moins bons résultats. Par ailleurs, on remarque que la prise en compte de réponse impulsionnelle agit à la manière d’un régularisateur, en ce qu’il stabilise la solution, à la fois pour GC et OSEM. OSEM3D avec correction d’atténuation est donc finalement la méthode qui donne la solution la meilleure et la plus stable, l’erreur n’augmentant que très peu au bout d’un grand nombre d’itérations. Ces résultats numériques se confirment visuellement Figure 7-3. La Figure 7-2 montre qu’utiliser une précision 16 bits n’a pas beaucoup de conséquences sur le résultat final par rapport à une précision 32 bits, du moins tant que l’on reste à un nombre d’itérations raisonnables. Dans la suite des tests, nous ne parlerons plus que de OSEM. 111 Erreur quadratique normalisée 1.2 1 EM1D 0.8 GC1D EM3D 0.6 GC3D 0.4 EM3D+AC GC3D+AC 0.2 EM1D+AC GC1D+AC 0 0 10 20 30 40 50 Nombre d'itérations Figure 7-1 Evolution de l’erreur avec les itérations avec OSEM 1 subset (EM) et le Gradient Conjugué (GC) avec (+AC) ou sans correction d’atténuation et avec (3D) ou sans (1D) prise en compte du collimateur sur le fantôme NCAT en précision 32 bits. Erreur quadratique normalisée 16 bits vs 3 2bits 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 OSEM3D+AC 16bits GC3D+AC 16bits OSEM3D+AC 32bits GC3D+AC 32bits 0 10 20 30 40 50 Nombre d'itérations Figure 7-2 Evolution de l’erreur avec les itérations avec OSEM3D+AC 1et le Gradient Conjugué+AC selon la précision 16bits ou 32bits sur le fantôme NCAT. 112 GC 1D +AC 15 itérations OSEM 1D +AC 10 itérations GC 3D +AC 25 itérations OSEM 3D +AC 35 itérations Fantôme NCAT Figure 7-3 Comparaison visuelle par les différentes méthodes de reconstruction sur le fantôme NCAT. 113 7.1.2. Influence du nombre de sous-ensembles Jusqu’ici, nous avions testé OSEM avec un seul sous-ensemble, ce qui correspond à la version originale de EM. Mais il est également intéressant d’observer l’évolution de la qualité de reconstruction en fonction du nombre de sous-ensembles, car le temps de calcul est pratiquement divisé par le nombre de sous-ensembles. Dans la figure ci-dessous, nous présentons l’erreur quadratique normalisée pour les méthodes OSEM1D (Figure 7-4) et OSEM3D (Figure 7-5) avec correction d’atténuation (carte d’atténuation fournie), en fonction du nombre de sous-ensembles (subsets), au fil des itérations. Ici le fantôme NCAT a été projeté sur 128 projections, car ce nombre donne plus de possibilités dans le choix du nombre de sous-ensembles. On montre que sans prise en compte du collimateur, il vaut mieux rester en dessous du quart du nombre de projections. Erreur quadratique normalisée OSEM1D 1 0.8 1 subset 0.6 2 subsets 4 subsets 0.4 8 subsets 0.2 16 subsets 32 subsets 0 0 20 40 60 64 subsets Nombre d'itérations Figure 7-4 Evolution de l’erreur avec le nombre de mise à jour en fonction du nombre de sous-ensembles pour une reconstruction OSEM1D+AC sur le fantôme NCAT. 114 Erreur quadratique normalisée OSEM3D 1 0.8 1 subset 0.6 2 subsets 0.4 4 subsets 8 subsets 0.2 16 subsets 0 32 subsets 0 20 40 60 64 subsets Nombre d'itérations Figure 7-5 Evolution de l’erreur avec le nombre de mise à jour en fonction du nombre de sous-ensembles pour une reconstruction OSEM3D+AC sur le fantôme NCAT. Avec prise en compte du collimateur, le nombre de sous-ensembles n’a plus beaucoup d’incidences sur le résultat final. Néanmoins pour une statistique de coups très faible les résultats en OSEM3D seront moins bons, et il faudra éviter d’utiliser un nombre de sous-ensembles trop élevé, comme le montrent les résultats suivants (Figure 7-6) obtenus en considérant comme volume de référence un volume de fixation des neurotransmetteurs dopaminergiques, caractérisé par un bruit statistique élevé dans les Errreur quadratique normalisée projections (maximum : 10 coups/pixels). 3D Neurotransmission 1 0.8 1 subset 0.6 2 subsets 4 subsets 0.4 8 subsets 0.2 16 subsets 32 subsets 0 64 subsets 0 20 40 Nombre d'itérations 60 Figure 7-6 Evolution de l’erreur avec le nombre de mise à jour en fonction du nombre de sous-ensembles pour OSEM3D+AC avec un nombre de coups très faible (projections de type DaTSCAN avec un maximum de 10) . 115 7.1.3. Importance de la précision de l’interpolation Nous avons également testé l’influence des deux modes d’interpolations disponibles lors de la rotation du volume à savoir l’interpolation linéaire et au plus proche voisin sur la qualité de la reconstruction (Figure 7-7). Du point de vue de l’erreur quadratique l’interpolation linéaire en 16 bits semble très proche Erreur quadratique normalisée de l’interpolation au plus proche voisin en 32 bits. 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 Lineaire 16bits Plus proche voisin 16bits Linéaire 32bits Plus proche voisin 32bits 0 10 20 30 40 50 Nombre d'itérations Figure 7-7 Evolution de l’erreur avec le nombre d’itérations pour chaque précision et chaque mode d’interpolation sur le fantôme NCAT. Cependant, visuellement on observe (de manière plus évidente sur écran que sur papier) la supériorité de l’interpolation linéaire, en 16 bits ou mieux encore en 32 bits. Les versions « au plus proche voisin » créent de légers artefacts de type trame sur les images. Le phénomène est plus particulièrement visible sur les TEMP cérébrales (Figure 7-8). 116 16 bits 32 bits Linéaire Plus proche voisin Figure 7-8 Comparaison visuelle en fonction du mode d’interpolation et de la précision en virgule flottante sur une perfusion cérébrale. 117 7.1.4. Influence de la correction symétrique/asymétrique de l’atténuation La prise en compte de l’atténuation à partir d’une carte d’atténuation connue peut se faire uniquement dans le projecteur (méthode dite asymétrique), ou bien à la fois dans le projecteur et le rétroprojecteur (méthode symétrique). Ci-dessous, nous montrons l’évolution de l’erreur quadratique moyenne pour la méthode OSEM3D (Figure 7-9) avec correction d’atténuation symétrique et asymétrique, en précision 16 bits et 32 bits, au fil des itérations. 3D Erreur quadratique normalisée 1 0.9 0.8 0.7 0.6 Pas de correction 16bits 0.5 Correction sym 16bits 0.4 Correction asym 16bits Pas de correction 32bits 0.3 Correction sym 32bits 0.2 Correction asym 32bits 0.1 0 0 10 20 30 40 50 60 Nombre d'itérations Figure 7-9 Evolution de l’erreur avec les itérations en OSEM3D+AC selon le mode d’atténuation avec la carte d’atténuation exacte sur le fantôme NCAT. 7.1.5. Comparaison OSEM GPU/CPU Il est bien sûr souhaitable d’effectuer la comparaison entre les versions CPU et GPU, même si théoriquement la version GPU 32 bits et la version CPU devrait donner exactement les mêmes résultats puisqu’ils ont tous les deux la même précision. La Figure 7-10 compare la même méthode OSEM3D avec correction d’atténuation pour les versions GPU 16 bits, GPU 32 bits, et CPU (32 bits). On ne voit pas de différences importantes entre les versions. La version GPU 16 bits va s’éloigner du volume de référence au bout d’un grand 118 nombre d’itérations. Les versions 32bits GPU et CPU vont rester proches, toutefois les valeurs ne seront pas rigoureusement identiques. Il faut penser que même si l’on utilise la même méthode et la même précision nous avons deux implémentations différentes, sur GPU les opérateurs de rotation et d’interpolation sont câblés dans la carte, alors que sur CPU nous les avons programmés nousmêmes, l’instabilité numérique même minime va entraîner une différence sur les résultats lorsque un très grand nombre d’opérations seront effectuées. Erreur quadratique normalisée 1 0.9 0.8 0.7 0.6 0.5 CPU 0.4 GPU 16bits 0.3 GPU 32bits 0.2 0.1 0 0 10 20 30 40 50 60 Nombre d'itérations Figure 7-10 Evolution de l’erreur avec les itérations en OSEM3D+AC avec correction d’atténuation pour les versions CPU et GPU sur le fantôme NCAT. 119 7.2. TEMPS DE CALCULS Les temps de calculs suivant on été obtenus sur un PC DELL XPS équipé pour le CPU avec un processeur Intel Core 2 Duo E6700 - 2.66 GHz et pour le GPU sur une NVidia GeForce 7950GX2 et une GeForce GTX 280. 7.2.1. Temps de calculs sur la 7950GX2 Sortie en 2006, c’est avec cette carte que la plus grosse partie de nos travaux a été réalisée. CPU GPU 32 bits GPU 16 bits OSEM1D 4 min 23 min 12 sec OSEM3D 20 min 24 min 30 sec OSEM3D + AC 23 min 50 min 1 min 47 OSEM3D +aAC 22 min 37 min 33 sec Tableau 7-1 Temps de calculs sur 7950GX2 pour 8 itérations et 5 sous-ensembles : Cerveau 1283 120 projections. CPU GPU 32 bits GPU 16 bits OSEM1D 8 sec 30 sec 3 sec OSEM3D 18 sec 30 sec 4 sec OSEM3D + AC 25 sec 88 sec 10 sec OSEM3D +aAC 25 sec 44 sec 4 sec Tableau 7-2 Temps de calculs sur 7950GX2 pour 8 itérations et 5 sous-ensembles : Cœur 643 30 projections. Le Tableau 7-1 et le Tableau 7-2 montrent un réel gain de temps entre la version CPU et la version GPU 16 bits. La version GPU 32 bits, par contre, s’avère beaucoup plus lente, et on ne peut plus parler d’accélération graphique. 120 Pour trouver l’origine de cette contre performance en 32 bits. Il suffit de désactiver l’interpolation linéaire, utilisée lors de la rotation du volume dans les opérateurs de projection et de rétroprojection. On la remplace par une interpolation au plus proche voisin (GL_LINEAR à GL_NEAREST en OpenGL). Dans le cas d’une reconstruction OSEM3D d’un volume 128 3 à partir de 120 projections. On passe à 25 secondes en 16 bits (au lieu de 30sec) à 40 sec en 32 bits (au lieu de 24min). Ce qui signifie que l’interpolation linéaire représente 17% du temps de calcul en 16 bits et 97% en 32 bits. La correction d’atténuation, dans sa version symétrique, alors qu’elle n’a qu’un effet minime sur le temps de calcul CPU, augmente considérablement le temps de calcul sur GPU. La raison est la nécessité de créer un volume de normalisation au départ et la création de textures de coefficients pour la projection et la rétroprojection à chaque itération. La version asymétrique comme on pouvait s’y attendre, du fait qu’il n’y a pas besoin de calculer les coefficients pour la rétroprojection, ni de créer un volume de normalisation prend beaucoup moins de temps et se rapproche des temps sans correction. CPU GPU 16bits Facteur d’accélération 643, 30 proj. 18 sec 4 sec 4.5 643, 60 proj. 56 sec 5.5 sec 10 1283, 120 proj. 20 min 28 sec 43 2563, 240 proj. 13 heures 10 min 80 Tableau 7-3 Facteur d’accélération sur 7950GX2 pour OSEM3D 8 itérations et 5 sousensembles en fonction de la taille des données Sur le Tableau 7-3 on observe que le facteur d’accélération augmente avec la taille des données, ce qui suit la logique de parallélisme des GPU. La mesure des temps de calcul sur la version GPU dépend aussi du CPU qui contrôle le tout. Elle dépend également de la version des pilotes de la carte graphique, on peut en effet observer des variations de quelques secondes entre deux versions pour les volumes en 1283, et la version du pilote la plus récente n’est pas forcement la meilleure. 121 Temps GPU 16bits Temps CPU Projection 1D 0.66 s 6s Projection 3D 2s 80 s Projection 3D + AC 2.5 s 86 s Rétroprojection 1D 0.20 s 5s Rétroprojection 3D 1.2 s 80 s Rétroprojection 3D + AC 10 s 80 s Division projections 0.03 s 0.025 s Multiplication volumes 0.01 s 0.01 s Tableau 7-4 Temps pris par chacun des opérateurs sur 7950GX2 pour une itération EM 3D sur un volume 1283, 120 projections. On s’aperçoit sur le Tableau 7-4 que les opérateurs autres que ceux de projection et de rétroprojection représentent un temps négligeable dans l’algorithme. Pour cette raison dans le tableau suivant les pourcentages pour la projection et rétroprojection seront arrondis pour faire un total de 100%. Projection GPU Rétroprojection GPU OSEM 1D 77% 23% OSEM 3D 62.5% 37.5% OSEM 3D + aAC 67.5 % 32.5 % OSEM 3D + AC 20 % 80 % Tableau 7-5 Proportion du temps de calcul total pris par les opérateurs en fonction du type de reconstruction sur GPU. Sur CPU, la proportion de temps pris par chaque opérateur, projection ou rétroprojection, est toujours autour 50%. Sur GPU du fait de l’implémentation spécifique de chacun d’entre eux, on constate clairement que l’opérateur le plus lent est le projecteur, sauf dans le cas où le rétroprojecteur prend en compte l’atténuation, ce qui explique la rapidité de la version asymétrique de la correction 122 d’atténuation par rapport à la version symétrique. Cela s’explique très bien du fait que l’épandage qui est normalement très rapide, se retrouve contrarié lorsqu’il est nécessaire de calculer la coupe des e-dμl (Section 6.1.2.3) pour chaque profondeur. 7.2.2. Temps de calculs sur la GTX 280 Cette carte comporte une nouvelle génération de processeur graphique. Elle est sortie en 2008 et n’a été testée que vers la fin de cette thèse. Nous avons donc mesuré les temps de la même manière que pour la précédente carte. CPU GPU 32 bits GPU 16 bits OSEM1D 4 min 9 sec 8 sec OSEM3D 20 min 13 sec 11 sec OSEM3D + AC 23 min 66 sec 63 sec OSEM3D +aAC 22 min 19 sec 17 sec Tableau 7-6 Temps de calculs sur GTX 280 pour 8 itérations et 5 sous-ensembles : Cerveau 1283 120 projections. CPU GPU 32 bits GPU 16 bits OSEM1D 8 sec 2 sec 2 sec OSEM3D 18 sec 3 sec 3 sec OSEM3D + AC 25 sec 8 sec 8 sec OSEM3D +aAC 25 sec 4 sec 4 sec Tableau 7-7 Temps de calculs sur GTX 280 pour 8 itérations et 5 sous-ensembles : Cœur 643 30 projections. Le choix de la précision entre 16 bits et 32 bits était une problématique importante pour les cartes des générations précédentes comme la 7950GTX, qui nous avait amenés à faire le choix de la précision 16 bits pour profiter pleinement de l’accélération graphique tout en ayant une précision suffisante. Le Tableau 7-6 et le Tableau 7-7 montrent qu’avec la GTX 280 cette problématique a 123 disparue et que l’utilisation de la précision 32 bits, même si elle n’apporte pas un gain de qualité particulièrement notable sur la reconstruction, peut être maintenant utilisée sans qu’il n’y ait une perte notable de rapidité d’exécution de l’algorithme. CPU GPU Facteur 32bits d’accélération 643, 30 proj. 18 sec 3 sec 6 643, 60 proj. 56 sec 5 sec 11 1283, 120 proj. 20 min 11 sec 109 2563, 240 proj. 13 heures 3 min 17 sec 237 Tableau 7-8 Facteur d’accélération sur GTX 280 pour OSEM3D 8 itérations et 5 sousensembles en fonction de la taille des données. 7.3. SIMULATEUR DE MONTE CARLO La simulation de Monte Carlo a été testée pour le calcul des projections du fantôme de cœur NCAT, en prenant en compte le rayonnement diffusé, l’atténuation et la résolution collimateur. Le fantôme contenait une activité de 815 268 photons primaires à traiter avec la carte des coefficients d’atténuation associée. La précision est nécessairement en 32 bits, car si on se contente de 16 des artefacts apparaissent nettement dans les projections simulées. Sur CPU il faut 5 secondes pour tous les traiter, alors que sur GPU il faut 20 minutes. La contre-performance du GPU s’explique assez bien. Comme on traite les photons en parallèle on est obligé d’itérer sur toute la texture tant que la plus grande distance possible, la diagonale du cube, n’est pas parcourue. Cela entraîne que des photons qui ont déjà atteint les bords de l’image ou qui sont détruits continuent d’être traités, alors que sur CPU ils seraient abandonnés. Ceci montre que le parallélisme du GPU est délicat à manipuler et ne s’adapte pas toujours au problème pour provoquer l’accélération souhaitée. Au vu de ces résultats, nous avons donc abandonné l’idée d’accélérer la méthode de Monte Carlo par la carte graphique. 124 8. Résultats correction d’atténuation à partir des données d’émission Dans ce chapitre nous présentons nos résultats dans l’étude de la correction d’atténuation sans source de transmission, uniquement à partir des données d’émission. Rappelons que l’objectif de ce travail est de proposer une méthode de correction automatique de l’atténuation en imagerie cardiaque. Le problème se résume à chercher deux fois plus d’inconnues que dans le cas d’une reconstruction classique, à savoir à la fois le volume d’activité et le volume des coefficients d’atténuation, toujours à partir des mêmes données TEMP d’émission. Dans un premier temps, nous présentons les résultats obtenus en simulation, et dans un deuxième temps sur des données cliniques de patients. 8.1. ETUDE EN SIMULATION Reconstruire le volume de l’activité en connaissant au préalable la carte d’atténuation a fait l’objet du chapitre précédent. Dans ce paragraphe, nous nous plaçons d’abord dans le cas, irréaliste, où l’on chercherait à reconstruire la carte d’atténuation alors que l’on connaîtrait l’activité. Il s’agit bien sûr d’un problème non conventionnel, mais qui d’un point de vue mathématique permet de tester la capacité respectives des méthodes OSEMA et par optimisation KNITRO à construire une carte d’atténuation correcte. Ensuite nous présentons les résultats obtenus en simulation avec reconstruction alternée de l’activité et de l’atténuation sur fantôme NCAT, en acquisition sur 360° et 180°. 8.1.1. Atténuation seule inconnue Nous avons supposé deux scénarios pour la répartition de l’activité connue. Premièrement, que l’activité était uniformément répartie dans le corps, deuxièmement que l’activité était répartie de manière plus réaliste. 8.1.1.1. Activité uniforme On a donc supposé une activité uniforme dans les contours du fantôme et on l’a projetée avec atténuation sur 360° et sans rajout de bruit. Ensuite on ne reconstruit que l’atténuation en utilisant le volume d’émission connu. KNITRO et OSEMA donnent de bons résultats (Figure 8-1), KNITRO donnant un résultat vraiment très proche de la carte d’origine. 125 KNITRO OSEMA Atténuation seule Figure 8-1 Atténuation reconstruites sur fantôme NCAT à partir de projections 360° sans bruit avec activité uniforme. 8.1.1.2. Activité réaliste Cette fois, on prend une activité plus réaliste (Figure 8-2), et on reconstruit l’atténuation uniquement. KNITRO se révèle moins performant pour trouver la solution, le phénomène de crosstalk apparaissant nettement, alors qu’OSEMA donne quasiment le même résultat. KNITRO OSEMA Atténuation seule Figure 8-2 Atténuation reconstruite sur fantôme NCAT à partir de projections 360° sans bruit. 126 8.1.2. Reconstruction simultanée activité et atténuation 8.1.2.1. Acquisition sur 360° sans bruit On reprend les projections à 360° sans bruit générées précédemment et cette fois on optimise simultanément l’activité et l’atténuation. La version KNITRO montre ses limites et la carte d’atténuation ne dévie pas du point initial, sauf dans de rares cas très bien choisis. On ne peut donc obtenir de résultats satisfaisants avec cette méthode pour la reconstruction simultanée. C’est pourquoi nous parlerons plus que d’OSEMA dans les sections suivantes. Activité Atténuation Figure 8-3 Atténuation et émission reconstruite sur fantôme NCAT à partir de projections 360° sans bruit avec OSEM3DA. Sur les reconstructions (Figure 8-3) on remarque l’apparition du cross-talk avec sous évaluation de l’atténuation dans les zones de forte activité. On compare ensuite la reconstruction selon différents modes (Figure 8-4). On voit que sans correction la pointe de la paroi inférieure est atténuée par le diaphragme. Ceci est en grande partie corrigé par la correction automatique à partir des données de l’émission seule. La correction avec la carte d’atténuation connue donnant tout de même des résultats plus proches de la vraie activité. 127 OSEM OSEMA OSEM avec vraie carte d’atténuation Figure 8-4 Reconstruction émission sur fantôme NCAT à partir de projections 360° sans bruit avec Bull’s Eye. 8.1.2.2. Acquisition sur 180° avec bruit poissonnien On projette maintenant le fantôme dans des conditions plus réalistes à savoir en 180° avec rajout de bruit poissonnien. Cette fois la différence entre correction automatique et avec la vraie carte se fait davantage sentir, même si malgré tout la paroi inférieure est nettement rehaussée par rapport à la reconstruction sans correction. OSEM OSEMA OSEM avec vraie carte d’atténuation Figure 8-5 Reconstruction émission sur fantôme NCAT à partir de projections 180° avec bruit avec Bull’s Eye. 128 8.2. ETUDE SUR PATIENTS Nous présentons ici les résultats obtenus sur patients. Deux exemples sont donnés concernant respectivement l’atténuation diaphragmatique et l’atténuation mammaire, puis une étude préliminaire sur quelques sujets. 8.2.1. Exemple d’atténuation diaphragmatique Pour le seul patient dont nous disposions d’une acquisition TEMP/CT avec artefact d’atténuation diaphragmatique en TEMP non corrigée, nous avons obtenu un résultat assez similaire à celui avec le fantôme : la correction automatique donne un résultat intermédiaire entre la reconstruction sans correction et la reconstruction avec une carte d’atténuation tirée du scanner CT. OSEM OSEMA OSEM avec Scanner Figure 8-6 Reconstruction cardiaque dans le cas d’une atténuation diaphragmatique. 129 8.2.2. Exemple d’atténuation mammaire Nous présentons ci-dessous un exemple d’atténuation mammaire. Nous n’avions pas malheureusement de scanner pour ce patient. On ne peut donc avoir qu’une suspicion d’atténuation mammaire. Toutefois, ce type d’atténuation est plus facilement repérable visuellement en mode ciné des projections que les atténuations diaphragmatiques. On montre que dans ce cas, la paroi antérieure est rehaussée et le résultat semble meilleur qu’avec une correction uniforme sur un contour. OSEM OSEM avec correction uniforme sur un contour OSEMA Figure 8-7 Reconstruction cardiaque dans le cas d’une atténuation mammaire. 130 8.2.3. Etude des Bull’s Eyes d’une série de patients référencés Rappelons que nous disposions d’une série de 33 patients classés en 4 catégories : normal avec artefact d’atténuation diaphragmatique, normal avec artefact d’atténuation mammaire normal sans artefact anormal avec hypofixation inférieure Pour chacun de ces patients, nous avons effectué une reconstruction avec OSEM3D et OSEM3DA, puis mesuré sur les images Bull’s Eye la différence haut-bas (antérieur-inférieur) pour déceler une anomalie de fixation. Avec artefact d’atténuation diaphragmatique supposé : Différence Haut-Bas Différence Haut-Bas Différence OSEM3D OSEM3DA OSEM3DA- OSEM3D Patient 0 10% 16% 6% Patient 1 10% 12% 2% Patient 2 12% 12% 0% Patient 3 12% 8% -4% Patient 4 4% 2% -2% Patient 5 6% 0% -6% Patient 6 14% 12% -2% Patient 7 10% 8% -2% Moyenne 9.75% 8.75% -1% Tableau 8-1 Proportion de coups par rapport au total dans les Bull’s Eyes avec OSEM3D et OSEM3DA sur des examens avec atténuation diaphragmatique supposée. OSEM3D OSEM3DA Figure 8-8 Bull’s Eyes moyens sur 8 sujets avec atténuation diaphragmatique supposée. 131 Théoriquement la correction d’atténuation diaphragmatique doit rehausser la partie inférieure, par conséquent la différence haut-bas doit diminuer avec la correction d’atténuation. Par conséquent les valeurs de la troisième colonne du Tableau 8-1 devraient être négatives. On remarque que sur 3 car sur 8, il n’y a pas de correction ou que celle-ci part dans le mauvais sens. Avec artefact d’atténuation mammaire supposé : Différence Haut-Bas Différence Haut-Bas Différence OSEM3DA- OSEM3D OSEM3DA OSEM3D Patient 8 -8% 2% 10% Patient 9 -10% -6% 4% Patient 10 -4% 0% 4% Patient 11 -4% 2% 6% Patient 12 -8% -2% 6% Patient 13 -4% 0% 4% Patient 14 -8% -8% 0% Patient 15 -2% -4% -2% Patient 16 0% 2% 2% Patient 17 -10% -4% 6% Moyenne -5.8% -1.8% 4% Tableau 8-2 Proportion de coups par rapport au total dans les Bull’s Eyes avec OSEM3D et OSEM3DA sur des examens avec atténuation mammaire supposée. OSEM3D OSEM3DA Figure 8-9 Bull’s Eyes moyens sur 10 sujets avec atténuation mammaire supposée. Ici nous sommes dans le cas contraire de l’atténuation diaphragmatique les valeurs de la troisième colonne du Tableau 8-2 doivent être positives. On remarque que sur les 10 cas on a une mauvaise correction dans 2 cas. 132 Examen normal supposé : Différence Haut-Bas Différence Haut-Bas Différence OSEM3DA- OSEM3D OSEM3DA OSEM3D Patient 18 -2% 2% 4% Patient 19 0% -2% -2% Patient 20 0% 4% 4% Patient 21 -2% 2% 4% Patient 22 2% 2% 0% Patient 23 4% 4% 0% Patient 24 -4% -4% 0% Patient 25 -2% 6% 8% Patient 26 4% 4% 0% Moyenne 0% 2% 2% Tableau 8-3 Proportion de coups par rapport au total dans les Bull’s Eyes avec OSEM3D et OSEM3DA sur des examens considérés normaux. OSEM3DA OSEM3D Figure 8-10 Bull’s Eyes moyens sur 9 sujets normaux. On observe des variations dans certains cas, la plupart concernant des rehaussements de la paroi supérieure. 133 Avec hypofixation inférieure supposée : Différence Haut-Bas Différence Haut-Bas Différence OSEM3D OSEM3DA OSEM3DA- OSEM3D Patient 27 10% 8% -2% Patient 28 6% 4% -2% Patient 29 2% 2% 0% Patient 30 -2% -2% 0% Patient 31 18% 16% -2% Patient 32 0% -2% -2% Moyenne 5% 4% -1% Tableau 8-4 Proportion de coups par rapport au total dans les Bull’s Eyes avec OSEM3D et OSEM3DA sur des examens avec hypofixation inférieure supposée. OSEM3D OSEM3DA Figure 8-11 Bull’s Eyes moyens sur 6 sujets avec hypofixation inférieure supposée. Ces résultats montrent qu’il est difficile de différencier un cas d’atténuation diaphragmatique d’une véritable hypofixation inférieure. Au total, cette étude très préliminaire sur cette série de patients ne permet pas de montrer que la résolution simultanée de l’émission et de l’atténuation par OSEM3DA apporte une aide significative dans le diagnostic par rapport à OSEM3D pour déceler les artefacts d’atténuation diaphragmatiques. Pour les artefacts d’atténuation mammaire, les résultats semblent plus encourageants, même si dans un certain nombre de cas la correction est inefficace. 134 Conclusion Les algorithmes de reconstruction itératifs sont reconnus comme des méthodes de reconstruction efficaces en TEMP, mais les temps de calculs peuvent être importants lorsqu’ils sont effectués sur CPU. Les GPUs, processeurs dédiés au rendu graphique utilisés dans les cartes vidéo, ne cessent de gagner en puissance. Les dernières générations ayant beaucoup gagné en flexibilité d’utilisation, on peut aujourd’hui les utiliser pour des calculs plus généraux éloignés du rendu graphique. L’accélération des méthodes de reconstructions comporte un réel intérêt non seulement du point du vue de l’utilisation en routine clinique, mais aussi du point de vue de la recherche car il permet de faire des études sur un grand nombre de sujets en peu de temps et en essayant de nombreux paramètres différents. Le but de cette thèse était l’amélioration des méthodes de reconstruction sur deux axes. Premièrement, l’accélération de la vitesse d’exécution des algorithmes itératifs comme OSEM avec les corrections des facteurs de dégradation physique en particulier la perte de résolution avec la profondeur et la correction d’atténuation. Deuxièmement la correction d’atténuation à partir des données d’émission seules. Pour l’accélération de OSEM3D, l’objectif est atteint. Notre programme utilisant le GPU sur une carte récente est environ 100 fois plus rapide que la version CPU, pour des données de taille classique (volume 1283, 120 projections de 128x128 pixels) ; ce facteur d’accélération augmentant avec la taille des données. Pour OSEM3D+AC, c'est-à-dire avec correction d’atténuation asymétrique à partir d’une carte connue, le facteur d’accélération est d’environ 70. Au sujet des méthodes itératives non régularisées que nous avons testées, OSEM a montré sa supériorité par rapport au gradient conjugué. La correction de la perte de résolution avec la profondeur a montré son efficacité. On observe que le nombre d’itérations au bout duquel on arrête l’algorithme, ainsi que le nombre de sous-ensembles choisis, a beaucoup moins d’incidence sur la reconstruction que dans la version sans correction. Enfin concernant la précision des opérations en virgule flottante, dans un premier temps nous avions conclu qu’une précision sur 16 bits était suffisante car 32 bits étaient beaucoup trop lents et faisaient perdre tout l’intérêt de l’accélération en étant plus lents que le CPU, tout en offrant une qualité de reconstruction suffisante. Mais la dernière génération de cartes testée a montré que la perte de temps est aujourd’hui négligeable et donc que cette problématique disparaît avec l’évolution des technologies. 135 L’étude de faisabilité de la programmation GPU pour la réalisation d’un simulateur de Monte Caro s’est avérée décevante. Cela montre clairement que la programmation graphique ne peut pas s’appliquer de manière performante à tous les problèmes. Cependant il serait intéressant, dans un autre travail, de chercher une méthode de prise en compte de la diffusion Compton qui puisse bénéficier de l’accélération graphique. La réalisation préalable d’un programme d’accélération par le GPU a été très utile pour la correction d’atténuation à partir de données de l’émission seule, car elle a permis de réaliser en un temps raisonnable tous les tests nécessaires à sa mise au point. En simulation, la correction d’atténuation à partir des données de l’émission seule utilisant la méthode OSEMA a donné des résultats prometteurs. La méthode à base d’optimiseur s’est révélée peu robuste. L’étude préliminaire sur une série de patients n’a pas permis de montrer clairement qu’OSEM3DA apporte un gain diagnostique par rapport à OSEM3D. Dans le cas où l’on suspectait une atténuation mammaire, on montre bien dans la plupart des cas un rehaussement de la paroi antérieure, les résultats avec OSEM3DA étant meilleurs qu’avec OSEM3D avec correction uniforme, mais il faudrait néanmoins disposer de davantage de données TEMP-CT pour valider ce point. Dans le cas de l’atténuation diaphragmatique, nous avons obtenu de bons résultats sur un exemple dont nous disposions du scanner du patient, ce qui est prometteur mais bien insuffisant pour valider la méthode. Les résultats obtenus sur les sujets diagnostiqués comme atténuation diaphragmatique ont montré des contre-performances qui ne nous permettent pas de les dissocier des cas d’hypofixation alors que c’était un des buts de l’algorithme. Pour les perspectives, l’évolution des GPUs continue à grande vitesse. Au début de la thèse les reconstructions devaient se dérouler avec une précision de 16 bits si on voulait garder l’accélération graphique, à la fin, les dernières cartes sur lesquelles le programme a été testé supportaient la simple précision (32 bits) avec une perte de temps minime de quelques secondes. Les dernières cartes sorties sur le marché supportent déjà la double précision (64 bits). L’augmentation de puissance va donc réduire les temps d’exécution, et on peut penser que dans les prochaines années des algorithmes itératifs s’exécuteront dans des temps négligeables. Cela ouvre la voie à l’ajout de nouvelles corrections qui n’étaient autrefois pas rajoutées au processus de reconstruction du fait de leur lourdeur. 136 Pour la correction d’atténuation à partir des données de l’émission seule, de nombreuses voies sont à explorer pour améliorer la méthode. Parmi elles, l’ajout d’à priori anatomiques ou l’utilisation de cartes déformables, ou encore la modification des algorithmes existants pour réduire de manière empirique le cross-talk. Enfin, l’effet du rayonnement diffusé sur la correction d’atténuation mériterait également d’être étudié. 137 Bibliographie [1] M. S. Warren et al., "Pentium Pro inside: I. a treecode at 430 Gigaflops on ASCI Red, II. Price/performance of $50/Mflop on Loki and Hyglac," Supercomputing '97, Los Alamitos, IEEE Comp. Soc, 1997. [2] J. Lengyel, M. Reichert, B. R. Donald, and D. P. Greenberg, "Real-time robot motion planning using rasterizing computer graphics hardware," In Proc. SIGGRAPH, pp. 327-335, 1990. [3] B. Cabral, N. Cam, and J. Foran, "Accelerated volume rendering and tomographic reconstruction using texture mapping hardware," VVS '94: Proceedings of the 1994 symposium on Volume visualization, pp. 91-98, 1994. [4] W. Mark, R. Glanville, K. Akeley, and M. Kilgard, "Cg: A System for Programming Graphics Hardware in a C-Like Language," Proc. SIGGRAPH’03, p. 896–907, 2003. [5] K. Gray, The Microsoft DirectX 9 Programmable Graphics Pipeline.: Microsoft Press, 2003. [6] J. Kessenich, D. Baldwin, and R. Rost, The OpenGL Shading Language.: 3Dlabs, 2006. [7] D. Göddeke. (2005) GPGPU:Basic Math Tutorial. [Online]. http://www.mathematik.unidortmund.de/~goeddeke/gpgpu [8] W. J. Dally et al., "Merrimac: Supercomputing with streams," Super Computing (SC'03 Proceedings), 2003. [9] I. Buck et al., "Brook for GPUs: stream computing on graphics hardware.," ACM Transactions on Graphics, vol. 23, pp. 777-786, 2004. [10] T. Jansen, "GPU++: An Embedded GPU Development System for General-Purpose Computations," University of Munich, Thèse 2007. [11] H. O. Anger, "A new instrument for mapping gamma-ray emitters.," Biology and Medicine Quarterly Report UCRL, 1957. [12] P. Gantet, J. P. Esquerré, B. Danet, and R. Guiraud, "Les collimateurs des gamma-caméras et leurs performances," Revue de l’Acomen, pp. 175-181, 1996. [13] H. O. Anger, "Scintillation camera with multichannel collimators," J. Nucl. Med., vol. 5, pp. 515-531, 1964. [14] R. N. Beck, "Collimation of gamma rays," Gottschalk A, Beck RN (eds) Fundamental problems in scanning, pp. 71-92, 1968. 138 [15] R. N. Beck and L. D. Redtung, "Collimator design using ray-tracing techniques," IEEE Trans Nucl Sci, vol. 32, pp. 865-869, 1985. [16] P. Gantet, J. P. Esquerré, B. Danet, and R. Guiraud, "Une méthode d'étude par simulation des collimateurs des caméras à scintillation," Physics in Medicine & Biology, vol. 35, no. 659669, 1990. [17] Y. K. Dewaraja, M. Ljungberg, and K. F. Koral, "Characterization of Scatter and Penetration Using Monte Carlo Simulation in 131I Imaging," The Journal of Nuclear Medicine, vol. 41, no. 1, pp. 123-130. [18] D. Autret, A. Bitar, L. Ferrer, A. Lisbona, and M. Bardies, "Monte Carlo Modeling of Gamma Cameras for I-131 Imaging in Targeted Radiotherapy," Cancer Biotherapy & Radiopharmaceuticals, vol. 20, no. 1, pp. 77-84, 2005. [19] C. E. Metz, F. B. Atkins, and R. N. Beck, "The geometric transfer function component for scintillation camera collimators with straight parallel holes," Phys. Med. Biol., vol. 25, no. 6, pp. 1059-1070, 1980. [20] R. N. Beck, "Nomenclature for Fourier transforms of spread functions of imaging systems used in nuclear medicine.," J Nucl Med., vol. 13, no. 9, pp. 704-705, 1972. [21] B. Tsui and G. Gullberg, "The geometric transfer function for cone and fan beam collimators.," Physics in Medicine and Biology , vol. 35, no. 1, pp. 81-93, 1990. [22] A. R. Formiconi, "Geometrical response of multihole collimators," Phys. Med. Biol., vol. 43, pp. 3359-3379, 1998. [23] R. de Lagrevol, P. Gantet, J. P. Esquerré, B. Danet, and R. Guiraud, "Caractérisation de la réponse des collimateurs à trous parallèles hexagonaux des caméras à scintillation Characterization of the response of hexagonal parallel-hole collimators of scintillation cameras," Phys. Med. Biol., vol. 41, pp. 851-863, 1996. [24] O. Klein and T. Nishina, "Über die Streuung von Strahlung durch freie Elektronen nach der neuen relativistischen Quantendynamik von Dirac," Zeitschrift für Physik A Hadrons and Nuclei, vol. 52, pp. 853-868, 1929. [25] J. C. Butcher and H. Messel, "Electron Number Distribution in Electron-Photon Showers," Phys. Rev., vol. 112, pp. 2096-2106, 1958. [26] R. J. Jaszczak, C. E. Floyd, and R. E. Coleman, "Scatter compensation techniques for SPECT," IEEE Trans Nucl Sci, vol. 32, pp. 786-793, 1985. 139 [27] I. Buvat et al., "Effets de la diffusion et de méthodes de correction simples d’emploi en SPECT," Revue de l’Acomen, vol. 4, pp. 130-140, 1998. [28] K. Ogawa, Y. Harata, A. Kubo, and S. Hashimoto, "A practical method for positiondependent Compton scattered correction in single photon emission CT," IEEE Trans. Nucl. Imag., vol. 10, pp. 408-412, 1991. [29] P. Boccacci, P. Bonetto, P. Calvini, and A. R. Formiconi, "A simple model for the efficient correction of collimator blur in 3D SPECT imaging," Inverse Problems, vol. 15, pp. 907-930, 1999. [30] A. Formiconi, A. Passeri, and P. Calvini, "Theoretical determination of the collimator geometrical transfer function for the reconstruction of SPECT data," IEEE Transactions on Nuclear Science, vol. 46, no. 4, pp. 1075-1080, 1999. [31] R. M. Lewitt, P. R. Edholm, and W. Xia, "Fourier method for correction of depth-dependent collimator blurring," Proceedings of the SPIE 1989, vol. 1092, pp. 232-243, 1989. [32] W. Xia, R. Lewitt, and P. Edholm, "Fourier correction for spatially variant collimator blurring in SPECT," IEEE Transactions on Medical, vol. 14, pp. 100-115, 1995. [33] V. Kohli, M. King, S. Glick, and T.-S. Pan, "Comparison of frequency-distance relationship and Gaussian-diffusion-based methods of compensation for distance-dependent spatial resolution in SPECT imaging ," Physics in Medicine and Biology, vol. 43, no. 4, pp. 10251037, 1998. [34] B. Tsui, H.-B. Hu, D. Gilland, and G. Gullberg, "Implementation of simultaneous attenuation and detector response correction in SPECT," IEEE Transactions on Nuclear Science, vol. 35, no. 1, pp. 778-783, 1988. [35] A. Formiconi, A. Pupi, and A. Passeri, "Compensation of spatial system response in SPECT with conjugate gradient reconstruction technique," Physics in medicine & biology, vol. 34, no. 1, pp. 69-84, 1989. [36] A. Kojima, M. Matsumoto, M. Takahashi, Y. Hirota, and H. Yoshida, "Effect of Spatial Resolution on SPECT Quantification Values ," The Journal of Nuclear Medicine, vol. 30, no. 4, pp. 508-514. [37] G. Boening, P. H. Pretorius, and M. A. King, "Study of relative quantification of Tc-99mwith partial volume effect and spillover correction for SPECT oncology imaging," IEEE Transactions on Nuclear Science, vol. 53, no. 3, pp. 1205-1212, 2006. [38] M. Soret, P. M. Koulibaly, J. Darcourt, S. Hapdey, and I. Buvat, "Quantitative Accuracy of 140 Dopaminergic Neurotransmission Imaging with 123I SPECT ," Journal of Nuclear Medicine, vol. 44, no. 7, pp. 1184-1193, 2003. [39] C. Meltzer, P. Leal, S. Mayberg, N. Wagner, and J. Frost, "Correction of PET data for partial volume effects in human cerebral cortex by MR imaging," Journal of computer assisted tomography, vol. 14, no. 4, pp. 561-570, 1990. [40] H. W. Mïller-Gärtner, A. A. Wilson, R. F. Dannals, H. N. Wagner, and J. J. Frost, "Imaging muscarinic cholinergic receptors in human brain in vivo with SPECT, [123]4iododexetimide, and [123I]4-iodolevetimide," Journal of cerebral blood flow and metabolism, vol. 12, no. 4, pp. 562-570, 1992. [41] L. Itti, L. Chang, T. Ernst, and F. Mishkin, "Improved 3D correction for partial volume effects in brain SPECT," Human Brain Mapping, vol. 5, no. 5, pp. 379-388, 1997. [42] O. G. Rousset, Y. Ma, and A. C. Evans, "Correction for Partial Volume Effects in PET: Principle and Validation ," The Journal of Nuclear Medicine, vol. 39, no. 5, pp. 904-911, 1998. [43] P. Hannequin and J. Mas, "Statistical and heuristic image noise extraction (SHINE): a new method for processing Poisson noise in scintigraphic images," Physics in Medicine and Biology, vol. 47, pp. 4329-4344, 2002. [44] P. Gantet et al., "Iterative three-dimensional expectation maximization restoration of single photon emission computed tomography images: Application in striatal imaging," Medical physics, vol. 33, no. 1, pp. 52-60, 2006. [45] C. Majorel, P. Gantet, D. Gourion, P. Payoux, and J. Esquerré, "Modélisation de la réponse du collimateur dans un algorithme de reconstruction OSEM en TEMP," Méd Nucl-Imag Fonct Métabol, vol. 25, p. 253–296, 2001. [46] D. Knuth, Art of Computer Programming, Volume 2: Seminumerical Algorithms (3rd Edition).: Addison-Wesley Professional, 1997. [47] J. Radon, "Uber die bestimmung von funktionen durch ihre integralwerte tangs gewisser mannigfaltigkeiten, Bertichte Saechsiche Akad Wissenschaften," Math. Phys. Klass, vol. 69, pp. 262-277, 1917. [48] S. Matej and R. Lewitt, "3D-FRP: Direct Fourier Reconstruction with Fourier Reprojection for Fully 3-D PET," IEEE Transactions on Nuclear Science, vol. 48, no. 4, pp. 1378-1385, 2001. [49] F. Ben Bouallègue, J. Crouzet, and D. Mariano-Goulart, "Evaluation of a new gridding 141 method for fully 3D direct Fourier PET reconstruction based on a two-plane geometry," Computerized Medical Imaging and Graphics, vol. 32, no. 7, pp. 580-589, 2008. [50] M. A. King, R. B. Schwinger, P. W. Doherty, and B. C. Penney, "Two-Dimensional Filtering of SPECT Images using the Metz and Wiener Filters ," The Journal of Nuclear Medicine, vol. 25, no. 11, pp. 1234-1240, 1984. [51] P. Pretorius, M. King, S. Glick, T.-S. Pan, and D.-S. Luo, "Reducing the effect of nonstationary resolution on activityquantitation with the frequency distance relationship in SPECT," in IEEE Nuclear Science Symposium and Medical Imaging Conference Record, San Francisco, CA, , 1995, pp. 1302-1306. [52] L. Chang, "A method for attenuation correction in radionuclide computed tomography," IEEE Trans. Nucl. Sci., vol. 25, pp. 638-643, 1978. [53] S. Bellini, M. Piacentini, C. Cafforio, and F. Rocca, "Compensation of tissue absorption in emission tomography," IEEE Transactions on Acoustics, Speech and Signal Processing, vol. 27, no. 3, pp. 213-218, 1979. [54] T. L. Faber, M. H. Lewis, J. R. Corbett, and E. M. Stokely, "Attenuation Correction for SPECT: An Evaluation of Hybrid Approaches," IEEE Transactions on Medical Imaging, vol. 3, no. 3, pp. 101-107, 1984. [55] S. Manglos et al., "Non-isotropic attenuation in SPECT: phantom tests of quantitative effects and compensation techniques," The Journal of Nuclear Medicine, no. 28, pp. 1584-1991, 1987. [56] S. Manglos, R. Jaszczak, and C. Floyd, "Weighted back projection implemented with a nonuniform attenuation map for improved SPECT quantitation," IEEE Trans Nucl Sci, vol. NS35, pp. 625-628, 1988. [57] B. M. W. Tsui et al., "Correction of Nonuniform Attenuation in Cardiac SPECT Imaging ," The Journal of Nuclear Medicine, vol. 30, no. 4, pp. 497-507, 1989. [58] M. King, B. Tsui, T. Pan, S. Glick, and E. Soares, "Attenuation compensation for cardiac single-photon emission computed tomographic imaging: Part 2. Attenuation compensation algorithms," Journal of nuclear cardiology, vol. 3, no. 1, pp. 55-63, 1996. [59] A. P. Dempster, N. M. Laird, and D. B. Rubin, "Maximum Likelihood from Incomplete Data via the EM Algorithm," Journal of the Royal Statistical Society. Series B (Methodological), vol. 39, pp. 1-38, 1977. [60] L. A. Shepp and Y. Vardi, "Maximum likelihood reconstruction for emission tomography.," 142 IEEE Trans Med Imaging, vol. MI-1, pp. 113-122, 1982. [61] K. Lange and R. Carson, "EM reconstruction algorithms for emission and transmission tomography," Journal of computer assisted tomography, vol. 8, pp. 306-316, 1984. [62] T. Hebert and R. Leahy, "A generalized EM algorithm for 3-D Bayesian reconstruction fromPoisson data using Gibbs priors," IEEE Transactions on Medical Imaging, vol. 8, no. 2, pp. 194-202, 1989. [63] T. J. Hebert and R. Leahy, "Statistic-based MAP image reconstruction from poisson data using gibbs priors," IEEE Transactions on signal processing, vol. 40, no. 9, pp. 2290-2303, 1992. [64] V. Panin, G. Zeng, and G. Gullberg, "Total Variation Regulated EM Algorithm," IEEE Transactions on nuclear science, vol. 46, no. 6, pp. 2302-2210, 1999. [65] J. Nuyts and J. Fessler, "A penalized-likelihood image reconstruction method for emission tomography, compared to postsmoothed maximum-likelihood with matched spatial resolution," IEEE Transactions on Medical Imaging, vol. 22, no. 9, pp. 1042-1052, 2003. [66] N. Denisova, "Bayesian reconstruction in SPECT with entropy prior and iterative statistical regularization," IEEE Transactions on Nuclear Science, vol. 51, no. 1, pp. 136-141, 2004. [67] H. Hudson and R. Larkin, "Accelerated image reconstruction using ordered subsets of projection data," Medical Imaging, IEEE Transactions on, vol. 13, pp. 601-609, 1994. [68] C. Byrne, "Accelerating the EMML algorithm and related iterative algorithms by rescaled block-iterative methods," Image Processing, IEEE Transactions on, vol. 7, pp. 100-109, 1998. [69] C. Kamphuis, F. Beekman, and M. Viergever, "Accelerated SPECT reconstruction using OSEM with only two projections per subset," Nuclear Science Symposium and Medical Imaging Conference Record, vol. 2, pp. 1193-1197, 1995. [70] D. Lalush and B. Tsui, "A fast and stable maximum a posteriori conjugate gradient reconstruction algorithm," Medical physics, vol. 22, pp. 1273-1284, 1995. [71] R. H. Byrd, P. Lu, J. Nocedal, and C. Y. Zhu, "A Limited Memory Algorithm for Bound Constrained Optimization," SIAM Journal on Scientific Computing, vol. 16, pp. 1190-1208, 1995. [72] C. Zhu, R. H. Byrd, P. Lu, and J. Nocedal, "Algorithm 778: L-BFGS-B: Fortran subroutines for large-scale bound-constrained optimization," ACM Trans. Math. Softw., vol. 23, pp. 550- 143 560, 1997. [73] D. Gourion, "Correction d'atténuation à partir des seules données d'émission en TEMP : Un problème inverse mal posé," Université Paul Sabatier, Toulouse III, Thèse 2002. [74] G. Zeng, Y.-L. Hsieh, and G. Gullberg, "A rotating and warping projector/backprojector for fan-beam and cone-beam iterative algorithm," IEEE Transactions on Nuclear Science, vol. 41, pp. 2807-2811, 1994. [75] E. Di Bella, A. Barclay, R. Eisner, and R. Schafer, "A comparison of rotation-based methods for iterative reconstruction algorithms," IEEE Transactions on Nuclear Science, vol. 43, pp. 3370-3376, 1996. [76] K. Mueller and R. Yagel, "Use of graphics hardware to accelerate algebraic reconstruction methods," in Proceedings 1999 SPIE Medical Imaging, 1999, pp. 615-625, n°3659. [77] K. Chidlow and T. Möller, "Rapid emission tomography reconstruction," Volume Graphics, pp. 15-26, 2003. [78] F. Xu and K. Mueller, "Accelerating popular tomographic reconstruction algorithms on commodity PC graphics hardware," Nuclear Science, IEEE Transactions on, vol. 52, pp. 654663, 2005. [79] Z. Wang, G. Han, T. Li, and Z. Liang, "Speedup OS-EM Image Reconstruction by PC Graphics Card Technologies for Quantitative SPECT with Varying Focal-Length Fan-Beam Collimation," IEEE Transactions on Nuclear Science, vol. 52, pp. 1274-1280, 2005. [80] W. P. Segars, "Development and Appication ot the new dynamic nurbs-based cardiac-torso (NCAT) phantom," 2001. [81] X. G. Xu, T. C. Chao, and A. Bozkurt, "VIP-Man : an image-based whole-body adult male model constructed from color photographs of the Visible Human Project for multiparticle Monte Carlo calculations," Health Phys, vol. 78, pp. 476-486, 2000. [82] J.-P. Esquerre, F. J. Coca, S. J. Martinez, and R. F. Guiraud, "Prone Decubitus: A Solution to Inferior Wall Attenuation in Thallium-201 Myocardial Tomography," J Nucl Med, vol. 30, pp. 398-401, 1989. [83] R. J. Jaszczak, L.-T. Chang, N. A. Stein, and F. E. Moore, "Whole-body single-photon emission computed tomography using dual, large-field-of-view scintillation cameras," Physics in Medicine and Biology, vol. 24, pp. 1123-1143, 1979. [84] R. Z. Stodilka, B. J. Kemp, F. S. Prato, and R. L. Nicholson, "Importance of Bone 144 Attenuation in Brain SPECT Quantification," J Nucl Med, vol. 39, pp. 190-197, 1998. [85] A. Celler, D. Axen, D. Togane, and J. El-Khatib, "Investigation of scatter in SPECT transmission studies," Nuclear Science, IEEE Transactions on, vol. 47, pp. 1251-1257, 2000. [86] B. Tsui et al., "Cardiac SPECT reconstruction with truncated projections in different SPECT system designs.," J. Nucl. Med., vol. 33, p. 831, 1992. [87] E. P. Ficaro et al., "Simultaneous Transmission-Emission Thallium-201 Cardiac SPECT: Effect of Attenuation Correction on Myocardial Tracer Distribution," J Nucl Med, vol. 36, pp. 921-931, 1995. [88] P. Pretorius, M. King, B. Tsui, K. LaCroix, and W. Xia., "A mathematical model of motion of the heart for use in generating source and attenuation maps for simulating emission imaging.," Med Phys, vol. 26, no. 11, p. 2323–2332, 1999. [89] F. Natterer, "Computerized Tomography with Unknown Sources," SIAM Journal on Applied Mathematics, vol. 43, pp. 1201-1212, 1983. [90] A. Welch, R. Clack, F. Natterer, and G. T. Gullberg, "Toward Accurate Attenuation Correction in SPECT Without Transmission Measurements," IEEE Trans. Med. Imaging, vol. 16, pp. 532-541, 1997. [91] D. Gourion, X. Hatchondo, P. Gantet, D. Noll, and J.-P. Esquerre, "Comparison of two methods for SPECT attenuation correction without transmission measurements," Nuclear Science Symposium Conference Record, 2001 IEEE, vol. 4, pp. 2183-2187, 2001. [92] I. Laurette, R. Clackdoyle, A. Welch, F. Natterer, and G. Gullberg, "Comparison of three applications of ConTraSPECT," Nuclear Science Symposium, 1998. Conference Record. 1998 IEEE, vol. 3, pp. 1824-1829, 1998. [93] F. Natterer, "Determination of tissue attenuation in emission tomography of optically dense media," Inverse Problems, vol. 9, pp. 731-736, 1993. [94] R. Faghihi and L. Desbat, "Experiments on the DCC for SPECT and CT scanner data registration," Nuclear Science Symposium Conference Record, 2001 IEEE, vol. 3, pp. 14371440, 2001. [95] A. Bronnikov, "Approximate reconstruction of attenuation map in SPECT imaging," Nuclear Science, IEEE Transactions on, vol. 42, pp. 1483-1488, 1995. [96] A. V. Bronnikov, "Numerical solution of the identification problem for the attenuated Radon transform," Inverse Problems, vol. 15, pp. 1315-1324, 1999. 145 [97] A. Bronnikov, "Reconstruction of attenuation map using discrete consistency conditions," Medical Imaging, IEEE Transactions on, vol. 19, pp. 451-462, 2000. [98] H. Kudo and H. Nakamura, "A new approach to SPECT attenuation correction without transmission measurements," Nuclear Science Symposium Conference Record, 2000 IEEE, vol. 2, pp. 13/58-13/62, 2000. [99] R. Novikov, "An inversion formula for the attenuated X-ray transformation," Arkiv för Matematik, vol. 40, pp. 145-167, 2002. [100] A. Hertle, "The identification problem for the constantly attenuated Radon transform," Mathematische Zeitschrift, vol. 197, pp. 13-19, 1988. [101] F. Natterer, The mathematics of computerized tomography.: J. Wiley & Sons, 1986. [102] Y. Censor, D. E. Gustafson, A. Lent, and H. Tuy, "A New Approach to the Emission Computerized Tomography Problem: Simultaneous Calculation of Attenuation and Activity Coefficients," Nuclear Science, IEEE Transactions on, vol. 26, pp. 2775-2779, 1979. [103] V. Dicken, "Simultaneous activity and attenuation reconstruction in single photon emission computerized tomography, a nonlinear ill-posed problem," Universität Postdam, Thèse 1998. [104] V. Dicken, "Simultaneous activity and attenuation reconstruction in emission tomography," Inv. Prob., vol. 15, pp. 931-960, 1999. [105] V. Y. Panin, G. L. Zeng, and G. T. Gullberg, "A method of attenuation map and emission activity reconstruction from emission data," IEEE Transactions on Nuclear Science, vol. 48, pp. 131-138, 2001. [106] A. Krol et al., "An EM algorithm for estimating SPECT emission and transmission parameters from emission data only," Medical Imaging, IEEE Transactions on, vol. 20, pp. 218-232, 2001. [107] J. Nuyts et al., "Simultaneous maximum a posteriori reconstruction of attenuation and activity distributions from emission sinograms," Medical Imaging, IEEE Transactions on, vol. 18, pp. 393-403, 1999. [108] D. Gourion and D. Noll, "The inverse problem of emission tomography," Inverse Problems, vol. 18, pp. 1435-1460, 2002. [109] J. Wallis, T. Miller, C. Lerner, and E. Kleerup, "Three-dimensional display in nuclear medicine," Medical Imaging, IEEE Transactions on, vol. 8, no. 4, pp. 297-303, 1989. 146 Bibliographie personnelle en relation avec la thèse Revues nationales Pierre Payoux, Guillaume Viguié, Jean-Paul Esquerré, Pierre Gantet, Scintigraphie de perfusion et scintigraphie de la neurotransmission dopaminergique présynaptique, le traitement des données, Médecine Nucléaire, Volume 31, Issue 6, June 2007, Pages 314-319 Congrès internationaux avec comité de lecture et publication des actes G. Viguié, P. Gantet, D. Noll, P. Payoux, P. Maréchal, J. P. Esquerré, Fast OSEM3D SPECT reconstruction with GPU, Communication orale, European Association of Nuclear Medicine Annual Congress, Copenhagen, october 2007 Congrès nationaux avec comité de lecture et publication des actes G Viguié, P Gantet, D Noll, P Payoux, P Maréchal, JP Esquerré, La puissance graphique utilisée dans les jeux vidéo au service de la reconstruction itérative OSEM3D en TEMP, Poster, Journées de la Recherche en Imagerie Médicale, Dijon, septembre 2007 147 Annexe A. Algorithme de calcul de la distribution angulaire des photons Compton en fonction de leur énergie E0 0 1 2 E0 1 - log( 0 ) 1 2 2 = (1- 02 ) rand() : générateur aléatoire uniforme entre 0 et 1 Faire { Si 1 rand () alors 1 2 ε=exp(-1 rand()) Sinon ε= ε 02 +(1-ε 02 ) rand() onecost= 1 E0 sint2=onecost (2-onecost) greject= 1- sin t 2 1 2 } tant que (greject< rand()); Angle obtenu : acos(1. – onecost); 148 Annexe B. Algorithme du projecteur avec GPU Pour chaque projection j d’angle θj { Initialisation de la texture qui contiendra la projection (TexProj[j]) à 0. Pour chaque profondeur { Calcul de la tranche perpendiculaire à l’axe de projection pour l’angle θj affichant la ligne se situant à la profondeur courante de chaque texture 2D de TexVolume, résultat placé dans temp1. Si Atténuation { Calcul de la tranche perpendiculaire à l’axe de projection pour l’angle θj affichant la ligne se situant à la profondeur courante de chaque texture 2D de TexVolumeAtn, résultat placé dans atn. } Si FanBeam { Copie de temp1 dans temp2. Zoom de temp2 correspondant à la profondeur affiché dans temp1. Si Atténuation { Copie de atn dans temp2. Zoom de temp2 correspondant à la profondeur affiché dans atn. Application facteurs de distance en x à atn. } } Si OSEM2D 149 { Appliquer un fragment program de convolution 1D horizontal à temp1 et placer le résultat dans temp2. Copie de temp2 dans temp1. } Sinon si OSEM3D { Appliquer un fragment program de convolution 1D horizontal à temp1 et placer le résultat dans temp2. Appliquer un fragment program de convolution 1D vertical à temp2 et placer le résultat dans temp1. } Si Atténuation { Utilisation d’un fragment program qui fait (TexProj[j]+temp1*(1/tailleX))*atn et place le résultat dans TexProj[j]. } Sinon { Utilisation d’un fragment program qui fait TexProj[j]+temp1*(1/tailleX) et place le résultat dans TexProj[j]. } } } 150 Annexe C. Algorithme du rétroprojecteur avec GPU Pour chaque coupe i { On initialise la coupe TexVolume[i] à 0. Pour chaque projection j d’angle θj { Si OSEM1D { On applique coordonnées la texture spéciales TexProj[j] qui feront sur que un carré c’est la avec des ligne qui correspond à la coupe qui va être épandue, on met le résultat dans temp1. } Sinon si OSEM2D { On applique coordonnées la texture spéciales TexProj[j] qui feront sur que un carré c’est la avec des ligne qui correspond à la coupe qui va être épandue, on met le résultat dans temp2. On applique le shader de convolution horizontal sur temp2 et on met le résultat dans temp1. } Sinon si OSEM3D { On applique le shader de convolution vertical sur TexProj[j] qui fait un épandage avec convolution donc le résultat se retrouve dans temp2. On applique le shader de convolution horizontal sur temp2 et on met le résultat dans temp1. } Si Atténuation 151 { Calcul des e-dμl et affichage du résultat dans atn. Utilisation d’un fragment program qui fait temp1*atn et met le resultat dans temp1. } Si FanBeam { Copie de temp1 dans temp2. Utilisation d’un fragment program qui étire la texture temp2 pour suivre la géométrie et met le résultat dans temp1. } On affiche temp1 avec une rotation d’angle θj dans temp2. Utilisation d’un fragment program qui fait TexVolume[i]+temp2*(1/nbProj) et place le résultat dans TexVolume[i]. } } 152 Annexe D. Exemple de programme GPGPU /* Exemple de programme GPGPU faisant l'addition de deux textures. Pour compiler rajouter les bibliothèques : GLUT http://www.opengl.org/resources/libraries/glut/ et GLEW http://glew.sourceforge.net/ */ #include <iostream> #include <string> #include <gl/glew.h> #include <gl/glut.h> // code source du shader d'addition de deux textures GLchar codeShaderAdd[]= "uniform sampler2D Texture0;" "uniform sampler2D Texture1;" "void main()" "{" "vec4 texelColor0 = texture2D( Texture0, gl_TexCoord[0].xy );" "vec4 texelColor1 = texture2D( Texture1, gl_TexCoord[0].xy );" "gl_FragColor = texelColor0 + texelColor1;" "}"; using namespace std; #define IMAGE_SIZE 4 #define NB_TEXT 3 // Variables pour contenir les différentes IDs GLuint mProgram,mShader; GLuint mTexTemp[NB_TEXT]; GLint mParamTex[NB_TEXT]; GLuint mFrameBufferID; // Récupère les erreurs dans les framebuffers objects std::string checkFBO() { string result; GLenum status; status = (GLenum) glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); switch(status) { case GL_FRAMEBUFFER_COMPLETE_EXT: result=""; break; case GL_FRAMEBUFFER_UNSUPPORTED_EXT: result="Unsupported framebuffer format\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: result="Framebuffer incomplete, missing attachment\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: result="Framebuffer incomplete, attached images must have same dimensions\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: result="Framebuffer incomplete, attached images must have same format\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: 153 result="Framebuffer incomplete, missing draw buffer\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: result="Framebuffer incomplete, missing read buffer\n"; break; default: result="Unknown Error\n"; break; } return result; } // Récupère les données de la compilation std::string getLastListing() { GLsizei logsize; glGetShaderiv(mShader, GL_INFO_LOG_LENGTH, &logsize); char *logStr=new char[logsize]; glGetShaderInfoLog(mShader,logsize, &logsize,logStr); return logStr; } // Dessine un carré void drawQuad() { glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f(0,0,0); glTexCoord2f(0,1); glVertex3f(0,1,0); glTexCoord2f(1,1); glVertex3f(1,1,0); glTexCoord2f(1,0); glVertex3f(1,0,0); glEnd(); } // Initialise la matrice de projection de façon a ce que le carré remplisse le framebuffer void initProjMatrix() { glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,1,0,1,-1,1); glMatrixMode(GL_MODELVIEW); } void initTex() { // Création des IDs de texture glGenTextures(NB_TEXT,mTexTemp); for(int i=0;i<NB_TEXT;i++) { // initialisation des données de la texture float *data=new float[IMAGE_SIZE*IMAGE_SIZE]; 154 for(int j=0;j<IMAGE_SIZE*IMAGE_SIZE;j++) { data[j]=i+j; } glBindTexture(GL_TEXTURE_2D, mTexTemp[i]); glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA16F_ARB,IMAGE_SIZE,IMAGE_SIZE,0,GL_RED ,GL_FLOAT,data); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); delete data; } } void initShader() { const GLchar *source=codeShaderAdd; // compilation du shader a partir de la chaîne de caractères mShader=glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(mShader, 1, &source, NULL); glCompileShader(mShader); // verification de la compilation GLint compile_status; glGetShaderiv(mShader, GL_COMPILE_STATUS, &compile_status); if(compile_status != GL_TRUE) { /* erreur a la compilation recuperation du log d'erreur */ cout << getLastListing(); } mProgram=glCreateProgram(); glAttachShader(mProgram,mShader); glLinkProgram(mProgram); GLint linked_status; glGetObjectParameterivARB( mProgram, GL_OBJECT_LINK_STATUS_ARB, &linked_status ); if(linked_status != GL_TRUE) { cout << getLastListing(); } // recuperation des ids des paramètres mParamTex[0]=glGetUniformLocationARB(mProgram,"Texture0"); mParamTex[1]=glGetUniformLocationARB(mProgram,"Texture1"); } 155 void applyShader() { initProjMatrix(); glViewport(0,0,IMAGE_SIZE,IMAGE_SIZE); glColor4f(1.,1.,1.,1.); // activation du programme glUseProgram(mProgram); // On lie les deux textures au programme glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D,mTexTemp[0]); glUniform1i(mParamTex[0],0); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D,mTexTemp[1]); glUniform1i(mParamTex[1],1); drawQuad(); // desactivation glUseProgram(0); } // Affiche le contenu des textures void printTex(GLuint textureID) { float *data=new float[IMAGE_SIZE*IMAGE_SIZE]; // recuperation de la texture en mémoire centrale glBindTexture(GL_TEXTURE_2D,textureID); glGetTexImage(GL_TEXTURE_2D,0,GL_RED,GL_FLOAT,data); cout << "Texture " << textureID << endl ; for(int j=0;j<IMAGE_SIZE*IMAGE_SIZE;j++) { cout << data[j] << "\t"; } cout << endl << endl; delete data; } int main(int argc,char **argv) { // intialisation du contexte OPENGL glutInit(&argc,argv); glutInitWindowPosition(0,0); glutInitWindowSize(IMAGE_SIZE,IMAGE_SIZE); glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); glutCreateWindow("Fenêtre OpenGL"); GLenum err = glewInit(); initTex(); 156 // on affiche le contenu des textures avant traitement for(int i=0;i<NB_TEXT;i++) printTex(mTexTemp[i]); // création du framebuffer glGenFramebuffersEXT(1,&mFrameBufferID); initShader(); // activation du framebuffer glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFrameBufferID); // on attache le framebuffer à la texture mTexTemp[2] glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, mTexTemp[2], 0); string errorFBO=checkFBO(); if(errorFBO!="") { cout << errorFBO << endl; return 1; } // Effectue le traitement // mTexTemp[2]=mTexTemp[0]+mTexTemp[1] applyShader(); // désactivation du framebuffer glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // Contenu de mTexTemp[2] après traitement printTex(mTexTemp[2]); getchar(); // libération des ressources glDeleteFramebuffersEXT(1,&mFrameBufferID); glDetachShader(mProgram,mShader); glDeleteShader(mShader); glDeleteTextures(NB_TEXT,mTexTemp); return 0; } Sortie : Texture 1 0 1 2 3 3 4 4 5 5 7 Texture 2 1 2 Texture 3 2 3 Texture 3 1 3 157 158 TITLE: CONTRIBUTION OF GRAPHICS PROGRAMMING FOR FAST SINGLE PHOTON EMISSION COMPUTED TOMOGRAPHY IMAGES RECONSTRUCTION ABSTRACT : Single Photon Emission Computed Tomography (SPECT) is a non-invasive medical imaging modality which visualizes radioactively labeled molecules administered to a patient. Photons emitted by the radio-isotopes are detected by a rotating camera system equipped by a lead collimator. A mathematical inversion technique is used to reconstruct the unknown 3D distribution of radio-activity in the body from the series of 2D projection images recorded by the system. In this process, image quality may be affected by two major degrading phenomena, collimator blurring, and attenuation of photons via the photoelectric and the Compton effects. The aim of this thesis is to enhance the quality of SPECT reconstructed images by reducing these degrading effects. - Several methods have been proposed to correct the effects of collimator blurring. The most efficient is to include a physical model of the collimator response function and to reconstruct images by an iterative method, which includes this model. Here we extend this line by improving convergence. The use of graphic cards can accelerate this process by a factor of 100. - We have implemented non-uniform attenuation correction methods which do not need additional transmission measurements, but uses emission data only. Reconstruction of activity based on emission data is a difficult non-linear ill-posed inverse problem. Two approaches have been tested, one based on non-linear optimization techniques, a second based on iterative techniques similar to those currently in use. The iterative technique performed more stably and generally produced better results. In simulated studies we were able to demonstrate an improvement over existing techniques, while this rests to be established in the case of clinical data. In conclusion, we have shown that programming with graphic processors is a new and powerful tool for SPECT image reconstruction, capable to include collimator response compensation and attenuation correction based on known attenuation maps. It may become equally useful to reconstruct activity and attenuation maps simultaneously from emission data once the underlying mathematical technique will be proven to be clinically useful. KEYWORDS: GPU, SPECT, tomographic reconstruction, OSEM, attenuation, resolution. 159 AUTEUR : Guillaume VIGUIE TITRE : APPORT DE LA PROGRAMMATION GRAPHIQUE POUR LA RECONSTRUCTION RAPIDE D’IMAGES 3D EN TOMOGRAPHIE PAR EMISSION MONOPHOTONIQUE DIRECTEURS DE THESE : Jean-Paul ESQUERRE, Dominikus NOLL LIEU ET DATE DE SOUTENANCE: Université Paul Sabatier, Toulouse le 18 décembre 2008 RESUME : La Tomographie par Emission Mono-Photonique (TEMP) est une modalité d’imagerie médicale qui a pour objectif la visualisation 3D de la fixation d’une molécule marquée par un isotope radioactif administrée à un patient. Les photons émis par le radioisotope sont détectés sous forme d’images planes selon différentes incidences par une caméra tournante munie d’un collimateur. Le problème de la reconstruction tomographique consiste à calculer le volume 3D de la concentration de la molécule radiomarquée à partir d’une série d’images de projection 2D. Deux phénomènes physiques principaux perturbent les données : une résolution limitée variable avec la distance du fait du collimateur, et une atténuation par les tissus du patient des photons émis. L’objectif de cette est de contribuer à l’amélioration de la prise en compte de ces phénomènes. - Au sujet de la prise en compte de la résolution limitée, plusieurs méthodes ont été proposées. Les plus performantes, basées sur la modélisation de la réponse du collimateur au sein de méthodes de reconstruction itératives, sont très coûteuses en temps de calcul, ce qui limite leur utilisation en pratique. Dans ce travail nous présentons une technique informatique, basée sur la programmation des cartes graphiques « grand public », permettant de diviser par 100 le temps de calcul pour ce type de méthode. - Au sujet de la prise en compte de l’atténuation, nous avons mis en œuvre une méthode permettant de corriger l’atténuation non uniforme à partir des seules données d’émission. Mathématiquement, il s’agit d’un problème inverse non linéaire sous déterminé. Deux méthodes ont été testées, l’une par optimisation, l’autre par méthode itérative en estimant alternativement le volume de la concentration radioactive et le volume du coefficient d’atténuation. La méthode itérative s’est révélée plus rapide et plus stable que la méthode par optimisation, et a donné, dans quelques cas, des résultats intéressants. Toutefois sur un ensemble de données cliniques réelles de patients présentant des artefacts d’atténuation suspectés, nous n’avons pas réussi à montrer que cette méthode apportait dans tous les cas une correction efficace. En conclusion, nous avons montré que la programmation des processeurs graphiques est aujourd’hui une solution très performante pour la reconstruction en tomographie par émission monophotonique, avec prise en compte de la réponse collimateur et correction d’atténuation à partir d’une carte d’atténuation connue. Quant à l’estimation de l’atténuation à partir des seules données d’émission, les quelques résultats encourageants obtenus permettent de dire que cette approche mérite d’être développée, car pour l’instant elle n’est pas encore utilisable en routine clinique. MOTS-CLES : GPGPU, TEMP, reconstruction tomographique, OSEM, atténuation, résolution. DISCIPLINE ADMINISTRATIVE: Radiophysique et Imagerie médicales. INTITULE ET ADRESSE LABORATOIRE: 160 Laboratoire de Biophysique, EA 3033 Faculté de Médecine de Toulouse-Purpan 133, Route de Narbonne 31062 Toulouse Cedex