Discussion of some PlanetScope results

Discussion of your results and ACOLITE in general
PatrickKlotz
Posts: 12
Joined: Mon May 08, 2023 9:30 am

Discussion of some PlanetScope results

Post by PatrickKlotz »

Hi all,

I have tried a ton of different processing options for a lake in high altitude with generally disappointing results so far.
I have been using PlanetScope SuperDove Imagery. I get somewhat consistent results in optically shallow waters for scenes on consecutive days and different processing options.

In deep water however, where we collected most of our Rrs validation data, the signal becomes extremely noisy and the 8th band in the NIR at 865nm has very high reflectance (therefore excluded for the R² in the figure below)
Validation_PS.png
Validation_PS.png (104.49 KiB) Viewed 122845 times
I then tried to exclude the NIR band for the DSF algorithm but the output reflectances were exactly the same. When I did the same for a Sentinel scene, I could at least observe a small offset.

Below are also two plots for an ROI where a i found consistent signal in a shallow lagoon for different processing options and three consecutive overpasses during our field campaign. The same plot for a deep part of the lake in the centre, spanning four validation points, is also included. Vertical erros bars at the points are the standard deviation.
For shallow waters, the largest deviations were in the Green, Green II and Yellow bands.
For deep waters, the largest deviation were in the Coastal Blue, Red and NIR bands.

So i guess my questions are the following:

1.) What is the reason that the exclusion of the NIR in PlanetScope doesnt seem to make a difference?
2.) Why does the reflectance in the NIR seem generally off?
3.) Is there any way I can try to improve results for optically deep water? So far, the biggest impact on the reflectances was simply the choice of ROI for processing, which shifted the reflectance values based on AOT estimation.
4.) And given my relatively low experience with remote sensing of water bodies, are these just expected results?

All.png
All.png (946.26 KiB) Viewed 122845 times
All.png
All.png (658.14 KiB) Viewed 122845 times
Thank you so much in advance!

Patrick
PatrickKlotz
Posts: 12
Joined: Mon May 08, 2023 9:30 am

Re: Discussion of some PlanetScope results

Post by PatrickKlotz »

And following this up, I was just generally wondering why I am not getting different results for different settings when I am working with PlanetScope.

For comparison, I tried to apply both glint correction and band exclusion for the DSF for Planetscope. However, the reflectance is always identical, both for shallow and deep water. Yet for Sentinel this worked as expected.

Single pixel profiles attached.

Thanks again and apologies for so many questions :D
Attachments
S2_shallow.JPG
S2_shallow.JPG (65.01 KiB) Viewed 122840 times
PS_shallow.JPG
PS_shallow.JPG (58.06 KiB) Viewed 122840 times
quinten
Posts: 1030
Joined: Tue Mar 03, 2015 8:13 am

Re: Discussion of some PlanetScope results

Post by quinten »

Hi Patrick

Don't worry about asking questions! :-) I'm happy ACOLITE is being used, and even happier when users are trying to understand what is going on. 8-)

It would be helpful if I could learn a bit more about your project and study site. If you can share some imagery I could have a closer look at some of the potential issues and perhaps run some corrections under development here at the moment.

In response to your questions:

1) If removing the NIR from the DSF does not make a difference, then it was not used to determine the aerosol optical thickness. If you are using a fixed aot estimate, you can check in the L2R file (or output log) which bands were used, there is an ac_band1 variable in the global attributes. Since the DSF did not use the NIR band I expect that the lake is quite impacted by adjacency effects and/or glint.

2) The NIR results are not dissimilar from what I found (e.g. https://doi.org/10.1364/OE.27.0A1372 and https://doi.org/10.1364/OE.483418). There could be several reasons for this discrepancy, for example uncorrected glint and adjacency effects, other atmospheric correction issues like gas transmittance correction or underestimated aerosol reflectance, sensor calibration or TOA radiance conversion. Examples of glint and adjacency effects (in S2 imagery) are provided here: viewtopic.php?f=5&t=310

3) For low signal waters, problems with the atmospheric correction (aerosol correction, gas transmittance correction) and the sensor (noise, calibration) become more problematic as their uncertainty will represent a large fraction of the actual signal. A change in aot, which is mainly what a change of ROI will lead to, will not drastically change the shape of the spectrum, but will largely just lead to a white shift up/down. By the construction of the DSF, it tends to bias the aerosol optical thickness low and the resulting water reflectance high, especially for noisy sensors. In low signal waters this bias can be of the magnitude of the water signal itself. We also can't forget that these sensors were not designed for water applications! Some algorithms (e.g. C2RCC, POLYMER) can get around some of these issues by including a water model, but I don't think they are currently available for Planet data.

4) Well, satellite remote sensing of waters involves many target types and many sensors, as well as many processing algorithms. For your study here, using SuperDove for a high altitude and low signal water body I would say these results are expected. See also the answers to 2 and 3. :-)

For your follow up post, the band exclusion point should be answered by 1) above. The glint correction for PlanetScope needs some additional configuration. There will be no reference to a glint correction being performed in your log file with the current default settings.

I haven't set these as defaults as there are some caveats to using the NIR for glint correction, i.e. the water reflectance has to be negligible, which is not the case for very turbid/productive waters.

You will mainly have to switch bands to use:

Code: Select all

dsf_residual_glint_correction=True
glint_force_band=800
glint_mask_rhos_wave=800
glint_mask_rhos_threshold=0.05
You could also use the alternative glint correction that uses a slightly different spectral shape of the glint:

Code: Select all

dsf_residual_glint_correction=True
dsf_residual_glint_correction_method=alternative
dsf_residual_glint_wave_range=800,900
glint_mask_rhos_threshold=0.05
These are options "1" and "2" from the Appendix B in https://doi.org/10.1364/OE.483418 Note that there was a small error with variable deletion that was corrected with a commit to the GitHub code this morning.

I hope this helps!

Quinten
PatrickKlotz
Posts: 12
Joined: Mon May 08, 2023 9:30 am

Re: Discussion of some PlanetScope results

Post by PatrickKlotz »

Hello Quinten,

As always, thanks you for your detailed replies!

The study site is Lake Junin in Peru at 4085m altitude. I usually set the elevation to 4085m but have also used ancillary data and the DEM, which made neglegible differences.

I will send you the L1 Planet Data for a subset of the entire lake from the 24th of June, which covers all insitu measurement points we did in the same week via email. I will also attach a geojson for the deep water area which i have used to compare different settings with (around 800m x 1500m).
PlanetScope_2426_2023_06_24_15_21_36_L2R_rgb_rhos-min.png
PlanetScope_2426_2023_06_24_15_21_36_L2R_rgb_rhos-min.png (550.49 KiB) Viewed 122810 times
The goal of my project is to evaluate PlanetScope data as an input for the Water Color Simulator Software WASI, which i intended to use to derive water constituent concentration and water depth through inverse modelling with a deep water model and a shallow water model. As of now, I had a lot of difficulties in fitting a typical spectrum from SuperDove imagery with the same methodology I use for Sentinel data. See the images below with, admittedly very hastily done, fit parameters - it however gives a rough idea of the method.

The left image is with PS data and the right with Sentinel, both from the same day.
WASI_spectrum_fits.PNG
WASI_spectrum_fits.PNG (189.62 KiB) Viewed 122810 times


I also tested both your suggestions. For the default glint correction, i had glint_force_band = None before, assuming it would default to using the eight band instead of a non existant SWIR band. This led to higher rrs values for my ROI. I then also tried the alternative method with the parameters that you suggested which resulted in negative or substantially lower rrs in all bands.

For the band exclusion for the DSF I have not been using a fixed AOT estimate before. Checking the L2R file it showed [ac_aot_550 = 0.068] and [ac_band1 = Blue]. I do include a rather big part of land in my polygon with high reflectances in the NIR but I expected these edge effects to not impact the deep water part almost 3km from the nearest shore. Setting a fixed AOT of 0.1 shifts the spectrum as expected.
Paramter_Testing-min.PNG
Paramter_Testing-min.PNG (506.35 KiB) Viewed 122810 times
Thanks again for your input and let me know if you can suggest more setting changes when you get around to looking at the data!

Best regards
Patrick
PatrickKlotz
Posts: 12
Joined: Mon May 08, 2023 9:30 am

Re: Discussion of some PlanetScope results

Post by PatrickKlotz »

And since I am asking so many questions, I also wanted to better understand the masking for water pixels by setting the rhot threshold for a given wavelength.

This is my minimal settings file for creating a water mask. I am setting the mask wavelength to the eight band. Before that, I manually checked a previous rhot output for the 8th band to find a good value for the mask threshold.

Code: Select all

## ACOLITE settings
inputfile=B:\AuswertungAC\24062023_PS\Raw
output=B:\AuswertungAC\24062023_PS\AC\SubsetMasked

#Define Polygon area and elevation
elevation=4085.0
polygon=B:\AuswertungAC\Polygone\Subset.geojson

##Define level 2 parameters for output
l2w_parameters=Rrs_*, rhot_*

##Define output of pngs for TOA, surface and water reflectance and l2w parameters
rgb_rhot=True
rgb_rhos=True
rgb_rhow=False
map_l2w=False

#Masking
l2w_mask = True
l2w_mask_wave=866
l2w_mask_threshold = 0.035

#Define geotiff output for l2w parameters
l2w_export_geotiff=True


#Clean up output folder
l1r_delete_netcdf=True
l2w_delete_netcdf=True
l2r_delete_netcdf=True
delete_acolite_run_text_files=True

However, when i run this settings file i get a very noisy mask in the deep water areas of my lake. More suprisingly, these are pixels where the rhot is not above my set threshold. Is there another setting that I am overlooking that leads to the masking of those water pixels?

This is an example from QGIS when I import the masking band L2W_rhot_866 and a band with my rrs values. You can see for one example pixel that i have a NaN (Leerwert) value in the rrs layer, but at the same time the rhot (0.012) is lower than my threshold (0.035)
MaskingIssue.JPG
MaskingIssue.JPG (133.12 KiB) Viewed 122771 times
Kind regards
Patrick
quinten
Posts: 1030
Joined: Tue Mar 03, 2015 8:13 am

Re: Discussion of some PlanetScope results

Post by quinten »

Hi Patrick

The masking in the deep water area is probably due to the retrieval of negative values, likely the 444 nm band. (See also viewtopic.php?f=5&t=311) You can modify this by changing either the wavelength range to check for negatives, or disabling the negatives mask altogether. Defaults for these settings are:

Code: Select all

l2w_mask_negative_rhow=True
l2w_mask_negative_wave_range=400,900
Did you compare the aot from the S2 and PlanetScope processing? Do they align? The reflectance from PlanetScope seems at first glance to be a bit higher than S2, especially in the RedEdge-NIR, so I would guess S2 derived aot is a bit higher. Perhaps it is worth processing PlanetScope with the same aot and model as S2, or excluding the Blue band from the DSF to get a slightly higher aot. (You are at high altitude ~4100 m at pressure ~630 hPa, and pressure errors may be more pronounced in the blue bands?)

Your reflectances are much lower than those of the easier, bright waters where I did my evaluation (https://doi.org/10.1364/OE.483418). We should not forget these are ~6 kg 30x10x10 cm satellites, and there will be limitations for dark targets! :-) They are cross-calibrated to Sentinel-2 using near-coincident data, but there can be individual satellites that are a bit noisier or have a larger uncertainty or more calibration drift. (Perhaps Planet themselves have more information on unit 2426.) Some bands have no direct corresponding band on S2/MSI.

The WASI seems to have some difficulty especially to fit the NIR and the Green I and Orange bands for PlanetScope. Do you take into account the width of these bands? Did you use ancillary data for gas transmittance correction in ACOLITE? Perhaps the gas transmittance correction, or ancillary values for water vapour and ozone are not appropriate. (Although they seem OK for S2.)

I hope this helps!

Quinten
PatrickKlotz
Posts: 12
Joined: Mon May 08, 2023 9:30 am

Re: Discussion of some PlanetScope results

Post by PatrickKlotz »

Hi Quinten,

Thank you, it was indeed due to the l2w_mask_negative_rhow setting.

As you noticed correctly, WASI struggles in fitting the Green I and Yellow band. The question now is whether those bands are not calibrated correctly since they dont have a corresponding Sentinel band, or if it would also not work with Sentinel if they hade bands at this wavelength.

Which variable from the L2R.nc from Sentinel is the derived AOT? I dont see a ac_aot_550 in the global attributes like i do for PlanetScope.

I have tested some runs with ancillary data for the gas trasmittance by setting ancillary_data = True and providing my EARTHDATA account details. I assume gas_transmittance is always set to True since I didnt see its own processing option in the manual. I didnt see any differences with ancillary data unless i derived pressure from a DEM so I guess I am missing some settings here as well?

Thanks again, your input helps tremendously!

Best regards
Patrick
quinten
Posts: 1030
Joined: Tue Mar 03, 2015 8:13 am

Re: Discussion of some PlanetScope results

Post by quinten »

Hi Patrick

To get the aot from Sentinel-2 you will need to also process it with dsf_aot_estimate=fixed, or otherwise output the tiled aot using dsf_write_aot_550=True. For convenience, and to align the results, it is probably best to use the same region of interest and aot estimation setting.

The gas transmittance correction is always active. I have now committed a change where it can be forced to 1 (i.e. disabled using gas_transmittance=False), but I presume results would be worse without it. For Green I, Green II, and Yellow the total gas transmittance (mainly from ozone) would be about 0.97, 0.94, 0.93. (Depending a bit on ancillary data and geometry.) Perhaps the values of uoz and uwv from the ancillary data are not accurate enough, but a change in the uoz (or disabling of gas transmittance correction) would not lead to a better spectral shape in those three bands. The spectrum remains rather flat from Green I to Yellow, and I presume the issue may rather be the calibration (of this unit?). These three band happened to give some of the largest differences to in situ as well in my study (E.g. Fig. 5 in https://doi.org/10.1364/OE.483418 ).

There may be higher uncertainty in the cross-calibration of SuperDove Green I and Yellow bands, as the average S2/MSI TOA reflectance for the nearest bands B2,B3 and B3,B4 is used as a reference (https://assets.planet.com/docs/radiomet ... _paper.pdf). The calibration gains derived using this approach are likely to have a larger impact than the ozone.

Quinten
quinten
Posts: 1030
Joined: Tue Mar 03, 2015 8:13 am

Re: Discussion of some PlanetScope results

Post by quinten »

Hi Patrick

Of course, issues with a particular unit are not necessarily going to show up in my "bulk" matchup analysis, or perhaps as a single outlier in one or a couple of bands.

I took a look at a 2426 image over a salt flat (2023-07-28), and compared with other SuperDove images available within a few days. The plot shows the mean TOA reflectance with standard deviation (to avoid noise), for common pixels (~1M) in the images:
Bonneville_TOA_PS.png
Bonneville_TOA_PS.png (210.78 KiB) Viewed 122711 times
I expect the salt flat to be constant in time (especially over a few days) and rather featureless spectrally. The illumination and observation geometry is very similar between those images, and the expected impact on TOA reflectance from geometry differences is expected to be spectrally smooth. (As is the impact of aerosol variability.) So I believe the band-to-band jumps in the data are the result of the performance/calibration of the instrument. You can see for example the 2426 shows peaks at 533 and 612 nm, which are not present in the other sensors. (Well, 2459 shows the peak at 612 nm, but the opposite at 533 nm.)

For comparison I also compared some S2 overpasses for the same region, at a longer time interval, and larger differences in geometry. (And larger pixel sizes, lower total amount of pixels, ~0.1M) These show a much smaller band to band variability, and none of the criss-crossing seen for PlanetScope:
Bonneville_TOA_S2.png
Bonneville_TOA_S2.png (186.04 KiB) Viewed 122711 times
Of course the Green I and Yellow bands are not present, and this is mostly looking at a single instrument. The 2023-07-09, 2023-07-19 and 2023-07-29 observations align particularly well, apart from the change in water vapour on the 19th, noticeable in the RedEdge and NIR. The TOA signal the 19th is much lower in these bands as a result of about double the water vapour in the atmosphere (~3.1 the 19th and ~1.3-1.6 the 9th and 29th). The 2023-07-14 is a bit higher - largely white shifted - presumably due to higher aerosol loads.

You can also see that e.g. the range of observations in the Red (~665 nm) and NIR (~865 nm) bands is much larger for PlanetScope than for Sentinel-2.

This is just to illustrate difficulties with (1) the calibration of the sensors within the PlanetScope constellation and (2) the band-to-band spectral calibration within one sensor. These TOA issues will of course directly impact the reflectances retrieved using ACOLITE, and the result seen here for 2426 seems to correspond to what you found in your lake.

Quinten
PatrickKlotz
Posts: 12
Joined: Mon May 08, 2023 9:30 am

Re: Discussion of some PlanetScope results

Post by PatrickKlotz »

Hello Quinten,

Thanks for the visualization. I actually also had a look at the Uyuni salts flats before to get a feel for how similar PS instruments are a while back. I however dont remember that the peaks were this distinct, but I probably just looked at instruments that, by chance, were a lot better calibrated to each other.

For the three consecutive overpasses with cloud free images during our field campaign, I visualized those band to band jumps by the absolute differences between band ratios on a pixel by pixel level. The first row shows the differnces between the scenes and the second row the respective band ratio. I think you can also see the different calibration from unit 2426 on the 24th compared to the units on the following days rather well.
BtG-min.PNG
BtG-min.PNG (417.24 KiB) Viewed 122701 times
I also looked at the TOA radiance for both Sentinel and the PS scene on the 24th to see if there were any major differences, but dont really have the expertise to intpret them confidently. For water however, the at sensor radiance seems to align well.
Radiance.PNG
Radiance.PNG (939.94 KiB) Viewed 122701 times
I think my conclusion will be that for the intended application of satellite imagery within my group, PlanetScope can not be recommended without careful quality checks of the individual scenes.

Best regards
Patrick
Post Reply