Page 1 sur 1
[..] Pixels images identiques
Posté : dim. 08 août 2010 18:43
par periaz
Bonsoir à tous.
J'aurais besoin de votre aide pour créer un petit logiciel qui m'aiderait bien ^^
Je voudrais en fait que ce logiciel ouvre une image, enregistre dans un tableau la couleur de chacun de ses pixels, ferme l'image. Ensuite il ouvrirait une deuxième image, ferait la même manipulation, en ouvrirait une troisième, quatrième, cinquième, enfin le nombre d'image sélectionnée. Il comparerait les pixels de toutes les images et me donneraient les pixels qui sont identiques entre ces images.
Pour chaque image, il y aurait un tableau de pixels.
J'espère que ce n'est pas trop dur à réaliser ^^
Merci d'avance
Re: [..] Pixels images identiques
Posté : dim. 08 août 2010 21:08
par Tlem
Si vos images ont bien la même dimension, alors voici ce que je ferais :
- Combien d'image = $CombienDimage
- Taille des images = $X et $Y
- Créer un tableau 2D avec pour colonne $CombienDimage et pour ligne $X*$Y (nombre de pixel)
- Créer un boucle de lecture de chaque pixel pour la première image.
- Utiliser
PixelGetColor et stocker la valeur dans le tableau correspondant ainsi que les coordonnées du pixel.
- Re-faire la boucle autant de fois qu'il y à $CombienDimage
- Filtrer le tableau en lisant ligne par ligne les valeurs obtenues.
- Si l'une des valeur est différente, alors supprimer la ligne
ou si les valeurs sont identiques alors stocker dans un autre tableau le résultat.
Bon code.

Re: [..] Pixels images identiques
Posté : dim. 08 août 2010 21:17
par periaz
Ok Super Tlem !
Il me manque une seule chose c'est quelle fonction utilisée pour ouvrir une image?
Merci encore je vais pouvoir bien avancer =)
Re: [..] Pixels images identiques
Posté : dim. 08 août 2010 21:53
par Tlem
Je n'ai pas vraiment cherché, mais je pense qu'il est possible de faire ces opérations sans afficher l'image.
Dans les fonctions _WinAPI_xxx il y a des fonctions du type _WinAPI_LoadBitmap.
Il me semble qu'un sujet du forum traitait ce genre de pratique (recherche de pixels sans afficher l'image). Vous devriez consulter l'historique du forum. Peut être y trouverez-vous ce que vous cherchez.
Re: [..] Pixels images identiques
Posté : lun. 09 août 2010 11:42
par jbnh
Re: [..] Pixels images identiques
Posté : lun. 09 août 2010 12:49
par periaz
Salut John !
Je n'ai pas très bien compris la fonction de ton petit script :s
Il n'y aurais pas un petit moyen pour accélérer la comparaison entre mes 2 images ? car il me faut actuellement 6heures pour comparer 2 images de 500x500.
Voici mon tableau en 2D :
Re: [..] Pixels images identiques
Posté : lun. 09 août 2010 13:04
par SrBelial
500 * 500 = 250 000
pas excessif comme nombre de pixels ... cependant tout dépend de la complexité de la boucle de parcours des pixels ...
plusieurs boucles imbriquées peut être ? ou bien de grosses opération mémoire répétées ? ou quelque chose d'autre qui augmente significativement la complexité ?
Re: [..] Pixels images identiques
Posté : lun. 09 août 2010 13:53
par periaz
Tu peux montrer comment tu comparerais les pixels stp
Car je crois que je suis parti sur de mauvaises bases ^^
Re: [..] Pixels images identiques
Posté : lun. 09 août 2010 15:06
par SrBelial
sans écrire de code voici un algo qui je pense ne serait pas trop gourmand :
Code : Tout sélectionner
entier nbimages = x
tableau images[nbImages][250000]
pour i allant de 0 à (250000-1) faire
pixel = images[0][i]
pour j allant de 1 à nbimages-1 faire
si images[j][i] <> pixel alors
// traitement cas ou pixel différent dans une des images, sortie de la seconde boucle, retour dans la
// première avec i qui s'incrémente, on exécute pas la fin de la première boucle, on repart au début
// (utilisation d'un booléen éventuellement pour dire qu'on est pas identique)
finsi
suivant
// traitement cas ou pixel identique dans toutes les images
suivant
j'en vois déjà s'exclamer : ohlala mais c'est pas du code !!! sépabiennnn .....
^__^
ce à quoi je réponds : je m'excuse, je n'ai pas trop le temps de le coder moi-même
je réponds à la question demandée par un algorithme simple, à transcrire en autoit (là le langage c'est une sorte de variante d'exalgo que je reprends du fin fond de ma mémoire ...)