image

compareImages

Description

Compare les images d'une table avec celles d'une autre en utilisant des métriques de similarité comme le rapport signal/bruit de crête (PSNR) ou l'indice de similarité structurelle (SSIM). Cette action est fondamentale pour des tâches telles que la détection de changements, la vérification de la qualité d'image ou la recherche d'images dupliquées.

image.compareImages / casOut={...} referenceImages={...} sourceImages={...} [copyVars={...}] [maximum=double] [method="PSNR" | "SSIM"] [minimum=double] [pairAll=boolean] [pairOnPath=boolean] [pairReferenceOn="variable-name"] [pairSourceOn="variable-name"] [separateChannels=boolean];
Paramètres
ParamètreDescription
casOut Spécifie la table de sortie pour stocker les résultats de la comparaison.
referenceImages Spécifie la table contenant les images de référence pour la comparaison.
sourceImages Spécifie la table contenant les images source à comparer.
copyVars Liste des variables à copier de la table d'entrée vers la table de sortie.
maximum Spécifie la valeur de comparaison maximale à rapporter. Les paires avec un score supérieur ne sont pas incluses.
method Spécifie la méthode de comparaison d'images. 'PSNR' (Peak Signal-to-Noise Ratio) ou 'SSIM' (Structural Similarity Index). La valeur par défaut est 'SSIM'.
minimum Spécifie la valeur de comparaison minimale à rapporter. Les paires avec un score inférieur ne sont pas incluses.
pairAll Si 'True', compare chaque image de la table source avec chaque image de la table de référence (produit cartésien).
pairOnPath Si 'True', indique que les variables d'appariement spécifiées dans 'pairReferenceOn' et 'pairSourceOn' sont des chemins de fichiers.
pairReferenceOn Nom de la colonne dans la table de référence à utiliser pour l'appariement.
pairSourceOn Nom de la colonne dans la table source à utiliser pour l'appariement.
separateChannels Si 'True', la comparaison est effectuée séparément pour chaque canal de couleur de l'image.
Préparation des Données Voir la fiche de ce code dataprep
Préparation des données : Chargement des images

Avant de comparer des images, nous devons les charger dans des tables CAS. Nous créons deux tables : 'images_source' et 'images_reference'. Ces tables contiendront les images à comparer. Assurez-vous que le chemin d'accès ('path') pointe vers un répertoire accessible par le serveur CAS contenant vos images.

Copié !
1PROC CAS;
2 image.loadImages /
3 path="/path/to/source/images"
4 casOut={name="images_source", caslib="casuser"};
5 RUN;
6 image.loadImages /
7 path="/path/to/reference/images"
8 casOut={name="images_reference", caslib="casuser"};
9RUN;

Exemples

Cet exemple compare les images entre 'images_source' et 'images_reference' en se basant sur la correspondance de leurs chemins de fichiers ('_path_'). La méthode de comparaison par défaut, SSIM (Structural Similarity Index), est utilisée.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3image.compareImages / TABLE={name='images_source', caslib='casuser'} referenceImages={TABLE={name='images_reference', caslib='casuser'}} casOut={name='comparisons_ssim', caslib='casuser', replace=true};
4 
5RUN;
6 
Résultat :
Une table nommée 'comparisons_ssim' est créée dans la caslib 'casuser'. Elle contient les scores de similarité SSIM pour chaque paire d'images correspondante.

Cet exemple utilise la méthode PSNR (Peak Signal-to-Noise Ratio) pour comparer les images. Il ne rapporte que les comparaisons où le score PSNR est compris entre 20 et 40. De plus, il compare toutes les images sources à toutes les images de référence ('pairAll=true') et copie la variable 'label' de la table source dans la table de résultats.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3image.compareImages / TABLE={name='images_source', caslib='casuser'} referenceImages={TABLE={name='images_reference', caslib='casuser'}} casOut={name='comparisons_psnr_filtered', caslib='casuser', replace=true} method='PSNR' minimum=20 maximum=40 pairAll=true copyVars={'label'};
4 
5RUN;
6 
Résultat :
Une table nommée 'comparisons_psnr_filtered' est créée. Elle contient les scores PSNR pour toutes les paires d'images possibles, mais uniquement pour celles dont le score est entre 20 et 40. La colonne 'label' de la table source est également présente.

Dans ce scénario, les images sont appariées non pas par leur chemin, mais par une colonne d'identification personnalisée ('image_id' dans la table source et 'ref_id' dans la table de référence). La méthode de comparaison est SSIM et la comparaison est effectuée sur chaque canal de couleur séparément.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3image.compareImages / TABLE={name='images_source', caslib='casuser'} sourcePairOn='image_id' referenceImages={TABLE={name='images_reference', caslib='casuser'}} pairReferenceOn='ref_id' pairOnPath=false separateChannels=true casOut={name='comparisons_custom_id', caslib='casuser', replace=true};
4 
5RUN;
6 
Résultat :
La table 'comparisons_custom_id' est générée. Elle contient les scores de similarité SSIM pour chaque canal de couleur, pour les paires d'images dont les identifiants 'image_id' et 'ref_id' correspondent.

FAQ

À quoi sert l'action `compareImages` ?
Quelles sont les méthodes de comparaison d'images disponibles ?
Comment puis-je spécifier les paires d'images à comparer ?
Est-il possible de comparer les canaux de couleur individuellement ?
Comment puis-je limiter les résultats de la comparaison à une certaine plage de valeurs ?

Scénarios associés

Cas d'usage
Validation de conformité visuelle (Golden Sample)

Une usine de fabrication de circuits imprimés (PCB) souhaite automatiser son contrôle qualité. Le système doit comparer chaque photo prise sur la ligne de production (source) av...

Cas d'usage
Détection de changement de terrain à grande échelle

Une agence environnementale surveille la déforestation. Elle possède des milliers d'images satellites 'Avant' (Référence) et 'Après' (Source). Le volume est important. Il est cr...

Cas d'usage
Filtrage précis et Canaux RGB (Cas Limite)

Un musée analyse la restauration de tableaux. Ils veulent comparer les scanographies spectrales avant/après restauration. Le test vise les cas limites : isoler uniquement les ch...