Comparer des images [Résolu]

zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 16 mars 2010 à 17:35 - Dernière réponse : deadhand 159 Messages postés dimanche 15 octobre 2006Date d'inscription 27 août 2010 Dernière intervention
- 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 

11 réponses

Répondre au sujet
deadhand 159 Messages postés dimanche 15 octobre 2006Date d'inscription 27 août 2010 Dernière intervention - 19 mars 2010 à 09:22
+3
Utile
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 %.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de deadhand
simovic 8 Messages postés dimanche 11 mai 2008Date d'inscription 16 mars 2010 Dernière intervention - 16 mars 2010 à 18:10
0
Utile
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
Utilisateur anonyme - 16 mars 2010 à 19:21
0
Utile
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
deadhand 159 Messages postés dimanche 15 octobre 2006Date d'inscription 27 août 2010 Dernière intervention - 17 mars 2010 à 09:18
0
Utile
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
Utilisateur anonyme - 17 mars 2010 à 10:19
0
Utile
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
deadhand 159 Messages postés dimanche 15 octobre 2006Date d'inscription 27 août 2010 Dernière intervention - 17 mars 2010 à 10:40
0
Utile
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
zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 18 mars 2010 à 20:05
0
Utile
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
zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 20 mars 2010 à 14:53
0
Utile
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
khalifanizar 4 Messages postés dimanche 3 février 2008Date d'inscription 25 novembre 2010 Dernière intervention - 9 avril 2010 à 11:59
0
Utile
Commenter la réponse de khalifanizar
khalifanizar 4 Messages postés dimanche 3 février 2008Date d'inscription 25 novembre 2010 Dernière intervention - 9 avril 2010 à 12:01
0
Utile
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
deadhand 159 Messages postés dimanche 15 octobre 2006Date d'inscription 27 août 2010 Dernière intervention - 9 avril 2010 à 12:04
0
Utile
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

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.