matlab计算投影矩阵,如何在OpenCV和Matlab校准工具箱中形成投影矩阵?

相机校准中的投影矩阵为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],但它仍然不是可以在我的重建算法中使用的投影矩阵。仍在努力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值