ARMS: What Wireless Fading Models Have to Do With Seeing Through Fog
Published this year in IEEE Access with my advisor Min-Chul Lee: “Scattering Medium Removal Using Adaptive Masks for Scatter in the Spatial Frequency Domain” — or ARMS, for short (Adaptive Removal via a Mask of Scatter). The premise is a little unusual for a dehazing paper: instead of the standard atmospheric-scattering-model priors most single-image dehazing methods rely on, ARMS borrows its physics from wireless communication fading theory.
The analogy
Here’s the observation the whole paper is built on: light traveling from an object to a camera through fog, dust, or rain behaves a lot like a radio signal traveling from a transmitter to a receiver through buildings and terrain. In both cases you get a line-of-sight (LOS) component that arrives mostly undisturbed, and a non-line-of-sight (NLOS) component that’s been reflected, diffracted, or scattered along the way. Wireless engineers have had good statistical models for this for decades:
- Rician Fading Model (RiFM) — for channels with a strong LOS component plus weaker scattered paths.
- Rayleigh Fading Model (RaFM) — for channels with no dominant LOS path, i.e. pure scattering.
The core hypothesis of ARMS is that these two models map directly onto imaging: a clear image is dominated by the LOS-like signal, and a scattering medium (fog, haze, dust) pushes the system toward Rayleigh-like, NLOS-dominated statistics. So instead of estimating a depth map and an atmospheric-light constant — the two ingredients almost every classical dehazing method needs, and which are genuinely hard to estimate reliably — ARMS asks a different question: what does the image’s own intensity statistics say about how “Rician” or “Rayleigh” the current scattering condition is?
graph LR
classDef wireless fill:#e3f2fd,stroke:#1e88e5,stroke-width:2px,color:#000;
classDef optics fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#000;
classDef math fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#000;
classDef result fill:#f3e5f5,stroke:#8e24aa,stroke-width:2px,color:#000;
subgraph WirelessDomain ["Wireless Communication Theory"]
Tx["Transmitter"]:::wireless
Rx["Receiver"]:::wireless
RiFM["Rician Fading<br/>(LOS + NLOS)"]:::wireless
RaFM["Rayleigh Fading<br/>(NLOS only)"]:::wireless
Tx -.->|multipath| Rx
Rx --> RiFM
Rx --> RaFM
end
subgraph OpticalDomain ["Imaging Through Scattering Media"]
Obj["Object / Scene"]:::optics
Cam["Camera Sensor"]:::optics
SIM["Scattered Image Model<br/>(Rician)"]:::optics
SMM["Scattering Media Model<br/>(Rayleigh)"]:::optics
Obj -.->|fog / haze / dust| Cam
Cam --> SIM
Cam --> SMM
end
RiFM -.->|same math, different domain| SIM
RaFM -.->|same math, different domain| SMM
K["Rician K-factor<br/>from image mean, std"]:::math
SIM --> K
SMM --> K
K --> Mask["Fourier-domain<br/>DPC mask"]:::math
Mask --> IFFT["Inverse FFT"]:::math
IFFT --> Clear["Clear image"]:::result
How it actually works
Cameras can only measure the magnitude of light’s complex Poynting vector — not phase, just intensity. Scattering media add noise to both the real and imaginary components of that vector, which shows up as an increase in overall intensity and a change in its statistical spread. ARMS quantifies exactly how much of that spread looks like “clean LOS” versus “scattered NLOS” using the Rician K-factor — literally the same K-factor wireless engineers use to describe how LOS-dominant a radio channel is, borrowed wholesale and applied to image statistics instead of signal power.
Concretely, from a real reference/scattered image pair we tested: the clean reference image had mean/std of μ=102.070, σ=48.690, giving a K-factor of 0.110. The scattered version of the same scene had μ=111.850, σ=10.050 — brighter and far less variable, exactly what heavier scattering does to an image — giving a K-factor of 0.040. Lower K, more scattering-dominated, less LOS. The numbers track the physical intuition almost exactly, which is a nice sanity check that the wireless-theory mapping isn’t just a cute metaphor.
graph TD
classDef ref fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#000;
classDef scat fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#000;
classDef stat fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#000;
R["Reference image<br/>mean=102.070, std=48.690"]:::ref --> RK["K-factor = 0.110<br/>(LOS-dominant, clean)"]:::stat
Sc["Scattered image<br/>mean=111.850, std=10.050"]:::scat --> SK["K-factor = 0.040<br/>(NLOS-dominant, hazy)"]:::stat
From there, the pipeline is refreshingly simple:
- Capture the image under scattering conditions.
- Generate a Fourier-domain mask from the estimated scattering statistics (the Scattered Image Model, built on the Rician distribution, and the Scattering Media Model, built on Rayleigh).
- Apply the mask to the image in the spatial frequency domain.
- Inverse-transform back to get the clear image.
graph LR
classDef step fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px,color:#000;
classDef result fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#000;
S1["1. Capture image<br/>under scattering"]:::step --> S2["2. Generate Fourier mask<br/>from SIM + SMM statistics"]:::step
S2 --> S3["3. Apply mask in<br/>spatial frequency domain"]:::step
S3 --> S4["4. Inverse FFT"]:::step
S4 --> Out["Clear image<br/>no depth map, no atmospheric-light estimate"]:::result
No depth map. No background-color assumptions. That’s the actual selling point over classical methods like dark channel prior or Peplography: ARMS doesn’t care what’s in the scene or how far away it is, because it’s working entirely off the image’s own frequency-domain statistics.
Why bother with a wireless-theory detour at all
The honest answer is that atmospheric-scattering-model dehazing has a well-known weak spot: transmission-map and atmospheric-light estimation are ill-posed, scene-dependent, and break down exactly when you need them most — thick, close-to-uniform smoke or fog with no clear sky region to anchor the atmospheric light estimate. Fading models sidestep that entirely, since they were built from the start to describe signal degradation without needing to know what’s physically between transmitter and receiver. Reusing them for optics means reusing decades of well-understood, well-parameterized statistical machinery instead of re-deriving scene-specific priors from scratch.
We validated ARMS against dark channel prior and Peplography across a battery of image quality metrics — PSNR, SSIM, TMQI, FSIMc, VIF, and GMSD — on both controlled optical experiments and outdoor scattering conditions, with consistent improvement across the board.
The catch: scattering isn’t uniform
Base ARMS estimates one K-factor and builds one global Fourier-domain mask for the entire image. That’s a fine assumption when the scattering medium is roughly homogeneous across the frame, but it breaks down for the conditions the follow-up paper (with Myungjin Cho and Min-Chul Lee, presented at ITC-CSCC 2025) is actually after: harsh, non-uniform scattering, where fog is thicker in some parts of the scene than others — the near field versus the far field, a patch of denser smoke drifting through one corner of the frame, that kind of thing.
The proof is in the numbers. Splitting a single scattered image into two local regions and computing K-factors independently:
- Region (a): μ=135.9755, σ=64.6867 → K(a) = 0.1132
- Region (b): μ=146.2972, σ=48.0990 → K(b) = 0.0540
Two regions, same image, more than a 2x difference in K-factor. A single global mask tuned to one average K necessarily over-corrects one region while under-correcting the other.
graph TD
classDef bad fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#000;
classDef good fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#000;
classDef data fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px,color:#000;
Img["Single scattered image<br/>non-uniform fog density"]:::data
RA["Region (a)<br/>mean=135.98, std=64.69<br/>K(a)=0.1132"]:::data
RB["Region (b)<br/>mean=146.30, std=48.10<br/>K(b)=0.0540"]:::data
Img --> RA
Img --> RB
Global["Base ARMS:<br/>one global mask<br/>tuned to average K"]:::bad
RA -.-> Global
RB -.-> Global
Global --> Over["Over-corrects (a),<br/>under-corrects (b)"]:::bad
Local["Harsh-condition ARMS:<br/>per-region masks<br/>via overlapping kernels"]:::good
RA -.-> Local
RB -.-> Local
Local --> Fit["Each region gets<br/>its own correct correction"]:::good
Spatial-overlap kernels
The fix is to stop treating the whole frame as one statistical population. Instead, the image is swept with overlapping spatial kernels — small windows that each get their own local K-factor estimate and their own local Fourier-domain DPC mask, rather than one mask for the entire frame. The overlap between adjacent kernels matters: without it, stitching the locally-corrected patches back together produces visible block edges at the kernel boundaries. With overlap (and a blend across the overlapping region), the per-block correction strength varies smoothly across the image instead of jumping at fixed grid lines.
graph LR
classDef step fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px,color:#000;
classDef result fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#000;
S1["1. Slide overlapping<br/>kernel windows<br/>across the image"]:::step --> S2["2. Local K-factor +<br/>local DPC mask<br/>per kernel"]:::step
S2 --> S3["3. Apply each mask<br/>within its own kernel"]:::step
S3 --> S4["4. Blend overlapping<br/>regions on stitch-back"]:::step
S4 --> Out["Spatially-adaptive<br/>scattering removal,<br/>no block artifacts"]:::result
Positive/negative haze decomposition
Removing the scattering component isn’t the end of the story for harsh conditions — heavy, non-uniform haze also flattens local contrast in ways a single subtractive correction doesn’t fully undo. The paper addresses this by decomposing the residual haze into positive and negative components relative to the local mean: the positive component (regions brighter than local expectation, typically where haze is thickest) and the negative component (regions darker than local expectation, typically finer object detail suppressed by the haze) are each processed separately before being recombined. Handling them separately instead of as one signed correction recovers local contrast that a single-pass correction leaves flattened.
graph TD
classDef in fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#000;
classDef pos fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#000;
classDef neg fill:#e3f2fd,stroke:#1e88e5,stroke-width:2px,color:#000;
classDef out fill:#f3e5f5,stroke:#8e24aa,stroke-width:2px,color:#000;
R["Residual haze<br/>after mask removal"]:::in
P["Positive component<br/>(brighter than local mean,<br/>dense-haze regions)"]:::pos
N["Negative component<br/>(darker than local mean,<br/>suppressed detail)"]:::neg
R --> P
R --> N
P --> Proc1["Suppress"]:::pos
N --> Proc2["Recover"]:::neg
Proc1 --> C["Recombine"]:::out
Proc2 --> C
C --> Final["Contrast-restored<br/>image"]:::out
Evaluated with three no-reference image quality metrics — NIQE, BRISQUE, and BLIINDS-II, all of which score lower for more natural-looking, less distorted images — the harsh-condition method consistently beat both base ARMS and the classical baselines across the tested scenes, with the biggest margins showing up exactly where non-uniformity was worst.
This closes the loop on the “more on that once the numbers are finalized” I left at the end of the original ARMS work: the spatially-adaptive extension is no longer a plan, it’s a published paper with real Table I numbers behind it.
References:
- J. Jeong and M.-C. Lee, “Scattering Medium Removal Using Adaptive Masks for Scatter in the Spatial Frequency Domain,” IEEE Access, vol. 13, pp. 72769–72777, 2025. doi: 10.1109/ACCESS.2025.3563369. Supported by JSPS KAKENHI Grant 24K01120.
- J. Jeong, M. Cho, and M.-C. Lee, “Scattering Media Removal under the Harsh Conditions Using Adaptive Removal via Mask for Scatter,” 2025 International Technical Conference on Circuits/Systems, Computers, and Communications (ITC-CSCC), 2025. Supported by JPJ000255.
Enjoy Reading This Article?
Here are some more articles you might like to read next: