cv.findFundamentalMat - MATLAB File Help |
Calculates a fundamental matrix from the corresponding points in two images
F = cv.findFundamentalMat(points1, points2)
[F, mask] = cv.findFundamentalMat(...)
[...] = cv.findFundamentalMat(..., 'OptionName', optionValue, ...)
points1
.N = 7
.N >= 8
.N >= 8
. (default)
It needs at least 15 points. 7-point algorithm is used.N >= 8
.
7-point algorithm is used.The epipolar geometry is described by the following equation:
[p2;1]^T * F * [p1;1] = 0
where F
is a fundamental matrix, p1
and p2
are corresponding points in
the first and the second images, respectively.
The function calculates the fundamental matrix using one of four methods listed above and returns the found fundamental matrix. Normally just one matrix is found. But in case of the 7-point algorithm, the function may return up to 3 solutions (9x3 matrix that stores all 3 matrices sequentially).
The calculated fundamental matrix may be passed further to cv.computeCorrespondEpilines that finds the epipolar lines corresponding to the specified points. It can also be passed to cv.stereoRectifyUncalibrated to compute the rectification transformation.
Estimation of fundamental matrix using the RANSAC algorithm:
% initialize the points here
points1 = {[1,1],[3,1],[5,1],...}
points2 = {[2,3],[4,3],[6,3],...}
% estimate fundamental matrix
[F, mask] = cv.findFundamentalMat(points1, points2, 'Method','Ransac');