×

back Annotation location reports

A detailed description of the annotation position estimation of the annotation location report.

The annotation location report contains estimated annotation positions on a world map. The report file format is newline delimited GeoJSON which can be imported in a GIS software such as QGIS.

The annotation location report requires several fields for image metadata to compute the estimated annotation positions. In addition, the positions are computed based on a number of assumptions which are described below.

The annotation positions are only an estimate and will likely not reflect the actual real-world positions!

Required metadata

The annotation location report requires the following image metadata fields. Images or volumes where this information is not available will be ignored for the report.

  • latitude and longitude
  • distance to ground
  • yaw
  • width and height1

1The image width and height is determined automatically by BIIGLE when a new volume is created. It may take a few minutes for all images to be processed.

Assumptions

The estimated annotation positions are calculated based on the following assumptions. Please bear in mind that these assumptions are never 100% met in a real environment and therefore the annotation positions are just estimates.

  1. Image coordinates: The image latitude and longitude is assumed to specify the position of the image center.
  2. Camera opening angle: The camera opening angle is assumed to be 90°.
  3. Camera orientation: The camera is assumed to point straight down to the ground.
  4. Yaw: A yaw of 0° is assumed to point north, 90° to point east.
  5. Pixel shape: A pixel of the image is assumed to have a square shape.

Position estimation

The annotation position estimation is performed in multiple steps:

  1. The annotation position relative to the image center is calculated (annotation offset) and then rotated according to the yaw around the image center.

  2. The annotation offset in pixels is transformed to the offset in meters. For this, the assumptions about the camera opening angle and orientation are used. If the opening angle is 90° and the camera points straight down, the width of the image content can be assumed to be twice the distance of the camera to the sea floor (as the camera viewport is a right-angled triangle). The image width in meters determines the width of a single pixel (which is assumed to be a square) in meters, which in turn is used to transform the annotation offset to meters.

  3. The final annotation position on the world map is determined by shifting the image center latitude/longitude coordinates by the previously calculated offset of the annotation in meters. The coordinate shift is calculated using the following simplified flat earth calculation in pseudo code (reference):

    // Position, decimal degrees.
    lat
    lon
    
    // Offsets in meters (north, east).
    dn
    de
    
    // Earth's radius, sphere.
    R = 6378137
    
    // Coordinate offsets in radians.
    dLat = dn / R
    dLon = de / (R * COS( PI * lat / 180 ))
    
    // Offset position, decimal degrees.
    latO = lat + dLat * 180 / PI
    lonO = lon + dLon * 180 / PI
    

    If the previously mentioned assumptions are met, the displacement error introduced by this calculation should be quite small, as the offset from the image center position should be very small as well.

Filtering in QGIS

Filtering of an annotation location report is done in the same way than filtering of an image annotation image location report. However, the annotation location report contains a different and fixed set of properties for each annotation. The most important properties are probably "_label_name" and "_label_id", which allow you to filter the annotation positions based on the label that is attached to the annotation. For example, a query to show only positions of annotations that have the "Sponge" label attached may look like this:

"_label_name" = 'Sponge'

Please note the different use of "" to enclose a field identifier and '' to enclose a fixed string.