Imaging solutions with Free Software &
Open Hardware

Who's online

There are currently 0 users online.


An Alternative to the Correlated Double Sampling (CDS) and Binning
in CCD Readout



Andrey Filippov



What is CDS and why is it used?


The process of readout from the CCD consists of 2 parts:

- moving charge packets (representing pixel values) around the
sensor - very efficient process that does not introduce noise and

- converting the charge packet values into output voltages -
this is where "readout noise" gets injected into the signal path.

The charge-to-voltage converter at the CCD output is basically a capacitor
with single- or multistage voltage follower and a switch to preset the capacitor
voltage to a "known" level. In simplest video systems the switch is closed in
the beginning of each pixel readout - that presets the capacitor voltage as
well as the output level. After the pixel charge packet is transferred to the
capacitor its voltage changes and the output signal represents the pixel value.
The "worst" element in this process is the switch - due to its finite residual
conductivity the capacitor is precharged to an unknown value - and it adds the
output signal. Fortunately there is a way to compensate for this precharge uncertainty
- correlated double sampling (CDS). In this method the output signal is sampled
twice for each pixel - just after precharging capacitor and after the pixel
charge packet is added. The difference between these two values does not include
the noise component induced by the switch.


What CDS cannot compensate for?



Even CDS cannot eliminate all noise from the CCD readout signal induced by
the output stage (combined with analog circuits that process the CCD signal
outside its chip). Most of this noise comes from active component of the impedances
in the signal path (resistor thermal noise) and is proportional to the square
root of the bandwidth. This is why high sensitivity scientific-grade CCD readouts
are called "slow scan" - the longer the pixel value is integrated during the
sampling process the lower noise is added to the signal. Reducing the readout
rate has its limits too - it increases the waiting time for the charge packets
to reach the output stage from just 16 milliseconds for NTSC video rate to seconds
and tens of seconds for slow scan mode. And all this time charge packets are
subject to thermal ("dark") current that adds to their values. And while average
value of that number of thermally generated charges can be subtracted from the
output value the random part of it (proportional to the square root of the number
of electrons) - cannot. Trying to fight this noise source adds another word
to the name of the slow-scan cameras "cooled". Peltier or even liquid nitrogen
cooling of the sensor is often used to exponentially decrease its dark current
- but it adds much to the complexity of the system too.


So design of the slow scan CCD readout systems (with the given sensor temperature)
has to negotiate between two conflicting requirements. The slower the (pixel)
readout is the less noise is induced at the output amplifier, the faster the
(chip) readout is the less noise is added by the dark current. Most CDS use
analog circuitry for sampling and subtracting the signal values - it makes it
rather difficult to adjust the optimal sampling time depending on the readout
mode (windowing, binning, sensor temperature, etc.)



What else is used to increase sensitivity?



There is other known way to increase sensitivity of a given CCD sensor - at
a price of reducing it resolution - called "(on-chip) binning". Most CCD sensors
allow merging pixel charge packets before they are converted to the output voltage.
"Horizontal binning" is merging of several pixel packets in the output capacitor,
"vertical" - merging several pixel rows in an output (horizontal) shift register.
Compared to "off-chip" averaging of the pixel values (normally done with image
processing software) on-chip binning gives better signal to noise ratio proportional
to square root of the number of pixels merged. It is so because for combined
charge packets the output amplifier noise is added only once, and for individual
pixel outputs it is added to each pixel. As these are independent random numbers
the sum of the pixel values will have the noise component square root of number
of pixels higher than each of them.



Is there any way to push the limits?


It is possible to get more information from a given CCD using alternative readout
techniques. The method described below allows to:

- decrease pixel readout time twice with the same output noise
level;

- make horizontal binning "nondestructive" - single shot contains
information that normally require several shots - with and without binning;

- make the readout rate adjustable maintaining sampling times
optimal.

It all is possible by using modern fast high-resolution ADCs and shifting some
acquisition functions from analog to digital domain. Using ADC at fixed sampling
rate of 10 MHz allows building digital CDS that easily covers normal slow-scan
rates from 100K samples/sec to 5M samples/sec. And digital sampling can do much
more than just copying analog functions. The "reset" pulse that precharges the
output capacitor is not needed at each pixel. The pixel information is coded
in the difference between the output value after the pixel charge was applied
to the capacitor and before. When reading low-value pixels precharging may be
needed once per hundreds of pixels. And as full-well capacity of the output
capacitor is much higher than that of a pixel, it is safe to let the output
signal rise up to half of saturation value before resetting it.


This is the comparison of the readout algorithms:


Analog (fixed) CDS:

for each pixel {

precharge capacitor;

sample referenceValue;

transfer charge packet;

sample signalValue;

output (signalValue-referenceValue);

} // In slow-scan mode cycle time is approximately twice
the sampling time.

Analog (fixed) CDS with horizontal binning:

for each N pixels { // N is number of pixels to merge

precharge capacitor;

sample referenceValue;

repeat N times {transfer charge packet;} // all the individual
pixel information is lost

sample signalValue;

output (signalValue-referenceValue);

}

Digital (adaptive) readout:

precharge capacitor;

sample referenceValue;

for each pixel {

if (referenceValue > saturationValue/2) { // comparison performed
by analog comparator as most ADCs use pipelined operation and the digital
data may not be available yet

precharge capacitor;

sample referenceValue;

}

transfer pixel charge packet;

sample signalValue;

output (signalValue-referenceValue);

referenceValue:=signalValue;

}

For most of the low-value pixels only one sampling will be needed - this reduces
readout time twice (for the same sampling time). Adding together result pixel
values (in the same reset group) provides exactly the same information (and
the same S/N ratio) as the regular binning as only two actual analog measurements
will remain in the result. Different binning parameters (how many pixels to
merge) can be applied to the same data array after the image was acquired -
very useful feature if process captured is impossible (or difficult) to repeat.


It is possible to modify this algorithm for the images that contain both low
and high pixel value areas by adding an option of shorter sampling time for
high value pixels. This sampling time decrease will not add much to the result
noise - prevailing noise source for that pixels is the quantum nature of the
charge packets themselves - they consist of finite number of electrons. This
number is limited by the "full-well capacity" of the pixels and is usually in
the range of tens to hundreds of thousands of electrons. The charge packet of
100,000 electrons will have the random component of 300 electrons (or 0.3%)
- much higher than output amplifier noise. This fact also means that instead
of a single high resolution ADC it is possible to use two lower resolution ones
- one for low pixel values, and the other - for high.


 


home