【问题标题】:How to find the pixel location of a GPS point in an orthoimage with known orientation and GPS location如何在具有已知方向和 GPS 位置的正射影像中找到 GPS 点的像素位置
【发布时间】:2019-12-07 15:54:54
【问题描述】:

我有一个问题,我需要确定给定的纬度、经度 GPS 点是否位于具有已知真实世界方向和 GPS 位置(对应于图像中心)的给定正射影像(约 1 公顷区域)中)。

也就是说,给定一个 GPS 点 P,我需要确定:

  1. 点P是否位于正射影像中,如果是,
  2. 正射影像中点 P 的像素位置是什么。

我的问题总结如下图:

正如您在图像中看到的,我知道图像的 GPS 坐标(中心)以及北相对于图像的位置。另外,我知道每个像素对应的地面有多少厘米。

我的问题是:什么是实现我的问题目标的有效而聪明的方法?

我想到的一种方法是解决 GPS 点和像素点之间的线性映射,然后使用此映射来回答问题 1-2。我认为这可能是一种合理的方法,即使地球有曲率并且 GPS 坐标(我会说)更像像素坐标的抛物线函数,因为距离非常小(一个图像大约是 1公顷面积)我可以假设 GPS 坐标在像素坐标上局部线性变化而不会显着损失精度。

你怎么看?谢谢你。

更新:

正射影像是使用配备云台相机系统的 Phantom 4 Pro 无人机拍摄的。

【问题讨论】:

  • 回答第二个问题将清楚地回答第一个假设没有溢出,但如果您知道图像每个角落的 GPS 位置,那么回答第一个问题可能会容易得多 - 一个简单的矩形抛出-out。
  • @GemTaylor 谢谢你的帮助,是的,我不知道角坐标,这些必须从给定的信息中计算出来。
  • 在公顷尺度上,地球曲率是无关紧要的,任何地形都会有更强的影响。鉴于您有中心的位置,以及像素大小和像素数,计算角落的位置是微不足道的而且非常快。您在实施时遇到了什么问题?
  • 诚然,如果正射影像是以任何角度拍摄的,高度是影像区域内更大的问题。你是否也有原型制作者的 GPS 位置来制作金字塔?
  • @GemTaylor 是的,我愿意。 Adriaan,我没有问题,只是想知道如何实现这一点的更好的想法,以及我的方法是否有效。如果可以的话,如果您能提供一个高级伪代码,我将不胜感激。

标签: image matlab gps coordinates gis


【解决方案1】:

我自己想过一种可能性,虽然不完美,但这是一个开始:

给出以下信息:

图像的矩形正射图像ImgYaw(即图像背向北方的度数)、pix_size 地面像素大小(厘米/像素)。

问题是:给定任意 GPS 点p = (lat, long),确定Imgp 的像素位置。

c = (latc, longc)cp = (x,y) 表示为Img 中心点的GPS 坐标和像素坐标。

确定从cp 必须沿南北和东西轴线移动多少。让lat_delta = latc-latlong_delta = longc-long。如果lat_delta < 0 -> pc 更北,否则pc 更南。 long_delta 也是如此。

>     if lat_delta < 0:
>         pN = [latc + abs(lat_delta), longc]        
>     else:
>         pN = [latc - abs(lat_delta), longc] 
> 
>     if lat_long < 0:
>         pE = [latc, longc + abs(long_delta)]        
>     else:
>         pE = [latc, longc - abs(long_delta)] 

现在c, p, pNpE 点形成一个“球形”直角三角形(我想我可以放心地假设它是平面的,因为正射照片描述了最大 1 公顷的面积)。所以勾股定理足以满足我的目的。

接下来,我计算地面距离dN = Haversine(c,pN)dE = Haversine(c, pE),这告诉我必须在南北和东西轴线上移动多少地面距离才能从c 到达p .

现在我将旋转矩阵R(-Yaw) 应用于向量n = [0,1]e = [1,0],它们表示我的像素坐标系中的向上和右侧向量。所以我得到nr = R(-Yaw)*ner = R(-Yaw)*e,其中nr是图像中指向北的单位像素向量,er同样是图像中指向东的单位像素向量。

接下来,我计算比率 mN = dN/pix_size 和 mE = dE/pix_size(这些因素还需要考虑 +- 方向)。现在我通过以下方式计算p的像素位置:

pp = cp + mN*nr + mE*er,

我现在可以轻松检查像素值pp 是否在图像Img 的范围内。

当然这种方法不适用于一般的大面积情况,需要为此进行细化。

【讨论】:

  • 此方法适用于我的目的(现场图像)。不过,我很高兴有一种更好、更通用的方法来做到这一点。
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多