Projet image 2013 : Reconstruction 3D à partir d'images médicales

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet Reconstruction 3D à partir d'images médicales
Cadre Projets de spécialité
Page principale Projets de spécialité image

Encadrants Jean-sebastien Franco, Franck Hetroy



Étudiants

Berton Florian - MMIS

Paumier Nicolas - MMIS

Roy Louise - MMIS


Introduction

Le projet proposé a pour but de construire une modélisation en trois dimensions d'images issues d'acquisitions médicales. Le choix de ce sujet a été motivé par nos différents centres d'intérêts et buts professionnels : en effet, certains d'entre nous envisagent de se spécialiser dans le domaine de l'imagerie médicale. Ces différents intérêts pour le secteur d'activité, l'imagerie et le traitement de l'image de manière plus générale nous ont permis de nous répartir les tâches à accomplir tout au long du projet.

Objectif général

Nous nous sommes posés la problématique suivante : comment représenter de manière efficace des données médicales ? En effet, avoir accès à un grand nombre de coupes - d'IRM par exemple - semble peu exploitable pour un utilisateur non expérimenté. Une vue en trois dimensions nous semblait beaucoup plus accessible et attractive. Par ailleurs, une telle représentation pourrait être un atout dans la prise de décision de certains diagnostiques médicaux, qui ne peuvent ne pas être identifiables au premier abord d'un ensemble de coupes.

Notre idée a donc été la suivante : concevoir un logiciel capable de rendre plus accessibles ces données médicales, et qui permette si possible de sélectionner les parties intéressantes à visualiser pour n'afficher que celles-ci.

Le travail proposé

L'objectif général de ce projet a donc été de mettre à disposition du client un programme capable d'afficher une visualisation 3D à partir de données médicales (IRM, scanner ou radiographie), ainsi que de donner la possibilité de choisir les différents objets de la représentation à afficher que ce soit les os, les organes ou encore les tissus. Le logiciel devait aussi permettre de réaliser une coupe afin d'observer l'intérieur de la représentation, et ainsi choisir différents types de filtres à appliquer afin d'affiner celle-ci.

Les différentes étapes

La première étape du projet a naturellement été de réaliser la lecture des fichiers médicaux, sous le format DiCom. Nous avons ensuite implémenté plusieurs filtres de lissage, afin de pallier les différents bruits dû à l'acquisition des images. L'étape cruciale du projet a sans doute été l'implémentation de l'algorithme du "Marching Cube", qui permet de représenter une iso-surface. Enfin, afin de rendre ce logiciel accessible, efficace et agréable d'utilisation, nous avons mis en place une interface graphique.

Le Parseur - lecture des fichiers médicaux

Le parseur implémenté a pour objectif de lire les fichiers médicaux et de retourner un objet contenant un vecteur correspondant aux différentes valeurs des pixels des images. Cette objet contient également d'autres attributs tels que la taille des images, le nombre d'images, l'équivalent en taille réelle d'un pixel ainsi que l'espace entre les coupes. Cependant, l'espace entres les coupes est un attribut qui semble parfois erroné d'un fichier à l'autre.

Nous avons implémenté la lecture des fichiers DiCom, norme standard pour les données d'imagerie médicale, à l'aide de la librairie imebra[1]. Nous avions également à notre disposition des fichiers de données brutes dans les exemples du logiciel CamiTK, nous avons donc adapté notre parseur afin qu'il puisse exploiter également ces données.

Traitement des images

Le pré-traitement d'images consiste à restaurer une image. On l'améliore, en supprimant les défauts liés au processus d'acquisition de celle-ci. Dans notre étude, nous nous sommes concentrés sur la réduction du bruit lié à l'acquisition via des appareils médicaux tels que scanner ou IRM. Il existe de très nombreuses techniques qui permettent de réduire ce bruit, mais nous nous sommes focalisés sur l'utilisation de filtres de lissage. Il est important de préciser que l'ensemble des filtres sont appliqués en 2D sur chaque coupe indépendamment et non pas en 3D sur l'ensemble des coupes en même temps, ce qui est discutable mais prend un temps considérablement moindre.

Dans notre étude nous nous sommes intéressés aux filtres non linéaires tel que le filtre médian et le filtre adaptatif récursif de St Marc & al., qui ont l'avantage contrairement au filtre linéaire de supprimer le bruit sans détériorer les contours.

Filtre médian

Le filtre médian consiste à remplacer le pixel central par la valeur médiane des pixels de son voisinage. Ce filtre à l’avantage de ne pas introduire de nouvelle valeur d’intensité et de réduire la variance de celle-ci. Il permet de supprimer les oscillations d’intensité inférieures à la taille de la fenêtre de lissage ainsi que le bruit.

A gauche : reconstruction sans lissage. A droite : reconstruction après lissage avec une taille de fenêtre N = 3

Cependant,des parties connexes de certains objets ne le sont plus après lissage (selon l’axe des coupes). Cela est un défaut lié au filtrage coupe par coupe.


Filtre adaptatif (Saint Marc & al.)

Le principe de ce filtre est de lisser uniquement les zones homogènes afin d'éviter l’adoucissement des contours. Pour les zones homogènes des contours, le filtre est une fonction du gradient de l’image avec un lissage fort pour un gradient faible (zone homogène) et un lissage faible pour un gradient fort (contour).

A droite : reconstruction d'un thorax sans lissage. A gauche : reconstruction d'un thorax après lissage avec k = 30


Sélection d'iso-valeur

L'algorithme du Marching Cube nécessite au préalable le choix d'une iso-valeur pour déterminer l'iso-surface à représenter. Ainsi, la question de la sélection de ce paramètre doit être abordée. Afin de déterminer de manière automatique une première valeur, on s'appuiera sur l'étude de l'histogramme des images.


Histogramme des niveaux de gris extrait des coupes de la représentation de droite. On peut voir plusieurs pics significatifs des différentes parties de l'organisme
Reconstruction avec l'iso-valeur sélectionné

En effet, chaque partie de l'IRM (tissu, os, organes) possède une valeur particulière. Ainsi, sur l'histogramme chaque pic d'une valeur donnée représente une partie spécifique de l'image. On peut alors restreindre la recherche de l’iso-valeur aux valeurs correspondant aux différents pics de l’histogramme. Il suffit de rechercher les maxima locaux de l’histogramme et de stocker leur niveau de gris. L’iso-valeur retenue ensuite correspondra au niveau de gris maximum parmi les niveaux de gris presélectionnés.


Marching Cube

Les 15 cas de base du Marching cube

Les marching cube désignent un algorithme publié par William E. Lorensen et Harvey E. Cline qui permet de générer un objet polygonal à partir d'un champ scalaire en trois dimensions. La sortie du marching cube est un ensemble de facettes (triangles) qui représente l'iso-surface souhaitée de manière approximative.

Le principe de l'algorithme:

On considère l'espace comme un ensemble de voxels. Le fonctionnement du Marching Cube est de parcourir cet ensemble : pour chacun d'entre eux, on regarde la valeur de chacun des sommets qui le constituent afin de savoir s'ils sont tous à l'intérieur de la surface que l'on veut représenter ou non. Il y a en tous 256 configurations de polygones possibles dans un seul cube. Ces 256 configurations sont obtenues par réflexion et symétrie à partir de 15 cas de base. Il faut ensuite calculer les points d'intersection entre l'iso-surface et chaque arrête du cube. Enfin, grâce aux points d'intersection obtenus et à la configuration, on obtient les facettes générées par le voxel étudié.


Nous avons, pour représenter les triangles, utilisé des Vertex Array (VA) en OpenGL qui améliorent la fluidité de notre affichage. En effet, sur certaines représentations le nombre de triangles est de l'ordre de 4 millions de triangles.


Interface graphique

Interface graphique



Afin de permettre une visualisation intéractive des iso-surfaces, nous avons implémenté une interface graphique à l'aide de Qtcreator.


Plusieurs actions sont proposées :

-Charger un dossier (RAW ou DiCom)

-Appliquer un filtre (Médian, Adaptatif ou Passe-Bande)

-Gérer les niveaux de gris (afficher l'histogramme, changer d'Isovaleur)

-Gérer l'affichage (Coupe de l'organe, espacement entre les coupes, lumière, Wire/fill)




Résultats

Voici quelques résultats que nous avons obtenus avec le logiciel implémenté sur des fichiers d'IRM et de scanner.

Représentation 3D des circonvolutions d'un cerveau
Représentation en 3D d'un abdomen coupé en deux
Représentation en 3D d'un visage à partir de données volumiques
Représentation en 3D de l'intérieur d'une colonne vertébrale
Représentation en 3D à partir d'une coupe coronale d'une tête

Difficultés rencontrées

Nous avons rencontré plusieurs difficultés durant ce projet.

Tout d'abord concernant le parseur, il a été difficile de prendre rapidement en main la librairie IMEBRA. En effet, le standard DiCom nous était alors inconnu et la multiplicité des tags possibles rendait un peu obscure leur utilisation : certains tags ont des noms très similaire et il était alors difficile de distinguer quel tag devait être à prendre en compte.

En ce qui concerne la recherche automatique d'une iso-valeur pour l'algorithme du Marching Cube, nous avons été confrontés à la grande différence entre les histogrammes d'IRM et de scanner et suivant la partie du corps représentée. Ainsi, nous avons dû implémenter une technique qui serait la plus générale possible afin que les résultats soient intéressants pour la plus grande majorité des images.

Conclusion

Logiciel implémenté

Nous nous sommes efforcés, tout au long du projet, de garder en tête les objectifs que nous nous étions fixés. Le logiciel que nous avons implémenté répond à la problématique que nous nous étions fixé au début de notre ce projet : en effet, il permet de visualiser en 3D les acquisitions d'imagerie médicale et ce grâce à un logiciel simple d'utilisation. Il permet à l'utilisateur de changer l'iso-valeur ainsi que les valeurs des paramètres des différents filtres, d'afficher l'histogramme de l'image volumique, et de couper l'organe pour en observer l'intérieur.

Nous avons par ailleurs écrit un manuel utilisateur qui permet d'expliquer ces différents paramètres et leurs effets, afin qu'un utilisateur sans connaissance préalable puisse tout de même prendre rapidement en main le logiciel.

Limites

Nous avions pour projet de pouvoir sélectionner une partie de l'objet à visualiser. Ceci nous a posé plusieurs difficultés. En effet, implémenter le reste du logiciel nous a déjà pris un temps considérable et nous n'avions pas l'impression d'avoir assez de temps pour réaliser cette partie, qui nécessite bien plus de temps que ce que nous pensions. Pour pallier ce problème nous pourrions appliquer un algorithme de marquage sur les triangles donnés en sortie du Marching Cube. Le but serait d'afficher seulement la plus grande composante connexe, nous permettant ainsi de n'afficher que la peau ou les os par exemple, pour certaines iso-valeurs.

Par ailleurs, les filtres implémentés ne sont pas spécialisés dans l'imagerie médicale. D'autres méthodes déjà éprouvées permettent de corriger les bruits spécifiques liés à l'acquisition des données et le biais entre chaque coupe (mouvement du corps pendant la prise, notamment). Ce sont autant de pistes d'améliorations du programme qui peuvent être intéressantes afin d'affiner son fonctionnement.

Apport personnel

Nous avons réellement apprécié travailler sur ce projet, et ce pour plusieurs raisons. Tout d'abord parce que le domaine d'application nous semblait à tous intéressant, mais également parce que la réalisation de A à Z d'un tel logiciel a été très enrichissante. Nous avons eu la possibilité de partir de zéro, pour comprendre le fonctionnement des fichiers de l'imagerie médicale et, grâce à l'aide de traitements, en tirer une modélisation tout à fait satisfaisante puisqu'elle est relativement fluide et lisse. Ces connaissances de base en imagerie médicale nous seront très certainement utiles pour notre avenir professionnel.


Nous nous sommes par ailleurs fixés notre propre sujet, et nous sommes aperçus à la fin de ce projet que nous avions réussi à le mener à bien grâce à nos connaissances acquises pendant deux ans seulement, ce qui nous aurait semblé impossible l'an dernier. Cette mise en application de nos compétences nous a permis de nous rendre compte que nous étions prêts à travailler sur de plus gros projets, et nous a motivés quant à la réalisations de logiciels qui seraient utilisables par la suite dans ce secteur d'activité.