我目前正在做一个项目,该项目基于一组图像,采用多视图立体方法进行重建。因此,我需要知道在空间中的几个图像姿势。我使用surf找到匹配的特征,并从对应关系中找到基本矩阵。
现在问题来了:可以用SVD分解基本矩阵,但这可能会导致4种不同的结果,正如我在一本书中读到的那样。假设这是可能的,我怎样才能获得正确的结果呢?
我还能用什么算法来做这件事呢?
发布于 2013-04-17 16:56:46
多亏了Zaphod,我才能解决我的问题。下面是我所做的:
首先,我从两幅图像中的一组点对应关系中计算出基本矩阵(E)。
使用奇异值分解,将其分解为两个解。使用否定的基本矩阵-E (它也满足相同的约束),我得出了另外两个解决方案,总共4个可能的相机位置和方向。
然后,对于所有的解决方案,我对点的对应关系进行了三角测量,并通过取点坐标和每个相机的观察方向的点积来确定哪个点在两个相机前面相交。我都是肯定的,那么那个交叉口就在两个摄像头的前面。
最后,在摄像机前提供最多交叉点的解决方案是所选择的解决方案。
发布于 2013-04-13 23:15:37
Wikipedia说:
然而,事实证明,在实践中,这四类解决方案中只有一种可以实现。给定一对相应的图像坐标,其中三个解决方案将始终生成一个3D点,该点位于两个摄像机中的至少一个后面,因此无法看到。这四个类别中只有一个将一致地生成位于两个相机前面的3D点。这必须是正确的解决方案。
如果在第一帧中有相机的外部校准参数,或者假设它位于默认校准位置,例如(0,0,0)的平移和旋转,则可以确定哪个分解是有效的。
https://stackoverflow.com/questions/15987053
复制相似问题