No jobs
Core 12 min 3 of 5

Photons, electrons, and why σ is not a constant

The noise is a line through variance and mean, and ISO changes its slope by shrinking the well.

What this repairs

Modelling image noise as additive Gaussian with one σ, so both the denoiser and the augmentation are calibrated to a distribution the sensor does not produce.

A pixel does not measure brightness. It counts electrons, released by arriving photons, until it is read out — and counting is Poisson, so the variance of the count equals its mean. That single fact makes the noise signal-dependent, and everything else in this concept follows from it.

To connect it to a normalised image, you need the well capacity NeN_e : the number of electrons that a normalised signal of 1.01.0 corresponds to. A signal ss then means sNes N_e electrons, and the noise on it is the noise of that count.

From Poisson counting to the photon transfer curve

  1. kPoisson(λ),λ=sNe,Var(k)=λk \sim \operatorname{Poisson}(\lambda), \qquad \lambda = s\,N_e, \qquad \operatorname{Var}(k) = \lambda

    The defining property of a counting process: mean and variance are the same number. Nothing about the sensor is in this line except the capacity.

  2. s^=kNe    Var(s^)=λNe2=sNe\hat{s} = \frac{k}{N_e} \;\Longrightarrow\; \operatorname{Var}(\hat{s}) = \frac{\lambda}{N_e^{2}} = \frac{s}{N_e}

    Dividing a random variable by a constant divides its variance by the square, so back in normalised units the shot-noise variance is linear in the signal, with slope 1/Nₑ.

  3. Var(s^)=sNe+(reNe)2\operatorname{Var}(\hat{s}) = \frac{s}{N_e} + \left(\frac{r_e}{N_e}\right)^{2}

    Read noise is a fixed number of electrons added at readout, independent of the signal, so it contributes a constant variance — the intercept of the line.

  4. Ne=full wellISO/ISO0N_e = \frac{\text{full well}}{\text{ISO}/\text{ISO}_0}

    And the capacity itself depends on ISO. Raising ISO adds no electrons; it declares that fewer of them already count as white, so the well the signal is measured against shrinks.

  5. SNR(s)=ss/Ne=sNe\text{SNR}(s) = \frac{s}{\sqrt{s/N_e}} = \sqrt{s\,N_e}

    The consequence worth carrying: signal-to-noise goes as the square root of the collected electrons, so four times the light buys two times the SNR — and half the well capacity costs a factor of √2.

Because the variance is proportional to the signal, absolute noise is largest in the highlights and relative noise is largest in the shadows: at signal ss the relative error is 1/sNe1/\sqrt{s N_e} , which grows without bound as s0s \to 0 . This is the correct way to read a noisy image. The shadows are not noisy because the sensor is bad there; they are noisy because there are few photons there, and that is a property of the light, not of the electronics.

It is also why a single global σ\sigma is such a poor model. Fit one to a real frame and you have averaged a shadow σ\sigma and a highlight σ\sigma that differ by a factor of several — then trained a denoiser to over-smooth the highlights and under-smooth the shadows, and an augmentation to add noise where the sensor would not have.

Check yourself

You lose a stop of light and let auto-exposure double the gain, which resolves a higher ISO. The image is as bright as before. What happened to the noise?

Show answer

It got worse, and by a computable amount. The brightness is restored, so the normalised signal ss is where it was; but the resolved ISO shrank NeN_e , and every noise term is measured against that. If the ISO doubled, shot-noise σ\sigma rose by 2\sqrt{2} and read-noise σ\sigma by 22 , at identical brightness. This is the entire mechanism behind gloom in the fog topic: the picture is not much darker, and it is much noisier.

Euler View - ML Experiment Monitor