我正在使用 calibrateCamera 执行相机校准。输出的一部分是一组 Rodrigues 旋转向量和 3-D 平移向量。
我对摄像机的世界位置感兴趣。如果我直接绘制平移点,结果看起来不正确。我觉得我的坐标空间很混乱,但我在解析 opencv 文档时遇到了问题:
rvecs – 为每个模式视图估计的旋转向量的输出向量(请参阅 Rodrigues() )。也就是说,每个第k个旋转向量与相应的第k个平移向量(参见接下来的输出参数描述)一起将校准图案从模型坐标空间(其中指定了对象点)带到世界坐标空间,即即,校准图案在第k个图案视图(k=0..M -1)中的真实位置。
我的问题是,如何从 Rodrigues 旋转向量和使用 opencv 的 calibratecamera 获得的相应平移向量导出相机世界位置?
来自opencv 文档 http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html:世界到相机坐标
那里有2个矩阵,内在矩阵和外在矩阵 https://en.wikipedia.org/wiki/Camera_resectioning.
如果您有 XYZ 坐标,则内在矩阵可为您提供图像中某物的 U、V 坐标(像素)坐标在镜头中(中间的中心)。外在矩阵给你坐标在镜头中从世界坐标到 XYZ。
因此,您只需要外在矩阵即可实现您的目标。
你知道你想要从相机中的XYZ到世界。由于外在矩阵是从世界到相机的,你只需要反转它!
Cworld=E^(-1)*Ccamera
相机坐标系中的相机坐标为Ccamera=[0,0,0]
外在矩阵由两个输出组成calibrateCamera
, rvects
and tvects
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)