image

processImages

##set_image

Description

L'action processImages, c'est le véritable couteau suisse du traitement d'image dans SAS Viya ! Elle permet d'exécuter des fonctions fondamentales (redimensionnement, filtres, opérations morphologiques, etc.) sur une table d'images en une seule passe.

Syntaxe Officielle
proc cas;
image.processImages /
addColumns={"CHANNELCOUNT", "CHANNELTYPE", "DEPTH", "HEIGHT", "WIDTH"}
casOut={name="table_sortie", replace=TRUE}
copyVars={"var1", "var2"}
decode={convert=TRUE, encodeType="jpg", value=FALSE}
image="_image_"
table={name="table_entree"}
steps={{step={stepType="RESIZE", width=200, height=200}}};
run;
quit;

Paramètres Clés

Nom du paramètre Description
addColumns Spécifie les colonnes de base générales à ajouter, qui sont applicables à tous les formats d'image (ex: CHANNELCOUNT, DEPTH, HEIGHT, WIDTH).
casOut Paramètre requis. Spécifie les options de la table de sortie contenant les images traitées.
copyVars Spécifie les variables à copier de la table d'entrée vers la table de sortie (très pratique pour garder les identifiants ou labels).
decode Spécifie les paramètres liés à l'encodage/décodage de l'image (conversion, type d'encodage par exemple 'jpg').
image Spécifie le nom de la colonne qui contient les données binaires de l'image (par défaut '_image_').
images Spécifie la liste des paramètres qui décrivent la table d'images d'entrée (alternative à 'table').
table Spécifie la table d'entrée qui contient les données d'images.
steps Une liste d'étapes de traitement d'images à appliquer (ex: RESIZE, NORMALIZE, GAUSSIAN_FILTER). Chaque étape prend un 'stepType' et ses paramètres spécifiques.

Préparation des données

Chargement d'images en mémoire

Avant de pouvoir traiter les images, nous devons d'abord les charger dans une table CAS à l'aide de l'action `loadImages`.

1PROC CAS; image.loadImages / path="/chemin/vers/vos/images" casOut={name="images_entree", replace=TRUE}; RUN; QUIT;

Exemples d'utilisation

Redimensionnement basique d'images

Cet exemple redimensionne toutes les images de la table d'entrée à une largeur et hauteur spécifiques, pratique pour normaliser des données avant le Machine Learning.

1PROC CAS; image.processImages / TABLE={name="images_entree"} casOut={name="images_redimensionnees", replace=TRUE} steps={{step={stepType="RESIZE", width=224, height=224, type="BASIC"}}}; RUN; QUIT;
Résultat Attendu :
Une nouvelle table CAS nommée 'images_redimensionnees' contenant les images retaillées en 224x224 pixels.
Conversion en niveaux de gris

Utilisation de l'étape CONVERT_COLOR pour passer les images couleur (BGR) en niveaux de gris.

1PROC CAS; image.processImages / TABLE={name="images_entree"} casOut={name="images_gris", replace=TRUE} steps={{step={stepType="CONVERT_COLOR", type="COLOR2GRAY"}}}; RUN; QUIT;
Résultat Attendu :
Les images d'origine sont transformées en images en niveaux de gris dans la table de sortie.
Pipeline de traitement multiple : Redimensionnement, Flou et Seuil

Exemple d'un pipeline complet : on redimensionne l'image en conservant le ratio (KEEP_ASPECT_RATIO), on applique un filtre gaussien pour lisser le bruit, puis un seuillage. La magie du paramètre %%steps%% permet d'enchaîner tout ça en une seule requête !

1PROC CAS; image.processImages / TABLE={name="images_entree"} casOut={name="images_traitees", replace=TRUE} copyVars={"_id_"} steps={{step={stepType="RESIZE", width=300, height=300, type="KEEP_ASPECT_RATIO"}}, {step={stepType="GAUSSIAN_FILTER", kernelWidth=5, kernelHeight=5}}, {step={stepType="THRESHOLD", type="BINARY", value=128}}}; RUN; QUIT;
Résultat Attendu :
Une table 'images_traitees' contenant les images redimensionnées, floutées puis binarisées (en noir et blanc), incluant la colonne copiée '_id_'.