Sensor Analysis Primer – Read Noise – Optical Black
Prepared 2009-02-28, last revised 2009-03-04 by Bill Claff

Introduction

Read Noise is a key factor in determining the shadow performance of a digital sensor.

An analysis of Read Noise helps us separate the contribution of the preamplifier from that of the Analog to Digital Converter (ADC).

Measuring Read Noise can be quite troublesome, especially for Nikon cameras.

The chief problem is that Nikon “zero” corrects the raw data so it is difficult to compute standard deviation for black (lens cap) frames.

Optical Black

A substance called Optical Black is used to ensure that no light reaches those photosites that cover the outer portion of the sensor.

The camera determines Read Noise using these photosites; they are not “zero” adjusted.

For most Nikon cameras (but sadly not all) the raw data includes some of the photosites covered by Optical Black.

Therefore we can use the standard deviation of these Optical Black photosites to characterize Read Noise.

Measuring Optical Black Read Noise

I measure Optical Black Read Noise using the NefUtil program available at my web site. Refer to the NefUtil documentation for details.

The +H and +S options produce output that includes a STATH1 line. This is the Optical Black statistical information.

Optical Black Read Noise versus Gain

Here is a chart of Optical Black Read Noise versus gain for the Nikon D300 with 14-bit ADUs:

Each of the four Color Filter Array (CFA) channels is shown separately.

The relationship is linear except for the flat section at high gain values.

This data shows that ISOs above ISO 1600 are not entirely achieved by analog gain but also by digital gain.

This is somewhat surprising as I was expecting digital gain to “kick in” only at “Hi” ISO values, above ISO 3200 for the D300.

It is also interesting that the digital scaling starts 1/6 EV above ISO 1600.

(But we already know from ISO Auto behavior that the D300 is capably of 1/6 EV steps in ISO.)

Optical Black Read Noise in Electrons

Here is a chart of Optical Black Read Noise versus gain for the Nikon D300 with 14-bit ADUs excluding the non-linear sections:

For Nikon cameras, which use a single amplification stage, we are expecting linear results. And this is what we see.

However, the pairings are quite interesting.

The R/Gb and B/Gr line pairs appear to have identical slopes.

This implies that alternate columns have slightly different noise characteristics.

While the R/B and Gr/Gb line pairs appear to have identical intercepts.

I’m not sure what this means. I think it may be a side effect of the multiple channel readout being inconsistent across channels.

Conclusions

This data has given us some interesting insight into how the D300 sensor operates.

 

We concluded that the D300 uses digital gain not just for “Hi” ISO values but for those above ISO 1600.

 

We have observed some variation between Color Filter Array (CFA) channels that appears to be due to digital scaling.

 

We computed the following Optical Black Read Noise values for the D300 at 14-bits:

 

R

Gr

Gb

B

e

5.383

5.128

5.358

5.104

ADU

0.556

0.692

0.726

0.582

 

Using the Gr channel as an example, 5.128 electrons of Optical Black Read Noise enter the amplifier.

This noise is multiplied by the gain value that corresponds to the current ISO setting.

And a fixed offset, in this case 0.692 ADUs is added as a result of the Analog to Digital Conversion (ADC) itself.

 

Assuming the line pairings observed above the Optical Black Read Noise values for the D300 at 14-bits are:

 

R

Gr

Gb

B

e

5.370

5.116

5.370

5.116

ADU

0.569

0.709

0.709

0.569

 

But given the precision of the data perhaps the best we can do is to average all the channels together:

 

 

RGB

 

e

5.243

 

ADU

0.639

 

The offset introduced by the ADC is almost always overlooked.

However the ADC offset is crucial to properly convert small ADU values to electrons.

Note that ADUs = electrons * gain + nADU where nADU is taken from the ADU row of the above table.

Therefore, electrons = (ADUs - nADU) / gain rather than simply ADUs / gain.

The latter formula is only a good approximation when ADUs is not small.