我是opencv和计算机视觉的新手。我想在两个相机姿势之间找到R和t矩阵。所以我一般都遵循维基百科:
https://en.wikipedia.org/wiki/Essential_matrix#Determining_R_and_t_from_E
我找到了两组图像中同一点的相关像素位置组。我得到了必要的矩阵。然后我运行SVD。并打印2个可能的R和2个可能的t。
[运行方式如预期]
如果我只改变旋转(滚动,俯仰,偏航之一)或单独转换(x,y,z之一),它就完美无缺。例如,如果我将音高增加到15度,那么我会得到R并且发现delta音高是+14.9度。如果我只增加x 10厘米,那么t矩阵就像[0.96,-0.2,-0.2]。
[出了什么问题]
但是,如果我改变旋转和平移,则R和t是无意义的。例如,如果我将x增加10 cm并将音高增加到15度,那么delta度就像[-23,8,0.5],t矩阵就像[0.7,0.5,0.5]。
[问题]
我想知道如果我同时改变旋转和平移,为什么我不能得到好结果。同样令人困惑的是,为什么不相关的旋转或平移(滚动,偏航,y,z)也发生了很大的变化。
有人愿意让我知道吗?感谢。
[已解决且原因]
OpenCV使用右手坐标系。也就是说,z轴从xy平面投射到观察者方向。我们的系统使用的是左手坐标系。因此,只要更改与z轴相关,结果就是无意义的。
答案 0 :(得分:0)
这是由于使用的坐标不同而解决的。
OpenCV使用右手坐标系。也就是说,z轴从xy平面投射到观察者方向。我们的系统使用的是左手坐标系。因此,只要更改与z轴相关,结果就是无意义的。