2

我的值 P1,P2,P3,P4 带有屏幕点 (x,y) 和经度、纬度。除此之外,我还有一个摄像头(带纬度、经度)、摄像头的高度(1.6m(常数))和摄像头的方向(轴承、俯仰、滚动)。我也有相机的水平视角和垂直视角:)

现在我想计算 PX(lat,long) 在我的显示器上的估计位置(如果它可见)。 跟随问题

对于给定的 PX(lat,long),如何获得 P(?,?)?(图中的紫色点)这似乎是可能的,因为我知道我的相机的角度并且我有所有四个顶点。但我不知道如何解决这个问题。

我需要一个基于这四个顶点的函数,它可以将 (lat,long) 转换为 (screenX, screenY)。

我有一个公式,可以将 (screenX, screenY) 转换为 (lat,long),但我无法反转这个公式。因此,如果需要除顶点之外的其他点,我可以计算它们(但我不能简单地对屏幕中的每个像素使用这个公式......那将是每 100 毫秒一百万次方法调用......)

4

1 回答 1

1

因此,我可能在您的其他线程的评论中回答了这个问题,但最简单的方法是:忽略屏幕边缘的 GPS 坐标 - 通常将所有内容转换为您的相机为原点的坐标空间,并确定其他物体的位置是使用一种在短距离上条件良好的方法获得 GPS 坐标之间的相对距离,例如 Haversine 公式

获取投影中心和要显示的对象之间的相对方位角。

您可以确定轴的视角。您可以确定虚拟对象与投影中心(相机指向的方向)在两个轴上的相对方位。你知道你的屏幕分辨率。

如果 Alpha 是您的视角的一半(对于给定的角度),而 Beta 是您的投影中心和您想要在屏幕上找到的对象之间的相对方位角,那么屏幕上的点大约由下式给出

tan(beta) / tan(alpha) *(该轴上半个屏幕的像素数)

显然,您需要添加逻辑来捕捉屏幕外的投影,无论是投影中心的左侧还是右侧,以及您身后是否有东西(投影本身不考虑 z 距离)。

于 2013-04-03T10:29:23.700 回答