相机校准中的投影矩阵为3x4矩阵
P = camera matrix * [R|t]
但是,在OpenCV文档中,没有提到R和t是由rvec和tvec形成,将标定目标对象空间转换为摄影机空间还是由摄影机世界空间方向rodrigues(rvec).t()和< x1>。 维基百科给出了更详细的解释。
T is the position of the origin of the world coordinate system expressed in coordinates of the camera-centered coordinate system. T is often mistakenly considered the position of the camera.
但是我还是有点困惑,那么外部参数到底是什么呢? 是上面的T还是外部参数应该是摄影机在世界空间中的位置和方向,投影矩阵公式中的R和t不应是外部参数?
我想确认投影矩阵中的R和t分别是什么?
基本上,外部参数用于将同质世界坐标转换为相机坐标。然后,使用固有参数将摄像机坐标中的点映射到图像平面上,从而得到像素坐标。
维基百科引用R和T,它们等效于投影矩阵P的R和T。 R基本上表示相机坐标系的方向,而T是相机坐标系中世界坐标系的原点。
但是,如果要使摄像机中心C(在世界坐标中)显式,则必须重写投影矩阵:
P = K[R|-RC].
如您所见t=-RC,但实际上没有区别。两种组合都是外部参数。
有关更多详细信息,《计算机视觉中的多视图几何》是该领域的圣经。
希望我回答了你的问题。请毫不犹豫地询问是否不清楚或我误解了您。
谢谢!在您的回答中,如果我的R是相机在世界空间中的方向,则公式是否应为P = K [R.transpose()| -R.transpose()C]吗?
我不知道这是否有效说"R是相机在世界空间的方向",更好地使用术语表示。但是,如果我没记错的话,R的行(单位)向量是相机坐标系在世界坐标中的坐标轴。您基本上是在点上投影(点积)您在世界坐标上的点。
相机在相机空间中的方向似乎毫无意义。但是我仍然感到困惑。因此,在答案中,您实际上是说P = K [R | -RC]中的R与世界空间中的方向的R是否相同?
是的,是一样的。但是,如果您问R是否是相机在世界空间中的方向,我真的不能说是,它只是一个正交的3x3矩阵。但是R代表相机在世界坐标系中的方向,并且是将世界坐标系中的3D点转换成坐标系与相机坐标系中的坐标系对齐的矩阵(通过t到真正到了相机坐标)。
我只实现P =?[R | -RC],但它仍然不是可以在我的重建算法中使用的投影矩阵。仍在努力。