builtins

processBioMedImages

##set_builtins

Description

L'action processBioMedImages est le couteau suisse (ou le scalpel, devrais-je dire ?) du traitement d'images biomédicales sous SAS Viya. Elle permet d'appliquer une séquence d'opérations complexes (les fameuses étapes ou steps) sur des images médicales (comme des IRM ou des scanners) stockées dans une table CAS. Que vous ayez besoin de rogner (CROP), redimensionner (RESIZE), égaliser l'histogramme ou même lisser l'image, cette action fait le job avec une précision chirurgicale ! Source détaillée dans le guide de programmation de la vision par ordinateur .

Syntaxe Officielle
proc cas;
bioMedImage.processBioMedImages /
images={table={name="nom_table_entree"}}
casOut={name="nom_table_sortie", replace=true}
steps={{step={stepType="TYPE_ETAPE", <parametres_specifiques>}}};
quit;

Paramètres Clés

Nom du paramètre Description
images La table CAS d'entrée contenant vos précieuses images biomédicales. Peut inclure des sous-paramètres de connexion (table).
casOut La table CAS de sortie où atterriront vos images fraîchement traitées (et guéries !).
steps La liste des opérations chirurgicales (étapes) à appliquer séquentiellement, comme RESIZE, SMOOTH, CROP, THRESHOLD, etc.
addColumns Colonnes de métadonnées supplémentaires à extraire et ajouter à la sortie (ex: WIDTH, HEIGHT, DEPTH, ORIENTATION).
decode Booléen. Si TRUE, décompresse/décode les images et les métadonnées de l'image directement dans la table de sortie.
copyVars Liste de variables à conserver et copier depuis la table d'entrée vers la table de sortie, histoire de ne pas perdre le nom de votre patient.

Préparation des données

Chargement d'une image biomédicale d'exemple

Avant d'opérer, il faut un patient ! Voici comment charger des images médicales en mémoire depuis un dossier contenant des fichiers de type DICOM par exemple.

1PROC CAS; LOADACTIONSET "bioMedImage"; bioMedImage.loadImages / path="/chemin/vers/dossier/dicom" casOut={name="imgs_in", replace=true}; RUN; QUIT;

Exemples d'utilisation

Redimensionnement simple d'une image

Une petite cure d'amincissement pour nos images. On utilise l'étape RESIZE pour changer les dimensions (hauteur et largeur) afin de standardiser les données avant de lancer un modèle d'Intelligence Artificielle.

1PROC CAS; bioMedImage.processBioMedImages / images={TABLE={name="imgs_in"}} steps={{step={stepType="RESIZE", resample={resampleType="SIZE", width=256, height=256}}}} casOut={name="imgs_resized", replace=true}; RUN; QUIT;
Résultat Attendu :
Une nouvelle table imgs_resized contenant les images redimensionnées en 256x256 pixels.
Séquence de traitements avancée : Lissage et Seuillage (Smooth & Threshold)

On passe aux choses sérieuses ! D'abord, on applique un lissage gaussien (SMOOTH) pour réduire le bruit de l'image (le fameux flou artistique), puis on binarise l'image avec un seuillage de type Otsu (THRESHOLD) pour isoler les structures anatomiques d'intérêt. Une vraie opération à cœur ouvert !

1PROC CAS; bioMedImage.processBioMedImages / images={TABLE={name="imgs_in"}} decode=true addColumns={"WIDTH", "HEIGHT"} steps={{step={stepType="SMOOTH", smooth={smoothType="GAUSSIAN", kernelWidth=5, variance=1.5}}}, {step={stepType="THRESHOLD", threshold={thresholdType="OTSU", bins=128, regions=2}}}} casOut={name="imgs_processed", replace=true}; RUN; QUIT;
Résultat Attendu :
Une table CAS nommée imgs_processed contenant les images décodées, lissées, binarisées en 2 régions distinctes, avec les colonnes de largeur et hauteur ajoutées.