1

J'ai une caméra à vue unique à une certaine hauteur (h) du sol. Grâce au calibrage j'ai obtenu les paramètres intrinsèques K, la matrice de rotation et le vecteur de traduction [R | t] et, parce que j'ai un accès complet à la caméra et à l'environnement, je peux mesurer tout ce que je veux. Mon but est d'estimer la profondeur d'un pixel [u, v] sur la caméra étant donné que je sais que le pixel est sur le sol (donc il est à y = -h par rapport à la caméra). Compte tenu de cette contrainte, je l'ai fait ce qui suit (sans succès):Estimation de la profondeur d'un pixel 2D donné intrinsèque, extrinsèque, et une contrainte de Y = 0

  • créer un nouveau point 3D P1 à partir de [u, v] et les paramètres de la caméra + longueur focale: [u - cx, v - cy, f ]
  • multiplier P par l'inverse de ma matrice de la caméra K et appeler le résultat P2
  • multiplier P2 par l'inverse du [R | matrice et appelle le résultat P3
  • P3 t] est un vecteur 4x1, de sorte on le normalise et l'amène à 3x1 [X1, Y1, Z1]. Ce point devrait être la projection coordiante mondiale de mon [u, v] Le point
  • Solve X et Z lorsque Y = -h de la manière suivante:
    • x = x1 * (-h/y1)
    • y = z1 * (-h/y1)

Malheureusement, il ne marche pas regarder à droite! J'ai réglé ce problème pendant deux semaines maintenant, alors ce serait vraiment génial d'obtenir de l'aide de la part de la communauté. Je suis sûr que c'est quelque chose d'évident que je rate.

Merci encore

Répondre

2

L'image homogène Coordinate est P1 = [u,v,1] ou [f*u,f*v,f]. La multiplication par l'inverse de la matrice de la caméra vous donne un rayon le long duquel se trouve le point 3D. P2 ~= K⁻¹ * P1 (~= is equality up to a scale factor)

Supposons que la caméra est située à C (qui est le (0,0,0,1) dans le système de coordonnées de la caméra), et le vecteur P2 a la forme [x,y,z,0]. (Le zéro à la fin rend la traduction invariante!)

Ensuite, le point 3D que vous recherchez est situé à C + k*P2 et vous devez résoudre pour la variable k.

P3 = Rt⁻¹ * (C + k*P2) 
P4 = C2 + k * P3 

C2 est la position de la caméra en coordonnées mondiales. P3 est le vecteur en coordonnées mondiales. P4 est votre point Y=-h

Enfin, branchez votre contrainte Y=-h et calculer k en utilisant les composants y:

k = (-h - C2_y)/P3_y