(L) [2013/11/20] [tby McAce] [Re: Working Color Spaces] Wayback!Thanks for the revised explanation and the plots! That's all clear now.
 >> ypoissant wrote:The conversion from a reduced number of bands to Spectrum is not defined. There are an infinite number of conversions possible. The linear combination of capturing filters weighted by those coefficients will get you a Spectrum if you know the form of the capture filters used but the probability that this Spectrum looks like the original one is nearly nil. Even less if you don't know the form of the capture filter and yet even less if the coefficients were the result of some color transformation.
The reduction of dimensionality necessarily involve loss of information as several wavelengths are weighted together into one coefficient and we lose each individual wavelength weights.
Oh I realize there's a loss of information and that you naturally can't represent arbitrary functions with 3 numbers only. What I meant was: IF we can only afford 3 numbers (due to storage or computational constraints), why not just go for the most straightforward representation, "Splitted Equispace RGB" in your terminology? And according to your experiments it IS a good one. What sets it apart from the others is that the 3 functions are orthogonal. (So are your "sampled" ones, but they don't cover the spectrum.)
(L) [2013/11/20] [tby ypoissant] [Re: Working Color Spaces] Wayback!>> McAce wrote:What I meant was: IF we can only afford 3 numbers (due to storage or computational constraints), why not just go for the most straightforward representation, "Splitted Equispace RGB" in your terminology? And according to your experiments it IS a good one. What sets it apart from the others is that the 3 functions are orthogonal. (So are your "sampled" ones, but they don't cover the spectrum.)
Ah OK.
Roy Hall’s book "Color and Illumination in Computer Graphics Systems" also reports that the splitted RGB gave Roy and Meyer good results. Not sure if it was equispace though. They also developped the A C1 C2 color space and also observed that a "sampled" conversion gave surprisingly good results.
The splitted equispace RGB is fine if you have the spectra of all your materials in hand and can control the conversion to RGB either as offline or inline process. But this is rarely the case and in my situation, I have to deal with color values that are either set through a color selection widget on the screen or through textures that were either photographed or painted in a computer application. In this situation, "splitted equispace RGB" means nothing at all since I don't know the filters that were used to produce the RGB at hand.
sRGB doesn't mean much either but it is at least a standard that is supposed to be conformed to by digital cameras and computer screens. So in absence of any specific color space information that accompanies a RGB color specification or a color texture file, the most educated guess I can make is to assume they are in sRGB color space knowing very well that this is probably not the case because most computer screens are not calibrated and most digital camera manufacturers process their data with proprietary tone curves. So at best, I have a real sRGB color space and at worst, I get totally wicked color space but usually get a warped sRGB color space.
That is the rationale behind my decision to select sRGB-g as my internal color space. The color space is only useful at the input and output of a renderer anyway because the renderer calculations are all done on color vectors that are color space agnostic. But assuming sRGB all over the renderer, it saves me from having to color space convert most of the colors and textures (apart from de-gamma them) and avoids me of color space converting the results for display on computer screens (apart from gamma correct them). Since color space conversion involves two vector-matrix multiply per pixel, skipping this conversion step before display is another advantage.