在哪里可以向Essential Matrix添加比例因子以生成真实世界的翻译值

时间:2013-03-01 12:25:36

标签: python opencv image-processing

我正在使用OpenCV和python,并想获得两台摄像机之间的真实世界翻译。我正在使用一台正在移动的校准相机。我已经完成了功能匹配,通过RANSAC计算F和E的计算。为了在摄像机之间进行转换,我想我可以使用:w, u, vt = cv2.SVDecomp然后我的t向量可以是:{{1}示例输出是:

t = u[:,2]

t vector:[[ -1.16399893 9.78967574 1.40910252]
[ -7.79802049 -0.26646268 -13.85252956]
[ -2.67690676 13.89538682 0.19209676]]

我想我理解翻译是如何在现实世界范围内的,所以如果我想要一个真实世界的翻译,我需要以某种方式提供这种规模。如果我知道摄像机之间的距离,我可以通过乘法直接将它应用到我的t向量中吗?我想我在这里错过了什么...

2 个答案:

答案 0 :(得分:1)

看起来答案是'是'。

如果摄像机之间的距离是2米,那么得到的真实世界翻译将是该值和t向量的乘积:

dist = 2
t = [ 0.81586158 0.0750399 -0.57335756]
tworld = 2 * t

print tworld 
[ 1.63172316  0.1500798  -1.14671512]

当然要记住的是,虽然翻译现在是真实世界的单位,但它仍然在相机坐标系中。所以这意味着我的第二台摄像机位于右侧1.63172316m处,0.1500798m处,以及-114671512处于摄像机之后。

答案 1 :(得分:-1)

我有同样的问题。我认为单目相机可能需要一个已知3D坐标的物体。这可能会有所帮助。