Does this mean that with gain setting above unity we would get some kind of posterization? Like at 500 you would only have output values of 0, 3, 6, 9... So transitions of brightness between pixels will be less smooth. Or there is some kind of "antialiasing" algorithm built into the driver?
You will have some quantization noise regardless of the gain, and if you stacked enough into an integer space, you could eventually get posterization regardless.
However, you are more likely to get posterization below unity gain, where more than one electron is required for each ADU. At minimum gain on the ASI1600, it takes 4.88e-/ADU. That, as Charles stated, is attenuating the analog signal when it is converted into a digital signal. It "bucketizes" your analog signal. For the first 4-5 electrons, you will get the same value in your image file..1 ADU. You won't be able to differentiate between 1e-, 2e-, 3e-, or 4e-, and some of the time even 5e-. Similarly, the next 4-5 electrons will be the same way. You will be able to differentiate between 4-6 electrons, as you will have 1-2 ADU in your image, however for electrons 5, 6, 7, 8, 9 and maybe 10, they will all convert to 2 ADU. To a degree, read noise will offset some of this posterization, mostly in the lower signal areas, but with an ultra low noise camera, where your deviation is only 3e-, it can only help so much. This is called undersampling, and can result in posterization if you do not stack enough subs and integrate them properly.
It is possible to avoid posterization. By stacking into a 32-bit floating point space with lots and lots of subs. However, the ironic thing about using the lowest gain setting is that you need much longer exposures...so it's much harder top get a lot of exposures. You can expose for as long as possible to make sure you get faint signals above the read noise floor, which will help with SNR, but you could still suffer from some posterization when stacking too-few subs (and you really want to stack 49-64 subs at least to start seeing the benefits with high quantization error.)
At unity gain, each electron in the pixel will produce one ADU in the image, so you should have minimal quantization error. If you had a gain of 0.5e-/ADU, then each individual electron would produce two ADU. This is called oversampling, and while you can experience some posterization, it is much easier to use stacking to average out the error and increase the precision of your data when you are at least at unity, and a higher gain helps even more. I think you get around 0.5e-/ADU at a gain setting of 200 on the ASI1600.
Thank you for the prompt and very clear explanation Jon!
I fully understand what you are saying and it settles the meaning of the "unit gain".
I am somewhat surprised that the well capacity of the pixels is not playing any role. From point of view of the sensor, and of the photons collected, the ADU is somewhat of an artificial quantity. It is determined by the bit-width of the downstream processing circuitry. I doubt that the maximum well capacity of the sensor would be 4095.
Wouldn't it be advantageous to use a gain setting that would associate the maximum well capacity with the maximum possible ADU's? Does this particular gain setting have a name? What numerical value would it correspond to for the ASI1600?
The ASI1600 is kind of an interesting beast. The sensor that it uses is a fairly integrated sensor. It does not do image processing (well, not much), but it does have all the ADC units on-die. There is one ADC unit per column, which is part of the reason it has such low read noise. Each ADC can operate at a relatively low frequency because of the high paralleleism (i.e. each ADC unit only has to process rowCount number of pixels per read, which is a little over 4000 with the ASI1600...whereas a CMOS sensor that used a single off-die ADC would have to process all 16 million pixels through one ADC...you either keep the ADC frequency low and just have a slow readout speed (which is usually the case), or you jack the ADC operating frequency up and introduce more read noise). The low ADC frequency on the sensor reduces the amount of analog noise they introduce to the image signal, but still allows fast readout. Same thing Sony Exmor sensors do, same thing the current generation Toshiba sensors do, etc.
Now, the only real downside to the ASI1600 sensor is the ADC units, which are integrated into the sensor, are 12-bit. The native pixel full well capacity is 20,000e-, which is actually pretty good, however it is only usable at gain setting 0, which has a gain of 4.88e-/ADU!! See above reply to Futuneral. ZWO doesn't have any option to use a 16-bit ADC with this sensor...they are stuck using the 12-bit ADC. Hence the reason unity is only capable of 0-4095ADU. It's also the reason I looked for and found the gain settings 75-77, which give a more reasonable FWC, but at a gain of 2e-/ADU. Not ideal...but, in practice, it is not so bad. You just need to stack as many subs as you can with 32-bit float to keep the precision high enough to avoid posterization issues. In my testing, bit depth (at least, I assume...based on how gaps in my 16-bit histograms converge and eventually disappear) scales as the square root of the square root of the number of subs stacked. So, SQRT(SQRT(4)) means with 4 subs, you gain back over a bit. SQRT(SQRT(16)) means you gain back 2 full bits. SQRT(SQRT(81)) means you gain back 3 full bits precision. To gain back the full 4 bits of precision needed to have gapless 16-bit data...you need to stack 256 subs.
Unity gain on the ASI1600, scaled to 16-bit ADU (0-4095e- to 0-65535 ADU), is actually a very high gain. The driver actually writes out the data as 16-bit into a FITS file, so technically speaking, this is what's happening with the ASI1600 (and, from what I can tell, many other ASI cameras). It's 1/16, or 0.0625e-/ADU, in 16-bit terms. That is a ridiculously high gain, so it shouldn't be a surprise that the FWC at unity is only 4095e-! It gets even more insane at higher gain. At gain setting 300, the maximum normal gain (beyond that, read noise does not decrease, but noise does, so the sensor must be using some additional means of post-pixel amplification to achieve those gain settings), the 12-bit gain is ~0.15e-/ADU...however scaled to 16-bit, it is an insane 0.009375e-/ADU! That basically means that every sensed photon (Q.E. is about 47% Ha, 52% OIII), is amplified to 106-107 16-bit ADU! I was able to see faint Sharpless OIII nebulosity with 100 second 3nm narrow band subs last night while framing and focusing (and I would have been able to sense the core of Sh2-132 with even shorter subs than that...I used 100 second subs just to make sure I knew what I was looking at. ). The individual subs looked pretty noisy...however, I am kind of curious to see how a high gain narrow band image might look. Dynamic range certainly suffers....it is a little over 9 stops IIRC. However read noise drops to around 1.12e- RMS...you would only need a background sky level of 22e- to swamp read noise. O_o
Anyway...there are the curiosities of the ASI1600 gain settings for you. It's an interesting camera. It doesn't deliver ideal mapping of the FWC to a 16-bit output...mostly because it simply cannot. However, it's variable gain offers some intriguing DSLR-like capabilities not usually seen on mono CCD cameras. It offers some ridiculously high gain settings relative to the scaled 16-bit output, which could be a game changer for some things. At high gain (gain setting 300), your data is almost entirely photon shot noise limited. Technically speaking, you should be able to get nearly ideal stacking efficiency by using such a high gain setting. The caveat is, you would need to acquire a TON of subs, and stack a TON of subs, in order to actually get a reasonable final SNR in your integration.
Edited by Jon Rista, 27 August 2016 - 04:43 PM.