龙芯爱好者的日常!
返回

YUV 色彩空间的多种转换矩阵

2020-04-07 131 0

Y = Kry· R + Kgy· G + Kby· B(R,G,B代表RGB色彩空间的红色,绿色,蓝色)

Cb= B – Y Cb是差值)

Cr= R – YCr是差值)

Kry+ Kgy+ Kby= 1K 是比值或称权重, BT.601, BT.709,BT.2020中的权重是不同的。)

 

来自 <https://www.cnblogs.com/huxiaopeng/p/5653257.html>

 

1.模拟YUV->模拟RGB

1) BT601(标清国际定义)

1

2

3

4

5

6

7

8

//*********************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(高清)

1

2

3

4

5

6

7

8

//*********************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

1

2

3

4

5

6

7

8

//*********************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

1

2

3

4

5

6

7

8

//*********************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***********************************//

 

来自 <https://www.cnblogs.com/zhengjianhong/p/7872459.html>

模拟RGBYUV的推导公式 : 

1

2

3

4

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);

数字RGBYUV的推导公式:

1

2

3

4

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;

BT601 Wr = 0.299 Wg = 0.587 Wb = 0.114

BT709 Wr  = 0.2126 Wg = 0.7152 Wb = 0.0722

BT2020 Wr = 0.2627 Wg = 0.678 Wb = 0.0593

 

来自 <https://www.cnblogs.com/zhengjianhong/p/7872459.html>

 

 

 

BT.601

BT.709



顶部