0

EDIT:Retour projection point de monde 3D à nouveau vue plan image

Ce que j'ai: intrinsics de la caméra, extrinsèque de l'étalonnage, l'image 2D et carte de profondeur

Ce que je besoin: vue virtuelle 2D images

J'essaie de générer une nouvelle vue (vue de droite) pour le rendu basé sur l'image en profondeur. La raison en est que seule l'image de gauche et la carte de profondeur sont disponibles sur le récepteur qui doit reconstruire la vue de droite (see image).

Je veux savoir si ces mesures vont me donner le résultat souhaité ou ce que je devrais faire à la place,

Tout d'abord, en utilisant la boîte à outils d'étalonnage de l'appareil photo pour Matlab par Caltech, les intrinsèques, les matrices extrinsèques peuvent être obtenues.

Ensuite, ils peuvent être mis en correspondance avec les points du monde 3D en utilisant des paramètres d'étalonnage par cette méthode « http://nicolas.burrus.name/index.php/Research/KinectCalibration#tocLink2 »

Maintenant, je veux revenir projet à un nouveau plan d'image (vue à droite). La vue de droite est simplement une translation de gauche et pas de rotation à cause de la configuration. Comment faire cette reconstruction? Puis-je estimer R et T à partir de l'outil d'étalonnage stéréo MATLAB et transformer tous les points de la vue de gauche originale en vue de droite en utilisant P2 = R * P1 + T, P1 et P2 sont des points d'image du point de monde 3D P dans les plans respectifs.

Une idée et de l'aide sont très appréciées, serait reformuler/ajouter des détails si la question n'est pas claire.

+0

Qu'avez-vous déjà fait? Quel est votre problème exact? – obchardon

+0

J'essaie de trouver un moyen d'implémenter mon problème! Le problème est de savoir comment créer une vue de droite d'une scène si je connais la vue de gauche, la carte de profondeur, les valeurs intrinsèques de la caméra, les valeurs R et T –

Répondre

0

(réponse * Théorique)

Vous devez définir ce que R et T signifie. Si je comprends bien, c'est la Roto-traduction de votre caméra principale gauche. Si vous pouvez mapper un point P (comme votre P1 ou P2) dans l'espace 3D, la correspondance avec un point m (je ne l'appelle pas p pour éviter toute confusion) dans votre caméra gauche est (sauf si vous utilisez une convention différente (pseudocode)

m = K[R|t]*P 

qui

P1 = (X,Y,Z,1) 
m = (u',v',w) 

mais vous voulez les coordonnées 2D de sorte que les coordonnées de votre appareil photo à gauche sont:

u = u'/w 
v = v'/w 

si vous avez déjà traduit roto-P1 en P2 (pas très utile) est égal à (p seudocode)

    1 0 0 0 
m = K[I|0]*P = K*[0 1 0 0] * P2 
        0 0 1 0 

On suppose que c'est la relation théorique avec un point 3D P avec son point 2D dans une image m, vous pouvez penser à vous avoir la caméra droit dans une position différente. S'il n'y a que la translation par rapport à la caméra de gauche, la caméra de droite est traduite de T2 par rapport à la caméra de gauche et roto-traduite de R/T + T2 par rapport au centre du monde. Donc le m 'point proiecté dans votre caméra droite doit être (en supposant que les caméras sont égales signifie avoir les mêmes intrinsèques K)

m' = K [R | T + T2] * P = K [I | T2] * P2 I est la matrice d'identité.

Si vous souhaitez transformer m directement en m 'avec des points 3D, vous devez implémenter la géométrie épipolaire.


  • Si les caméras sont différentes avec différents K, si l'étalonnage de R et T n'a pas le même niveau de calibration de K, cette équation ne fonctionne pas. Si le calibrage n'est pas bien fait, cela pourrait fonctionner mais avec des erreurs.
+0

Merci pour votre explication! –

+0

@PriyamvadhaKrishnakumar vous êtes les bienvenus – marcoresk

+0

Est-ce que les paramètres du vecteur de traduction représentent la translation suivant les axes X, Y, Z? –