RTC of a Sentinel stack

Added by Kimberly Slinski over 1 year ago

Good morning - I'd like to RTC a co-registered stack of Sentinel SLC images to test a change detection workflow.

I've created a stack of SLCs using stackSentinel.py with these arguments:
stackSentinel.py -s $sen1Path -d $demPath/$demFile -a $auxPath -o $orbitsPath -m $master -b '9.2 9.8 43.5 44.2' -W slc

From this forum post: http://earthdef.caltech.edu/boards/4/topics/2775?r=2786#message-2786 , I understand that I can convert from beta-nought to gamma-nought using incLocal.rdr.full in the geom_master folder using:

imageMath.py --e='a*cos(b_0*PI/180.)/cos(b_1*PI/180.)' --a=file.beta --b=incLocal.rdr.full -o file.gamma -t FLOAT

However, I haven't found a way to convert the SLC to beta-nought (or sigma-nought) in ISCE. I was wondering what I was missing.

Many thanks for your help!

Kim


Replies (13)

RE: RTC of a Sentinel stack - Added by Piyush Agram over 1 year ago

The LUT of converting SLC numbers to beta0 can be found in the annotation/calibration/*.xml files.
This calibration constant, I believe, is the same in every SLC image (something like 237) - i.e the data is scaled the same globally.

For using this value to convert DNs to beta0, see this document - Page 140 of the Sentinel-1 Detailed Algorithm Description document:
https://sentinel.esa.int/documents/247904/1877131/Sentinel-1-Level-1-Detailed-Algorithm-Definition

You might be able to go directly from coregistered SLC (merged or individual bursts) to gamma0 with a single line of imageMath.py with the scale factor built into it.

Piyush

RE: RTC of a Sentinel stack - Added by Kimberly Slinski over 1 year ago

Many thanks for that link! The calibration document I had only detailed RTC with calibration vectors, which doesn't account for local incidence angle.

That document indicates: beta-nought = (DN)^2/Kabs; and the SLC metadata indicates that Kabs for S1A = 1, so the scaling is super simple.

I do have a two more questions. First, the linked document indicates that gamma = beta-nought * tan (inc). The equation that I took from the linked forum post seems to indicate that gamma-nought = beta-nought*cos(b_0*PI/180.)/cos(b_1*PI/180.); with b_0 and b_1 coming from incLocal.rdr.full. I wanted to make sure that the equation with cosine's is correct, as it looks much different than the documentation, and I'm not misunderstanding something.

And second, one of my coregistered images is smaller than incLocal.rdr.full and so imageMath.py throws an error. I was wondering how best to crop the images to a common domain.

Many thanks for your help!
Kim

RE: RTC of a Sentinel stack - Added by Kimberly Slinski over 1 year ago

Update - I found a thread where you indicate that the first band of incLocal is projection angle, so if I understand correctly, the equation uses

sigma-nought = beta-nought * cos (projection angle) [from Ulander 1996]; and
gamma-nought = sigma-nought/cos(local incidence angle)

I have not found a solution to the image size issue. Again, many thanks for your help!

Kim

RE: RTC of a Sentinel stack - Added by Piyush Agram over 1 year ago

The equation of cos(b_0) / cos(b_1) I believe is for UAVSAR - which provides data as sigma0 (w.r.t reference altitude) instead of beta0. The denominator term takes out the incidence angle term that was applied by UAVSAR.
I would go with just the numerator term if beta0 is available. This could be a question for :skraatz

RE: RTC of a Sentinel stack - Added by Kimberly Slinski over 1 year ago

I guess I'm misunderstanding the output of the topo step for SEN1 stacks (incLocal.rdr.full, in my case). It has two bands, but I haven't been able to find documentation on what the two bands represent. Is it available?
Also, I am not sure who "scraatz" is or how to inquire. Many thanks for your help.

Kim

RE: RTC of a Sentinel stack - Added by Simon Kraatz about 1 year ago

Hi Kimberly,

I think Piyush got nearly all your questions. I can only add that you may find some variable descriptions in the .xml files. Regarding the equation used, I took it from the Sentinel 1 rtcApp thread you linked. According to my qualitative comparisons with the source data, It performs well (e.g. attached image). From my understanding the equation is a simple geometric RTC correction ... as you said it appears to stem from Ulander 1996 (eq. 3) divided by cos(incidence angle) to change from sigma0 to gamma0. For the SLC product the beta -> beta0 factor is 237, but for GRD it is 474. I'm not sure where exactly, but comparing the source sentinel 1 image with the beta output it appears that the beta -> beta0 normalization had already been performed, so I don't think this needs to be factored into the imagemath equation.

Best, Simon

rtc_100look.png (3.4 MB)

RE: RTC of a Sentinel stack - Added by Piyush Agram about 1 year ago

Hi Simon,
The beta0 conversion occurs in the extractImage part of the S1 GRD reader.
Just to confirm, when working with Sentinel-1 or data that is in beta0 - one does not need the cos(b_0) term?

Piyush

RE: RTC of a Sentinel stack - Added by Simon Kraatz about 1 year ago

Hi Piyush,

The numerator is for projecting beta0->sigma0 (Ulander 1996), and the denominator for sigma0->gamma0

As Kim stated:
sigma0 = beta0*cos(projection angle, b_0)
gamma0 = sigma0/cos(incidence angle, b_1)

b_0 is the projection angle according to http://earthdef.caltech.edu/boards/4/topics/1827?r=2609#message-2609 (but the descriptor provided the .xml still appears to be that of the look angle)
b_1 is the incidence angle.

As far as I can tell, the equation is fine as is for Sentinel-1 beta0 to gamma0.

UAVSAR needs a different equation.

Simon

RE: RTC of a Sentinel stack - Added by Piyush Agram about 1 year ago

Great. Thanks.

RE: RTC of a Sentinel stack - Added by Kimberly Slinski about 1 year ago

Thanks for reviving this thread! I've gotten a little confused about the denominator guidance. My understanding from the last couple posts is that, to go convert beta0 -> gamma0, I should combine the two equations that Simon referenced. I.e.,

gamma0 = beta0*cos(projection angle, b_0)/cos(incidence angle, b_1)

I think this is the equation that's used for the UAVSAR data. So I'm unsure if I missed something or if you can actually use the UAVSAR equation for Sentinel. Apologies I'm being dense...

Thanks
Kim

RE: RTC of a Sentinel stack - Added by Simon Kraatz about 1 year ago

Hi Kim,

No worries, thanks for the question! It's possible I missed something because you and Piyush seemed to think that's the equation for UAVSAR data. But anyway, here's my understanding:

1. UAVSAR data comes as sigma0 (and I think that the incident angle based on ellipsoid was used to compute that). Sentinel-1 data comes as beta, but also provides look up values to read it in as beta0, sigma0 or gamma0. Sentinel-1 is read by ISCE as beta0.

2. Because the data come as different projections each of them needs a different set of equations to go to terrain corrected gamma0.

e.g. Sentinel: to change beta0 to sigma0_terrain; step 1: multiply beta0 by cos(projection angle modified by DEM = b_0). step 2: from the geometry, to project sigma0_terrain to gamma0_terrain plane, one needs to divide by cos(incident angle modified by DEM), which is stored in b_1.

e.g. UAVSAR: to change the sigma0 data to sigma0_terrain, step 1: divide out the sigma0 based on the ellipsoid (divide by sin(incident angle modified by ellipsoid)); step 2: multiply that result by sin(incident angle modified by DEM). Note, that step 1 + 2 is David Small 2011 eq. 5 ("NORMLIM"). But as per Ulander 1996 it would be better to multiply the step 1 result by cos(projection angle modified by DEM) because this approach has fewer errors when there is substantial surface tilt in azimuthal direction. step 3: project to gamma0_terrain by dividing by cos(incident angle modified by DEM). So, step2+step3 is the same equation as for Sentinel-1, just need to bring UAVSAR data from sigma0 to beta0 first.

Best, Simon

RE: RTC of a Sentinel stack - Added by Kimberly Slinski about 1 year ago

Sorry for the delayed response, things move slow during the holidays. Many thanks for the explanation, I think that makes sense. I will test this out in the coming months, perhaps with some test plots comparing ISCE-derived gamma to SNAP-derived gamma.

RE: RTC of a Sentinel stack - Added by Helen Baldwin 4 months ago

Hi Simon, Piyush, Kim,

Thank you for all of the information in this post, and I apologize for belaboring the point. After looking at the Ulander 1996 and Small 2011 papers, I wanted to confirm that I was understanding this equation a*cos(b_0*PI/180.)/cos(b_1*PI/180.) * (c==0) in runNormalize (rtcApp) correctly, as equivalent to the equation 26 [screenshot] in Small 2011, i.e. by adding the denominator, we move beyond the NORLIM method (numerator) to terrain flattening? Thanks!

Best,
Helen

Small2011_eq26.JPG (11.9 kB)

(1-13/13)