SYCC
Color space
sYCC is a standard numerical encoding of colors, similar to the CIE YCbCr encoding, It uses three coordinates: a luma value , that is roughly proportional to perceived brightness of the color, and two chroma values
and
, which are roughly the "blueness" and "redness" of the hue. Each coordinate is represented by an integer with some number
of bits, which is interpreted as either unsigned (for
) or signed (for
and
).
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 of an sYCC encoded color represent fractional coordinates
according to the formulas
where the scale factor is the maximum unsigned
-bit integer, and the offset
is
(as in the usual two's complement representation of signed integers). Conversely, the encoded integer values are given by
with the resulting values clipped to the range .
In particular, for (which is the normal bit size), one gets
and
. Thus the fractional luma
ranges from 0 to 1, while the fractional chroma coordinates range from
to
.
The standard specifies that these fractional values are related to the non-linear fractional sRGB coordinates
by a linear transformation, described by the matrix product
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 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 can be computed from the fractional sYCC coordinates
by inverting the above matrix. The standard gives the approximation
which is expected to be accurate enough for 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
:
The same standard specifies the relation between the non-linear fractional coordinates and the CIE 1931 XYZ coordinates. The connection entails the transfer function ("gamma correction") that maps
to the linear R, G, B coordinates, and then a 3D linear transformation that relates these to the CIE
.
Since the linear transformation from sRGB to sYCC is defined in terms of non-linear (gamma-encoded) values (), rather than the linear ones (
), the
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
values, and vice-versa.
Particular values
The integer encoded sYCC triplet represents the color black whereas
is white (more precisely, the CIE illuminant D65). More generally, triplets
, for
in 0..255, represent shades of gray.
Note that the 8-bit integer sYCC triplet has fractional coordinates
, which, according to these matrices, has fractional non-linear sRGB coordinate
, and therefore has to be converted to XYZ to be realizable or perceivable. Similarly, the sYCC triplet
has
and
.
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.