Sources of read noise in CMOS sensors

JimKasson

Community Leader
Forum Moderator
Messages
52,274
Solutions
52
Reaction score
59,057
Location
Monterey, CA, US
In another thread, I was asked about the sources of noise in CMOS image sensors. There are several kinds of noise involved: read noise, photon or shot noise, and pixel response nonuniformity (PRNU). This post attempts to give a non-quantitative listing of the sources of read noise.

In CMOS image sensors, read noise refers to the uncertainty or variation introduced when converting and extracting photo-generated charge from each pixel into a digital value. Unlike shot noise (which is signal-dependent), read noise is signal-independent and represents the floor of detectability for low-light imaging.

Modern CMOS sensors usually use column-parallel analog-to-digital converters (ADCs) to increase speed and reduce power. These architectures introduce unique read noise contributors, both shared and per-column.

Here’s a simplified signal path for a modern CMOS sensor:

Photodiode → Floating Diffusion → Source Follower → Multiplexer → Column Line → Sample-and-Hold → ADC

Let’s look at the noise sources at each stage:

Thermal (kTC) Reset Noise. When the floating diffusion node (FD) is reset before signal integration, it stores a charge with some thermal uncertainty. This is random from frame to frame and is typically removed using correlated double sampling (CDS). I’m not going to cover CDS here.

Source Follower Noise. Each pixel usually has a source follower transistor (current amplifier) to buffer the charge on the FD node.

The source follower contributes a) 1/f (flicker) noise, which is more prominent at low frequencies and can be mitigated with layout and process optimization, and b) Thermal noise, which is due to channel resistance in the MOSFET. This noise scales with transistor size and bias current.

Column Line Noise (Charge Injection, Cap Loading)

The shared column bus introduces noise due to
  • Multiplexing errors, crosstalk/charge injection from control signals
  • Coupling to parasitic capacitances
  • Sample-and-hold circuits
Sample and Hold Noise. The sample and hold circuitry, which locks the signal in place while the ADC does the conversion, also contributes noise.

Column ADC Noise. In column-parallel architectures, each column has its own ADC. These contribute:
  • Quantization noise:
  • Thermal and comparator noise
  • Reference voltage fluctuations
  • Mismatch between ADCs across columns
In addition, there are system wide sources of read noise:
  • Reference voltage noise
  • Analog power rail noise
  • Bias line noise
  • Crosstalk between columns
  • Clock feedthrough into sensitive analog nodes
 
Last edited:
When multiple independent (i.e., uncorrelated) noise sources contribute to a measurement, the total noise is not just the sum of the individual standard deviations. Instead, it's the square root of the sum of their variances. This is called adding in quadrature.

If:
  • noise_1 has standard deviation sigma_1
  • noise_2 has standard deviation sigma_2
  • ...
  • noise_n has standard deviation sigma_n
and all noise sources are statistically independent, then the total noise standard deviation is:

sigma_total = sqrt(sigma_1^2 + sigma_2^2 + ... + sigma_n^2)

This is because variances add:

Var(X + Y) = Var(X) + Var(Y) (if X and Y are independent)

Since standard deviation is the square root of variance:

sigma = sqrt(Var)

Two Noise Sources

Imagine a signal that has two independent noise sources:
  • Thermal noise with sigma_thermal = 3 e⁻
  • ADC quantization noise with sigma_adc = 4 e⁻
Then the total noise is:

sigma_total = sqrt(3^2 + 4^2) = sqrt(9 + 16) = sqrt(25) = 5 e⁻

Think of each noise source as causing random "jitter" in a different direction:
  • If they push in exactly the same direction every time (i.e., correlated), you’d add linearly.
  • But if they’re independent, their errors are like steps in random directions. The net effect grows like the hypotenuse of a triangle.
That’s why the Pythagorean theorem—i.e., squaring, summing, and taking a square root—shows up.

If the noise sources are correlated, then their joint variance includes a cross term:

Var(X + Y) = Var(X) + Var(Y) + 2 * Cov(X, Y)

In this case, you can’t just add the variances—you must also account for their covariance (how much they tend to rise and fall together).

In Imaging Sensors

In CMOS sensors, typical independent read noise sources include:
  • Reset noise (kTC noise)
  • Source follower transistor noise
  • Column bus or sample-and-hold noise
  • ADC noise
  • Power supply fluctuations (if isolated per stage)
So, we model:

sigma_read^2 = sigma_reset^2 + sigma_sf^2 + sigma_column^2 + sigma_adc^2 + ...

and then take:

sigma_read = sqrt(sigma_read^2)
 
Hi,

I understand this stuff, and I'm used to writing technical stuff up, but I'm sure I'd have missed some of it.

Or, worse, added in stuff from my RF field (field, get it?) which doesn't apply to sensors. I work with more links in the signal chain, and I'm sure some extra bits would creep in....

Stan
 
Is it correct, that Source Follower noise and Column Line Noise (at same image resolution and aspect ratio) increase with sensor size?
And shouldn't there be a thermal noise source for longer exposure times (>1/10 s), since there are crystal defects in the silicon that also scales with pixel size?
 
Is it correct, that Source Follower noise and Column Line Noise (at same image resolution and aspect ratio) increase with sensor size?
Source follower noise would not. Column line noise probably would, but linearly with pictuce height in pixels.
And shouldn't there be a thermal noise source for longer exposure times (>1/10 s), since there are crystal defects in the silicon that also scales with pixel size?
Now you're talking about dark current.

 
In addition to the decorrelated noise, where one assumes that each pixel is subject to some i noise process that is independent of its neighborsthere are some obvious naive questions about pattern noise

- what sort of issues create disturbing patterns?

- what sort of pattern-filtering can one do and what can't one do?

- for the moving image guys, what type of noise issues can one remove by temporal filtering, and which persist?

I had a Nikon D4. It was hopeless, with banding everywhere. Nikon wouldn't fix it, they simply didn't care, they didn't want to replace everybody's sensor. But I did learn from this camera how much processing goes into getting nice images from a CMOS sensor.

Edmund
 
In addition to the decorrelated noise, where one assumes that each pixel is subject to some i noise process that is independent of its neighborsthere are some obvious naive questions about pattern noise

- what sort of issues create disturbing patterns?
FPN Sources by Sensor Subsystem

1. Dark Current Variation (DSNU)
  • In the absence of light, pixels still accumulate charge due to thermally generated carriers.
  • Variability in dark current across the array → offset map ("salt & pepper" or blotchy pattern).
  • Temperature sensitive and exposure-time dependent.
2. Pixel Gain Variation (PRNU)
  • Even under flat-field illumination, pixel responses vary.
  • Caused by:
    • CFA filter density variation,
    • Microlens misalignment,
    • Photodiode area variation,
    • Local doping/geometry imperfections.
3. Column FPN
  • Arises from shared column circuits: gain stages, ADCs, or reference lines.
  • Often appears as vertical banding.
4. Readout Chain Mismatches
  • Offset and gain mismatches in the per-column or per-pixel amplifier chain.
  • Includes source follower variation, pixel load imbalance, or CDS mismatches.
5. Power Supply / Bias Gradients
  • Slight droop or ripple across large arrays, especially on high-resolution sensors.
  • Can induce subtle systematic FPN.
- what sort of pattern-filtering can one do and what can't one do?
Frequency domain mitigation measures can be useful.
- for the moving image guys, what type of noise issues can one remove by temporal filtering, and which persist?
FPN cannot be removed by temporal filtering.
I had a Nikon D4. It was hopeless, with banding everywhere. Nikon wouldn't fix it, they simply didn't care, they didn't want to replace everybody's sensor. But I did learn from this camera how much processing goes into getting nice images from a CMOS sensor.

Edmund
 
So…. Y’all geniuses (or is that geniui? LOL), the depth of my inability to understand any of this approaches Challenger Deep proportions. But it’s exciting to know you guys are “out there” and helping us schlubs understand more. 😎

So, what’s the upshot of this information for the average, GFX 100x toting schlub?

Props…

Rand
 
First of all thanks for the useful information. I never found that topic so well consolidated.
Is it correct, that Source Follower noise and Column Line Noise (at same image resolution and aspect ratio) increase with sensor size?
Source follower noise would not. Column line noise probably would, but linearly with pictuce height in pixels.
I'm asking myself for a longer time why large sensors aren't that noise free, as they should be from a pure standpoint of shot noise.

If I compare a Sony A7VR (60 MP), a GFX100 (100 MP), an OM-1 (80 MP stacked, for image aquission binned down to 20 MP) and an Sony A1 (50 MP stacked), I don't see that they all have the same noise level if you scale the ISO-value with the sensor size. From pure shot noise, they should all look the same. But smaller sensors look cleaner.


If you overthink that from a point of an optical point of view, that interesting. So the low light ability of a camera system is not anymore just a function of depth of field (what physics tells us). It also prefers smaller cameras sensors over larger.

At least to about apertures larger (physical, smaller number) than F2.0 or F1.4, where the optical reflection losses from the coatings and microlens structure on the sensor gets significant.

But I don't know, why the large sensors have a higher noise floor compared to small ones.
And shouldn't there be a thermal noise source for longer exposure times (>1/10 s), since there are crystal defects in the silicon that also scales with pixel size?
Now you're talking about dark current.

https://blog.kasson.com/the-last-wo...rs-where-it-comes-from-and-how-cooling-helps/
To my understanding of physics, also dark current should exhibit a shot noise characteristic. It's just discrete electrons generated in the crystal. The more electrons I have, the more poisson kind of noise I should see.

Are there thermal sensors in CMOS-devices to monitor the temperature at many points? In case of an EVIL-camera like GFX50 or OM-1 the sensor might heat locally due to intense light sources. This is less a problem with Non-Live-View-cameras like DSLRs.
 
When multiple independent (i.e., uncorrelated) noise sources contribute to a measurement, the total noise is not just the sum of the individual standard deviations. Instead, it's the square root of the sum of their variances. This is called adding in quadrature.

If:
  • noise_1 has standard deviation sigma_1
  • noise_2 has standard deviation sigma_2
  • ...
  • noise_n has standard deviation sigma_n
and all noise sources are statistically independent, then the total noise standard deviation is:

sigma_total = sqrt(sigma_1^2 + sigma_2^2 + ... + sigma_n^2)

This is because variances add:

Var(X + Y) = Var(X) + Var(Y) (if X and Y are independent)

Since standard deviation is the square root of variance:

sigma = sqrt(Var)

Two Noise Sources

Imagine a signal that has two independent noise sources:
  • Thermal noise with sigma_thermal = 3 e⁻
  • ADC quantization noise with sigma_adc = 4 e⁻
Then the total noise is:

sigma_total = sqrt(3^2 + 4^2) = sqrt(9 + 16) = sqrt(25) = 5 e⁻

Think of each noise source as causing random "jitter" in a different direction:
  • If they push in exactly the same direction every time (i.e., correlated), you’d add linearly.
  • But if they’re independent, their errors are like steps in random directions. The net effect grows like the hypotenuse of a triangle.
That’s why the Pythagorean theorem—i.e., squaring, summing, and taking a square root—shows up.

If the noise sources are correlated, then their joint variance includes a cross term:

Var(X + Y) = Var(X) + Var(Y) + 2 * Cov(X, Y)

In this case, you can’t just add the variances—you must also account for their covariance (how much they tend to rise and fall together).

In Imaging Sensors

In CMOS sensors, typical independent read noise sources include:
  • Reset noise (kTC noise)
  • Source follower transistor noise
  • Column bus or sample-and-hold noise
  • ADC noise
  • Power supply fluctuations (if isolated per stage)
So, we model:

sigma_read^2 = sigma_reset^2 + sigma_sf^2 + sigma_column^2 + sigma_adc^2 + ...

and then take:

sigma_read = sqrt(sigma_read^2)
Do muons participate in noise?
 
When multiple independent (i.e., uncorrelated) noise sources contribute to a measurement, the total noise is not just the sum of the individual standard deviations. Instead, it's the square root of the sum of their variances. This is called adding in quadrature.

If:
  • noise_1 has standard deviation sigma_1
  • noise_2 has standard deviation sigma_2
  • ...
  • noise_n has standard deviation sigma_n
and all noise sources are statistically independent, then the total noise standard deviation is:

sigma_total = sqrt(sigma_1^2 + sigma_2^2 + ... + sigma_n^2)

This is because variances add:

Var(X + Y) = Var(X) + Var(Y) (if X and Y are independent)

Since standard deviation is the square root of variance:

sigma = sqrt(Var)

Two Noise Sources

Imagine a signal that has two independent noise sources:
  • Thermal noise with sigma_thermal = 3 e⁻
  • ADC quantization noise with sigma_adc = 4 e⁻
Then the total noise is:

sigma_total = sqrt(3^2 + 4^2) = sqrt(9 + 16) = sqrt(25) = 5 e⁻

Think of each noise source as causing random "jitter" in a different direction:
  • If they push in exactly the same direction every time (i.e., correlated), you’d add linearly.
  • But if they’re independent, their errors are like steps in random directions. The net effect grows like the hypotenuse of a triangle.
That’s why the Pythagorean theorem—i.e., squaring, summing, and taking a square root—shows up.

If the noise sources are correlated, then their joint variance includes a cross term:

Var(X + Y) = Var(X) + Var(Y) + 2 * Cov(X, Y)

In this case, you can’t just add the variances—you must also account for their covariance (how much they tend to rise and fall together).

In Imaging Sensors

In CMOS sensors, typical independent read noise sources include:
  • Reset noise (kTC noise)
  • Source follower transistor noise
  • Column bus or sample-and-hold noise
  • ADC noise
  • Power supply fluctuations (if isolated per stage)
So, we model:

sigma_read^2 = sigma_reset^2 + sigma_sf^2 + sigma_column^2 + sigma_adc^2 + ...

and then take:

sigma_read = sqrt(sigma_read^2)
Do muons participate in noise?
No.
 
If I compare a Sony A7VR (60 MP), a GFX100 (100 MP), an OM-1 (80 MP stacked, for image aquission binned down to 20 MP) and an Sony A1 (50 MP stacked), I don't see that they all have the same noise level if you scale the ISO-value with the sensor size. From pure shot noise, they should all look the same. But smaller sensors look cleaner.
I'm still thinking about this point. Has anyone a clue why smaller sensors get from the same amount of light cleaner images?
(I'm rather clear about the fact, that Medium format systems are not made for candlelit scenes at all.)
 
If I compare a Sony A7VR (60 MP), a GFX100 (100 MP), an OM-1 (80 MP stacked, for image aquission binned down to 20 MP) and an Sony A1 (50 MP stacked), I don't see that they all have the same noise level if you scale the ISO-value with the sensor size. From pure shot noise, they should all look the same. But smaller sensors look cleaner.
I'm still thinking about this point. Has anyone a clue why smaller sensors get from the same amount of light cleaner images?
(I'm rather clear about the fact, that Medium format systems are not made for candlelit scenes at all.)
Are you assuming an Equivalent setup? If so the expected number of photons (s) projected onto the area of a sensor is the same, irrespective of sensor size.

If a sensor has a number of pixels (n) with an effective quantum efficiency (QE), the expected number of photoelectrons generated per pixel is s*QE/n. The ISO setting does not affect this figure so you are correct, if all else is equal/equivalent shot noise should be the same.

However, the Studio Scene images in your example are not set up equivalently, so the assumption does not hold and that is no longer true. It would also not be true if lens transmission, QE, aspect ratio or a myriad other variables were different.

Where ISO does come into the picture is in the deep shadows, mainly through read noise, the effect of which is usually dependent on a number of compromises and variables including the number of pixels and their size.

Jack
 

Keyboard shortcuts

Back
Top