Question

J'essaie de calculer les coordonnées 3D à partir de plusieurs paires de deux points de vue.
Tout d'abord, j'ai utilisé la fonction matlab estimateFundamentalMatrix() pour obtenir le F des points appariés (Nombre > 8) qui est :

F1 =[-0.000000221102386   0.000000127212463  -0.003908602702784
     -0.000000703461004  -0.000000008125894  -0.010618266198273
      0.003811584026121   0.012887141181108   0.999845683961494]

Et mon appareil photo - pris ces deux photos - était pré-calibré avec la matrice intrinsèque :

K = [12636.6659110566, 0, 2541.60550098958
     0, 12643.3249022486, 1952.06628069233
     0, 0, 1]

A partir de ces informations j'ai ensuite calculé la matrice essentielle en utilisant :

E = K'*F*K

Avec la méthode de SVD, j'ai finalement obtenu les matrices de transformation projective :

P1 = K*[ I | 0 ] 

et

P2 = K*[ R | t ]

R et t sont:

R = [ 0.657061402787646 -0.419110137500056  -0.626591577992727
     -0.352566614260743 -0.905543541110692   0.235982367268031
     -0.666308558758964  0.0658603659069099 -0.742761951588233]

t = [-0.940150699101422
      0.320030970080146
      0.117033504470591]

Je sais qu'il devrait y avoir 4 solutions possibles, cependant, mes coordonnées 3D calculées semblaient incorrectes.
J'ai utilisé l'appareil photo pour prendre des photos d'un objet PLAT avec des points marqués.J'ai fait correspondre les points à la main (ce qui signifie qu'il ne devrait pas y avoir d'erreur évidente concernant la matière première).Mais le résultat s’est avéré être une surface avec un peu de bandes.
Je suppose que cela pourrait être dû à la raison pour laquelle les images n'ont pas été traitées avec des distorsions (mais en fait, je me souviens que je l'ai fait).

Je veux juste savoir si cette méthode permet de résoudre le problème de reconstruction 3D ?Surtout quand on connaît déjà la matrice intrinsèque de la caméra.

Edité par JCraft le 4 août :J'ai refait le processus et j'ai obtenu quelques photos montrant le problème, j'écrirai une autre question avec des détails puis publierai le lien.

Edité par JCraft le 4 août :J'ai posté une nouvelle question: La caméra calibrée obtient des points correspondants pour la reconstruction 3D, le test idéal a échoué.Et @Schorsch apprécie vraiment votre aide pour formater ma question.Je vais essayer d'apprendre à faire des entrées dans SO et aussi essayer d'améliorer ma grammaire.Merci!

Était-ce utile?

La solution

Si vous ne disposez que de la matrice fondamentale et des éléments intrinsèques, vous ne pouvez obtenir une reconstruction qu'à grande échelle.C'est votre vecteur de traduction t dans certaines unités inconnues.Vous pouvez obtenir les points 3D en unités réelles de plusieurs manières :

  • Vous devez disposer de points de référence dans le monde avec des distances connues entre eux.De cette façon, vous pouvez calculer leurs coordonnées dans vos unités inconnues et calculer le facteur d'échelle pour convertir vos unités inconnues en unités réelles.
  • Vous devez connaître les caractéristiques extrinsèques de chaque caméra par rapport à un système de coordonnées commun.Par exemple, vous pouvez avoir un modèle d'étalonnage en damier quelque part dans votre scène à partir duquel vous pouvez détecter et calculer les extrinsèques.Regarde ça exemple.À propos, si vous connaissez les extrinsèques, vous pouvez calculer directement la matrice fondamentale et les matrices de projection de la caméra, sans avoir à faire correspondre les points.
  • Vous pouvez effectuer un calibrage stéréo pour estimer le R et le t entre les caméras, ce qui vous donnerait également les matrices Fondamentale et Essentielle.Regarde ça exemple.

Autres conseils

Les objets plats sont des surfaces critiques, il est impossible d'atteindre votre objectif à partir d'eux.essayez d'ajouter deux (ou plus) points hors de l'avion (voir Hartley et Zisserman ou un autre texte sur le sujet si vous êtes toujours intéressé)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top