Comparer des images

Résolu
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 - 16 mars 2010 à 17:35
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 - 9 avril 2010 à 12:04
Bonjour,

Je me débrouille assez bien en programmation, mais j'ai jamais touché aux images et là j'ai un projet pour lequel il faudrait que je compare des images. Par exemple, regarder si cette petite image de quelques pixels sur quelques pixels est inclue (n'importe ou) dans cette grande image (screenshot), il y a-t'il un moyen pas trop compliqué de faire ça?
Vers quoi dois-je m'orienter? Quelles ressources utiliser?
Est-ce que ça demanderait beaucoup de boulot au processeur, parce que je voudrais faire une centaine de comparaisons toutes les minutes.

Merci d'avance et bonne soirée,
FF

11 réponses

deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
19 mars 2010 à 09:22
et bien, l'agrandissement de chaque pixel, je vois ca comme la multiplication de chacun. Aulieu d'un pixel d'une couleur, tu en aurais quatre (pour garder le même ratio de taille de ton image) par exemple. Ensuite pour comparer, je pense que je prendrai un cadre qui correspondrait à a peu près 1% de l'image (les deux étant à la même taille) et que je ferais une sommation de couleur dans ce cadre pour les deux images en y attribuant une note comme le pourcentage de différence entre les deux images puis je déplacerais mon cadre sur un autre %.
3
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
18 mars 2010 à 20:05
Woooaw merci pour toutes vos réponses, avec tout ça je pense que je devrais pouvoir réussir à faire quelque chose.
Vu les nombreuses méthodes que vous proposer, ça m'a donné en plus une nouvelle idée, comparer des dimensions différentes. je vais détailler un peu ce que je veux faire:
Je fais un screenshot à un instant t via mon programme. Ensuite, il vérifie si, dans ce screenshot, il reconnait une ou plusieurs (!) de mes images de ma bibliothèque (env. 50 images), même agrandie. C'est a dire que la fenêtre que je "prends en photo" peut être en full screen ou pas, ça ne change rien, il trouve mon image et retourne l'info !
En résumé je cherche à trouver une image identique ou agrandie.
Ca a l'air de se compliquer un peu, mais d'après vos réponses, ça semble faisable.
Ce qui correspond le plus, à mon avis, c'est ce que tu dis (deadhand) pour les sommations de couleur ou l'agrandissement de chaque pixel, peux-tu m'en dire un peu plus? Est-ce que ça serait applicable dans mon cas?

Les réseaux de neurones, j'y avais pensé, car ce serait adapté à ma situation, mais aucune idée comment implémenter un truc pareil :p
1
simovic Messages postés 8 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 16 mars 2010
16 mars 2010 à 18:10
Bonjour,
Dans mon cas je fait une comparaison pixel par pixel d'une image de reference avec plusieurs images.Ca me sert à determiner si une image identique existe ou pas , et à l'aide d'un algorithme je recupere ce que j'appele la distance entre les images.
Pour ton cas je pense que tu peux coupler ca avec un decoupage de l'image en region d'interet en utilisant l'api JAI.
Si tu as d'autres pistes , merci de me les faire partager .
0
Utilisateur anonyme
16 mars 2010 à 19:21
Je pense que tu peux faire ça sans l'API JAI, il y a déjà pas mal de choses dans le JDK standard pour manipuler les images, je vois pas trop ce que JAI te donnera de plus.




0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
17 mars 2010 à 09:18
Lut !
Ca dépend vraiment du degré de précision que tu veux :
Si tu veux que l'image existe parfaitement dans la plus grande, alors parcours la pixel par pixel et compare.

Sinon, tu peux faire de la sommation de couleur pour voir si l'image existe en plus petit dans la seconde.

Ou alors, tu agrandis chaque pixel de l'image pour voir si elle existe en plus grand.

Pour les deux dernières solutions, il faudrait que tu définisses un degré de précision , par exemple: Si 95% pixels sont identiques (après sommations et lissage) alors image OK.

Bref, pour moi, c'est plus une question algoritmique vu que j'aime pas trop les API mais il est certain que tu dois avoir des outils performant qui existe pour celà.
0
Utilisateur anonyme
17 mars 2010 à 10:19
Bonjour

deadhand, nous sommes d'accord, les méthodes du JDK permettent tout au plus d'extraire les pixels. Après, on se ramène à un problème essentiellement algorithmique. Par contre, je ne vois pas ce que JAI peut apporter là-dedans.

Comparer des images pixel par pixel peut s'avérer assez lent.

J'ai trouvé un exemple pertinent d'utilisation de JAI pour comparer des images :
http://sanjrockzz.blogspot.com/2008/11/compare-images-for-similarity-using.html
https://jaistuff.dev.java.net/
http://www.lac.inpe.br/JIPCookbook/index.jsp




0
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
17 mars 2010 à 10:40
Je suis d'accord ! J'imagine même pas le temps que ca doit mettre pour une image type wallpaper !

je viens de penser à une autre solution :
Si tu tiens à t'amuser : Utilise les reseaux de neurones ! Ils sont extremement efficaces pour reconnaitres des images et charactères, l'embettant c'est qu'ils mettent du temps à apprendre et qu'ils peuvent surapprendre mais une fois que c'est fait, ils sont très efficaces et ce sera peut-être plus efficaces que les solutions que j'avais proposés.

Je sais pas si çà existe en Java, je faisais çà en C à l'époque.
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
20 mars 2010 à 14:53
OK merci beaucoup!
Ca va m'aider, maintenant faut entrer dans le vif du sujet et je vais chercher quelques tutos pour le traitement d'image en java, vu que j'ai jms touché à ça avant.

Merci a+
0
khalifanizar Messages postés 4 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 25 novembre 2010
9 avril 2010 à 11:59
0
khalifanizar Messages postés 4 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 25 novembre 2010
9 avril 2010 à 12:01
Slt
Avez vous un programme de comparaison d'image?
Est ce que je veux travailler sur le valeur RGB du pixel au niveaux de comparaison?
Merci
0
deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
9 avril 2010 à 12:04
Personne ne doit le savoir mieux que tu si tu
veux travailler sur le valeur RGB du pixel au niveaux de comparaison?
!!
lol !!
0
Rejoignez-nous