Classic Dust RGB¶
The standard operational infrared dust composite: three fixed band-difference
stretches that make lofted mineral dust read pink to magenta over dark
blue-green surfaces, day and night. Forecasters have used it on SEVIRI, ABI and
AHI for years; it needs no ancillary data and no cloud mask, which is both why
it is cheap to run and why it produces no per-pixel measure of dust amount.
shachen.pipeline.run_dust_rgb is the entry point.
In this package it also serves as the comparison baseline for DEBRA-Dust: the image to put next to an enhancement to see what the enhancement changed.
Per-sensor stretches¶
The Dust RGB has no single canonical set of numbers. It was tuned for
Meteosat SEVIRI and then re-tuned for each later imager, because the
corresponding channels do not sit at the same wavelengths — most visibly in the
green gun, where SEVIRI’s IR10.8 − IR8.7 becomes 11.2 − 8.4 on ABI. Berndt
et al. (2018) is the method behind those adjustments, and the same reasoning
produced ABI-specific versions of the Ash, Convection and Night Microphysics
RGBs alongside Dust.
run_dust_rgb therefore reads scene.attrs["reader"] and picks the set that
sensor’s operational product uses, so a baseline rendered here matches the
image forecasters see:
Reader |
Constant |
Red 12.3 − 10.3 |
Green 11.2 − 8.4 (γ 2.5) |
Blue 10.3 |
|---|---|---|---|---|
|
|
−6.7 to +2.6 K |
−0.5 to +20.0 K |
261.2 to 288.7 K |
|
|
−4 to +2 K |
0 to +15 K |
261 to 289 K |
Himawari gets the original SEVIRI values because no re-tuned AHI recipe has been
published; that is also what satpy renders, since it ships a dust_abi
enhancement but no dust_ahi. An unknown or absent reader falls back to the
same SEVIRI set. Pass constants= explicitly to pin one set across sensors,
which applies when comparing two sensors on identical numbers.
The bands themselves never change: DEBRA_BANDS plus 11.2 µm, the one channel
DEBRA never reads.
Citing this baseline¶
This is a published scheme in its own right, cited independently of anything
else in this package. If a figure or a number in your work comes from
run_dust_rgb, cite Lensky and Rosenfeld (2008) plus the recipe for the sensor
you ran it on — the Quick Guide for ABI, the EUMeTrain compilation for AHI. The
repository’s CITATION.cff records each reference with that scope, and the
README maps every algorithm in the package to what it needs cited.
References¶
Lensky, I. M., and D. Rosenfeld (2008): Clouds-Aerosols-Precipitation Satellite Analysis Tool (CAPSAT). Atmos. Chem. Phys., 8, 6739–6753. doi:10.5194/acp-8-6739-2008 — the SEVIRI RGB suite this scheme comes from.
EUMeTrain: Compilation of RGB Recipes — the SEVIRI Dust RGB as formalised for operations; the source of
DUST_RGB.NOAA/NASA GOES-R Quick Guide: Dust RGB (contributor K. Fuell, NASA SPoRT; CIRA/RAMMB) — the ABI band mix, and the source of
DUST_RGB_ABI.Berndt, E., N. Elmer, L. Schultz, and A. Molthan (2018): A Methodology to Determine Recipe Adjustments for Multispectral Composites Derived from Next-Generation Advanced Satellite Imagers. J. Atmos. Oceanic Technol., 35, 643–664. doi:10.1175/JTECH-D-17-0047.1 — why a recipe has to be re-tuned per imager.
Classic Dust RGB — the standard operational infrared dust composite.
Three fixed stretches of the infrared channels, no ancillary data and no cloud
mask, which is why it is cheap and why it produces no per-pixel measure of dust
amount. Not part of the DEBRA algorithm (Eqs. 1-29); here it is the baseline an
enhancement gets compared against.
RED = BT12.3 - BT10.4, GRN = BT11.2 - BT8.6 (gamma 2.5), BLU = BT10.4. The
stretch values are per sensor: the scheme was tuned for SEVIRI and
re-tuned for each later imager, so there is no single canonical set;
shachen.pipeline.run_dust_rgb() picks one from the scene’s reader.
Computed from
shachen.io.satellite.load_scene() fields so it shares DEBRA’s 2-km grid
and the shachen.render path; dust appears pink to magenta over dark
blue-green surfaces.
shachen.pipeline.run_dust_rgb() is the entry point that runs this over a
scene, the way shachen.pipeline.run_debra() runs DEBRA.
Where the recipe comes from (the docs page carries these as links):
Lensky, I. M., and D. Rosenfeld (2008): Clouds-Aerosols-Precipitation Satellite Analysis Tool (CAPSAT). Atmos. Chem. Phys., 8, 6739-6753, doi:10.5194/acp-8-6739-2008 – the SEVIRI RGB suite this scheme comes from.
EUMeTrain, “Compilation of RGB Recipes” – the SEVIRI Dust RGB as formalised for operations; the source of
shachen.constants.DUST_RGB.NOAA/NASA GOES-R “Quick Guide: Dust RGB” (contributor K. Fuell, NASA SPoRT; CIRA/RAMMB) – the ABI band mix used throughout, and the source of
shachen.constants.DUST_RGB_ABI.Berndt, E., N. Elmer, L. Schultz, and A. Molthan (2018): A Methodology to Determine Recipe Adjustments for Multispectral Composites Derived from Next-Generation Advanced Satellite Imagers. J. Atmos. Oceanic Technol., 35, 643-664, doi:10.1175/JTECH-D-17-0047.1 – why an ABI recipe needs stretches different from SEVIRI’s.
- shachen.dustrgb.DUST_RGB_BANDS: tuple[Band, ...] = (Band.TIR_86, Band.TIR_104, Band.TIR_112, Band.TIR_123)¶
The four bands the recipe reads (11.2 um is the non-DEBRA extra).
- shachen.dustrgb.dust_rgb(scene: Dataset, constants: DustRGBConstants = DustRGBConstants(red=Bounds(min=-4.0, max=2.0), green=Bounds(min=0.0, max=15.0), green_gamma=2.5, blue=Bounds(min=261.0, max=289.0))) DataArray[source]¶
The classic Dust RGB composite of
scene, floats in [0, 1].sceneneedsbt_tir_86/104/112/123(K); a missing variable raises ValueError. Returns dims(y, x, gun)with coordinategun = ["r", "g", "b"]— the same layout asshachen.imagery.enhanced_rgb(), soshachen.imagery.to_uint8()andshachen.render.render_debra_png()apply unchanged. NaN propagates.