# Effect of Quantum Efficiency of a CCD on the intensity and how to normalize it?

I have a multi spectral with around 25 bands in the near IR range i.e there are 25 different wavelengths that the CCD can capture. For each of these CCD filters the Quantum Efficiency curves differ remarkably. I need help understanding how QE for different wavelengths affects the brightness of the captured image for that wavelength. If it does, then I am interested in calculating the scaling factor with which I have to multiply each pixel values to get the intensity right.

The camera is monochrome and allows images to be captured only in the RAW16 format without any interpolation.

• – scottbb Jul 26 '18 at 17:49
• Quick answer since the question is bound to be closed. Pre-amp sensor response is the integral of the spectral power distribution cross product sensor spectral response, with respect to sensor irradiance. The QE governs the rate of photoelectric conversion via planck's equation. Ergo (an very oversimplified) light brightness x QE = Digital count. This only get messy when you are trying to make absolute, unit-bearing measurements. Keep everything neutral-referenced and unitless and it's pretty much that simple. – PhotoScientist Jul 27 '18 at 3:05

I have a multispectral [camera] with around 25 bands ... for each of these CCD filters the Quantum Efficiency curves differ remarkably. I need help understanding how QE for different wavelengths affects the brightness of the captured image for that wavelength.

I am interested in calculating the scaling factor with which I have to multiply each pixel values to get the intensity right.

With few exceptions, like the Foveon X3 sensor, all image sensors start out as a monochrome sensor. In the case of most sensors for consumer cameras a color filter array (CFA), usually a Bayer filter, is placed over the pixel sensors of an image sensor to capture color information.

In the case of a multispectral sensor with 25 bands, instead of a CFA, an array of 25 different filters are arranged in a 5x5 array. You can use the entire block of 25 sensels (cells) to represent a single low resolution pixel with a wide sprectral range or choose a few of them only - the same spectral range is only going to be repeated once in each 5x5 block.

If you only wanted a narrow range you will need to skip to the next block to get the sample for your next pixel. In other words, a 1000x1000 sensel monochrome image sensor with an multispectral filter array (MFA) only has 200x200 pixels each with 25 bands of the spectrum detectable by the sensor. You would probably map each band to a single visible colour, an intensity, or a color space; so you could view the infrared image.

The sensor itself has a QE, and the filters have an efficiency that may not be identical for each band. You would want to use a table of floating point values and simply multiply each sensel by its individual value, that compensates for variations between individual sensels and their associated filter; so you wind up with a flat(ish) response across the usable range. You would probably want 1000x1000x4 bytes = 4MB of memory.

It depends on what the underlying sensor used is, which will determine its bandwidth, it's safe to assume that it's wide enough for the MFA used but at the upper end the efficiency is likely reduced (you'll need to multiply those sensels by a larger value).

When you overlay the MFA on the sensor it ends up with this response after applying the adjustment (an 8 band MFA is shown here).

To calibrate the sensor you need a source of light with an appropriate spectrum, and preferably flat output intensity in the range of your MFA.

A calibrated Quartz Tungsten Halogen (QTH) source will provide a flat spectrum in the infrared range you need, it's spectrum looks like this:

That would be expensive to buy and possibly difficult to find somewhere to rent from. A heat lamp or infrared heater would work too, but you'll be lucky to find a spectrum chart for them.

You can go to the hardware store and buy a \$20 QTH Worklight, remove the safety glass, and end up with a spectrum like this:

Nowhere near as good, and much cheaper; so is sunlight:

Notice that the atmosphere blocks parts of the Sun's spectrum, but it's an inexpensive source of infrared light to use while you are experimenting to determine if you can get your camera running and decode the RAW16 output.

If you know what brand of camera you have you can probably obtain software that is compatible with it.

You can read up on the different processing algorithms or modify existing software like ImageCooker, or view this paper: "Processing RAW images in Python" to learn more about the subject.

Also you could write Plugins for existing software, like ImageJ, with something like the "Image Calibration and Analysis Toolbox", available from Jolyon Troscianko's webpage: "Multispectral Image Calibration and Analysis Toolbox or the Sensory Ecology and Evolution website.

Also the Photoconductor Array Camera and Spectrometer (PACS) instrument of the Herschel Space Observatory used a 25 band array, so your camera calibration problem and question is not unique.

Once you are able to read a RAW image frame and save it to a file you would use a table of floating point values to multiply each sensel by its individual value, as explained above.