action : recherche d'image

Vous voulez de l'aide ? Postez ici :)
Post Reply
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

action : recherche d'image

Post by skylight »

Bonjour, me voilà pour un autre problème : je souhaite utilise la recherche d'image, mais je n'ai pas encore bien prit en main cette action.

Quelqu'un peut-être m'expliquer en quoi consistent les 3 méthodes ?
"Correlation Coefficient" / "Cross Correlation" / "Squared Difference"

Je ne sais pas non plus comment fonctionne "l'expansion de la recherche" ?


Quand au sous-échantillonnage, 1 est le minimum, si on augmente la recherche est plus rapide, c'est ça ? Mais la recherche est alors moins précise ?

Et surtout ma question : comment faire pour chercher dans une zone précise de l'écran/ d'une fenêtre ? (pour accélérer la recherche, réduire les erreurs etc :)
francois
Posts: 460
Joined: 18 Oct 2010, 10:33
Location: France

Re: action : recherche d'image

Post by francois »

Bonjour,

La recherche d'image est un point fort d'Actiona et c'est sans doute l'action la plus complexe.

Dans la rubrique Tutos & exemples, message Recherche image dans image,
j'ai fait il y a 3 ans un topo sur ce que j'ai compris de cette action ( plus via la pratique que via la théorie).
Même si JMGR a encore fait progresser cette action, Il y a des réponses à tes questions.

Juste quelques précisions ( Y compris sur ce que je n'ai pas compris) :

Quelqu'un peut-être m'expliquer en quoi consistent les 3 méthodes ?
"Correlation Coefficient" / "Cross Correlation" / "Squared Difference"


Via l'analyse de la valeur de la variable confiance, en sortie,
Correlation Coefficient correspond au besoin standard, recherche d'une image ressemblant le plus possible à l'image proposée.
La confiance diminue rapidement dès qu'il y a des différences.

Cross Correlation , la confiance ne diminue pas rapidement même s'il y a des différences.
Je verrais bien un type d'utilisation : recherche d'une photo abimée.

Squared Difference
Via les tests que j'ai fait, je vois pas trop.


Je ne sais pas non plus comment fonctionne "l'expansion de la recherche" ?

Exemple si expansion de la recherche = 20.
Si actiona trouve une image, il ne cherchera pas s'il y a une autre image à moins de 20 pixels de celle qui vient d'etre trouvée.


Quand au sous-échantillonnage, 1 est le minimum, si on augmente la recherche est plus rapide, c'est ça ? Mais la recherche est alors moins précise ?
J'ai pas vraiment compris cette notion, je mets toujours 1.

Et surtout ma question : comment faire pour chercher dans une zone précise de l'écran/ d'une fenêtre ? (pour accélérer la recherche, réduire les erreurs etc :)

Via le code :

Code: Select all

var screenShot = Image.takeScreenshot();
IMG_= screenShot.copy(new Rect(505,415,50,50));

var IMG_a_trouver = new Image(p51_exercice_clos_le);
 Search_IMG_ =IMG_.findSubImages(IMG_a_trouver,
 {
         confidenceMinimum: 80,
         downPyramidCount: 1,
         searchExpansion: 15,
         maximumMatches: 10
 })
if(searchResult)
{
for(var j =0 ;j < searchResult.length; ++j)
{
actuelle_img= searchResult[j].position
actuelle_confiance=searchResult[j].confidence;
//=> prendre ou  pas suivant la confiance de l'image
} // fin for
} // fin if
=====
=====


Il y a 2 paramètres importants
Confiance minimale et nombre maximum d'images à chercher
( confidenceMinimum et maximumMatches dans le code)

Confiance minimale :
Si trop petit, il détecte même ce qu il ne faudrait pas détecter
Si trop grand, il ne détecte pas ce qu'il devrait détecter.
Faut juste tester avant.

Nombre maximum d'images à chercher

Si on met 1, actiona s'arrête dès qu'il a trouvé une image
... Y compris s'il y en d'autres.



Cordialement

Francois
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

Re: action : recherche d'image

Post by skylight »

Merci :)
Bon j'ai mieux compris certaines parties mais pas tout, en tout cas ton code pour chercher dans une zone précise devrait m'éviter toute erreur :)
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

Re: action : recherche d'image

Post by skylight »

Euhm, j'ai une question de fou mdr :
Ton texte je dois l'utiliser où/comment ? :)
edit => Je crois qu'il faut simplement que je mette ça dans une action "code" c'est ça :roll:


et une autre : pour l'expansion de la recherche, le nombre de pixel c'est compté à droite, en bas, les deux ? (je parle pas d'autres directions car je présume que le balayage se fait de gauche à droite et de haut en bas, ou alors de haut en bas et de gauche à droite)

et enfin : comme le code est relativement court, tu pourrai me traduire chaque ligne en gros "ce qu'il se passe" ? :) j'ai des notion de codage mais rien de fou et surtout pas dans ce language de programmation :wink: du coup j'ai pas tout compris
francois
Posts: 460
Joined: 18 Oct 2010, 10:33
Location: France

Re: action : recherche d'image

Post by francois »

Je t envoie un exemple commente lundi
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

Re: action : recherche d'image

Post by skylight »

merci à toi ! :)
francois
Posts: 460
Joined: 18 Oct 2010, 10:33
Location: France

Re: action : recherche d'image

Post by francois »

Bonjour,

En pièce jointe un exemple qui réponds à quelques questions concernant les paramètres de l'action 'Trouver image'.
Pour une première utilisation , lire le fichier lisez-moi.doc.

Relativement à ton dernier message :
Ton texte je dois l'utiliser où/comment ? :)
edit => Je crois qu'il faut simplement que je mette ça dans une action "code" c'est ça :roll:
OK.
et une autre : pour l'expansion de la recherche, le nombre de pixel c'est compté à droite, en bas, les deux ? (je parle pas d'autres directions car je présume que le balayage se fait de gauche à droite et de haut en bas, ou alors de haut en bas et de gauche à droite)
Je ne sais pas dans quelle direction Actiona fait la recherche suivante.
Quand il y a plusieurs images trouvées et qu'on affiche les coordonnées de chaque point, il ne semble pas y avoir une logique genre gauche vers droite.
Le but de l'expansion de la recherche est d'accélérer la recherche lorsque l'on sait pas exemple que si une image est trouvée la suivante est à une distance de + de 100 pixels.
Si N images trouvées, il est possible dans le script de retenir par exemple celle la plus à droite.

comme le code est relativement court, tu pourrai me traduire chaque ligne en gros "ce qu'il se passe" ? :) j'ai des notion de codage mais rien de fou et surtout pas dans ce language de programmation :wink: du coup j'ai pas tout compris
Voir dans le fichier lisez-moi.doc.

Bonne journée.
Attachments
recherche_image_dans_zone.zip
(18.74 KiB) Downloaded 153 times
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

Re: action : recherche d'image

Post by skylight »

Je me penche sur le code ! :)

Alors pour info :

"Dans la suite, downPyramidCount est figé à 1.
J’ai pas vraiment pigé ce paramètre."
c'est l'équivalent de "sous-echantillonage" dans l'action classique recherche d'image ;)
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

Re: action : recherche d'image

Post by skylight »

https://wiki.actiona.tools/doku.php?id= ... ndsubimage

https://wiki.actiona.tools/doku.php?id= ... age#method

avec l'action recherche d'image je trouve presque toujours l'image au bon endroit, et là en réduisant la zone avec le code je ne trouve pas. Je crois que c'est à cause de la méthode de recherche, j'utilise la 2 CrossCorrelation et non pas CorrelationCoefficient.

j'ai essayé d'ajouter ça aux option du code à l'aide de la page dont j'ai indiqué l'url ci-dessus, mais la syntaxe marche pas :/
francois
Posts: 460
Joined: 18 Oct 2010, 10:33
Location: France

Re: action : recherche d'image

Post by francois »

Bonjour,

Exemple de choix de méthode avec le code :

Code: Select all

Search_IMG_ = img_rect .findSubImages(image_a_trouver,{
         method:'CorrelationCoefficient',
         confidenceMinimum:60,
         downPyramidCount: 1,
         searchExpansion: 5,
         maximumMatches: 10
        })
S'il n'y a pas de paramètre 'method', Actiona prend par défaut CorrelationCoefficient.

Info dans https://wiki.actiona.tools/doku.php?id= ... core:image :
method.jpg
method.jpg (41.32 KiB) Viewed 4245 times
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

Re: action : recherche d'image

Post by skylight »

Salut :)

Merci beaucoup, j'avais lu l'image que tu as jointe, mais je ne savais pas comment bien écrire la ligne :

Code: Select all

method:'CorrelationCoefficient',
Maintenant ça devrait être bon : je vais tester !
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

Re: action : recherche d'image

Post by skylight »

Salut, c'est tout bon, autant pour ça que pour le reste de mon "projet" grâce à vous j'ai finit, merci beaucoup ! :D
francois
Posts: 460
Joined: 18 Oct 2010, 10:33
Location: France

Re: action : recherche d'image

Post by francois »

Bonjour,

Il y a un bug dans l'exemple que j'ai donné,
lorsque l'on cherche une image dans une zone particulière.

Code: Select all

zone_de_recherche=new Rect(10,10,500,500);
var image_a_trouver = new Image("C://temp//image_recherchee.jpg");

var copie_ecran = Image.takeScreenshot();
var img_rect =  copie_ecran.copy(zone_de_recherche);
Search_IMG_ = img_rect .findSubImages(image_a_trouver,{
         confidenceMinimum:60,
         downPyramidCount: 1,
         searchExpansion: 5,
         maximumMatches: 10
        })
if (Search_IMG_) //  on a donc trouvé  img
{  
Console.print("Nombre d images trouvées :" + Search_IMG_.length  )     
Console.print("=====");           
for(J=0;J< Search_IMG_.length;J++)
{ .. 
Jusqu'ici c'est OK.

Le problème vient après :

Code: Select all

Console.print("x : "    +  Search_IMG_[J].position.x); 
Ici, on restitue le x de l'image trouvée avec comme référence le rectangle.

Si on veut donner le x de l'image trouvée relativement au screenshot que l'on a fait, il faut revenir à :

Code: Select all

zone_de_recherche=new Rect(10,10,500,500);
Donc valeur du x de l'image trouvée relativement au screenshot :
Search_IMG_[J].position.x + 10

Il faudra faire la même chose avec le y.

Merci à Sergent-Quentin qui a détecté ce bug.

Cordialement
skylight
Posts: 27
Joined: 15 Apr 2016, 20:07

Re: action : recherche d'image

Post by skylight »

Merci de l'info, je pensais que c'était naturel alors je n'en ait pas parlé ici, mais j'avais remarqué la chose, que j'avais directement compensé de la sorte :

j'utilise, après le code de recherche d'image, une action "déplacement du curseur", la position j'ai rentré :

Code: Select all

Search_IMG_[0].position.x+":"+811
et voyant le décalage, je suis allé dans les option "avancé" et comme valeur de décalage, j'ai indiqué simplement la valeur du point qui fait le coin haut gauche du rectangle! :)

(enfin dans ton exemple je prendrai 10:0 car je veut rester à Y=811 donc je ne met pas de décalage dessus)

Je sais pas si c'est clair ? :)
Post Reply