image

compareImages

##set_image

Description

L'action compareImages est l'outil ultime pour les experts de la vision par ordinateur souhaitant quantifier la similarité entre des ensembles d'images. Que vous cherchiez des doublons ou que vous mesuriez la dégradation d'une image après compression, cette action compare les images d'une table source avec celles d'une table de référence. Elle utilise des méthodes académiques comme SSIM ou PSNR pour vous dire si vos pixels sont jumeaux ou de parfaits étrangers. C'est un peu comme une application de rencontre, mais pour vos fichiers .jpg !

Syntaxe Officielle
proc cas;
image.compareImages /
casOut={caslib="nom_caslib", name="table_sortie", replace=TRUE}
copyVars={"colonne1", "colonne2"}
method="SSIM" | "PSNR"
pairAll=TRUE | FALSE
referenceImages={table={name="table_reference"}}
sourceImages={table={name="table_source"}};
run;

Paramètres Clés

Nom du paramètre Description
casOut Spécifie les paramètres de la table CAS de sortie qui recevra les résultats des calculs de similarité.
sourceImages Définit la table d'entrée contenant les images que vous souhaitez tester.
referenceImages Définit la table contenant les images de référence (les 'originaux') auxquelles les images sources seront comparées.
method Définit l'algorithme de calcul : SSIM (Structural Similarity Index) pour la perception structurelle ou PSNR (Peak Signal-to-Noise Ratio) pour la mesure de l'erreur quadratique.
pairAll Si activé (True), chaque image de la source est comparée à chaque image de la référence. À utiliser avec précaution si vos tables sont énormes, sauf si vous voulez faire chauffer votre serveur !
pairOnPath Indique si l'appariement entre la source et la référence doit se baser sur les chemins de fichiers (par défaut à True).
separateChannels Indique s'il faut calculer la similarité pour chaque canal de couleur (R, G, B) de manière indépendante.

Préparation des données

Préparation des tables d'images pour la comparaison

Nous chargeons deux répertoires d'images différents dans des tables CAS distinctes pour simuler une source et une référence.

1PROC CAS;
2 image.loadImages / path="/data/images/originals", casout={name="images_ref", replace=true};
3 image.loadImages / path="/data/images/compressed", casout={name="images_src", replace=true};
4RUN;

Exemples d'utilisation

Comparaison de base par chemin de fichier

Compare les images ayant le même nom de fichier dans deux tables différentes en utilisant la méthode SSIM par défaut.

1PROC CAS; image.compareImages / casOut={name="comparaison_simple", replace=true} referenceImages={TABLE={name="images_ref"}} sourceImages={TABLE={name="images_src"}}; RUN;
Résultat Attendu :
Une table 'comparaison_simple' est créée, contenant les scores SSIM pour les paires d'images correspondantes.
Comparaison exhaustive avec PSNR et copie de variables

Cet exemple compare toutes les images entre elles, utilise la méthode PSNR, et conserve les labels originaux dans la table de résultats pour faciliter l'analyse.

1PROC CAS; image.compareImages / method="PSNR" pairAll=true copyVars={"_label_"} casOut={name="comparaison_exhaustive", replace=true} referenceImages={TABLE={name="images_ref"}} sourceImages={TABLE={name="images_src"}}; RUN;
Résultat Attendu :
Une table contenant le produit cartésien des comparaisons avec le score PSNR pour chaque combinaison d'images source/référence.