RGB 和 YUV 值转换

YUV444, YUV420, YUV422, YUV411 相关图例,注每一个像素由 RGB 构成,也可转换为由 YUV 构成

1001270-20161007145612332-824758147

转换公式

Y=0.299R+0.587G+0.114B Y = 0.299R + 0.587G + 0.114B

U=0.147R0.289G+0.436B U = -0.147R - 0.289G + 0.436B

V=0.615R0.515G0.100B V = 0.615R - 0.515G - 0.100B

R=Y+1.14V R = Y + 1.14V

G=Y0.39U0.58V G = Y - 0.39U - 0.58V

B=Y+2.03U B = Y + 2.03U

Y=0.299R+0.587G+0.114B Y = 0.299R + 0.587G + 0.114B

Cb=0.564(BY) Cb = 0.564(B - Y)

Cr=0.713(RY) Cr = 0.713(R - Y)

各种转换

1.模拟YUV->模拟RGB

  1) BT601(标清国际定义)

//*********************BT601***********************************//
//  Y = 0.299 * R + 0.587 * G + 0.114 * B               //
// Pb =-0.169 * R - 0.331 * G + 0.500 * B                  //
// Pr = 0.500 * R - 0.439 * G - 0.081 * B                  //
//  R = Y + 1.402* Pr                                 //
//  G = Y - 0.344 * Pb  - 0.792* Pr                 //
//  B = Y + 1.772 * Pb                                 //
//*********************BT601***********************************//
  2)BT709(高清)
//*********************BT601***********************************//
//  Y = 0.213 * R + 0.715 * G + 0.072 * B               //
// Pb =-0.115 * R - 0.385 * G + 0.500 * B                  //
// Pr = 0.500 * R - 0.454 * G - 0.046 * B                  //
//  R = Y + 1.402* Cr                                 //
//  G = Y - 0.344 * Cb  - 0.792* Cr                 //
//  B = Y + 1.772 * Cb                                 //
//*********************BT601***********************************//
2 数字YUV->数字RGB

  1)BT601

//*********************BT601***********************************//
//  Y = 16  + 0.257 * R + 0.504 * g + 0.098 * b                //
// Cb = 128 - 0.148 * R - 0.291 * g + 0.439 * b                //
// Cr = 128 + 0.439 * R - 0.368 * g - 0.071 * b                //
//  R = 1.164 *(Y - 16) + 1.596 *(Cr - 128)                    //
//  G = 1.164 *(Y - 16) - 0.392 *(Cb - 128) - 0.812 *(Cr - 128)//
//  B = 1.164 *(Y - 16) + 2.016 *(Cb - 128)                    //
//*********************BT601***********************************//
  2)BT709

//*********************BT709***********************************//
//  Y = 16  + 0.183 * R + 0.614 * g + 0.062 * b                //
// Cb = 128 - 0.101 * R - 0.339 * g + 0.439 * b                //
// Cr = 128 + 0.439 * R - 0.399 * g - 0.040 * b                //
//  R = 1.164 *(Y - 16) + 1.792 *(Cr - 128)                    //
//  G = 1.164 *(Y - 16) - 0.213 *(Cb - 128) - 0.534 *(Cr - 128)//
//  B = 1.164 *(Y - 16) + 2.114 *(Cb - 128)                    //
//*********************BT709***********************************//
至于超清幅面的计算公式,大家可以按照下面的推导方式自己推导一下。

模拟RGB转YUV的推导公式 : 

Wr + Wg + Wb = 1; UMax = 0.5; VMax = 0.5
Y  = Wr * R + Wg * G + Wb * B;
Pb = Umax * (B - Y) / (1 - Wb);
Pr = Vmax * (R - Y) / (1 - Wr);
  

数字RGB转YUV的推导公式:

Wr + Wg + Wb = 1; Umax = Vmax = 0.5;
Y = 16 + 219 * (Wr * R  + Wg * G + Wb * B)   / 255;
Cb = 128 + 224 * (Umax * (B - Y) / (1 - Wb)) / 255;
Cr = 128 + 224 * (Vmax * (R - Y) / (1 - Wr)) / 255;

results matching ""

    No results matching ""