Répondre

1

Vous ne pouvez le faire à l'échelle, sauf si vous avez un moyen séparé pour résoudre échelle, par exemple en observant un objet de taille connue, ou en ayant un capteur (par exemple LIDAR) vous donner la distance d'un plan de masse ou d'un objet visible dans les deux vues.

Cela dit, la solution est assez facile. Vous pourriez le faire en calculant puis décomposant la matrice essentielle, mais voici une manière plus intuitive. Soit xl et xr deux pixels appariés dans les deux vues dans des coordonnées d'image homogènes, et soit X leur point de monde 3D correspondant, exprimé en coordonnées de caméra de gauche. Soit Kli et Kri l'inverse des matrices gauche et droite Kl et Kr. Notons avec R et t la transformation des coordonnées de la caméra de droite vers la gauche. Il est alors:

X = sl * Kli * xl = t + sr * R * Kri * xr 

où sl et sr sont des échelles pour les rayons gauche et droite rétroprojection au point X de la caméra à gauche et à droite.

La deuxième égalité ci-dessus représente 3 équations scalaires dans 5 inconnues: les 3 composantes de t, sl et sr. En fonction des informations supplémentaires que vous possédez, vous pouvez les résoudre de différentes manières. Par exemple, si vous connaissez (par exemple des mesures LIDAR) la distance entre les caméras et X, vous pouvez supprimer les termes d'échelle des équations ci-dessus et résoudre directement. S'il y a un segment de longueur connue [X1, X2] qui est visible dans les deux images, vous pouvez écrire deux équations comme ci-dessus et résoudre directement.

+0

(Malheureusement) Je connais les deux méthodes que vous avez décrites. J'espérais qu'il y aurait un moyen d'obtenir l'échelle * précise * (par exemple en mètres). Est-ce que quelque chose comme ça serait possible si je connaissais en plus la taille physique du pixel ou si j'avais plusieurs photos de la scène (avec des points correspondants et des rotations relatives)? Je vous remercie. – sarasvati

+1

Vous ne pouvez jamais extraire de l'échelle des images sans informations supplémentaires: vos caméras peuvent être espacées d'un mètre et regarder votre cuisine, ou espacées de 10 cm et regarder un modèle à l'échelle 1:10 de votre cuisine. Si vous pouviez faire la différence, Star Wars ne serait pas un bon film et l'industrie des VFX n'existerait pas. –