Scénario de test & Cas d'usage
Procesamiento, manipulación y análisis de imágenes.
Descubrir todas las acciones de imageSimulación de dos tablas: 'production_line' (imágenes capturadas) y 'gold_standards' (imágenes perfectas). Se utiliza una columna 'model_id' para el emparejamiento.
| 1 | |
| 2 | DATA casuser.production_line; |
| 3 | LENGTH _path_ $100 model_id $20 timestamp datetime.; |
| 4 | INFILE DATALINES dsd; |
| 5 | INPUT _path_ $ model_id $ timestamp; |
| 6 | DATALINES; |
| 7 | "/mnt/cam/prod_A1_001.jpg","PCB_Model_X",1984501000, "/mnt/cam/prod_A1_002.jpg","PCB_Model_X",1984501010, "/mnt/cam/prod_B2_099.jpg","PCB_Model_Y",1984501020; |
| 8 | |
| 9 | RUN; |
| 10 | |
| 11 | DATA casuser.gold_standards; |
| 12 | LENGTH _path_ $100 model_id $20; |
| 13 | INFILE DATALINES dsd; |
| 14 | INPUT _path_ $ model_id $; |
| 15 | DATALINES; |
| 16 | "/ref/gold_PCB_Model_X.jpg","PCB_Model_X", "/ref/gold_PCB_Model_Y.jpg","PCB_Model_Y"; |
| 17 | |
| 18 | RUN; |
| 19 | /* Nota: Se asume que image.loadImages se ejecuta aquí para cargar los binarios usando estas tablas */ |
| 1 | |
| 2 | PROC CAS; |
| 3 | image.compareImages / TABLE={name='production_line', caslib='casuser'}, referenceImages={TABLE={name='gold_standards', caslib='casuser'}}, pairSourceOn='model_id', pairReferenceOn='model_id', method='SSIM', casOut={name='qc_results', caslib='casuser', replace=true}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
| 1 | |
| 2 | PROC CAS; |
| 3 | SIMPLE.distinct / TABLE={name='qc_results', where='_ssim_ < 0.95'}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
La tabla 'qc_results' debe contener una fila por cada pieza fabricada. La columna '_ssim_' indicará el grado de perfección (1.0 = perfecta). El sistema identificará correctamente qué imagen de producción corresponde a qué estándar basándose en 'model_id', ignorando las diferencias en los nombres de archivo.