image compareImages

Análisis de Radiografías con Metadatos Corruptos

Scénario de test & Cas d'usage

Contexto empresarial

Un hospital está migrando bases de datos de radiografías. Se necesita comparar escaneos recientes (origen) con históricos (referencia) para ver la evolución de pacientes. Sin embargo, debido a errores de migración, algunos registros tienen el 'Patient_ID' nulo o el formato de imagen es inconsistente. Se prueba la robustez de la acción ante claves nulas y análisis de canales separados.
Sobre el conjunto : image

Procesamiento, manipulación y análisis de imágenes.

Descubrir todas las acciones de image
Preparación de datos

Creación de datos con valores 'missing' (.) en la columna de emparejamiento 'patient_id' para probar el comportamiento de error o exclusión.

¡Copiado!
1 
2DATA casuser.current_scans;
3LENGTH _path_ $100 patient_id 8;
4INPUT _path_ $ patient_id;
5DATALINES;
6"/xray/2024/001.png" 101 "/xray/2024/002.png" . "/xray/2024/003.png" 103 ;
7 
8RUN;
9 
10DATA casuser.history_scans;
11LENGTH _path_ $100 patient_id 8;
12INPUT _path_ $ patient_id;
13DATALINES;
14"/xray/2020/old_101.png" 101 "/xray/2020/old_999.png" . "/xray/2020/old_103.png" 103 ;
15 
16RUN;
17 

Étapes de réalisation

1
Ejecución intentando emparejar por ID con canales separados para análisis detallado de color/densidad.
¡Copiado!
1 
2PROC CAS;
3image.compareImages / TABLE={name='current_scans', caslib='casuser'}, referenceImages={TABLE={name='history_scans', caslib='casuser'}}, pairSourceOn='patient_id', pairReferenceOn='patient_id', separateChannels=true, casOut={name='clinical_comparison', caslib='casuser', replace=true};
4 
5RUN;
6 
7QUIT;
8 

Resultado esperado


Se espera que la tabla 'clinical_comparison' se genere correctamente pero SOLO contenga resultados para los pacientes 101 y 103. Las filas con 'patient_id' nulo (missing) deben ser excluidas automáticamente del proceso de emparejamiento sin provocar un fallo fatal en la acción (crash). Al usar `separateChannels=true`, la salida incluirá columnas de comparación para cada canal (ej. _ssim_blue_, _ssim_green_, etc.) en lugar de un promedio global.