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
casOutSpécifie la table de sortie pour stocker les résultats de la comparaison.
referenceImagesSpécifie la table contenant les images de référence pour la comparaison.
sourceImagesSpécifie la table contenant les images source à comparer.
copyVarsListe des variables à copier de la table d'entrée vers la table de sortie.
maximumSpécifie la valeur de comparaison maximale à rapporter. Les paires avec un score supérieur ne sont pas incluses.
methodSpé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'.
minimumSpécifie la valeur de comparaison minimale à rapporter. Les paires avec un score inférieur ne sont pas incluses.
pairAllSi 'True', compare chaque image de la table source avec chaque image de la table de référence (produit cartésien).
pairOnPathSi 'True', indique que les variables d'appariement spécifiées dans 'pairReferenceOn' et 'pairSourceOn' sont des chemins de fichiers.
pairReferenceOnNom de la colonne dans la table de référence à utiliser pour l'appariement.
pairSourceOnNom de la colonne dans la table source à utiliser pour l'appariement.
separateChannelsSi '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 ?