umr-lops / xsar

Synthetic Aperture Radar (SAR) Level-1 GRD python mapper for efficient xarray/dask based processing
https://cyclobs.ifremer.fr/static/sarwing_datarmor/xsar/
MIT License
28 stars 8 forks source link

raw noise vectors are not available in `datatree` #140

Closed agrouaze closed 1 year ago

agrouaze commented 1 year ago

What is given in annotations of S1 products:

'noise.range.line', 'noise.range.sample', 'noise.range.noiseLut'

and

    'noise.azi.line', 'noise.azi.line_start', 'noise.azi.line_stop',
            'noise.azi.sample_start',
            'noise.azi.sample_stop', 'noise.azi.noiseLut',
            'noise.azi.swath')

it looks like : image

note:

  1. for IW before IPF2.8 the noise what only stored are range profiles, after it is range and azimuth.
  2. for IW before 2017 the noise range vectors didn't have the same size
  3. for WV there is no noise vector in azimuth

What is currently done in xsar to get final NESZ matrix: 1) defines the images blocks (ie tiles) where noise range and noise azi are intersecting, to have an inteprolation function per block . see this part of the code defines the intersection between the subset asked by user and the noise blocks . see class _NoiseLut 3) apply patch on noise vector for WV IPF 2.9 and 2.91. : https://github.com/umr-lops/xsar/blob/905c367538bd6e698a7168d5c5119c37ce1d7dc9/src/xsar/sentinel1_dataset.py#L673 3) multiply noise_azi and noise_range to get uncalibrated noise (see https://github.com/umr-lops/xsar/blob/0620dcf49de9f27fa996152cc38ba592681d33d4/src/xsar/sentinel1_dataset.py#L365) 4) calibrate the noise to get NESZ doing NESZ = noise_values / sigma0_lut² see : https://github.com/umr-lops/xsar/blob/0620dcf49de9f27fa996152cc38ba592681d33d4/src/xsar/sentinel1_dataset.py#L1589

What can be given to SLC users:

for noise in azimuth image for noise in range image

agrouaze commented 1 year ago

so far no official paper from ESA/MPC group regarding denoising have been published.

agrouaze commented 1 year ago

fixed in #141