Comparer des images [Résolu]

Messages postés
356
Date d'inscription
lundi 26 juillet 2004
Dernière intervention
26 juin 2012
- - Dernière réponse : deadhand
Messages postés
159
Date d'inscription
dimanche 15 octobre 2006
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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
159
Date d'inscription
dimanche 15 octobre 2006
Dernière intervention
27 août 2010
3
Merci
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 %.

Merci deadhand 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de deadhand
Messages postés
8
Date d'inscription
dimanche 11 mai 2008
Dernière intervention
16 mars 2010
0
Merci
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 .
Commenter la réponse de simovic
0
Merci
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.




Commenter la réponse de Utilisateur anonyme
Messages postés
159
Date d'inscription
dimanche 15 octobre 2006
Dernière intervention
27 août 2010
0
Merci
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à.
Commenter la réponse de deadhand
0
Merci
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




Commenter la réponse de Utilisateur anonyme
Messages postés
159
Date d'inscription
dimanche 15 octobre 2006
Dernière intervention
27 août 2010
0
Merci
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.
Commenter la réponse de deadhand
Messages postés
356
Date d'inscription
lundi 26 juillet 2004
Dernière intervention
26 juin 2012
0
Merci
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
Commenter la réponse de zut69
Messages postés
356
Date d'inscription
lundi 26 juillet 2004
Dernière intervention
26 juin 2012
0
Merci
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+
Commenter la réponse de zut69
Messages postés
4
Date d'inscription
dimanche 3 février 2008
Dernière intervention
25 novembre 2010
0
Merci
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
Commenter la réponse de khalifanizar
Messages postés
159
Date d'inscription
dimanche 15 octobre 2006
Dernière intervention
27 août 2010
0
Merci
Personne ne doit le savoir mieux que tu si tu
veux travailler sur le valeur RGB du pixel au niveaux de comparaison?
!!
lol !!
Commenter la réponse de deadhand
Messages postés
4
Date d'inscription
dimanche 3 février 2008
Dernière intervention
25 novembre 2010
-1
Merci
Commenter la réponse de khalifanizar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.