Inconsistency between gains read from DIMAP and used by OpticalCalibration


I’m using OpticalCalibration with Pleiades images, and I’ve observed some inconsistencies on gains values :
OTB OpticalCalibration displays these values :

Parameters extract from input image:
Acquisition Day: 6
Acquisition Month: 10
Acquisition Year: 2016
Acquisition Sun Elevation Angle: 36.1199
Acquisition Sun Azimuth Angle: 169.901
Acquisition Viewing Elevation Angle: 71.2145
Acquisition Viewing Azimuth Angle: 236.998
Acquisition gain (per band): 10.46 9.34 9.38 15.69
Acquisition bias (per band): 0 0 0 0
Solar Irradiance (per band): 1594 1830 1915 1060

whereas the DIMAP contains different values :

grep GAIN DIM_PHR1A_MS_201610061122300_SEN_1990110101-004.XML
<MEASURE_DESC>Raw radiometric count (DN) to TOA Radiance (L). Formulae L=DN/GAIN+BIAS</MEASURE_DESC>
<MEASURE_DESC>Raw radiometric count (DN) to TOA Radiance (L). Formulae L=DN/GAIN+BIAS</MEASURE_DESC>
<MEASURE_DESC>Raw radiometric count (DN) to TOA Radiance (L). Formulae L=DN/GAIN+BIAS</MEASURE_DESC>
<MEASURE_DESC>Raw radiometric count (DN) to TOA Radiance (L). Formulae L=DN/GAIN+BIAS</MEASURE_DESC>

I don’t understand why these values are different…
My Pleiades images are packaged with a DIM_.xml and one JP2 image, and I’ve launched OpticalCalibration this way :

otbcli_OpticalCalibration -in IMG_PHR1A_MS_201610061122300_SEN_1990110101-004_R1C1.JP2 -out test.tif -level toa

Configuration setup

Version of the OTB: 7.x (7.0 to 7.2)
I installed the OTB with: binaries / superbuild

Do you have any idea of what happens after metadata reading ?
By the way, it could be a nice use case to test with next OTB version :slight_smile: !

Thanks for your answers



The Pleiades metadata reader does not use the values contained in the Dimap file for the physical gain, instead, tabulated values are used. These values are :

For PHR 1A:

Dates PA B0 B1 B2 B3
From 17/12/2011 to 01/08/2012 11.75 9.52 9.62 10.55 15.73
From 01/08/2012 to 01/03/2013 11.73 9.45 9.48 10.51 15.71
From 01/03/2013 11.7 9.38 9.34 10.46 15.69

For PHR 1B:

Dates PA B0 B1 B2 B3
From 01/12/2012 12.04 10.46 10.47 11.32 15.73

These values are the “tabulate in flight values” and were provided by CNES calibration team. They are supposedly more accurate than the values provided in the DIMAP. However as you can see, these values are quite old, and might be outdated ?

Source: this comment


Hi Cédric,

Thank you for your answer.
Yes, it’s quite weird for me, because I think the DIMAP values may be updated regularly.
But I’m going to ask my colleagues, and we may change the behaviour in a next version.


Hi all,

I think this has been established in the early days of Pleiades, where DIMAP files were not up-to-date. This situation may indeed have changed, so for more recent products it might be useful to read the values in the DIMAP file instead. However, I think the behavior should be kept for older products, since I do not believe DIMAP files are reprocessed. Maybe ADS can provide a more accurate answer.

Thank you Cédric and Julien for your replies.
The CNES calibration team had provided new tabulated values for Pleiades satellites. I’m going to open an issue on this subject.



I have received Pleiades images taken during last september. I have found the values tabulated by the CNES team here :

I notice that the values in excel file are similar to the values contained in my DIMAP file. And indeed, the values read by the OpticalCalibration module are different.

If I understand well, we should use the DIMAP values instead of those read directly from the raw image, right ?

Warmest regards,

Hi Etienne,

You are right : if you don’t provide gain/bias values, as OTB doesn’t read DIMAP values, it will use outdated tabulated values.
But you can provide them in a separate text file (see here the format : thanks to the " -acqui.gainbias" parameter.
So you have to create this file from your DIMAP and provide them to OpticalCalibration application.

Hope that helps.


Thanks. That helps.
I will add one remark for calibration of Pleiades Images : The values must be written in the following order (for the multispectral image) : B2, B1, B0 and B3.

You’re right, the values must be given in that order : Red, Green, Blue, NIR.
We will add it to the documentation.

Best regards