Exif/Xmp tags required for radiometric correction for multispectral camera - PIX4Dmapper

This article discusses different radiometric correction types and the list of the Exif/XMP tags that are required by the software to successfully perform the respective radiometric correction. When producing a reflectance map, the image pixel value depends on many factors, which need to be corrected in order to get a radiometrically trustful measure of the terrain reflectance. These factors include:

  • Sensor settings: exposure time, shutter speed, ISO, aperture.
  • Sensor properties: light transmission in the optics, sensing, and digitization in the chip.
  • Scene conditions: incoming sunlight, camera location, and orientation.

The radiometric correction solves that problem by compensating for external variables in order to estimate a physical property of the scene, by taking the scene illumination and sensor influence into consideration. Radiometric correction of multispectral images can be performed during Step 3. DSM, Orthomosaic, and Index of a project.

When generating the reflectance map, PIX4Dmapper uses the information that is available in the metadata of the images. Depending upon the available information, PIX4Dmapper can do one of the following corrections.

I. Camera only

To be able to perform basic camera radiometric corrections, at a minimum the following tags are required:

  • Exif.Photo.ExposureTime
  • Exif.Photo.FNumber
  • Exif.Photo.ISOSpeedRatings

Further tags are required for a more elaborate correction, as detailed below.

By default, a camera-level radiometric correction is done if at least the three basic tags mentioned above plus either the radiometric sensitivity or the color correction matrix are found.

Dark current

Xmp.Camera.BlackCurrent indicates the dark or black current, i.e. the value without any light. The tag should contain one scalar value per channel, the dark current is assumed uniform for all pixels on this band.

It is also possible to use the standard tags Exif.Image.BlackLevel and Exif.Image.BlackLevelRepeatDim.

Radiometric sensitivity

Xmp.Camera.BandSensitivity contains the radiometric sensitivity of each channel.


Vignetting is a non-uniformity caused by spatially different transmissivity in the camera. The vignetting map quantifies the spatial transmissivity normalized to a maximum value of 1. Typically, a camera transmits more in the center than at the borders, thus the vignetting map is 1 in the center and smaller than 1 towards the borders. The information for the vignetting map can be provided in the form of an analytical approximation either as a 2D polynomial or as a radial polynomial.

Radial polynomial

The polynomial is of the form:


with (Cx, Cy) read from Xmp.Camera.VignettingCenter and the coefficients ci read from Xmp.Camera.VignettingPolynomial.

2D polynomial

The polynomial is of the form:


The tag Xmp.Camera.VignettingPolynomial2DName contains the i and j values of c{i,j} and the value of c{i,j} is stored in Xmp.Camera.VignettingPolynomial2D.

For example, Xmp.Camera.VignettingPolynomial2DName={"0,0,1,0, ..., 2,2,3,1"} and Xmp.Camera.VignettingPolynomial2D={0.633287676149, 1.47936368033, ..., -1.58329242609, 0.130259802058} means c_{0,0}=0.633287676149, c_{1,0}=1.47936368033, etc...

Color transform

If the different bands have overlapping spectral sensitivity, a color correction matrix can be applied to unmix the bands. This is a quadratic n x n matrix, where n is the number of channels, and it is applied to each pixel. It is tagged in Xmp.Camera.ColorTransform.

Invalid pixels

Xmp.Camera.InvalidPixel contains a list of invalid (e.g. hot or dead) pixels, as a list of (x, y) coordinates.

II. Sun Irradiance

Some multispectral cameras come equipped with a downwelling light sensor (DLS), also called as sun sensor, sky sensor, or sunshine sensor, which captures the incoming radiation from the sun. Such sensors provide a record of the light conditions during the flight in the same spectral bands as the one captured by the multispectral sensor.

Provided with such information, PIX4Dmapper can normalize the images captured during the flight and thus allows for comparing images taken in different illumination conditions.

Below is the list of XMP tags used for Sun Irradiance correction.

  • Xmp.Camera.SunSensor contains the raw value (in digital counts), one scalar for each channel of the image. It can also contain irradiance in physical units if Xmp.Camera.SunSensorExposureTime and Xmp.Camera.SunSensorSensitivity are not tagged.
  • Xmp.Camera.SunSensorExposureTime contains the exposure time of the sun sensor, in seconds.
  • Xmp.Camera.SunSensorSensitivity contains the sensitivity of the sun sensor.

In addition to the sun sensor value tags, angle correction is done by default if the sun sensor orientation tags are provided, i.e. either the relative angle of the sun sensor w.r.t. the camera ("Sun angle") or an IMU orientation estimation of the sun sensor ("Sun angle using DLS IMU").

a. Sun angle

This radiometric correction takes into account the direction of the incoming sun ray, and its projection onto the scene and onto the sun sensor.

If the sun sensor is rigidly connected with the camera and synchronized, the two form a rig. In that case, the relative orientation should be tagged in Xmp.Camera.SunSensorRelativeRotation as Euler angles in the omega, phi, kappa system (same as rig relatives). An example is Sequoia with Parrot Disco-Pro AG or senseFly eBee drones. This is more precise than using the DLS IMU, because in contrast to photogrammetrically derived orientation, the IMU is liable to drift.

Note: This option should only be used for the flights that were performed in clear sky conditions

b. Sun angle using DLS IMU

If the sun sensor and the camera are not in a fixed geometry, for example, because the sun sensor was fixed randomly on the drone, a gimbal is used, or the sun sensor and the camera are not synchronized, then the orientation of the sun sensor cannot be derived from the camera orientation. If the sun sensor has an IMU inside it, the orientation estimate from that can be used for the sun angle correction instead.

If there is an IMU embedded in the sun sensor, the orientation should be tagged in Xmp.Camera.SunSensorYaw, Xmp.Camera.SunSensorPitch, and Xmp.Camera.SunSensorRoll (in degree).

Note: This option should only be used for the flights that were performed in clear sky conditions

Legacy tags

Those tags are read for legacy reasons if the primary ones are not present, but should no longer be used in new designs.

Deprecated alternative