RGB – родное цветовое пространство QuickTime. Исторически сложилось так, что большинство компрессоров и декомпрессоров конвертируют видео из и в RGB.
Однако, многие алгоритмы сжатия видео используют внутренний формат данных, где значения интенсивности (luma) и цвета (сигнал цветности) сохраненяются отдельно. Преобразование из цветового пространства YUV в RGB и наоборот при выполнении сжатия влечет изменение точности, и также, может ограничить значения, которые могут быть представлены только в одном из этих двух цветовых
пространств.
Один из самых обычных форматов цветового пространства, используемого для обработки видео – YUV, закрепленный рекомендациями Rec. ITU-R BT.601-4, часто называемого Rec. 601., и определяющего цветовое пространство Y’CbCr.
Это формат, используемый стандартными телевизионными сигналами, и форматами компрессии материала – таких как DV, MPEG или Motion-JPEG.
Диапазон значений уровней в каналах изображения Y’CbCr:
Y‘: рекомендуемый диапазон уровней 16 – 235.
(Значения 0 и 255 согласно Rec. 601 зарезервированы для синхронизации).
Cb: -112 – +112, со смещением на 128, для достижения диапазона 16 – 240
Cr: -112 – +112, со смещением на 128, для достижения диапазона 16 – 240
Отметьте, что экстремальные (крайние) значения диапазона кодирования обеспечивают амплитуду сигнала (Poynton, стр. 174). Также отметьте, что в некоторых случаях камеры создают значения, выходящие за рамки рекомендованного диапазона (особенно видеокамеры DV) – но об этом ниже.
Y‘CbCr обычно упоминается как наличие 4:2:2 subsampling – это обозначение относится к частотам дискретизации luma и сигнала цветности в сигнале.
Это же может относиться к способу упаковки пикселей в данном формате. Отметьте, что для сохранения большей разрешающей способности subsampled сигнал можно упаковать с различными картами пикселей. Сигнал, c subsampling 4:1:1 (NTSC DV), можно сохранить с картой упаковки пикселей 4:2:2. Точно так же можно сохранить как 4:4:4.
Ошибки преобразования между Y’CbCr и RGB
Неравномерность (Aliasing)
При конвертировании между двумя различными цветовами пространствами даже при условии, что процесс конвертирования спроектирован так, чтобы быть симметрическим (повторенные преобразования не вызывали никакого дрейфа), происходит алиасинг, потому что цветовые пространства не выравниваются для каждого значения пикселя. Поэтому существуют внутренние потери при преобразовании из Y‘CbCr в RGB и обратно.
Преобразование яркости (Luma Clamping)
Компьютеры в RGB пространстве определяют уровень черного равным 0 (для компоненты) и уровень белого равным 255. Для поддержки полного диапазона RGB цветового пространства от уровня черного до уровня белого уравнения преобразования “растягивают” диапазон 16-235 до 0-255 (C. Poynton, уравнение 9.11, стр. 177 или здесь).
Бывают моменты, когда значение яркости (luma) в исходном изображении может превышать ‘рекомендованное’ максимальное значение 235. Это относится ко многим DV видеокамерам, которые обычно создают значения luma в пределах 236-254. В этих случаях все значения более чем 235 будут отображены в RGB как 255, вызывая изменение фактического значения интенсивности. Это явление известно как ‘luma clamping‘.
Примером может служить белый стул в солнечном свете, где значения Y‘CbCr DV видеокамеры могли бы быть (Y‘=250, Cb=128, Cr=128).
Используя уравнения цветового пространства для перехода к RGB, мы получим значения преобразованных RGB как 255,255,255 (вместо исходных 272,272,272). После обратного преобразования к Y‘CbCr, в результате мы получим значения (Y‘=235, Cb=128, Cr=128). Результат будет заметно темнее оригинала.
Преобразование цвета (Chroma Clamping)
Существует большое количество Y‘CbCr цветов, отображающих значения RGB больше, чем 255 или меньше чем 0. Это означает, что в Y‘CbCr есть цвета, которые не могут быть представлены в RGB пространстве. Эти цвета будут преобразованы к значениям RGB, которые находятся в диапазоне 0-255, вызывая ‘chroma clamping‘.
Например, после преобразования Y‘CbCr цвета (Y‘=155, Cb=174, Cr=220) в RGB мы получим значения уровней (255 [309 до преобразования],69,255). После обратного преобразования в Y‘CbCr получим значения (Y‘=141, Cb=182, Cr=196) – иными словами заметное смещение цвета и снижение яркости.
Ошибки при преобразованиях значений яркости (luma) и цветности (chroma) с помощью формул преобразования вызваны тем, что диапазон значений цветового пространства RGB несколько уже значений диапазона Y‘CbCr.
… … …
Полная версия материала – здесь
Над материалом работал GS1966