Wavelet-based noise estimation is widely used in image processing and signal denoising. The key idea is that wavelet transforms can separate noise from meaningful structures, allowing for robust noise level estimation.

Gaussian noise is high-frequency and often dominates the fine-scale (high-frequency) wavelet coefficients. By analyzing the distribution of wavelet coefficients at the finest level, we can estimate the noise variance.

The standard approach uses Donoho & Johnstone's Median Absolute Deviation (MAD) estimator:

$$ \sigma=\frac{\operatorname{median}\left(\left|w_i\right|\right)}{0.6745} $$

where:

🧠Python Implementation

We'll use PyWavelets (pywt) to compute the wavelet transform and estimate Gaussian noise in an image.

https://gist.github.com/viadean/be9827e30268452094325d11b17a1bcb

How It Works

  1. Convert the image to grayscale (if needed).
  2. Apply a 2D wavelet transform (Daubechies wavelet) to decompose the image.
  3. Extract high-frequency coefficients (diagonal detail coefficients).
  4. Estimate noise using the MAD formula.

Why Wavelet-Based Estimation?