isce-framework / s1-reader

Sentinel-1 reader
Apache License 2.0
26 stars 12 forks source link

read calibration and noise annotation: #27

Open hfattahi opened 2 years ago

hfattahi commented 2 years ago

Checked for duplicates

Yes - I've already checked

Alternatives considered

Yes - and alternatives don't suffice

Related problems

Sentinel-1 SLC data are provided as DN numbers. A user can convert the DN numbers to beta0, sigma0 or gamma by applying a calibration factor to the DN values as:

value(i) = |DN_i|^2/A_i^2

where A_i is one of beta0, sigma0, or gamma0 LUTs.

The users would interpolate LUTs with a bilinear interpolation to get A_i at any pixel of interest.

To be able to apply these conversions, the sentinel-1 reader needs to extract any of those LUTs.

Similarly a user can comute the noise equivalent sigma0, beta0, gamma0 or original DN and correct the power. Essentially as suggested by ESA spec, one can correct for noise and scale to calibrated data in one shot as:

value(i) = (|DN_i|^2 - eta_i)/A_i^2

eta_i is the noise power interpolated from the noise LUT.

Describe the feature request

The s1-reader needs to read the LUTs for any of the sigmaNought, betaNought or gamma from one of the calibration files in the *.SAFE/annotation/calibration/calibration*xml files. Similar to the annotaion file which the reader already understands there are 3 calibration files for three sub-swaths.

The reader also needs to read the LUT for the noise power which is located at *.SAFE/annotation/calibration/noise*xml

hfattahi commented 2 years ago

CC: @vbrancat and @gshiroma @yunjunz @jungkyoJung