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.
| Paramètre | Description |
|---|---|
| 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. |
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.
| 1 | PROC 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"}; |
| 9 | RUN; |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | image.compareImages / TABLE={name='images_source', caslib='casuser'} referenceImages={TABLE={name='images_reference', caslib='casuser'}} casOut={name='comparisons_ssim', caslib='casuser', replace=true}; |
| 4 | |
| 5 | RUN; |
| 6 |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | image.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 | |
| 5 | RUN; |
| 6 |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | image.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 | |
| 5 | RUN; |
| 6 |