Estimation de position 3D à l'aide d'une caméra 2D


9

J'ai une caméra (iPhone), j'ai un objet de contrôle 3D dans l'image dont je connais très bien les propriétés. (Mon objet de contrôle). Il y a aussi un objet secondaire en mouvement. Le but ultime est d'établir la trajectoire 3D de l'objet en mouvement pour une période de temps donnée. (Suivi)

J'aime demander, pourrais-je le savoir?

  • Distance du téléphone à l'objet de contrôle (pour les besoins de la discussion, supposons que la caméra soit à une certaine hauteur et à une certaine distance, aucune d'entre elles n'est connue mais la caméra est perpendiculaire à la surface connue)

  • L'objet secondaire où je peux localiser l'objet dans chaque trame suivante. Mon objectif est d'estimer sa trajectoire 3D comme je l'ai indiqué plus haut.

Question bonus, nous pouvons rendre le système tel que la distance du téléphone à l'objet de contrôle peut être définie (bien que cela ne soit pas préféré), cela m'aiderait-il avec le deuxième point?


Connaissez-vous la littérature dans ce domaine? Sinon, je peux recommander quelques articles, mais soyez averti: les mathématiques sont impliquées.
Emre

@emre ce serait génial si vous pouviez fournir des pointeurs. Les mathématiques ne posent aucun problème, nous adorons les mathématiques.
Ktuncer


@emre J'ai jeté un coup d'œil au document de synthèse. C'est plus pour le suivi, je peux suivre l'objet facilement, ce n'est pas le problème. Je peux identifier le pixel dans lequel se trouve l'objet. Le problème est de savoir où se trouve l'objet dans l'espace 3D. Est-ce possible? En gros, j'ai un autre objet dans l'espace 3D dont je connais les propriétés que je peux utiliser comme référentiel mais c'est tout.
Ktuncer

Je suis désolé, mauvais papier. Peut-être pouvez-vous adapter le suivi de trajectoire 3D basé sur la vision pour des environnements inconnus [PDF]? Ils utilisent une caméra stéréo; est-ce une possibilité pour vous?
Emre

Réponses:


15

Si votre objet a 6 points connus (coordonnées 3D connues, et Z ), vous pouvez calculer l'emplacement de la caméra par rapport au système de coordonnées des objets.X,YZ

Tout d'abord quelques notions de base.

Coordonnées homogènes est la présentation du vecteur de coordonnées euclidien dans lesquels ont apposé que l' on appelle le facteur d'échelle de telle sorte que la coordonnée homogène est X = ω [ X Y Z 1 ] T . Dans vos propres calculs, essayez de garder ω = 1 aussi souvent que possible (ce qui signifie que vous "normalisez" la coordonnée homogène en la divisant par son dernier élément: XX(X,Y,Z)ωX=ω[XYZ1]Tω=1 ). Nous pouvons également utiliser une présentation homogène pour des points 2D tels quex=ω[ X Y 1 ](rappelez-vous que cesω,X,YetZsont différents pour chaque point, qu'il s'agisse d'un point 2D ou 3D). La présentation homogène des coordonnées facilite les calculs.XXωx=ω[XY1]ω,X,OuiZ

La matrice de la caméra est une matrice de projection du monde 3D au capteur d'image:3×4

x=PX

est le point sur le capteur d'image (avec des unités de pixels) et X est le point 3D projeté (disons qu'il a des millimètres comme unités).xX

On se souvient que le produit croisé entre deux vecteurs 3 peut être défini comme une multiplication matrice-vecteur telle que:

v×u=(v)xu=[0v3v2v30v1v2v10]u

Il est également utile de noter que la production croisée .v×v=0

Essayons maintenant de résoudre la matrice de projection partir des équations précédentes. Permet de multiplier l'équation de projection du côté gauche avec la matrice de produits croisés x s:PX

(x)xx=(x)xPX=0

Ah! Le résultat doit être un vecteur nul. Si nous ouvrons maintenant l'équation, nous obtenons:

[0wyw0xyx0][P1,1P1,2P1,3P1,4P2,1P2,2P2,3P2,4P3,1P3,2P3,3P3,4]X=[P3,4WyP2,1XwP2,2YwP2,4Ww+P3,1XyP2,3Zw+P3,2Yy+P3,3ZyP1,4Ww+P1,1XwP3,4Wx+P1,2YwP3,1Xx+P1,3ZwP3,2YxP3,3ZxP2,4Wx+P2,1XxP1,4WyP1,1Xy+P2,2YxP1,2Yy+P2,3ZxP1,3Zy]=0

Avec un peu de refactorisation, nous pouvons obtenir la matrice de projection dehors de la matrice:P

[0000XwYwZwWwXyYyZyWyXwYwZwWw0000XxYxZxWxXyYyZyWyXxYxZxWx0000][P1P2P3]=0

est la transposée de n -ième ligne de la matrice de la caméra P . La dernière ligne de l'équation de matrice précédente (grande) est une combinaison linéaire des deux premières lignes, elle n'apporte donc aucune information supplémentaire et peut être laissée de côté.PnnP

Petite pause pour que nous puissions rassembler nos durs. Notez que l'équation de matrice précédente doit être formée pour chaque correspondance 3D-> 2D connue (il doit y en avoir au moins 6).

2×12A

A[P1P2P3]=0

[P1P2P3]=0

Heureusement, nous pouvons utiliser la décomposition en valeurs singulières (SVD) pour forcer

[P1P2P3]=1

AP[P1P2P3]TP

P

P=K[RRC]

CPP

(Hartley, Zisserman - Géométrie à vues multiples en vision par ordinateur)

X

x1=P1Xx2=P2X

(x1)xP1X=0(x2)xP2X=0

Etc.


Est-il exact de dire que votre façon de calculer la position 3D de la caméra équivaut à OpenCV resolverPnp? docs.opencv.org/2.4/modules/calib3d/doc/… (recherchez resolPnP dans la page. Je ne peux pas coller une URL avec un #)
gregoiregentil
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.