Essential Matrix from Fundamental Matrix in OpenCV
3d-reconstruction, camera-calibration, computer-vision, opencv
Solution
I don't know where you got that formulae, but the correct one is `E = K'^T . F . K` (see Hartley & Zisserman, §9.6, page 257 of second edition)
`K` is the intrinsic camera parameters, holding scale factors and positions of the center of the image, expressed in pixel units.
| \alpha_u 0 u_0 |
K = | 0 \alpha_u v_0 |
| 0 0 1 |
(sorry, Latex not supported on SO)
Edit : To get those values, you can either:
- calibrate the camera
- compute an approximate value if you have the manufacturer data. If the lens is correctly centered on the sensor, then u_0 and v_0 are the half of, respectively, width and height of image resolution. And `alpha = k.f` with f: focal length (m.), and k the pixel scale factor: if you have a pixel of, say, 6 um, then `k=1/6um`. Example, if the lens is 8mm and pixel size 8um, then `alpha=1000`
Computing E
Sure, there are several of ways to compute E, for example, if you have strong-calibrated the rig of cameras, then you can extract R and t (rotation matrix and translation vector) between the two cameras, and E is defined as the product of the skew-symmetric matrix t and the matrix R.
But if you have the book, all of this is inside.
Edit Just noticed, there is even a Wikipedia page on this topic!
Problem
I've already computed the Fundamental Matrix of a stereo pair through corresponding points, found using SURF. According to Hartley and Zisserman, the Essential Matrix is computed doing: ``` E = K.t() * F * K ``` How I get K? Is there another way to compute E?