-
Notifications
You must be signed in to change notification settings - Fork 300
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
artefacts in FCI RGBs using 3.8 µm #3009
Comments
Can something like this: #2806 |
Thanks @simonrp84, that looks interesting. Negative radiances are clipped to the lowest non-negative radiance before calibrating to brightness temperature? |
Yes. As long as it's an optional feature then it should solve the problem nicely without impacting other uses. |
Another MCVE: import hdf5plugin
from satpy import Scene
from pyresample import create_area_def
from glob import glob
fci_files = glob("/media/nas/x23352/MTG/FCI/L1c-cases/202412090100-atlantic/*BODY*O_0008_003[56].nc")
ar = create_area_def("ofz", 4087, description="oceanographer fracture zone", area_extent=[-4230000, 4675000, -3562000, 5232000], resolution=750)
sc = Scene(filenames={"fci_l1c_nc": fci_files})
sc.load(["cloudtop"])
ls = sc.resample(ar)
ls.save_datasets() Looks like there are both white and transparent pixels. As shown in irfanview: |
The root cause of both types of pixels is the same: already-low radiance values over cold clouds that get even lower due to the ESL correction and/or noise. Likely, the white pixels are very low radiance values that still have a valid BT (which is going to be extremely cold), and the black pixels are negative radiance pixels that cannot be converted to BTs and hence become NaN/transparent. |
For pixels to become white, we'd need extremely cold radiances in all three channels, each of 3.8 µm, 10.5 µm, 12.3 µm. However, on closer inspection, I only see this for 3.8. |
Clipping negative radiances does not solve the problem for composites that use a difference. By setting them to the lowest value, we get very small brightness temperatures:
So far so good; not obvious if we do a crude stretch between (say) 190 and 320. The cold pixels will still look cold and not stand out too much. But in
The enhancement stretches this difference between -4 and 10. This explains the green speckles. Wherever 3.8 is very cold, the delta becomes very high. I cannot think of any easy solution to this one. |
Alternatives for composites that take the difference between 3.8 µm and another channel:
My preference would tend to alternative (2), a It affects:
|
I will admit I have not read this entire thread, but did want to point out the issues we've had with night microphysics for ABI-style instruments: we get green spots in ABI's night_microphysics composite as well and they are not fixed by clipping the radiances/reflectances. The issue if I remember correctly is a saturation in one of the channels (C07 I think) that produces "valid" values as far as the input files are concerned, but is obviously incorrect when looking at imagery. We've just had to deal with it in my own projects. |
It's not saturation but the opposite, the sensor has reached the dark signal level and doesn't give a meaningful response any more. This happens for C07 (or any other MIR channel) because the radiance at low temperatures in this part of the spectrum is much lower than the radiance for longer wavelengths like you'd see in C14 (or any other TIR channel). Ideally, the L1 data would have a minimum count->BT value for the dark signal that is meaningful, but quite often - as seems to be the case here - it is set artificially low so to enable suitable offset of the digital count for the rest of the dynamic range. That's what gives the unreasonably low radiance/BT. They are technically valid, but the radiance is so low and the noise so high that they're meaningless numbers. (edit) In terms of a solution, tbh there's not much you can do here. If you want to be really clever you could plot the curves of digital count and radiance against the expected dark noise + NEdT and use that to compute a more sensible minimum radiance/BT for a channel, but that would be very sensor specific and quite often the dark noise isn't published. (edit again) Actually, looking at the documentation on sensor performance, BTmin for the 3.8 micron channel is 200K. So, for imagery we could clip all BTs below 200K and that would result in nice looking images. This approach isn't as good as the one in my edit above but would be much easier to implement. That said, this should definitely not be the default option within satpy, as there are valid, usable, values for this channel below 200K. |
Not default for the reader, but a |
Describe the bug
The 3.8 µm channel and RGB that use it have artefacts during the night, such as black pixels. This includes the convection RGB and night microphysics.
To Reproduce
Expected behavior
I expect an image without black pixels.
Actual results
I get an image with black pixels.
Screenshots
Environment Info:
Additional context
I'm aware that the convection composite uses the difference between two solar channels, so it is not suitable to use during the night. But that still shouldn't make pixels black. The problem also occurs with
night_microphysics
and with an internal DWD RGB where the night part is similar tocloudtop
.The text was updated successfully, but these errors were encountered: