Question

Avec cette Boîte à outils J'effectuait l'étalonnage de mon appareil photo.

Cependant, la boîte à outils sort des résultats sous forme de matrice et, en tant que noob, je ne comprends pas vraiment les trucs mathématiques.

La matrice est sous la forme suivante.

alt text

Lorsque R est une matrice de rotation, T est un vecteur de traduction.

Et ce sont les résultats que j'ai obtenus de la boîte à outils. Il produit des valeurs en pixels.

-0.980755   -0.136184  -0.139905  217.653207
0.148552    -0.055504  -0.987346  995.948880
0.126695    -0.989128  0.074666  371.963957
0.000000    0.000000  0.000000  1.000000

En utilisant ces données, puis-je savoir combien mon appareil photo est tourné et la distance de l'informatique de l'objet d'étalonnage?

Était-ce utile?

La solution

La partie de distance est facile. La traduction de l'origine est donnée par les trois premiers nombres de la colonne la plus à droite. Cela représente respectivement la traduction dans les directions x, y et z. Dans votre exemple, la position de la caméra p = (pX, Py, Pz) = (217.653207, 995.948880, 371.963957). Vous pouvez prendre la distance euclidienne entre l'emplacement de la caméra et l'emplacement de l'objet d'étalonnage (CX, Cy, Cz). C'est ce serait juste sqrt ((pX-CX)2 + (py-Cy)2 + (pz-Cz)2 )

La partie la plus difficile concerne la rotation qui est capturée dans les éléments 3X3 supérieure gauche de la matrice. Sans savoir exactement comment ils sont arrivés à cela, vous avez un peu de chance. C'est-à-dire qu'il n'est pas facile de convertir cela en Angles d'Euler, si c'est ce que tu veux. Cependant, vous pouvez transformer ces éléments en un Rotation du quaternion Ce qui vous donnera le vecteur d'unité unique et l'angle pour faire pivoter la caméra à cette orientation. Les spécificités du calcul sont fournies ici. Une fois que vous avez la rotation du quaternion, vous pouvez facilement l'appliquer aux vecteurs n = (0, 0, 1), up = (0, 1, 0) et à droite = (1, 0, 0) pour obtenir la normale (direction La caméra est pointée), les vecteurs de haut en bas. Le vecteur droit n'est utile que si vous êtes intéressé à courir la caméra à gauche ou à droite à partir de sa position actuelle.

Autres conseils

Je suppose que le code utilise le 'la norme'Formation - alors vous trouverez plus de détails dans le Docs de la bibliothèque OpenCV ou leur livre.

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