Comparer deux images et trouver un taux de ressemblance entre elles

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
AmalDev
Messages : 7
Inscription : 21 Déc 2015 20:30

Comparer deux images et trouver un taux de ressemblance entre elles

Message par AmalDev » 21 Déc 2015 20:49

Bonsoir tout le monde :)

Je travaille sur un petit jeu dans le quel je propose une image contenant une forme que le joueur doit reproduire à partir de formes géométriques qui lui sont fournies. Pour savoir si il a bien su la reproduire, je dois comparer les deux formes et trouver un taux de ressemblance entre elles. Si le taux est assez élevé (on va dire 90%) il gagne.
En bref je dois trouver un algorithme pour comparer deux images sur unity et je ne sais vraiment pas par où commencer :/

Toute aide me serait d'une grande utilité.
Merci d'avance

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par Freelax » 21 Déc 2015 21:34

Salut,

Peu tu nous donner un exemple en image, c'est pour voir dans quelle mesure de complexité est la recherche a effectuer.

Dans l'idée, je ferais un système de marqueurs sur l'image de base que je stockerais comme références pour le contrôle de cette image par la suite. Si la dif de forme ce joue que sur le couleur (si ta forme ne possède que une couleur), tu peu te fixer sur des couleurs de pixels à tel ou tel position. Si c'est une forme plus complexe, tu peu utiliser une sorte de tampon de 16pixels(4x4) pour la détection de concordance.

La solution que tu doit trouver ne doit pas analyser toute l'image mais seulement certains repères défini à l'avance car l'analyse au pixel c'est lourd en ressources.
Image

HedgehogTeam
Messages : 15
Inscription : 10 Août 2015 12:06

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par HedgehogTeam » 21 Déc 2015 21:48

Pas simple ton affaire sans tomber dans les algos complexes de reconnaissance.

Dans le même principe que freelax,j'appliquerais une grille sur l'image 10 X 10 (tableau) par exemple, chaque casse contenant le motif serait mises à 1 (ou differentes valeur si tu veux prendre en compte la couleur). Même chose sur l'image faite par l'utilisateur. En gros une pixelisation de l'image

Puis deux passes comparatives entre les 2 tableaux :
1- le nombre de case à 1 si 90% alors étape 2
2- les coordonnées des cases à 1 si 90% de correspondance alors OK

Mais comme le dit Freelax, cela dépend de la complexité des images. Plus l'image est complexe plus la grille doit être fine
Nicolas

AmalDev
Messages : 7
Inscription : 21 Déc 2015 20:30

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par AmalDev » 21 Déc 2015 21:58

Merci beaucoup pour vos réponses.
Voici un exemple de deux images avec un taux de ressemblance relativement élevé :
Image
Image

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par Titan » 22 Déc 2015 19:53

J'ai fait un truc semblable l'année dernière.
je suis passé par un réseau de neurone artificiel avec la librairie FANN (http://leenissen.dk/fann/wp/), apprentissage par backpropagation, préparation de l'image d'input (floutage, suppression de bruit, etc) avec openCV, puis rasterization pour une entrée de 16x16 au réseau de neurone (ce que propose freelax).

Sauf que ton problème me semble encore plus complexe puisque j'avais des forme prédéfinie a détecté et que j'avais préparer un entrainement par forme, toi tu a besoin de matcher 2 images sans entrainement préalable. C'est pas impossible mais on parle de minimum 2-3 mois de recherche et développement, prototypes, lecture de document universitaire/thése... Avec un résultat incertain.

edit: après relécture je suis pas si sûr que ce soit vraiment 2 images inconnu, si tu a un modèle de référence fixe, la tache revient exactement à ce que j'avais fait et tu en a pour 3 semaines de dev maxi.
____________________________________________
Hop Boy

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par Freelax » 22 Déc 2015 22:17

Pourquoi faire compliquer quand on peut faire simple!?

On parle pas de reconnaissance faciale ou d’anticipation de comportements. Les systèmes neuronales, faut vraiment avoir le besoin mais surtout l'envie et les compétences pour pas y laisser son neurone ;)

Pour un contrôle de dif entre 2 images de ce type, faut un minimum de contrôles pour un maximum de réussite du matching. T'imagine une lib comme Fann sur devices?! 8/
Image

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par Alesk » 23 Déc 2015 14:23

Salut,

Si ça reste en 2D : il faudrait que tu vectorises chaque image, et ensuite tu compares ces formes vectorisées.
Tu peux commencer par essayer de détecter tous les angles sur le dessin, ça te permettra de détecter tous les segments qui forment le contour.
Je déconseille d'utiliser une technique à base de grille, car si jamais le dessin fait par l'utilisateur est penché ou pas à la même échelle, ça fausse tout. Il faut bosser en coordonnées relatives.

Tu te retrouves alors avec deux listes d'angles et de segments qu'il faut faire correspondre entre les deux dessins.
En effet, tu ne peux pas savoir à l'avance où va commencer le tracé. Il faut donc essayer de faire en sorte que la liste d'angles de chaque dessins commencent au même point.
Comme le tracé est fermé, il ne s'agit que de décaler les angles dans la liste, de manière cyclique. Au pire, tu fais ça en brute force en essayant tous les cas. S'il n'y a pas beaucoup d'angles ça ira très vite. Le même décalage s'appliquera aux segments.
Bien entendu, il faudra utiliser une variable de tolérance pour la comparaison des angles des deux listes, qui seront forcément un poil différents.

Une fois que tu as réussi à "synchroniser" les angles détectés sur les deux dessins (à ce stade, si aucune correspondance n'est trouvée, c'est que les dessins sont surement différents ... ou que ton code n'est pas assez bon :p )
Tu peux alors passer facilement à une vérification de l'orientation et de la taille des dessins : comme les listes de segments sont synchronisées, tu peux alors facilement comparer l'angle d'écart entre les mêmes segments de chaque dessin, et idem pour la taille.

Le plus difficile là dedans est d'obtenir une liste de points/angles/segments la plus propre possible pour chaque dessin afin d'éviter ensuite les erreurs de comparaisons.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6212
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par boubouk50 » 23 Déc 2015 14:57

Si le cas présenté est permanent (image noire et blanche) alors j'aurais une idée très simple:
- Trouve la bouding box des 2 dessins, à partir des pixels les plus haut/bas/ à droite/gauche
- Mettre à l'échelle le second dessin sur le premier -> scaler la bounding box pour qu'elle se superpose à la première.
- Calculer la différence entre les deux images -> le %age de blanc sur l'image résultante est le %age de justesse.
Image
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Glorek
Messages : 134
Inscription : 22 Oct 2010 14:16
Localisation : Paris

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par Glorek » 23 Déc 2015 20:05

je trouve l'idée de boubouk très bonne.

j'y rajouterais aussi si c'est que des formes, les formes utilisées soient les mêmes.
et peut etre si tu peux tourner la figure dans le même sens.
Si les formes sont faites avec le même outils tu peux aussi save des datas et les comparées, comme par exemple si tu ne le laisse pas lever le crayon tu lui met un point rouge et il doit arrivé à tracé la même forme et donc garder la distance parcouru... il faut après voir par rapport à ce que tu impose/propose au joueur.
ImageImageImage

AmalDev
Messages : 7
Inscription : 21 Déc 2015 20:30

Re: Comparer deux images et trouver un taux de ressemblance entre elles

Message par AmalDev » 24 Déc 2015 18:47

Merci à vous tous pour vos réponses.

L'idée de boubouk me parait la plus simple et claire mais est ce que c'est faisable sur unity sachant que je n'utilise aucun plugin de traitement d'image ?? Si oui comment devrais je procéder ??

Répondre

Revenir vers « Scripting »