最近在搞颜色空间,想找找RGB到LAB的颜色转换具体算法(RGB---XYZ----Lab),查了很多资料,最后终于写出了具体算法,下面给出PS中具体转换算法和CIE具体转换算法,二者之间的转换还是有一些差异的。
1、PS中具体转换算法
void g_MyBGR2LabPS(const double B,const double G,const double R,LAB &lab)
{
//PS中RGB到LAB转换算法
//photosho默认的转换条件为:srgb and gamma2.2
double X,Y,Z;
double Fx=0,Fy=0,Fz=0;
double b=B/255.00;
double g=G/255.00;
double r=R/255.00;
// gamma 2.2
if ( r > 0.04045 )
r = pow(( r + 0.055 ) / 1.055, 2.4);
else
r = r / 12.92;
if ( g > 0.04045 )
g = pow(( g + 0.055 ) / 1.055, 2.4);
else
g = g / 12.92;
if ( b > 0.04045 )
b = pow(( b + 0.055 ) / 1.055, 2.4);
else
b = b / 12.92;
// sRGB
X = r * 0.436052025 + g * 0.385081593 + b * 0.143087414;
Y = r * 0.222491598 + g * 0.716886060 + b * 0.060621486;
Z = r * 0.013929122 + g * 0.097097002 + b * 0.714185