Y
=
0
.
2
9
9
R
+
0
.
5
8
7
G
+
0
.
1
1
4
B
U
=
−
0
.
1
4
7
R
−
0
.
2
8
9
G
+
0
.
4
3
6
B
V
=
0
.
6
1
5
R
−
0
.
5
1
5
G
−
0
.
1
0
0
B
R
=
Y
+
1
.
1
4
V
G
=
Y
−
0
.
3
9
U
−
0
.
5
8
V
B
=
Y
+
2
.
0
3
U
Y
=
0
.
2
9
9
R
+
0
.
5
8
7
G
+
0
.
1
1
4
B
C
b
=
0
.
5
6
4
(
B
−
Y
)
C
r
=
0
.
7
1
3
(
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;