3

I had read lectures and topics and I work on it since weeks, but I can't found the way to describe the motion of my camera. I don't want to reconstruct 3D world. I'm using OpenCV.

I have a monocular camera and an unknown word. I have the intrinsic and distortion parameters. I have features and correspondances. So I'm looking for the rotation and the translation between two frames. I would like to consider my first image as the origin of the XYZ axes.

I use the Fundamental matrix, and the Essential matrix to find the extrinsics parameters (R, T) but I'm not convinced. I had these results:

R [0.040437..., 0.116076..., -0.992416..., 0.076999..., -0.99063..., -0.112731..., -0.996211.., -0.071848.., -0.048994...] T [0.6924183...; 0.081694...; -716885...]

How can I check if they are good?

I calculated the euclidean distance to see the distance in 3D but I had erroneous values.

Please, can anyone give me some details, or guide me? I hope I explained myself well.

Regards

2 Answers2

1

By word do you mean world? This question is also not really on topic for stackoverflow since it deals with a theory and not code.

https://stackoverflow.com/faq

To answer your question. If you and R and T then you can compute the 3D coordinate for each point. From that you can reproject each point onto the other camera and compute the residual error between the observed and predicted point. If the error is within a pixel or so it's probably valid.

Community
  • 1
  • 1
lessthanoptimal
  • 2,722
  • 2
  • 23
  • 25
  • Yes I'm mean world sorry. I forgot to say I'm using OpenCV ! So with R and T, I have to found de projection matrix and use triangulatePoint() to found the 3D coordinate for each point as you said. Can I use SolvePnP() to reproject? Am I right? – user1553010 Jul 26 '12 at 08:36
1

Basically this way you will have unknown scale factor for each consecutive frame, so you can get strange values for R and T. But you can use some initialization like known motion in order to perform first triangulation of the scene. Next you can use solvePnP in order to calculate next [R|T].

Try to read about PTAMM which is one of the most interesting implementations of monocular SLAM

http://www.robots.ox.ac.uk/~bob/research/research_ptamm.html

Michael Kupchick
  • 433
  • 2
  • 10