La programmation visuelle de dtk permet de créer rapidement des pipelines qui enchainent des opérations non triviales.
Le pipeline qui nous intéresse ici est issu du travail de Shuman Jia, actuellement en thèse au sein de l’équipe Asclépios. Les opérations qui sont en jeux dans ce cas font appel à des algorithmes de traitement d’image et de géométrie discrète.
Pipeline d’extraction de surface cardiaque
L’objectif du pipeline est de générer un maillage surfacique triangulaire représentant la surface externe d’un coeur à partir d’un masque binaire fourni sous la forme d’une image "mha". Puis il s’agit, à partir de ce maillage de surface, de réaliser une segmentation pour isoler les différentes parties du coeur : ventricule, la veine cave supérieure / aorte ascendante, la veine cave inférieure / aorte descendante, et l’arc aortique.
La contrainte pour le mailleur est de produire un nombre assez faible de triangles (moins de 30k) tout en gardant à la fois une bonne représentation du coeur et une bonne qualité de triangle (ici il faut préserver l’isotropie).
Le pipeline fait donc appel via les interfaces fournies par dtk à des algorithmes de la bibliothèque ITK (https://itk.org/) pour la partie traitement d’image et à des algorithmes de la bibliothèque Cgal (http://www.cgal.org/) pour la Géométrie.
Mailleur volumique
Le mailleur utilisé ici est donc celui de Cgal qui permet d’obtenir une bonne qualité de triangles. On peut facilement régler la taille de ces triangles ainsi que les différentes propriétés du maillage via l’interface de l’outil de programmation visuelle.
Isolation des parties du coeur
À partir de cette triangulation volumique, on extrait la surface du coeur. Celle-ci est ensuite donnée à un outil de labélisation polyédrique (Polyhedral labeler) afin de segmenter (ou isoler) les parties connexes du coeur à partir de ces propriétés volumiques (cf. Consistent mesh skeletonisation pour plus d’information).
Le nombre de clusters demandé dans l’interface permet d’obtenir approximativement le nombre final de composantes connexes.
Le mailleur de Cgal fonctionne suivant un mécanisme de sondage en lançant des rayons qui intersectent une level-set (typiquement f(x,y,z)=0 pour une image binaire, cf. slides_L3). Cette propriété du mailleur permet de produire des surfaces multi-résolution d’un même coeur. Il est également possible d’utiliser Cgal pour garder une trace des distances entre les modèles hautes résolution et faible résolution.
Résultats
L’image de droite ci-dessous montre le maillage et les parties du coeur que l’on obtient à partir du masque binaire de gauche.