【发布时间】:2017-04-04 23:14:15
【问题描述】:
我正在寻找二维空间中(x, y) 点的世界空间射线方程。所以给定(x, y),我想得到类似的东西:
(x, y, z) = (x0, y0, z0) + t*(a, b, c)
(x0, y0, z0) 和 (a, b, c) 是我知道的向量。
我使用 OpenCV 中的solvePnP 函数将3D 模型转换为2D 坐标,所以我有旋转向量、过渡向量、相机矩阵和畸变系数。有人能解释一下在世界空间中得到这个射线方程所需的数学吗?
【问题讨论】:
-
请澄清问题。这个 2-D 点的参考系统是什么,它与 3-D 世界空间有什么关系?解释范式会让你从数学家那里得到更多帮助。
-
二维点基本上是从相机检测到的点的 (x, y) 坐标。我想将此点投影到 3-D 世界中的圆柱状形状上。
-
所以为了做到这一点,我想得到点的射线方程,并计算交点。那有意义吗?抱歉,我对此有点陌生,所以如果我遗漏了什么,请告诉我
-
越来越近了;谢谢。我认为 (x0, y0, z0) 是相机位置, (a, b, c) 是从二维点导出的向量。相机的二维系统如何与世界空间对齐?我设想相机将其视图解释为好像它位于单位半径的圆柱体中,该圆柱体在后方某个不可见点“解压缩”并展平以提取伪卡特斯坐标。
-
例如,中心左侧 10 度和虚拟地平线上方 15 度的某物可能被视为二维空间中的点 (-10, +15)。您想将其转换为 (x0, y0, z0) + t*(a, b, c) ... 其中 a, b, c 是 -10 和 15(及其组合)的三角函数。
标签: python opencv 3d computer-vision