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.
| Paramètre | Description |
|---|---|
| table | Spécifie la table CAS d'entrée qui contient les images de référence à parcourir. |
| queryImage | Spécifie le chemin d'accès à l'image de requête unique qui sera utilisée comme modèle pour la recherche. |
| casOut | Spécifie la table CAS de sortie où les résultats des correspondances seront stockés. |
| methodOptions | Dé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. |
| method | Paramè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). |
| descType | Paramètre pour 'DESCRIPTORMATCH'. Spécifie l'algorithme de descripteur de points clés à utiliser (par exemple, 'ORB', 'BRISK'). |
| thresholdRatio | Paramè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. |
| threshold | Seuil numérique pour filtrer les images ayant un faible nombre de correspondances. Par exemple, ne conserver que les images avec plus de 10 correspondances. |
| highlight | Si TRUE, dessine des rectangles sur les images de sortie pour visualiser l'emplacement des correspondances trouvées. |
| copyVars | Liste des colonnes à copier de la table d'entrée vers la table de sortie pour conserver le contexte. |
| decode | Si TRUE, décode les images dans la table de sortie. Utile pour une inspection visuelle immédiate. |
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.
| 1 | PROC 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'; |
| 8 | QUIT; |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | image.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 | |
| 5 | QUIT; |
| 6 |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | image.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 | |
| 5 | QUIT; |
| 6 |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | image.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 | |
| 5 | QUIT; |
| 6 |