Comparison of GRD products (original GRD, SLC converted to GRD, GRD from Google Earth Engine)

Hi everyone.
I compared the ‘GRD products’ to see how close or different they are. These are:

  • level 1-SLC converted to GRD
  • level 1-GRD
  • GRD from Google Earth Engine

I want to gather insights/comments regarding the results I got. :nerd_face:
Also, I have these questions:

  1. From my results, GRD and SLC converted to GRD have around 0.70 coefficient of correlation and around 0.40 𝑹^𝟐. Are these results acceptable? About how much correlation should really be expected from these products?
  2. Pre-processed original GRD and GRD from GEE have very high correlation, but still a little bit different. Did the absence of speckle filtering in GRD from GEE mainly contributed to this difference?
  3. Despite the presence of clamping of values and very low backscatter values, the mean values of GEE(GRD) are close to SLC(GRD) and GRD?

The products used were:

  1. S1A_IW_SLC__1SDV_20171029T213116_20171029T213143_019033_0202F9_B14D
  2. S1A_IW_GRDH_1SDV_20171029T213116_20171029T213141_019033_0202F9_5855
  3. corresponding GEE image for the same date

The comparison was limited to a 10,000 has. subset equivalent to around 1 million pixels (10m resolution).
The location of this subset is forested in most parts. I only computed for VH and VV.

All products were pre-processed in order to be comparable (calibrated & terrain corrected) and then expressed in dB.
For SLC to GRD, the function ‘Sentinel 1- SLC to GRD’ in SNAP was used. Refined Lee was the speckle filter specified. Multilooking settings were set to have a mean GR square value of 14. (This is the least value I can set?). All other parameter settings were set to default.

For GRD, the pre-processing steps were patterned from the operators of the ‘Sentinel 1 - SLC to GRD’ graph. Applied were, Thermal Noise Removal > Calibration > Multilooking (mean GR square value 10) > Speckle Filter (Refined Lee) > Terrain Correction in SNAP.

For the GRD from GEE Image Collection, the default preprocessing steps were stated here.

My results are as follows.

  • SLC converted to GRD == “SLC_xx” == “SLC(GRD)”
  • GRD == “GRD_xx” == “GRD”
  • GRD from GEE == “GEE_xx” == “GEE(GRD)”

A.) Correlation coefficient and R-squared


  • SLC(GRD) and GRD have around 0.70 coefficient of correlation and around 0.40 𝑹^𝟐 value for VH and VV.
  • Highest correlation is between GRD and GEE (GRD).
  • Least correlation is between SLC(GRD) and GRD.

B.) Min, Max, & Mean values and Standard Dev


  • SLC (GRD) has the least standard deviation
  • GEE(GRD) has the highest standard deviation
  • GEE (GRD) has very low backscatter values (VH: -36.9, VV: -31.6), as compared to the corresponding values from SLC(GRD) and GRD. These were located at the lake within the subset.
  • GEE (GRD) truncates positive backscatter values ( >1) to 0. This occurred on 60 pixels. Ive read about clamping of values here.

I am currently doing research on monitoring and characterizing forests in SAR images. I did this comparison because Im doing temporal analysis of data extracted from GEE and I wanted to know how different its values were compared to manually processing GRD products within SNAP.



very nice comparison, I often asked myself the same.

Just one suggestion: Besides correlations and band statistics it might be useful to include a scatter plot between each product pair. It would reveal where the changes between the images are. I just expect that the ocean areas are the ones with the most variation while moderate and high backscatter might be similar throughout all images.

And I agree with @qglaude that speckle filtering reduces comparability.

Pre-processed original GRD product are not speckle filtered.

I’m wondering why you speckle filter your products if you want to compare them? Or at least I would use the exact same speckle filter for your 3 products.

  1. No informed opinion. Just one observation - we don’t apply multilooking or speckle filtering to GRD (both can be applied within EE itself if desired).
  2. Different S1 assets in EE have been processed at different times with different toolobx versions and settings. This week, I’m starting to reprocess the float collection in EE with the latest settings for uniformity, so if you want a fair comparison, use the images in COPERNICUS/S1_GRD_FLOAT ingested last week.
  3. Note that clamping is not present in the float collection.

Oh. Its because I converted Level 1-SLC to GRD first and theres a Speckle Filtering operator on the “S1 SLC to GRD” graph. My pre-processing of Level 1-GRD is based on the operators of that graph too, that’s why there’s also filtering applied.

As for GRD from Google Earth Engine, I am yet to create a code for speckle filtering. But I wanted to ask, will it matter if I will be applying a filter on the already terrain corrected image collection? If I remember correctly, in SNAP, it is better to apply Speckle Filter before Terrain Correction. Thanks!~

I have attached the corresponding scatter plots for everyone’s reference. :smile:


  1. GRD vs SLC(GRD)
  2. GRD vs GEE(GRD)
  3. GEE(GRD) vs SLC(GRD)


  1. GRD vs SLC(GRD)
  2. GRD vs GEE(GRD)
  3. GEE(GRD) vs SLC(GRD)
1 Like

Yes, I also used this graph too. First thing I did was removing that operator from the graph. Maybe you can try the same so that you compare apples with apples.

Thanks for the comparison. Funny the disparities between Google Engine GRD products and GRD products from sci-hub. Though the correlation is high, I would have expected products to be much more similar. Probably due to the high frequency of the speckle noise. Would be great to compare the three products all filtered too in order to see if the correlation change much after removing high frequency information



This is a very good exercise that you did. Maybe I can contribute to some extent.

The S-1 product family is composed by SLC, GRDH and GRDM. It is indeed our concern to make sure that the radiometry of the products is similar. This drives to the design of the SAR processor as these 3 products are generated from the same internal SLC products (called SL1).

If there is a difference between those 3 it should come from post-processing steps like multi-looking, hamming weighting, etc.

Back in the 2016 (life ago) we compared the radiometry of the product family for IW and EW using a common geometry being the geocoded one. We didn’t want to perform any other corrections/filtering as it could introduce errors not related to the pure SAR processing.
The results are in the attached TN (UZH-S1-TOPS-RADIOMETRY-TN-05-v1_0.pdf (1.7 MB))

Please note that at the time we were having issues with GRDM that are now solved. In a nutshell, you can see the SLC/GRDH (both geocoded) comparison were excellent (and has further improved since).

To demonstrate that we now improved with GRDM, herebelow is a EW gamma profile with all products SL1 (internal SLC; the parent), SLC, GRDH and GRDM. However, the profiles are computed on the native geometry which is fine over the rainforest and actually even better as you remove any noise from the geocoding step.

This thread gives me the occasion to thanks the author of this TN for the excellent work. I don’t know from where are coming the differences you are showing but based on the analysis we made, I doubt it is on the original data.

Nuno Miranda
S-1 Data Quality Manager


We should change the name of the functionality to “S-1 SLC to GRD-like” in order to reduce confusion. Personally I would recommend using calibrated GRD:s for all intensity-based work and use the SLC:s for interferometric purposes.

1 Like

Hello wanna ask you is there any paper mentions that it is okay do speckle filtering after terrain correction in Sontinel 1?

It should be done before terrain correction. Terrain correction changes image statistcs that the speckle filters are relying on to do their job.

is there anypaper related about it? thanks

Look into the early papers to speckle filtering or any technical paper on speckle filtering that explains what the assumptions on image statistics for that particular filter are. Resampling and interpolation change those statistcs.