相机的外部参数是否在世界坐标系中表示?

时间:2015-10-21 16:46:30

标签: opencv computer-vision

这是关于计算机图形和视觉中使用的术语的问题。我想构建一个使用2D到3D对应的相机投影矩阵。从这些对应关系中我创建了一个相机对象。我在库中使用类来表示相机。它采用以下参数:

  

// R是以世界坐标框架表示的摄像机方向   // t是以世界坐标框架表示的摄像机位置

我的问题的第一部分是:如上所述,R和t是否满足x=K[R|t]X的外部参数?或者它们是否需要转换(例如,转置(R)是外在方向,而 - 转换(R)* t用于位置)。

我使用openCV的solvePnP函数获取R和t。该函数返回R和t,如下所示:

  

rvec - 输出旋转矢量(参见Rodrigues()),它与tvec一起,将模型坐标系中的点带到摄像机坐标系。
  tvec - 输出翻译向量。

我的问题的第二部分是,基于上面的描述,输出是相当于我的相机的外在参数,还是它们也需要被转换(如前所述)?

2 个答案:

答案 0 :(得分:0)

相机投影矩阵通常定义为P = K [R|t],其中Rt是外在因素,而不是相机方向和世界坐标中的位置。

关于solvePnP返回的内容,您必须阅读其文档,或者尝试一下并查看。

答案 1 :(得分:0)

slovepnp获取图像点(在图像坐标中),对象点(在模型/世界坐标中)和相机内在,然后输出rvec / tvec,我们可以使用它来构建模型到相机变换。在opengl中,通常称为此模型视图矩阵。

计算机很难获得环境知识,我们通常使用简易检测功能,如AR标记和校准板,如果你想以opengl方式调用它,可以将它作为世界坐标和模型坐标。在这些场景中,相机的外在物体在世界坐标系中表示。

您可以查看本书mastering opencv的第2章和第3章(AR事物)的代码,并获得这些知识和实用代码。