When we average repeated captures of the same scene we hope for a steady improvement in signal to noise ratio. Each independent frame carries its own sample of random noise, and when we average those frames the signal adds coherently while the noise tends to cancel out. The result is a cleaner image that should scale in a predictable way with the number of frames.
A natural question is whether it matters how we do the averaging. If we sum the frames in infinite precision and round only once at the end we can think of this as the ideal case. If instead we round after every addition, as would be the case in a fixed point accumulator that matches the output precision, then in principle we inject extra quantization noise at each step. It seems intuitive that this step-by-step rounding might degrade the benefit of averaging, especially at low output bit depths.
I wrote a simulator to examine this question. I’ve simulated 14 and 16-bit captures with the same amount of read noise relative to full scale. I’ve averaged with 14, 16, and 32 bit precision.


Note that to take full advantage of this approach, we need to have an output precision that is greater than the input precision.
Here are the graphs with stops in the vertical axes, instead of dB.
Rounding at end:


Colin Surprenant says
To set 32 bits precision in PS is it only a question of going into Image->Mode->32 bits/Channel once files are loaded as layers or smart objects layers ? (before applying averaging)
From a LR to PS workflow, once raw 14/16 bits files are edited in LR, we select them and then just do a Edit In->Open as layers/smart objects in Photoshop and then in PS go into Image->Mode->32 bits/Channel ?
phanter says
“The result is a cleaner image that should scale in a predictable way with the number of frames.”
That’s only the case with poisson noise, like for example the shot (photon) noise in an image.
With:
S as the total target signal in photons per second,
Qe as the quantum efficiency of thedetector,
Tint as the exposure time in seconds,
B as the average sky background in photons per second per pixel, (can be ignored in use cases without other light sources)
D as the average dark current in electrons per second per pixel,
NR representing the read noise in electrons per pixel and
Npixel as the number of pixels inside the ROI
Nframes as the number of frames used
SNR= (S*Qe*Tint)/sqrt(S*Qe*Tint + Npixel*(B*Qe*Tint+D*Tint+RON²*Nframes))
So read noise leaves a residual that diminishes stacking efficiency. So there is no linear behaviour to be expected.