KNOWLEDGE MAP · VIDEO & CAMERAS
Not three colours. Three signal components.
Mix R′G′B′, change coefficients and deliberately choose the wrong decoder matrix. Compare the numbers, not just the screen swatch.
Read the numbers. Notice the assumptions. Then apply the idea to your footage.
A matrix has an inverse.
0.3561-0.13800.28190.8000 / 0.2500 / 0.10000.8000 / 0.2500 / 0.10000.3561 / -0.1380 / 0.2819float0NCL matrices only; no gamut conversion, chroma subsampling or codec. Swatches are CSS sRGB code proxies. Reported numbers are not clipped to the preview range. Video chroma uses its own offset and span.
TOPIC ILLUSTRATIONTHE ESSENTIAL IDEA
YCbCr and Y′CbCr
Y′CbCr represents a signal as luma and two colour-difference components. Matrix conversion, quantisation and chroma subsampling are different operations. Only the first is inherently reversible in ideal arithmetic.
- Separate Y′, linear Y and display luminance.
- Calculate forward and inverse NCL matrices.
- Test matrices with coloured patches and ranges with ramps.
The prime in Y′ is not decoration
The prime indicates that Y′ is computed from nonlinearly encoded R′G′B′. It is video luma, not linear colorimetric Y, perceptual lightness or a direct display-luminance measurement in cd/m². A number needs context.
Identify the RGB representation and transfer function before choosing the component matrix. Applying the formula to linear RGB instead of its expected R′G′B′ is mathematically possible but produces a different representation. Keep physical light, signal codes and scope readings distinct when validating a workflow.
What this means in practice
Linear Y = 0.18 and coded Y′ = 0.18 are different quantities. Do not label both “18% brightness” without qualification.
One weighted sum and two differences
For a non-constant-luminance representation, Y′ = Kr·R′ + Kg·G′ + Kb·B′, with Kg = 1 − Kr − Kb. Cb normalises B′ − Y′; Cr normalises R′ − Y′. Neutral R′ = G′ = B′ gives Cb = Cr = 0: these components describe deviations from the neutral axis, not separate blue and red images.
With known coefficients and all components retained, the conversion is reversible in exact arithmetic. Rounding, clipping, subsampling and compression are additional operations that can destroy reversibility. The matrix alone has not reduced the number of spatial samples.
What this means in practice
Use matching encoder and decoder coefficients and disable rounding. The maximum round-trip error is near machine precision.
BT.709: defined coefficients, not a generic label
This matrix uses Kr = 0.2126, Kg = 0.7152 and Kb = 0.0722. For normalised components, Cb = (B′ − Y′)/1.8556 and Cr = (R′ − Y′)/1.5748. These constants need the corresponding inverse. A large green coefficient does not mean that the green channel contains all image detail.
The matrix is only one part of a BT.709 video description. It does not change gamut, specify code range or replace the transfer function. The lab keeps these layers separate: matrix choice is independent of optional Video-range quantisation.
What this means in practice
For R′G′B′ = (1,0,0), Y′ is 0.2126 and Cr is 0.5. This tests coefficients; it is not an exposure recipe for a red object.
BT.601: a different matrix can leave grey unchanged
BT.601 uses Kr = 0.299, Kg = 0.587 and Kb = 0.114, different from BT.709. Encoding coloured material with one matrix and decoding with another changes coloured regions. Neutral signals with zero Cb/Cr can remain neutral.
A correct grey ramp therefore does not prove matrix correctness; include coloured patches. File dimensions offer historical context, not unconditional proof: an SD source may have been scaled, edited or mistagged. Inspect metadata and transformation history.
What this means in practice
Encode a reddish patch as 601 and decode as 709. Then set all R′G′B′ to 0.5: the grey error disappears, but the underlying mismatch remains.
BT.2020 NCL and constant-luminance are different cases
BT.2020 NCL uses Kr = 0.2627, Kg = 0.6780 and Kb = 0.0593. The colour-difference formula resembles the earlier matrices but uses different constants. Habitually substituting 709 is wrong even if the final screen is ordinary SDR.
BT.2020 also defines a constant-luminance representation with a different component-formation process. It cannot be implemented merely by substituting Kr and Kb into an NCL matrix. The lab explicitly labels the option “2020 NCL”; it does not pretend to decode CL, ICtCp or HDR. Transfer and gamut handling remain separate stages.
What this means in practice
Read bt2020nc and PQ as separate properties: the first identifies a component matrix, the second a transfer characteristic.
Zero chroma is not digital code zero
Normalised Cb/Cr can be negative. Video-range integer encoding offsets them around a centre: neutral is 128 at 8 bits and 512 at 10 bits. Nominal chroma edges are 16…240 and 64…960; luma uses 16…235 and 64…940. These spans are different.
At 8 bits, Ycode = round(16 + 219Y′), Ccode = round(128 + 224C). Ten-bit offsets and spans scale by four. Nominal boundaries are not identical to every allowed value of a particular transport or file format. The lab does not clip calculated numbers before reporting them.
What this means in practice
Neutral black in 10-bit Video Y′CbCr is (64,512,512), not (64,64,64). Check what the scale actually represents.
A matrix does not automatically mean 4:2:0
Y′CbCr can retain a complete grid for all three components: 4:4:4. Chroma-grid reduction is a separate operation. Typical progressive 4:2:2 halves horizontal Cb/Cr density; 4:2:0 halves both horizontal and vertical density. Y′ retains its full grid.
Downsampling needs filtering, and reconstruction needs interpolation. That alone can remove fine coloured structure before any lossy codec is applied. The inverse RGB matrix reconstructs from the retained samples; it cannot recover measurements that were discarded.
What this means in practice
In the bits-and-chroma lab, equal-Y′ coloured patterns lose detail, while grey boundaries remain intact when quantisation is disabled.
Chroma siting: sample coordinates matter
Plane dimensions do not identify where a chroma sample lies relative to Y′. Locations may be co-sited or offset, depending on standard, format and frame structure. Interlaced footage must not automatically inherit a progressive 2×2 model.
Two filters may agree on plane size yet disagree on positions, shifting a coloured boundary relative to luma. Upscaling again does not necessarily fix this. Match input location, reconstruction filter and output location, especially during resizing, keying and intermediate export.
What this means in practice
Test a thin coloured vertical line on a neutral background. Compare its position before and after processing, not just its softness.
Why applications often say YUV
YUV, Y′PbPr and Y′CbCr historically describe different representations and uses. Software APIs nevertheless often use yuv as a broad label for digital planar colour-difference formats. That prefix alone does not establish coefficients, range or transfer.
For example, yuv420p describes plane organisation and sampling but does not replace color_space, color_range, color_transfer and color_primaries fields. A 10le suffix adds information about 10-bit sample storage and byte order; it does not automatically indicate HDR or a gamut.
What this means in practice
Read ffprobe pix_fmt alongside colour fields. Do not infer S-Log, Rec.709 or PQ solely from yuv420p10le.
Three similar symptoms, three different causes
A matrix mismatch often affects coloured regions while leaving grey unchanged. A range mismatch changes interpretation of black, white and intermediate codes. A chroma-location mismatch moves or changes a colour edge relative to Y′. Multiple errors can coexist.
Start with a controlled chart: a neutral ramp, saturated patches and fine coloured lines. Change only one interpretation layer at a time. Saturation and contrast are risky universal fixes: a locally pleasing image can hide wrong values that reappear at the next conversion.
What this means in practice
If grey matches but red and blue diverge, inspect matrix and gamut. Do not certify range from a single grey patch either.
Where to validate decoding in the workflow
A decoder normally turns stored components into the image processed downstream. A node CST is not a universal manual decoder for every Y′CbCr file. Once incorrect values have entered the processing path, later colour-space work may not undo the original mistake.
Compare metadata, interpretation settings and an independent controlled export. Use scopes for numeric levels, the Viewer for structure and colour edges, and ffprobe for file descriptions. Combine these observations: a properly tagged file does not prove correct samples, while an attractive Viewer does not prove correct tags.
What this means in practice
Test round-trip export through the same colour-managed chain; otherwise decoding differences are easily confused with viewing differences.
A MODEL YOU CAN CHECK
Component, code and position are different concepts.
Keep the meaning, the calculation and the limitation together.
Y′ = KrR′ + KgG′ + KbB′; Cb = (B′−Y′)/(2−2Kb); Cr = (R′−Y′)/(2−2Kr)Kg = 1 − Kr − Kb. The inverse reconstructs B′ and R′ from differences, then G′ from the sum. Without further losses it is reversible. BT.2020 is NCL only here; swatches show the same codes through CSS sRGB, not a full gamut conversion.
| Concept | What it describes | What not to conclude |
|---|---|---|
| Y′ | A weighted sum of nonlinear RGB values. | Not physical luminance Y or cd/m². |
| Cb / Cr | Normalised colour differences around zero. | Not independent blue and red pictures. |
| Digital offset | Moves neutral chroma to 128/512 in Video. | Do not confuse with luma black at 16/64. |
| Subsampling | Reduction of the spatial chroma grid. | Not part of the reversible NCL matrix itself. |
DO. OBSERVE. EXPLAIN.
Find a mismatch that grey does not reveal.
All values are calculated in the lab. For a video-workflow test, prepare a neutral ramp and coloured patches.
- 01
Verify the inverse
Use 709 at both ends without rounding and vary the channels.
CHECKRound-trip error is near machine precision.
- 02
Mismatch the matrices
Use 601 encoding and 709 decoding for a coloured patch.
CHECKChanging decoder choice leaves encoded Y′CbCr unchanged but changes RGB.
- 03
Test a neutral
Set R′ = G′ = B′ = 0.5 while keeping the wrong decoder.
CHECKNeutral remains neutral, but the setting is still wrong for colours.
- 04
Add rounding only
Match matrices and enable ten-bit Video. Read the three integer codes and error.
CHECKChroma offset is distinguished from luma black.
Check your understanding
TEST THE EXPLANATION
A situation, not a trick question.
Answer first. Open the reasoning afterwards.
01Grey is unchanged in 601→709. Are the matrices equal?+
No: equal RGB gives zero colour differences. A neutral-only test cannot distinguish the coefficients. Add coloured patches.
02Does YUV420P specify Rec.709?+
No: the pixel-format name describes planes, not a complete colour definition. Matrix, range, transfer and primaries are needed.
03The matrix is reversible. Why did export lose detail?+
Quantisation, clipping, subsampling and compression may have accompanied it. Inspect each stage separately.
Avoid these shortcuts
- Calling Y′ physical luminance Y.
- Treating YCbCr as an independent gamut.
- Decoding an SD BT.601 matrix as BT.709.
- Confusing BT.2020 NCL with constant-luminance representation.
- Ignoring chroma neutral offset/range.
- Ignoring chroma siting during resampling.
From the model to your workflow.
First identify the incoming values and operations already applied. Then check decoding, colour processing and the final export separately. The lab demonstrates its stated calculation; it does not measure your display, decode uploaded footage or certify camera settings.
CHECK THE FOUNDATION
Sources and model limits.
Editorial review: 1 October 2026. Links identify the definitions and formulas; exercises are independent teaching examples.
- [4]ITU-R · BT.709-6, §3–4 ↗
Y′CbCr matrix, quantisation, nominal Y′ and Cb/Cr levels and 4:2:2 sampling.
- [5]ITU-R · BT.601-7, Part A §2.5 ↗
SD matrix coefficients and colour-difference normalisation.
- [6]ITU-R · BT.2020-2, Table 4 ↗
NCL versus constant-luminance. Only NCL is implemented in the lab.
- [7]FFmpeg · ffprobe documentation ↗
Stream selection, fields and JSON inspection of a rendered file. Metadata is evidence, not proof of image correctness.
- [8]FFmpeg · setparams / scale / zscale ↗
Frame-property assignment versus value conversion; range and chroma location during resampling.
- [9]FFmpeg · pixel formats and chroma locations ↗
Component dimensions, pixel-format names and chroma locations. The yuv API prefix does not mean analogue YUV.
- [12]Blackmagic Design · DaVinci Resolve Color ↗
Colour management and RAW processing. Available controls depend on the format, version and project mode.