Question

Je fais le calibrage de la caméra de tsai algo. Je suis matrice intrensic et extrinsèque, mais comment puis-je reconstruire les coordonnées 3D de ce inormation?

entrer dans la description d

1) je peux utiliser élimination gaussienne pour trouver X, Y, Z, W et les points sont X / W, O / W, Z / W en tant que système homogène.

2) Je peux utiliser la documentation OpenCV approche :
entrer image description ici

comme je sais u, v, R, t, je peux calculer X,Y,Z.

Toutefois, les deux méthodes se retrouvent dans différents résultats qui ne sont pas corrects.

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Si vous avez des paramètres extrinsèques alors vous avez tout. Cela signifie que vous pouvez avoir Homographie des extrinsèques (aussi appelé CameraPose). Pose est une matrice de 3x4, homographie est une matrice de 3x3, H défini comme étant

                   H = K*[r1, r2, t],       //eqn 8.1, Hartley and Zisserman

avec K étant la caméra matricielle intrinsèque, r1 et r2 étant les deux premières colonnes de la matrice de rotation, R ; t est le vecteur de traduction.

tout en divisant par Normaliser t3 .

Qu'est-ce qui se passe à la colonne r3 , ne pas l'utiliser? Non, parce qu'il est redondant car il est le produit croisé des 2 premières colonnes de pose.

Maintenant que vous avez homographie, projeter les points. Vos points 2d sont x, y. Ajoutez-un z = 1, donc ils sont maintenant 3d. les projets suivants comme:

        p          = [x y 1];
        projection = H * p;                   //project
        projnorm   = projection / p(z);      //normalize

Hope this helps.

Autres conseils

Comme bien indiqué dans les commentaires ci-dessus, la projection des coordonnées d'image 2D en 3D « l'espace de la caméra » nécessite en soi constituant les coordonnées z, car cette information est totalement perdue dans l'image. Une solution consiste à attribuer une valeur fictive (z = 1) à chacun des points de l'espace de l'image en 2D avant projection comme une réponse en Jav_Rock.

p          = [x y 1];
projection = H * p;                   //project
projnorm   = projection / p(z);      //normalize

Une alternative intéressante à cette solution factice est de former un modèle pour prédire la profondeur de chaque point avant reprojection dans la caméra espace 3D. J'ai essayé cette méthode et avait un haut degré de succès en utilisant un Pytorch CNN formé sur les boîtes de délimitation 3D de l'ensemble de données de Kitti. Serait heureux de fournir le code, mais ce serait un peu long pour l'affichage ici.

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