如何从calibrateCamera结果获取相机世界位置?

时间:2015-09-29 16:37:58

标签: opencv computer-vision camera-calibration

我正在使用calibrateCamera进行相机校准。部分输出是一组Rodrigues旋转向量和3-D平移向量。

我对相机的世界位置感兴趣。如果我直接绘制转换点,结果看起来不正确。我觉得我的坐标空间很混乱,但我在解析opencv文档时遇到了问题:

  

rvecs - 为每个模式视图估计的旋转矢量的输出矢量(参见Rodrigues())。也就是说,每个第k个旋转矢量与相应的第k个平移矢量(参见下一个输出参数描述)将校准模式从模型坐标空间(其中指定了对象点)带到世界坐标空间,即是第k个模式视图中校准模式的实际位置(k = 0 ... M -1)。

我的问题是,如何从罗德里格斯旋转向量和使用opencv校准相机获得的相应平移向量推导出相机世界位置?

1 个答案:

答案 0 :(得分:2)

opencv docs:世界到相机坐标

enter image description here

那里有2个矩阵,the intrinsic matrix and the extrinsic matrix

如果XYZ坐标在摄像机中(中间位于中间),则内在矩阵会为您提供图像中某些内容的U,V坐标(像素)坐标。外在矩阵从世界坐标为您提供XYZ中的坐标在摄像机中

因此,您只需要外在矩阵作为您的目标。

你知道你想从相机中的XYZ走向世界。由于外在矩阵是从世界到相机,你只需要反转它!

Cworld=E^(-1)*Ccamera

并且摄像机坐标系中的摄像机坐标为Ccamera=[0,0,0]

外在矩阵由calibrateCamerarvectstvects的两个输出组成。