Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Hyperspectral to RGB

179 views
Skip to first unread message

Hector

unread,
Aug 23, 2010, 8:28:05 PM8/23/10
to
Hello

Does anyone know how to convert a hyperspectral image into RGB using color spectral function of a digital camera.

Thank you for your help

Hector

ImageAnalyst

unread,
Aug 23, 2010, 8:42:47 PM8/23/10
to
Yes, but there are a variety of ways to combine 2 or more spectral
bands into a pseudocolor RGB image depending on what kind of effect
you are desiring. For example, you can have natural color where you
just take the 3 visible bands, or you can select some of the other
bands (IR, UV, etc.) and assign them to one of the visible light color
bands (the red, the green, or the blue). Sometimes you'll see
vegetation in satellite photos appear red, for example.

Hector

unread,
Aug 24, 2010, 1:31:11 AM8/24/10
to
Hi

Thank you for your answer. What I want to do is to apply a camera color sensitivity functions on multispectral images to retrieve the color images that would be captured by a device but I don't know how I can do.

Regards,

Hector

ImageAnalyst <imagea...@mailinator.com> wrote in message <9dcf3945-a082-4f94...@j2g2000vbo.googlegroups.com>...

ImageAnalyst

unread,
Aug 24, 2010, 8:02:42 AM8/24/10
to
So you have a collection of multispectral images, and you want to
simulate what those images would look like if they were captured on a
particular sensor with certain spectral responsivities?

Basically you multiple and integrate. See figure 21 on this page:
http://www.konicaminolta.com/instruments/knowledge/color/part2/06.html

You need to multiply the spectrum of your hyperspectral band times the
spectral responsivity of your sensor, then integrate to get the "gray
level" or "digitial number" for that color channel. Assume the
spectrum of your input band to be flat if you have no idea what it
is. So you'd have

sum over all wavelengths in your source image and sensor spectrum:
redChannelIntensity(wavelength) = sourceImageSpectrum(wavelength) .*
sensorsRedResponsivity(wavelength)
greenChannelIntensity(wavelength) = sourceImageSpectrum(wavelength) .*
sensorsGreenResponsivity(wavelength)
blueChannelIntensity(wavelength) = sourceImageSpectrum(wavelength) .*
sensorsBlueResponsivity(wavelength)

That will tell you what the RGB value for that one particular input
hyperspectral image would be. Note: You may get zero in some cases,
for example, normal visible light CCD sensors don't give a signal for
many wavelengths ranges (e.g. thermal IR, UV, gamma and x rays, etc.)
Then you can do it for another hyperspectral(s) band if you want.
Then, if you used more than one input image, you can add together all
the output RGB images in some kind of weighted fashion, depending on
what kind of effect you are trying to achieve (like I said in my first
message).

In the case where there is no signal (e.g. a thermal image), you can
just pretend. For example, you can assume a thermal image is the same
as what you'd get from a grayscale visible light image, as is almost
always done. Or you may take spectral band 1 of a satellite (e.g.
SPOT) and assign it to the red band, assign spectral band 3 to the
green band, and assign spectral band 7 to the blue band, and then
display it as a regular RGB image.

Well, that's enough tutorial for now. Hope that helped explain it
somewhat more.
-ImageAnalyst

Hector

unread,
Sep 9, 2010, 12:54:04 PM9/9/10
to
Hi ImageAnalyst,

Sorry for my late answer. I had difficulties to access internet.

Thank you very much for your detailed answer. I appreciate it. It was really a good tutorial.

Do you know where can I find CMFs of cameras?

ImageAnalyst <imagea...@mailinator.com> wrote in message <2ea9c7fd-bb36-4e4c...@a36g2000yqc.googlegroups.com>...

Hector

unread,
Sep 9, 2010, 1:00:21 PM9/9/10
to
Hi imageAnalyst,

I'm sorry for my late reply. I had difficulties in accessing internet.

Thank you very much for your didactic tutorial. I really appreciate it.

Do you know where I can find CMFs of still cameras?

Regards,

Hector

ImageAnalyst

unread,
Sep 9, 2010, 5:05:17 PM9/9/10
to
No I don't. It might be difficult getting this info from some
manufacturers. In that case, you can just measure it yourself, as
long as you can present sources of known wavelength to your camera.
For example, a tunable laser system by opotek http://opotek.com/.

Hector

unread,
Sep 13, 2010, 4:07:21 PM9/13/10
to
Hi again,

I tried what you explained about converting a multispectral image to RGB by using CIE-31 CMF. however, the image is too dark. What is wrong then?

Hector

ImageAnalyst

unread,
Sep 13, 2010, 4:56:14 PM9/13/10
to
Just multiply it by a scaling factor until you get what you want.

;-)

0 new messages