Java 倾斜航空影像的坐标计算

Java 倾斜航空影像的坐标计算,java,geometry,geometry-surface,drone,photogrammetry,Java,Geometry,Geometry Surface,Drone,Photogrammetry,我在无人机上使用GoPro HERO 4来捕捉需要地理参考的图像。理想情况下,我需要拍摄图像的角点相对于无人机的坐标 我有相机的: 海拔高度 水平和垂直视野 在所有3个轴上旋转 我已经找到了一些解决方案,但我不能完全按照我的目的来翻译它们。我找到的最接近的一个在这里,但我不知道如何以及是否有可能使用它。尤其是当我必须同时考虑投球和滚球的时候 谢谢你对我的帮助 编辑:我用Java编写我的软件。如果你在所有三个轴上都有旋转,那么你可以使用这些矩阵——为你的相机构建一个完整的(3x3)旋转矩阵 假设,

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

我有相机的:

  • 海拔高度
  • 水平和垂直视野
  • 在所有3个轴上旋转
  • 我已经找到了一些解决方案,但我不能完全按照我的目的来翻译它们。我找到的最接近的一个在这里,但我不知道如何以及是否有可能使用它。尤其是当我必须同时考虑投球和滚球的时候

    谢谢你对我的帮助


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

    如果你在所有三个轴上都有旋转,那么你可以使用这些矩阵——为你的相机构建一个完整的(3x3)旋转矩阵

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

    • 前端X轴
    • 侧边为Y(左)
    • Z代表上升
    在摄影机帧中,光线具有方向:

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


    要计算地面上的点:

    角点坐标是什么意思?你的意思是在相机的焦距/投影平面上,还是像问题中那样在地面的四个角上?如果你指的是后者,它仍然是可能的,但是使用基于向量的方法可能更有效。是的,我指的是地面上定义梯形的四个角。你是在暗示我应该寻找四条从相机到地面的光线的交点吗?是的,你应该计算这些,然后做一个标准的光线平面交点测试。如果你试图用你给出的链接中的trig函数来做这件事。。。好吧,祝你好运。只是确定一下-你的旋转参数是什么?俯仰,偏航,翻滚?是的,但基本上我只需要俯仰和翻滚。非常感谢@米兰泽伦卡没问题。还有一件事,你可能需要规范化光线矢量,我刚刚运行了一些测试来验证我的计算结果,我遇到了一些我不确定的问题。我将相机朝下放置,光线有方向:(+-tan(FOVv/2),+-tan(FOVh/2),-1)。现在,如果我是正确的,左下角和右上角光线之间的角度应该对应于相机的对角视场,但它不是。摄像机的规格为FOVh=64.4,FOVv=37.2,FOVd=73.6。这两个向量分别为(0.336,0.629,-1.0)和(-0.336,-0.629,-1.0)。它们之间的夹角是71度。我是不是遗漏了什么?正常化不会改变结果。是的,我成功地使其工作。你可以在这里找到源代码看看getBoundingPolygon(..)方法,让我知道这对你来说是否足够。我发现我可以通过首先将我的地理坐标转换为utm,使所有单位都以米为单位,然后执行光线旋转和相交来处理我的数据。另一件我以前没有意识到的事情是偏航(和其他)是逆时针测量的,应该以弧度而不是度来表示。