Image comparaison [Résolu]

Messages postés
5
Date d'inscription
jeudi 8 mars 2007
Dernière intervention
11 avril 2007
- 9 avril 2007 à 15:44 - Dernière réponse :
Messages postés
5
Date d'inscription
jeudi 8 mars 2007
Dernière intervention
11 avril 2007
- 11 avril 2007 à 10:28
    Bonjour à tous j' essaye de dévellopper une simple fonction de comapraison  d' image avec 2 picureBox, je me sert de l' API gdi32.dll
mais j' aimerais bien savoir si ce que je fais est bon pour afficher l' image detecter dans une 3° Picture Box merci Par avance!!!

 Public Sub Comparaison(ByRef Image_Actuelle As System.Windows.Forms.PictureBox, ByRef Image_Precedente As System.Windows.Forms.PictureBox, ByRef Image_Destination As System.Windows.Forms.PictureBox)

        'Prendre Image actuelle
        Dim Retour As Integer
        Static PremierAppel As Boolean
     
        Call Capture(Image_Actuelle) // prend image en cours

        If Not PremierAppel Then
            PremierAppel = True
            Svg_Image_Precedente = Image_Actuelle.Image
        Else
            Image_Precedente.Image = Svg_Image_Precedente
            Svg_Image_Precedente = Image_Actuelle.Image
            Retour = BitBlt(Image_Destination.Handle, 0, 0, Image_Actuelle.ClientRectangle.Width, Image_Actuelle.ClientRectangle.Height, Image_Precedente.Handle, 0, 0, SRCCOPY)
            Retour = BitBlt(Image_Destination.Handle, 0, 0, Image_Actuelle.ClientRectangle.Width, Image_Actuelle.ClientRectangle.Height, Image_Actuelle.Handle, 0, 0, SRCINVERT)
        End If

    End Sub
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
5
Date d'inscription
jeudi 8 mars 2007
Dernière intervention
11 avril 2007
- 11 avril 2007 à 10:28
3
Merci
Bonjour,

Ben en fait c' est dans le cadre d' un projet donc j' ai pas trop le
choix et au contraire je pourais justement dévelloppé ces contraintes
les mettres en valeur.

Mais c'  est vrai que tu as raison mon image sera jamais pareil. meme avec une moyenne.

Justemement je voulais te demandé sais tu comment atténuer les pérturbations d' une webCam , car mon image à quelque parasite on voit bien que la la texture est pas bonne donc si à la base je peus supprimer ça  cela  serait bien !

 

Merci samyr69 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de samyr69
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
- 9 avril 2007 à 15:52
0
Merci
Houla !
Que cherches-tu à faire ?
Pour comparer valablement deux images, il te faudrait nécessairement comparer chaque pixel de l'une à chaque pixel de l'autre


Celà voudrait dire une double boucle X, Y avec lecture qye chacune des  images


Je comprends mal le but d'une telle manoeuvre et, surtout, ce que tu voudrais finalement afficher ?
Commenter la réponse de jmfmarques
Messages postés
5
Date d'inscription
jeudi 8 mars 2007
Dernière intervention
11 avril 2007
- 10 avril 2007 à 12:15
0
Merci
Merci de ta réponse [auteurdetail.aspx?ID=615490 jmfmarques]

En fait je veux comparer deux images  provenant d' une webCam à l' instant T et T-1image
et afficher les différences
et j' ai vu la  bibliothèques gdi32.dll et pas mal de personnes l' utilise

elle comprend  notamment BitBlt(.....)? mais je ne sais pas à quoi elle sert réllement . Je pensais qu' elle comparais mes images mais je  me trompre surement
elle dois copier une picture dans une autre

Par contre Je suis d' accord avec toi sur le fait de balayer les deux images.
pour comparer les couleurs.
il y a des méthodes getPixel et setPixel.

Si quelque pouvait m' aider sur cette DLL ce serait sympa Merci

Merci de m' avoir répondu
Commenter la réponse de samyr69
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
- 10 avril 2007 à 12:34
0
Merci
Bonjour,

J'espère que tu réalises que tes images provenant d'une Webcam (donc constamment exposées aux infimes modification d'éclairage, mouvements, etc...) tu as toutes les chances d'avoir la totalité de tes pixels différents entre un instant T1 et un instant T2) ?

Si tu y tiens vraiment (mais réfléchis bien avant à ce que je viens d'écrire), il te suffit de faire une double boucle selon ce mécanisme :
For I = 1 to la_largeur
  For J = 1 to la_hauteur
     relevé de la couleur aux coordonnées i,j de l'image T1
     relevé de la couleur aux coordonnées i,j de l'image T2
     si valeurs égales : ignorer
     si valeurs différentes : faire ce que tu veux faire ...
 next j
next I

Reste que (j'insiste) tous les pixels seront à 999 chances sur mille différents !!!!
Commenter la réponse de jmfmarques
Messages postés
5
Date d'inscription
jeudi 8 mars 2007
Dernière intervention
11 avril 2007
- 10 avril 2007 à 13:40
0
Merci
je vois le truc
celà signifique si je déclenche une capture par la suite pour detecter un mouvement je vé avoir autant de capture que d' image prise par ma webCam.

Mais alors comment faire à tu une idée ? une astuce? pour éléminer ce phénomène.
c' est du perturbation qu' on voit sur l' image.???
on peut pas atténuer ca??

Merci
Commenter la réponse de samyr69
Messages postés
5
Date d'inscription
jeudi 8 mars 2007
Dernière intervention
11 avril 2007
- 10 avril 2007 à 14:12
0
Merci
Je pense avoir uen idée :

parcours T1 par bloc de 3*3 (x, y) pixels faire la moyenne --> m1
parcours T2 par bloc de 3*3 (x, y) pixels faire la moyenne--> m2
faire la différence m1 - m2 et comparer à un seuil. qui  détectera un mouvement ou pas.
comme ca je compare pas au pixel mais à un bloc.
ca éléminera pas mal de cas.
Commenter la réponse de samyr69
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
- 10 avril 2007 à 21:57
0
Merci
Ben vas-y donc comme tu le sens; ma foi.... mais je te l'aurai dit clairement : tu es en train de perdre ton temps... (relis).... Tes pixels seront tous différents entre 2 prises, à moins que tu n'inventes un éclairage constant (brevet à déposer, alors), supprimes toutes les vibrations (même les plus infimes et non perceptibles par l'homme), tous les reflets (qui varieront avec le déplacement d'un seul cheveu), supprimes tous les bruits (générateurs de micro-vibrations), même inaudibles, etc...

Alors et pour en finir : dirige ta caméra, tout bêtement, vers un fon bleu uni, puis, sans rien bouger ni même respirer, filme puis compare pixel par pixel 2 images qui, selon toi, devraient être identiques (elles ne le seront qu'à l'oeil)... et tire les conclusions qui s'imposent, ma foi
Commenter la réponse de jmfmarques

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.