According to CIE color space and relation of RGB with XYZ, we can express

$$ R = \int_0^\infty I(\lambda)r(\lambda)d\lambda $$$$ G = \int_0^\infty I(\lambda)g(\lambda)d\lambda $$$$ B = \int_0^\infty I(\lambda)b(\lambda)d\lambda $$

where $r(\lambda),g(\lambda),$ and $b(\lambda)$ are the corresponding color matching functions and $I(\lambda)$ is spectral intensity function.

Now, I am trying to calculate RGB values of hyperspectral image captured by hyperspectral camera. And from the hyperspectral image, I can get spectral intensity values between 0 - 65535. But I am not sure about unit or range of the intensity function $I(\lambda)$ above. Is it values between 0 - 1?


You are probably working not with CIE RGB, but CIE XYZ, so these are properly denoted the XYZ tristimulus values, not RGB. Their absolute values do not matter if you want to determine the chromatacities ("color", as we commonly understand it), because you take the ratio of the components to their sum.

Once you have the XYZ tristimulus values or xy chromaticities, you can convert to something like sRGB to yield usable RGB values. You might need to scale the result to 0-255.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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