Scénario de test & Cas d'usage
Traitement, manipulation et analyse d'images.
Découvrir toutes les actions de imageCrée deux tables CAS volumineuses : 'SCANNERS_ORIGINAUX' (simulant 10 000 images de scanners) et 'MASQUES_SEGMENTATION' (simulant les masques correspondants). Les colonnes '_image_' et '_mask_' sont laissées vides car on ne peut charger d'images, mais la structure et le volume des données sont représentatifs d'un cas d'usage réel. La jointure se fera sur la variable 'scan_id'.
| 1 | DATA casuser.SCANNERS_ORIGINAUX (promote=yes) casuser.MASQUES_SEGMENTATION (promote=yes); |
| 2 | LENGTH scan_id $30 _image_ image _mask_ image; |
| 3 | DO i = 1 to 10000; |
| 4 | scan_id = 'SCAN_' || put(i, z8.); |
| 5 | /* La colonne _image_ serait normalement remplie par un load d'images */ |
| 6 | OUTPUT casuser.SCANNERS_ORIGINAUX; |
| 7 | |
| 8 | /* La colonne _mask_ contiendrait l'image du masque de segmentation */ |
| 9 | OUTPUT casuser.MASQUES_SEGMENTATION; |
| 10 | END; |
| 11 | stop; |
| 12 | RUN; |
| 1 | PROC CAS; |
| 2 | image.annotateImages / |
| 3 | TABLE={name='SCANNERS_ORIGINAUX'} |
| 4 | casOut={name='SCANNERS_SUPERPOSES', replace=true, label='Scanners avec masques de tumeur'} |
| 5 | annotations={{annotation={ |
| 6 | annotationType='SEGMENTATION', |
| 7 | image='_mask_', |
| 8 | TABLE={name='MASQUES_SEGMENTATION', on={'scan_id'}}, |
| 9 | colorMap='HOT', |
| 10 | transparency=40 |
| 11 | }}} |
| 12 | images={id='scan_id', image='_image_'}; |
| 13 | RUN; |
| 14 | QUIT; |
| 1 | |
| 2 | PROC CASUTIL; |
| 3 | tableInfo caslib='CASUSER' name='SCANNERS_SUPERPOSES'; |
| 4 | QUIT; |
| 5 |
L'action s'exécute avec succès sur les 10 000 enregistrements. Une table 'SCANNERS_SUPERPOSES' est créée, contenant les images originales des scanners sur lesquelles sont superposés les masques de segmentation. Les zones de tumeur (définies par les masques) apparaissent colorées selon la palette 'HOT' avec une transparence de 40%. Le test démontre la capacité de l'action à gérer une volumétrie importante et une jointure de tables pour l'annotation.