image

matchImages

##set_image

Description

L'action matchImages permet de rechercher et de faire correspondre une image de requête (query image) avec une collection d'images stockées dans une table. C'est un peu comme jouer à 'Où est Charlie ?', mais à l'échelle industrielle avec des algorithmes de vision par ordinateur ! Elle supporte deux méthodes de correspondance : par modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). direct (TEMPLATEMATCH) ou par descripteurs de points clés (DESCRIPTORMATCH). N'oubliez pas de charger vos images dans une table en mémoireGemini said

Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya.
au préalable.

Syntaxe Officielle
proc cas;
image.matchImages /
table={name="nom_table_entree", caslib="nom_caslib"}
queryImage={caslib="nom_caslib", path="chemin/image.jpg"}
casOut={name="nom_table_sortie", caslib="nom_caslib", replace=true}
methodOptions={method="DESCRIPTORMATCH", descType="ORB"}
highlight=true
threshold=0.8;
run;
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table d'entrée contenant les données d'images à fouiller.
queryImage Définit l'image de référence (la requête) à rechercher, via son chemin (path) et sa caslib.
casOut Spécifie les paramètres de la table de sortie où seront sauvegardés les résultats de la correspondance.
methodOptions Définit la méthode algorithmique : TEMPLATEMATCH (par modèle) ou DESCRIPTORMATCH (par points d'intérêt, ex: BRISK, ORB).
highlight Si défini à True, l'action dessinera de magnifiques rectangles pour encadrer visuellement les correspondances trouvées sur les images de sortie.
threshold Seuil de confiance numérique. Permet d'éliminer les correspondances trop faibles pour éviter les faux positifs.
copyVars Liste des variables de la table d'entrée à conserver et copier vers la table de sortie.
addColumns Ajoute des colonnes de métadonnées générales à la sortie (CHANNELCOUNT, CHANNELTYPE, DEPTH, HEIGHT, WIDTH).

Préparation des données

Chargement d'images source pour la correspondance

Avant de trouver l'âme soeur de notre image requête, il faut d'abord constituer notre catalogue d'images dans une table CAS.

1PROC CAS;
2 image.loadImages / caslib="Public" path="/mon/dossier/images_source" casOut={name="images_a_fouiller", replace=true, caslib="Public"};
3RUN;
4QUIT;

Exemples d'utilisation

Recherche simple par modèle (Template Match)

Une recherche directe et exacte d'un modèle d'image (ex: un logo) dans notre base d'images, avec surlignage des résultats.

1PROC CAS;
2 image.matchImages / TABLE={name="images_a_fouiller", caslib="Public"} queryImage={caslib="Public", path="logo_query.png"} methodOptions={method="TEMPLATEMATCH"} highlight=true casOut={name="resultats_simples", caslib="Public", replace=true};
3RUN;
4QUIT;
Résultat Attendu :
Une table CAS nommée 'resultats_simples' contenant les images analysées avec un rectangle dessiné autour du logo trouvé.
Recherche avancée avec Descripteurs (Descriptor Match)

Pour des recherches plus complexes (tolérance aux rotations ou échelles), on utilise les descripteurs ORB, on ajuste le ratio de tolérance, et on conserve la variable identifiante de l'image originale.

1PROC CAS;
2 image.matchImages / TABLE={name="images_a_fouiller", caslib="Public"} queryImage={caslib="Public", path="cible_complexe.jpg"} methodOptions={method="DESCRIPTORMATCH", descType="ORB", thresholdRatio=0.75} threshold=0.85 highlight=true addColumns={"WIDTH", "HEIGHT"} copyVars={"_id_"} casOut={name="resultats_avances", caslib="Public", replace=true};
3RUN;
4QUIT;
Résultat Attendu :
Génération de la table 'resultats_avances' contenant les images avec les correspondances ORB surlignées, incluant les colonnes WIDTH, HEIGHT et l'identifiant _id_.