gpt4 book ai didi

matlab - Matlab 中基本矩阵的不同结果

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:28 24 4
gpt4 key购买 nike

我正在实现立体匹配,作为预处理,我正在尝试在没有相机校准的情况下校正图像。我正在使用冲浪检测器来检测和匹配图像上的特征并尝试对齐它们。找到所有匹配项后,我使用以下函数删除所有不在对极线上的内容:

[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');

问题是,如果我用相同的数据运行这个函数,我仍然会得到不同的结果,导致每次运行相同数据时产生的视差图不同Pulatively 匹配的点仍然相同,但 inliners 点在每次运行中都不同。在这里你可以看到一些匹配结果不同:

Inliner Points

更新:我认为差异是由 RANSAC 方法引起的,但是使用 LMedS、MSAC,我仍然在相同的数据上得到不同的结果

最佳答案

编辑:不可否认,这只是部分答案,因为我只是在解释为什么使用这些拟合方法甚至可以做到这一点,而不是如何改进输入关键点以从一开始就避免这个问题。如其他答案中所述,关键点匹配的分布存在问题,在关键点检测阶段可以通过多种方式解决该问题。但是,相同的输入可以产生不同的结果的原因是重复执行 estimateFundamentalMatrix相同的关键点对是因为以下。 (同样,这并没有提供改进关键点以解决此问题的合理建议)。

重复执行结果不同的原因,与 RANSAC 方法(以及 LMedS 和 MSAC)有关。它们都使用随机(随机)采样,因此是不确定的。除了 Norm8Point 之外的所有方法都通过一次随机采样 8 对点来运行(最多)NumTrials

但首先请注意,对于相同的输入,您获得的不同结果并不同样合适(它们不会具有相同的残差),但搜索空间很容易导致任何此类最小值,因为优化算法不是确定性的。正如其他答案正确建议的那样,改进您的关键点,这不会成为问题,但这就是稳健的拟合方法可以做到这一点的原因以及一些修改其行为的方法。

请注意 'NumTrials' 选项的文档(添加注意:更改此选项不是解决方案,但这确实解释了行为):

'NumTrials' — Number of random trials for finding the outliers 500 (default) | integer

Number of random trials for finding the outliers, specified as the comma-separated pair consisting of 'NumTrials' and an integer value. This parameter applies when you set the Method parameter to LMedS, RANSAC, MSAC, or LTS.

MSAC (M-estimator SAmple Consensus) 是一种改进的 RANSAC (RANdom SAmple Consensus)。 LMedS 的确定性算法具有指数复杂度,因此实际上需要随机抽样。

在您决定使用 Norm8Point(同样,不是解决方案)之前,请记住此方法假定没有异常值,因此对错误匹配不稳健。尝试使用更多试验来稳定其他方法(编辑:我的意思是,而不是切换到 Norm8Point,但如果你能够在你的算法中备份然后处理输入 - 关键点 -作为第一线攻击)。此外,要重置随机数生成器,您可以在每次调用 estimateFundamentalMatrix 之前执行 rng('default')。但请再次注意,虽然这会在每次运行时强制给出相同的答案,但改善关键点分布通常是更好的解决方案。

关于matlab - Matlab 中基本矩阵的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21564581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com