Exemplo n.º 1
0
static Lab toLab(CIE *c) {
	CIE n = (CIE) {Labf(c->X / white.X), Labf(c->Y / white.Y), Labf(c->Z / white.Z)};
	Lab l;

	// http://en.wikipedia.org/wiki/L*a*b*#RGB_and_CMYK_conversions
	l.L = 116.0 * n.Y - 16;
	l.a = 500.0 * (n.X - n.Y);
	l.b = 200.0 * (n.Y - n.Z);

	return l;
}
Exemplo n.º 2
0
BOOL MyColorSpace::Xyz2Lab(FLOAT x, FLOAT y, FLOAT z, FLOAT& l, FLOAT& a, FLOAT& b)
//CIE XYZitu(D65) to CIE Lab, 根据David Bourgin, Color space FAQ
{
	FLOAT y_yn = y / Yn;
	if (y_yn>0.008856)
	{
		l = (FLOAT) ( 116. * pow(y_yn, 1.f/3.f) );
	}else
	{
		l = (FLOAT) ( 903.3 * y_yn );
	}
    a = 500 * ( Labf(x/Xn, y_yn) - Labf(y/Yn, y_yn) );
    b = 200 * ( Labf(y/Yn, y_yn) - Labf(z/Zn, y_yn) );

	return TRUE;	
}