javageometrygeometry-surfacedrone.iophotogrammetry

Calculating coordinates of an oblique aerial image


I am using a GoPro HERO 4 on a drone to capture images that need to be georeferenced. Ideally I need coordinates of the captured image's corners relative to the drone.

I have the camera's:

  1. Altitude
  2. Horizontal and vertical field of view
  3. Rotation in all 3 axes

I have found a couple of solutions but I can't quite translate them for my purposes. The closest one I found is here https://photo.stackexchange.com/questions/56596/how-do-i-calculate-the-ground-footprint-of-an-aerial-camera but I can't figure out how and if it's possible for me to use it. Particularly when I have to take both pitch and roll into account.

Thanks for any help I get.

Edit: I code my software in Java.


Solution

  • If you have rotations in all three axes then you can use these matrices - http://planning.cs.uiuc.edu/node102.html - to construct a full (3x3) rotation matrix for your camera.

    Assuming that, when the rotation matrix is an identity (i.e. in the camera's frame) you have defined the camera's axes to be:

    In the camera frame, the rays have directions:

    enter image description here

    Calculate these directions and rotate them using the matrix to get the real-world axes. Use the camera's real world coordinate as the source.

    To calculate the points on the ground: https://www.cs.princeton.edu/courses/archive/fall00/cs426/lectures/raycast/sld017.htm