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


Конвейер калибровки цветов для оборудования Windows

В этой статье рассматривается калибровка цвета с помощью нового конвейера преобразования цвета графического процессора, поддерживаемого Windows 10 версии 2004 (20H1) и более поздних версий. Конвейер обеспечивает значительно улучшенную точность цвета по существующим путям, таким как конвейер гамма-рампы GDI, и добавляет поддержку дисплеев HDR.

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

Новый конвейер цветов доступен для любого дисплея, если GPU соответствует требованиям к системе. Если дисплей является HDR или использует автоматическое управление цветами, есть дополнительные рекомендации и требования. который можно найти в разделе Use DirectX с расширенным цветом на дисплеях динамического диапазона высокого или стандартного уровня.

Введение

Калибровка цвета отображения — это процесс обеспечения точного соответствия отображаемого цветового пространства; например, sRGB или DCI-P3 D65. Из-за вариаций производственного процесса и других источников отдельная панель отображения может отклоняться от ее спецификации. После калибровки дисплея ваши приложения и содержимое могут уверенно ориентироваться на цветовое пространство дисплея, не беспокоясь об этой изменчивости или неточности.

На высоком уровне калибровка цвета отображения включает следующие действия:

  1. При отрисовке набора известных значений цвета выполняются оптические измерения фактических выходных данных цвета дисплея.
  2. На основе данных измерения создайте преобразование цвета, которое исправляет любые неточности в дисплее и создает метаданные, описывающие результирующий объем цвета дисплея.
  3. Сохраните данные преобразования цветов и отображайте метаданные для последующего использования.
  4. Во время выполнения загрузите и примените преобразование цвета к экранной рамке (значения цвета, отправленные на экран), а также сообщите о метаданных отображения в приложениях.

Windows 10 версии 2004 предоставляет расширенные функциональные возможности для шагов 3 и 4, а поставщики дисплеев и калибровки отвечают за шаги 1 и 2.

Требования к системе

Для нового конвейера преобразования цвета требуется графический процессор и драйвер отображения. Поддерживаемые архитектуры GPU включают:

  • AMD:
    • AMD RX 500 400 серии или более поздней версии
    • Процессоры AMD Ryzen с графическими процессорами Amd
  • Intel:
    • Интегрировано: Intel 10-го поколения GPU (Ice Lake) или более поздней версии
    • Дискретные: Intel DG1 или более поздней версии
  • NVIDIA GTX 10xx или более поздней версии (Pascal+)
  • Qualcomm 8CX 3-го поколения или более поздней версии; 7C 3-го поколения или более поздней версии

Примечание.

Наборы микросхем Intel codename Comet Lake (5 цифр модели) не поддерживаются.

Требуется драйвер windows Display Driver Model (WDDM) 2.6 или более поздней версии (выпущен с Windows 10 версии 1903). Для некоторых поставщиков GPU требуется более новый драйвер, потенциально новый как WDDM 3.0 (выпущен с Windows 11 версии 21H2).

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

Новый конвейер преобразования цветов GPU

Windows 10 версии 2004 предоставляет конвейер преобразования цветов с ускорением GPU, состоящий из линейной гамма-матрицы цветов и 1DLUT. По сравнению с существующим конвейером гамма-рампы он обеспечивает превосходную точность, точность и поддержку широкоцветных дисплеев. Кроме того, он добавляет поддержку новых технологий, таких как HDR, которые используют сигнал BT.2100.

Конвейер не программируется напрямую приложениями, а предоставляется только с помощью профилей MHC; Дополнительные сведения см. ниже. Другие функции операционной системы (ОС), такие как ночной свет, также могут использовать этот конвейер, и ОС управляет предоставлением общего доступа (создания) и /или рационализировать доступ к конвейеру между несколькими сценариями.

Описание конвейера преобразования цвета

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

блок-схема: исходная дегамма, цветовая матрица, целевая регамма

Модель может преобразовать между двумя цветовыми пространствами RGB (или другими 3-каналами), например sRGB в P3 D65. Он также может исправить наиболее распространенные типы вариантов цвета панели.

Конвейер преобразования цветов Windows принимает концептуальную модель, расширяет этапы 2 (цветовую матрицу) и 3 (целевая регамма) на подэтапы и предоставляет подмножество этапов (2b и 3b, в зеленом) для приложений в программе, оставляя остальные (белые) управляемые драйвером:

блок-схема: исходная дегамма; цветовая матрица разложена в исходный RGB на XYZ, XYZ на XYZ и XYZ для назначения RGB; целевая regamma разложена в функцию передачи проводной передачи, корректировка 1DLUT

Эти изменения позволяют цветовому конвейеру быть неуклюженными к цветовому пространству исходного содержимого, которое может измениться на основе фреймов к кадрам. Кроме того, он улучшает совместимость с цветовыми пространствами отображения, такими как BT.2100 ST.2084, которые требуют непрозрачной оптимизации для сохранения точности.

Этап 0. Источник (графические входные данные)

Входные данные — отрисованный фреймбуфер из ОС. Он может находиться в одном из нескольких цветовых пространств в зависимости от сценария, включая SRGB, sYCC, HDR10 или scRGB, и может изменяться на основе кадров.

Этап 1. Источник DeGamma

Драйвер отображения автоматически преобразует исходное содержимое в линейную гамму, и этот этап не программируется приложениями.

Этап 2. Матрица преобразования цветового пространства

В стандартной модели преобразования цветового пространства этап матрицы можно разбить на три матрицы, которые составляются (умножаются) вместе:

  • 2a. Преобразование из исходного содержимого цветового пространства RGB (линейного гамма) в абсолютное цветовое пространство; в конвейере Windows абсолютное цветовое пространство — CIEXYZ.

  • 2b. Выполните любые корректировки в пространстве CIEXYZ, например калибровку.

  • 2c. Преобразование из CIEXYZ в целевое цветовое пространство RGB (линейная гамма). Целевое цветовое пространство RGB определяется как кодировка, используемая при передаче цветов по проводу отображения, как правило, первичных элементов BT.709 или BT.2020. Это не фактические, измеряемые первичные элементы физической панели.

Матрица 2a определяется исходным содержимым, а матрица 2c определяется режимом сигнала дисплея; Доступ к приложениям доступен только в матрице 2b. Драйвер умножает три вместе, чтобы создать фактическую матрицу, выполняемую в оборудовании:

FinalMatrix = SourceRGBtoXYZ * XYZtoXYZAdjust * XYZtoTargetRGB

Примечание.

Так как драйвер отображения отвечает за исходный RGB-файл XYZ и предназначен для преобразований XYZ в RGB, матрица, которую вы программируете (этап 2b), не должны включать ни один из них.

Пример 1. Если вы не выполняете корректировку цветов (сквозной), то матрица должна быть удостоверением независимо от типа вывода.

Пример 2. При выходе на экран SDR P3 D65 и реализации профиля проверки правописания SRGB, который эмулирует SRGB на панели, матрица должна состоять из первичной смены из SRGB в P3 D65.

Этап 3. Целевая регамма

Этот этап можно разбить на два RGB 1DLUT, которые состоят вместе:

  • 3a. Кодирование линейных RGB-данных с этапа 2c в функцию передачи или гамма сигнала по проводу отображения.

  • 3b. Выполните любые корректировки в целевом гамма-пространстве, например калибровку.

1DLUT 3a определяется цветовой областью формата провода; чаще всего это SDR-дисплей и ST.2084 для дисплеев HDR. 3b программируется приложениями и возникает после применения функции передачи формата проводной связи. Драйвер создает два 1DLUT для создания фактического 1DLUT, выполняемого в оборудовании:

Final1DLUT = Adjustment1DLUT(TargetReGamma(input))

Примечание.

Так как драйвер отвечает за программирование функции передачи сигнала отображения, 1DLUT, которую вы программировали (3b), не должны включать эту кодировку. Например, если вы не выполняете корректировки цветов (сквозной), то 1DLUT должен быть удостоверением независимо от цветового пространства формата провода.

Этап 4. Целевой объект (выходные данные для сканирования)

Это фреймбаффер, который будет сканироваться по проводу GPU; в собственном цветовом пространстве дисплея и после любых настроек, которые вы запрограммировали. После этого могут возникнуть дополнительные операции, такие как кодировка YCbCr.

Высокая точность и точность

Функция линейной гамма-матрицы (XYZ до XYZ) была представлена в Windows 10 версии 1709. Эта возможность позволяет выполнять корректировку цветовой первичной и белой точки, а также произвольные преобразования цветов rgb-пространства.

Этап корректировки 1DLUT концептуально похож на существующий гамма-пандус 1DLUT, но обеспечивает улучшенную точность, с до 4096 записей LUT до 16-разрядной точности фиксированной точки.

Примечание.

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

Отображается поддержка HDR (BT.2100)

Ограничение существующего конвейера гамма-пандуса заключается в том, что он имеет неопределенное поведение при использовании HDR (BT.2100 ST.2084) сигналов. Новый конвейер преобразования цветов явным образом поддерживает как SDR (BT.1886 или sRGB), так и сигналы HDR, а также масштабы для поддержки будущих цветовых пространств формата провода. Это достигается с помощью этапов "XYZ to Target RGB" и "Функция передачи проводной передачи" (синяя) на схеме блоков:

блок-схема, определяющая xyz для целевых этапов rgb и проводной передачи

Эти два этапа, контролируемые драйвером автоматически, отвечают за кодировку цветов в цветовое пространство формата провода: например, sRGB или BT.2020 ST.2084.

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

Новый тег MHC2 для профилей ICC

Windows не предоставляет API для непосредственного управления новым конвейером преобразования цвета во время выполнения. Вместо этого приложение обращается к конвейеру, написав правильно отформатированный профиль цвета международного консорциума цветов (ICC) с дополнительными данными, хранящимися в новом закрытом теге "Калибровка оборудования Майкрософт" (MHC2). Это аналогичная модель существующего конвейера гамма-пандуса , который использует частные теги ICC "VCGT". Профили ICC с допустимыми данными тегов MHC2 называются "Профили MHC ICC" или "Профили MHC".

Примечание.

MHC2 ссылается на вторую версию закрытого тега, которая доступна для всех устройств Windows 10 версии 2004; MHC1 поставляется в более ранней версии Windows с определенными ПК OEM.

Дополнительные статические метаданные ST.2086 HDR

Помимо программирования нового конвейера преобразования цветов, профили MHC ICC также содержат статические метаданные HDR ST.2086. Это значения, описывающие динамический диапазон дисплея (светимость) и цветовую гамму. Они широко реализованы с помощью дисплеев HDR, но полезны для любого дисплея. Значения качества производительности:

  • Пиковая светимость (ниты)
  • Максимальное количество полного кадра (ниты)
  • Min luminance (nits)
  • Основные значения цветов RGB (координаты xy)
  • Белая точка (координаты xy)

Белые точки, максимальное значение света в полной рамке и основные элементы цветов RGB описаны с помощью стандартных тегов ICC. Пиковая и минимальная светимость описаны в теге MHC2. Профиль должен содержать все эти сведения для ОС, чтобы принять профиль и использовать его для сценариев расширенного цвета.

Windows рационализирует метаданные ST.2086 из нескольких источников, включая профиль MHC ICC, графический драйвер и встроенное ПО EDID или DisplayID. Профили MHC ICC рассматриваются как самый надежный источник и переопределяют другие источники. Windows предоставляет эти сведения через API-интерфейсы возможностей HDR, как описано в разделе "Использование DirectX с расширенным цветом" на дисплеях с высоким или стандартным динамическим диапазоном. Таким образом, приложения HDR получают наилучшие доступные сведения о отображении HDR.

Определение светимости ST.2086 для настраиваемых индикаторов заднего света

Дисплей может иметь настраиваемый задний свет, например контролируемый пользователем или контролируемый автоматически датчиком внешнего света. Это представляет неоднозначность того, как следует интерпретировать значения света ST.2086.

Для отображения, где Windows имеет контроль над задним светом (как правило, для ноутбуков и интегрированных панелей), значения света должны описать, когда этот управляемый ОС задний свет находится в максимальном или ярком параметре.

Для отображения, где Windows не имеет контроля над задним светом (как правило, для внешних мониторов), значения света точны только для состояния отображения во время измерения.

Требования к профилю ICC

Профиль MHC ICC должен использовать спецификацию 2 (ICC.1:2001-04) или версию 4 (ICC.1:2010-12/ISO 15076-1:2010)). Профиль MHC ICC должен быть профилем устройства отображения.

Профиль MHC ICC может включать данные конвейера преобразования цвета. Части структуры MHC2, определяющие преобразование цвета, могут быть пустыми, которые явно указывают на преобразование удостоверения.

Профиль MHC ICC должен содержать метаданные ST.2086. Профиль, содержащий только метаданные ST.2086, и данные преобразования не используются для сценариев калибровки отображения HDR. В этом случае калибровка HDR означает более точные минимальное или максимальное значение яркости и цветовой гаммы для приложений и игр HDR.

Повторное использование существующих общедоступных тегов

Профили MHC ICC используют существующие общедоступные теги для определения некоторых значений метаданных ST.2086. Все эти теги уже необходимы для отображения профилей устройств. Определения тегов и типов данных можно найти в спецификациях ICC.

Имя тега Тип данных Значение ST.2086 Единица, сообщаемая Windows
redColorantTag XYZNumber Красный первичный Chromaticity (xy)
greenColorantTag XYZNumber Зеленый первичный Chromaticity (xy)
blueColorantTag XYZNumber Синяя первичная Chromaticity (xy)
mediaWhitePointTag XYZNumber Белая точка Chromaticity (xy)
luminanceTag XYZNumber Максимальное количество полнокадрового света Luminance (nits)

Определение частного тега "MHC2"

Профиль MHC ICC должен содержать одну структуру тегов MHC2. Матрица и элементы преобразования цвета 1DLUT могут иметь значение 0 (NULL), которые явно указывают на преобразование удостоверения для соответствующего этапа. Значения метаданных ST.2086 должны быть заполнены допустимыми данными.

Позиция байтов Длина поля (байты) Содержимое Тип данных
От 0 до 3 4 Подпись типа MHC2 (4D484332h) MHC2Type
4 - 7 4 Смещение до начала элемента данных тега uInt32Number
От 8 до 13 4 Размер элемента данных тега uInt32Number

Определение структуры MHC2Type

Позиция байтов Длина поля (байты) Содержимое Тип данных
От 0 до 3 4 Подпись типа MHC2 (4D484332h)
4 - 7 4 Зарезервировано, задайте значение 0
От 8 до 11 4 Число записей 1DLUT (4096 или меньше) [1]
НЕОБЯЗАТЕЛЬНО: 0 = Преобразование удостоверений
uInt32Number
От 12 до 15 4 ST.2086 min luminance в нитах S15Fixed16Number
От 16 до 19 4 ST.2086 пиковая светимость в нитах S15Fixed16Number
От 20 до 23 4 Смещение в байтах в матрицу [2]
НЕОБЯЗАТЕЛЬНО: 0 = Преобразование удостоверений
uInt32Number
От 24 до 27 4 Смещение в байтах до красного 1DLUT [2] uInt32Number
От 28 до 31 4 Смещение в байтах на зеленый 1DLUT [2] uInt32Number
От 32 до 35 4 Смещение в байтах до синего 1DLUT [2] uInt32Number

[1] ОС интерполяет данные в количество поддерживаемых оборудованием записей.

[2] Смещения в структуре MHC2Type относятся к началу структуры, а не к файлу.

Определение матрицы

Позиция байтов Длина поля (байты) Содержимое Тип данных
От 0 до 47 48 3x4 XYZ в матрицу корректировки XYZ
хранящийся в основном порядке строк, столбец 4 игнорируется [1]
s15Fixed16Number

[1] Структура матрицы имеет размер для 12 элементов для матрицы 3x4 в основном порядке строк. Однако Windows использует только данные из левых трех столбцов, эффективно определяя матрицу 3x3. Например, хранение этих 12 значений в линейном порядке:

[a, b, c, 0, d, e, f, 0, g, h, i, 0]

создает следующую матрицу:

Первый столбец Второй столбец Третий столбец
a б c
d e f
g ч i

Примечание.

Как описано в матрице преобразования цветового пространства, не включайте исходный RGB в XYZ или XYZ для целевых преобразований матриц RGB, так как они обрабатываются драйвером автоматически. Целевой RGB определяется как кодировка, используемая при передаче цветов по проводу отображения; Обычно первичные базы BT.709 или BT.2020.

Определение 1DLUT

Позиция байтов Длина поля (байты) Содержимое Тип данных
От 0 до 3 4 Подпись типа 'sf32' (73663332h)
4 - 7 4 Зарезервировано, задайте значение 0
8 до конца Переменная (от 0 до 16384) Значения калибровки LUT нормализованы по [0.0, 1.0] s15Fixed16Number

Примечание.

Как описано в целевой reGamma, этот LUT работает в цветовом пространстве формата провода после кодирования функции передачи.

Примечание.

Если измерения или кривая калибровки требуют меньше 4096 записей LUT, сохраните только количество записей, которые вам нужны, и укажите количество в структуре MHC2Type. Например, для простейших удостоверений LUT требуется только две записи, равные 0.0 и 1.0. ОС будет интерполировать количество аппаратных записей, поддерживаемых оборудованием.

Новые API управления профилями ICC

Примечание.

Инструкции в этом разделе относятся к любому профилю ОТОБРАЖЕНИЯ, независимо от того, содержит ли он данные MHC.

После создания профиля MHC ICC вы подготавливаете его в системе Windows для целевого дисплея. В более ранних версиях Windows для этого можно использовать функции управления профилями Windows Color System (WCS). Несмотря на то что вы можете продолжать использовать эти существующие API, Windows 10 версии 2004 добавляет набор новых, модернизированных API в WCS, которые специализированы для управления отображаемыми профилями цвета ICC. Эти API-интерфейсы имеют префикс "ColorProfile":

  • ColorProfileAddDisplayAssociation
  • ColorProfileRemoveDisplayAssociation
  • ColorProfileSetDisplayDefaultAssociation
  • ColorProfileGetDeviceCapabilities

Примечание.

Приведенный выше API предоставляет функциональные возможности, для которых не существует эквивалентного API WCS.

  • ColorProfileGetDisplayList
  • ColorProfileGetDisplayDefault
  • ColorProfileGetDisplayUserScope

Типичный рабочий процесс с помощью API ColorProfile для подготовки профиля MHC ICC в системе:

  1. Используйте ColorProfileGetDeviceCapabilities , чтобы определить, поддерживает ли система новый конвейер преобразования цветов. Даже если это не так, может оказаться полезным подготовить профиль для предоставления дополнительных метаданных ST.2086.
  2. Используйте InstallColorProfile (существующий API WCS) для установки цветового профиля. Это добавляет профиль в список профилей, доступных для использования в системе.
  3. Используйте ColorProfileGetDisplayUserScope , чтобы определить, переопределяет ли пользователь Windows сопоставления профилей по умолчанию и использует собственные списки связей для каждого пользователя.
  4. Используйте ColorProfileAddDisplayAssociation , чтобы связать цветной профиль с дисплеем (сделать установленный профиль доступным для этого отображения) и при необходимости задать профиль как стандартный (текущий активный профиль).

Расширенный загрузчик калибровки для windows

Windows предложила загрузчик калибровки цветов в папке "Входящие" с Windows 7. Этот загрузчик калибровки поддерживает чтение профилей ICC с данными конвейера гамма-пандуса , хранящимися в тегах профиля VCGT или MS00. Гамма-загрузчик должен быть явно включен путем вызова WcsSetCalibrationManagementState.

Windows 10 версии 2004 улучшает загрузчик калибровки в папке "Входящие", добавив поддержку профилей MHC ICC и новый конвейер преобразования цветов. Написание и подготовка профиля MHC ICC и применение загрузчика Windows — единственный метод для приложений для доступа к конвейеру преобразования цвета: api прямого доступа отсутствуют. В отличие от профилей гамма-пандуса , чтение из профилей MHC ICC всегда включено, поэтому после установки профиля MHC ICC в качестве значения по умолчанию в системе с поддержкой его состояние калибровки автоматически загружается.

Сценарии HDR и расширенных цветов с автоматическим управлением цветами системы

Новые технологии расширенного цвета, такие как HDR и автоматическое управление цветами, добавляют новые возможности в Windows, включая более высокую точность цвета и доступ к гораздо большему цвету gamuts; Дополнительные сведения см. в разделе "Использование DirectX с расширенным цветом" на дисплеях динамического диапазона высокого или стандартного уровня.

Расширенное управление цветами и автоматическое управление цветами обеспечивает согласованность и точность цвета цветов для всех приложений: устаревших и современных. Однако некоторые приложения могут выполнять собственное явное управление цветами с помощью профилей цветов международного консорциума цветов (ICC).

Если расширенный цвет активен на экране SDR или HDR, поведение профилей отображения ICC изменяется в способах, не совместимых с обратной стороной. Если приложение работает с профилями ICC, Windows предлагает поведение совместимости, чтобы убедиться, что ваше приложение продолжает получать правильное поведение.

Сведения об изменениях поведения профиля ICC и способах адаптации приложения к максимальной совместимости с расширенным цветом см . в статье о поведении профиля ICC с расширенным цветом.