Цветовая наука/09/Цифровой сигнал

Цифровой сигнал

Видео-сигнал: YCbCr, levels, bit depth и chroma

Разложение digital video по независимым слоям: primaries, transfer, RGB↔YCbCr matrix, full/narrow range, bit depth, chroma sampling, codec и metadata — с диагностикой типичных ошибок в Resolve.

PrimariesTransferMatrixRangeBit depth4:2:2
Простыми словами

Фраза «10-bit 4:2:2 Rec.709» описывает сразу несколько независимых свойств. Ни одно из них не заменяет остальные. Чтобы правильно декодировать файл, нужно восстановить весь signal state, а не угадать один dropdown.

12 разделов4 первичных источников

Ключевые факты

Определения и цифры, которые стоит держать перед глазами

Signal state
Primaries · Transfer · Matrix · Range

Независимые interpretation layers.

10-bit narrow Y′
64 black · 940 white
10-bit narrow Cb/Cr
64…960 · neutral 512
Sampling
4:4:4 · 4:2:2 · 4:2:0

Spatial chroma resolution, не bit depth/gamut.

VIDEO SIGNAL STATE

Файл — это не один формат. Это несколько независимых описаний сигнала.

01
PRIMARIES
Rec.709 / BT.2020
02
TRANSFER
BT.1886 / PQ / HLG
03
MATRIX
RGB ↔ Y′CbCr
04
RANGE
full / narrow
05
BIT DEPTH
8 / 10 / 12
06
CHROMA
4:4:4 / 4:2:2 / 4:2:0
07
CODEC + META
H.264 / H.265 / ProRes…
Например, «10-bit 4:2:2 Rec.709» всё ещё не говорит автоматически, какой range, transfer и matrix реально закодированы/помечены в конкретном файле.
01

Семь слоёв, которые нельзя смешивать

Полезно читать video signal как цепочку: colorimetry/primaries → transfer → representation/matrix → numeric range → bit depth → chroma sampling → codec/container metadata. Например 10-bit говорит о quantisation precision, 4:2:2 — о spatial chroma sampling, Rec.709 — о colorimetry/transfer context, а ProRes/H.265 — о codec. Это разные оси.

02

RGB и Y′CbCr — representations, а не ranking качества

Video может храниться как RGB/R′G′B′ или как Y′CbCr. Y′CbCr создаётся из nonlinear R′G′B′ через standard-specific matrix и colour-difference components. При корректном 4:4:4 и достаточной precision оба representations могут описывать один и тот же visual signal без магического преимущества одного названия.

03

Matrix coefficients должны соответствовать colorimetry

BT.709 использует Y′=0.2126R′+0.7152G′+0.0722B′; BT.2020 NCL — 0.2627/0.6780/0.0593; SD BT.601 — 0.299/0.587/0.114. Если decoder применит не ту matrix, меняются luma/chroma relationships и появляются систематические hue/luminance errors, которые легко принять за плохой grade.

04

Full и narrow/video range — отдельный numeric mapping

В common 8-bit narrow video nominal luma black/white — 16/235, chroma nominal extremes — 16/240 с neutral 128. В 10-bit это 64/940 для Y′ и 64/960 для Cb/Cr с neutral 512. Full range использует весь 0…2^n−1. Range не меняет primaries или gamma — он только определяет, как normalized signal упакован в integers.

05

Как выглядит ошибка levels

Если full-range signal ошибочно прочитать как video/narrow, black/white могут clip и contrast станет чрезмерным. Если narrow прочитать как full, black поднимется, white опустится и картинка станет washed. Это numeric remapping issue, а не color-space transform. В Resolve для этого существует Data Levels interpretation/export setting.

06

Bit depth задаёт quantisation precision

8/10/12-bit дают 256/1024/4096 возможных integer values per component before range restrictions. Больше bits уменьшают размер quantisation step и дают transforms больше numerical headroom. Но 10-bit не означает HDR, wide gamut или 4:2:2: любой из этих attributes выбирается отдельно.

07

Chroma subsampling уменьшает spatial colour resolution

4:4:4 хранит chroma на полной sample grid, 4:2:2 уменьшает chroma resolution по горизонтали вдвое, 4:2:0 — по горизонтали и вертикали. Luma grid остаётся полной. Поэтому subsampling сильнее всего заметен на coloured fine detail, key edges, UI/text и многократных encode/decode cycles.

08

Даже 4:2:0 бывает с разным chroma siting

Название sampling ratio говорит количество chroma samples, но не всегда точную spatial phase/location относительно luma. Codec/VUI metadata может указывать chroma sample location. При неправильном resampling/siting цветовые края смещаются на полпикселя/пиксель и особенно раздражают на graphics/keying.

09

Codec — ещё один независимый слой

ProRes, DNxHR, H.264/H.265/AV1 определяют compression and coding tools, но один codec может иметь разные profiles/pixel formats. Нельзя по слову H.265 понять 8/10-bit, 4:2:0/4:4:4, PQ/HLG или full/video range без inspection metadata и actual stream parameters.

10

Metadata/signalling сообщает decoder, как читать numbers

Modern bitstreams/container tags могут нести colour_primaries, transfer_characteristics, matrix_coefficients, video_full_range_flag и chroma location. Эти tags не меняют pixels, но меняют interpretation. Wrong or missing tags — классическая причина ситуации «в Resolve всё нормально, после upload/player всё другое».

11

Resolve: диагностируйте signal по слоям

Сначала выясните media pixel format/bit depth/chroma, затем Data Levels, после — input color space/gamma/transfer. Если washed/clipped blacks исправляются только переключением Data Levels, не добавляйте CST. Если skin/hues меняются от matrix mismatch — не лечите это Lift/Gamma/Gain. Technical diagnosis должна соответствовать слою ошибки.

12

Render: проверьте actual file, а не только settings

После export полезно проверить stream metadata внешним inspector/ffprobe-like tool: pixel format, bit depth, color primaries, transfer, matrix и range. Encoder/container может ограничивать profile или переписать tags. Финальная проверка должна происходить на render artifact, который реально получает клиент/platform.

Что это меняет в постпродакшне

Самая полезная привычка при проблеме с цветом файла: записать строкой `primaries / transfer / matrix / range / bit depth / chroma`. Пока один из пунктов неизвестен, signal state неполный.

Типичные ошибки
Считать YCbCr синонимом Rec.709.
Пытаться исправить range через CST/gamma.
Считать 10-bit автоматически HDR.
Считать 4:4:4 автоматически RGB или lossless.
Игнорировать matrix_coefficients/metadata.
Доверять только Deliver settings и не проверять финальный stream.