YCbCr
|
YCbCr is a family of colour spaces used in video systems. Y is the luma component and Cb and Cr the chroma components. It is often confused with the YUV colour space, and typically the terms YCbCr and YUV are used interchangeably, leading to confusion. In fact, when referring to signals in digital form, the term "YUV" probably really means "YCbCr" more often than not. YCbCr is sometimes abbreviated to YCC.
YCbCr signals (prior to scaling and offsets to place the signals into digital form) are created from the corresponding gamma-adjusted RGB (red, green and blue) source using two defined constants Kb and Kr as follows:
Y' = Kr * R' + (1 - Kr - Kb) * G' + Kb * B' Cb = 0.5 * (B' - Y') / (1 - Kb) Cr = 0.5 * (R' - Y') / (1 - Kr)
where Kb and Kr are ordinarily derived from the definition of the corresponding RGB space. Here, R', G' and B' are assumed to be nonlinear (gamma-adjusted) and to nominally range from 0 to 1, with 0 representing the minimum intensity (e.g., for display of the colour black) and 1 the maximum (e.g., for display of the colour white). The prime symbols denote the use of gamma adjustment. The resulting luma (Y) value will then have a nominal range from 0 to 1, and the chroma colour-difference (Cb and Cr) values will have a nominal range from -0.5 to +0.5. The reverse conversion process can be readily derived by inverting the above equations.
When representing the signals in digital form, the results are scaled and rounded, and offsets are typically added. For example, the scaling and offset applied to the Y' component ordinarily results in the value of 16 for black and the value of 235 for white when using an 8-bit representation. The scaling that results in the use of a smaller range of digital values than what might appear to be desirable for representation of the nominal range of the input data allows for some "overshoot" and "undershoot" during processing without necessitating undesirable clipping. The range "head-room" and "toe-room" has also been proposed to be used for extension of the nominal colour gamut.
The form of YCbCr that was defined for standard-definition television use in the ITU-R BT.601 (formerly CCIR 601) standard for use with digital component video is derived from the corresponding RGB space as follows:
Kb = 0.114 Kr = 0.299
From the above constants and formulas, the following can be derived for ITU-T BT.601:
Y' = + 0.299 * R' + 0.587 * G' + 0.114 * B' Cb = - 0.168736 * R' - 0.331264 * G' + 0.5 * B' Cr = + 0.5 * R' - 0.418688 * G' - 0.081312 * B'
This form of YCbCr is used primarily for older standard-definition television systems, as it uses an RGB model that fits the phosphor emission characteristics of older CRTs.
A different form of YCbCr is specified in the ITU-R BT.709 standard, primarily for HDTV use. The newer form is also used in some computer-display oriented applications. In this case, the values of Kb and Kr differ, but the formulas for using them are the same. For ITU-R BT.709, the constants are:
Kb = 0.0722 Kr = 0.2126
This form of YCbCr is based on an RGB model that more closely fits the phosphor emission characteristics of newer CRTs and other modern display equipment.
Note that the definitions of the R', G', and B' colour primary signals also differ between BT.601 and BT.709. So proper conversion of YCbCr from one form to the other is not just a matter of inverting one matrix and applying the other. In fact, when YCbCr is used correctly, the values of Kb and Kr are derived from the precise specification of the RGB colour primary signals, so that the luma (Y') signal corresponds as closely as possible to a gamma-adjusted measurement of luminance (typically based on the CIE 1931 measurements of the response of the human visual system to color stimuli).
Although the above two forms of YCbCr are the dominant ones, some other variants exist. For example, the SMPTE 240M standard specifies YCbCr using Kb = 0.087 and Kr = 0.212.
When used for analogue component video, YCbCr is often called YPbPr, although the term YCbCr is often used for both systems.
Since the equations defining YCbCr are formed in a way that rotates the entire nominal RGB color cube and scales it to fit within a (larger) YCbCr color cube, there are some points within the YCbCr color cube that cannot be represented in the corresponding RGB domain (at least not within the nominal RGB range). This causes some difficulty in determining how to correctly interpret and display some YCbCr signals.