我正在使用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向量中吗?我想我在这里错过了什么...
答案 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坐标的物体。这可能会有所帮助。