J'ai une image de référence A avec une position connue et je veux calculer la position relative de la caméra à l'image B (c'est-à-dire tx, ty, tz en mètres). Les images sont prises avec le même appareil photo afin que la matrice de la caméra reste la même. J'utilise SIFT pour détecter et calculer les keypoints et les descripteurs dans les deux images et les faire correspondre avec FLANN. De là, je peux obtenir la matrice d'homographie que je décomposerai avec cv :: decomposeHomography (..). Cette fonction est basée sur ce document: PDF. Dans cet article, il est indiqué que la matrice de traduction est normalisée par d *, qui est la profondeur du plan.Calcul de la position de la caméra à partir de la décomposition homographique
Pour obtenir la bonne traduction, j'ai besoin de connaître la profondeur du plan. Existe-t-il un moyen d'obtenir ceci sans connaître la taille d'un objet trouvé dans l'image?
pouvez-vous expliquer la différence de "homographie euclidienne" et "homographie projective"? Lequel d'entre eux avez-vous calculé et lequel d'entre eux est assumé dans 'cv :: decomposeHomography (..)'? – Micka
Eh bien, l'homographie projective G est l'homographie dans l'espace de l'image et l'homographie euclidienne H est l'homographie dans l'espace euclidien (c'est-à-dire les coordonnées du monde). Ceux-ci peuvent être calculés par H = CamMatrix^1 * G * CamMatrix. J'obtiens de cv :: findHomography G l'homographie projective. Je suppose que le cv :: decomposeHomography (...) a besoin de l'homographie projective car il a besoin de la CamMatrix. Ai-je raison à ce sujet? – Oerdy
La sortie de la matrice de traduction de la décomposition homogène est-elle homogène? – Oerdy