FI/SPECIAL-ETE-98

Serveur WEB d'images parallèles pour le projet Visible Human

Samuel Vetsch, Vincent Messerli, Oscar Figueiredo, Benoit Gennart, Roger Hersch,

EPFL-DI-Laboratoire de Systèmes périphériques, e-mail: RD.Hersch@epfl.ch, Laurent Bovisi, Ronald Welz, WDS Technologies SA, Genève & Luc Bidaut, Hôpital Cantonal Universitaire, LFMI, Genève

La visualisation d'images médicales 3D obtenues par coupes c'est-à-dire par l'intersection d'un volume 3D avec un plan d'orientation et de position quelconques est un outil de choix pour la formation en anatomie et l'aide au diagnostic.

Dans cet esprit, nous avons développé, dans le cadre du projet Visible Human, un serveur de coupes offrant aux intervenants la possibilité de spécifier interactivement la position et l'orientation de la coupe désirée et de l'obtenir à partir d'un volume tomographique 3D, qui se compose d'images CT, IRM (imagerie par résonance magnétique) ou obtenues par cryosection (images numériques en couleur de sections du corps congelé). Pour l'interaction avec l'utilisateur dans le but de spécifier la position et l'orientation de la coupe, nous utilisons une présentation miniature 3D de l'image complète.

Accéder et extraire des coupes depuis les images du Visible Human [1] exige un espace de stockage important (13Goctets pour le jeu de données de l'homme) et beaucoup de puissance de calcul. Nous avons donc décidé de construire un serveur sur la base de 5 PC Bi-Pentium Pro. Un PC Bi-Pentium II supplémentaire sert de serveur Web. Tous les PC sont interconnectés à travers un switch Fast Ethernet. Au total, 60 disques sont distribués entre les 5 PC.

fig. 1: spécification à l'aide d'une applet Java 1.1 du plan de coupe dans l'image tomographique 3D miniaturisée

Le volume Visible Human est segmenté en volumes élémentaires de 32x32x17 (51 KB en couleurs) qui sont répartis sur les différents disques associés aux PC. L'application Serveur de Coupes Visible Human convertit une requête de coupe donnée par sa position et son orientation en un ensemble de requêtes d'accès parallèles aux sous-volumes qui intersectent la coupe désirée (sous-volumes distribués sur les disques) et de requêtes d'extraction et de projection de morceaux de coupes (fig. 2). Les morceaux de coupes ainsi obtenus sont ensuite assemblés pour former la coupe finale qui est compressée par le serveur Web et envoyée au client Web.

fig. 2: extraction des morceaux de coupe d'un volume 3D divisé en extents

Le serveur d'images parallèles utilise l'outil de parallélisation CAP [2] et les composants pour systèmes de fichiers parallèles [3], ce qui nous a permis de construire des applications parallèles combinant une performance de calcul élevée ainsi qu'un grand nombre d'opérations d'entrée-sorties asynchrones.

L'application serveur d'images parallèles se compose d'une interface résidant sur le PC serveur Web et de processus serveurs qui s'exécutent sur le réseau des 5 PC. L'interface interprète les paramètres d'emplacement et d'orientation de la coupe définis par l'utilisateur et détermine les éléments d'images qui devront être accédés. Il envoie aux serveurs concernés (ceux dont les disques contiennent ces éléments) les requêtes de lecture de sous-volumes et d'extraction de coupe. Ces serveurs exécutent les requêtes et transfèrent à l'interface les morceaux de coupes résultants. L'interface en fait l'assemblage pour engendrer l'image de la coupe finale (fig. 3).

fig. 3: envoi des requêtes de lecture d'extents et réception des morceaux de coupe

L'application serveur d'images parallèle est décrite dans le diagramme de la fig. 4 et par le programme de la fig. 5. Le programme de la fig. 5 décrit l'application parallèle à un niveau d'abstraction élevé selon le formalisme CAP (Computer-Aided Parallelization). Ce programme est précompilé en code C++ qui est ensuite compilé pour s'exécuter sur les serveurs PC et sur le PC d'interface.

fig. 4: représentation graphique de l'application parallèle et pipelinée d'extraction et de visualisation de coupes

fig. 5: spécification CAP de l'application parallèle et pipelinée d'extraction et de visualisation de coupes

La performance du serveur a été testée en distribuant le volume des données du Visible Human (jeu de données pour l'homme: 13Goctets) sur 1 à 5 PC Bi-Pentium Pro et sur 1 à 12 disques par PC (maximum 60 disques). La figure 6 montre le nombre de coupes couleurs 512x512 extraites par seconde pour différentes configurations. Chaque accès à une coupe est décomposé en 437 requêtes d'accès de sous-volumes (total: 22 Moctets de données pour les sous-volumes intersectés). Le goulet d'étranglement est toujours le débit effectif d'entrée/sortie sur le disque (pour des blocs de 51KB: ~1.88 Moctets/s). Avec 4.8 images de coupes /seconde, le PC agissant comme serveur Web peut recevoir à travers le Fast Ethernet 4.8 x 437 morceaux de coupes, chacun de taille 3.8 Koctets, ce qui donne 7.8 Moctets de données en provenance des 5 PC serveurs d'image. Pour engendrer un débit de coupes correspondant à 7.8 Moctets/s, 60 disques sont lus à un débit de 105.6 Moctets/s (4.8 x 22Moctets).

fig. 6: performances de l'application d'extraction et de visualisation de coupes selon différentes configurations du serveur, avec cache des disques désactivés

Les performances sont proches de celles offertes par le matériel, le système d'exploitation (Windows NT) et les protocoles réseau (TCP/IP).

L'outil d'aide à la parallélisation CAP simplifie la création des applications parallèles à mémoire distribuée. Les programmeurs créent séparément les parties séquentielles du programme et expriment le comportement parallèle du programme à l'aide de CAP. La partie parallèle du programme peut être facilement modifiée en changeant la séquence des opérations à l'intérieur d'une structure de contrôle parallèle, en enchaînant les structures de contrôle les unes après les autres ou en utilisant des structures de contrôle parallèles imbriquées.

Pour interfacer l'architecture parallèle du serveur avec le serveur WEB nous avons utilisé le protocole ISAPI de Microsoft. Une applet Java tourne sur les clients Web et permet aux utilisateurs de spécifier la position et l'orientation de la coupe et donc d'engendrer les requêtes d'accès. Les réponses du serveur Web sont compressées (standard JPEG) et renvoyées aux clients Web pour l'affichage. L'interface Web est opérationnelle à l'adresse:http://visiblehuman.epfl.ch/

Références

  1. Michael J. Ackerman, Accessing the Visible Human Project, D-Lib Magazine: The Magazine of the Digital Library Forum, October 1995, http://www.dlib.org/dlib/october95/10ackerman.html
  2. Benoit A. Gennart, Joaquin Tarraga, Roger D. Hersch, Computer-Assisted Generation of PVM/C++ Programs using CAP, Proceedings of EuroPVM'96, LNCS 1156, Springer Verlag, Munich, Germany, October 1996, 259-269
  3. Vincent Messerli, Benoit A. Gennart, Roger D. Hersch, Performances of the PS2 Parallel Storage and Processing System for Tomographic Image Visualization, Proceedings of the 1997 International Conference on Parallel and Distributed Systems, IEEE Computer Society Press, Seoul, Korea, December 1997, 514-522


retour au sommaire du Flash informatique spécial été 98
retour à la page principale des Flash informatique
Vos commentaires
© FI-spécial été du 1er septembre 1998