Camera XMP Specification

This document specifies the Camera XMP tags.

 

 Camera

Key Value example Type Meaning
Xmp.Camera.ModelType "fisheye" Ascii Camera model type: one of "perspective" or "fisheye".
Xmp.Camera.PrincipalPoint 2.42299,1.850154 Ascii cx, cy in millimetres separated by comma.
Xmp.Camera.PerspectiveFocalLength 4.569165 double For perspective camera: focal length in millimetres.
Xmp.Camera.PerspectiveDistortion

0.201690322,-0.358534038,

0.256185599,

0.004208643,0.000268361

Ascii For perspective camera: R1, R2, R3, T1, T2 separated by comma: 202559089.
Xmp.Camera.FisheyeAffineMatrix

1583.319083002,0,0,

1583.319083002

Ascii For fisheye camera: Affine matrix C, D, E, F separated by comma: 202559089.
Xmp.Camera.FisheyeAffineSymmetric 1 Boolean For fisheye camera: If symmetric affine matrix should be used (default false).
Xmp.Camera.FisheyePolynomial

0,1,-0.025178575,

0.167834214

Ascii
For fisheye camera: Polynomial separated by comma: 202559089.
 
Xmp.Camera.RigName Airinov multiSPEC4C 1.1 XmpText Name of the rig model this image belongs to.
Xmp.Camera.RigCameraIndex 0 Short Corresponding camera index within the rig model.
Xmp.Camera.RigRelatives 0.3836, -1.27665, -0.1156 Short Rotation angles with respect to the reference camera. For angle convention in Pix4D: 202558969.

 

 

 Radiometric correction

Key Value example Type Meaning
Xmp.Camera.BandName {"Red", "NIR"} XmpSeq Name of each band (sequence).

Single page image: one name for each band of the image.
Multipage image: one band name per image page. (Note: this allows only one band per page, since sequence of sequence is not possible).
Xmp.Camera.CentralWavelength {660, 800} XmpSeq Central wavelength of each band in nm. Similar to band names. If band names are not defined, default band names are generated.
Xmp.Camera.WavelengthFWHM {10, 10} XmpSeq Full width half maximum of the wavelength distribution in nm.
Xmp.Camera.BlackCurrent

{10, 7}

XmpSeq Dark current for each band/page: 115001846106.
Xmp.Camera.BandSensitivity {0.78, 0.043} XmpSeq The sensitivity of each band (pixel intensity value per irradiance).
Xmp.Camera.Irradiance {12.87, 9.72} XmpSeq Irradiance of the sun (upwards looking sensor) for each band; can also be a scalar in which case it is the average sun irradiation and it is assumed that all bands change in the same way.
Xmp.Camera.InvalidPixel {"40,593,981,291"} XmpSeq List of bad pixels as comma-separated x,y coordinate list, one sequence for each band.
Xmp.Camera.VignettingPolynomial {"0.00325, 1.983e-6, 5.0983e-9"} XmpSeq Vignetting correction by radial polynomial: 1D polynomial coefficients (one string of comma-separated values per page, 1 string for RGB images): 115001846106.
Xmp.Camera.VignettingCenter {"542,912"} XmpSeq Vignetting correction by radial polynomial: Center point cx, cy in pixel (one string of comma-separated values per page): 115001846106.
Xmp.Camera.VignettingPolynomial2DName {"0,0,1,0, ..., 2,2,3,1"} XmpSeq Vignetting correction by 2D polynomial: name of coefficients: n,m for c_{n,m} separated by commas (one string of comma-separated values per page): 115001846106.
Xmp.Camera.VignettingPolynomial2D {"0.633287676149, 1.47936368033, ..., -1.58329242609, 0.130259802058"} XmpSeq Vignetting correction by 2D polynomial: coefficients c_{n,m} for names given by Xmp.Camera.VignettingPolynomial2DName separated by commas (one string of comma-separated values per page): 115001846106.
Xmp.Camera.ColorTransform

{1, -0.114886,-0.0456918,

-0.176716, 1, 0,

-0.0715561, 0, 1}

XmpSeq Sequence of double, color conversion matrix (for RGB: R2R, G2R, B2R, R2G, G2G, B2G, R2B, G2B, B2B). Considering the information as a 3x3 matrix M, (R,G,B)<sub>new</sub>= M * (R,G,B).
Xmp.Camera.IsNormalized 1 XmpSeq Defines whether radiometric correction is required (value 0) or the data has already been corrected (value 1) and therefore should not be corrected.

 

Radiometric Calibration Target

Key Value example Type Meaning
Xmp.Camera.Albedo {0.22, 0.19 , 0.37} XmpSeq For radiometric calibration target images: Albedo of the disk for each band/page.
Xmp.Camera.ReflectArea {"X1,Y1,X2,Y2,X3,Y3,X4,Y4", "X1,Y1,...", ...} XmpSeq For radiometric calibration target images: polygon defining the target area for each page.
Xmp.Camera.CalibrationPicture 2 Short Specifies if this image is a radiometric calibration target: 0 = no, 1 = yes but invalid, 2 = yes and valid.

 

 Position and orientation

Key Value example Type Meaning
Xmp.Camera.Yaw 72.7942 Rational or Double Orientation data degrees. For more information on the definition of yaw, pitch, roll: 205675256.
Xmp.Camera.Pitch 1.7943 Rational or Double Orientation data degrees. For more information on the definition of yaw, pitch, roll: 205675256.
Xmp.Camera.Roll 2.8909 Rational or Double Orientation data degrees. For more information on the definition of yaw, pitch, roll: 205675256.
Xmp.Camera.GPSXYAccuracy 5 Rational Horizontal GPS Accuracy in meters.
Xmp.Camera.GPSZAccuracy 10 Rational Vertical GPS Accuracy in meters.
Xmp.Camera.GyroRate 0.0487 Rational Gyro rate during image acquisition, lower = better quality.
Xmp.Camera.IMUAngularVelocity   XmpString Base64 encoded array of floats (gyrX gyrY gyrZ) for each sample in radian/s. The x, y and z axes are the standard image axes: centered on the upper left corner, x is horizontal (going right), y is vertical (going down), z is going towards the scene (inside the image). Angles are in counter-clockwise direction. The order of the rotations is: rotX, rotY, rotZ.
Xmp.Camera.IMUFrequency   Double The sample frequency of Xmp.Camera.IMUAngularVelocity in Hz.
Xmp.Camera.IMUTimeOffset   Double The time offset between the first IMU sample and the beginning of the image readout in nanoseconds.
Xmp.Camera.IMULinearVelocity   XmpString 3-vector separated by comma (v_x, v_y, v_z) representing the linear velocity in m/s. The x, y and z axes are the standard image axes: centered on the upper left corner, x is horizontal (going right), y is vertical (going down), z is going towards the scene (inside the image).
Xmp.Camera.NominalCameraDistance 25.87 Rational Nominal GPS distance between calibrated cameras in meters in order to have a decent overlap. Use to dynamically remove the cameras with worst quality as determined by the GyroRate such the the target distance is as specified.
Xmp.Camera.AboveGroundAltitude 25.3 Rational or Double Altitude above ground/take-off location in meters (from the altimeter of the drone).

 

Bit-depth reduction

Key Value example Type Meaning
Xmp.Camera.TransformAlpha {55684.1, 58672.8, 58889.1} XmpSeq

Sequence of double, alpha parameter for each band.

This and the following two tags are used to undo a gamma transform which has been applied to fit data in 8bit space without loosing the dynamic range:
pixel_final = alpha * pixel_normalized^gamma + beta;

where pixel_normalized is the pixel value stored in the JPG image scaled to the [0,1] interval.

Xmp.Camera.TransformBeta {9850.9, 6862.2, 6645.91} XmpSeq Sequence of double, beta parameter for each band.
Xmp.Camera.TransformGamma {2.12109, 2.6243, 2.33549} XmpSeq Sequence of double, gamma parameter for each band.

 

 Miscellaneous

Key Value example Type Meaning
Xmp.Camera.SensorBitDepth 14 Short Bit depth of the original sensor.
Xmp.Camera.SensorTemperature 43.4 Double Temperature of the sensor [degree Celsius].
Was this article helpful?
1 out of 1 found this helpful