Reference articles on history, science, culture and more
Encyclopedia

SYCC

Color space

sYCC is a standard numerical encoding of colors, similar to the CIE YCbCr encoding, It uses three coordinates: a luma value Y, that is roughly proportional to perceived brightness of the color, and two chroma values C_{b} and C_{r}, which are roughly the "blueness" and "redness" of the hue. Each coordinate is represented by an integer with some number N of bits, which is interpreted as either unsigned (for Y) or signed (for C_{b} and C_{r}).

The space is defined by Annex F of the International Electrotechnical Commission (IEC) standard 61966-2-1 Amendment 1 (2003), as a linear transformation of the non-linear sRGB color space defined by the same document.

The official conversion from sYCC to sRGB will often result in negative R, G, or B values or values greater than 1 but unlike in normal YCbCr those values are not clamped. The same for when XYZ is converted into sYCC values, at the sRGB stage negative and greater than 1 values are preserved. The sRGB transfer function is thus modified to accept negative RGB values.

01sYCC definition

The three unsigned integers Y,C_{b},C_{r} of an sYCC encoded color represent fractional coordinates Y',C_{b}',C_{r}' according to the formulas

Y'=Y/M
C_{b}'=(C_{b}-Z)/M
C'_{r}=(C_{b}-Z)/M

where the scale factor M=2^{N}-1 is the maximum unsigned N-bit integer, and the offset Z is 2^{N-1} (as in the usual two's complement representation of signed integers). Conversely, the encoded integer values are given by

Y={\mbox{round}}(MY')
C_{b}={\mbox{round}}(Z+MC_{b}')
C_{r}={\mbox{round}}(Z+MC_{r}')

with the resulting values clipped to the range 0..M.

In particular, for N=8 (which is the normal bit size), one gets M=255 and Z=128. Thus the fractional luma Y' ranges from 0 to 1, while the fractional chroma coordinates range from -128/255\approx -0.50196... to +127/255\approx +0.498039....

The standard specifies that these fractional values Y',C_{b}',C_{r}' are related to the non-linear fractional sRGB coordinates R',G',B' by a linear transformation, described by the matrix product

{\begin{bmatrix}Y'\\C_{b}'\\C_{r}'\end{bmatrix}}={\begin{bmatrix}+0.2990&+0.5870&+0.1140\\-0.1687&-0.3313&+0.5000\\+0.5000&-0.4187&-0.0813\end{bmatrix}}{\begin{bmatrix}R'\\G'\\B'\end{bmatrix}}

This correspondence is the same as the RGB to YCC mapping specified by the old TV standard ITU-R BT.601-5, note that the coefficients of Y' here are defined still with 3 decimal places, because 4 decimal places would change legacy encoding of images (first row: Kr = 0.299 and Kg = 0.587).

The non-linear fractional sRGB coordinates R',G',B' can be computed from the fractional sYCC coordinates Y',C_{b}',C_{r}' by inverting the above matrix. The standard gives the approximation

{\begin{bmatrix}R'\\G'\\B'\end{bmatrix}}={\begin{bmatrix}+1.0000&0.0000&+1.4020\\+1.0000&-0.3441&-0.7141\\+1.0000&+1.7720&0.0000\end{bmatrix}}{\begin{bmatrix}Y'\\C_{b}'\\C_{r}'\end{bmatrix}}

which is expected to be accurate enough for N=8 bits per component. For bit sizes greater than 8, the standard recommends using a more accurate inverse. It states that the following matrix with 6 decimal digits is accurate enough for N=16:

{\begin{bmatrix}R'\\G'\\B'\end{bmatrix}}={\begin{bmatrix}+1.000000&+0.000037&+1.401988\\+1.000000&-0.344113&-0.714104\\+1.000000&+1.771978&+0.000135\end{bmatrix}}{\begin{bmatrix}Y'\\C_{b}'\\C_{r}'\end{bmatrix}}

The same standard specifies the relation between the non-linear fractional coordinates R',G',B' and the CIE 1931 XYZ coordinates. The connection entails the transfer function ("gamma correction") that maps R',G',B' to the linear R, G, B coordinates, and then a 3D linear transformation that relates these to the CIE X,Y,Z.

Since the linear transformation from sRGB to sYCC is defined in terms of non-linear (gamma-encoded) values (R',G',B'), rather than the linear ones (R,G,B), the Y' component of sYCC is not the CIE Y coordinate, not even a function of it alone. That is, two colors with the same CIE Y value may have different sYCC Y' values, and vice-versa.

Particular values

The integer encoded sYCC triplet (0,0,0) represents the color black whereas (255,0,0) is white (more precisely, the CIE illuminant D65). More generally, triplets (Y,0,0), for Y in 0..255, represent shades of gray.

Note that the 8-bit integer sYCC triplet (Y,Cb,Cr)=(0,255,255) has fractional coordinates (Y',Cb',Cr')\approx (0.0,0.5,0.5), which, according to these matrices, has fractional non-linear sRGB coordinate G'\approx -0.5\times (0.3341+0.7141)\approx -0.528, and therefore has to be converted to XYZ to be realizable or perceivable. Similarly, the sYCC triplet (0,0,0) has R'\approx -0.701 and B'\approx -0.886.

Watch videos about SYCCExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article SYCC, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.