I’ve spent a lot of time on signal-to-noise ratio (SNR) studies at mid and higher tones (Zones V through VII). Now it’s time to look at SNRs in the darker areas of the picture. Things get a bit more complicated as things get dimmer. At high photon counts, we can safely say that the mean value of a patch of image corresponds to the signal, and the variation in that level (for the right target) to the noise. That’s not true lower down, because real-world sensors produce some output even when there’s no light at all. Even if there were no variation in that output across the sensor, if would amount to noise, because it’s not correlated to the light the sensor’s supposed to be reading.
Some people call this noise “dark noise” or “read noise”. Back in the days when all the area sensors were CCDs we often called it “dark current”, which was a term that carried over from the time when photomultiplier tubes (yes, tubes!) and photodiodes were the common sensors. Dark current referred to what happened before the amplifiers and the analog to digital converters (ADCs). There are other contributors to output where there should be no output in both CCD and CMOS sensors. I could go into detail, but the details aren’t particularly useful to photographers trying to get the most out of their cameras. I prefer to lump all the sources of sensor output under dark conditions together; I call the aggregate the “noise floor”. Think of it as a signal that’s present all the time. The signal from the sensor when there’s light adds to the noise floor. When there’s a lot of light, the effects of the noise floor are swamped out. When things are dim, we have to consider it.
I set out to characterize the noise floor of the Nikon D4. There is a lot of opinion on the ‘net that the noise floor has a strong thermal component that can easily be brought into play by self-heating. One self-heating culprit is reputed to be live view; I will consider that later (perhaps much later). Another is the electronic activity involved in making exposures and reading out the data. That was worrisome to me, since my analysis workflow involves making many exposures and working with their statistics, and if the act of making the exposures significantly affected the data from the exposures, it would slow me down a lot.
I started out making a set of more than 70 quarter-second exposures of the back of a lens cap at 1 frame per second. I looked at the histogram of the central 90% of the image. It has an extremely long tail. You can see that in the following plot, for which the camera was set to ISO 6400, and the exposure was 1/8000 of a second. The values in the image are strongly sensitive to both ISO setting and shutter speed, but the shape of the histogram is similar in all cases. Note that I’ve set the vertical axis to logarithmic so you can see the details of the tail; this has the effect of making the tail look even longer than it really is. I’ve also set the horizontal axis to linear, which is probably different from the way you’re used to seeing it (the horizontal axis in the histogram on the back of your camera is probably quasi-logarithmic).
I made a series of more than 70 dark exposures at ISO 100 and ¼ second, at a rate of 1 frame per second. Longer exposures seemed to cause more self-heating than short ones in my previous testing, and I don’t expect to use exposures longer that ¼ second in the present study. Here’s the average value of the noise in each image of the series, in each color plane, with the two green planes averaged together:
I looked at the variation in the noise across the image – the noise in the noise, if you will. I chose standard deviation as my statistical measure from among the one choice offered by RawDigger. Here I admit to looking for my keys underneath the lamp-post. I could have exported each of the images from Rawdigger as TIFFs, brought them into Matlab, and written a program to model the underlying statistics assign metrics appropriate to the distribution, and plot the result. Call me lazy, but I didn’t do that. While standard deviation may be an inappropriate measure for the noise, it seems to get worse as the noise gets worse, at a rate that seems about right. Here’s the standard deviation plot:
I cranked the ISO up to 6400 and repeated the tests. First, the average values:
And next, the standard deviations:
The small self-heating effect is more visible because there’s less variation in the values than at ISO 100. It’s certainly small enough that it won’t seriously affect the measurements I intend to make. Why is there less variation in the values? Probably because there’s a lot more noise at ISO 6400. More noise means more samples of noise, and that means less variability.
For completeness, I made a set of measurements at 1/8000 second, ISO 6400. Here are the averages: