Scénario de test & Cas d'usage
Bildverarbeitung, -manipulation und -analyse.
Entdecken Sie alle Aktionen von imageSimuliert zwei große Tabellen: eine mit 10.000 Satellitenbildern und Metadaten (Aufnahmedatum, Region) und eine mit den zugehörigen binären Segmentierungsmasken.
| 1 | DATA casuser.satelliten_bilder; |
| 2 | LENGTH _name_ $50 region_id $10; |
| 3 | DO i = 1 TO 10000; |
| 4 | _name_ = 'region_A_' || PUT(i, Z5.) || '.tif'; |
| 5 | aufnahme_datum = TODAY() - FLOOR(RAND('UNIFORM')*365); |
| 6 | region_id = 'REGION_A'; |
| 7 | /* _image_ Spalte wird als leer angenommen, da sie durch image.loadImages gefüllt würde */ |
| 8 | OUTPUT; |
| 9 | END; |
| 10 | FORMAT aufnahme_datum DATE9.; |
| 11 | RUN; |
| 12 | |
| 13 | DATA casuser.segmentierungs_masken; |
| 14 | LENGTH _name_ $50; |
| 15 | DO i = 1 TO 10000; |
| 16 | _name_ = 'region_A_' || PUT(i, Z5.) || '.tif'; |
| 17 | /* _image_ Spalte (die Maske) wird als leer angenommen, da sie von einem anderen Prozess käme */ |
| 18 | OUTPUT; |
| 19 | END; |
| 20 | RUN; |
| 1 | PROC CAS; |
| 2 | image.annotateImages / |
| 3 | images={TABLE={name='satelliten_bilder', caslib='CASUSER'}} |
| 4 | annotations={{ |
| 5 | annotation={annotationType='SEGMENTATION', TABLE={name='segmentierungs_masken', caslib='CASUSER'}, colorMap='CIVIDIS', transparency=40} |
| 6 | }} |
| 7 | copyVars={'aufnahme_datum', 'region_id'} |
| 8 | casOut={name='validierte_satellitenbilder', caslib='CASUSER', replace=true}; |
| 9 | RUN; |
Die Aktion wird erfolgreich abgeschlossen und erzeugt die Tabelle 'validierte_satellitenbilder' mit 10.000 Zeilen. Jedes Bild in der Ausgabetabelle ist mit der entsprechenden Segmentierungsmaske überlagert, die mit der 'CIVIDIS'-Farbkarte und 40% Transparenz dargestellt wird. Wichtig ist, dass die Spalten 'aufnahme_datum' und 'region_id' aus der ursprünglichen Bildtabelle korrekt in die Ausgabetabelle kopiert wurden.