image

matchImages

Description

Fait correspondre une image de requête aux images d'une table en utilisant soit la correspondance de modèle (template matching), soit la correspondance de descripteurs de points clés. Cette action est fondamentale en vision par ordinateur pour la reconnaissance d'objets, la localisation et le suivi.

proc cas; image.matchImages / table={name='<table_entree>'} queryImage={path='<chemin/vers/image_requete.jpg>'} casOut={name='<table_sortie>', replace=true} methodOptions={method='<methode>', ...} <...autres options...>; quit;
Paramètres
ParamètreDescription
tableSpécifie la table CAS d'entrée qui contient les images de référence à parcourir.
queryImageSpécifie le chemin d'accès à l'image de requête unique qui sera utilisée comme modèle pour la recherche.
casOutSpécifie la table CAS de sortie où les résultats des correspondances seront stockés.
methodOptionsDéfinit la méthode de correspondance et ses options spécifiques. 'TEMPLATEMATCH' est rapide mais sensible aux variations, tandis que 'DESCRIPTORMATCH' est plus robuste aux changements d'échelle et de rotation.
methodParamètre dans 'methodOptions'. Choisit entre 'TEMPLATEMATCH' pour une recherche basée sur un modèle rigide ou 'DESCRIPTORMATCH' pour une recherche basée sur des caractéristiques (points clés).
descTypeParamètre pour 'DESCRIPTORMATCH'. Spécifie l'algorithme de descripteur de points clés à utiliser (par exemple, 'ORB', 'BRISK').
thresholdRatioParamètre pour 'DESCRIPTORMATCH'. Ratio utilisé pour filtrer les correspondances de descripteurs ambiguës. Une valeur plus faible (ex: 0.7) donne des correspondances plus fiables.
thresholdSeuil numérique pour filtrer les images ayant un faible nombre de correspondances. Par exemple, ne conserver que les images avec plus de 10 correspondances.
highlightSi TRUE, dessine des rectangles sur les images de sortie pour visualiser l'emplacement des correspondances trouvées.
copyVarsListe des colonnes à copier de la table d'entrée vers la table de sortie pour conserver le contexte.
decodeSi TRUE, décode les images dans la table de sortie. Utile pour une inspection visuelle immédiate.
Préparation des Données Voir la fiche de ce code dataprep
Préparation des images de référence

Charge un ensemble d'images de référence dans une table CAS. L'image de requête sera spécifiée directement par son chemin d'accès lors de l'appel de l'action `matchImages`. Assurez-vous que la caslib 'casuser' pointe vers un emplacement accessible contenant vos images.

Copié !
1PROC CAS;
2 LOADACTIONSET 'image';
3 image.loadImages /
4 path='chemin/vers/votre/dossier_images_de_reference/'
5 recurse=true
6 casOut={name='images_de_reference', caslib='casuser', replace=true}
7 label='Images de référence pour la correspondance';
8QUIT;

Exemples

Utilise la méthode de correspondance par modèle pour trouver des occurrences d'une image de requête simple dans une table d'images. Cette méthode est efficace pour les correspondances exactes ou quasi exactes.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3image.matchImages / TABLE={name='images_de_reference', caslib='casuser'} queryImage={path='chemin/vers/votre/image_requete.jpg'} methodOptions={method='TEMPLATEMATCH'} casOut={name='match_par_modele', caslib='casuser', replace=true};
4 
5QUIT;
6 
Résultat :
Une table CAS nommée 'match_par_modele' est créée. Elle contient les images de la table de référence où le modèle a été trouvé, avec les coordonnées des correspondances et un score de similarité.

Utilise la méthode de correspondance par descripteurs de points clés (ORB par défaut) pour trouver des correspondances. Cette méthode est robuste aux changements d'échelle, de rotation et de perspective.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3image.matchImages / TABLE={name='images_de_reference', caslib='casuser'} queryImage={path='chemin/vers/votre/image_requete.jpg'} methodOptions={method='DESCRIPTORMATCH'} casOut={name='match_par_descripteurs', caslib='casuser', replace=true};
4 
5QUIT;
6 
Résultat :
Crée une table CAS 'match_par_descripteurs'. Elle contient les images de référence ayant des correspondances de points clés avec l'image de requête. La table inclut le nombre de correspondances et une mesure de distance.

Cet exemple utilise la méthode 'DESCRIPTORMATCH' avec l'algorithme BRISK. Il applique un ratio de seuil de 0.75 pour filtrer les correspondances faibles et un seuil global de 20 pour ne retenir que les images ayant au moins 20 correspondances solides. Les correspondances sont également mises en évidence avec des rectangles sur les images de sortie.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3image.matchImages / TABLE={name='images_de_reference', caslib='casuser'} queryImage={path='chemin/vers/votre/logo.png'} casOut={name='match_brisk_detaille', caslib='casuser', replace=true} methodOptions={method='DESCRIPTORMATCH', descType='BRISK', thresholdRatio=0.75} threshold=20 highlight=true copyVars={'_path_'};
4 
5QUIT;
6 
Résultat :
Une table CAS nommée 'match_brisk_detaille' est créée. Elle contient uniquement les images de la table de référence avec au moins 20 correspondances de descripteurs BRISK (avec un ratio de distance inférieur à 0.75). Les images de sortie sont des copies des originaux avec des rectangles dessinés autour des zones correspondantes. La colonne '_path_' de la table d'origine est également copiée dans la table de sortie.

FAQ

Quelle est l'utilité de l'action `matchImages` ?
Quelles sont les méthodes de correspondance (matching methods) disponibles ?
Comment spécifier l'image de requête à rechercher ?
À quoi sert le paramètre `threshold` ?
Est-il possible de visualiser les correspondances directement sur les images de sortie ?
Quelle est la différence entre `descType` et `thresholdRatio` dans la méthode `DESCRIPTORMATCH` ?