Here is an easy to use script that estimates the standard deviation of temporal noise (e.g. read noise and dark noise) in a dark or bias subframe or integration. I have found it useful for dark and bias quality checks and also for sensor characterization.
Mike
https://dl.dropboxusercontent.com/u/109232477/PixInsight/Scriptbox/DarkBiasNoiseEstimator.0.11.zipA dark or bias frame can be viewed as having three noise components: temporal noise (e.g. read noise and dark noise), spatial noise (e.g. offset and dark current nonuniformity), and spurious signal noise (e.g. cosmic ray hits). A good dark or bias master integration should bury temporal noise and reject spurious signal noise, and leave spatial noise intact. The spatial noise is what gets frame subtracted in the calibration of light frames. So, spatial noise is the "signal" that a good dark or bias master should contain, with minimal "noise" in the form of temporal noise and spurious signal noise. So one quality metric of dark or bias frame is how much temporal noise and spurious signal noise it contains, the less of both the better.
If you look at a single frame, spurious signal noise is often easy to see, but it is hard to distinguish temporal noise from spatial noise. They are easy to confuse, and even noise measurement tools can confuse them when analyzing a single frame. The script DarkBiasNoiseEstimator solves this problem by first subtracting two dark or bias frames to eliminate spatial noise, and then measuring the temporal noise in the difference using a robust technique that rejects spurious signal noise. The script normalizes its temporal noise measurement to account for the fact that there are two doses of independent temporal noise in the frame difference. The script provides the resulting standard deviation of temporal noise estimate. The script does not attempt to measure spurious signal noise.
So the script needs two frames to make a measurement. The script assumes that the spatial noise in both frames is equal, otherwise their difference won't properly eliminate spatial noise. This means that both frames should be captured within a reasonable time period, i.e. preferably hours, days, or maybe weeks, and not months or years apart. Both temporal noise and spatial noise on my sensor drifts measurably in a month or so. The script also assumes that for subframes both were exposed similarly, and for integrations that both are similar combinations of the same number of similarly exposed subframes. This assumption is required for normalization purposes.
The examples below show results for frames from my mono sensor operating at -20°C. The script also works on raw Bayer CFA frames and for channels extracted from de-Bayered CFA frames. The frames must be single channel and equal size.
Here are the results for flat_dark subframes, each binned 2x2 and exposed 24 seconds.
Since the flat_dark exposure is relatively short, and dark current is relatively low in this sensor, this result is a good estimate of sensor read noise (i.e. there is little dark noise in the subframes). Using the sensor gain of 1.059 e-/DN (provided by my vendor), an estimate of my sensor's binned 2x2 read noise is 12.65 DN RMS * 1.059 e-/DN = 13.4 e- RMS.
Here is the result for flat_dark integrations, each an average combination of 64 flat_dark subframes, each again binned 2x2 and exposed 24 seconds.
Temporal noise in the integration decreased by the factor 12.65 / 1.59 = 7.96, which is nearly equal to the expected square root of 64, the number of combined subframes. This means that the subframe integration is working about as well as is possible.
There is the result for darks subframes exposed 40 minutes (i.e. 2400 seconds). Additional dark noise results in a higher temporal noise estimate than that of the flat_dark subframes.
Given the results for the 24 second flat_dark and 2400 second dark, it is easy to estimate sensor dark current by exploiting the independence of the noise sources, photon statistics, the known time interval and sensor gain.
(15.18^2 - 12.65^2) / (2400 - 24) * 1.059 = 0.031 e-/second.