Noise & Stochastic Processing
Seven ways to understand the signal nobody asked for
“One man’s noise is another man’s signal.” (folk saying of the DSP field)
It says in nine words what this arc says in seven pages: noise is a matter of perspective. A radio astronomer’s noise is a cosmologist’s CMB data. A semiconductor physicist’s RTS noise is the signal; it tells you where the trap is and how deep. An audio engineer’s dither is deliberately added noise that improves the listening experience.
Noise in DSP education is usually treated as the antagonist: something to measure, minimise, and filter out. The Basics chapter on noise and SNR does that job well. These seven Topics pages do something different: they treat noise as a first-class subject, worth understanding on its own terms. They ask where noise comes from, how to measure it, how to build it to a specification, and when adding more of it actually helps.
The arc
The order is deliberate. Each page builds on those before it.
Random processes: the generative root. Six process classes (Gaussian, Poisson, Markov/AR, Lévy, cyclostationary, telegraph) and the noise types they produce. This is the why: every noise PSD, every ACF shape, every broken Gaussian assumption traces back to a process class. [HW]
PSD estimation: measuring what you cannot see directly. From the periodogram (and why it is broken) through Bartlett averaging to Welch’s overlapping-window method that has been the standard since 1967. Confidence intervals so you know whether that spectral peak is real. [HW]
Noise generation: the synthesis counterpart. Box-Muller and Ziggurat for Gaussian samples, AR filtering and Voss-McCartney for coloured noise, and Perlin noise (deterministic, procedurally-generated, band-limited by construction) as the bridge from random to designed. [HW]
Dither: noise that improves quantisation. Undithered truncation creates harmonic distortion; adding TPDF dither before quantising trades a couple of dB of noise floor for a clean, distortion-free spectrum. One of the few DSP techniques where you deliberately add noise to make things better.
ADC noise: beyond the 6.02·B + 1.76 formula. Aperture jitter, thermal noise, INL/DNL, ENOB from SINAD, oversampling gain, and sigma-delta noise shaping. The noise sources that eat your effective bits, and how to buy them back. [HW]
Image noise: noise in two dimensions. Gaussian, salt-and-pepper, speckle, and photon shot noise, each matched to its denoising method and each a reminder that noise is fundamentally about the physics of the measurement, not an abstract statistical model.
Stochastic resonance: the counterintuitive closer. Adding noise to a nonlinear threshold system can improve signal detection. The crayfish does it; the barn owl does it; your sigma-delta ADC does it. The non-monotonic SNR-vs-noise curve is the signature, and it closes the arc by returning to the opening quote: noise is a matter of perspective.
Two axes: analysis vs synthesis, 1-D vs 2-D
| Page | Axis | Domain | Hardware? | Why you’d reach for it |
|---|---|---|---|---|
| Random processes | Analysis | 1-D time series | Yes | You need to know what process produced your noise |
| PSD estimation | Analysis | 1-D frequency | Yes | You need to characterise an unknown noise spectrum |
| Noise generation | Synthesis | 1-D + 2-D | Yes | You need noise with controlled properties for testing |
| Dither | Synthesis | 1-D quantiser | Yes | You are reducing bit depth and the output must be clean |
| ADC noise | Analysis + synthesis | 1-D conversion | Yes | Your effective bits are fewer than advertised |
| Image noise | Analysis | 2-D spatial | Yes | You have a noisy image and need to denoise it |
| Stochastic resonance | Synthesis | 1-D nonlinear | No | You want to understand when adding noise helps |
The math-to-metal thread
Six of the seven pages carry embedded.qmd companions with real C code, most targeting the two default platforms (ESP32-S3 and NUCLEO-F446RE), with noise generation deliberately dropping down the ADR-005 capability ladder (8-bit AVR, Cortex-M0+) because integer-only portability is that page’s lesson. Stochastic resonance has no hardware page; its engineered instance is covered by dither’s.
- Random processes: characterising real noise sources on an MCU: ADC noise floor vs process model, distinguishing thermal from quantisation from interference.
- PSD estimation: a fixed-point Welch estimator using CMSIS-DSP’s real FFT, with the accumulation-in-place memory trick and verification against the known quantisation floor.
- Noise generation: Voss-McCartney pink noise from LFSRs (no FPU needed) and integer Perlin noise for procedural textures on a small display.
- ADC noise: measuring ENOB on a real STM32 ADC, computing SINAD from captured data, and verifying that oversampling buys the bits the theory promises.
- Dither: generating TPDF dither from two LFSRs, adding it before a DAC write, and verifying the harmonic peaks disappear, one of the few DSP experiments you can verify with your ears.
- Image noise: a 3×3 median-selection network running in real time on an ESP32 camera at 30 fps, removing salt-and-pepper noise from a sensor with hot pixels, plus the same filter squeezed into the F446RE’s single-frame SRAM budget.
Together they sketch a capability ladder for noise on the metal: characterise the noise floor (random processes), measure its spectrum (PSD estimation), generate test signals to validate the pipeline (noise generation), and measure the effective resolution of the converter at the end of it (ADC noise).
Closing: the quote, re-read
After seven pages, “one man’s noise is another man’s signal” reads differently. It is not a clever inversion. It is a design principle. The noise you fight in one context is the information you seek in another. Learning to see noise from all of these perspectives, as a process to model, a spectrum to estimate, a signal to synthesise, a distortion to fix, a limit to measure, a texture to filter, and a phenomenon that can help, is what this arc is for.
If you are new to the noise arc, start with random processes and work through in order. If you are here for a specific problem, the table above tells you which page to reach for.