Take the 2-minute tour ×
Physics Stack Exchange is a question and answer site for active researchers, academics and students of physics. It's 100% free, no registration required.

I have readings of colors from a spectrophotometer that records across the human visible color spectrum 390nm to 790nm intervals. I'd like to convert this into any color space, could be CIE XYZ, HSL, CIE-Lab, etc. Any color temperature is okay.

share|improve this question
add comment

3 Answers

up vote 2 down vote accepted

The tristimulus values for CIEXYZ can be obtained by integrating the spectral curve with three distinct weight curves.

From XYZ there are documented formulas to convert to Lab, HSL, CSV, ...

http://www.zeiss.com/c12567bb00549f37/Contents-Frame/80bd2fe43b50aa3ec125782c00597389

http://en.wikipedia.org/wiki/CIE_1931_color_space

http://en.wikipedia.org/wiki/Lab_color_space#CIE_XYZ_to_CIE_L.2Aa.2Ab.2A_.28CIELAB.29_and_CIELAB_to_CIE_XYZ_conversions

share|improve this answer
add comment

If you use Matlab, with Spectral and XYZ Color Functions you can obtain RGB values using the function spectrumRGB.

share|improve this answer
add comment

Both Tobias' and Kris' answer are good, but depending on what you are trying to do, it's important to know that not all colors can be represented in all color spaces. For example, RGB covers only a small triangle of the CIE space (http://en.wikipedia.org/wiki/File:Cie_Chart_with_sRGB_gamut_by_spigget.png).

Furthermore, different monitors will give you different colors for the same RGB values, and the weight curves differ from person to person. This means that it's not straightforward at all to measure the spectrum of an object or solution and reproduce the color you see on a screen.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.