Image comparaison [Résolu]

samyr69 5 Messages postés jeudi 8 mars 2007Date d'inscription 11 avril 2007 Dernière intervention - 9 avril 2007 à 15:44 - Dernière réponse : samyr69 5 Messages postés jeudi 8 mars 2007Date d'inscription 11 avril 2007 Dernière intervention
- 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 

7 réponses

Répondre au sujet
samyr69 5 Messages postés jeudi 8 mars 2007Date d'inscription 11 avril 2007 Dernière intervention - 11 avril 2007 à 10:28
+3
Utile
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 !

 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de samyr69
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 9 avril 2007 à 15:52
0
Utile
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
samyr69 5 Messages postés jeudi 8 mars 2007Date d'inscription 11 avril 2007 Dernière intervention - 10 avril 2007 à 12:15
0
Utile
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
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 10 avril 2007 à 12:34
0
Utile
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
samyr69 5 Messages postés jeudi 8 mars 2007Date d'inscription 11 avril 2007 Dernière intervention - 10 avril 2007 à 13:40
0
Utile
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
samyr69 5 Messages postés jeudi 8 mars 2007Date d'inscription 11 avril 2007 Dernière intervention - 10 avril 2007 à 14:12
0
Utile
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
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 10 avril 2007 à 21:57
0
Utile
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.