Skip to content

Multispectral processing for an M3M is inconsistent with DJI's image processing guide #39

Description

@ckwood256

How did you install ODX (docker, installer, etc.)?

Windows installer

What's your browser and operating system? (Copy/paste the output of https://www.whatismybrowser.com/)

Firefox 140 on Windows 10

What is the problem?

This is the first of 3 issues regarding multispectral datasets, where computed multispectral orthos are found to have negative reflectance values for some or all bands. These bands should always be non-negative.

This first issue addresses computation of reflectances from the DN values of the raw images. For a DJI M3M, the current implementation appears to be inconsistent with DJI's Mavic 3M Image Processing Guide.

How can we reproduce this? (What steps trigger the problem? What parameters are you using for processing? Does it process with the default settings? Include screenshots. If you are having issues processing a dataset, you must include a copy of your dataset uploaded on Dropbox, Google Drive or https://dronedb.app)

This is basically a math and implementation problem, and has been discussed several times on discord.

DJI's guide recommends always using EXIF tag @drone-dji:BlackLevel but that is not guaranteed in odm/orthophoty.py:parse_exif_values().

Computed reflectance values are relative for the DJI M3M (and probably other cameras). That means the reflectance values should be non-negative, but the upper bound is unspecified rather than the currently implemented hard limit of 1 (which would be correct for absolute reflectances). In practice, the upper bound will be camera-dependent.

The current implementation uses a factor of pi to compute the reflectance, which is not found in the DJI guide.

Finally, the current implementation does not validate all inputs and outputs to ensure the computed reflectances are in the interval [0,+inf), making it harder to track where the negative values in the final orthos are coming from.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions