Scénario de test & Cas d'usage
Procesamiento, manipulación y análisis de imágenes.
Descubrir todas las acciones de imageCrea una tabla `mri_scans_y_mascaras` que contiene la imagen del escáner y la imagen de la máscara de segmentación en la misma fila. Se introducen casos límite: una fila tiene una máscara nula (`_mask_` está en blanco) para simular un fallo del modelo de IA.
| 1 | DATA casuser.mri_scans_y_mascaras(replace=yes); |
| 2 | LENGTH _image_ $ 50; |
| 3 | LENGTH _mask_ $ 50; |
| 4 | /* Caso válido: imagen y máscara existen */ |
| 5 | _image_ = 'mri_01.png'; _mask_ = 'mask_01.png'; OUTPUT; |
| 6 | /* Caso límite: máscara ausente */ |
| 7 | _image_ = 'mri_02.png'; _mask_ = ''; OUTPUT; |
| 8 | /* Caso válido: imagen y máscara existen */ |
| 9 | _image_ = 'mri_03.png'; _mask_ = 'mask_03.png'; OUTPUT; |
| 10 | RUN; |
| 1 | PROC CAS; |
| 2 | LOADACTIONSET 'image'; |
| 3 | image.annotateImages / |
| 4 | images={TABLE={name='mri_scans_y_mascaras', caslib='casuser'}}, |
| 5 | casOut={name='mri_anotadas_segmentacion', caslib='casuser', replace=true}, |
| 6 | copyVars={'_image_', '_mask_'} |
| 7 | annotations={{annotation={annotationType='SEGMENTATION', image='_mask_', transparency=40, colorMap='HOT'}}}; |
| 8 | RUN; |
| 9 | QUIT; |
La acción se completa sin fallar. La tabla de salida `mri_anotadas_segmentacion` se crea y contiene 3 filas. Las imágenes `mri_01.png` y `mri_03.png` están correctamente anotadas con una superposición de segmentación semitransparente usando el mapa de colores 'HOT'. La fila correspondiente a `mri_02.png` contiene la imagen original sin anotar, ya que la máscara estaba ausente. El log de SAS debería mostrar advertencias sobre los datos que no se pudieron procesar, demostrando un manejo de errores robusto.