1

我目前正在开展一个项目,该项目以多视图立体方法处理基于一组图像的重建。因此,我需要知道空间中的几个图像。我使用 surf 找到匹配的特征,并从对应关系中找到基本矩阵。

现在问题来了:可以用 SVD 分解基本矩阵,但这会导致 4 种不同的结果,正如我在一本书中读到的那样。假设这是可能的,我怎样才能获得正确的?

我可以为此使用哪些其他算法?

4

2 回答 2

1

维基百科说:

然而,事实证明,在实践中只能实现四类解决方案中的一类。给定一对对应的图像坐标,其中三个解决方案将始终生成一个 3D 点,该点位于两个摄像头中的至少一个后面,因此无法看到。四个类中只有一个会始终生成位于两个摄像机前面的 3D 点。那么这必须是正确的解决方案。

如果您在第一帧中有相机的外部校准参数,或者假设它处于默认校准状态,例如平移 (0,0,0) 和旋转 (0,0,0),那么您可以确定哪个分解是有效的。

于 2013-04-13T15:15:36.563 回答
1

感谢赞福德的回答,我能够解决我的问题。这是我所做的:

首先,我从两张图像中的一组点对应关系中计算了基本矩阵 (E)。

使用 SVD,将其分解为 2 个解决方案。使用否定的基本矩阵 -E(它也满足相同的约束),我得到了另外 2 个解决方案,总共有 4 个可能的相机位置和方向。

然后,对于所有解决方案,我对点对应关系进行三角剖分,并通过取点坐标和每个摄像机观察方向的点积来确定在两个摄像机前面相交的点。我都是正面的,然后那个路口就在两个摄像机的前面。

最后,在摄像机前提供最多交叉点的解决方案是被选中的解决方案。

于 2013-04-17T08:56:45.573 回答