首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >kitti数据集摄像机投影矩阵

kitti数据集摄像机投影矩阵
EN

Stack Overflow用户
提问于 2018-11-09 01:52:54
回答 2查看 4.5K关注 0票数 1

我正在观察kitti数据集,特别是如何将一个世界点转换为图像坐标。我看了自述,它说,我需要转换为相机坐标,然后乘以投影矩阵。我有两个问题,来自非计算机视觉背景。

  1. 我查看了来自calib.txt的数字,特别是矩阵是3x4,在最后一栏中有非零值。我一直认为这个矩阵= K[I|0],其中K是相机的内在矩阵。那么,为什么最后一列是非零,这意味着什么呢?例如,P2是

数组([ 7.070912e+02,0.000000e+00,6.018873e+02,4.688783e+01,0.000000e+00,7.070912e+02,1.831104e+02,1.178601e-01,0.000000e+00,0.000000e+00,1.000000e+00,6.203223e-03])

  1. 在将投影应用于u,v,w并将u,v除以w后,这些值是与图像中心的原点有关还是原点在图像的左上角?

README:

calib.txt:摄像机的标定数据: P0/P1是校正后的3x4投影矩阵。在这里,P0表示左边,P1表示右边的摄像机。Tr将一个点从velodyne坐标转换为左校正摄像机坐标系。为了将velodyne扫描仪中的X点映射到I‘’th图像平面中的点x,您必须将其转换为: X= Pi * Tr *X

EN

回答 2

Stack Overflow用户

发布于 2019-10-13 04:01:16

参考文献:

  1. How to understand the KITTI camera calibration files?
  2. Format of parameters in KITTI's calibration file
  3. http://www.cvlibs.net/publications/Geiger2013IJRR.pdf

答案:

我强烈建议你阅读上面的参考资料。他们可以解决你的大部分问题,如果不是全部的话。

对于问题2:图像上的投影点相对于左上角的原点。参见ref 2& 3,图像中远三维点的坐标是(center_xcenter_y),其值在P_rect矩阵中提供。或者您可以使用一些简单的代码来验证这一点:

代码语言:javascript
运行
复制
import numpy as np
p = np.array([[7.070912e+02, 0.000000e+00, 6.018873e+02, 4.688783e+01],
              [0.000000e+00, 7.070912e+02, 1.831104e+02, 1.178601e-01],
              [0.000000e+00, 0.000000e+00, 1.000000e+00, 6.203223e-03]])
x = [0, 0, 1E8, 1]  # A far 3D point
y = np.dot(p, x)
y[0] /= y[2]
y[1] /= y[2]
y = y[:2]
print(y)

您将看到一些输出,如:

代码语言:javascript
运行
复制
array([6.018873e+02, 1.831104e+02 ])

它离(p[0, 2], p[1, 2])很近。(center_xcenter_y)。

票数 2
EN

Stack Overflow用户

发布于 2020-05-08 17:02:37

对于所有P矩阵(3x4),它们代表:

代码语言:javascript
运行
复制
P(i)rect = [[fu 0  cx  -fu*bx],
            [0  fv  cy -fv*by],
            [0   0   1  0]]

最后一列是基线,以米为单位。参考摄像机0。您可以看到P0在最后一列中有所有的零,因为它是参考摄像机。

这篇文章有更多的细节:How Kitti calibration matrix was calculated?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53218743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档