[argyllcms] Spectrum multiplication

  • From: Ben Goren <ben@xxxxxxxxxxxxxxxx>
  • To: "argyllcms@xxxxxxxxxxxxx" <argyllcms@xxxxxxxxxxxxx>
  • Date: Sun, 24 May 2015 13:54:55 -0700

Can anybody point me in the proper way to calculate the resulting reflected
spectrum, given an Argyll .sp illuminant file and .ti3 spectral reflectance
values?

I'm looking to do the same basic thing as spec2cie, but for the output to be
not XYZ values but the spectra from which those values are calculated.

I've looked in the source for spec2cie and xspect.c...and I could probably
eventually figure it out, but C isn't my language and it's an unfamiliar
project.

I would naively think that you should be able to just multiply the one by the
other, especially if you don't have to do any interpolation or
normalization...but some experimentation suggests that that's basically the
idea but not quite. Specifically, if I create two .sp files, one for illuminant
E and another based on it but with all emissions from 600nm up zeroed; and two
.ti3 files, one 100% reflective and another again with no reflection from 600nm
on...the results are close but not the same:

The first one gives L*=92.1523 a*=-41.4603 b*=-26.7996 X=59.0942 Y=81.0463
Z=100.022

The second provides L*=100.000 a*=-44.4687 b*=-28.7442 X=72.9141 Y=100.000
Z=123.413

It's mostly (but not entirely) just a difference in luminosity, but enough to
make me think that the two aren't reversible and therefore it can't be a simple
mathematical product.

Advice much appreciated!

Thanks,

b&

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Other related posts: