?>
L'action `buildSurface` est un outil spécialisé dans le traitement d'images biomédicales en 3D. Son rôle principal est de construire des surfaces polygonales (maillages 3D) à partir de régions d'intérêt définies par des seuils d'intensité de pixels dans une image volumétrique (comme un scan CT ou IRM). Concrètement, elle permet de transformer un nuage de voxels (pixels 3D) en une représentation géométrique, ce qui est fondamental pour la visualisation 3D, l'analyse morphologique, et la planification chirurgicale.
| Parámetro | Descripción |
|---|---|
| images | Spécifie la table CAS d'entrée contenant les images biomédicales 3D à traiter. Cette table doit être correctement formatée, généralement par une action en amont comme `loadDicomData`. |
| intensities | Une liste de valeurs d'intensité de pixel. L'action génère une surface pour chaque valeur d'intensité spécifiée, créant un maillage qui représente l'isosurface à ce niveau de gris. |
| outputFaces | Spécifie la table CAS de sortie pour stocker les faces (polygones, généralement des triangles) de la surface générée. Chaque ligne représente une face définie par les identifiants de ses sommets. |
| outputVertices | Spécifie la table CAS de sortie pour stocker les sommets (vertices) de la surface générée. Chaque ligne contient les coordonnées (x, y, z) d'un sommet. |
| smoothing | Paramètres optionnels pour lisser la surface générée, ce qui peut réduire l'aspect 'en escalier' (aliasing) inhérent à la conversion voxel-maillage. |
| thresholds | Une liste de paires de seuils (bas et haut). L'action génère une surface qui englobe toutes les régions où l'intensité des pixels se situe entre ces seuils. C'est une alternative à `intensities` pour définir des régions volumétriques plutôt que des isosurfaces. |
L'action `buildSurface` opère sur une table d'images biomédicales 3D déjà chargée en mémoire dans CAS. Il n'est pas possible de créer des données DICOM réalistes avec un simple DATA STEP. La méthode standard consiste à utiliser l'action `loadDicomData` de l'action set `bioMedImage` pour charger une série d'images DICOM depuis un chemin accessible par le serveur CAS. Le code ci-dessous est un exemple conceptuel montrant comment charger des fichiers DICOM dans une table CAS nommée `my_3d_images`, qui sera ensuite utilisée par les exemples `buildSurface`.
/* ÉTAPE PRÉALABLE : Charger des images DICOM dans une table CAS */
proc cas;
bioMedImage.loadDicomData result=r status=s /
path="/chemin/vers/vos/fichiers/dicom/"
casout={name="my_3d_images", caslib="casuser", replace=true};
quit;
/* NOTE : Vous devez remplacer '/chemin/vers/vos/fichiers/dicom/' par un chemin réel contenant des fichiers DICOM accessibles par votre environnement CAS. */Cet exemple de base utilise le paramètre `intensities` pour générer une surface 3D correspondant à tous les voxels ayant une valeur d'intensité de 1000. C'est la méthode la plus directe pour visualiser une structure spécifique si son intensité est connue et homogène.
| 1 | PROC CAS; |
| 2 | bioMedImage.buildSurface / |
| 3 | images={TABLE={name="my_3d_images"}}, |
| 4 | intensities={1000}, |
| 5 | outputFaces={name="faces_simple", caslib="casuser", replace=true}, |
| 6 | outputVertices={name="vertices_simple", caslib="casuser", replace=true}; |
| 7 | RUN; |
| 8 | QUIT; |
Contrairement à `intensities` qui crée une surface à une valeur exacte, `thresholds` permet de définir une surface englobant une plage de valeurs. Cet exemple génère un maillage pour la région où les intensités des voxels sont comprises entre 800 et 1200. C'est utile pour extraire des structures dont l'intensité n'est pas parfaitement uniforme.
| 1 | PROC CAS; |
| 2 | bioMedImage.buildSurface / |
| 3 | images={TABLE={name="my_3d_images"}}, |
| 4 | thresholds={{low=800, high=1200}}, |
| 5 | outputFaces={name="faces_seuil", caslib="casuser", replace=true}, |
| 6 | outputVertices={name="vertices_seuil", caslib="casuser", replace=true}; |
| 7 | RUN; |
| 8 | QUIT; |
Les surfaces générées directement à partir de données voxels peuvent avoir un aspect brut ou 'en escalier'. Le paramètre `smoothing` permet d'adoucir le maillage. Ici, nous appliquons 5 itérations de lissage avec un facteur de relaxation de 0.5. Un facteur plus élevé produit un lissage plus prononcé. Cette technique est essentielle pour obtenir des visualisations plus esthétiques et des mesures morphologiques plus précises.
| 1 | PROC CAS; |
| 2 | bioMedImage.buildSurface / |
| 3 | images={TABLE={name="my_3d_images"}}, |
| 4 | intensities={1000}, |
| 5 | smoothing={iterations=5, relaxationFactor=0.5}, |
| 6 | outputFaces={name="faces_lissees", caslib="casuser", replace=true}, |
| 7 | outputVertices={name="vertices_lisses", caslib="casuser", replace=true}; |
| 8 | RUN; |
| 9 | QUIT; |