1

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?

Community
  • 1
  • 1
Bahamut
  • 33
  • 5

1 Answers1

0

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.

Adi Shavit
  • 16,743
  • 5
  • 67
  • 137
  • Thanks for your answer. In that way, constraints can be satisfied, but the result seems to become incorrect. Is the result pretty reliable? – Bahamut Jan 18 '17 at 00:33