使用 MATLAB 从多视图中获取运动结构
Posted
技术标签:
【中文标题】使用 MATLAB 从多视图中获取运动结构【英文标题】:Structure From Motion From Multiple Views w/ MATLAB 【发布时间】:2017-06-24 04:30:55 【问题描述】:在谈到运动结构这一主题时,我是个新手。我一直在尝试遵循 MathWorks 网页中的 SFM 教程:LINK。
但是,运行代码后,我收到以下错误消息:
Warning: Maximum number of trials reached. Consider increasing the maximum
distance or decreasing the desired confidence.
> In vision.internal.ransac.msac (line 136)
In estimateEssentialMatrix (line 161)
In helperEstimateRelativePose (line 43)
In PERFORM_SFM (line 70)
Error using helperEstimateRelativePose (line 70)
Unable to compute the Essential matrix
Error in PERFORM_SFM (line 70)
[relativeOrient, relativeLoc, inlierIdx] = helperEstimateRelativePose(...
有人可以帮我理解为什么会这样吗?有人可以给我一个不同的方法吗?
【问题讨论】:
您是否考虑过增加最大距离或降低所需的置信度 我不知道该怎么做,因此问题... :) @troymyname00 相同的教程和错误 :-) 你知道如何解决吗? 不...我没有。我切换到 Python,并找到了一个可以轻松执行 SFM 的开源工具。 【参考方案1】:我刚刚设法解决了同样的错误。就我而言,似乎我使用了太多图像,因此得到的方程系统是超定的,因此无法计算矩阵。我刚刚测试了许多与示例类似的图像(在我的情况下为 6 个)和足够的相机在帧之间移动,并且它的工作原理应该是这样。
希望这会有所帮助。
【讨论】:
【参考方案2】:正如@Ander Biguri 所说,考虑增加最大距离或降低所需的置信度。您可以通过修改 Matlab 内置函数 helperEstimateRelativePose.m 来做到这一点:line 43。然后,您可以根据需要添加任意数量的图像。修改后应该是这样的:
[E, inlierIdx] = estimateEssentialMatrix(matchedPoints1, matchedPoints2,...
cameraParams, 'Confidence', 50, 'MaxDistance', 5);
但要小心编辑内置函数。就我而言,我修改了函数并以另一个名称保存到另一个文件夹中,并将该文件夹添加到路径中。 我希望这会对某人有所帮助。
【讨论】:
以上是关于使用 MATLAB 从多视图中获取运动结构的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 中从多对多关系的一对多关系中获取项目?