我已经使用下面显示的函数计算了基本矩阵
[fMatrix, epipolarInliers, status] = estimateFundamentalMatrix(...
matchedPoints1, matchedPoints2, 'Method', 'RANSAC', ...
'NumTrials', 10000, 'DistanceThreshold', 0.1, 'Confidence', 99.99);
但在这种情况下,每次运行程序时基本矩阵都会不断变化。
但是当我在打开的 cv 中使用下面显示的代码时,我每次运行程序时都会得到相同的基本矩阵。代码如下所示
cv::Mat fundamental=cv::findFundamentalMat(cv::Mat(selPointsLeft),cv::Mat(selPointsRight),CV_FM_RANSAC);
在这两种情况下,我都使用冲浪特征来提取匹配特征。Matchpoints1=selpointsleft 和 matchpoints2=selpointsright。 这可能是什么原因?
最佳答案
RANSAC 是“RANdom SAmple Consensus”的缩写。也就是说,我们必须预期输出矩阵会随着样本的随机选取而发生变化。
在 OpenCV 中,值是从均匀分布的随机值列表中选取的。因此,我们每次运行代码时都会得到相同的值。
在 Matlab 中,它似乎选择了一个完全随机的值,因此出现了问题。你将不得不检查是否有办法random-seed随机值的选取,我对此并不确定。
关于matlab - 基本矩阵在 matlab 中不断变化,但使用 open cv 时相同。可能是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21771005/