为什么图像在 3d 点上的投影会显示这种失真?

Why does the projection of an image over 3d points show this distortion?

我对图像在一组 3D 点上的投影有疑问。图像以 JPG 格式提供给我,以及相机相对于笛卡尔坐标系(Xc、Yc、Zc 和偏航、俯仰、滚动)的位置和姿态信息,以及水平和垂直视野(以度为单位)。

点仅使用它们在同一坐标系 (Xp,Yp,Zp) 中的 3d 位置给出。

在我的坐标系中,Z在上。要将图像投影到点上,我

这几乎完美,"almost" 激发了我的问题。让我演示给你看:

我不明白为什么投影的高程失真了。在图像的右下角,您可以看到平截头体之外的点(超过高程)实际上变成了彩色 - 这种失真在 0 度方位角处为零,并在图像的左右边缘达到峰值,从而创建枕头变形。

为什么会出现这种失真?我很想用几何和数学术语来理解这个问题。谢谢!

视野角度仅在主轴上有效。但是你可以反过来做。 IE。从角度计算 x/y 边界:

maxX = tan(horizontal_fov / 2)
maxY = tan(vertical_fov / 2)

并检查

if(abs(c2pCamFrame.x() / c2pCamFrame.z()) <= maxX
     && abs(c2pCamFrame.y() / c2pCamFrame.z()) <= maxY)

此外,您可能想检查这些点是否在相机前面:

     ... && c2pCamFrame.z() > 0

这假设是左手坐标系。