|
|
| Line 1: |
Line 1: |
| {{Redirect|CbCr||CBCR (disambiguation){{!}}CBCR}}
| |
| [[File:YCbCr.GIF|thumb|240px|A visualization of YCbCr color space]]
| |
| [[File:YCbCr-CbCr Scaled Y50.png|thumb|300px|The CbCr plane at constant luma Y'=0.5]]
| |
| [[Image:Barns grand tetons YCbCr separation.jpg|thumb|A color image and its Y, C<sub>B</sub> and C<sub>R</sub> components. The Y image is essentially a greyscale copy of the main image.]]
| |
|
| |
|
| '''YCbCr''', '''Y′CbCr''', or '''Y Pb/Cb Pr/Cr''', also written as {{YCbCr|}} or {{YCbCr}}, is a family of [[color space]]s used as a part of the [[color image pipeline]] in [[video]] and [[digital photography]] systems. Y′ is the [[Luma (video)|luma]] component and C<sub>B</sub> and C<sub>R</sub> are the blue-difference and red-difference [[chrominance|chroma]] components. Y′ (with prime) is distinguished from Y, which is [[luminance (relative)|luminance]], meaning that light intensity is nonlinearly encoded based on [[gamma correction|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.
| | The person who wrote all of the article is called Leland but it's not the most masucline name around the world. To go to karaoke is the thing [http://Search.huffingtonpost.com/search?q=david+loves&s_it=header_form_v1 david loves] most of every bit of. He actually works as a cashier. His wife and him live inside of Massachusetts and he is bound to have everything that he needs and wants there. He's not godd at design but may also want to check its website: http://prometeu.net<br><br>Feel free to visit my blog - [http://prometeu.net clash of clans gold glitch] |
| | |
| ==Rationale==
| |
| [[Cathode ray tube]] displays are driven by red, green, and blue voltage signals, but these [[RGB color space|RGB]] signals are not efficient as a representation for storage and transmission, since they have a lot of [[Redundancy (information theory)|redundancy]].
| |
| | |
| YCbCr and Y′CbCr are a practical approximation to color processing and perceptual uniformity, where the [[primary color]]s 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 (Y′) that can be stored with high resolution or transmitted at high bandwidth, and two chroma components (C<sub>B</sub> and C<sub>R</sub>) 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 (see image example to the right).
| |
| | |
| ==YCbCr==
| |
| YCbCr is sometimes abbreviated to '''YCC'''. Y′CbCr is often called [[YPbPr]] when used for [[Analog video|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 (prior to scaling and offsets to place the signals into digital form) are called [[YPbPr]], and are created from the corresponding gamma-adjusted [[RGB]] (red, green and blue) source using two defined constants K<sub>B</sub> and K<sub>R</sub> as follows:
| |
| :<math>\begin{align}
| |
| Y' &= K_R \cdot R' + (1 - K_R - K_B) \cdot G' + K_B \cdot B'\\
| |
| P_B &=\frac12 \cdot \frac{B' - Y'}{1 - K_B}\\
| |
| P_R &=\frac12 \cdot \frac{R' - Y'}{1 - K_R}
| |
| \end{align}</math>
| |
| | |
| where K<sub>B</sub> and K<sub>R</sub> are ordinarily derived from the definition of the corresponding RGB space. (The equivalent [[matrix (mathematics)|matrix]] manipulation is often referred to as the "color matrix".)
| |
| | |
| 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 (e.g., for display of the color [[black]]) and 1 the maximum (e.g., for display of the color [[white]]). The resulting luma (Y) value will then have a nominal range from 0 to 1, and the chroma (P<sub>B</sub> and P<sub>R</sub>) 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 (e.g. [[MPEG-2]]<ref>e.g. the [[MPEG-2]] specification, ITU [[H.262]] 2000 E pg. 44</ref>) 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 C<sub>B</sub> and C<sub>R</sub> scaled to a different range of 16 to 240. Consequently, rescaling by the fraction (235-16)/(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 (signal processing)|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 (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. These out-of-range YCbCr values are used by [[xvYCC]] to encode colors outside the BT.709 gamut.
| |
| | |
| [[File:CCD.png|thumb|320px|RGB to YCbCr conversion]]
| |
| === ITU-R BT.601 conversion ===
| |
| | |
| The form of Y′CbCr 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:
| |
| :<math>K_B = 0.114</math>
| |
| :<math>K_R = 0.299</math>
| |
| | |
| 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:
| |
| | |
| :<math>\begin{align}
| |
| Y' &= & 0.299 \cdot R' &+& 0.587 \cdot G' &+& 0.114 \cdot B'\\
| |
| P_B &= -& 0.168736 \cdot R' &-& 0.331264 \cdot G' &+& 0.5 \cdot B'\\
| |
| P_R &= & 0.5 \cdot R' &-& 0.418688 \cdot G' &-& 0.081312 \cdot B'
| |
| \end{align}</math>
| |
| | |
| Digital Y′CbCr (8 bits per sample) is derived from analog R'G'B' as follows:
| |
| | |
| :<math>\begin{align}
| |
| Y' &=& 16 &+& ( 65.481 \cdot R' &+& 128.553 \cdot G' &+& 24.966 \cdot B')\\
| |
| C_B &=& 128 &+& (-37.797 \cdot R' &-& 74.203 \cdot G' &+& 112.0 \cdot B')\\
| |
| C_R &=& 128 &+& (112.0 \cdot R' &-& 93.786 \cdot G' &-& 18.214 \cdot B')
| |
| \end{align}</math>
| |
| | |
| or simply componentwise
| |
| | |
| :<math>\begin{align}
| |
| (Y', C_B, C_R) &=& ( 16, 128, 128 ) + ( 219 \cdot Y, 224 \cdot P_B, 224 \cdot P_R)\\
| |
| \end{align}</math>
| |
| | |
| The resultant signals range from 16 to 235 for Y' (Cb and Cr range from 16 to 240); 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 (8 bits per sample, each using the full range with zero representing black and 255 representing white) according to the following equations:
| |
| :<math>\begin{align}
| |
| Y' &=& 16 &+& \frac{ 65.738 \cdot R'_D}{256} &+& \frac{129.057 \cdot G'_D}{256} &+& \frac{ 25.064 \cdot B'_D}{256}\\
| |
| C_B &=& 128 &-& \frac{ 37.945 \cdot R'_D}{256} &-& \frac{ 74.494 \cdot G'_D}{256} &+& \frac{112.439 \cdot B'_D}{256}\\
| |
| C_R &=& 128 &+& \frac{112.439 \cdot R'_D}{256} &-& \frac{ 94.154 \cdot G'_D}{256} &-& \frac{ 18.285 \cdot B'_D}{256}
| |
| \end{align}</math>
| |
| | |
| In the above formula, the scaling factors are multiplied by <math>\frac{256}{255}</math>. 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 <math>\frac{255}{219}</math> needs to be included in the equations.
| |
| | |
| The inverse transform is:
| |
| :<math>\begin{align}
| |
| R'_D &=& \frac{298.082 \cdot Y'}{256} &&&+& \frac{408.583 \cdot C_R}{256} &-& 222.921\\
| |
| G'_D &=& \frac{298.082 \cdot Y'}{256} &-& \frac{100.291 \cdot C_B}{256} &-& \frac{208.120 \cdot C_R}{256} &+& 135.576\\
| |
| B'_D &=& \frac{298.082 \cdot Y'}{256} &+& \frac{516.412 \cdot C_B}{256} &&&-& 276.836
| |
| \end{align}</math>
| |
| | |
| The inverse transform without any roundings (using values coming directly from ITU-R BT.601 recommendation) is:
| |
| :<math>\begin{align}
| |
| R'_D &=& \frac{255}{219}\cdot(Y'-16) &+&&& \frac{255}{112}\cdot0.701\cdot(C_R-128)\\
| |
| G'_D &=& \frac{255}{219}\cdot(Y'-16) &-& \frac{255}{112}\cdot0.886\cdot\frac{0.114}{0.587}\cdot(C_B-128) &-& \frac{255}{112}\cdot0.701\cdot\frac{0.299}{0.587}\cdot(C_R-128)\\
| |
| B'_D &=& \frac{255}{219}\cdot(Y'-16) &+& \frac{255}{112}\cdot0.886\cdot(C_B-128)
| |
| \end{align}</math>
| |
| | |
| 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 [[Cathode ray tube|CRT]]s.
| |
| | |
| === ITU-R BT.709 conversion ===
| |
| [[File:CIExy1931_Rec_2020_and_Rec_709.svg|thumb|[[Rec. 709]] compared with [[Rec. 2020]]]]
| |
| A different form of Y′CbCr is specified in the [[Rec. 709|ITU-R BT.709]] standard, primarily for [[High-definition television|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:
| |
| :<math>K_B = 0.0722</math>
| |
| :<math>K_R = 0.2126</math>
| |
| | |
| 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 (625-line as in [[PAL]] and [[SECAM]] or 525-line as in [[NTSC]]), 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 K<sub>B</sub> and K<sub>R</sub> are derived from the precise specification of the RGB color primary signals, so that the luma (Y′) signal corresponds as closely as possible to a [[gamma correction|gamma-adjusted]] measurement of [[luminance]] (typically based on the [[International Commission on Illumination|CIE]] 1931 measurements of the response of the human visual system to color stimuli).<ref>Charles Poynton, ''Digital Video and HDTV'', Chapter 24, pp. 291–292, [[Morgan Kaufmann]], 2003.</ref>
| |
| | |
| === ITU-R BT.2020 conversion ===
| |
| The [[Rec. 2020|ITU-R BT.2020]] standard defines both gamma corrected Y′CbCr and a linear encoded version of YCbCr called YcCbcCrc.<ref name=Recommendation2020>{{cite news |title=BT.2020 : Parameter values for ultra-high definition television systems for production and international programme exchange |publisher=[[International Telecommunication Union]] |url=http://www.itu.int/rec/R-REC-BT.2020-0-201208-I/en |date=2012-08-23 |accessdate=2012-08-24}}</ref> YcCbcCrc may be used when the top priority is the most accurate retention of luminance information.<ref name=Recommendation2020/>
| |
| | |
| === JPEG conversion ===
| |
| | |
| [[JFIF]] usage of [[JPEG]] allows Y′CbCr where Y′, C<sub>B</sub> and C<sub>R</sub> have the full 8-bit range of 0-255:<ref>[http://www.jpeg.org/public/jfif.pdf JPEG File Interchange Format Version 1.02]</ref>
| |
| :<math>\begin{align}
| |
| Y' &=& 0 &+ (0.299 & \cdot R'_D) &+ (0.587 & \cdot G'_D) &+ (0.114 & \cdot B'_D)\\
| |
| C_B &=& 128 &- (0.168736 & \cdot R'_D) &- (0.331264 & \cdot G'_D) &+ (0.5 & \cdot B'_D)\\
| |
| C_R &=& 128 &+ (0.5 & \cdot R'_D) &- (0.418688 & \cdot G'_D) &- (0.081312 & \cdot B'_D)
| |
| \end{align}</math>
| |
| | |
| And back:
| |
| | |
| :<math>\begin{align}
| |
| R &=& Y &&& + 1.402 & \cdot (C_R-128) \\
| |
| G &=& Y & - 0.34414 & \cdot (C_B-128)& - 0.71414 & \cdot (C_R-128) \\
| |
| B &=& Y & + 1.772 & \cdot (C_B-128)&
| |
| \end{align}</math>
| |
| | |
| == CbCr Planes at different Y values ==
| |
| | |
| <gallery>
| |
| File:YCbCr-CbCr Y0.png|Y=0
| |
| File:YCbCr-CbCr Y50.png|Y=0.5
| |
| File:YCbCr-CbCr Y100.png|Y=1
| |
| </gallery>
| |
| | |
| ==References==
| |
| {{reflist}}
| |
| | |
| ==External links==
| |
| * [http://www.poynton.com/ColorFAQ.html Charles Poynton — Color FAQ]
| |
| * [http://www.poynton.com/Poynton-video-eng.html Charles Poynton — Video engineering]
| |
| * [http://www.couleur.org/index.php?page=transformations#YCbCr Color Space Visualization]
| |
| * [http://www.pcmag.com/encyclopedia_term/0,2542,t=YCbCr&i=55147,00.asp PC Magazine Encyclopedia: YCbCr]
| |
| * [http://discoverybiz.net/enu0/faq/faq_YUV_YCbCr_YPbPr.htm YUV, YCbCr, YPbPr color spaces.]
| |
| * [http://www.equasys.de/colorformat.html Color formats] for image and video processing — [http://www.equasys.de/colorconversion.html Color conversion] between RGB, YUV, YCbCr and YPbPr.
| |
| | |
| {{Color space}}
| |
| | |
| [[Category:Color space]].
| |