NISAR satellite backscatter coefficient image generation

Use this Forum to find information on, or ask a question about, NASA Earth Science data.
Post Reply
john6444
Posts: 27
Joined: Wed Jul 30, 2025 3:34 am America/New_York
Answers: 0
Endorsed: 1 time

NISAR satellite backscatter coefficient image generation

by john6444 » Sat Mar 07, 2026 7:37 am America/New_York

Dear Sir or Madam,

Recent launched NISAR satellite gives a new insight of earth surface dynamics by L-band and S-band SAR sensors. I have checked the public data products released by NASA Earthdata and Alaska Satellite Facility, and find that backscatter coefficient data are not included. Therefore, I utilized two polarization modes "HH" and "HV" within "frequencyA" group of the Geocoded Single Look Complex (GSLC) product (filename: "NISAR_L2_PR_GSLC_003_128_D_068_4005_DHDH_A_20251026T020535_20251026T020610_X05009_N_F_J_001.h5") to generate backscatter coefficient image as a demonstration with following steps:

(1) single look complex to intensity: Intensity = I² + R², where "I" means the imaginary part of the "HH" or "HV" polarization in frequencyA group. "R" means the real part of the "HH" or "HV" polarization in frequencyA group.

(2) intensity to linear backscatter coefficient: sigma_naught_linear = gain * intensity, where "sigma_naught_linear" means linear backscatter coefficient, "gain" means calibration constant which is obtained from "scaleFactor" field of each polarization mode.

(3) linear to decibel conversion: sigma_naught_decibel = 10 * log10(sigma_naught_linear), where "sigma_naught_decibel" means final generated backscatter coefficient image.

Final generated "HH" and "HV" backscatter coefficient images and comparison with simultaneous Sentinel-1 VV image are shown in figure "NISAR_HH_and_Sentinel_VV.png" and "NISAR_HV_and_Sentinel_VV.png", respectively. Also, previous studies pointed out that thermal noise (e.g., Mascolo et al., 2021) needs to be removed for backscatter coefficient generation of Sentinel-1 satellite, but I am not sure does this issue also exist in the NISAR satellite. Any suggestion and guidance about backscatter coefficient image generation procedure of NISAR satellite described herein is welcome.

Thanks advance for your time.

Cheers,
Jw

References:
[1] Mascolo, L., Lopez-Sanchez, J. M., & Cloude, S. R. (2021). Thermal noise removal from polarimetric Sentinel-1 data. IEEE Geoscience and Remote Sensing Letters, 19, 1-5.
Attachments
NISAR_HV_and_Sentinel_VV.png
NISAR_HV_and_Sentinel_VV.png
NISAR_HH_and_Sentinel_VV.png
NISAR_HH_and_Sentinel_VV.png
by hfattahi » Thu Mar 12, 2026 2:22 am America/New_York
Thanks for your post. Your approach to convert the GSLC backscatter to sigma-0 is not correct.
The RSLC and subsequently GSLC are provided as Beta-0 with respect to an ellipsoid. If you want to convert to sigma-0 you must use the sigma-0 correction factor which is included in theGSLC products at the following path:

['science/LSAR/GSLC/metadata/calibrationInformation/geometry/sigma0']

This is a low resolution two dimensional look up table whose 1-D vector of coordinates are also provided as
h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/xCoordinates']
h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/yCoordinates']

The user needs to create an interpolator for this low resolution 2D LUT and interpolate for the grid of GSLC data. Once the interpolated sigma0_correction_factor is obtained, then you can get the sigma0 as:

sigma0 = abs(GSLC)**2 / sigma0_correction_factor**2

This can then be converted to dB as

sigma0_db = 10*log10(sigma0)

Please see section 4.5.2.1 in the product specification document for GSLC in the following path:

https://d1mv8zhcvry6x4.cloudfront.net/s3-7fdfbcb0ce308dc58d08f97acb1f0590/sds-n-cumulus-prod-nisar-sample-data.s3.us-west-2.amazonaws.com/DOCS/NISAR_D-102269_RevE_NASA_SDS_Product_Specification_L2_GSLC_Nov8_2024_w-sigs.pdf?A-userid=hfattahi&Expires=1773298713&Signature=Ty1m8Rl3kA9WHxSOq1PYZXN3eqDkvkR0eZPSjsY3dFgIuCG2pJQovTu4SsOs5k1qdtNXlY9g7h0FvB~Iw0kyNMzz3kWgrjtXan2~TwdIijhmqWcUrjY5XcMqMrc3il2VsKb1UiVPo6ySIgVeyFIbe0CNWC6H~JmdC3n7IN1-kOrrDKU3Bndeqh9iK5scRs3GFUF0NNJ7TU9QF4rphPgSIrNjn0vp0cWQdX~Wr4hgorYTCAwKYCAS8OS-vF~I93vE-my4IOrm4Q~39AoKNNrvZuN5fod4-IPzZ5YV9H93UgS1klfsKDQxpZrI-xlR8cye5twAd8ydXgNX3HvzbdtUyA__&Key-Pair-Id=K1MF06CKIT7LR7

Note that you can simply use scipy for the interpolation of the LUT. Here is a code snippet for what explained above:

import h5py
import numpy as np
from scipy.interpolate import RegularGridInterpolator

h5 = h5py.File(gslc_file, 'r')

# I'm extracting a subset of GSLC data
hh = h5['science/LSAR/GSLC/grids/frequencyA/HH'][10000:40000, 10000:40000]
x = h5['science/LSAR/GSLC/grids/frequencyA/xCoordinates'][10000:40000]
y = h5['science/LSAR/GSLC/grids/frequencyA/yCoordinates'][10000:40000]

# Look Up Table (LUT) of correction factor to convert GSLC Beta-0 to sigma-0
sigma0_correction_factor = h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/sigma0'][:]
sigma0_x = h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/xCoordinates'][:]
sigma0_y = h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/yCoordinates'][:]

# Now let's create and interpolator for the LUT and interpolate it over the grid of hh data.

# 1. Create the interpolator from the low-resolution LUT
interp_func = RegularGridInterpolator(
(sigma0_y, sigma0_x),
sigma0_correction_factor,
bounds_error=False,
fill_value=None # Extrapolates if coordinates are slightly outside bounds
)

# 2. Create a grid of coordinates corresponding to your high-resolution 'hh' raster
# 'indexing=ij' ensures that yy corresponds to rows and xx to columns
yy, xx = np.meshgrid(y, x, indexing='ij')

# 3. Reshape coordinates into a list of points (N, 2) for the interpolator
pts = np.vstack([yy.ravel(), xx.ravel()]).T

# 4. Interpolate the LUT to get the correction factor for every pixel in 'hh'
correction_factor_hh = interp_func(pts).reshape(hh.shape)

# 5. Convert Beta-0 to Sigma-0
sigma0_hh = np.abs(hh)**2 / correction_factor_hh**2
Go to full post

Filters:

ASF - hjkristenson
Subject Matter Expert
Subject Matter Expert
Posts: 15
Joined: Mon Aug 08, 2022 1:41 pm America/New_York
Answers: 3
Endorsed: 1 time

Re: NISAR satellite backscatter coefficient image generation

by ASF - hjkristenson » Mon Mar 09, 2026 3:21 pm America/New_York

Have you evaluated the GCOV products, or are you looking specifically for non-terrain-corrected data?
While the GCOV products present normalized radar backscatter in gamma-nought power, they also include a layer for conversion to sigma-nought. They also contain the calibration layers used, including noiseEquivalentBackscatter, as described in the product specification document.
Heidi Kristenson
Senior GIS Specialist
Alaska Satellite Facility

john6444
Posts: 27
Joined: Wed Jul 30, 2025 3:34 am America/New_York
Answers: 0
Endorsed: 1 time

Re: NISAR satellite backscatter coefficient image generation

by john6444 » Mon Mar 09, 2026 10:02 pm America/New_York

Hi Heidi Kristenson,

Thank you for your help! I will dig into GCOV products.

Cheers,
Jw

ASF - hjkristenson
Subject Matter Expert
Subject Matter Expert
Posts: 15
Joined: Mon Aug 08, 2022 1:41 pm America/New_York
Answers: 3
Endorsed: 1 time

Re: NISAR satellite backscatter coefficient image generation

by ASF - hjkristenson » Tue Mar 10, 2026 1:02 pm America/New_York

If you're interested in comparing the NISAR GCOV products to similar Sentinel-1 data, the OPERA RTC-S1 products provide terrain-corrected radar backscatter in gamma-nought power for Sentinel-1 acquisitions.
Heidi Kristenson
Senior GIS Specialist
Alaska Satellite Facility

john6444
Posts: 27
Joined: Wed Jul 30, 2025 3:34 am America/New_York
Answers: 0
Endorsed: 1 time

Re: NISAR satellite backscatter coefficient image generation

by john6444 » Tue Mar 10, 2026 11:50 pm America/New_York

Thanks again for your help! I notice that current NISAR Beta Geocoded Polarimetric Covariance Product (Version 1) is not intended for use in scientific research, thus I am just gaining familiarity with it.

Have a nice day!

Cheers,
Jw

ASF - bhauer
User Services
User Services
Posts: 47
Joined: Thu Dec 12, 2024 5:54 pm America/New_York
Answers: 0

Re: NISAR satellite backscatter coefficient image generation

by ASF - bhauer » Wed Mar 11, 2026 5:40 pm America/New_York

You are correct. The NISAR products released to date are uncalibrated data intended to help users become familiar with the data and develop workflows. The fully calibrated, global data release is scheduled for June 2026.

Thanks for your input!
Bill Hauer
Alaska Satellite Facility DAAC
User Support Office
uso@asf.alaska.edu

hfattahi
Posts: 1
Joined: Thu Feb 26, 2026 11:44 am America/New_York
Answers: 1
Endorsed: 1 time

Re: NISAR satellite backscatter coefficient image generation

by hfattahi » Thu Mar 12, 2026 2:22 am America/New_York

Thanks for your post. Your approach to convert the GSLC backscatter to sigma-0 is not correct.
The RSLC and subsequently GSLC are provided as Beta-0 with respect to an ellipsoid. If you want to convert to sigma-0 you must use the sigma-0 correction factor which is included in theGSLC products at the following path:

['science/LSAR/GSLC/metadata/calibrationInformation/geometry/sigma0']

This is a low resolution two dimensional look up table whose 1-D vector of coordinates are also provided as
h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/xCoordinates']
h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/yCoordinates']

The user needs to create an interpolator for this low resolution 2D LUT and interpolate for the grid of GSLC data. Once the interpolated sigma0_correction_factor is obtained, then you can get the sigma0 as:

sigma0 = abs(GSLC)**2 / sigma0_correction_factor**2

This can then be converted to dB as

sigma0_db = 10*log10(sigma0)

Please see section 4.5.2.1 in the product specification document for GSLC in the following path:

https://d1mv8zhcvry6x4.cloudfront.net/s3-7fdfbcb0ce308dc58d08f97acb1f0590/sds-n-cumulus-prod-nisar-sample-data.s3.us-west-2.amazonaws.com/DOCS/NISAR_D-102269_RevE_NASA_SDS_Product_Specification_L2_GSLC_Nov8_2024_w-sigs.pdf?A-userid=hfattahi&Expires=1773298713&Signature=Ty1m8Rl3kA9WHxSOq1PYZXN3eqDkvkR0eZPSjsY3dFgIuCG2pJQovTu4SsOs5k1qdtNXlY9g7h0FvB~Iw0kyNMzz3kWgrjtXan2~TwdIijhmqWcUrjY5XcMqMrc3il2VsKb1UiVPo6ySIgVeyFIbe0CNWC6H~JmdC3n7IN1-kOrrDKU3Bndeqh9iK5scRs3GFUF0NNJ7TU9QF4rphPgSIrNjn0vp0cWQdX~Wr4hgorYTCAwKYCAS8OS-vF~I93vE-my4IOrm4Q~39AoKNNrvZuN5fod4-IPzZ5YV9H93UgS1klfsKDQxpZrI-xlR8cye5twAd8ydXgNX3HvzbdtUyA__&Key-Pair-Id=K1MF06CKIT7LR7

Note that you can simply use scipy for the interpolation of the LUT. Here is a code snippet for what explained above:

import h5py
import numpy as np
from scipy.interpolate import RegularGridInterpolator

h5 = h5py.File(gslc_file, 'r')

# I'm extracting a subset of GSLC data
hh = h5['science/LSAR/GSLC/grids/frequencyA/HH'][10000:40000, 10000:40000]
x = h5['science/LSAR/GSLC/grids/frequencyA/xCoordinates'][10000:40000]
y = h5['science/LSAR/GSLC/grids/frequencyA/yCoordinates'][10000:40000]

# Look Up Table (LUT) of correction factor to convert GSLC Beta-0 to sigma-0
sigma0_correction_factor = h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/sigma0'][:]
sigma0_x = h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/xCoordinates'][:]
sigma0_y = h5['science/LSAR/GSLC/metadata/calibrationInformation/geometry/yCoordinates'][:]

# Now let's create and interpolator for the LUT and interpolate it over the grid of hh data.

# 1. Create the interpolator from the low-resolution LUT
interp_func = RegularGridInterpolator(
(sigma0_y, sigma0_x),
sigma0_correction_factor,
bounds_error=False,
fill_value=None # Extrapolates if coordinates are slightly outside bounds
)

# 2. Create a grid of coordinates corresponding to your high-resolution 'hh' raster
# 'indexing=ij' ensures that yy corresponds to rows and xx to columns
yy, xx = np.meshgrid(y, x, indexing='ij')

# 3. Reshape coordinates into a list of points (N, 2) for the interpolator
pts = np.vstack([yy.ravel(), xx.ravel()]).T

# 4. Interpolate the LUT to get the correction factor for every pixel in 'hh'
correction_factor_hh = interp_func(pts).reshape(hh.shape)

# 5. Convert Beta-0 to Sigma-0
sigma0_hh = np.abs(hh)**2 / correction_factor_hh**2

john6444
Posts: 27
Joined: Wed Jul 30, 2025 3:34 am America/New_York
Answers: 0
Endorsed: 1 time

Re: NISAR satellite backscatter coefficient image generation

by john6444 » Thu Mar 12, 2026 11:17 pm America/New_York

Thank you for your detailed explanation and code example of backscatter coefficient image generation from GSLC product. I will give it a try in these days.

Thanks again for your kindness and help!

Cheers,
Jw

ASF - hjkristenson
Subject Matter Expert
Subject Matter Expert
Posts: 15
Joined: Mon Aug 08, 2022 1:41 pm America/New_York
Answers: 3
Endorsed: 1 time

Re: NISAR satellite backscatter coefficient image generation

by ASF - hjkristenson » Mon Mar 16, 2026 2:46 pm America/New_York

hfattahi wrote: Thu Mar 12, 2026 2:22 am America/New_York Please see section 4.5.2.1 in the product specification document for GSLC in the following path:
If that link doesn't work for you, try this:
https://nisar.asf.earthdatacloud.nasa.gov/NISAR-SAMPLE-DATA/DOCS/NISAR_D-102269_RevE_NASA_SDS_Product_Specification_L2_GSLC_Nov8_2024_w-sigs.pdf
Heidi Kristenson
Senior GIS Specialist
Alaska Satellite Facility

john6444
Posts: 27
Joined: Wed Jul 30, 2025 3:34 am America/New_York
Answers: 0
Endorsed: 1 time

Re: NISAR satellite backscatter coefficient image generation

by john6444 » Mon Mar 16, 2026 10:08 pm America/New_York

Thanks again for your help!

Cheers,
Jw

Post Reply