Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

T and R estimation from essential matrix

I created a simple test application to perform translation (T) and rotation (R) estimation from the 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. Extract essential matrix like E = K2^T F K1 (K1, K2 - internal camera matrices).
  7. Use SVD to get UDV^T.

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

But when I calculate translation vector, restoredT = UZU^T, I get normalized T.

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

How to restore correct translation vector?

like image 624
Vie Avatar asked Sep 09 '10 16:09

Vie


People also ask

What is the essential matrix used for?

The Essential matrix is useful for computing the epipolar lines associated with p and p . For instance, l = ET p gives the epipolar line in the image plane of camera 2. Similarly l = Ep gives the epipolar line in the image plane of camera 1.

Why does essential matrix have rank 2?

It is not a full rank matrix, so it is singular and its determinant is zero (Proof here). The reason why F is a matrix with rank 2 is that it is mapping a 2D plane (image1) to all the lines (in image 2) that pass through the epipole (of image 2).

How many solutions arise from the decomposition of the essential matrix?

Decomposition of Essential Matrix: Validation of the four possible solutions for R and T.

What is essential matrix in computer vision?

In computer vision, the essential matrix is a matrix, that relates corresponding points in stereo images assuming that the cameras satisfy the pinhole camera model.


1 Answers

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|lambdaT)(X,Y,Z); and find lambda - than lambdaT will be correct metric translation...

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

like image 189
Vie Avatar answered Nov 15 '22 08:11

Vie