2

With this information below, including image size, longitude/latitude (of upper left I assume, maybe center), Resolution, and altitude - can I derive the Long/Lat of each corner of the image?

"size":[
    5472,
    3648
  ],
  "coordinateSystem":{
    "wkt":""
  },
  "metadata":{
    "":{
      "EXIF_BitsPerSample":"8 8 8",
      "EXIF_BodySerialNumber":"0K8TFCM0020857",
      "EXIF_ColorSpace":"1",
      "EXIF_ComponentsConfiguration":"0x01 0x02 0x03 0x00",
      "EXIF_Contrast":"0",
      "EXIF_DateTime":"2019:09:22 10:04:32",
      "EXIF_DateTimeDigitized":"2019:09:22 10:04:32",
      "EXIF_DateTimeOriginal":"2019:09:22 10:04:32",
      "EXIF_DeviceSettingDescription":"0x00 0x00 0x00 0x00",
      "EXIF_DigitalZoomRatio":"(1)",
      "EXIF_ExifVersion":"0230",
      "EXIF_ExposureBiasValue":"(0)",
      "EXIF_ExposureMode":"0",
      "EXIF_ExposureProgram":"2",
      "EXIF_ExposureTime":"(0.00625)",
      "EXIF_FileSource":"0x03",
      "EXIF_Flash":"0",
      "EXIF_FlashpixVersion":"0100",
      "EXIF_FNumber":"(4.5)",
      "EXIF_FocalLength":"(10.26)",
      "EXIF_FocalLengthIn35mmFilm":"28",
      "EXIF_GainControl":"0",
      "EXIF_GPSAltitude":"(63)",
      "EXIF_GPSAltitudeRef":"0x00",
      "EXIF_GPSLatitude":"(27) (47) (48.0588)",
      "EXIF_GPSLatitudeRef":"N",
      "EXIF_GPSLongitude":"(82) (19) (57.8939)",
      "EXIF_GPSLongitudeRef":"W",
      "EXIF_GPSVersionID":"0x02 0x03 0x00 0x00",
      "EXIF_ImageDescription":"default",
      "EXIF_Interoperability_Index":"R98",
      "EXIF_Interoperability_Version":"0x30 0x31 0x30 0x30",
      "EXIF_ISOSpeedRatings":"100",
      "EXIF_LensSpecification":"(28) (28) (2.8) (11)",
      "EXIF_LightSource":"1",
      "EXIF_Make":"Hasselblad",
      "EXIF_MakerNote":"[ae_dbg_info:\u0001\u0001",
      "EXIF_MaxApertureValue":"(2.971)",
      "EXIF_MeteringMode":"2",
      "EXIF_Model":"L1D-20c",
      "EXIF_Orientation":"1",
      "EXIF_PixelXDimension":"5472",
      "EXIF_PixelYDimension":"3648",
      "EXIF_ResolutionUnit":"2",
      "EXIF_SamplesPerPixel":"3",
      "EXIF_Saturation":"0",
      "EXIF_SceneCaptureType":"0",
      "EXIF_SceneType":"0x01",
      "EXIF_Sharpness":"2",
      "EXIF_Software":"10.00.11.04",
      "EXIF_WhiteBalance":"0",
      "EXIF_XResolution":"(72)",
      "EXIF_YCbCrPositioning":"1",
      "EXIF_YResolution":"(72)"
    },
    "IMAGE_STRUCTURE":{
      "COMPRESSION":"JPEG",
      "INTERLEAVE":"PIXEL",
      "SOURCE_COLOR_SPACE":"YCbCr"
    }
  },
  "cornerCoordinates":{
    "upperLeft":[
      0.0,
      0.0
    ],
    "lowerLeft":[
      0.0,
      3648.0
    ],
    "lowerRight":[
      5472.0,
      3648.0
    ],
    "upperRight":[
      5472.0,
      0.0
    ],
    "center":[
      2736.0,
      1824.0
    ]
  },

0

1 Answer 1

4

No, not quite. You would also need to know the sensor size of your camera but you might be able to find that information online. You will also need to know the height above ground (see below). Once you have the sensor size you could calculate the ground footprint using something like this handy ground sampling distance calculator(GSDC). Reproject your coordinates to some projected coordinate reference system. Then with a little math you could get the corners. This assumes your camera is pointed straight down.

This is a Hasselblad camera? Maybe a DJI Mavic Pro camera? If so, your problem is compounded by the drone's pitch, roll, and yawl as well as the camera gimbal pitch, roll, and yawl. For DJI Phantom drones these values are available in the image XMP tags. I do not know if your camera stores the pitch, roll, and yawl in an XMP or not, nor do I know whether the gimbal value takes into account the drone values or not. Some trigonometry will be required to get your footprint in that case.

GPS coordinates? These would be the location of the camera at the time of image capture and would represent the center of the image and not an image corner (again assuming the camera was pointed straight down).

Elevations? Some skill with vertical datums will be required. The GSDC requires an elevation above ground. You will need to determine if your camera is returning the height above the ellipsoid (most likely) or the height above the geoid, and you would need to have some idea of the surface elevation (in the same vertical datum) at that image point to get the height above ground. Once you sort all that out you will need to recognize and accept the fact that your GNSS enabled camera is returning values with a fair bit of vertical error.

If you have access to Agisoft Photoscan (or Metashape) you can export out the image footprints using a handy script available from the Agisoft forums or from this Github repository. I have only done this with reconstructions that used ground control so I do not know how useful this would be without ground control.

2
  • It is a DJI Mavic 2 Pro Inside the camera is a 1-inch, 20-megapixel CMOS sensor with a f/2.8-11 aperture. (is that sensor size? Sensor 1/2.3” (CMOS), Effective pixels:12.35 M (Total pixels:12.71M) (or is that sensor size)? Sorry if these are very unknowledgeable questions. Commented Oct 30, 2019 at 23:41
  • It looks like that 1/2.3" (CMOS) sensor is 6.3 x 4.7mm. See here techradar.com/how-to/….
    – GBG
    Commented Oct 31, 2019 at 14:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.