0

I'm trying to calculate translation between two images. What I'm essentially doing is:

CameraMatrix = LoadCameraMatrix()
FundamentalMatrix = CalculateFundamentalMatrix(points1, points2)
EssentialMatrix = CalculateEssentialMatrix(FundamentalMatrix, CameraMatrix)
translation, rotation = GetTranslationRotationFromEssential(EssentialMatrix)

print(translation)
[[-0.29258711]
 [-0.49736601]
 [ 0.81671282]]

From this, I get rotation matrix and translation vector, but I'm struggling to understand what translation vector means. I understand I can't get real units like translation in meters so it has to be some sort of ratio.

So my question is what do these numbers mean and how can I possibly convert the vector to real world units considering I know sizes of objects on the image.

Miki
  • 40,887
  • 13
  • 123
  • 202
Dominik Ficek
  • 544
  • 5
  • 18

1 Answers1

0

Translation vector represents the distance between two cameras or between consecutive camera poses in case of images that comes from the same camera. As you cannot determine the scale from point correspondences, translation vector denotes only the direction of vector between two camera poses, this vector is normalized (its length is equal to 1).

If you know the sizes of objects you can calculate the distance between certain points that belongs to the object and compare it with the distance between them in pixels to scale translation vector. See this question or this question that address the same issue.

Piotr Siekański
  • 1,665
  • 8
  • 14
  • Thanks for your answer. The vector is in pixels? That just sounds weird to me, my output is also pretty small for that, I moved the camera quiet a bit, also pixels in float? Do you know any docs where I can read more about this topic? – Dominik Ficek Oct 28 '19 at 13:06
  • See my updated answer. I hope it answers your question. – Piotr Siekański Oct 28 '19 at 13:18