Схема и алгоритмы схемы профиля модели карт гаммы WCS
- Обзор
- Архитектура профиля модели карты гамутов
- Создание границы Gamut
- Схема GMMP
- Элементы схемы GMMP
- GamutMapModel
- Базовые алгоритмы GMMP
- Выравнивание нейтральных осей
- Описание границ gamut и алгоритмы оболочки Gamut
- Триангуляция границы Гамут
- Элементы линии границ
- Операция gamut: CheckGamut
- Full Hue Plane: Intersect
- Операция gamut: CheckGamut (продолжение)
- Минимальное сопоставление цветовой гаммы
- Hue Smoothing
- Задание первичных и вторичных файлов в описании границ gamut
- Задание нейтральной оси в описании границы гамюта
- Связанные статьи
Обзор
Эта схема используется для указания содержимого профиля модели карты гаммы (GMMP). Связанные базовые алгоритмы описаны в следующем разделе.
Базовая схема GMMP состоит из общих сведений о заголовке, необязательной ссылки на предпочтительный подключаемый модуль модели карты Gamut и теги расширений.
Кроме того, GMMP предоставляет явные сведения о целевой модели карты Gamut и предоставляет политику в базовой резервной модели карты Gamut Map для использования, если целевая модель недоступна. Схема может включать в себя частные сведения расширения, но не будет содержать других дополнительных сведений.
Архитектура профиля модели карты гамутов
Выборка цветового пространства устройства вывода выполняется путем итерации цветов с 0,0 до 1.0 с дробным шагом, накапливая все сочетания каждого цветового элемента на каждом шаге, а затем преобразовывать их из цветового пространства устройства в цветовое пространство с помощью метода DM::D eviceToColorimetricColors, за которым следует метод CAM::ColorimetricToAppearanceColors. Ниже приведен пример того, как это делается для RGB.
For (red= 0.0; red <= 1.0; red += redStep) {
For (green = 0.0; green <= 1.0; green += greenStep) {
For (blue = 0.0; blue <= 1.0; blue += blueStep) {
Colorants[0] = red; colorants[1] = green; colorants[2] = blue;
pRGBDM->DeviceToColorimetricColors(1, colorants, &XYZ);
pCAM->ColorimetricToAppearanceColors(1, &XYZ, &JCh);
}
}
}
Создание границы Gamut
Существует три компонента границы гаммы: первичные, нейтральные образцы и оболочки. Первичные экземпляры создаются путем принятия первичных устройств и применения преобразования DeviceToColorimetric/ColorimetricToAppearance. Нейтральные образцы создаются путем выборки цветового пространства устройства в нейтральной области и применения того же преобразования. Для трех цветных устройств (RGB или CMY) нейтральные образцы определяются как имеющие все цветные равенства, например R == G == B. Для CMYK нейтральные примеры определяются как C == M == Y == Y == 0.
Факторы, влияющие на данные, используемые для создания границы гаммы, — это примеры данных (только базовые устройства) и условия просмотра. Размер шага, используемый для выполнения полной выборки цветового пространства (для мониторов и для правдоподобной оболочки), является внутренней константой и недоступен для внешней манипуляции. Изменение условий просмотра изменяет поведение модели внешнего вида цвета (CAM) и изменяет форму границы гаммы, поэтому необходимо создать границу гаммы, привязанную к профилю условий просмотра. Если используются примеры данных, как и в случае базовых принтеров и устройств захвата, то образцы будут иметь большое влияние на форму эталонной гаммы и повлиять на поведение самой модели.
Для устройств ввода, таких как камеры и сканеры, для создания эталонной оболочки и правдоподобной оболочки используются различные выборки. Эталонная оболочка создается из измерений, используемых для инициализации модели устройства. Правдоподобная оболочка создается аналогично предыдущей иллюстрации для выходных устройств. Разница в том, что при вводе типичного целевого объекта вы не получаете полностью насыщенных значений (где R, G или B = 255). Для оценки этих значений необходимо экстраполировать с помощью модели устройства.
Схема GMMP
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:gmm="http://schemas.microsoft.com/windows/2005/02/color/GamutMapModel"
xmlns:wcs="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes"
targetNamespace="http://schemas.microsoft.com/windows/2005/02/color/GamutMapModel"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
blockDefault="#all"
version="1.0">
<xs:annotation>
<xs:documentation>
Gamut Map Model profile schema.
Copyright (C) Microsoft. All rights reserved.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes" />
<xs:element name="GamutMapModel">
<xs:complexType>
<xs:sequence>
<xs:element name="ProfileName" type="wcs:MultiLocalizedTextType"/>
<xs:element name="Description" type="wcs:MultiLocalizedTextType" minOccurs="0"/>
<xs:element name="Author" type="wcs:MultiLocalizedTextType" minOccurs="0"/>
<xs:element name="DefaultBaselineGamutMapModel">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="HPMinCD_Absolute"/>
<xs:enumeration value="HPMinCD_Relative"/>
<xs:enumeration value="SGCK"/>
<xs:enumeration value="HueMap"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="PlugInGamutMapModel" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##other" processContents="skip"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="GUID" type="wcs:GUIDType" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ID" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:schema>
Элементы схемы GMMP
GamutMapModel
Этот элемент представляет собой последовательность следующих вложенных элементов:
- Строка ProfileName,
- DefaultBaselineGamutMapModel,
- Необязательная строка описания,
- Необязательная строка "Автор",
- Необязательный подключаемый модуль PlugInGamutMap и
- Необязательный тип extensionType.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
Пространство имен
xmlns:gmm="http://schemas.microsoft.com/windows/2005/02/color/GamutMapModel"
targetNamespace="http://schemas.microsoft.com/windows/2005/02/color/GamutMapModel"
Версия
Версия 1.0 с первым выпуском Windows Vista.
Условия проверки: 1.0 в Windows Vista. <Версии 2.0 также допустимы для поддержки некрикционных изменений в формате.
Документация
Схема профиля модели карты Gamut.
Корпорация Майкрософт(C). Все права защищены.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
Тип DefaultBaselineGamutMapModel
Тип UINT
Значения перечисления:
- "MinCD\_Absolute" "MinCD\_Relative" "SIG\_KNEE" "HueMap"
Условия проверки: значения должны соответствовать одному из перечисленных выше перечислений.
PlugInGamutMapType
Этот элемент представляет собой последовательность GUID GUIDType и всех вложенных элементов.
Условия проверки: ИДЕНТИФИКАТОР GUID используется для сопоставления GUID DLL подключаемого модуля GMM. Существует не более 100 000 пользовательских вложенных элементов.
ExtensionType
Этот элемент является необязательной последовательностью всех вложенных элементов.
Условия проверки: может быть не более 100 000 вложенных элементов.
Базовые алгоритмы GMMP
Выравнивание нейтральных осей
Большинство алгоритмов сопоставления гаммов имеют цель сопоставления нейтральной оси исходного устройства с нейтральной осью целевого устройства: то есть белый переходит к белому, черному и черному и серого с серым. Это рассматривается частично путем масштабирования легкости исходных цветов, чтобы соответствовать диапазону света целевого устройства. Но это не полностью решает проблему.
Это физическое свойство большинства устройств для визуализации, что хроматичность белого устройства не точно соответствует хроматисти устройства черного цвета. Например, монитор белый зависит от суммы хроматичности и относительных свечений трех первичных элементов, а монитор черный зависит от отражения поверхности дисплея. Белый принтер зависит от хроматисти бумаги, а черный принтер зависит от рукописного или тонера, используемого. Модель внешнего вида, которая сопоставляет устройство белым точно с нейтральной осью пространства внешнего вида (chroma точно равно нулю), не сопоставляет устройство черным с нейтральной осью. Так как глаз более чувствительны к различиям хрома по мере увеличения легкости, середина серых будет представлена как еще более хроматичная, чем черный. (Рис. 1 иллюстрирует кривизну нейтральных осей в двух измерениях. На самом деле нейтральные оси образуют более сложную кривую в трех измерениях.)
Хотя CAM прогнозирует, что эти нейтральные цвета устройства будут отображаться хроматичными, фактические наблюдатели, кажется, компенсируют это. Большинство людей не считают эти нейтральные значения устройства хроматичными. Поэтому для большинства моделей сопоставления гаммов следует продолжать сопоставлять исходные нейтральные данные с нейтральными устройствами.
Чтобы сопоставить исходные нейтральные значения с нейтральными устройствами, настройте границы исходной и целевой гаммы и каждый пиксель при применении алгоритма сопоставления гамм. Сначала настройте каждое значение в исходном цвете, чтобы ось исходного устройства на нейтральной оси исходного цвета упала непосредственно на нейтральной оси пространства внешнего вида. (См. левую сторону рис. 1.) Затем настройте описание границы гаммы конечного устройства таким образом, чтобы каждый цвет на нейтральной оси конечного устройства на гамме границы цвета границы конечного устройства падал непосредственно на нейтральной оси пространства внешнего вида. (См. правую сторону рис. 1.)
Рис. 1 . Выравнивание нейтральных осей, иллюстрированных. Слева: настройка точек источника относительно нейтральной оси исходного устройства. Справа: настройка описания границы гаммы назначения относительно описания границы конечной гаммы.
Обратите внимание, что каждое исходное значение пикселя зависит от нейтральной оси при этом значении света. Это гарантирует, что исходные устройства нейтрализуются на нейтральной оси модели внешнего вида. Вы также сдвигаете все остальные цвета на то же самое количество, чтобы не было разрывов в представлении исходной гаммы. Вы должны перемещаться по разным значениям на разных уровнях света, так как исходные устройства нейтральные не представлены как равные хроматические на разных уровнях света. Очевидно, что это не тривиальное преобразование.
Обработка значений целевого устройства немного сложнее. Изначально вы настраиваете всю границу гаммы назначения аналогичным образом, но относительно оси конечного устройства. Это иллюстрируется на рисунке 1 справа. Эта корректировка гарантирует, что исходные серые значения будут сопоставляться с целевыми серыми значениями. Это пространство, в котором работают алгоритмы сопоставления гамм.
Однако это пространство не точно описывает истинное поведение целевого устройства. Необходимо изменить сопоставление, прежде чем сопоставляемые цвета гаммы передаются модели внешнего вида и целевой модели устройства. Вы смещаете все сопоставленные значения противоположностью смещения, примененного ранее к целевой оси устройства. Это сопоставляет нейтральную ось назначения обратно со значением, представленным первоначально CAM. Он выполняет то же самое для границы гаммы и всех промежуточных значений.
Рис. 2 . Отмена выравнивания нейтральной оси конечного устройства
Минимальное различие цветов (MinCD)
Минимальная разница в цвете (MinCD) Относительные и абсолютные версии , эквивалентные намерению метрики ПАРАМЕТРОВ ICC.
Примечание.
MinCD GMM подходит для сопоставления графических и линейных рисунков, содержащих цвета логотипа (точечные цвета), градиенты цвета логотипа с некоторыми внегамными цветами, а также для окончательного этапа преобразования проверки правописания. Хотя MinCD GMM может использоваться для фотографических изображений, которые полностью находятся в гамме назначения, не рекомендуется для общей отрисовки фотографий. Сопоставление цветов из гаммы с цветами на целевой поверхности гаммы может привести к нежелательным артефактам, таким как тон или хрома неровности в гладких градиентах, пересекающих границу гаммы. BasicPhoto рекомендуется для фотографических изображений. Если для фотоснимка или контонного изображения требуется сопоставление гамм, отличное от BasicPhoto, вместо minCD следует создать подключаемый модуль GMM, реализующий это сопоставление.
Цвета в гамме остаются неизменными. Для цветов вне гамма, легкости и хромы корректируются путем поиска точки в целевой гамме, которая имеет минимальное расстояние от исходящих входных точек. Расстояние цвета вычисляется в пространстве JCh. Тем не менее, вы весите расстояние в светлости (J) и расстояние в chroma (C) или оттенок (ч) по-другому. Функция веса, зависящая от хрома, используется для расстояния в легкости, чтобы вес был меньше для небольшого хрома и большего размера для большого хрома до достижения порогового хрома, после чего вес остается на 1, то есть тот же вес, что и расстояние в chroma или оттенке. В этом случае рекомендуется использовать CMC и CIEDE2000. Существует два варианта: относительная цветовая метрика и абсолютная цветовая метрика.
Относительная цветовая метрика: сначала выровняйте исходные и конечные нейтральные оси, как описано ранее. Затем закрепите отрегулированный цвет источника на скорректированную границу гаммы назначения. (См. рис. 4. Сопоставление Chroma вдоль постоянной легкости.) Переопределите значения целевого устройства, как описано ранее. В случае границы гаммы монохромного назначения вырезка хрома означает, что значение chroma (C) равно нулю (0,0).
Абсолютная цветовая метрика: это похоже на относительную цветовую метрику, но без выравнивания исходной и целевой нейтральной оси. Исходное значение обрезается непосредственно к целевой нейтральной оси. Обратите внимание, что если границы исходной и целевой гаммы являются монохромными, поведение идентично относительному варианту цветовой метрики; То есть выполняется выравнивание нейтральных осей, а затем chroma обрезается до нуля. Это гарантирует, что разумный результат достигается даже в том случае, если носители и цвета значительно отличаются.
Рис. 3 . Вырезка MinCD к скорректированной гамме
BasicPhoto
Обзор
BasicPhoto — эквивалент предпочтительным, пикториальным или скептиальным намерениям ICC.
Этот алгоритм является вариантом сопоставления сигмоидальной светлости, зависящей от хрома и масштабирования колена (SGCK), описанного CIE TC8-03 в CIE156:2004. Этот алгоритм варианта поддерживает дескрипторы границы гаммы (ГБD) с двумя оболочками гаммы; то есть ГБД с эталонной оболочкой и правдоподобной оболочкой. Алгоритм SGCK, который изначально предполагает только одну оболочку гаммы в ГБD, основан на алгоритме SIG_KNEE (Braun 1999), который включает сопоставление сигмоидальной светлости и масштабирование функций колена, предлагаемое Брауном и Fairchild (1999), в сочетании с зависимостью хрома от GCUSP (Морович, 1998). Он сохраняет воспринимаемую константу оттенка, например, угол оттенка в хью-исправленном Jab, и использует универсальное (независимое от изображения) сигмоидальное масштабирование, которое применяется в хрома-зависимый способ и 90 процентов функции колена chroma. Вариант масштабируется по линиям постоянной легкости.
Случай одной оболочки гаммы
Рекомендуется проверить алгоритм в том случае, если оба исходных и целевых ГБД имеют только одну оболочку гаммы. В этом случае алгоритм состоит из следующих вычислений.
Сначала выполните сопоставление начальной легкости с помощью следующей формулы:
(1);
где Jₒ является исходной светлостью, и JR является воспроизведение света.
(2);
Если граница исходной гаммы является монохромной, значение chroma будет равно нулю для границы монохрома из-за выравнивания нейтральной оси. Это приведет к вырождению случая, когда C равно нулю. В этом случае pC имеет значение 1.
pC — это хромозависимый фактор весового коэффициента (Морович, 1998), который зависит от хрома исходного цвета, C и JS являются результатом первоначальной светлости, сопоставленной с помощью сигмоидальной функции.
Для вычисления JS (Braun и Fairchild, 1999), одномерная таблица подстановки (LUT) между исходными и значениями света воспроизведения сначала настраивается на основе дискретной накопительной нормальной функции (S).
(3);
где x ₀ и S являются средним и стандартным отклонением нормального распределения соответственно и i = 0,1,2... m,m — это количество точек, используемых в LUT. Si — это значение совокупной нормальной функции для i /m percent. Параметры зависят от легкости черной точки гаммы воспроизведения и могут быть интерполированы из таблицы 1. Дополнительные сведения о вычислении этих параметров см. в статье Braun и Fairchild (1999, p. 391).
J minOut
5,0
10.0
15,0
20,0
x ₀
53,7
56.8
58.2
60.6
S
43.0
40,0
35,0
34,5
Таблица 1 . Вычисление параметра сжатия легкости BasicPhoto
Чтобы использовать S в качестве сопоставления легкости LUT (S LUT ), сначала его необходимо нормализовать в диапазон легкости [0,100]. Затем нормализованные данные масштабируются в динамический диапазон целевого устройства, как показано в уравнении 4, где Jmin\ Out и Jmax\ Out — это значения легкости черной точки и белой точки воспроизведения среды соответственно.
(4);
На этом этапе значения J S можно получить из S LUT путем интерполяции между точками m соответствующих значений J O и J S, которые он содержит, и используя следующее уравнение в качестве входных данных.
(5)
J minIn — это значение светлости черной точки исходного среднего, J maxIn — это значение светлости исходной среды, а J O — исходное светлое значение. Для последующей ссылки можно указать S сигмоидальной функцией, определенной только что описанным образом, как показано на следующем рисунке 4.
Рис. 4 . Сопоставление Chroma вдоль постоянной легкости
Во-вторых, если граница конечной гаммы является хроматической, сжимайте хрома вдоль линий константной легкости (l) и выполните сжатие следующим образом.
(6)
где d представляет расстояние от E на l;g представляет границу средней гаммы; r представляет воспроизведение; и о исходном рисунке 5.
Рис. 5 . Сжатие Chroma и легкости в BasicPhoto
Если граница конечной гаммы является монохромной, то значение chroma обрезается до нуля.
В-третьих, используйте клип MinCD (описанный ранее), чтобы устранить любую остатточную ошибку.
Черное улучшение
Предыдущий алгоритм можно изменить, чтобы улучшить черный цвет, когда назначение является устройством принтера. Проблема связана с выбором JminOut, который обычно не соответствует темному цвету принтера.
В частности, цвет с высокой плотностью, полученный путем размещения 100 процентов чернил (или максимально возможного покрытия, если ограничение GCR/рукописного ввода действует), обычно не является "нейтральным" в пространстве внешнего вида цвета. См. рисунок 6. Другими словами, если для целевого устройства используется нейтральная минимальная освещенность, то шкала света, созданная, будет соответствовать минимальной легкости, которая не является самой высокой плотностью, которую можно достичь принтером. Рассмотрим дополнительный вариант использования монитора для принтера. Затем монитор черный, R=G=B=0, будет напечатан как не самая высокая плотность. Влияние на качество изображения заключается в отсутствии глубины и контрастности.
Рис. 6 . Черная точка устройства может быть темнее, чем нейтральный минимальный свет.
Предположим, что целевой объект "black point" — Jkakbk/JkCkh k. Если C k не равен нулю, то черная точка устройства не является нейтральной относительно CAM02. Если вы используете J k для назначения "нейтральное минимальное освещение" в построении шкалы света; то есть, параметр
J minOut = Jk
и примените его к исходной оболочке гаммы, вы получите конфигурацию, показанную на рис. 7. На рисунке плоскость оттенка соответствует h k.
Рис. 7 . Геометрия с помощью измененного масштабировщика легкости с черной точкой конечного устройства
Чтобы обеспечить продолжение последующего алгоритма сжатия хрома, необходимо выровнять максимальное и минимальное освещение в исходных и целевых оболочках. Это можно сделать, изменив целевую оболочку между J neutralMin и J k, переместив точки влево. Кроме того, это преобразование должно быть применено ко всему пространству Jab, а не только плоскости оттенка, соответствующего h k.
Преобразование выполняется
На рисунке 8 показан эффект преобразования.
Рис. 8 . Геометрия с помощью измененного масштабировщика света с конечной точкой устройства
После применения обычного алгоритма сжатия хрома точка должна быть "смещена назад", т. е. для получения окончательного сопоставленного цвета необходимо применить обратное преобразование.
Случай двойной оболочки гаммы
Цель состоит в том, чтобы обобщить SIG_KNEE для одной оболочки гаммы в случае, когда исходный устройство ГБД или целевое устройство GBD имеет структуру двух оболочки. Внутренняя оболочка будет называться эталонной оболочкой, а внешняя оболочка будет называться Правдоподобной оболочкой. Вы хотите рассмотреть следующие случаи.
(a) Исходный ГБD и целевой ГБD имеют структуру двух оболочки.
(b) Исходный ГБД имеет структуру двух оболочки; Целевой ГБД имеет только одну оболочку.
(c) Исходный ГБД имеет только одну оболочку; Целевой ГБД имеет структуру двух оболочки.
(d) Исходный ГБD и целевой ГБD имеют только одну оболочку.
Случай (d) — это случай одной оболочки гаммы, которая была рассмотрена ранее. В случаях (a), (b) и (c) можно обобщение изменения легкости для использования дополнительных сведений из структуры двойной оболочки. В случаях (b) и (c), где источник или назначение имеет только одну оболочку, введите "индуцированную эталонную оболочку", которая будет обсуждаться в следующем разделе "Индуцированная справочная оболочка". Общий алгоритм для двух оболочк будет описан для случая (a). После того как будет описано создание индуцированной эталонной оболочки, алгоритм можно применить к регистру (b) и (c), а также. Что касается сжатия хрома, коэффициент сжатия будет определяться крупнейшими доступными оболочками. Иными словами, если доступны как правдоподобные оболочки, так и эталонная оболочка, будет использоваться правдоподобная оболочка; в противном случае будет использоваться эталонная оболочка.
Обобщенное изменение масштабирования легкости
Существование двух оболочк для исходного и целевого ГБD означает, что необходимо сопоставить набор из четырех точек из исходного ГБД с соответствующим набором в целевом ГБD.
Подстроки имеют следующие значения.
o или r: "original" (source) или "репродуцирование" (назначение)
min или max: минимальная нейтральная светность или максимальная нейтральность света
pla или ref: Правдоподобная оболочка или эталонная оболочка
Порядок в каждом четырехкратном порядке также является ожидаемым относительным величиной этих точек.
В схеме lightness Rescaling используются те же первые два уравнения, что и одна оболочка, но J S определяется по кускам так же, как показано ниже.
(7)
Другими словами, он сигмоидальный в эталонной оболочке и линейный вне. См. рис. 9.
Рис. 9 . Функция изменения размера света для двух оболочки ГБD
ИНДУЦИРОВАННАЯ ЭТАЛОННАЯ ОБОЛОЧКА
Если один ГБД имеет одну оболочку, а другой ГБД имеет две оболочки, необходимо создать "эталонную оболочку" для ГБD только с одной оболочкой. Существующая оболочка, которая будет называться эталонной оболочкой, будет изменена на "Правдоподобная оболочка". На самом деле, вам не нужно создавать оболочку в полном пространстве Jab. Так как изменение размера легкости использует только J max и J min, необходимо только создать эти значения для индуцированной справочной оболочки. Существует два случая, в зависимости от того, какой ГБД имеет две оболочки.
Случай 1. Исходный ГБД имеет две оболочки; В целевой ГБD есть одна оболочка.
Определение целевой индуцированной ссылочной оболочки на нейтральной оси; то есть J r,\ min,\ ref и J r,\ max,\ ref оболочки. Это делается с помощью следующего алгоритма.
Факторы? низкий и ? высокий контроль разделения между правдоподобной оболочкой и эталонной оболочкой. Значение 1 означает, что значения J min или J mₐₓ совпадают. Их значения являются "индуцированными" из исходной справочной оболочки и исходной правдоподобной оболочки.
"фюдж-факторы" низкий и F высокий являются настраиваемыми параметрами, которые должны лежать в диапазоне от 0 до 1. Если значение равно 0, то J min или J mₐₓ напрямую вызваны из исходных оболочк. В этом случае выберите F low = 0,95 и F high = 0,1.
Случай 2. Исходный ГБД имеет одну оболочку; В целевом ГБD есть две оболочки.
Определение исходной индуцированной ссылочной оболочки на нейтральной оси; то есть J o,\ min,\ ref и J,\ max,\ ref оболочки. Это делается с помощью следующего алгоритма.
Опять же, факторы? низкий и ? высокий контроль разделения между правдоподобной оболочкой и ссылочной оболочкой. Значение 1 означает, что значения J min или J mₐₓ совпадают. Их значения являются "индуцированными" из исходной справочной оболочки и исходной правдоподобной оболочки:
Причины изменений из рекомендаций CIE TC8-03
BasicPhoto отличается от рекомендаций CIE TC8-03 следующими способами.
- Chroma не сжимается к cusp, но вдоль линий постоянной легкости.
- Диапазон света использует светлость самого темного цвета в гамме, а не точку, в которой граница гаммы пересекает нейтральную ось.
- BasicPhoto поддерживает как эталонную оболочку гаммы, так и правдоподобную оболочку гаммы, если в преобразовании имеется две оболочки.
- BasicPhoto использует CIECAM02; вместо использования CIECAM97s для преобразования в D65 в 400 cd/m2, а затем с помощью цветового пространства RIT IPT.
Первое изменение было сделано, чтобы предотвратить проблемы инверсии тона, которые могут возникать при использовании сжатия к cusp. Как показано на рис. 10, сжатие cusp может привести к инверсии тона. Это может произойти, когда цвета высокого хрома светлее, чем цвета нижнего хрома. Так как SGCK сжимает каждый пиксель независимо как в светлости, так и в chroma, он не гарантирует сохранение связи легкости между значениями пикселей после сжатия. Хорошо известный недостаток этого решения о сжатие на линиях постоянной легкости заключается в том, что вы можете страдать потери хрома, в частности в районах, где граница гаммы назначения очень плоская, как и с ярко-желтыми.
Рис. 10 . Инверсия тона, вызванная SGCK
Рис. 11 . Исходный образ, результат SGCK и результат BasicPhoto
Рис. 11 иллюстрирует эту инверсию тона. Слева — это исходное изображение, записанное цифровой камерой; в центре изображения, воспроизводимого SGCK; и справа изображение, воспроизводимый BasicPhoto. Изображение слева находится в цветовом пространстве цифровой камеры, центральные и правые изображения находятся в цветовом пространстве дисплея LCD- видео. На исходном изображении верхняя часть чайного ложки темнее нижнего, потому что нижняя часть отражает скатерло, на котором она сидит. На изображении SGCK верхняя часть на самом деле светлее, чем нижняя, из-за инверсии тона. Кроме того, трудно увидеть элементы, отраженные в нижней части чайного ложки. Справа BasicPhoto исправил инверсию тона и отраженные статьи более четко различимы.
Второе изменение было сделано для улучшения воспроизведения почти черных цветов на принтерах, где самый черный не падает непосредственно на CIECAM02 нейтральной оси. На следующем рисунке 12 показан изображение, преобразованное в SRGB; воспроизводимый для принтера RGB inkjet с помощью SGCK; и воспроизводится для того же принтера с помощью BasicPhoto. Изображение в центре не использует полное устройство черное, и поэтому он не хватает контрастности, наблюдаемой в исходном. Контраст восстанавливается с помощью BasicPhoto.
Рис. 12 . Расширенный черный
Третье изменение было сделано для улучшения цветопродачи для цифровых камер. Особенно в тех случаях, когда цифровая камера профилирована с помощью эталонного целевого объекта, описание границы гаммы, созданное из измеренных цветов, может не включать все цвета, которые могут быть захвачены в реальной сцене. Вместо того, чтобы вырезать все цвета к гамму измеряемого целевого объекта цвета, вы можете получить экстраполяцию для создания правдоподобной границы гаммы. Алгоритм BasicPhoto предназначен для поддержки такой экстраполированной границы гаммы.
Четвертое изменение было сделано, так как CIECAM02 хорошо работает для сопоставления гамма. Процесс, рекомендуемый TC8-03 для преобразования цветов устройств в D65 в 400 cd/m2, а затем использование цветового пространства RIT IPT является интенсивным и трудоемким.
Сопоставление Hue
HueMap является эквивалентом намерения заполнения ICC.
Если исходная граница гаммы или граница конечной гаммы не содержит первичных элементов, эта модель отменить изменения к модели MinCD (относительной), описанной в предыдущем разделе, например устройства, для которых не удается определить первичные профили (профили ICC с более чем четырьмя каналами) или монохромные профили ICC.
Этот алгоритм сначала настраивает оттенок значения цвета ввода. Затем он одновременно корректирует легкость и хрома, используя сопоставление стрижирования. Наконец, он обрезает значение цвета, чтобы убедиться, что он находится в гамме.
Первым шагом является определение "Hue Wheel". Найдите значения JCh для первичных и вторичных цветов для исходного и целевого устройств. Вы рассматриваете только компоненты оттенка. Это приводит к первичному или вторичному цвету колесику с шестью цветовыми точками для каждого устройства. (См. рис. 13.)
Рис. 13 . Хью колеса
Лучшие результаты можно получить, если исходный синий первичный не поворачивается на целевой синий первичный. Вместо этого исходный синий первичный угол оттенка используется в качестве целевого синего первичного угла оттенка.
Затем выполните повороты оттенка для каждого цвета ввода из исходного изображения.
a)Используя угол оттенка входного цвета, определите расположение цвета на исходном колесике оттенка относительно двух смежных первичных или вторичных цветов. Расположение можно рассматривать как процент расстояния между праймериз. Например, входной цвет оттенка составляет 40 процентов от значения оттенка Magenta к значению красного цвета.
b)На целевом колесе оттенка найдите связанный угол оттенка, например, 40 процентов от Magenta до Red. Это значение будет угловым оттенком назначения.
Как правило, исходные первичные и вторичные файлы не будут находиться в одном и том же углу, что и конечные первичные и вторичные; то есть угол хьюза назначения обычно отличается от угла исходного оттенка.
Например, предположим, что колеса с оттенком создают следующие значения:
Источник M = 295 градусов, Источник R = 355 градусов.
Назначение M = 290 градусов, Назначение R = 346 градусов.
Если угол оттенка входного цвета равен 319 градусам, он составляет 40 процентов от угла (24 градусов) от источника M к источнику R. Угол от М до R составляет 60 градусов, а угол от M до входного оттенка составляет 24 градуса. Вычислите угол назначения, который составляет 40 процентов от назначения M до назначения R (22 градуса), поэтому угол оттенка целевого цвета составляет 312 градусов.
Затем вычислите эталонные точки для исходного оттенка и целевого оттенка. Чтобы вычислить эталонную точку hue для определенного значения h (hue), необходимо найти значение J (светлость) и значение C (chroma).
- Найдите значение J эталонной точки hue путем интерполяции между значениями J для смежных первичных или вторичных точек, используя относительное положение оттенка; например, 40 процентов в этом примере.
- Найдите максимальное значение C по этому значению J и h. Теперь у вас есть JCh эталонной точки hue для этого оттенка.
Рис. 14 . Лист оттенка (визуализация среза границы гаммы на определенном оттенке)
Следующим шагом является вычисление сопоставления шери для каждого пикселя. Во-первых, визуализировать лист оттенка из исходной гаммы для угла цвета источника, и оттенок листа от конечной гаммы для конечного оттенка угла, вычисленного во время поворота оттенка. Листья оттенка создаются путем принятия "среза" из поверхности границы JCh с определенным углом оттенка (см. рис. 14).
ПРИМЕЧАНИЕ. По соображениям оптимизации производительности листья хью не создаются; Они описаны и показаны здесь только для визуализации. Операции выполняются непосредственно на поверхности границы гаммы по указанному оттенку. Затем вычислите эталонные точки оттенка, чтобы определить сопоставление релей.
- Выполните перемасштабирование легкости, чтобы сопоставить черные и белые точки исходного листа с конечным листом (см. рис. 15). Черные и белые точки исходного оттенка листа сопоставляются линейно с черными и белыми точками конечного оттенка листа, масштабируя все координаты J исходной границы. Значение цвета, сопоставленное с оттенком, масштабируется таким же образом.
Рис. 15 . Сопоставление света
- Определите эталонные точки оттенка для каждого листа оттенка. Примените к исходному листу сопоставление реферала, чтобы исходные и конечные эталонные точки совпадали (см. рис. 16). Эталонная точка для гаммы на определенном оттенке — интерполированная точка ссылочного оттенка между смежными первичными. Эталонная точка исходного оттенка листа сопоставляется линейно с эталонной точкой конечного хьюя листа, используя операцию "стриж", которая блокирует ось J, сохраняя черные точки и белые точки настойке. Черные точки, белые точки и ссылочные точки исходного и целевого оттенков должны совпадать.
- Примените сопоставление стрижей к значению цвета ввода, настраиваемого светом. Координаты J и C исходного значения цвета пропорционально масштабируются относительно расстояния от оси J.
- Затем тонкое сжатие света, зависящее от хрома, в сторону J-значения эталонной точки хью выполняется на стриже сопоставленной цветовой точке. Сжатие по отношению к оттенок J делается в гамма-подобной моде, где белые, черные, серые и точки на оттенок ссылки J не затрагиваются. Все остальные точки, как правило, к оттенку ссылки J в гладкой форме, слегка куча вверх возле ссылки hue J, с chroma оставшейся константой. Зависимость хрома гарантирует, что нейтральные цвета не затрагиваются, и эффект увеличивается на цвета с более высоким chroma.
Ниже приведено математическое описание сжатия легкости по отношению к ссылке J или настройке значения J-значения конечной точки. Она называется конечной точкой, так как она была сопоставлена с целевой гаммой.
Во-первых, вычислить "factorC" (коэффициент зависимостей chroma) для конечной точки, которая определяет, сколько эффектов будет иметь сжатие легкости. Точки вблизи или на оси J будут иметь мало или нет сжатия; Точки дальше от оси J (высокая хрома) будут применяться больше сжатия. Умножьте на 0,5, чтобы гарантировать, что факторC меньше 1, так как возможно, что sourceC может быть немного больше, чем referenceC, но не в два раза больше.
factorC = (destinationC / referenceC) ? 0,5
где:
destinationC — это значение C-значения конечной точки.
referenceC — это значение C-value точки ссылки Hue.
Затем определите, указана ли целевая точка J выше или ниже ссылки на hue J. Если это выше, сделайте следующее:
Вычисление "factorJ" для конечной точки относительно ссылки. Это значение factorJ будет находиться в диапазоне от 0 до 1 (0, если в referenceJ; 1, если значение maxJ).
factorJ = (destinationJ - referenceJ) / (maxJ - referenceJ)
где:
destinationJ — это J-значение конечной точки.
referenceJ — это J-значение эталонной точки hue.
maxJ — это максимальное J-значение гаммы.
Примените гамма-похожую функцию питания к factorJ, что приведет к сокращению коэффициента на определенное количество. В этом примере используется мощность 2 (квадрат). Вычитайте сокращенный коэффициентJ из исходного фактораJ и умножайте результат на общий диапазон J над основным справочникомJ, чтобы найти "deltaJ", который представляет изменение в J после сжатия легкости, но не включая зависимость хрома.
deltaJ = (factorJ - (factorJ ? factorJ ? factorJ)? (maxJ — referenceJ)
Примените факторC к deltaJ (чем выше chroma, тем больше эффект), и вычислить новое J-значение для конечной точки.
destinationJ = destinationJ - (deltaJ ? factorC)
Если J-значение для конечной точки находится ниже referenceJ, то выполняется аналогичное вычисление предыдущих шагов A-C, используя minJ вместо maxJ, чтобы найти диапазон в J для вычисления коэффициента J, и учитывая полярность операций "под ней".
factorJ = (referenceJ - destinationJ) / (referenceJ - minJ)
deltaJ = (factorJ - (factorJ ? factorJ ? factorJ)? (referenceJ — minJ)
destinationJ = destinationJ + (deltaJ ? factorC)
где:
minJ — это минимальное J-значение гаммы.
Chroma для входных точек цвета расширяется линейно (по возможности) вдоль константной светлости пропорционально максимальному значению хрома исходного и целевого гаммутов на этом оттенке и легкости. В сочетании с предыдущим сжатием хрома, зависящей от света, это помогает сохранить насыщенность, так как сопоставление реля с использованием ссылочных точек иногда приводит к чрезмерному сжатие исходной точки в chroma (см. рис. 16).
Рис. 16 . Сопоставление шеров, сжатие света к оттенок J и расширение хрома
Ниже приведено математическое описание процесса расширения хрома или корректировка значения C конечной точки. Она называется конечной точкой, так как она была сопоставлена с скользяшей и легкостью сжимается в целевой гамме.
Перед сопоставлением реша определите sourceExtentC (степень хрома в легкости и оттенке исходной точки).
После сжатия сдвига и легкости, преобразующего исходную точку в точку назначения, определите destExtentC (степень хрома в легкости и оттенке конечной точки).
Если источникExtentC больше destExtentC, корректировка хрома в точку назначения не требуется, и вы можете пропустить следующий шаг.
Настройте целевойC (chroma конечной точки), чтобы поместиться в пределах конечной области chroma на этом свете и оттенке.
destinationC = destinationC ? (destExtentC / sourceExtentC)
где:
destinationC — это целевая точка C-value.
sourceExtentC — это максимальное значение исходной гаммы в светлости и оттенке исходной точки.
destExtentC — это максимальное значение целевой гаммы в светлости и оттенке конечной точки.
Наконец, выполните вырезку расстояния mimum. Если цвет ввода с поворотом, светлость и сопоставленный с ней цвет ввода по-прежнему немного за пределами конечного гамма, закрепите его (переместите его) к ближайшей точке границы конечной гаммы (см. рис. 17).
Рис. 17 . Минимальное расстояние отсечения
Описание границ gamut и алгоритмы оболочки Gamut
Функция границы гаммы устройства использует подсистему модели устройства и аналитические параметры для получения границы цветового устройства, описанного как индексированный список вершин корпуса устройства. Корпус вычисляется по-разному в зависимости от того, работаете ли вы с аддитивными устройствами, такими как мониторы и проекторы, или субтрактивные устройства. Индексированные списки вершин хранятся в CIEJab. Структура индексированного списка вершин оптимизирована для аппаратного ускорения DirectX.
Этот подход имеет множество известных решений. Если вы ищете "выпуклый корпус DirectX" в Интернете, вы получаете более 100 хитов. Например, есть ссылка с 1983 года на эту конкретную тему (теория графики компьютеров и приложение, "Shiphulls, b-spline поверхности и cadcam", pp. 34-49) со ссылками, начиная с 1970 по 1982 год по теме.
Сбор точек можно определить из внешних доступных сведений следующим образом:
- Точки для эталонной оболочки для мониторов создаются с помощью выборки цветового куба в цветовом пространстве устройства.
- Точки для эталонной оболочки для принтеров и устройств записи получаются из примеров данных, используемых для инициализации модели.
- Точки для эталонной оболочки для scRGB и sRGB создаются с помощью выборки цветового куба для SRGB.
- Точки для правдоподобной оболочки для устройств захвата создаются с помощью выборки цветового куба в цветовом пространстве устройства.
- Точки для эталонной оболочки для проекторов создаются с помощью выборки многоугольника в кубе цвета в цветовом пространстве устройства.
- Точки для возможной оболочки для расширенных цветовых пространств динамического диапазона создаются с помощью выборки куба цвета в самом пространстве.
Вы можете создать список вершин, который эффективно описывает цветовую диаграмму устройства, учитывая профиль устройства и службы поддержки системы.
Для выходных устройств граница гаммы описывает диапазон цветов, которые могут отображаться устройством. Граница гамма создается из одних и того же данных, используемых для моделирования поведения устройства. По сути, вы выводите выборку диапазона цветов, которые устройство может производить, измерять цвета, преобразовывать измерения в пространство внешнего вида, а затем использовать результаты для создания границы гаммы.
Устройства ввода являются более сложными. Каждый пиксель в входном изображении должен иметь некоторое значение. Каждый пиксель должен иметь возможность представлять любой цвет, найденный в реальном мире каким-то образом. В этом смысле цвета не являются "из гаммы" для устройства ввода, потому что они всегда могут быть представлены.
Все форматы цифровых изображений имеют определенный динамический диапазон. Из-за этого ограничения всегда есть некоторые различные стимулы, которые сопоставляют с тем же цифровым значением. Таким образом, невозможно установить сопоставление между реальными цветами и значениями цифровой камеры. Вместо этого граница гаммы формируется путем оценки диапазона реальных цветов, которые могут создавать цифровые ответы камеры. Вы используете этот предполагаемый диапазон в качестве гаммы для устройства ввода.
Основные элементы включаются для обеспечения сопоставления гаммы бизнес-графики.
В истинном объектно-ориентированном стиле вы абстрагируют базовое представление границы гаммы. Это позволяет изменять представление в будущем. Чтобы понять дескриптор границы гаммы (GBD), используемый в новом CTE, необходимо сначала понять, как работают алгоритмы сопоставления гамм (GMAs). Традиционно GMAs были разработаны для удовлетворения потребностей графического сообщества искусства; То есть для воспроизведения изображений, которые уже были правильно отрисованы для устройства, на котором был создан входной образ. Цель графических искусств GMAs заключается в том, чтобы сделать максимально возможное воспроизведение входного изображения на выходном устройстве. Новый CTE GBD предназначен для решения четырех ключевых проблем.
Так как входное изображение отрисовывается для устройства ввода, все цвета помещаются в диапазон между белой точкой среднего и черной точкой. Предположим, что изображение является фотографией сцены, в которой есть диффузный белый цвет, например человек в белой рубашке тюка, и зрителя, например свет отражающий от окна или хрома бампер. Сцена будет отрисовывается во входной среде, чтобы зрительную точку сопоставлялся с белой точкой среднего, а диффузный белый сопоставляется с каким-то нейтральным цветом темнее, чем белая точка среднего. Выбор способа сопоставления цветов из сцены с входной средой является как решением, зависящим от сцены, так и эстетическим решением. Если зеркальное выделение отсутствует из исходной сцены, то диффузный белый, вероятно, будет сопоставлен с белой точкой среднего. В сцене с большим количеством деталей выделения, больше диапазон будет оставлен между зеркальным белым и диффузным белым. В сцене, где выделение не является значительным, очень мало диапазона может быть оставлен.
Для предварительно отрисованных изображений сопоставление гаммы относительно просто. В основном, белая точка исходной среды сопоставляется с белой точкой воспроизведения, исходная черная точка сопоставляется с конечной черной точкой, и большая часть сопоставления завершена. Различные ГМК в существовании предоставляют варианты сопоставления других точек на шкале тонов исходного носителя и различных способов обработки значений хрома из гаммы. Но сопоставление белого с белым и черным на черное согласовано во всех этих вариациях. Эта реализация требует, чтобы белый цвет был выше J* от 50 и черных до J* от 50.
Не все кодировки цветов ограничивают диапазоны цветов для входных изображений. Стандартная кодировка цветов IEC (IEC 61966-2-2) предоставляет 16 бит для каждого из трех цветовых каналов красный, зеленый и синий (RGB). В этой кодировке ссылка черная не закодирована как rgb triple (0, 0, 0), но как (4096, 4096, 4096). Ссылочный белый кодируется как (12288, 12288, 12288). Кодировка scRGB может использоваться для представления зрителя и теневых деталей. Он включает rgb тройные, которые физически не возможны, потому что они требуют отрицательных объемов света, и кодировки, которые находятся за пределами спектрального локуса CIE. Очевидно, что ни одно устройство не может производить все цвета в гамме scRGB. На самом деле, никакое устройство не может производить все цвета, которые может видеть человек. Таким образом, устройства не могут заполнить гамму scRGB, и было бы полезно иметь возможность представлять часть гаммы, которую они делают заливкой. Каждое устройство имеет диапазон значений в пространстве scRGB, который он может производить. Это "ожидаемые" цвета для устройства; Это было бы удивительно для устройства, чтобы производить цвета за пределами этой гаммы. Существует определенное преобразование из пространства scRGB в пространство внешнего вида, поэтому каждое устройство также имеет диапазон значений внешнего вида, которые, как ожидается, будут воспроизводиться.
В scRGB и входных данных с устройств записи, характеризуемых фиксированным целевым объектом, можно получить значение за пределами диапазона ожидаемых значений. Если кто-то калибрует камеру в тестовую цель; а затем захватывает сцену с зрителями, могут быть пиксели, которые ярче, чем белая точка целевого объекта. То же самое может произойти, если естественное красное является более хроматичным, чем целевой красный. Если кто-то принимает изображение scRGB с устройства, а затем вручную изменяет цвета в изображении, можно создать пиксели, которые выходят за пределы ожидаемого диапазона гаммы устройства, даже если они находятся в полной гамме scRGB.
Во-первых, вторая проблема, по-видимому, не связана с этим. Возникает при использовании цветового целевого объекта для описания входного устройства, например камеры или сканера. Рефлексия целевые объекты обычно создаются на бумаге и содержат ряд цветных исправлений. Мануфатуры предоставляют файлы данных с измерениями цвета, принятыми при фиксированном условии просмотра для каждого исправления цвета. Средства профилирования цвета создают сопоставление между этими измеренными значениями и значениями, возвращаемыми датчиками цвета на устройствах. Проблема заключается в том, что часто эти целевые объекты цвета не охватывают полный диапазон значений устройства. Например, сканер или камера могут возвращать значение (253, 253, 253, 253) для эталонной белой точки, а эталонное красное исправление может иметь значение RGB (254, 12, 4). Они представляют диапазон ожидаемых значений для входного устройства на основе целевых значений. Если вы охарактеризуете входное устройство на основе ответов на целевой объект, то вы ожидаете только цвета в этом узком диапазоне. Этот диапазон не только меньше диапазона цветов, которые люди могут видеть, он меньше диапазона цветов, которые устройство может производить.
В обоих случаях трудно оценить гамму входного устройства или изображения, несмотря на существование эталонной гаммы или измерений. В первой проблеме правдоподобная гамма входного устройства меньше полной гаммы scRGB. Во второй проблеме эталонная гамма целевого объекта меньше, чем полная возможная гамма входного устройства.
Третья проблема связана с сопоставлением тонов. Многие модели границ гамма, которые могут адекватно представлять предварительно отрисованные изображения, используемые в графическом искусстве, были предложены, например, дескриптор границы Braun и Fairchild Mountain GBD (Braun[97]), и дескриптор границы Сегмента Моровича (Морович[98]). Но эти модели предоставляют только информацию об экстремальных гаммах устройства; они отсутствуют сведения о других точках в тональном сопоставлении. Без такой информации GMAs может сделать только грубые оценки оптимального сопоставления тонов. Хуже того, эти модели не предоставляют никакой помощи расширенному динамическому диапазону в scRGB и в цифровых изображениях камеры.
Как эта проблема решена в фотографических и видеографических отраслях? Камера захватывает изображение. Эксперты могут обсудить, сколько выполняется отрисовка на устройстве захвата; но они согласны с тем, что это не значительный объем. Обе технологии не сопоставляют диффузный белый цвет в захваченной сцене с белой точкой среднего. Аналогичным образом, они не сопоставляют черную точку с сцены с черной точкой среднего. Поведение фотографического фильма описывается в пространстве плотности с помощью характерной кривой, часто называемой Хуртером и Дриффилдом, или кривой H&D. Кривая показывает плотность исходной сцены и результирующей плотности на пленке. На рисунке 18 показана типичная кривая H&D. Ось x представляет увеличение воздействия журнала. Ось Y представляет плотность на слайде. Пять ссылочных точек отмечены на кривой: черный без детализации, который представляет минимальную плотность на отрицательном; черный с подробными сведениями; ссылка на середину серого карта; белый с подробными сведениями; и белый без детализации. Обратите внимание, что между черным цветом без детализации (который представляет устройство черным) и черным с подробными сведениями (тень черная). Аналогичным образом между белыми и подробными (рассеянными белыми) и белыми без детализации (которая представляет белый цвет устройства).
Рис. 18 . Кривая H&D для слайд-фильма
Видеоиндустрия предоставляет "головной" и "нижний колонтитул" в изображениях. В спецификации ITU 709 светимость (называется Y) закодирована в 8 битах с диапазоном от 0 до 255. Однако ссылочный черный кодируется в кодировке 15, а ссылочный белый кодируется как 235. Это оставляет диапазон кодирования от 236 до 255, чтобы представлять зримые выделения.
Видеоиндустрия представляет собой по существу закрытую систему цикла. Хотя существует множество различных поставщиков оборудования, видеосистемы основаны на эталонных устройствах. Существует стандартная кодировка для изображений видео. Нет необходимости связывать границу гаммы с изображениями видео, так как все изображения кодируются для воспроизведения на одном эталонном устройстве. Пленка также закрыта, так как нет необходимости передавать промежуточные данные между разными компонентами. Вы хотите, чтобы решение, которое позволяет изображениям с устройств с различными gamuts и представлять как предварительно отрисованные, так и непреднамеренные сцены, которые будут воспроизведены на выходных данных с различными gamuts.
Четвертая проблема, которую должен устранить новый CTE, заключается в том, что визуальные серые цвета, созданные устройством, например, когда red=green=blue на мониторе, часто не падают на нейтральную ось CAM (когда chroma = 0,0). Это приводит к большим трудностям для ГМО. Чтобы обеспечить работу GMAs, необходимо настроить описание гаммы устройства и точек ввода, чтобы ось нейтрального устройства падала на ось нейтрального внешнего вида. Необходимо настроить точки от нейтральной оси на аналогичную сумму. В противном случае вы не можете сделать гладкие градации через изображение. В выходе из GMA вы отмените это сопоставление относительно нейтральной оси выходного устройства. Это называется "хиропрактикой" выпрямления оси. Как и хиропрактор, вы не только выпрямлите скелет (нейтральная ось), но вы настраиваете остальную часть тела, чтобы двигаться вместе со скелетом. Как и хиропрактор, вы не настраиваете скелет по одному и тому же количеству через все пространство. Вместо этого вы настраиваете разные разделы по-разному.
Рис. 19. Кривизна нейтральной оси устройства относительно нейтральной оси CIECAM
Для нового CTE требуется модель границы гаммы, которая может использоваться для представления изображений отрисовки и непредвиденных исходных изображений, предоставления сведений о внешнем виде нейтральных устройств и предоставления сведений о сопоставлении тоновых изображений с широким диапазоном света.
Рис. 20 : три оболочки гамма
Граница гамма состоит из трех оболочк, определяющих три региона.
В новом CTE внешняя оболочка гаммы формируется с выпуклой оболочкой, сделанной из образцов точек в гамме устройства. Корпус формируется путем принятия набора образцов точек и окружающих их поверхностью. Выпуклый корпус имеет дополнительное свойство быть выпуклым везде. Таким образом, это не самый маленький возможный корпус, который можно поместить в данные. Но экспериментирование показало, что установка примеров точек слишком тесно приводит к непреднамеренных артефактов в изображениях, таких как отсутствие гладкой заливки. Выпуклый корпус, кажется, решает эти проблемы.
В алгоритме значения внешнего вида цвета получаются для набора точек, выборочных из устройства. Для мониторов и принтеров значения внешнего вида цвета получаются выходными примерами, а затем измеряют их. Вы также можете создать модель устройства, а затем запустить искусственные данные с помощью модели устройства для прогнозирования измеренных значений. Затем измеренные значения преобразуются из пространства цветовой метрики (XYZ) в пространство внешнего вида (Jab), а корпус упаковывается вокруг точек.
Ключевой точкой этого алгоритма является то, что принятые белые точки, используемые в преобразовании из цветовой метрики в пространство внешнего вида, не должны быть белой точкой среды. Вместо этого можно выбрать точку дальше внутри гаммы и на (или вблизи) нейтральной оси. Затем эта точка будет иметь J-значение 100. Примеры с измеренным значением Y выше принятой белой точки в конечном итоге с J-значением больше 100.
Если вы помещаете диффузную белую точку сцены в качестве принятой белой точки для преобразования цветового пространства, то зеркальные выделения в сцене будет легко обнаружиться, как J-значение больше 100.
Так как CIECAM02 цветовая модель основана на визуальной системе человека, после выбора принятого белого цвета уровень света черной точки (J = 0) автоматически определяется моделью. Если входное изображение имеет широкий динамический диапазон, возможно, могут быть значения, которые сопоставляют с значениями J меньше нуля.
На следующем рисунке 21 показаны нейтральные устройства, работающие через центр правдоподобных и ссылочных gamuts.
Рис. 21 . Нейтральная ось устройства, добавленная в границу гаммы
Все сопоставления гаммов включают либо вырезку входного диапазона к выходной гамме, либо сжатие входной гаммы, чтобы поместиться в выходную гамму. Более сложные алгоритмы формируются путем сжатия и вырезки в разных направлениях или деления гаммы на разные регионы, а затем выполнения вырезки или сжатия в разных регионах.
Новый CTE расширяет эту концепцию для поддержки регионов возможной гаммы, правдоподобной гаммы и эталонной гаммы, а также позволяет GMAs сопоставлять их различными способами. Кроме того, ГМС имеют сведения о нейтральной оси устройства. В следующем обсуждении описывается, как справиться с ситуациями, когда правдоподобные gamuts и ссылочные gamuts рухнули друг на друга.
Рис. 22 . GMA с двумя не свернутыми дескрипторами гаммы
Этот пример может отобразиться при сопоставлении с входным устройством, например камеры или сканера, характеризующегося отражающим целевым объектом, с пространством scRGB. Здесь правдоподобные цвета, которые светлее, чем эталонный белый, являются зрительными выделениями. На практике, характеризующая камеру с целевым объектом, может не генерировать полный диапазон значений, возможных в камере; однако, зричные выделения и очень хроматические цвета, найденные в природе, будут. (Миссивные целевые объекты обычно имеют исправление, которое является минимальной плотностью, возможной на среднем. При таком целевом объекте зримые выделения попадают в диапазон целевого объекта.) Эталонный черный для отражающего целевого объекта будет началом теневого черного региона. То есть, скорее всего, цвета в тени, которые темнее, чем черный на целевом объекте. Если изображение содержит много интересного содержимого в этом регионе, возможно, стоит сохранить этот тональный вариант.
Рис. 23 . GMA с свернутой конечной гаммой
На рис. 23 показан один возможный алгоритм сопоставления гаммы, когда целевой гаммы предоставляет только диапазон от белого устройства до черного, и нет возможных цветов за пределами этой гаммы. Это может произойти для типичных выходных устройств, таких как принтеры. Возможные цвета сопоставляются с краем конечной гаммы. Но у него отсутствует кривая тона для выходного устройства. GMA должен выбрать нейтральную точку нижнего света, чтобы использовать в качестве назначения сопоставления для эталонного белого. Сложный алгоритм может сделать это путем гистограммы света в исходном изображении и видя, сколько упало в диапазон ожидаемых, но легче, чем эталонный белый. Чем больше света, тем больше места требуется на целевом устройстве между сопоставленными точками для спекулярных выделений и ссылочного белого цвета. Более простой алгоритм может выбрать произвольное расстояние вниз по шкале легкости от белого устройства, например 5 процентов. Аналогичный подход применяется к сопоставлению максимального черного и теневого черного.
Создав кривую тон назначения, можно сопоставить метод, аналогичный тому, который использовался на предыдущем рисунке 23. Все точки в кривой тон назначения будут находиться в гамме устройства, и все точки в сопоставлении должны находиться в гамме устройства.
Если вы изменяете левую фигуру и правые цифры, а также направления стрелок на рис. 23, можно описать ситуацию, когда исходное изображение имеет только эталонную диаграмму, а три гаммы выходного устройства не свернуты друг на друга. Примером этого может быть сопоставление монитора с scRGB. Опять же, GMA должен синтезировать контрольные точки для пяти точек на кривой тон для исходного изображения. Некоторые сопоставления могут поместить все точки кривой тона в гамму устройства scRGB, в то время как другие сопоставления могут использовать больше гаммы scRGB, сопоставляя диффузный белый с эталонным белым и позволяя зрителям сопоставлять с более светлым значением.
Наконец, у вас есть случай, когда оба устройства имеют только эталонную гамму, что является тем, как работают большинство алгоритмов сопоставления гамм. Таким образом, вы можете устранить эту проблему, просто вернувшись к текущим алгоритмам. Кроме того, если у вас есть разумный способ определить пять ссылочных точек для исходных и целевых устройств, можно упорядочить для сопоставления эталонных точек.
Gamuts устройства содержат более пяти ссылочных точек на нейтральной оси. Они просто представляют границы между потенциальными регионами в изображении. Между каждой из ссылочных точек можно использовать любой из существующих методов сопоставления гамм. Таким образом, можно вырезать диапазон непредвиденных цветов и сжать все цвета между ожидаемым белым и черным, или вы можете зарезать все цвета за пределами диапазона ссылок и сжать в этом диапазоне. Существует множество возможностей, которые можно реализовать в разных ГМ. Кроме того, GMAs может сжимать и клипы различными способами. Все эти сочетания охватываются этим изобретением.
До сих пор в этом обсуждении гамма рассматривалась как будто она была исключительно функцией устройства, на котором был создан, записан или отображен. Однако нет причин, почему все изображения для устройства должны иметь одну и ту же гамму. ГМС зависят от данных в ГБД. Если дескриптор изменяется между изображениями, то не существует способа знать ОМС. В частности, если изображения не имеют спектрулярных выделений, GMAs лучше, если дескриптор гамма не показывает, что цвета светлее, чем диффузный белый.
В новой архитектуре CTE можно использовать несколько GMA. Использование нескольких ГМС по сути является плохо определенным. Например, если устройство записи связывает GMA с его "внешний вид и чувство", он, как правило, делает это с "целевой" гаммой назначения. То же самое верно для выходных устройств и "целевых" исходных gamuts. Гамма sRGB является одной из часто предназначенных подразумеваемых гамм. Поэтому настоятельно рекомендуется использовать одну GMA, если прогнозируемость является приоритетом. Один рабочий процесс GMA должен быть по умолчанию для всех рабочих процессов, особенно для рабочих процессов потребителей и prosumer. Хотя сопоставление параметров для предпочтительного воспроизведения должно выполняться один раз, существуют экземпляры, в которых включены несколько процессов сопоставления. Во-первых, для проверки правописания рекомендуется сопоставить гамму конечного целевого устройства, а затем цветовую отрисовку в гамме устройства проверки правописания. Во-вторых, некоторые типы сопоставления используются для изменения характеристик изображения, но не включаются для сопоставления с гаммой устройства, например при настройке кривой тона или хроматисти. Если используются несколько gmAs, интерфейс преобразования принимает массив привязанных карт гаммы, то есть карты гаммы, которые были инициализированы с парой описаний границ гаммы. При наличии более одной карты гаммы входная граница гаммы для успешной карты гаммы должна совпадать с границой выходной гаммы своего предшественника.
Функция границы гаммы устройства принимает подсистему модели устройства и аналитические параметры и получает границу цветового устройства, описанную как упорядоченный список вершин конвексной оболочки устройства. Упорядоченный список вершин хранится в CIEJab. Структура упорядоченного списка вершин оптимизирована для аппаратного ускорения DirectX. Этот подход имеет много известных решений (поиск по "выпуклый корпус DirectX" в Интернете, и вы получаете более 100 хитов). Существует также ссылка с 1983 года на эту тему (теория и приложение компьютерной графики, "Shiphulls, b-spline поверхности и cadcam" pp. 34-49), со ссылками, начиная с 1970 по 1982 год по теме.
Для вычисления треугольников в оболочке гаммы можно использовать два разных метода. Для других устройств, отличных от аддитивного RGB-устройства, вы вычисляете выпуклый корпус. Вы можете рассмотреть возможность изучения поддержки корпусов без выпуклого корпуса для других устройств, если у вас есть прямой доступ к таким устройствам для проверки надежности, производительности и точности алгоритмов. Это хорошо известный процесс, который не требует дальнейшего описания. Метод, используемый для аддитивных RGB-устройств, описывается следующим образом.
Различные ГБД имеют преимущества и недостатки. Выпуклое представление корпуса гарантирует хорошие геометрические свойства, такие как выпуклые срезы оттенков, которые обеспечивают уникальную точку пересечения с лучом, исходящим от точки на нейтральной оси. Недостатком выпуклого корпуса также является выпуклость. Известно, что многие устройства, в частности, отображают устройства, имеют gamuts, которые далеко не выпуклы. Если фактическая гамма значительно отклоняется от допущения конвексности, то выпуклый корпус представления будет неточным, возможно, в той степени, что она не представляет реальность.
После принятия ГБД, который дает достаточно точное представление фактической гаммы, другие проблемы возникают, некоторые из-за самой концепции среза оттенка. Существует по крайней мере две болезненные ситуации. На следующем рисунке 24, гамма CRT приводит к оттенок срезов с "островами". На рис. 25, гамма принтера приводит к срезу оттенка с частью нейтральной оси, отсутствуюющей. Патологическое оттенки срезов не вызваны особенно болезненными границами гаммы в этих случаях. Они вызваны самой концепцией среза оттенка, потому что (a) он принимается вдоль константного оттенка, и (b) он принимает только одну половину плоскости, которая соответствует угол оттенка.
Рис. 24 . Типичный монитор CRT имеет гамму, который показывает своеобразное "кривые" в синих оттенках. Если куски оттенка взяты в пределах этого диапазона оттенков, изолированные острова могут появляться в срезах оттенков.
Рис. 25 . Принтер может иметь гамму, имеющий "разрыв" в нейтральной оси. При взятии среза оттенка (который составляет только одну половину плоскости), имеется "отступ" на части границы, которая является нейтральной осью. Это может быть трудно устранить алгоритмически.
Чтобы устранить эти патологии, предлагается новая платформа, которая отказывается от концепции оттенка среза, который используется в качестве отправной точки. Вместо этого платформа использует набор элементов линии границы или линии, лежащие на границе гаммы. Они не обязательно обеспечивают последовательную геометрическую визуализацию, например срезы оттенков, но они поддерживают все общие операции гаммы. Помимо решения проблем, упоминание ранее, этот подход также предполагает, что строительство срезов оттенков, даже если это возможно, является расточительным.
Триангуляция границы Гамут
Отправной точкой является ГБД, состоящий из триангуляции границы гаммы. Известные методы построения ГБД обычно обеспечивают триангуляцию. Для бетонности описан один из способов создания ГБД для аддитивных устройств, его пространства устройств. К этим устройствам относятся мониторы (на основе CRT и НА основе LCD) и проекторы. Простая геометрия куба позволяет ввести обычную решетку на кубе. Грани куба могут быть триангулированы в ряде способов, таких как один, показанный на рис. 26. Архитектура предоставляет модель устройства для устройства таким образом, чтобы значения цветовой метрики точек можно было получить алгоритмически, или измерения были сделаны непосредственно для этих точек. Архитектура также предоставляет CIECAM02, чтобы предположить, что начальные данные уже сопоставлены с CIECAM02 пространством Jab. Затем каждая точка решетки на гранях куба RGB имеет соответствующую точку в пространстве Jab. Соединения точек, которые образуют набор треугольников в пространстве RGB, также вызывает набор треугольников в пространстве Jab. Этот набор треугольников формирует разумное триангуляцию границы гаммы, если (a) решетка на кубе RGB достаточно хорошо подходит, и (b) преобразование из пространства устройства в равномерное цветовое пространство является топологическим образом; то есть она сопоставляет границу с границей, и она не превращает гамму внутри, чтобы внутренние точки стали точками границы.
Рис. 26 . Простой метод для триангуляции границы гаммы устройства с RGB в качестве пространства устройства
Элементы линии границ
Центральной для этой платформы является концепция элементов линии границы; набор сегментов линии, которые (a) лежат на границе гаммы, и (b) лежат на плоскости. В этом случае самолет является плоскостью хью. Каждый сегмент линии является результатом пересечения плоскости с треугольником границы гаммы. Хотя многие исследователи использовали построение пересекания плоскости с треугольниками границ, они обычно анализируют связь между этими сегментами линий и пытаются построить последовательный геометрический объект из сегментов линии. Различные алгоритмы были разработаны для выполнения этих сегментов линии один за другим до получения целого среза оттенка, и многие попытки были сделаны для ускорения процесса поиска.
Этот подход отличается. Вы пересекаете плоскость с треугольниками, чтобы получить сегменты линии. Затем эти сегменты строк рассматриваются как основные концептуальные объекты. Необходимо проанализировать связь между сегментами линий; Вам не нужно знать, как они связаны друг с другом. Эта точка зрения решает проблему оттенка с островами. Известные подходы, которые пытаются создать срез оттенка, предполагают, что, если один начинается с одного сегмента строки и следует за ним в следующий сегмент строки, и т. д. в конечном итоге он приводит к начальной точке, в которой будет построен целый срез оттенка. К сожалению, этот подход пропустит остров (и в худшем сценарии континент). Не настаивая на получении последовательной геометрической картины; то есть, оттенок среза, вы можете легко справиться с проблемой острова. Еще одним важным отличием этого подхода является то, что для ускорения построения сегментов линий он использует "фильтр треугольников". Фильтр треугольников выдает определенные треугольники, которые, безусловно, не будут производить сегменты линий, которые будут полезны в текущей операции гаммы. Так как пересечение треугольника с плоскости является дорогостоящим вычислением, это повышает скорость. Побочный эффект заключается в том, что невозможно создать срез оттенка, так как некоторые сегменты линий будут отсутствуют из-за фильтрации треугольников.
Операция gamut: CheckGamut
В следующем примере объясняется, как работает платформа и как выполняется CheckGamut, то есть операция проверка, если цвет находится в гамме.
Общая платформа показана на следующем рисунке 27. Существуют различные компоненты. Компоненты, помеченные курсивом, являются компонентами, которые могут отличаться в реализации в зависимости от операции гаммы в вопросе. Другие компоненты являются инвариантными во всех операциях гаммы. Для начала входные данные — это набор атрибутов цвета. В случае CheckGamut это цвет запроса. На рисунке 27 и следующем обсуждении предполагается, что угол оттенка находится либо среди входных атрибутов цвета, либо может быть получен из них. Это ясно, если входные данные являются всей цветовой точкой, либо в Jab или JCh, с которого можно вычислить угол оттенка. Обратите внимание, что угол оттенка необходим только потому, что используются плоскости оттенка. В зависимости от операции гаммы в вопросе может не потребоваться использовать плоскость оттенка. Например, в построении подпрограммы CheckGamut может потребоваться использовать плоскости константы J. Это обобщение, которое не будет использоваться или обсуждаться далее; но может быть полезно помнить эту гибкость методологии для поддержки других операций гаммы, когда плоскость хью может быть не лучшим выбором.
Рис. 27 . Платформа для поддержки операций с диаграммами
Угол оттенка, полученный непосредственно из входных данных или вычисляемый из входных данных, используется для инициализации плоскости hue с меткой Full Hue Plane на рисунке. "Full" подчеркивается, потому что это полная плоскость, а не только половина плоскости, содержащая оттенок. Полная плоскость содержит угол оттенок ввода и угол 180 градусов напротив него. Ключевыми функциями плоскости хью является функция Intersect, которая описана в следующем подразделе Full Hue Plane: Intersect. Предположим, что ГБД уже создан, и доступен набор треугольников границ Gamut. Пересекаются треугольники, которые выжили в фильтре треугольников с плоскостью оттенка с помощью intersect. Компонент фильтра треугольников помечен курсивом, что означает, что компонент зависит от реализации для различных операций гаммы. Фильтр треугольников для CheckGamut описан в разделе " Операция гамут: CheckGamut (продолжение). Результат пересечения треугольника с плоскостью оттенка является пустым или элементом линии границы, то есть парой отдельных точек. Если результат не пуст, он передается в обработчик элементов Line, который снова выполняет различные действия в зависимости от операции гаммы. Обработчик элементов Line обновляет внутреннюю структуру данных, внутренние обработанные данные, содержимое или макет которого также зависит от операции гамма. Как правило, внутренние обработанные данные содержат "ответ" на проблему, которая постоянно обновляется при каждом обнаружении нового элемента линии границы. Когда были обработаны все элементы линии границ, был найден ответ. Остается получить доступ к нему через адаптер вывода. Так как внутренние обработанные данные относятся к конкретной операции гамма, адаптер выходных данных также является конкретной операцией гаммы.
Full Hue Plane: Intersect
Функция Intersect вычисляет пересечение плоскости оттенка и треугольника. Так же просто, как это звучит, эта функция важна по двум причинам.
Во-первых, пересечение каждого края треугольника с плоскостью может привести к трем точкам пересечения, геометрической невозможной ситуации. Причина, по которой это может произойти в вычислении, заключается в том, что при выполнении вычислений в плавающей точке, например в формате IEEE, существуют неопределенности или "числовый шум", на каждом шаге, который влияет на вывод о том, пересекается ли край плоскости. Когда плоскость пересекается краями в ситуации почти недостающей, точки пересечения близки друг к другу, и определение того, находится ли точка пересечения в краю случайным образом. Хотя шум в числовых значениях точек мал, качественный вывод о том, что существует более двух точек пересечения, геометрически невозможно и трудно обрабатывать правильно в алгоритме.
Во-вторых, эта функция находится в критическом цикле для каждого края каждого отфильтрованного треугольника, поэтому важно оптимизировать эффективность как можно больше.
Чтобы устранить первую проблему числовых шумов, выполните вычисления в целых числах. Чтобы устранить вторую проблему оптимизации эффективности, кэшируйте наиболее используемый атрибут каждой вершины или "dot product", связанный с каждой вершиной. Передача в целые числа является типичным способом обеспечения геометрической согласованности. Основная идея заключается в том, что если вы должны квантуализировать, сделайте это в начале. Последующие вычисления можно выполнять в целых числах, и если целые числа достаточно широки, чтобы не было опасности переполнения, вычисления можно выполнить с бесконечной точностью. Следующая функция квантизации полезна для этой цели.
ScaleAndTruncate(x) = целочисленная часть x*10000
Коэффициент масштабирования 10000 означает, что входной номер с плавающей запятой имеет четыре десятичных разряда, что достаточно точно для этого приложения. В зависимости от диапазона значений пространства внешнего вида цвета необходимо выбрать целочисленный тип с битами, достаточно широкими для хранения промежуточных вычислений. В большинстве цветового пространства диапазон каждой координаты находится в диапазоне от -1000 до 1000. Квантизованная координата имеет максимально возможное абсолютное значение 1000*10 000 = 10 000 000. Как вы увидите, промежуточное количество является точкой продукта, который является суммой двух продуктов координат, поэтому он имеет максимально возможное абсолютное значение 2*(10 000 000) = 2?10 ₁₄. Необходимое количество битов — это журнал ₁₄ ) = 47,51. Удобный выбор для целочисленного типа, поэтому 64-разрядные целые числа.
Чтобы гарантировать, что пересечение плоскости с треугольником всегда дает пустой набор или набор двух точек, необходимо учитывать треугольник в целом, а не как отдельные края треугольника отдельно. Чтобы понять геометрическую ситуацию, рассмотрим "подписанные расстояния" вершин треугольника от плоскости хью. Не вычисляйте эти подписанные расстояния напрямую; вместо этого вычислите точки продуктов векторов позиций вершин с квантизованным нормальным вектором плоскости. В частности, во время инициализации плоскости оттенка вычисляется квантизованный нормальный вектор следующим образом.
NormalVector = (ScaleAndTruncate(-sin(hue)), ScaleAndTruncate(cos(hue))
Обратите внимание, что этот вектор является двумерным вектором. Вы можете использовать двухмерный вектор, так как плоскость оттенка вертикали, поэтому третий компонент нормального вектора всегда равен нулю. Кроме того, таблица подстановки продуктов dot инициализируется, чтобы иметь запись для каждой вершины из треугольников границ Gamut и соответствующего точечный продукт, заданный для недопустимого значения.
Во время одной операции пересечения плоскости оттенка с треугольником, точка продукта каждой вершины треугольника смотрится вверх. Если значение в таблице подстановки является недопустимым, то продукт точки вычисляется с помощью следующего выражения.
NormalVector.a*ScaleAndTruncate(vertex.a) + NormalVector.b*ScaleAndTruncate(vertex.b)
Опять же, J-компонент вершины никогда не используется, так как обычный вектор является горизонтальным. Затем этот продукт dot сохраняется в таблице подстановки, чтобы его не нужно вычислить повторно, если точечный продукт вершины запрашивается позже.
Кэширование позволяет быстро определить, пересекается ли ребра плоскости, после того, как точки продукты табуляции в таблице подстановки создаются постепенно, как вершины обрабатываются.
Рис. 28 . Пересечение плоскости оттенка с треугольником
Для треугольника на рис. 28, чтобы пересекать плоскость оттенка в сегменте линии, не дегенерируемой линии, точечная продукция вершин должна находиться в одном из следующих шаблонов при сортировке по возрастанию.
0,0,+; -,0,0; -,0,+; -,-,+; -,+,+
Конечная точка сегмента линии возникает, когда плоскость пересекается краем с вершинами, имеющими разные знаки в продукте точки. Если знак равен нулю, то вершина лежит прямо на плоскости, а пересечение края с плоскостью — вершина сама. Обратите внимание также, что случаи 0,0,0; -,-,0; 0,+,+ не сообщается. Первый случай (0,0,0) означает, что весь треугольник лежит на плоскости. Это не сообщается, потому что каждый край треугольника должен принадлежать соседнему треугольнику, который также не лежит полностью на плоскости. Ребра будет сообщаться при рассмотрении этого треугольника. Остальные два случая (-,-,0 и 0,+,+) соответствуют геометрической конфигурации, которая треугольник касается плоскости в одной вершине. Эти случаи не сообщаются, поскольку они не приводят к вырождению сегмента линии, отличного от дегенерации.
Предыдущий алгоритм определяет, когда вычислить пересечение между краем треугольника и плоскостью оттенка. После определения края пересечение вычисляется с помощью уравнений параметрики. Если одно из точечных продуктов равно нулю, пересечение является самой вершиной, поэтому вычисление не требуется. Предполагая, что обе точки вершин края ненулевые, вершина1 является вершиной с отрицательной точкой dotProduct1; и вершина2 является вершиной с положительной точкой продукта dotProduct2. Этот порядок важен для обеспечения того, чтобы вычисляемая точка пересечения не зависела от того, как порядок вершин отображается в представлении края. Геометрическая концепция края симметрична по отношению к вершинам. Вычислительный аспект использования параметрических уравнений края вводит асимметрию (выбор начальной вершины), которая может дать немного другую точку пересечения из-за числового шума и кондиционирования линейных уравнений, которые необходимо решить. С этим сказал, точка пересечения, пересечение, дано следующим образом.
t = dotProduct1/(dotProduct1 - dotProduct2)
Пересечения. J = вершина1. J + t * (вершина2. J - вершина1. J)
intersection.a = vertex1.a + t * (вершина2.a - вершина1.a)
intersection.b = vertex1.b + t * (vertex2.b - vertex1.b)
Операция gamut: CheckGamut (продолжение)
Базовый геометрический алгоритм, используемый для проверка гаммы, заключается в подсчете количества пересечений лучей. Для заданной точки запроса рассмотрим луч, начиная с точки запроса и указывая вверх (J-направление). Подсчитывать количество раз, когда этот луч пересекает границу гаммы. Если это число даже, то точка запроса выходит за пределы. Если это число нечетно, точка находится внутри. В принципе, этот алгоритм может быть реализован в 3-D, он, как правило, страдает от трудностей, вызванных дегенерации ситуаций, таких как лучи ложение (частично) на треугольнике границы, или более низкомерное дегенерирование, например лучи ложение (частично) на краю треугольника границы. Даже в 2-D, вы должны иметь дело с этими дегенерными ситуациями; но проблема проще и была решена удовлетворительно. См. [O'Rourke].
Для заданной входной точки Jab определите его угол оттенок, как показано ниже.
h = atan(b/a),
Инициализируйте плоскость оттенка и определите элементы линии границ, соответствующие этому плоскости оттенка. Так как элементы линии границ имеют отношение только в том случае, если они пересекаются вверх луч, настройте фильтр треугольников для удаления треугольников, которые дают элементы линии, которые определенно не пересекаются вверх луч. В этом случае рассмотрим ограничивающий прямоугольник треугольника. Восходящий луч не пересекается с треугольником, если точка запроса находится за пределами ограничивающего поля, если источник света был непосредственно выше. Раздувайте это немного с предопределенной терпимостью, чтобы обеспечить числовый шум, чтобы непреднамеренно выбросить треугольники, которые могут дать полезные элементы линии. Результатом является полуконечный прямоугольный цилиндр, показанный на рис. 29. Проверка того, находится ли точка запроса внутри или за пределами этого цилиндра, можно эффективно реализовать с помощью простых неравенства.
Рис. 29 . Фильтр треугольника для CheckGamut
CheckGamut имеет три компонента операции гаммы: внутренние обработанные данные, обработчик элементов Line и адаптер вывода. Внутренние обработанные данные — это список элементов строки, обработанных обработчиком элементов Line. В этом случае обработчик элементов Line просто добавляет в список элемент строки. Структура внутренних данных для внутренних обработанных данных может быть связанным списком или массивом, который может увеличиваться.
Адаптер вывода — это модуль, который обращается к списку элементов линии, определяет, пересекает ли элемент линии восходящий луч (число 1) или нет (число 0). Суммирование всех этих счетчиков дает общее количество. Выходной адаптер в конечном итоге выводит ответ "да" (в гамме) или "нет" (вне гамма), в зависимости от того, является ли общее число нечетным или даже. Шаг, где вы определяете, пересекает ли элемент линии вверх луч заслуживает некоторого внимания, потому что это место, где возникает проблема дегенерирования, а также возникает проблема чрезмерного подсчета. После [O'Rourke], чтобы элемент линии пересекать луч, правая конечная точка (конечная точка с большим chroma) должна быть строго на правой стороне луча. Это гарантирует, что, если конечная точка когда-либо лежит именно на луче, это только один раз. То же правило также решает вырожденную ситуацию, когда элемент линии находится точно на луче. Число для этого элемента строки не увеличивается.
На рисунке 30 показаны результирующий элемент строки примера гаммы с точкой запроса в различных позициях.
Рис. 30 . Как работает CheckGamut
Минимальное сопоставление цветовой гаммы
Минимальное сопоставление цветовой гаммы, MinDEMap, имеет простую спецификацию: если цвет находится в гамме, ничего не делать. Если цвет выходит за пределы гаммы, проецировать его в "ближайшую" точку на границе гаммы. Ключевое слово "ближайший" не определен, пока не укажите, какое уравнение разности цветов следует использовать. На практике, чтобы упростить вычисление и ускорить, расстояние Евклиды выбранного пространства внешнего вида цвета или вариант его используется в качестве метрики разницы цвета. Преимущество метрики Euclidean заключается в том, что она совместима с точечным продуктом пространства, что позволяет использовать линейную алгебру. Подробно, если в пространстве определен "точка продукта", то расстояние можно определить как квадратный корень продукта точки самого вектора разницы. Точечный продукт, как правило, может быть определен положительным 3x3 матрицей A.
u?v = u T Av
где справа сторона — это обычное умножение матрицы. Если матрица удостоверений является матрицей удостоверений, возвращается стандартный продукт dot. На практике, если Jab является цветовым пространством, вы не хотите смешивать компоненты, поэтому диагонали матрицы, отличной от матрицы удостоверений, можно использовать. Кроме того, может потребоваться сохранить масштаб на уровне и b без изменений, чтобы мера оттенка сохранялась. Таким образом, полезным вариантом стандартного евклиданского продукта является следующий.
w J (J component of you)(J component of v) + (компонент you)(компонент v) + (b компонент you)(b component of v) (b component of v)
где w J является положительным числом. Один из дополнительных вариантов заключается в том, чтобы w J изменял входную точку запроса:
w J\ = w J (queryPoint)
Конечный результат — это мера расстояния, которая является асимметричной относительно двух точек, и с различными относительными весами по легкости и хроме или оттенкам, так как входная точка запроса зависит. Это в соответствии с некоторыми наблюдениями о человеческом цветовом представлении, что различия в цвете не взвешиваются одинаково во всех измерениях. Было обнаружено, что люди менее чувствительны к различиям в легкости, чем они имеют различия в оттенках и хрома.
Следующая функция веса полезна.
w J = k ₁ (C - C mₐₓ ) n
where k ₐ = 1, k ₁ = 0,75/(C mₐₓ ) n, C mₐₓ = 100, n = 2 и C является меньшим chroma точки запроса и C mₐₓ.
таким образом, что вес 0,25 ставится на J-термин, когда chroma равен нулю, и вес 1, когда chroma равно 100. Тенденция поставить меньше веса на J, когда chroma небольшая, и больше веса на J, когда chroma большой, следует рекомендуемое использование ДЛЯ CMC и CIEDE2000.
Рис. 31 . Функция веса для компонента J метрики
Используйте пространство Jab для следующего примера. Он вычисляет требование выполнять поиск по всем треугольникам границ, чтобы определить ближайшую точку в метрике Эвклиды. Ниже приведен простой подход к тому, чтобы сделать этот процесс максимально эффективным, без введения дополнительных предположений, которые могут ускорить процесс, но в конечном итоге в конечном итоге только в приблизительном ответе. Во-первых, необходимо понять геометрическую процедуру проецирования точки на заданный треугольник. Здесь приведено описание.
Сначала выполняется ортогональная проекция на бесконечной плоскости, содержащей треугольник. Кратчайшее расстояние точки запроса от плоскости можно определить двумя шагами.
(a) Вычислите обычный вектор единицы в треугольнике.
(b) Вычислите точечный продукт нормального вектора единицы и вектора, сформированного из точки запроса и точки треугольника, то есть одной из ее вершин. Так как обычный вектор имеет длину единицы измерения, абсолютное значение этого элемента является расстоянием от точки запроса от плоскости.
Проецируемый пункт может не быть ответом, потому что он может лежать за пределами треугольника. Поэтому сначала необходимо выполнить проверка. Вычисление эквивалентно вычислению барицентрических координат проецированной точки относительно треугольника. Если проецируемый пункт определяется внутри треугольника, это ответ. В противном случае ближайший пункт приобретается на одном из краев треугольника. Выполните поиск по каждому из трех краев. Определение проекции точки запроса на край является процессом, аналогичным проекции на треугольник, но одно измерение меньше. Сначала вычисляется ортогональная проекция. Если проецируемый пункт лежит на краю, это ответ. В противном случае ближайший пункт приобретается на одной из двух конечных точек. Выполните поиск по двум конечным точкам; то есть вычислите расстояние точки запроса от каждой из них и сравните, какой из них меньше.
Тщательный осмотр показывает, что есть много повторяющихся поисков, когда вы проходите через все треугольники, потому что ребра всегда разделяется двумя треугольниками, и вершина, к которой делится по крайней мере три края. Кроме того, вы не очень заинтересованы в поиске ближайшей точки к одному конкретному треугольнику; вместо этого вы заинтересованы в поиске ближайшей точки ко всей границе гаммы. Однако один конкретный треугольник будет одним из них, в котором это достигается. Существует две стратегии, которые можно использовать для ускорения поиска.
Стратегия I. Каждая вершина будет обработана по крайней мере один раз. Каждый край будет обработан по крайней мере один раз.
Стратегия II. В любой момент в поиске у вас есть лучший кандидат с соответствующим лучшим расстоянием. Если вы можете определить, быстро проверка, что треугольник не может дать лучшее расстояние, нет необходимости продолжать вычисление дальше. Для этого треугольника не требуется ближайшее расстояние и точка.
Рис. 32 . Минимальные схемы сопоставления DE
На рисунке 32 показан общий поток логики для карты гаммы MinDEMap. Для точки запроса сначала вызывается функция CheckGamut. Если точка находится в гамме, карта является no-op. Если точка выходит за пределы, вызовите ProjectPointToBoundary. Теперь перейдите к рис. 33. На этом этапе предполагается, что вычисляются следующие значения.
(a) Обычный вектор единицы для каждого треугольника границы Gamut относительно стандартного продукта dot.
(b) Список вершин и список краев в дополнение к списку треугольников.
Рис. 33 . Подпрограмма ProjectPointToBoundary
Все это постоянные издержки и будут иметь снижение затрат, если достаточные запросы к этой границе гаммы создаются. Как правило, это происходит при сборке преобразования LUT с одного устройства на другое, где существует только два фиксированных gamuts, а преобразование LUT выполняется через точки в единообразной выборке сетки. Вы предварительно вычисляете обычные векторы относительно стандартного продукта dot, даже если понятие перпендикулярности будет основано на весовом продукте, который зависит от точки запроса, как описано ранее. Причина заключается в том, что обычный вектор относительно взвешированного продукта точки можно легко получить из нормального вектора относительно стандартного продукта dot. Если n ₀ является нормальным вектором относительно стандартного продукта dot, то
n = (J-component of n ₀ /w J, a-component of n ₀, b-component of n ₀ )
является нормальным для треугольника относительно весового точечный продукт. Из-за этой связи все еще полезно предварительно вычислить n ₀ даже если он должен быть скорректирован на основе точки запроса.
Подпрограмма ProjectPointToBoundary начинается с сброса "обработанного журнала" вершин и ребер. Это таблицы флагов BOOLEAN, которые отслеживают, была ли вершина или ребра посетила раньше. Он также сбрасывает переменную ShortestDistance на "INFINITY", которая является максимальным закодированным значением в используемой системе чисел с плавающей запятой. Затем он проходит по циклу, выполняя поиск ближайшей точки из каждого треугольника с помощью вызова ProcessTriangle. ProcessTriangle — это подпрограмма обновления переменной ShortestDistance и явно находится в критическом цикле. Одна оптимизация заключается в том, чтобы остановиться, когда результат достаточно хороший. После каждого вызова ProcessTriangle проверяется переменная ShortestDistance. Если он удовлетворяет заданному порогу, можно остановиться. Предопределенное пороговое значение зависит от используемого цветового пространства и требуемой точности системы цветовой визуализации. Для типичного приложения вы не хотите делать ненужные действия, если разница в цвете меньше, чем то, что может быть распознано человеческим зрением. Для CIECAM02 эта разница в цвете составляет 1. Однако используйте пороговое значение 0,005 в реализации, чтобы сохранить точность вычислений, так как это может быть только промежуточным шагом в цепочке преобразований.
ProcessTriangle реализует предыдущую стратегию II. Получение нормального вектора из предварительно вычисляемого нормального вектора единицы в треугольник относительно стандартного продукта точечной точки вычисляет расстояние точки запроса к бесконечной плоскости, содержащей треугольник, формируя точку обычного вектора единицы и вектор запроса, вектор из одной из вершин треугольника, вершина1 до точки запроса, queryPoint.
queryVector = queryPoint — вершина1
distance = | normalVector * queryVector |/||normalVector||
Это относительно недорогое вычисление, и расстояние необходимо для выполнения дальнейших вычислений. Если это расстояние не меньше текущего лучшего расстояния, ShortestDistance, этот треугольник не будет производить лучшее расстояние, потому что он не даст лучшее расстояние, чем самолет, содержащий его. В этом случае вы возвращаете элемент управления в цикл треугольника. Если расстояние меньше, чем ShortestDistance, возможно, у вас есть ближе точка, если эта точка находится внутри треугольника. Чтобы определить это, необходимо выполнить некоторые "жесткие" вычисления (хотя ничего, кроме линейной алгебры). Если остальные две вершины треугольника являются вершинами2 и вершинами 3, то создайте базовые векторы firstBasisVector и secondBasisVector.
firstBasisVector = vertex2 — вершина1
secondBasisVector = vertex3 — вершина1
Используйте следующую линейную систему уравнений для решения неизвестных вам и v.
firstBasisVector * queryVector = (firstBasisVector * firstBasisVector)u + (firstBasisVector * secondBasisVector)v
secondBasisVector * queryVector = (secondBasisVector * firstBasisVector)u + (secondBasisVector * secondBasisVector)v
и условия для проецируемого пункта лежать внутри треугольника:
0 ≤ u ≤ 1, 0 ≤ v ≤ 1 и v ≤ 1
После этого вычисления, если определено, что проецируемый пункт находится в треугольнике, то вы нашли новую ближайшую точку; Расстояние, вычисленное в начале, — это новое самое короткое расстояние. В этом случае обновите переменные ShortestDistance и ClosestPoint. Если проецируемый пункт находится за пределами треугольника, вы можете найти ближе точку на одном из его краев. Таким образом, можно вызвать подпрограмму ProcessEdge на каждом из трех краев.
Рис. 34 . Подпрограммы ProcessEdge и ProcessVertex
Подпрограмма ProcessEdge реализует стратегию I, которая показана на рис. 34. ProcessEdge начинается с проверка, был ли граничный край обработан раньше. Если да, дальнейшие действия не принимаются. Если нет, он продолжает вычислять ортогональную проекцию точки запроса на бесконечной строке, содержащей край. Линейная алгебра, связанная с вычислением, аналогична предыдущим уравнениям треугольника. Однако вычисление проще, здесь не описано. Если проецируемый пункт находится в пределах края, вы найдете расстояние от проецируемого пункта от точки запроса. Если это расстояние меньше, чем ShortestDistance, вы нашли новую ближайшую точку. Обновите как ShortestDistance, так и Ближайшее. Если проецируемый пункт находится за пределами края, вызовите ProcessVertex в двух конечных точках. Перед возвратом элемента управления обновите журнал ребер, чтобы этот край был помечен как PROCESSED.
Наконец, вы дайте описание ProcessVertex. Подпрограмма ProjectVertex также реализует стратегию I и поддерживает таблицу журнала вершин. Как показано на рис. 34, сначала проверка, была ли вершина обработана раньше. Если да, дальнейшие действия не принимаются. Если нет, он продолжает вычислять расстояние вершины от точки запроса. Если расстояние меньше, чем ShortestDistance, обновите как ShortestDistance, так и Ближайшее. В конце концов он обновляет журнал вершин, чтобы эта вершина помечена как PROCESSED.
Если цикл внешнего элемента управления либо исчерпал все треугольники, либо завершился до выполнения порогового значения разницы цветов, доступ к переменной Ближайшей точке осуществляется. Это результат MinDEMap. Вызывающий объект также может получить ShortestDistance, если он заинтересован в том, насколько далеко сопоставленный цвет находится от цвета запроса.
Hue Smoothing
Рис. 35 . Сглаживание
Проблема возникает с операциями, которые ограничены оттенками; То есть операция рассматривает только переменные в плоскости хью. На рисунке 35 показан пример гамма, демонстрирующий "прерывистый" срезы в синих оттенках. В этом диапазоне оттенков для определенных углов оттенка граница гаммы является тангенциальной к плоскости оттенка. В действительности это приводит к изменению топологической структуры срезов оттенков. В примере показано, как плоскость хью разметает по этому диапазону оттенков, "остров" возникает и подмножается. Это изменение топологии приведет к прекращению определенных операций с оттенком. Например, реплики с фиксированным оттенком резко изменятся по мере изменения угла оттенка в этом диапазоне.
Существует причина цветовой науки, почему желательно сохранить оттенок в определенных операциях. Чтобы устранить предыдущую проблему, исходные треугольники границ gamut должны быть "сглаживаются". Как правило, сглаживание набора треугольников границ gamut является набором треугольников, таким образом, что (a) он формирует границу нового "гамма", который может не соответствовать фактической гамме устройства, и который содержит гамму, определенный исходным набором треугольников; и (b) треугольники в новом наборе привязаны от параллелизма с плоскостями оттенков.
Один из практических способов получить сглаживаемый набор треугольников заключается в том, чтобы взять выпуклый корпус исходных вершин. Как показано на рис. 35, оттенки кусок выпуклого корпуса изменяются гладко в проблемном диапазоне оттенков без внезапного изменения топологии.
Задание первичных и вторичных файлов в описании границ gamut
Некоторые методы сопоставления гаммов, такие как HueMap, зависят от расположения первичных и вторичных файлов устройства. Для аддитивных устройств первичные — красные, зеленые и синие (R, G и B); и вторинки — синя, магдента и желтый (C, M и Y). Для субтрактивных устройств основное значение — C, M и Y; а второй — R, G и B. GBD отслеживает все шесть этих значений, а также белый и черный (W и K) в массиве значений цвета Jab. Эти значения задаются в описании границы гаммы при его создании. Для выходных устройств первичные элементы можно определить путем выполнения сочетаний значений элементов управления устройства через модель устройства. Для устройств захвата этот подход не подходит для создания ссылочного ГБД, так как практически невозможно записать изображение, которое дает полностью насыщенное чистое значение устройства, например (0.0, 0.0, 1.0). Профили устройств WCS содержат индексы первичных объектов в целевом объекте записи. Поскольку эти значения не содержатся в профиле ICC, используйте значения, измеряемые из типичного целевого объекта сканера после преобразования в Jab относительно условий просмотра ICC.
Задание нейтральной оси в описании границы гамюта
Методы сопоставления гаммы gamut в HueMap и относительных minCD используют нейтральную ось устройства для выпрямления. Для базовых выходных устройств ось нейтральной оси можно определить путем выполнения нейтральных значений устройства (R=G=B или C=M=Y) с помощью метода DeviceToColorimetric, а затем с помощью метода ColorimetricToAppearance объекта CIECAM02. Однако устройства записи не всегда возвращают нейтральное значение устройства при представлении нейтрального примера. Это особенно верно, если окружающее освещение не является совершенно нейтральным. Профили устройств WCS содержат индексы нейтральных выборок в целевом объекте. Используйте эти примеры для задания нейтральной оси. Так как эта информация недоступна для профилей ICC, необходимо использовать тот же метод, который используется для выходных устройств; запустите нейтральные образцы устройств с помощью метода DeviceToColorimetric, а затем введите входные значения и результаты цветовой метрики.
См. также