Page 1 of 1
Recherche image dans image
Posted: 15 May 2013, 11:01
by francois
Bonjour,
Comme l'image choisie au départ ne correspondait pas toujours à ce qu'intuitivement je croyais être une "bonne image" à chercher, je me suis demandé en quoi mon intuition était parfois à coté de la plaque.
Indépendamment d'un besoin précis, j'ai donc essayé de savoir ce qui était important pour ActionAZ dans la recherche d'une image.
J'ai essayé de faire la chose sérieusement mais je n'exclus pas une ou 2 erreurs d'interprétation.
François
Re: Recherche image dans image
Posted: 16 May 2013, 10:24
by niconil
très intéressant, et merci beaucoup pour cette explication détaillée.
quelques remarques suite à la lecture de ton document :
- en page 6 : je ne comprends pas dans le premier cas dénommé "Mise en pratique (suite)"
pourquoi AZ ne trouve pas et pourquoi tu mets "Ne trouve pas et c'est normal"
là j'aurai besoin d'un poil d'explication supplémentaire
- en page 8 tu recommandes lorsque l'on connait la zone à rechercher de restreindre la recherche à cette zone (ce qui me semble normal)
mais en l'état cela veut dire d'avoir recours à une action de type Code
=> pour limiter le recours au code et rendre l'action graphique pertinente, je rajouterai bien un paramètre du type sélection de région
(Pour jmgr : j'aimerai bien reproduire le sélecteur de région qui est présent dans l'outil libre GreenShot, mais pour moi ça me semble complexe,
ce que je sait faire c'est rajouter deux champs de type Point/Position qui définiraient une zone mais c'est pas très user-friendly)
- documentation très utile à reverser dans le wiki
Re: Recherche image dans image
Posted: 16 May 2013, 11:15
by francois
Bonjour,
J'aurais dû relire avec plus d'attention.
Il faut inverser les 2 images
Le but de la page 6 était de montrer que l'image à trouver(A) doit être incluse dans l'mage où l'on cherche (B).
(évident mais dans la pratique, on peut parfois prendre un peu trop grand)
Francois
Re: Recherche image dans image
Posted: 17 May 2013, 10:39
by niconil
Perso, j'ai toujours eu plein de problèmes avec cette action "Trouver Image"
mais à la lecture de ton document, j'ai refait un essai
j'utilise GreenShot pour faire mes copies d'écran et sélectionner mes images à chercher
A nouveau, je suis tombé sur un cas où avec mon image à chercher
au format PNG, actionaz ne trouve pas mon image dans la fenêtre
au fromat JPG, actionaz trouve l'image dans la fenêtre
françois à l'occasion peux-tu reproduire cela ?
(le résultat de trouver image dépend-il du format ?)
Re: Recherche image dans image
Posted: 19 May 2013, 16:01
by francois
J'ai testé avec des images de type jpg, gif et png, il n'y a rien de bien décisif à dire.
Je vais être un peu pris dans les jours à venir mais dès que possible, je vais essayer de
d'avancer sur " quelle image choisir".
Je suis toujours épaté par ce logiciel.
Francois
Re: Recherche image dans image
Posted: 25 May 2013, 10:09
by Jmgr
Salut à vous deux.
En effet la recherche d'images se fait sur des images en niveau de gris. L'algorithme de recherche fonctionne comme ça.
Plus d'infos :
http://docs.opencv.org/doc/tutorials/im ... ching.html
Si l'image à chercher est petite il faut aussi penser à diminuer la valeur du paramètre "Expansion de la recherhe" qui représente le décalage en pixels entre chaque vérification : s'il est trop élevé ça ne fonctionnera pas. La valeur minimale est 1, mais va ralentir la recherche.
A nouveau, je suis tombé sur un cas où avec mon image à chercher
au format PNG, actionaz ne trouve pas mon image dans la fenêtre
au fromat JPG, actionaz trouve l'image dans la fenêtre
françois à l'occasion peux-tu reproduire cela ?
(le résultat de trouver image dépend-il du format ?)
Désolé, je n'arrive pas non plus à reproduire ce bug. Y-a t-il des parties transparentes dans ton image ? Comme le JPG ne supporte pas la transparence ça peut être une cause de différence.
(Pour jmgr : j'aimerai bien reproduire le sélecteur de région qui est présent dans l'outil libre GreenShot, mais pour moi ça me semble complexe,
ce que je sait faire c'est rajouter deux champs de type Point/Position qui définiraient une zone mais c'est pas très user-friendly)
Hm, je n'ai jamais utilisé ce logiciel mais je pense que je vois ce que tu veux dire : l'écran devient gris et tu peux sélectionner un rectangle avec du drag&drop ?
C'est assez complexe mais c'est bien ce que j'ai prévu, par contre par manque de temps ça n'avance pas...
Re: Recherche image dans image
Posted: 27 May 2013, 09:55
by niconil
mais comme c'est libre, la partie gérant cette partie est peut être récupérable.
J'ai regardé de mon coté mais je me suis noyé en rentrant dans le code.
Dans la version 1.1 (de GreenShot) il a été rajouté une loupe pour pouvoir contrôler finement la sélection de la zone à copier.
rien de mieux que d'essayer le logiciel pour se faire une idée.
Re: Recherche image dans image
Posted: 27 May 2013, 10:28
by Jmgr
Certes, c'est du C# mais j'imagine que ça fait appel à l'API Windows en C. Sinon c'est mal barré.
Re: Recherche image dans image
Posted: 27 May 2013, 21:38
by francois
Très interessant.
Juste par curiosité, quelle méthode utilises-tu ? ( à supposer que tu en utilises une seule)
Elles semblent toutes tourner autour de la méthode des moindres carrés.
Mais c'est bien loin tout ça.
En tout cas, la lecture de cet article aide à mieux comprendre comment le rapprochement entre images est fait.
Francois
Re: Recherche image dans image
Posted: 28 May 2013, 08:14
by Jmgr
Il s'agit de CV_TM_CCOEFF_NORMED, c'est à dire
.
Je ne sais plus pourquoi j'ai choici cet algorithme là au lieu des autres, j'aurai du le marquer quelque part... Je suppose que j'ai du faire quelques tests. Enfin, ça peut faire l'objet d'une amélioration de l'action : ajouter le choix de l'algorithme dans les options avancées.
Edit: Hm, j'y pense, il doit être possible de faire la recherche d'image en prenant en compte les couleurs : il suffit de faire la recherche trois fois, une fois par cannal de l'image. Et dans ce cas on ne garde que les résultats qui valident les trois cannaux.
Re: Recherche image dans image
Posted: 29 May 2013, 05:35
by francois
Avec recherche "opencsv CV_TM_CCOEFF_NORMED" , google propose notamment 2 pdfs à télécharger.
Le 1er, "OReilly Learning
OpenCV[1].pdf" me semble une mine d'infos.
Pour la partie "recherche image dans image",notamment (page 232):
As usual, we obtain more accurate matches (at the cost of more computations) as we
move from simpler measures (square diff erence) to the more sophisticated ones (correlation
coeffi cient). It’s best to do some test trials of all these settings and then choose the
one that best trades off accuracy for speed in your application.
et page 233 :
Again, be careful when interpreting your results. Th e square-diff erence
methods show best matches with a minimum, whereas the correlation
and correlation-coeffi cient methods show best matches at maximum
points.
Page 235 : utilisation des 6 méthodes pour une même image.
Méthode 1 : square difference
Méthode 2 et 3 : correlation coefficient
Les méthodes 4 à 6 sont les formes normalisées des méthodes 1 à 3.
Finalement, en poussant en peu,via ces méthodes, il y a 2 types de recherche :
- Recherche d'une image la plus moyennement bonne.
- Recherche d'une image où l'on veut qu'il y ait un maximum de points où la correspondance est parfaite
(quitte à ce que pour certains autres points il n'y ait aucun rapport).
Re: Recherche image dans image
Posted: 13 Mar 2014, 17:18
by francois
Bonjour,
J'avais fait ce topo en mai dernier, de mémoire avant la version 3.7.0.
Ce topo a perdu de son actualité avec cette version 3.7.0 et celle qui vient de sortir, la 3.8.0.
Avec ces nouvelles versions, JMGR nous a sorti pas mal de nouveautés concernant les images.
Je recommande un petit tour vers wiki.actionaz.org/doku.php?id=en:start
Francois
Re: Recherche image dans image
Posted: 13 Jul 2015, 11:31
by francois
En pièce jointe un topo sur les méthodes figurant dans l'action : trouver image.
Francois
Re: Recherche image dans image
Posted: 15 Feb 2020, 09:35
by francois
Action 'trouver image'
Les paramètres utiles concernant l'attente :
Dans l'onglet Standard :
Si non trouvé : on peut choisir "attendre"
Dans l'onglet Avancé,
Délai entre 2 recherches lors d'une attente
Dans l'onglet Commun,
temps d execution maximal
(donc après plusieurs recherche+attente)