Opencv 摄像机姿态估计

Opencv 摄像机姿态估计,opencv,computer-vision,pose-estimation,Opencv,Computer Vision,Pose Estimation,我目前正在从事一个项目,该项目以多视图立体方法处理基于一组图像的重建。因此,我需要知道空间中的几个图像。我使用surf查找匹配特征,并从对应关系中找到基本矩阵 现在问题来了:用SVD分解基本矩阵是可能的,但正如我在一本书中读到的那样,这会导致4种不同的结果。假设这是可能的,我怎样才能得到正确的答案 我还可以使用哪些其他算法 说: 然而,事实证明,四类解决方案中只有一类 可以在实践中实现。给定一对对应的图像 坐标,其中三个解决方案将始终生成一个三维点 它至少在两个摄像机中的一个后面,因此不能 被看

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

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

我还可以使用哪些其他算法

说:

然而,事实证明,四类解决方案中只有一类 可以在实践中实现。给定一对对应的图像 坐标,其中三个解决方案将始终生成一个三维点 它至少在两个摄像机中的一个后面,因此不能 被看见。四个类中只有一个类将始终生成3D 两个摄像机前面的点。这一定是最重要的 正确的解决方案


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

多亏了Zaphod的回答,我才能够解决我的问题。以下是我所做的:

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

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

然后,对于所有的解决方案,我对点对应进行三角测量,并通过获取点坐标的点积和每个摄影机的观察方向,确定在两个摄影机前面相交的点。我两个都是肯定的,那个十字路口在两个摄像机前面


最后,在相机前面提供最多交点的解决方案就是所选的解决方案。

我现在的想法是将参考图像和每个解决方案的图像角点投影到参考图像前面的平面中。如果存在重叠,则必须是正确的解决方案。这行得通吗?如果我理解正确的话,这只会在相机不平移时起作用——旋转可以通过将点投影到平面上来处理。