• Aucun résultat trouvé

Apport de la programmation graphique pour la reconstruction rapide d'images 3D en tomographie par émission monophotonique

N/A
N/A
Protected

Academic year: 2021

Partager "Apport de la programmation graphique pour la reconstruction rapide d'images 3D en tomographie par émission monophotonique"

Copied!
160
0
0

Texte intégral

(1)

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,

(2)
(3)

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.

(4)

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.

(5)

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. 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

2. 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

(6)

2.3.2.3. Calcul des performances des collimateurs multi-trous ... 37

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. 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 3. 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

(7)

3.5. 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

4. 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. 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

5. 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. Reconstruction simultanée de l’émission et de l’atténuation ... 83

6. 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

(8)

6.1.1.4. Fan beam ... 89

6.1.1.5. Algorithme ... 90

6.1.2. Rétroprojecteur... 90

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. SIMULATEUR DE MONTE-CARLO ... 107

6.7.1. Algorithme général ... 107

6.7.2. Version GPU ... 109

7. 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

(9)

7.1.5. Comparaison OSEM GPU/CPU ... 118

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. SIMULATEUR DE MONTE CARLO ... 124

8. 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

(10)

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

(11)

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

(12)

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

(13)

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

TABLEAU 7-1 TEMPS DE CALCULS SUR 7950GX2 POUR 8 ITERATIONS ET 5 SOUS-ENSEMBLES : CERVEAU 1283 120 PROJECTIONS. ... 120

TABLEAU 7-2 TEMPS DE CALCULS SUR 7950GX2 POUR 8 ITERATIONS ET 5 SOUS-ENSEMBLES : CŒUR 643 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

TABLEAU 7-4 TEMPS PRIS PAR CHACUN DES OPERATEURS SUR 7950GX2 POUR UNE ITERATION EM 3D SUR UN VOLUME 1283, 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

TABLEAU 7-6 TEMPS DE CALCULS SUR GTX 280 POUR 8 ITERATIONS ET 5 SOUS-ENSEMBLES : CERVEAU 1283 120 PROJECTIONS... 123

TABLEAU 7-7 TEMPS DE CALCULS SUR GTX 280 POUR 8 ITERATIONS ET 5 SOUS-ENSEMBLES : CŒUR 643 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

(14)

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.

(15)

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.

(16)
(17)

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é.

(18)

- 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.

(19)

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

(20)

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. .

(21)

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. L

A 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

(22)

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

(23)

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.

(24)

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. P

IPELINE GRAPHIQUE

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 multi-plateforme pour la conception d'applications générant des images 3D et 2D. Cette spécification est

CPU

GPU

Transformation & Eclairage Rastérisation Assemblage Primitives Application Texture Frame Buffer Application Pixel Shader Vertex Shader Texture API Graphique OpenGL ou DirectX Pilote(Driver)

(25)

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.

(26)

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.

(27)

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.

B

(28)

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.

(29)

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. B

ASES 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;

(30)

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

(31)

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.

(32)

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. P

LATEFORMES 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.

(33)

2. La tomographie par émission monophotonique

2.1. P

RINCIPE

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 gamma-camé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. R

ADIOISOTOPES

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

(34)

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

e p b

TTT

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é

(35)

pour l’imagerie des récepteurs de l’organisme, notamment les neurorécepteurs, et également pour étudier le métabolisme thyroïdien.

2.3. G

AMMA

-

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 gamma-UV : le cristal, d’un détecteur de photons gamma-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

(36)

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).

Figure 2-1 Représentation des différentes géométries de collimateurs Cristal

P

e h

Profil de la réponse impulsionnelle moyenne

Cristal

e h

Profil de la réponse impulsionnelle moyenne

 P (A) (B) Cristal e h  (C) Profil de la réponse impulsionnelle moyenne

P

 : distance source/cristal e : diamètre des trous

 : distance focale

h : hauteur du collimateur (A) Parallèle

(B) Eventail ou conique (C) Sténopé

(37)

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 :

2 2

c i t

R

R

R

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 parhe.

2 -h h

e  

é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

(38)

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.

Figure

Figure  2-2 :  Réponses  simulées  pour  une  source  ponctuelle  de  99m Tc  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,
Figure  2-7  Distribution  angulaire  des  photons  diffusés  Compton  pour  trois  énergies  de  photons incidents : 70, 150 et 200 keV
Figure 2-12 : Bruit poissonien en fonction du nombre de photons détectés.
Figure 3-2 Volume de la distribution du traceur d’une perfusion cérébrale, visualisé sous les  plans axial, coronal et sagittal
+7

Références

Documents relatifs

Lecture des albums en autonomie , jeux avec les cartes , les flash

Dans le but de fiabiliser la localisation, la méthode du seuil flottant a été utilisée pour définir le début d’une salve.. Ainsi, chaque signal possède son propre seuil

Ainsi, face aux nombreux échecs d'implantation de technologies nouvelles dans des organisations, plusieurs auteurs préconisent la mise en place d'une réflexion sur le

Filtrage du projecteur par Analyse en Composantes Principales (ACP) 105 IV.2.3.1.1. Principe de l’ACP dans notre contexte ... Choix de la dimension Q... L'impact de la statistique

D´ esirant obtenir cette discr´ etisation directement depuis les donn´ ees acquises, nous avons introduit l’id´ ee sur laquelle repose toute la m´ ethode pr´ esent´ ee dans ce

Opérations pour un volume de 256 3 et 64 projections de 256 2 Temps Giga opérations par seconde (Gop/s) Projecteur 256 2 *64 rayons mis à jour avec 256 voxels traversés 63 ms

Ensuite, la mod´ elisation physique du probl` eme souffre de limitations dues ` a la complexit´ e des formules d’inversion (si elles existent) pour un op´ erateur de projection

Pour évaluer les méthodes de reconstruction : programmation linéaire et recuit simulé, nous utilisons d’images colorées convexes générées à partir d’un ensemble