YCbCr, Y′CbCr, or Y Pb/Cb Pr/Cr, also written as YCBCR or Y′CBCR, is a family of color
spaces used as a part of the color image pipeline in video and digital photography systems.
Y′ is the luma component and CB and CR are the blue-difference and red-difference chroma
components.
Y′ is distinguished from Y, which is luminance, meaning that light intensity is nonlinearly
encoded based on gamma corrected RGB primaries.
Y′CbCr is not an absolute color space; rather, it is a way of encoding RGB information.
The actual color displayed depends on the actual RGB primaries used to display the signal.
Therefore a value expressed as Y′CbCr is predictable only if standard RGB primary chromaticities
are used.
Rationale Cathode ray tube displays are driven by red,
green, and blue voltage signals, but these RGB signals are not efficient as a representation
for storage and transmission, since they have a lot of redundancy.
YCbCr and Y′CbCr are a practical approximation to color processing and perceptual uniformity,
where the primary colors corresponding roughly to red, green and blue are processed into
perceptually meaningful information.
By doing this, subsequent image/video processing, transmission and storage can do operations
and introduce errors in perceptually meaningful ways.
Y′CbCr is used to separate out a luma signal that can be stored with high resolution or
transmitted at high bandwidth, and two chroma components that can be bandwidth-reduced,
subsampled, compressed, or otherwise treated separately for improved system efficiency.
One practical example would be decreasing the bandwidth or resolution allocated to "color"
compared to "black and white", since humans are more sensitive to the black-and-white
information.
YCbCr YCbCr is sometimes abbreviated to YCC.
Y′CbCr is often called YPbPr when used for analog component video, although the term
Y′CbCr is commonly used for both systems, with or without the prime.
Y′CbCr is often confused with the YUV color space, and typically the terms YCbCr and YUV
are used interchangeably, leading to some confusion; when referring to signals in video
or digital form, the term "YUV" mostly means "Y′CbCr".
Y′CbCr signals are called YPbPr, and are created from the corresponding gamma-adjusted
RGB source using two defined constants KB and KR as follows:
where KB and KR are ordinarily derived from the definition of the corresponding RGB space.
Here, the prime ′ symbols mean gamma correction is being used; thus R′, G′ and B′ nominally
range from 0 to 1, with 0 representing the minimum intensity and 1 the maximum.
The resulting luma value will then have a nominal range from 0 to 1, and the chroma
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 per specification results
in the value of 16 for black and the value of 235 for white when using an 8-bit representation.
The standard has 8-bit digitized versions of CB and CR scaled to a different range of
16 to 240.
Consequently, rescaling by the fraction/(240-16) = 219/224 is sometimes required when doing
color matrixing or processing in YCbCr space, resulting in quantization distortions when
the subsequent processing is not performed using higher bit depths.
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.
This "head-room" and "toe-room" can also be used for extension of the nominal color gamut,
as specified by xvYCC.
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 YCbCr color cube, there are some points within the
YCbCr color cube that cannot be represented in the corresponding RGB domain.
This causes some difficulty in determining how to correctly interpret and display some
YCbCr signals.
These out-of-range YCbCr values are used by xvYCC to encode colors outside the BT.709
gamut.
ITU-R BT.601 conversion The form of Y′CbCr that was defined for
standard-definition television use in the ITU-R BT.601 standard for use with digital
component video is derived from the corresponding RGB space as follows:
From the above constants and formulas, the following can be derived for ITU-R BT.601.
Analog YPbPr from analog R'G'B' is derived as follows:
Digital Y′CbCr is derived from analog R'G'B' as follows:
or simply componentwise
The resultant signals range from 16 to 235 for Y'; the values from 0 to 15 are called
footroom, while the values from 236 to 255 are called headroom.
Alternatively, digital Y′CbCr can derived from digital R'dG'dB'd according to the following
equations:
In the above formula, the scaling factors are multiplied by . This allows for the value
256 in the denominator, which can be calculated by a single bitshift.
If the R'dG'dB'd digital source includes footroom and headroom, the footroom offset 16 needs
to be subtracted first from each signal, and a scale factor of needs to be included in
the equations.
The inverse transform is:
The inverse transform without any roundings is:
This form of Y′CbCr is used primarily for older standard-definition television systems,
as it uses an RGB model that fits the phosphor emission characteristics of older CRTs.
ITU-R BT.709 conversion
A different form of Y′CbCr 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:
This form of Y′CbCr is based on an RGB model that more closely fits the phosphor emission
characteristics of newer CRTs and other modern display equipment.
The definitions of the R', G', and B' signals also differ between BT.709 and BT.601, and
differ within BT.601 depending on the type of TV system in use, and differ further in
other specifications.
In different designs there are differences in the definitions of the R, G, and B chromaticity
coordinates, the reference white point, the supported gamut range, the exact gamma pre-compensation
functions for deriving R', G' and B' from R, G, and B, and in the scaling and offsets
to be applied during conversion from R'G'B' to Y′CbCr.
So proper conversion of Y′CbCr from one form to the other is not just a matter of
inverting one matrix and applying the other.
In fact, when Y′CbCr is designed ideally, the values of KB and KR are derived from the
precise specification of the RGB color primary signals, so that the luma signal corresponds
as closely as possible to a gamma-adjusted measurement of luminance.
ITU-R BT.2020 conversion The ITU-R BT.2020 standard defines both gamma
corrected Y′CbCr and a linear encoded version of YCbCr called YcCbcCrc.
YcCbcCrc may be used when the top priority is the most accurate retention of luminance
information.
For Y'CbCr, the coefficients are:
JPEG conversion JFIF usage of JPEG allows Y′CbCr where Y′,
CB and CR have the full 8-bit range of 0-255:
And back:
CbCr Planes at different Y values
References
External links Charles Poynton — Color FAQ
Charles Poynton — Video engineering Color Space Visualization
PC Magazine Encyclopedia: YCbCr YUV, YCbCr, YPbPr color spaces.
Color formats for image and video processing — Color conversion between RGB, YUV, YCbCr
and YPbPr. .