Features
Key Features
UAV Imagery to Mesh

UAV imagery to mesh

Vadstena pipeline

This pipeline processes UAV captured imagery(with certain metadata) to a 3D ouput scene represented by point cloud and true ortho.

Input

The UAV pipeline is currently designed to process single-camera, single-flight line imagery.

One asset should be created with all the images together.

When creating an asset, the assetType UAV_IMAGES_UPLOAD should be used. The groupedAssetId returned when creating the asset should be saved to trigger the pipeline.


How to create and upload an asset on HxDR using GraphQL API ?

RGB images:

  • 8bit JPEG high quality (QFactor>=95, must be free of JPEG artefacts)

File structure:

  • A single directory containing all images
  • Ideally, the alphabetic order of image filenames should correspond to capture timestamps
⚠️

Note that the UAV processing pipeline can process input datasets with a maximum of ~2000 JPEG images.

Camera Intrinsics

Some information about the employed camera is extracted from the EXIF header of the supplied imagery.

The following fields are required:

  • Focal Length (0x920a FocalLength)
  • Focal Length in 35mm (0xa405 FocalLengthIn35mmFormat)

The following fields are preferred to be included, but not critical:

  • Manufacturer
  • Model

GNSS + RTK positioning

GNSS positions of individual image captures are extracted from the EXIF header or preferably from the XMP header of supplied images if present.

Latitude and longitude refs are always parsed from EXIF, so the following tags are always required:

  • GPS Latitude Ref (0x0001 GPSLatitudeRef)
  • GPS Longitude Ref (0x0003 GPSLongitudeRef)

Then, it is required that at least one of the following set of tags is present (if multiple, XMP is always preferred over EXIF):

  • EXIF tags in GPS IFD
    • GPS Latitude (0x0002 GPSLatitude)
    • GPS Longitude (0x0004 GPSLongitude)
    • GPS Altitude (0x0006 GPSAltitude)
  • DJI tags in XMP header:
    • drone-dji:GpsLatitude
    • drone-dji:GpsLongtitude
    • drone-dji:AbsoluteAltitude
  • Hexagon tags in XMP header:
    • prefix2:Latitude
    • prefix2:Longitude
    • prefix2:EllipsoidalHeight

Capture

Both nadir and oblique images are supported and can be mixed in a single flight line. However, datasets including images looking at the horizon are not yet supported.

Only images overlapping the AOI should be provided for processing.

Processing

Once the asset upload is completed the following mutation can be used, make sure to use the correct groupedAssetId and EPSG code:


Manually trigger the UAV processing pipeline
mutation MyMutationName {
  triggerUavProcessing(
    params: {
      groupedAssetId: "[groupedAssetId]"
      outputProjection: "EPSG:8726"
    }
  ) {
    ... on TriggerProcessingOutput {
      __typename
      success
    }
    ... on BaseProcessingErrorInterface {
      __typename
      message
    }
  }
}

A GroupedAsset is a symbolic link to the underneath Asset and the files connected to it. Every grouped asset gets an ID, when it is created. This groupedAssetId for the input images as single asset is used here to triggger the mesh generation.

Output

Once the processing is triggered, certain artefacts and addresses will be made available for the asset. However, once the processingPipelineInfo.status is SUCCESS, the output files will be available for download.

  • For the point cloud: artefacts with dataCategory:POINT_CLOUD and Address serviceType:LAS
  • For the TrueOrtho: artefacts with dataCategory:IMAGE_2D_ORTHO and Address serviceType:GEOTIFF