Поделиться через


Расширенные сведения о цвете

Если вы знаете что-нибудь о цвете RGB, вы знаете, что (255, 255, 255) является 8-разрядной RGB триплет для цвета белый. Но что такое фактический цвет , определенный этим триплетом?

Ответ может быть удивительным: без некоторых дополнительных сведений, этот триплет не определяет какой-либо конкретный цвет! Значение любого значения RGB зависит от цветового пространства. Если мы не знаем цветового пространства, то строго говоря, мы не знаем цвет.

Цветовое пространство определяет, как числовое представление заданного значения цвета должно быть воспроизведено в виде физического света. Если видео закодировано в одном цветовом пространстве, но отображается в другом, оно приводит к искаженным цветам, если видео не исправлено цветом. Для достижения точной точности цвета, поэтому важно знать цветовое пространство исходного видео. Ранее конвейер видео в Windows не носил информацию о предполагаемом цветовом пространстве. Начиная с Windows Vista, DirectShow и Media Foundation поддерживают расширенные сведения о цвете в типе мультимедиа. Эти сведения также доступны для ускорения видео DirectX (DXVA).

Стандартный способ описания цветового пространства математически заключается в использовании цветового пространства CIE XYZ, определенного Международной комиссией по освещению (CIE). Нецелесообразно использовать значения CIE XYZ непосредственно в видео, но цветовое пространство CIE XYZ можно использовать в качестве промежуточного представления при преобразовании между цветовыми пространствами.

Для точного воспроизведения цветов требуются следующие сведения:

  • Основные значения цветов. Основные значения цвета определяют, как значения тристимулуса CIE XYZ представлены в виде компонентов RGB. В действительности, первичные цвета определяют "значение" заданного значения RGB.
  • Функция передачи. Функция передачи — это функция, которая преобразует линейные ЗНАЧЕНИЯ RGB в нелинейные значения R'G'B. Эта функция также называется гамма-коррекцией.
  • Матрица передачи. Матрица передачи определяет, как R'G'B преобразуется в Y'PbPr.
  • Выборка Chroma. Большинство видео YUV передается с меньшим разрешением в компонентах хрома, чем luma. Выборка Chroma обозначается FOURCC формата видео. Например, YUY2 — это формат 4:2:2, т. е. образцы chroma будут выбирать по горизонтали по коэффициенту 2.
  • Chroma сидя. При выборке chroma позиция образцов хрома относительно образцов luma определяет, как должны быть интерполированы отсутствующие образцы.
  • Номинальный диапазон. Номинальный диапазон определяет, как значения Y'PbPr масштабируются до Y'CbCr.

Цветовое пространство в типах мультимедиа

DirectShow, Media Foundation и DirectX Video Acceleration (DXVA) имеют разные способы представления форматов видео. К счастью, легко перевести сведения о цветовом пространстве с одного на другой, так как соответствующие перечисления одинаковы.

Преобразование цветового пространства

Для преобразования из одного пространства Y'CbCr в другой требуется выполнить следующие действия.

  1. Обратная квантизация: преобразование представления Y'CbCr в представление Y'PbPr с использованием исходного номинального диапазона.

  2. Upsampling: преобразование выборочных значений chroma в 4:4:4 путем интерполяции значений хрома.

  3. Преобразование YUV в RGB: преобразование из Y'PbPr в нелинейную R'G'B с помощью матрицы передачи источника.

  4. Обратная функция передачи: преобразование нелинейной R'G'B в линейный RGB с помощью обратной функции передачи.

  5. Преобразование цветов RGB-пространства: используйте первичные значения цвета для преобразования из исходного пространства RGB в целевое пространство RGB.

  6. Функция передачи: преобразование линейной RGB в нелинейную R'G'B с помощью целевой функции передачи.

  7. Преобразование RGB в YUV: преобразование R'G'B в Y'PbPr с помощью целевой матрицы передачи.

  8. Понижение: преобразование 4:4:4 в 4:2, 4:2, 4:2:0 или 4:1:1 путем фильтрации значений chroma.

  9. Квантизация: преобразование Y'PbPr в Y'CbCr с использованием целевого номинального диапазона.

Шаги 1–4 происходят в исходном цветовом пространстве, а шаги 6–9 выполняются в целевом цветовом пространстве. В фактической реализации промежуточные шаги могут быть приблизительными и смежными шагами можно объединить. Как правило, существует компромисс между точностью и вычислительными затратами.

Например, для преобразования из RT.601 в RT.709 требуются следующие этапы:

  • Инверсная квантизация: Y'CbCr(601) до Y'PbPr(601)

  • Upsampling: Y'PbPr(601)

  • YUV to RGB: Y'PbPr(601) to R'G'B'(601)

  • Обратная функция передачи: R'G'B'(601) на RGB(601)

  • Преобразование цветов RGB: RGB(601) в RGB(709)

  • Функция передачи: RGB(709) в R'G'B'(709)

  • RGB to YUV: R'G'B'(709) to Y'PbPr(709)

  • Downsampling: Y'PbPr(709)

  • Квантизация: Y'PbPr(709) до Y'CbCr(709)

Использование расширенных сведений о цвете

Чтобы сохранить точность цвета во всем конвейере, сведения о цветовом пространстве должны быть представлены в источнике или декодаторе и переданы весь путь через конвейер в приемник.

Устройства записи видео

Большинство устройств с аналоговым захватом используют четко определенное цветовое пространство при записи видео. Драйверы записи должны предлагать формат с блоком формата KS_VIDEOINFOHEADER2 , содержащим сведения о цвете. Для обратной совместимости драйвер должен принимать форматы, не содержащие сведения о цвете. Это позволит драйверу работать с компонентами, которые не принимают расширенные сведения о цвете.

Источники на основе файлов

При анализе видеофайла источник мультимедиа (или фильтр синтаксического анализа в DirectShow) может предоставить некоторые сведения о цвете. Например, DVD-навигатор может определить цветовое пространство на основе содержимого DVD. Другие сведения о цвете могут быть доступны декодировщику. Например, основной видеопоток MPEG-2 предоставляет сведения о цвете в поле sequence_display_extension. Если сведения о цвете не описаны в источнике явным образом, он может быть определен неявно типом содержимого. Например, разновидности ВИДЕО NTSC и PAL используют разные цветовые пространства. Наконец, декодатор может использовать любые сведения о цвете, полученные из типа носителя источника.

Другие компоненты

Другим компонентам может потребоваться использовать сведения о цветовом пространстве в типе носителя:

  • Программные преобразователи цветового пространства должны использовать сведения о цветовом пространстве при выборе алгоритма преобразования.
  • Миксеры видео, такие как расширенный средство отрисовки видео (EVR), должны использовать сведения о цвете при смешивании видеопотоков из разных типов содержимого.
  • API-интерфейсы и DDIS-интерфейсы обработки видео DXVA позволяют вызывающей программе указывать сведения о цветовом пространстве. Gpu должен использовать эти сведения при выполнении жесткого смешивания видео.

Типы мультимедиа видео

Ускорение видео DirectX 2.0