Different results for the fundamental matrix in Matlab

I use stereo matching and as a preprocessing I'm trying to fix images without calibrating the camera. I am using a surf detector to detect and map functions on images and try to align them. After I find all the matches, I delete everything that does not lie on the epipolar lines using this function:

[fMatrix, epipolarInliers, status] = estimateFundamentalMatrix(...
  matchedPoints1, matchedPoints2, 'Method', 'RANSAC', ...
  'NumTrials', 10000, 'DistanceThreshold', 0.1, 'Confidence', 99.99);

inlierPoints1 = matchedPoints1(epipolarInliers, :);
inlierPoints2 = matchedPoints2(epipolarInliers, :);

figure; showMatchedFeatures(I1, I2, inlierPoints1, inlierPoints2);
legend('Inlier points in I1', 'Inlier points in I2');

The problem is that if I run this function with the same data, I still get different results, causing differences in the reduced inconsistency map in each run for the same data. Pull coincident points are the same, but different fill points are different in each run . Here you can see that some matches as a result are different from each other:

Inliner points

UPDATE: , RANSAC, LMedS, MSAC, .

+4
3

EDIT: , , , , , . , , . , estimateFundamentalMatrix , - , ( , , ).

RANSAC ( LMedS MSAC). () , , . , Norm8Point, 8 () NumTrials.

, , , ( ), , . , , , .

'NumTrials' ( : , ):

'NumTrials' - 500 ( ) |

, , , "NumTrials" . , Method LMedS, RANSAC, MSAC LTS.

MSAC (M- SAmple Consensus) RANSAC (RANdom SAmple Consensus). LMedS , , .

Norm8Point ( , ), , NO outliers , , . (EDIT: , Norm8Point, , - ​​ - ). , reset rng('default') estimateFundamentalMatrix. , , , .

+4

, , , - . ,

  • , .. ( : P) .

  • . , , , , .

, E ( F) , . , SURF, SURF, , 40 100 ( ).

+3

SURF - "NumOctaves" detectSURFFeatures(rgb2gray(I1),'NumOctaves',5); .

, ().

+2

Source: https://habr.com/ru/post/1525321/


All Articles