Camera matrix from essential matrix

1.3k Views Asked by At

I am trying to extract camera matrix from essential matrix. I found some answers about this.

determine camera rotation and translation matrix from essential matrix

Rotation and Translation from Essential Matrix incorrect

In these answers, they suggest me to use newE where [U,S,V] = svd(E) and newE = U*diag(1,1,0)*Vt. I don't understand why I need to use newE. As I know, singular values are unique. So changing singular values to diag(1,1,0) seems to make E to completely different values.

I read 'Multiple View Geometry in Computer Vision' also, but it just refers to the ideal case, i.e., singular values are (1,1,0). I didn't find the reason of using newE.

Please can anyone explain me why people use newE?

1

There are 1 best solutions below

1
On

If I understand your question correctly, then since you source data (and thus E) is usually noisy real world data, then by using diag(1,1,0) you are constraining the matrix to be of the correct scale and rank and algebraically enforcing the geometric constraints.

Wikipedia also a has a nice section explaining this.