Considering this image, where I have a spectral decomposition of a light bulb.

enter image description here

Due to the non point shaped light source, the spectral decomposition using a diffraction grating in front of my camera leads to overlapping spectral components. As a human though I can still perceive the structure of the main four or five spectral components because I know they should have the same shape as the lamp. Knowing the structure of the lamp, is it possible to isolate each of those spectral components with their correct amplitude, and what algorithm would be used in that case?

  • 1
    $\begingroup$ I would almost want to say you could use deconvolution on it, but I'd have to try it before I'd make an answer of that suggestion. $\endgroup$ – JRE Jun 24 '15 at 9:35
  • $\begingroup$ Can it be assumed that all the lamp pixels have the same spectrum? $\endgroup$ – Olli Niemitalo Jun 24 '15 at 12:46
  • $\begingroup$ Yes this can be assumed I guess, but at a different amplitude probably. Common solution would be to put a slit between the lamp and the camera or to analyze the reflection of the light on a narrow needle to get a sharp spectrum. In my case I want to analyze many lamps at the same time in an automated way so that is why I am interested in how to use deconvolution in such a case. $\endgroup$ – Mehdi Jun 24 '15 at 13:52

I'd calculate the horizontal point spread function for each color channel separately and use the spectral sensitivity ratios of the channels for frequency calibration; the resulting sensitivity-weighted spectra should obey the same ratios.

Deconvolution can be implemented as frequency domain division of each diffracted row by the corresponding direct transmission row. The division results can be averaged over all rows, excluding from statistics any noisy bins that came from division by a value too close to zero. Hopefully the rows differ enough to cover all frequency bins. Combining the color channels at the end further reduces noise.

For this to work properly, the image should be corrected for any distortion and rotated so that the point spread function due to diffraction is fully horizonal. Chromatic aberrations will be hard to fix.

A completely different approach would be kind of a matching pursuit, which should work quite fast thanks to the spiky spectra of fluorescent phosphors. There you'd try to pattern-recognize what position in the diffracted image is most similar to an intensity-scaled copy of the direct transmission image (using a color appropriate to that position, according to a calibration). Then you'd subtract the match from that position in the diffracted image and simultaneously accumulate an estimate of the spectrum. You'd repeat the process until you'd get good enough an estimate, or would no longer be able to find a good match. It should be possible to do image geometry correction in the pattern recognition part of this approach, which would also be able to avoid problems due to chromatic aberration.

| improve this answer | |
  • $\begingroup$ To simplify let's say I have a black and white image, then I take one row, isolate the direct transmission part and the spectrum part, do a fourier transform and divide the spectrum's transform by the direct transmission's transform. Transforming back the divided spectrum's transform to time spacial domain would give me a non overlapping spectrum? (supposing there is no noise for now) $\endgroup$ – Mehdi Jun 25 '15 at 9:58
  • $\begingroup$ That is correct. But if the value of some bin you are dividing by is zero, you get into trouble. So you ignore the result at that bin and hope to get a better one from another row. $\endgroup$ – Olli Niemitalo Jun 25 '15 at 12:44

Your Answer

