如何使用基本矩阵在 2 个相机坐标系之间正确恢复 R,t?

问题描述

我有 2 个重叠的图像,我可以为其计算 F(基本矩阵)。 根据多视图几何(Zisserman,Hartley)教科书,为了恢复 2 个相机坐标系之间的 R,T,必须首先找到基本矩阵(E = K'.t()FK)使用 SVD 找到 R 和 t。我试图在下面的代码中这样做:

def testGetRTfromEssentialMatrix(pts1,pts2,K):
    U,S,Vt = np.linalg.svd(E)
    W = np.array([[0,-1,0],[1,[0,1]])
    R = U * W.transpose() * Vt.transpose()
    Z = np.array([[0,1,[-1,0]])
    t_m = U * Z * U.transpose()

然而,我得到的结果很奇怪,与我从 cv.recoverPose(E,pts1,K) 得到的结果不同。我在这里做错了什么?理论上,先找到 F 然后找到 E,然后用 SVD 方法分解 E 应该可行,但我在这里缺少什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)