|
|
Am 5/23/2016 um 18:57 schrieb Cousin Ricky:
> Ive <ive### [at] lilysoftorg> wrote:
>> So you are close with B and perfect with C in whatever way you've
>> determined it and thanks for spotting the errors.
>
> Various sources on the Web, but I haven't got behind any pay walls.
>
> Your old C is very close to the new one, and your new B is close to what I found
> for B. Could this have anything to do with the refinement of the Boltzmann
> constant, or would it be strictly methods of calculating the CCT? (I'm nowhere
> near where I want to be in color science.)
>
>
>
>
I'm pretty sure it is the way you are calculating it. You can do it in a
lazy way as I usually did while I was working in the field and accuracy
really didn't matter (which should not be an excuse for making plain
mistakes) or you can do it in the way of Robertson who calculates the
closest distance for a given point in the CIE XYZ color space to the
blackbody radiation curve. But it requires inverse interpolation of the
Blackbody temperatures and forward interpolation on a data table and
other nasty algebra stuff. And nobody likes algebra, right? ;)
"Color Science: Concepts and Methods, Quantitative Data and Formulae"
is not behind a paywall, it is one of this old fashioned things where
pages are still made of paper. And it is "The Bible" of color science.
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0471399183.html
Anyway I did add a POV-Ray SDL implementation of Robertson's method
within CIE.inc. The new version can, as usual, be downloaded from my
spectral render web page - or directly via
www.lilysoft.org/CGI/SR/LS_SpectralRender.zip
Following the tradition of CIE.inc the new macro is called XYZ2K(XYZ),
it takes a CIE XYZ coordinate as parameter and gives the color
temperature in Kelvin back.
Here is the way it is called to calculate the B and C illuminants:
//*******************************************************************
#include "CIE.inc"
#declare XYZ_B = xyY2xyz(<Illuminant_B[0], Illuminant_B[1], 1>);
#declare XYZ_C = xyY2xyz(<Illuminant_C[0], Illuminant_C[1], 1>);
#declare KB = XYZ2K(XYZ_B);
#declare KC = XYZ2K(XYZ_C);
#warning concat("Correlated color temperature for illuminant B:
",str(KB,4,1),"K")
#warning concat("Correlated color temperature for illuminant C:
",str(KC,4,1),"K")
//*******************************************************************
-Ive
Post a reply to this message
|
|