【问题标题】:Calculating coordinates of an oblique aerial image计算倾斜航空影像的坐标
【发布时间】:2016-06-29 12:42:39
【问题描述】:

我在无人机上使用 GoPro HERO 4 来捕捉需要地理参考的图像。理想情况下,我需要捕获的图像角相对于无人机的坐标。

我有相机的:

  1. 海拔高度
  2. 水平和垂直视野
  3. 在所有 3 个轴上旋转

我找到了几个解决方案,但我不能完全按照我的目的翻译它们。我找到的最接近的是https://photo.stackexchange.com/questions/56596/how-do-i-calculate-the-ground-footprint-of-an-aerial-camera,但我不知道如何以及是否可以使用它。特别是当我必须同时考虑俯仰和滚动时。

感谢我得到的任何帮助。

编辑:我用 Java 编写我的软件。

【问题讨论】:

  • 角的坐标是什么意思?您的意思是在相机的焦平面/投影平面中,还是在问题中的地面上的四个角?如果您的意思是后者,它仍然是可能的,但使用基于矢量的方法可能更有效
  • 是的,我指的是地面上定义梯形的四个角。你的意思是我应该寻找来自相机的四道“光线”与地面的交点?
  • 是的,您应该计算这些并进行标准的射线平面相交测试。如果您要尝试使用您提供的链接中的三角函数来做到这一点......好吧,祝你好运。
  • 只是确保 - 你的旋转参数是什么?俯仰、偏航、滚动?
  • 是的,但基本上我只需要俯仰和横滚。

标签: java geometry geometry-surface drone.io photogrammetry


【解决方案1】:

如果您在所有三个轴上都有旋转,那么您可以使用这些矩阵 - http://planning.cs.uiuc.edu/node102.html - 为您的相机构建一个完整的 (3x3) 旋转矩阵。

假设,当旋转矩阵是一个恒等式(即在相机的框架中)时,您已将相机的轴定义为:

  • 前 X 轴
  • Y 表示侧面(左)
  • Z 向上

在相机框架中,光线有方向:

计算这些方向并使用矩阵旋转它们以获得真实世界的轴。使用相机的真实世界坐标作为源。

计算地面点:https://www.cs.princeton.edu/courses/archive/fall00/cs426/lectures/raycast/sld017.htm

【讨论】:

  • 非常感谢!
  • @MilanZelenka 没问题。还有一件事——你可能需要对光线向量进行归一化
  • 我刚刚运行了一些测试来验证我的计算结果,但我遇到了一些我不确定的事情。我将相机朝下,光线有方向:(+-tan(FOVv/2), +-tan(FOVh/2), -1)。现在,如果我是正确的,左下角和右上角射线之间的角度应该对应于相机的对角线 FOV,但事实并非如此。相机的规格是 FOVh = 64.4,FOVv = 37.2 FOVd = 73.6。这两个向量是 (0.336,0.629,-1.0) 和 (-0.336,-0.629,-1.0)。它们之间的夹角是 71 度。我在这里错过了什么吗?标准化不会改变结果。
  • 是的,我设法让它工作。你可以在这里找到源代码github.com/zelenmi6/thesis/blob/master/src/geometry/… 看看 getBoundingPolygon(..) 方法,让我知道这对你来说是否足够。
  • 我发现我可以通过首先将我的地理坐标转换为 utm 以使所有单位都以米为单位,然后执行光线旋转和相交来处理我的数据。我之前没有意识到的另一件事是偏航(和其他)是逆时针测量的,应该以弧度而不是度数给出。
猜你喜欢
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
相关资源
最近更新 更多