我正在使用calibrateCamera进行相机校准。部分输出是一组Rodrigues旋转向量和3-D平移向量。
我对相机的世界位置感兴趣。如果我直接绘制转换点,结果看起来不正确。我觉得我的坐标空间很混乱,但我在解析opencv文档时遇到了问题:
rvecs - 为每个模式视图估计的旋转矢量的输出矢量(参见Rodrigues())。也就是说,每个第k个旋转矢量与相应的第k个平移矢量(参见下一个输出参数描述)将校准模式从模型坐标空间(其中指定了对象点)带到世界坐标空间,即是第k个模式视图中校准模式的实际位置(k = 0 ... M -1)。
我的问题是,如何从罗德里格斯旋转向量和使用opencv校准相机获得的相应平移向量推导出相机世界位置?
答案 0 :(得分:2)
从opencv docs:世界到相机坐标
那里有2个矩阵,the intrinsic matrix and the extrinsic matrix。
如果XYZ坐标在摄像机中(中间位于中间),则内在矩阵会为您提供图像中某些内容的U,V坐标(像素)坐标。外在矩阵从世界坐标为您提供XYZ中的坐标在摄像机中。
因此,您只需要外在矩阵作为您的目标。
你知道你想从相机中的XYZ走向世界。由于外在矩阵是从世界到相机,你只需要反转它!
Cworld=E^(-1)*Ccamera
并且摄像机坐标系中的摄像机坐标为Ccamera=[0,0,0]
外在矩阵由calibrateCamera
,rvects
和tvects
的两个输出组成。