1. 程式人生 > >YUV和RGB調節色彩公式

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;