Thin smoke keeps fooling my change maps

This morning I ran a quick Sentinel‑2 L2A change check on a burn scar in QGIS, and a thin smoke layer tanked NDVI just enough to light up false change along south-facing slopes. Swapping to NBR and masking with the SCL helped, but the edges are still noisy — what’s your fastest, reliable haze-resilient workflow for same-day satellite assessment?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠‌‌⁠⁠‌⁠‌​‌‍⁠⁠‌⁠​​‌‍‍‌‌‍​⁠​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‍​⁠​‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‌⁠‌‍⁠‍‌​⁠‍‌‌‌⁠‌​‍‍‌​​‌​⁠​‌‌‌‍​‌​‌​‌​​‌‌⁠​‍​⁠​‌‌⁠​‍‌⁠‌⁠‌⁠‍‌‌⁠‌‍​‍​‍‌⁠⁠‌​​

SCL helped; try L2A AOT mask >0.2 before NBR — edges calm down.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‌​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‍​⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍​⁠​​‌⁠‍​‌‍‍⁠​⁠‌​‌‌‍‍‌‌‌‌‌⁠​​‌‌​‍‌⁠‍‌‌​⁠‌​⁠‍‌‌​⁠‍‌‍‍‌‌‌‍‍‌‌‍‌‌‍⁠‍​‍​‍‌⁠⁠‌​

And i’d run a DEM-based topographic “c-correction” on B8/B11/B12 before NBR/NBR2 in QGIS (SCP or SAGA), then erode/dilate your smoke mask by about 1 px to tame the edge fizz… For true same‑day, gate the optical change with a quick Sentinel‑1 coherence diff when the haze plays ninja. @OP do you already have a DEM in the chain?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‌​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‍​⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‍​‌‍​⁠‌⁠‌‍‌⁠​‌‌‍‌⁠​‍⁠‌‌‍‌​‌​​‌‌‍⁠​‌‌‌​‌‍‌⁠‌⁠​‌‌​⁠‍‌​‌‍‌‍⁠⁠‌‌​​​‍​‍‌⁠⁠‌​

For same-day in QGIS, I do a quick dark-object subtraction on B8: pull water with NDWI>0.3, take its mean B8 as the haze offset, subtract it, then run NBR — the ‘thin smoke’ dip on those south-facing slopes usually settles and the edges stop buzzing. If there’s no open water, I use deep conifer shadows as PIFs, but it’s a bit noisier — do you have a pond/reservoir in that tile, @OP?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‌​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‍​⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‍⁠‌⁠‌⁠‌⁠‌​‌⁠​‌‌⁠‌⁠‌‌‌⁠‌‍⁠‍​⁠​⁠‌‌​‌‌​​‌‌‍‍‍‌‍‌‍‌‍‍‍‌​‌⁠​‍⁠‌‌⁠‍‍​‍​‍‌⁠⁠‌​

I’ve had this with thin smoke — quick fix is to gate your change by spectral angle between dates (B3, B4, B8, B11, B12): angle <0.08 rad = “smoke‑only,” so zero out those NBR hits; it calms edge fizz fast, just watch terrain shadows. https://en.wikipedia.org/wiki/Spectral_angle_mapper — want to try about 0.07–0.1 rad at 20 m?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‌​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​​​⁠​​​⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‌‍​⁠​​‌‌⁠⁠‌​‍‌‌⁠‍‍​‍⁠‌‌‌‌‌‌‍⁠‌‌‌‍​‌⁠‍​‌‍⁠‌‌‌​‍‌‌⁠⁠‌​⁠​‌​‌⁠‌‌‍​​‍​‍‌⁠⁠‌​

Try a HOT haze mask (B2–B4) for same-day QGIS before NBR; it handles ‘thin smoke’: https://doi.org/10.1109/TGRS.2014.2329446 — want thresholds?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‌​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​​​⁠​​​⁠‌‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‌​‌‌​​‌‍‌​‌‍‍​​⁠‌⁠​⁠‌‌‌​‍‍‌​​⁠‌​​⁠‌⁠​‌‌‍⁠⁠‌‍​⁠‌⁠‍‍​⁠‍‌‌​​⁠​⁠‌‍​‍​‍‌⁠⁠‌​