如何得到世界中二维点的射线方程 space
How to get the ray equation of a 2d point in world space
我正在寻找 2D space 中 (x, y)
点的世界 space 射线方程。所以给定 (x, y)
,id 喜欢得到这样的东西:
(x, y, z) = (x0, y0, z0) + t*(a, b, c)
其中 (x0, y0, z0)
和 (a, b, c)
是我知道的向量。
我正在使用 OpenCV 中的 solvePnP 函数将 3D 模型转换为 2D 坐标,因此我有旋转矢量、过渡矢量、相机矩阵和畸变系数。有人可以解释一下在世界 space 中得到这个射线方程所需的数学吗?
这是我会做的。
对于[u, v]
坐标中的二维图像点,取消扭曲二维坐标并应用反向透视变换。 OpenCV 已经有一个函数 undistortPoints()
可以做到这一点。
您将在标准化相机帧中获得 3D 坐标,即 z=1
。
对于线/射线 equation,您的起点在 (x0=0, y0=0, z0=0)
,另一个点在 (x, y, z=1)
。
关于反向透视变换的注意事项。
对于给定的相机矩阵:
反向透视变换就是:
坐标系变换注意事项:
对于给定的世界(或物体)3D 点:
如果你知道相机姿势(例如使用 solvePnP()
),你就有变换矩阵 :
要计算相机框架中的 3D 坐标:
我正在寻找 2D space 中 (x, y)
点的世界 space 射线方程。所以给定 (x, y)
,id 喜欢得到这样的东西:
(x, y, z) = (x0, y0, z0) + t*(a, b, c)
其中 (x0, y0, z0)
和 (a, b, c)
是我知道的向量。
我正在使用 OpenCV 中的 solvePnP 函数将 3D 模型转换为 2D 坐标,因此我有旋转矢量、过渡矢量、相机矩阵和畸变系数。有人可以解释一下在世界 space 中得到这个射线方程所需的数学吗?
这是我会做的。
对于[u, v]
坐标中的二维图像点,取消扭曲二维坐标并应用反向透视变换。 OpenCV 已经有一个函数 undistortPoints()
可以做到这一点。
您将在标准化相机帧中获得 3D 坐标,即 z=1
。
对于线/射线 equation,您的起点在 (x0=0, y0=0, z0=0)
,另一个点在 (x, y, z=1)
。
关于反向透视变换的注意事项。
对于给定的相机矩阵:
反向透视变换就是:
坐标系变换注意事项:
对于给定的世界(或物体)3D 点:
如果你知道相机姿势(例如使用 solvePnP()
),你就有变换矩阵
要计算相机框架中的 3D 坐标: