matchImages
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.
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.
| 1 | PROC CAS; |
| 2 | image.loadImages / caslib="Public" path="/mon/dossier/images_source" casOut={name="images_a_fouiller", replace=true, caslib="Public"}; |
| 3 | RUN; |
| 4 | QUIT; |
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.
| 1 | PROC 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}; |
| 3 | RUN; |
| 4 | QUIT; |
Résultat Attendu :
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.
| 1 | PROC 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}; |
| 3 | RUN; |
| 4 | QUIT; |