views:

20

answers:

1

I create simple test application to perform translation(T) and rotation (R) estimaiion from essential matrix.

  1. Generate 50 random Points.
  2. Calculate projection pointSet1.
  3. Transform Points via matrix (R|T).
  4. Calculate new projection pointSet2.
  5. Then calculate fundamental matrix F.
  6. Extruct essential matrix like E = K2^*F*K1 (K1, K2 - internal camera matrices).
  7. Use SVD to get UDV^.

And calculate resotedR1 = UWV^, resotedR2 = UW^T^. And see that one of them equal to initial R.

But when i calculate translation vector: restotedT = UZU^, i get normilized T =(

restotedT*max(T.x, T.y, T.z) = T =((((

How to restore correct translation vector?

+1  A: 

I understand! I don't need real length estimation on this step. When i get first image, i must set metric transformation (scale factor) or estimate it from calibration from known object. After, when i recieve second frame, i calculate normilized T, and using known 3d coordinates from first frame to solve equation (sx2, sy2, 1) = K(R|lambda*T)(X,Y,Z); and find lambda - than lambda*T will be correct metric translation...

I check it, and this is true/ So... maybe who know more simple solution?

Vie