YUV和RGB调节色彩公式

1.YUV调节色彩公式(必须是量化后的YUV(16-235)),非量化后的YUV转换有问题。

转换公式为:

原始YUV(Y,U,V),转换后YUV(Y',U',V'),亮度 :g_Bright (0-1),饱和度:g_Saturation(0-1),对比度:g_Contrast (0-1)

Y'  = (g_Contrast * 2.0 * (Y - 0.5) + 0.5) * g_Saturation * 2.0;
U' = g_Bright * 2.0 * (U - 0.5) + 0.5;
V' = g_Bright * 2.0 * (V - 0.5) + 0.5;

2.GRB 调节色彩公式(以下为shader转换代码):亮度 :g_Bright (0-1),饱和度:g_Saturation(0-1),对比度:g_Contrast (0-1)

参考文章:Unity Shader-后处理:简单的颜色调整(亮度,饱和度,对比度)

float4 rgba=float4(R,G,B,A);

    float4 finalColor = rgba * (g_Bright*2.0f);
    //saturation饱和度:首先根据公式计算同等亮度情况下饱和度最低的值:
    float gray = 0.2125 * rgba.r + 0.7154 * rgba.g + 0.0721 * rgba.b;
    float4 grayColor = float4(gray, gray, gray,1.0f);
    //根据Saturation在饱和度最低的图像和原图之间差值
    finalColor = lerp(grayColor, finalColor, g_Saturation*2.0f);
    //contrast对比度:首先计算对比度最低的值
    float4 avgColor = float4(0.5, 0.5, 0.5,1.0f);
    //根据Contrast在对比度最低的图像和原图之间差值
    rgba = lerp(avgColor, finalColor, g_Contrast*2.0f);

return rgba;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值