Projection prespective

etnesstt Messages postés 10 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 1 septembre 2012 - 11 mars 2012 à 18:35
mjpmjp Messages postés 115 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 29 juin 2012 - 11 mars 2012 à 20:38
salut tt le monde, je veux écrire un programme en Vb 6.0 qui détermine la correspondance entre un pixel appartenant à une image 1 représentant une scène réelle avec un autre pixel appartenant à l'image 2 représentant la scène capturée par une caméra . c'est la projection perspective j'ai trouvé la fonction CvWrapPrespective mais j'ai pas réussi à définir son syntaxe et je suis bloquée dans l'étape de détermination des coordonnées de coins de l'image 2 sachant qu'elle est n'est pas rectangulaire (inclinée) comme le montre ce lien (http://stackoverflow.com/questions/169902/projective-transformation).
j'ai fait un essai incomplet

Private Sub Command1_Click()

End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Image1_Click()
Set Picture1.Picture = LoadPicture("c:\aaaaa.jpg")
End Sub

Private Sub Picture1_Click()
Picture1.Picture = CvGetPresoectiveTransform(Picuture2.Picture)

Private Sub Image1_Click()
Picture1.CurrentX = u
Picture1.CurrentY = v
PSet (a, B), vbRed 'donner le couleur au pixel
End Sub
'PicSource.AutoSize = True
'PicSource.Picture = LoadPicture(Picture2.Picture)
'u = PicSource.ScaleX(PicSource.Picture.Width, 8, 3)
'v = PicSource.ScaleY(PicSource.Picture.Height, 8, 3)
A1 = E * I - F * H
B1 = C * H - B * I
C1 = B * F - C * E
D1 = F * G - D * I
E1 = a * I - C * G
F1 = C * D - a * F
G1 = D * H - E * G
H1 = B * G - a * H
I1 = a * E - B * D
x = (A1 * u + B1 * v + C1) / (G1 * u + H1 * v + I1)
y = (D1 * u + E1 * v + F1) / (G1 * u + H1 * v + I1)
Me.DrawWidth = une 'dessin d'un pixel unique sans modifications
PSet (x, y), vbRed
End Sub

Private Sub Picture2_Click()
Picture2.Picture = CvWrapPresoective(Picuture1.Picture)

Private Sub Image1_Click()
Picture1.CurrentX = x
Picture1.CurrentY = y
PSet (a, B), vbRed 'donner le couleur au pixel
End Sub

'PicSource.AutoSize = True
'PicSource.Picture = LoadPicture(Picture2.Picture)
'x = PicSource.ScaleX(PicSource.Picture.Width, 8, 3)
'y = PicSource.ScaleY(PicSource.Picture.Height, 8, 3)
'ici on doit determiner les coordonnes des quatre coins de image prespective



G = ((Y2 - y3) * (X1 - x0) + (y0 - Y1) * (X2 - x0) - Y2 * x3) / y3 * (X1 - X2) + x3 * (Y2 - Y1)
H = (Y2 * (x3 + x0) + y3 * (X2 - X1) - X2 * y0 + Y1 * x3) / y3 * (X1 - X2) + x3 * (Y2 - Y1)
a = X1 - x0 + G * X1
B = x3 - x0 + H * x3
C = x0
D = Y1 - y0 + G * Y1
E = y3 - y0 + H * y3
F = y0

u = (a * x + B * y + C) / (G * x + H * y + I)
v = (D * x + E * y + F) / (G * x + H * y + I)
Me.DrawWidth = une 'dessin d'un pixel unique sans modifications
PSet (u, v), vbRed

End Sub
alors s'il vous plait,j'ai vraiment besoin d'aide et je serai reconnaissante :)

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 mars 2012 à 19:24
Bonjour,

Qu'est dans ton esprit une "projection perspective" ?

Une projection, pour moi, est la projection sur un plan d'un objet (image tridimensionnelle, donc, pour toi) dans l'espace.
"perspective" ? Je ne sais pas ! Veux-tu dire non orthogonale ?

Dans tous les cas de figure : trigonométrie (à bien maîtriser d'abord) === >> application ensuite , point par point ou vecteur par vecteur !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
mjpmjp Messages postés 115 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 29 juin 2012
11 mars 2012 à 20:38
bonjour
tous çà c'est pas mon truc !
Dans l'image 2 inclinée ne peut on indiquer une droite (2 points) comme étant la base 0?
@+JP
0
Rejoignez-nous