私はステレオマッチングを実装しており、前処理としてカメラキャリブレーションなしで画像を修正しようとしています。サーフディテクターを使用して、画像の特徴を検出して一致させ、それらを整列させようとしています。すべての一致を見つけた後、次の関数を使用して、エピポーラ線上にないものをすべて削除します。
[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');
問題は、同じデータでこの関数を実行すると、同じデータで実行するたびに異なる結果が得られ、結果の視差マップに違いが生じることです。ここでは、一部の一致の結果が異なることがわかります。
更新: 違いは RANSAC メソッドが原因であると考えましたが、LMedS、MSAC を使用すると、同じデータに対して異なる結果が得られます