View Full Version : YUV to RGB Conversion
Valentin Nikin
26th February 2021, 08:34
Hello!
https://en.wikipedia.org/wiki/YUV#Conversion_to/from_RGB
Can someone explain to me where from Umax and Vmax coefficients? In BT.601 and BT.709 standards nothing about this values.
Sharc
26th February 2021, 09:06
You won't find Umax and Vmax in the current ITU-R BT.601-7 document which refers to digital TV. U,V has its roots in analog color TV. Digital systems define Cb,Cr rather than U,V.
You may find these links helpful:
https://software.intel.com/content/www/us/en/develop/documentation/ipp-dev-reference/top/volume-2-image-processing/image-color-conversion/color-models.html?language=en
The basic equations are
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
With R'G'B' in the range of [0,1] the maximum value of V' becomes 0.615 (for R'G'B'=[1,0,0]), and the maximum value of U' becomes 0.436 (for R'G'B'=[0,0,1]).
For the various conversion matrices see here:
https://web.archive.org/web/20120403123714/http://www.equasys.de/colorconversion.html
For analog TV the "YUV - RGB Color Format Conversion" matrix applies.
In the digital realm there is no U,V, but unfortunately it is often used in exchange of Cb, Cr which is not correct.
Balling
27th August 2021, 19:36
Umax and Vmax are also present in BT.601/BT.709 standards. Both of them are set to 1/2 though. Also Umax and Vmax of old analog are defined in BT.470. There was an error made there though. 0.493 is incorrect as given there. It was too late to correct it though.
Sharc
28th August 2021, 09:04
Umax and Vmax are also present in BT.609/BT.709 standards. Both of them are set to 1/2 though. Also Umax and Vmax of old analog are defined in BT.470. There was an error made there though. 0.493 is incorrect as given there. It was too late to correct it though.
What should it be then: 0.492 or 0.5?
Balling
28th August 2021, 15:40
What should it be then: 0.492 or 0.5?
0.4926. In practice all hardware decoders used that number in a form of 1/2.03, so... that it is not Umax or Vmax and has nothing to do with 1/2 Umax=Vmax in digital standards. You confused that in previous post.
You can read it in SMPTE 170M but I will quote for you:
(It should be noted that there is an apparent error in the 1953 calculations of these reduction factors. Although the
calculations were performed to a high degree of precision, a luminance matrix coefficient of 0.115 was used for blue
instead of the correct 0.114. This resulted in values of 0.493 and 0.877 for B-Y and R-Y, respectively. These were
normally approximated to 1/2.03 and 1/1.14, respectively. The error was not significant in the equations published to an
accuracy of two significant figures, but it is significant for the higher precision equations used in this standard. The values
quoted below and used in this standard are derived from the correct luminance matrix.) (Lower case is used to distinguish
the reduced values:
b-y = 0.492111...(B-Y); (4)
r-y = 0.877283...(R-Y).)
Sharc
28th August 2021, 16:10
Thank you for clarifying.
Balling
28th August 2021, 16:22
Thank you for clarifying.
Just again. 0.5 and 0.493 are not the same values. at all. Umax and Vmax in BT.470 were 0.436 and 0.615 respectivly while in digital realm both became 0.5. Please note that NTSC further applied 33 degree rotation matrix and swapped U' and V' to get Y'IQ. So U' is Q and V' becomes I. Okay?
Sharc
28th August 2021, 23:53
I knew the 0.436 and 0.615 of BT.470 but I wasn't aware that both became 0.5 in the digital realm. Thanks.
kura
14th January 2022, 09:04
Hello.
I am not good at English, so I am using automatic translation. I apologize if there are any incorrect expressions.
In conclusion, Umax and Umin can be derived from the following equations.
Umax = (1-Wb)*SQRT(((Wg/3+Wb-2*Wr*Wb)*((1-Wr+Wb)/3+Wb))/(Wg*(Wg+2*Wb*Wr)))
Vmax = (1-Wr)*SQRT(((Wg/3+Wb-2*Wr*Wb)*((1-Wr+Wb)/3+Wb))/(Wg*(Wg+2*Wb*Wr)))
The reason for this comes from the inequality explained here on p. 107.
https://drive.uqu.edu.sa/_/mskhayat/files/MySubjects/20178FS%20Multimedia%20Systems/Fundamentals_of_multimedia_2e.pdf
This means that Y'±√(U^2+V^2) must be exactly in the range of -1/3 to 4/3. It is important to note that there is symmetry in the Y'UV space, so you only need to examine Y'+√(U^2+V^2) ≤ 4/3.
Let
U = Cu*(B'-Y'),
V = Cv*(R'-Y').
The goal is to find the conditions under which the parallelepiped in Y'UV space, transferred by linear transformation of the RGB cube, fits exactly into the cone of Y'+√(U^2+V^2) = Y'+√(Cu^2*(B'-Y')^2+Cv^2*(R'-Y')^2) ≤ 4/3. You will soon see that you only need to test each vertex of the parallelepiped. For example, if vertex (R', G', B')=(1, 0, 0), then Y'=Wr, so the inequality is the following ellipse of Cu and Cv.
Wr^2*Cu^2+(1-Wr)^2*Cv^2≤(4/3-Wr)^2
By finding the equations of the ellipses for the 8 vertices and examining their common parts, you can find 2 such ellipses whose overlapping parts satisfy the inequalities of the remaining 6 ellipses. The RGB values corresponding to those 2 ellipses are (1, 1, 0) and (0, 1, 1).
Finally, the point where the boundaries of the 2 ellipses intersect gives Umax and Umin.
(1-Wb)^2*Cu^2+Wb^2*Cv^2 = (1/3+Wb)^2
Wr^2*Cu^2+(1-Wr)^2*Cv^2 = (1/3+Wr)^2
Umax = Cu/(1-Wb)
Vmax = Cv/(1-Wr)
I hope this helps you.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.