Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between the fundamental, essential and homography matrices?

I have two images that are taken from different positions. The 2nd camera is located to the right, up and backward with respect to 1st camera.

So I think there is a perspective transformation between the two views and not just an affine transform since cameras are at relatively different depths. Am I right?

I have a few corresponding points between the two images. I think of using these corresponding points to determine the transformation of each pixel from the 1st to the 2nd image.

I am confused by the functions findFundamentalMat and findHomography. Both return a 3x3 matrix. What is the difference between the two?

Is there any condition required/prerequisite to use them (when to use them)?

Which one to use to transform points from 1st image to 2nd image? In the 3x3 matrices, which the functions return, do they include the rotation and translation between the two image frames?

From Wikipedia, I read that the fundamental matrix is a relation between corresponding image points. In an SO answer here, it is said the essential matrix E is required to get corresponding points. But I do not have the internal camera matrix to calculate E. I just have the two images.

How should I proceed to determine the corresponding point?

like image 803
Karthik Murugan Avatar asked Apr 18 '13 16:04

Karthik Murugan


People also ask

What is the difference between fundamental matrix and essential matrix?

Thus both the Essential and Fundamental matrices completely describe the geometric relationship between corresponding points of a stereo pair of cameras. The only difference between the two is that the former deals with calibrated cameras, while the latter deals with uncalibrated cameras.

What does the fundamental matrix do?

The fundamental matrix is a relationship between any two images of the same scene that constrains where the projection of points from the scene can occur in both images.

What is homography used for?

In the field of computer vision, any two images of the same planar surface in space are related by a homography (assuming a pinhole camera model). This has many practical applications, such as image rectification, image registration, or camera motion—rotation and translation—between two images.


2 Answers

Without any extra assumption on the world scene geometry, you cannot affirm that there is a projective transformation between the two views. This is only true if the scene is planar. A good reference on that topic is the book Multiple View Geometry in Computer Vision by Hartley and Zisserman.

If the world scene is not planar, you should definitely not use the findHomography function. You can use the findFundamentalMat function, which will provide you an estimation of the fundamental matrix F. This matrix describes the epipolar geometry between the two views. You may use F to rectify your images in order to apply stereo algorithms to determine a dense correspondence map.

I assume you are using the expression "perspective transformation" to mean "projective transformation". To the best of my knowledge, a perspective transformation is a world to image mapping, not an image to image mapping.

like image 194
carlito Avatar answered Oct 19 '22 15:10

carlito


There are only two cases where the transformation between two views is a projective transformation (ie a homography): either the scene is planar or the two views were generated by a camera rotating around its center.

like image 29
Giuliano Avatar answered Oct 19 '22 14:10

Giuliano