这是关于计算机图形和视觉中使用的术语的问题。我想构建一个使用2D到3D对应的相机投影矩阵。从这些对应关系中我创建了一个相机对象。我在库中使用类来表示相机。它采用以下参数:
// R是以世界坐标框架表示的摄像机方向 // t是以世界坐标框架表示的摄像机位置
我的问题的第一部分是:如上所述,R和t是否满足x=K[R|t]X
的外部参数?或者它们是否需要转换(例如,转置(R)是外在方向,而 - 转换(R)* t用于位置)。
我使用openCV的solvePnP函数获取R和t。该函数返回R和t,如下所示:
rvec - 输出旋转矢量(参见Rodrigues()),它与tvec一起,将模型坐标系中的点带到摄像机坐标系。
tvec - 输出翻译向量。
我的问题的第二部分是,基于上面的描述,输出是相当于我的相机的外在参数,还是它们也需要被转换(如前所述)?
答案 0 :(得分:0)
相机投影矩阵通常定义为P = K [R|t]
,其中R
和t
是外在因素,而不是相机方向和世界坐标中的位置。
关于solvePnP
返回的内容,您必须阅读其文档,或者尝试一下并查看。
答案 1 :(得分:0)
slovepnp获取图像点(在图像坐标中),对象点(在模型/世界坐标中)和相机内在,然后输出rvec / tvec,我们可以使用它来构建模型到相机变换。在opengl中,通常称为此模型视图矩阵。
计算机很难获得环境知识,我们通常使用简易检测功能,如AR标记和校准板,如果你想以opengl方式调用它,可以将它作为世界坐标和模型坐标。在这些场景中,相机的外在物体在世界坐标系中表示。
您可以查看本书mastering opencv的第2章和第3章(AR事物)的代码,并获得这些知识和实用代码。