Calculer le point d’intersection de deux segments dans un espace 3D
Bonjour tout le monde,
Mon projet et de trouver la distance d'un objet en comparent 2 photos.
Un réseau de neurones s'occupe dans un premier temps, d'identifier l'objet et me renvoie deux points (haut/gauche et bas/droite) pour situer cette objet sur cette photo.
D'un autre côté, je créé une position à mon téléphone grâce au gyroscope et à l’accéléromètre.
Ensuite, je créé un horizon arbitraire sur lequel je met ma photo et je me retrouve, lorsque j'ai deux photo, avec deux yeux et deux objets, donc, deux segments qui sont:
- œil_1 à objet_1
- œil_2 à objet_2
Dans un monde idéal je retrouverai l'emplacement de mon objet en calculant le point d'intersection des deux segments.
Mais il peut y avoir des imprécisions sur la localisation du smartphone et des points renvoyer par le réseau de neurones.
Dans cette situation, les segments ne se croisent pas et je ne peux pas retrouver la position de mon objet.
Comment puis-je m'y prendre pour obliger un résultat, quitte à en baisser la précision?
Merci de votre aide.
1 pièce(s) jointe(s)
Calculer le point d’intersection de deux segments dans un espace 3D
Bonjour, :D
Je me demande si le problème n'a pas été mal formulé dès le départ, faute d'une représentation géométrique.
Citation:
Envoyé par
Pecose
... Mon projet et de trouver la distance d'un objet en comparent 2 photos.
Un réseau de neurones s'occupe dans un premier temps, d'identifier l'objet et me renvoie deux points (haut/gauche et bas/droite) pour situer cette objet sur cette photo.
D'un autre côté, je créé une position à mon téléphone grâce au gyroscope et à l’accéléromètre.
Ensuite, je créé un horizon arbitraire sur lequel je met ma photo et je me retrouve, lorsque j'ai deux photo, avec deux yeux et deux objets, donc, deux segments qui sont:
- œil_1 à objet_1
- œil_2 à objet_2 ...
Il s'agit initialement (si j'ai bien compris) de la restitution spatiale d'un objet réduit à deux points, à partir de deux photographies prises selon des directions différentes. Or un glissement de sens intervient dès la fin de l'énoncé, qui gauchit la discussion vers la recherche de la distance entre deux objets.
Supposons l'axe optique (Δ1 ou Δ2) de l'objectif maintenu horizontal, et son centre optique à distance fixe (D = OC1 = OC2) d'un point (O) proche de l'objet (AB) - on pourra par la suite y revenir.
Les images (A1, A2) du point objet (A) résultent de la projection centrale de ce point sur deux plans normaux à l'axe optique correspondant, et placés à une distance d = C1O1 = C2O2 du centre optique de l'objectif, distance très proche de la distance focale.
Voici ce que donne la projection orthogonale de l'ensemble sur un plan horizontal - cette transformation ne modifiant pas les relations données par la suite:
Il y a bien deux paires de triangles de même forme, dont la similitude s'exprime par les relations:
(H1A)/(O1A1) = (C1H1)/(C1O1) ;
(H2A)/(O2A2) = (C2H2)/(C2O2) ,
et (en convenant de poser L = OA) complétées par:
(C1H1) = (C1O) + (OH1) = -D + L.Cos(α1) ;
(C2H2) = (C2O) + (OH2) = -D + L.Cos(α2) ;
(O1A1) = x1 ; (O2A2) = x2
(H1A) = -L.Sin(α1) ; (H2A) = -L.Sin(α2) ;
α2 = α1 + φ
(il intervient des valeurs algébriques, de divers signes).
Il vient par conséquent:
L.Sin(α1) = (D - L.Cos(α1)(x1/d) ;
L.Sin(α2) = (D - L.Cos(α2)(x2/d) .
La détermination d'une dimension de l'objet (L) et de son orientation (α1 ou α2) exige de connaître deux distances longitudinales (d, D) en plus des abscisses (x1, x2) des points images.
Le fait de supposer l'objet relativement éloigné (L << D) simplifie les relations par approximation
L.Sin(α1) ~ D(x1/d) ,
L.Sin(α2) ~ D(x2/d) ,
mais ne supprime pas la difficulté précédente.
Rien n'empêche de faire coïncider le point (O) avec le point objet (B), ce qui revient à centrer les images sur (B1) et (B2); le problème demeure cependant, car il faut toujours résoudre le système d'équations à quatre inconnues (D, L, α1 , α2):
L.Sin(α1) = (D - L.Cos(α1)(x1/d) ;
L.Sin(α2) = (D - L.Cos(α2)(x2/d) ;
α2 = α1 + φ .
.
Calculer le point d’intersection de deux segments dans un espace 3D
Citation:
Envoyé par
Pecose
... J'ai 2 photos:
Depuis la photo 1 j'ai accès à la localisation de l'objectif (œil_1) et le barycentre de l'objet (objet_1);
Depuis la photo 2 j'ai accès à la localisation de l'objectif (œil_2) et le barycentre de l'objet (objet_2);
Le problème est que la position de objet_1 et objet_2 sont approximatifs et ça peut être le cas aussi pour œil_1 et œil_2 ...
Soyons précis: connais-tu la distance (GCi) séparant le barycentre (G) de chacune des positions (C1, C2) du centre optique ? L'angle φ = (C1GC2) déterminé par les directions des deux demi-droites (GC1, GC2) ?
Ou disposes-tu des coordonnées (géographiques ?) des points (C1, C2) et (G) ?
Cela peut déboucher, à distance fixe, sur des calculs intéressants.
Calculer le point d’intersection de deux segments dans un espace 3D
Citation:
Envoyé par
Pecose
Je dispose des coordonnées géographiques du smartphone, donc des coordonnées des points de vues des photos.
Photos à partir desquelles j'obtiens la position de l'objet sur la photo.
A partir de cette position sur la photo je doit en déduire la position le l'objet dans l'espace.
Il faut une donnée supplémentaire, afin de localiser l'objet photographié:
# soit les coordonnées d'un point de l'objet (par ex. le barycentre G),
# soit les directions des deux axes optiques, qui représentent les orientations dans lesquelles sont prises les photos, par exemple les angles que font ces axes avec le méridien local.
Le calcul est probablement laborieux, mais réalisable.