使用PNP进行姿势估计:奇怪的错误结果

时间:2015-11-17 03:26:43

标签: opencv computer-vision pose-estimation

我正在尝试在Open CV(EPNP,Iterative等)中使用PNP算法实现来获得两个相机对中的相机的度量姿势估计(不是传统的立体装备,相机可以独立于彼此)。我的图像源目前是机器人模拟器(Gazebo),其中两个相机在物体场景中被模拟。图像几乎是理想的:即零失真,没有伪影。

首先,这是我的第一对图像。

enter image description here enter image description here

我认为合适的相机是“原产地”。在公制世界坐标中,左侧摄像机位于(1,1,1),右侧位于(-1,1,1)(沿X的2m基线)。使用特征匹配,我构造了基本矩阵,从而构建了左摄像机的R和t。对。这就是我得到的。

R in euler angles: [-0.00462468, -0.0277675, 0.0017928]
t matrix: [-0.999999598978524; -0.0002907901840156801; -0.0008470441900959029]

哪个是正确的,因为位移仅沿着相机框架中的X轴。对于第二对,左摄像头现在处于(1,1,2)(向上移动1米)。

enter image description here enter image description here

现在是左边的R和t。权利变成:

R in euler angles: [0.0311084, -0.00627169, 0.00125991]
t matrix: [-0.894611301085138; -0.4468450866008623; -0.0002975759140359637]

这又有意义:没有轮换;沿Y轴的位移是基线(沿X)的一半,所以,虽然这不会给我真实的度量估计值。

因此,为了获得案例2中姿势的度量估计,我在案例1中使用来自摄像机1和摄像机2的点构建了3D点(考虑已知基线:2m),然后运行PNP具有这些3D点的算法和来自案例2的图像点。奇怪的是,ITERATIVE和EPNP算法给出了类似且完全错误的结果,如下所示:

Pose according to final PNP calculation is: 
Rotation euler angles: [-9.68578, 15.922, -2.9001]
Metric translation in m: [-1.944911461358863; 0.11026997013253; 0.6083336931263812]

我错过了一些基本的东西吗?我认为这应该是一个相对简单的PNP计算,因为没有失真等等。任何意见或建议都会非常有用,谢谢!

0 个答案:

没有答案