Image comparaison

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

7 réponses

samyr69 Messages postés 5 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 11 avril 2007
11 avril 2007 à 10:28
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 !

 
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 avril 2007 à 15:52
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 ?
0
samyr69 Messages postés 5 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 11 avril 2007
10 avril 2007 à 12:15
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 avril 2007 à 12:34
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 !!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
samyr69 Messages postés 5 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 11 avril 2007
10 avril 2007 à 13:40
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
0
samyr69 Messages postés 5 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 11 avril 2007
10 avril 2007 à 14:12
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.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 avril 2007 à 21:57
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
0
Rejoignez-nous