2011-04-06 6 views
2

J'ai un système de caméra stéréo calibré et des positions de pixels du même objet dans les vues des deux caméras. Existe-t-il un moyen simple de calculer les coordonnées du monde 3D de l'objet en utilisant OpenCv (et les paramètres intrinsèques/extrinsèques) ou dois-je traiter les lignes 3D générées pour les deux caméras et les transformations entre elles? Est-ce que CvReprojectImageTo3D peut vous aider? Merci beaucoupComment calculer les coordonnées 3D d'un point dans OpenCV

Répondre

1

Vous pouvez trianguler ces points. Pour chaque caméra, vous savez que x = IP * EP * X, avec des coordonnées d'écran homogènes x = 2D, IP = matrice de caméra intrinsèque, EP = matrice de caméra extrinsèque et coordonnées homogènes du monde X 3D. Cette formule 2 équations linéaires donné par caméra, entraînant un problème linéaire A * X = B. Pour chaque appareil, append à A:

Ps = IP * EP 
A(row 1) = x.x * Ps(row 3) - Ps(row 1) 
A(row 2) = x.y * Ps(row 3) - Ps(row 2) 
B(row 1 & 2) = 0 

Il y a 4 inconnues. Pour éviter 0 comme solution, ajoutez [0 0 0 1] à A et [1] à B.

La résolution peut être effectuée avec Jacobi method, ou quelque chose de similaire.

Je n'ai pas trouvé/ne connais pas de méthode dans OpenCV, mais la mise en œuvre de la méthode ci-dessus devrait être faisable si vous savez quelles matrices d'étalonnage sont.

Questions connexes