unity C# RGB值转Lab值

unity C# RGB值转Lab值


上网搜集资料

整理
输入RGB的值 返回 一个lab的集合

static float Gamma(float x)
{
    return x > 0.04045f ? Mathf.Pow((x + 0.055f) / 1.055f, 2.4f) : x / 12.92f;
}

public static float[] rgb2lab(float var_R, float var_G, float var_B)
{

    float[] arr = new float[3];
    float B = Gamma(var_B);
    float G = Gamma(var_G);
    float R = Gamma(var_R);
    float X = 0.412453f * R + 0.357580f * G + 0.180423f * B;
    float Y = 0.212671f * R + 0.715160f * G + 0.072169f * B;
    float Z = 0.019334f * R + 0.119193f * G + 0.950227f * B;

     X/= 0.95047f;
     Y/= 1.0f;
     Z/= 1.08883f;

    float FX = X > 0.008856f ? Mathf.Pow(X, 1.0f / 3.0f) : (7.787f * X + 0.137931f);
    float FY = Y > 0.008856f ? Mathf.Pow(Y, 1.0f / 3.0f) : (7.787f * Y + 0.137931f);
    float FZ = Z > 0.008856f ? Mathf.Pow(Z, 1.0f / 3.0f) : (7.787f * Z + 0.137931f);
       arr[0] = Y > 0.008856f ? (116.0f * FY - 16.0f) : (903.3f * Y); 
       arr[1] = 500f * (FX - FY);
       arr[2] = 200f * (FY - FZ);
    return arr;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值