Цветовая наука/03/Цифровое представление

Цифровое представление

RGB и цифровой цвет

Что на самом деле означают R, G и B: additive primaries, linear light, transfer functions, code values, matrices и причина, по которой 255,0,0 без color space не определяет конкретный красный.

Additive RGBPrimariesLinear lightCode valuesMatrices
Простыми словами

RGB — это три координаты внутри заранее определённой системы. Пока не известны primaries, white point и способ кодирования сигнала, три числа RGB не говорят однозначно, какой свет должен излучить монитор.

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

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

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

Модель
3 additive primaries

R/G/B — вклад primaries конкретной системы.

Без контекста
255,0,0 неоднозначен

Нужны color space, transfer/encoding и range.

Linear RGB
Числа ∝ свету

Критично для physically meaningful compositing и interpolation.

Alpha
Transparency / coverage

Не является четвёртым colour primary.

Additive RGB
RGB
складываем свет

Точные red, green и blue задаются color space — сами буквы не являются универсальными спектральными цветами.

Одно число — два смысла

0.5 encoded ≠ 0.5 linear light

encoded RGB0.50
linear lightзависит от transfer
255,0,0
code value
Rec.709
смысл A
Rec.2020
смысл B
01

RGB — аддитивная модель света

Дисплей создаёт цвет, складывая свет трёх primaries. Ноль по всем каналам означает отсутствие их вклада, а увеличение каналов добавляет излучение. Это принципиально отличается от субтрактивных моделей печати, где красители удаляют части падающего спектра.

02

R, G и B — не универсальные цвета природы

Каждая RGB-система сама определяет chromaticities своих red, green и blue primaries. Rec.709, Display P3 и Rec.2020 используют разные координаты, поэтому R=1, G=0, B=0 в этих пространствах задаёт разные красные. Буква R описывает канал системы, а не один физически фиксированный оттенок.

03

RGB-числа — координаты, а не абсолютный цвет

Запись 255,0,0 говорит только о максимальном первом канале и нулевых двух остальных в конкретном encoding. Без информации о color space, transfer function, bit depth и range она неполна. Поэтому один и тот же hex-код может физически воспроизводиться по-разному на системах с разными color management и дисплеями.

04

Linear RGB: когда числа пропорциональны свету

В linear-light RGB удвоение значения канала означает удвоение вклада этого primary в физическую интенсивность света. Именно в linear light корректно выполняются многие операции смешивания, blur, compositing и physically meaningful interpolation. Но хранить изображение напрямую в линейной форме при ограниченной bit depth не всегда эффективно.

05

Почему обычный RGB-сигнал часто нелинейный

Transfer function перераспределяет code values относительно света. Исторически это было связано с поведением CRT, а сегодня также помогает эффективнее использовать кодовые уровни и строить согласованную систему camera → signal → display. sRGB, BT.709-style camera encoding, gamma 2.4 display response, PQ, HLG и log curves — разные вещи, хотя в интерфейсах их часто складывают в одно меню Gamma.

06

0–1, 0–255 и 64–940 — это разные способы записать похожую идею

Floating-point workflows часто нормализуют RGB к диапазону 0–1, 8-bit graphics используют 0–255, а video range в 10-bit системах обычно резервирует кодовые уровни за пределами nominal black/white. Эти числа описывают encoding, но сами по себе не меняют primaries или white point.

07

Как RGB переводится из одного пространства в другое

Если две RGB-системы описаны через CIE coordinates и white point, linear RGB можно преобразовать через матрицы, часто с промежуточным XYZ. Если white points различаются, может понадобиться chromatic adaptation. Если target gamut уже исходного, одного matrix transform недостаточно для красивого поведения out-of-gamut цветов — появляется задача gamut mapping.

08

Отрицательные и >1 значения не всегда ошибка

В широких scene-referred working spaces после transforms реальные цвета могут временно иметь отрицательные RGB components или значения выше nominal 1.0. В floating-point pipeline это может быть валидным промежуточным состоянием. Ошибка начинается тогда, когда такие значения без контроля попадают в ограниченный display-referred output и клипуются.

09

Alpha — не четвёртый цветовой канал

Alpha обычно описывает transparency или coverage. В premultiplied representation RGB уже умножен на alpha, в straight/unpremultiplied — хранится отдельно. Для compositing это критично, но alpha не расширяет цветовой gamut и не является дополнительным primary.

10

Что RGB означает внутри Resolve

В Resolve один и тот же pixel может последовательно существовать как camera-space RGB, timeline/working RGB и output/display RGB. Поэтому вопрос «какие здесь RGB?» всегда должен продолжаться вопросом «в каком color space и gamma находится нода в этой точке pipeline?».

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

Главное практическое правило: RGB без контекста — просто числа. Перед любым CST, LUT или ручным transform сначала установите, что эти числа означают на входе.

Типичные ошибки
Считать 255,0,0 одним универсальным красным.
Путать linear RGB с gamma/log-encoded RGB.
Считать alpha четвёртым primary.
Клиповать отрицательные/>1 working values слишком рано.
Стандарты и первичные источники

Технические определения привязаны к организациям стандартов и первичным спецификациям там, где это действительно важно.