OpenCV Q&A Forum - RSS feedhttp://answers.opencv.org/questions/OpenCV answersenCopyright <a href="http://www.opencv.org">OpenCV foundation</a>, 2012-2018.Fri, 17 May 2013 11:14:47 -0500Good Calibration for Essential matrix estimationhttp://answers.opencv.org/question/13550/good-calibration-for-essential-matrix-estimation/Hello,
I think I'm having some problems with camera calibration. I'm using the sample calibration program provided with several (20) images taken with an iPhone. I get the camera intrinsic matrix K and the distortion coefficients R. I then load such matrices into another program. This program allows the user to select matching features in 2 different undistorted images from which I can take the Fundamental Matrix F and using K I can get the Essential matrix E = K.t() * F * K.
Afterwards, I test both F and E to check for the epipolar constraint, i.e.: x'*F*x=0 or x'*E*x= where x and x' are the corresponding the user selected. For every matching point, the test for the fundamental matrix yields values very close to 0, while the one for the essential matrix returns values that are as large as 2694990. This is obviously wrong.
From this I can conclude that I must be doing something wrong. I believe the computation for E is right, so that must leave the calibration. What do I need to do for a good calibration?
ThanksFri, 17 May 2013 08:39:08 -0500http://answers.opencv.org/question/13550/good-calibration-for-essential-matrix-estimation/Answer by RaulPL for <p>Hello,</p>
<p>I think I'm having some problems with camera calibration. I'm using the sample calibration program provided with several (20) images taken with an iPhone. I get the camera intrinsic matrix K and the distortion coefficients R. I then load such matrices into another program. This program allows the user to select matching features in 2 different undistorted images from which I can take the Fundamental Matrix F and using K I can get the Essential matrix E = K.t() * F * K.</p>
<p>Afterwards, I test both F and E to check for the epipolar constraint, i.e.: x'<em>F</em>x=0 or x'<em>E</em>x= where x and x' are the corresponding the user selected. For every matching point, the test for the fundamental matrix yields values very close to 0, while the one for the essential matrix returns values that are as large as 2694990. This is obviously wrong.</p>
<p>From this I can conclude that I must be doing something wrong. I believe the computation for E is right, so that must leave the calibration. What do I need to do for a good calibration?</p>
<p>Thanks</p>
http://answers.opencv.org/question/13550/good-calibration-for-essential-matrix-estimation/?answer=13560#post-id-13560Hi, the epipolar constrain (as you mentioned) is **x2'Fx1=0** where **x2'** is the coordinate of the point in the second image and **x1** is the coordinate of the point in the first image.
If you use the essential matrix the epipolar constrain is **X2'EX1=0** where **X2'** is the *normalized* coordinate of the point in the second image and **X1** is the *normalized* coordinate of the point in the first image.
You obtain the normalized coordinate with this:
X = inverse(K)*x
That's why I think you are getting a big number using the essential matrix.
Fri, 17 May 2013 11:14:47 -0500http://answers.opencv.org/question/13550/good-calibration-for-essential-matrix-estimation/?answer=13560#post-id-13560