annotateImages
Description
L'action annotateImages permet d'enrichir et d'annoter des images stockées dans une table CAS en utilisant des métadonnéesInformations décrivant les données, les utilisateurs et les ressources dans SAS Viya. Elles assurent la traçabilité, la sécurité et la gouvernance au sein de l'architecture distribuée. présentes dans cette même table. C'est l'outil parfait (et un peu magique, on ne va pas se mentir) pour ajouter des boîtes englobantes, des points d'intérêt ou des masques de segmentation directement sur vos images avant de les visualiser ou de les utiliser pour l'entraînement d'un modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). de vision par ordinateur .
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| annotations | Spécifie les annotations à appliquer sur les images (comme LINES, POINTS, PROTOBUF ou SEGMENTATION) ainsi que leurs options visuelles (couleur r,g,b, épaisseur, etc.). |
| casOut | Définit la table CAS de sortie qui contiendra vos images fièrement annotées. |
| copyVars | Liste des variables (colonnes) à copier de la table d'entrée vers la table de sortie pour ne pas perdre vos informations précieuses. |
| decode | Paramètres liés au décodage. L'option 'value=true' est très pratique pour écrire directement l'image décodée et annotée dans la table de sortie. |
| images | Paramètre essentiel définissant la table d'entrée contenant vos images, ainsi que le nom des colonnes qui contiennent les métadonnées de l'image (comme la résolution, le chemin, ou l'identifiant). |
Préparation des données
Chargement initial des images en mémoire
Avant de pouvoir annoter quoi que ce soit, il nous faut des images en mémoire. Utilisons l'action loadImages pour préparer le terrain.
| 1 | PROC CAS; |
| 2 | image.loadImages / path="mon_dossier_images" caslib="casuser" casOut={name="mes_images_brutes", replace=true} decode=true; |
| 3 | RUN; |
| 4 | QUIT; |
Exemples d'utilisation
Annotation simple avec des points d'intérêt
Dessinons de jolis points rouges sur nos images en utilisant les coordonnées stockées dans la colonne '_points_'.
| 1 | PROC CAS; |
| 2 | image.annotateImages / images={TABLE={name="mes_images_brutes"}} annotations={{annotation={annotationType="POINTS", r=255, g=0, b=0, radius=5, representation={representationType="SINGLE_COLUMN", columnName="_points_"}}}} casOut={name="images_annotees", replace=true} decode={value=true}; |
| 3 | RUN; |
| 4 | QUIT; |
Résultat Attendu :
Dessin de boîtes englobantes (Bounding Boxes) avec conservation de variables
Voici un exemple complet. Imaginons que vous ayez exécuté un modèle de détection d'objets et que les coordonnées soient dans la colonne '_lines_'. Nous voulons tracer des boîtes vertes de 3 pixels d'épaisseur tout en conservant l'ID et le chemin de l'image d'origine.
| 1 | PROC CAS; |
| 2 | image.annotateImages / images={TABLE={name="mes_images_brutes"}, image="_image_", resolution="_resolution_"} annotations={{annotation={annotationType="LINES", r=0, g=255, b=0, thickness=3, representation={representationType="SINGLE_COLUMN", columnName="_lines_"}}}} copyVars={"_id_", "_path_"} casOut={name="images_boxes", replace=true} decode={value=true, convert=true}; |
| 3 | RUN; |
| 4 | QUIT; |