Схема и алгоритмы профиля модели цветового устройства WCS
В этом разделе содержатся сведения о схеме профиля модели цветового устройства WCS и связанных с ней алгоритмах.
Этот раздел состоит из следующих подразделов.
- Обзор
- Архитектура профиля модели цветового устройства
- Схема CDMP
- Добавление калибровки WCS CDMP версии 2.0
- Элементы схемы CDMP
- ColorDeviceModelProfile
- ColorDeviceModel
- NamespaceVersion
- Версия
- Документация
- Элемент CRTDevice
- Элемент LCDDevice
- Элемент ProjectorDevice
- Элемент ScannerDevice
- элемент Камера Device
- Элемент RGBPrinterDevice
- Элемент CMYKPrinterDevice
- Элемент RGBVirtualDevice
- PlugInDeviceType
- RGBVirtualMeasurementType
- ГаммаТип
- GammaOffsetGainType
- ГаммаОффсетGainLinearGainType
- ToneResponseCurvesType
- GamutBoundarySamplesType
- FloatPairList
- CMYKPrinterMeasurementType
- RGBPrinterMeasurementType
- RGBCaptureMeasurementType
- OneBasedIndex
- RGBProjectorMeasurementType
- DisplayMeasurementType
- MeasurementConditionsType
- GeometryType
- RGBPrimariesGroup
- NonNegativeCMYKSampleType
- NonNegativeRGBSampleType
- NonNegativeCMYKType
- NonNegativeRGBType
- ExtensionType
- NonNegativeXYZType
- XYZType
- Базовые алгоритмы CDMP
- Связанные статьи
Обзор
Эта схема используется для указания содержимого профиля модели цветового устройства (CDMP). Ниже описаны связанные базовые алгоритмы.
Базовая схема профиля модели устройства (DMP) состоит из данных измерения выборки.
Компонент выборки схемы DMP XML обеспечивает поддержку базовых целевых объектов измерения цвета, фокусируясь на стандартных целевых объектах и целевых объектах, оптимизированных для базовых моделей устройств.
Кроме того, профиль устройства предоставляет конкретные сведения о целевой модели устройства и предоставляет политику, которую базовая резервная модель устройства может использовать, если целевая модель недоступна. Экземпляры профиля могут включать частные расширения с помощью стандартных механизмов расширения XML.
Архитектура профиля модели цветового устройства
Схема CDMP
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:cdm="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
xmlns:wcs="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes"
targetNamespace="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
blockDefault="#all"
version="1.0">
<xs:annotation>
<xs:documentation>
Color Device 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:complexType name="RGBType">
<xs:attribute name="R" type="xs:float" use="required"/>
<xs:attribute name="G" type="xs:float" use="required"/>
<xs:attribute name="B" type="xs:float" use="required"/>
</xs:complexType>
<xs:complexType name="NonNegativeRGBType">
<xs:attribute name="R" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="G" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="B" type="wcs:NonNegativeFloatType" use="required"/>
</xs:complexType>
<xs:complexType name="NonNegativeCMYKType">
<xs:attribute name="C" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="M" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="Y" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="K" type="wcs:NonNegativeFloatType" use="required"/>
</xs:complexType>
<xs:complexType name="NonNegativeRGBSampleType">
<xs:sequence>
<xs:element name="RGB" type="cdm:NonNegativeRGBType"/>
<xs:element name="CIEXYZ" type="wcs:NonNegativeCIEXYZType"/>
</xs:sequence>
<xs:attribute name="Tag" type="xs:string" use="optional"/>
</xs:complexType>
<xs:complexType name="NonNegativeCMYKSampleType">
<xs:sequence>
<xs:element name="CMYK" type="cdm:NonNegativeCMYKType"/>
<xs:element name="CIEXYZ" type="wcs:NonNegativeCIEXYZType"/>
</xs:sequence>
<xs:attribute name="Tag" type="xs:string" use="optional"/>
</xs:complexType>
<xs:group name="RGBPrimariesGroup">
<xs:sequence>
<xs:element name="WhitePrimary" type="wcs:NonNegativeCIEXYZType"/>
<xs:element name="RedPrimary" type="wcs:NonNegativeCIEXYZType"/>
<xs:element name="GreenPrimary" type="wcs:NonNegativeCIEXYZType"/>
<xs:element name="BluePrimary" type="wcs:NonNegativeCIEXYZType"/>
<xs:element name="BlackPrimary" type="wcs:NonNegativeCIEXYZType"/>
</xs:sequence>
</xs:group>
<xs:complexType name="MeasurementConditionsType">
<xs:annotation>
<xs:documentation>
Optional measurement conditions.
We only support CIEXYZ for measurement color space in this version.
If the white point value from the measurement conditions is not available,
the default processing will use
- "D50" for printer and scanners
- "D65" for camera and displays.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="ColorSpace" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="CIEXYZ"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:choice minOccurs="0">
<xs:element name="WhitePoint" type="wcs:NonNegativeCIEXYZType"/>
<xs:element name="WhitePointName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="D50"/>
<xs:enumeration value="D65"/>
<xs:enumeration value="A"/>
<xs:enumeration value="F2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
<xs:element name="Geometry" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="0/45"/>
<xs:enumeration value="0/diffuse"/>
<xs:enumeration value="diffuse/0"/>
<xs:enumeration value="direct"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ApertureSize" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DisplayMeasurementType">
<xs:sequence>
<xs:group ref="cdm:RGBPrimariesGroup"/>
<xs:element name="GrayRamp">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="4096"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RedRamp">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="4096"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GreenRamp">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="4096"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="BlueRamp">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="4096"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TimeStamp" type="xs:dateTime"/>
</xs:complexType>
<xs:complexType name="RGBProjectorMeasurementType">
<xs:sequence>
<xs:group ref="cdm:RGBPrimariesGroup"/>
<xs:element name="ColorSamples">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TimeStamp" type="xs:dateTime"/>
</xs:complexType>
<xs:simpleType name="OneBasedIndex">
<xs:restriction base="xs:int">
<xs:minInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="RGBCaptureMeasurementType">
<xs:sequence>
<xs:element name="PrimaryIndex">
<xs:complexType>
<xs:all>
<xs:element name="White" type="cdm:OneBasedIndex"/>
<xs:element name="Black" type="cdm:OneBasedIndex" minOccurs="0"/>
<xs:element name="Red" type="cdm:OneBasedIndex" minOccurs="0"/>
<xs:element name="Green" type="cdm:OneBasedIndex" minOccurs="0"/>
<xs:element name="Blue" type="cdm:OneBasedIndex" minOccurs="0"/>
<xs:element name="Cyan" type="cdm:OneBasedIndex" minOccurs="0"/>
<xs:element name="Magenta" type="cdm:OneBasedIndex" minOccurs="0"/>
<xs:element name="Yellow" type="cdm:OneBasedIndex" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="NeutralIndices">
<xs:simpleType>
<xs:list itemType="cdm:OneBasedIndex"/>
</xs:simpleType>
</xs:element>
<xs:element name="ColorSamples">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TimeStamp" type="xs:dateTime"/>
</xs:complexType>
<xs:complexType name="RGBPrinterMeasurementType">
<xs:sequence>
<xs:element name="ColorCube">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TimeStamp" type="xs:dateTime"/>
</xs:complexType>
<xs:complexType name="CMYKPrinterMeasurementType">
<xs:sequence>
<xs:element name="ColorCube">
<xs:complexType>
<xs:sequence>
<xs:element name="Sample" type="cdm:NonNegativeCMYKSampleType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TimeStamp" type="xs:dateTime"/>
</xs:complexType>
<xs:complexType name="GammaType">
<xs:attribute name="value" type="wcs:NonNegativeFloatType" use="required"/>
</xs:complexType>
<xs:complexType name="GammaOffsetGainType">
<xs:attribute name="Gamma" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="Offset" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="Gain" type="wcs:NonNegativeFloatType" use="required"/>
</xs:complexType>
<xs:complexType name="GammaOffsetGainLinearGainType">
<xs:attribute name="Gamma" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="Offset" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="Gain" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="LinearGain" type="wcs:NonNegativeFloatType" use="required"/>
<xs:attribute name="TransitionPoint" type="wcs:NonNegativeFloatType" use="required"/>
</xs:complexType>
<xs:simpleType name="FloatList">
<xs:list itemType="xs:float"/>
</xs:simpleType>
<xs:complexType name="OneDimensionLutType">
<xs:sequence>
<xs:element name="Input" type="cdm:FloatList"/>
<xs:element name="Output" type="cdm:FloatList"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="HDRToneResponseCurvesType">
<xs:sequence>
<xs:element name="RedTRC" type="cdm:OneDimensionLutType"/>
<xs:element name="GreenTRC" type="cdm:OneDimensionLutType"/>
<xs:element name="BlueTRC" type="cdm:OneDimensionLutType"/>
</xs:sequence>
<xs:attribute name="TRCLength" use="required">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="GamutBoundarySamplesType">
<xs:sequence>
<xs:element name="RGB" type="cdm:RGBType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="RGBVirtualMeasurementType">
<xs:sequence>
<xs:element name="MaxColorantUsed" type="xs:float"/>
<xs:element name="MinColorantUsed" type="xs:float"/>
<xs:group ref="cdm:RGBPrimariesGroup"/>
<xs:choice>
<xs:element name="Gamma" type="cdm:GammaType"/>
<xs:element name="GammaOffsetGain" type="cdm:GammaOffsetGainType"/>
<xs:element name="GammaOffsetGainLinearGain" type="cdm:GammaOffsetGainLinearGainType"/>
<xs:element name="HDRToneResponseCurves" type="cdm:HDRToneResponseCurvesType"/>
</xs:choice>
<xs:element name="GamutBoundarySamples" type="cdm:GamutBoundarySamplesType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="TimeStamp" type="xs:dateTime"/>
</xs:complexType>
<xs:element name="ColorDeviceModel">
<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="MeasurementConditions" type="cdm:MeasurementConditionsType" minOccurs="0"/>
<xs:element name="SelfLuminous" type="xs:boolean" />
<xs:element name="MaxColorant" type="xs:float"/>
<xs:element name="MinColorant" type="xs:float"/>
<xs:choice>
<xs:element name="CRTDevice">
<xs:complexType>
<xs:sequence>
<xs:element name="MeasurementData" type="cdm:DisplayMeasurementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LCDDevice">
<xs:complexType>
<xs:sequence>
<xs:element name="MeasurementData" type="cdm:DisplayMeasurementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RGBProjectorDevice">
<xs:complexType>
<xs:sequence>
<xs:element name="MeasurementData" type="cdm:RGBProjectorMeasurementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ScannerDevice">
<xs:complexType>
<xs:sequence>
<xs:element name="MeasurementData" type="cdm:RGBCaptureMeasurementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CameraDevice">
<xs:complexType>
<xs:sequence>
<xs:element name="MeasurementData" type="cdm:RGBCaptureMeasurementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RGBPrinterDevice">
<xs:complexType>
<xs:sequence>
<xs:element name="MeasurementData" type="cdm:RGBPrinterMeasurementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CMYKPrinterDevice">
<xs:complexType>
<xs:sequence>
<xs:element name="MeasurementData" type="cdm:CMYKPrinterMeasurementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RGBVirtualDevice">
<xs:complexType>
<xs:sequence>
<xs:element name="MeasurementData" type="cdm:RGBVirtualMeasurementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="PlugInDevice" 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>
Добавление калибровки WCS CDMP версии 2.0
Элемент ColorDeviceModel схемы CDMP был обновлен в Windows 7, чтобы включить новый элемент калибровки. Ниже показано изменение схемы CDMP.
...
<xs:element name="ColorDeviceModel">
<xs:complexType>
<xs:sequence>
...
<xs:element name="PlugInDevice" minOccurs="0">
...
</xs:element>
<xs:element name="Calibration" type="cal:Calibration" minOccurs="0"/>
...
<xs:sequence>
...
<xs:complexType>
...
Элементы схемы CDMP
Примечание.
Первичные выборки — это основные образцы красного, зеленого, синего, черного и белого. Основной пандус — это тональный пандус от наименьшего света до полного первичного значения. Максимальное количество записей в тон-пандус составляет 4096.
Примечание.
Для получения данных измерения требуются IP-адреса.
ColorDeviceModelProfile
Этот элемент имеет тип ColorDeviceModel.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
ColorDeviceModel
Этот элемент представляет собой последовательность следующих вложенных элементов.
- Строка ProfileName,
- необязательная строка описания,
- необязательная строка "Автор",
- optional MeasurementConditions MeasurementConditionsType,
- Самосветимый логический,
- MaxColorant float,
- MinColorant float,
- Выбор элементов
- CRTDevice,
- LCDDevice,
- RGBProjectorDevice,
- СканерDevice,
- Камера Device,
- RGBPrinterDevice,
- CMYKPrinterDevice,
- RGBVirtualDevice,
- PlugInDevice,
- необязательный тип расширения ExtensionType
Условия проверки: каждый вложенный элемент проверяется собственным типом. Вложенные элементы строки имеют не более 10 000 символов. Вложенный элемент MaxColorant должен быть больше или равен нулю (0) и больше, чем вложенный элемент MinColorant. MinColorant может быть отрицательным.
NamespaceVersion
xmlns:cdm="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
targetNamespace="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
Версия
Версия = "1.0" с Windows Vista.
Условия проверки: любое значение >версии 0.1 или <=2.0 допустимо для поддержки некрикционных изменений в формате.
Документация
Схема профиля модели устройства.
Корпорация Майкрософт(C). Все права защищены.
Элемент CRTDevice
Этот элемент представляет собой последовательность вложенных элементов объекта MeasurementData DisplayMeasurementType.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
Элемент LCDDevice
Этот элемент представляет собой последовательность вложенных элементов объекта MeasurementData DisplayMeasurementType.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
Элемент ProjectorDevice
Этот элемент представляет собой последовательность подэлементов RGBProjectorMeasurementType в Объекте MeasurementData RGBProjector.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
Элемент ScannerDevice
Этот элемент представляет собой последовательность подэлементов RGBCaptureMeasurementType в Объекте MeasurementData
Условия проверки: каждый вложенный элемент проверяется собственным типом.
элемент Камера Device
Этот элемент представляет собой последовательность подэлементов RGBCaptureMeasurementType в Объекте MeasurementData
Условия проверки: каждый вложенный элемент проверяется собственным типом.
Элемент RGBPrinterDevice
Этот элемент представляет собой последовательность подэлементов RGBPrinterMeasurementType объекта MeasurementData.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
Элемент CMYKPrinterDevice
Этот элемент представляет собой последовательность подэлементов CMYKPrinterMeasurementType в Объекте MeasurementData.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
Элемент RGBVirtualDevice
Этот элемент представляет собой последовательность вложенных элементов RGBVirtualMeasurementDataType.
Условия проверки: каждый вложенный элемент проверяется собственным типом.
PlugInDeviceType
Этот элемент представляет собой последовательность GUID GUIDType и всех вложенных элементов.
Условия проверки. Идентификатор GUID используется для сопоставления GUID dll DM PlugIn. Существует не более 100 000 пользовательских вложенных элементов.
RGBVirtualMeasurementType
Этот элемент представляет собой последовательность, состоящую из
Группа RGBPrimariesGroup
Выбор
-
- Гамма
- Гамма-OffsetGain
- ГаммаОффсетGainLinearGam
- Элементы ToneResponseCurves
необязательный GamutBoundarySamples GamutBoundarySamplesType
DateStamp dateTime
Условия проверки: каждый вложенный элемент этих типов имеет собственные условия проверки.
ГаммаТип
Этот элемент является сложным типом, состоящим из атрибута
- Гамма NonNegativeFloatType
Условия проверки: для определения из отраслевых отзывов.
GammaOffsetGainType
Этот элемент является сложным типом, состоящим из атрибутов
- Гамма NonNegativeFloatType
- Offset NonNegativeFloatType
- Получение NonNegativeFloatType
Условия проверки: для определения из отраслевых отзывов.
ГаммаОффсетGainLinearGainType
Этот элемент является сложным типом, состоящим из атрибутов
- Гамма NonNegativeFloatType
- Offset NonNegativeFloatType
- Получение NonNegativeFloatType
- LinearGain NonNegativeFloatType
- TransitionPoint NonNegativeFloatType.
Условия проверки: для определения из отраслевых отзывов.
ToneResponseCurvesType
Этот элемент представляет собой последовательность
- RedTRC FloatPairList
- GreenTRC FloatPairList
- BlueTRC FloatPairList
Элемент также имеет атрибут TRCLength типа unsignedint.
Условия проверки: для определения из отраслевых отзывов.
GamutBoundarySamplesType
Этот элемент представляет собой последовательность RGBTypes.
Условия проверки: в настоящее время несвязанное максимальное число случаев, которые должны быть ограничены на основе отраслевых отзывов.
FloatPairList
Этот элемент является простым типом списка пар с плавающей запятой.
Условия проверки: для определения из отраслевых отзывов.
CMYKPrinterMeasurementType
Этот элемент является элементом
последовательность элемента ColorCube, состоящая из последовательности Sample NonNegativeCMYKSampleType
Атрибут TimeStamp dateTime.
Условия проверки: для определения из отраслевых отзывов.
RGBPrinterMeasurementType
Этот элемент является элементом
последовательность элемента ColorCube, состоящая из последовательности Sample NonNegativeRGBSampleType
Атрибут TimeStamp dateTime.
Условия проверки: для определения из отраслевых отзывов.
RGBCaptureMeasurementType
Этот элемент представляет собой последовательность
PrimaryIndex complexType of
-
- White OneBasedIndex
- Необязательный черный OneBasedIndex
- Необязательный red OneBasedIndex
- Необязательный зеленый OneBasedIndex
- Необязательный синий OneBasedIndex
- Необязательный Cyan OneBasedIndex
- Необязательный элемент Magenta OneBasedIndex
- Необязательный желтый oneBasedIndex
NeutralIndices строк OneBasedIndex
Последовательность ColorSamples примера NonNegativeRGBSampleType
Элемент также имеет атрибут TimeStamp dateTime.
Условия проверки: для определения из отраслевых отзывов.
OneBasedIndex
Этот элемент представляет собой простой тип базового ограничения без знака int с minInclusive значением = "1".
Условия проверки: для определения из отраслевых отзывов.
RGBProjectorMeasurementType
Этот элемент представляет собой последовательность
- Группа RGBPrimariesGroup
- элемент ColorSamples, состоящий из последовательности Sample NonNegativeRGBSampleType
Элемент также имеет атрибут TimeStamp dateTime.
Условия проверки: для определения из отраслевых отзывов.
DisplayMeasurementType
Этот элемент представляет собой последовательность
- group RGBPrimariesGroup
- GrayRamp последовательности sample NonNegativeRGBType
- RedRamp последовательности примера NonNegativeRGBType
- GreenRamp последовательности sample NonNegativeRGBType
- BlueRamp последовательности sample NonNegativeRGBType
Элемент DisplayMeasurementType также имеет атрибут TimeStamp dateTime.
Условия проверки: для определения из отраслевых отзывов.
MeasurementConditionsType
MeasurementConditionsType — это последовательность вложенных элементов, содержащих:
- Значение перечисления строк с ограниченным пространством ColorSpace для CIEXYZ
- необязательный выбор перечисления строк WhitePoint NonNegativeXYZType или WhitePointName значений D50, D65, A или F2
- Geometry GeometryType
- Целое число в диафрагмах в миллиметрах
Значения по умолчанию:
- Принтеры RGB и CMYK:
- CIEXYZ MeasurementSpaceType
- D50 WhitePointValue
- 0/45 GeometryType
- 10mm ApertureSize
- Сканеры:
- CIEXYZ MeasurementSpaceType
- D50 WhitePointValue
- 0/45 GeometryType
- 10mm ApertureSize
- Отображение и виртуальное устройство RGB:
- CIEXYZ MeasurementSpaceType
- D65 WhitePointValue
- 0/45 GeometryType
- 10mm ApertureSize
- Камера:
- CIEXYZ MeasurementSpaceType
- D65 WhitePointValue
- Direct GeometryType
- 10mm ApertureSize
Условия проверки: проверка каждого дочернего элемента определяется условиями проверки для этих вложенных элементов. Если отсутствует какой-либо вложенный элемент, используется тип модели устройства, определенный по умолчанию.
GeometryType
Строка
Значения перечисления:
- "0/45"
- "0/диффузный"
- "диффуз/0"
- "Direct"
Условия проверки. Любое значение, за исключением значений перечисления, недопустимо. Эта информация не изменит поведение базовой обработки.
RGBPrimariesGroup
Этот элемент представляет собой последовательность
- WhitePrimary NonNegativeXYZType
- RedPrimary NonNegativeXYZType
- GreenPrimary NonNegativeXYZType
- BluePrimary NonNegativeXYZTYpe
- BlackPrimary NonNegativeXYZType
Условия проверки: для определения из отраслевых отзывов.
NonNegativeCMYKSampleType
Этот элемент представляет собой последовательность
- CMYK NonNegativeCMYKType
- CIEXYZ NonNegativeXYZType
Элемент также имеет необязательную строку тега атрибута
Условия проверки: для определения из отраслевых отзывов.
NonNegativeRGBSampleType
Этот элемент представляет собой последовательность
- RGB NonNegativeRGBType
- CIEXYZ NonNegativeXYZType
Элемент также имеет необязательную строку тега атрибута
Условия проверки: для определения из отраслевых отзывов.
NonNegativeCMYKType
Этот элемент, состоящий из атрибутов
- С плавающей запятой
- M float
- Y float
- K float
Условия проверки: для определения из отраслевых отзывов.
NonNegativeRGBType
Этот элемент, состоящий из атрибутов
- С плавающей запятой R
- Г с плавающей запятой
- С плавающей запятой B
Условия проверки: для определения из отраслевых отзывов.
ExtensionType
Элемент ExtensionType — это последовательность любого типа подэлепа, которая используется для получения конфиденциальной информации из приложений, отличных от Майкрософт.
Условия проверки: этот элемент является необязательным. Вложенного элемента расширения может быть не более 1000.
NonNegativeXYZType
Элемент NonNegativeXYZType состоит из элементов NonNegativeFloatType трех одноточных элементов IEEE с плавающей запятой с плавающей запятой "X", "Y" и "Z". Эти значения ограничены значениями измерений профилей DMP. Эти измерения могут быть либо абсолютными (не относительными) CIEXYZ 1931 отражающими значениями, либо абсолютными (не относительными) ЗНАЧЕНИЯМИ CIEXYZ 1931 прямой (трансмиссивной) в канделях на единицу квадрата.
Условия проверки: допустимы только реальные значения, а отрицательные значения измерения CIEXYZ недопустимы. Поскольку это абсолютные значения, значения могут быть больше 1,0f. Разумное ограничение для любого значения "X", "Y" или "Z". произвольно устанавливается на 100000,0f.
XYZType
Элемент XYZType состоит из трех значений с плавающей запятой IEEE с одной точностью: "X", "Y" и "Z".
Базовые алгоритмы CDMP
Базовая модель устройств CRT
Чтобы понять эту модель, необходимо рассмотреть как процесс символизации, так и моделирование устройства. В процессе символизации измерения XYZ сначала выполняются на цветах, полученных путем заполнения буфера отображения устройства отображения CRT. В следующем примере значения будут создаваться хорошие данные для базовой модели устройства CRT:
Red: R = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, G = 0
Зеленый: G = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = B = 0
Синий: B = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = G = 0
Нейтральные: R = G= B = 0, 8, 16, 32, 64, 128, 192, 255
Кроме того, можно использовать добавочные и нелинейные приращения, отличные от 15. Каждый красный, зеленый, синий и нейтральный пандус должен содержать по крайней мере три образца, но рекомендуется предоставить дополнительные примеры. Необходимо указать образцы для чистого красного, зеленого, синего, черного и белого. Выборки не должны быть равномерно разделены.
Процесс построения матрицы tristimulus состоит из двух шагов. Во-первых, оцените значение XYZ черной точки или вспышку. Этот шаг основан в основном на работе Бернса[3] с немного измененной целевой функцией для нелинейной оптимизации. Во-вторых, вычислите матрицу tristimulus на основе результата из шага один, а также из усреднения вычислений на всех измерениях на канале, а не только на максимальное число цифровых данных.
Каждый из этих шагов содержит подробные процедуры. Отправной точкой является пандус (17 шагов в нашем примере) для каждого канала R, G и B. Когда измерения XYZ отображаются на плоскости chromaticity xy , на рис. 1 показана типичная ситуация. Шаг один состоит из решения нелинейной задачи оптимизации, чтобы найти "лучшую" черную точку, которая свести к минимуму дрейф в хроматисти, как один проходит вдоль каналов R, G и B. На основе Бернс[3], мы стремимся (X K,Y K,Z K), что сводит к минимуму следующую целевую функцию:
где SR,S G и SB являются набором точек данных, соответствующих точкам на каналах R, G и B. Для любого набора S определите следующее:
В предыдущем примере | S | — это карта inality S, т. е. число точек в наборе S. является координатами хроматисти точки , поэтому является средним или центром массы всех точек в заданном S в плоскости хроматисти. Таким образом, это сумма секундных моментов точек о центре массы и является мерой того, как распространите точки об этом. Наконец, является общей мерой распределения трех кластеров точек о их соответствующих центрах массы.
В вычислении , если , то вычисление пропускается, и карта inality S корректируется соответствующим образом.
Несмотря на очевидную сложность целевой функции, это сумма квадратов многих разных функций в X K,Y K ZK (17 точек 2xy -components 3 канала = 102, в примере), и, следовательно, можно использовать стандартные нелинейные методы наименьших квадратов, такие как алгоритм Левенберг-Маркардт, который используется в WCS. Обратите внимание, что предыдущая целевая функция отличается от указанной в Бернсе[3] в том, что последняя функция измеряет дисперсию расстояний от центра массы, чтобы дисперсию было равно нулю, когда точки эквивалентны от центра массы, даже если они могут распространиться довольно немного об этом. В примере распределение точек выполняется непосредственно с помощью второго момента.
Как и в случае с любым итеративным алгоритмом для нелинейной проблемы с наименьшими квадратами, Левенберг-Марквардт требует первоначального предположения. Есть два очевидных кандидата. Один — (0, 0, 0); другой — измеряемая черная точка. Для CTE измеряемая черная точка сначала используется в качестве первоначального предположения. Если превышено не более 100 итераций без достижения порогового значения среднего расстояния от 0,001 из каждой точки от центра массы (которая соответствует пороговому значению (0,001) 17 3 = 0,000051 для целевой функции), то выполняется еще один раунд итерации с первоначальным предположением (0, 0, 0, 0) . Результирующая оценка черной точки — XYZ по сравнению с лучшей оценкой предыдущего раунда итерации (с измеренной черной точкой в качестве первоначального предположения). Используйте оценку, которая дает наименьшее значение для целевой функции. Выбор 100 итераций и расстояние ошибки 0,001 были выбраны эмпирически. В будущих версиях может быть разумно параметризировать расстояние об ошибке.
Результатом одного является оценочная черная точка (XK,Y K,Z K). Шаг два состоит из определения матрицы tristimulus путем усреднения хроматисти точек в трех кластерах, полученных на шаге один. Для ЦРВ это делается в первую очередь для минимизации последствий ошибок измерения. Точки, используемые в среднем chromaticity, должны быть теми же точками, которые используются в оптимизации на шаге один. Другими словами, если первая точка (цифровое число 15, в примере) в каждом пандуле не карта в шаге оптимизации, то же самое необходимо сделать в среднем. Если и являются усреднительными координатами хроматисти красных, зеленых и синих каналов, то следующая процедура определяет матрицу tristimulus. Во-первых, решить линейную систему 3?3:
XW,YW, Z W
После определения матрицы tristimulus определение кривых тонов следует стандартному подходу. Для отображения CRT предполагается, что отдельные каналы соответствуют модели GOG:
где kg является "прирост", 1 -kg является "смещение", и ? — это "гамма". Обратная матрица матрицы tristimulus применяется к данным XYZ нейтральных для получения линейных RGB-данных, которые затем коррелируются с цифровыми значениями RGB с помощью нелинейной регрессии в модели GOG. Эти характеристики не должны быть одинаковыми для каналов R, G и B, и, как правило, не совпадают.
Бернс[1]: Бернс, Биллмейер и Солтзман принципы цветовой технологии, 3-й эд. Джон Уили и сыновья (2000).
Бернс[2]: Бернс и Katoh, цифровая функция передачи радиометрических данных для компьютерных управляемых дисплеев CRT, 97 Стандартов цвета для технологии визуализации CIE, ноябрь 1997 года.
Бернс[3]: Бернс, Фернандес и Таплин, оценка выбросов компьютеров, контролируемых компьютером, цветовые исследования и приложения, 28: 379-383 Wiley Periodicals, Inc. (2003)
Кан[1]: Кан, цветовая технология для электронных устройств визуализации, SPIE (1997)
Katoh[1]: Katoh, Deguchi и Бернс, точное описание предложения монитора CRT (II) для расширения метода CIE и его проверки, Opt. Ред. 8: 397-408 (2001)
Базовые показатели модели устройства LCD
Базовые показатели модели устройств СИД похожи на базовые показатели модели устройств CRT. В этом разделе описаны способы, в которых моделирование LCD отличается от моделирования CRT.
Одно из различий заключается в том, что вы не можете предположить, что дисплеи LCD соответствуют модели GOG, используемой для CRT, и кривые тонов получаются интерполяцией измеренных данных. Из-за этого нейтральная ось устройства должна быть чаще выборка.
Ниже приведены некоторые типичные примеры значений, которые могут генерировать хорошие данные для базовой модели устройства LCD:
Red: R = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, G = 0
Зеленый: G = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = B = 0
Синий: B = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = G = 0
Нейтральные: R = G = B = 0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255.
Процесс усредненного цветового хроматики для получения хроматики для первичных устройств является более важным для LCD, чем для CRT. При отображении измерений XYZ на плоскости chromaticity xy типичная ситуация показана на рис. 1. Обратите внимание на то, как хромость смещается к черной точке. Это связано с тем, что все LCD имеют определенное количество утечки света.
Рис. 1 . Схема хроматисти с использованием необработанных данных без исправления
Если это вычитается из необработанных измерений XYZ, на рис. 2 показана типичная ситуация. Точки Tthe теперь кластеризованы около трех центров, хотя они не падают одинаково на них. В среднем процесс, описанный для CRT, значительно улучшает результаты для LCD.
Рис. 2 . Схема хроматисти с использованием данных с скорректированной черной точкой
Базовая модель устройства записи RGB
Базовая модель устройства захвата RGB — это подкласс класса IDeviceModel. В характеризации цветового захвата устройств, таких как сканеры и цифровые камеры, используется следующий подход. Целевой объект, состоящий из цветовых исправлений с известными значениями CIEXYZ, фиксируется с помощью устройства записи. Результатом захвата является изображение растрового изображения RGB, в котором цвет каждого исправления закодирован в значение RGB. Эти значения RGB устройства зависят от конкретного устройства захвата. Цель цветовой символизации заключается в том, чтобы установить эмпирическую связь между значениями RGB устройства и значениями CIEXYZ или математическим преобразованием из RGB в XYZ, которые моделируют как можно точнее поведение устройства захвата.
Такое математическое преобразование можно моделировать разумно полиномиалами низких градусов. Эта процедура подробно описана в литературе, например Кан[92], Кан[97]. В Kang[97], сообщается, что использует набор из трех многономиальных с 3, 6, 8, 9, 11, 14 или 20 терминов в переменных R, G и B, а три полиномиалы регрессии соответственно в компоненты X, Y, Z пространства CIEXYZ. Для 20-терминной полиномиальной формы является:
Существуют аналогичные выражения для Y и Z. Математический метод для крепления полиномиал попадает в раздел "Многовариантная линейная регрессия" и описывается в любом элементарном тексте в статистике.
Этот метод линейной регрессии страдает от не минимизируя "правильную" целевую функцию. При проектировании линейная регрессия находит наименьшее решение квадратов, которое означает, что коэффициенты, полученные, свести к минимуму общую сумму квадратов ошибок в базовом пространстве или, соответственно, сумму квадратов евклидеанских расстояний. На практике вы хотите свести к минимуму сумму квадратов? Э, где? E является одним из принятых стандартов, таких как CIE94. Минимизация этой целевой функции — это нелинейная проблема регрессии.
В новом механизме lab to XYZ — это цветовое пространство CIE, в которое регрессия, а 20-терминная кубическая полиномиальная используется в качестве модели для устройства захвата или коэффициентов ls,as,bs, чтобы следующие полиномиалы свести к минимуму сумму квадратов? E CIE94 s.
Решение (li, i, b) в 60-измерениях реального числового пространства R203 должно быть таким, чтобы следующая общая ошибка свести к минимуму:
где сумма проходит через все пары точек данных (R i,G i,B;Li,u,i,v ) в образце набора данных, а также дополнительные контрольные точки, которые будут подробно описаны ниже. Это нелинейная проблема регрессии, так как параметры ?i, i, * i* введите в целевую функцию нелинейным способом (не квадратически).
Так как целевая функция ? является нелинейной (и неквадратической) функцией параметров?i, i и * i*, вы должны прибегнуть к итеративным методам для решения проблемы оптимизации. Поскольку форма целевой функции — это сумма квадратов, используется стандартная методика оптимизации, называемая алгоритмом Левенберга-Марквардта. Считается методом выбора для нелинейных проблем с наименьшими квадратами. Для итеративных алгоритмов, таких как Левенберг-Марквардт, необходимо указать первоначальное предположение. Хорошее первоначальное предположение обычно критически важно для поиска правильного минимального значения. В этом случае одним хорошим кандидатом для первоначального предположения является решение проблемы линейной регрессии. Во-первых, свести к минимуму сумму квадрата евклидеанских расстояний в пространстве лаборатории, определив квадратную целевую функцию:
Математическое решение таких "линейных наименьших квадратов" хорошо известно. Потому что?I только отображается в моделировании L, i only отображается в моделировании u, и * i* отображается только в моделировании v; проблема оптимизации может быть разложена на три вложенных кода: один для L, один для u и один для v. Рассмотрим уравнения L . (Уравнения u и уравнения v соответствуют точно тому же аргументу.) Проблема минимизации суммы ошибок в L можно указать как решение следующего матричного уравнения в наименьшем значении квадратов:
где N — общее количество точек данных (исходные примеры точек плюс контрольные точки, созданные таким образом, как описано ниже). Как правило, N гораздо больше 20, поэтому предыдущее уравнение переопределено, требуя решения наименьших квадратов. Доступно решение для закрытой формы ?
На практике прямое вычисление с помощью решения закрытой формы не используется, так как оно имеет плохие числовые свойства. Вместо этого к матрице применяется какой-то алгоритм факторизации матрицы, который уменьшает систему уравнений к канонической форме. В текущей реализации к матрице R применяется декомпозиция Сингулярного значения (SVD), а затем решается результирующая разложенная система.
Решение линейной регрессии, обозначаемое , используется в качестве отправной точки алгоритма Левенберга-Марквардта. В этом алгоритме вычисляется шаг пробной версии, который должен приблизить точку к оптимальному решению. Шаг пробной версии удовлетворяет набору линейных уравнений, зависящих от функционального значения и значений производных в текущей точке. По этой причине производные от целевой функции? относительно параметров?i, i являются обязательными входными данными для алгоритма Левенберга-Марквардта. Хотя существует 60 параметров, существует ярлык, позволяющий вычислить гораздо меньше. По правилу цепочки калькулуса,
where j = 1, 2, 20, Li,u i,v i i являются значением CIELAB точки образца i, а R ij — запись (i,j)th матрицы R, определенной выше. Таким образом, вместо вычислений производных для 60 параметров можно вычислить производные для L,a и b с помощью числовых перенаправляющихся отличий.
Также необходимо настроить критерий остановки для итеративных алгоритмов. В текущей реализации итерации завершаются, если среднее квадратное DECIE94 меньше 1, или число выполненных итераций превысило 10. Число 10 исходит от практического опыта, что если первые несколько итерации не сокращают ошибку значительно, дальнейшие итерации не помогут значительно больше, чем перемещение точки в колебательном режиме, т. е. алгоритм может не конвергироваться. Даже в том случае, если алгоритм разравнивается, мы можем быть уверены, что DECIE94 не хуже, чем то, что мы начали, т. е. с параметрами, полученными из линейной регрессии.
Даже с предыдущим методом нелинейной регрессии существует несколько проблем с установкой. Одна из проблем заключается в том, что полиномиалы, как правило, перезахот или недосхозяйки за пределами точек данных. Искусственные локальные максимы и минима могут быть представлены в процессе крепления. Это может быть противодействуемо с помощью полиномиал низкой степени, что является причиной, по которой вы не должны использовать более трех градусов. Более серьезный аспект чрезмерного перехвата или недосхозяйства заключается в том, что, хотя полиномиал может принять любое реальное значение теоретически, пространство, которое он пытается моделировать, обычно имеет физические ограничения и практические ограничения. CIEXYZ должен иметь все X, Y, Z, не отрицательное, что является физическим ограничением. На практике они принимают значения только в величине сотен, а не тысяч или выше. Аналогичным образом CIELAB или CIELUV имеет собственные физические и практические ограничения. Если пространство RGB заполнено достаточно с примерами точек, проблема перезахвата или подсеть не является серьезной. Однако захваченные точки RGB с устройства захвата обычно не заполняют пространство RGB равномерно. Точки могут заполнить только внутренние 80% куба RGB или хуже, они могут находиться в нижнем размерном массиве. В этом случае регрессиальные полиномиалы могут выполнять плохое задание при экстраполиации значений за пределами точек данных, иногда возвращая нереалистические прогнозы. Требуется модель, которая всегда возвращает достаточно реалистичные значения. Для этого требуется метод, который может эффективно управлять поведением границы полиномиальных регрессий, введя дополнительные затраты для этих полиномиалов, которые ведут себя несердечно вблизи границы куба RGB. Дополнительная мера, чтобы обеспечить, чтобы полиномиалы всегда возвращали реалистичные значения, применяя вырезку выходных данных в пределах спектрального локуса CIE.
Именно на этом этапе моделированию сканера и моделированию камеры друг от друга не удается. Ожидается, что модель камеры экстраполирует в регионы за пределами выборочных точек, включая "зрителя выделения", то же экстраполирование не требуется для модели сканера. Ожидается, что целевой объект сканера будет охватывать символизацию, похожую на печатные материалы для сканирования. Модель сканера по-прежнему должна быть надежной в том смысле, что она не должна возвращать нереалистические значения, но экстраполяция далеко за пределами целевого объекта символизации не требуется. Чтобы обеспечить надежность, выше l-polynomial обрезается на 100, то есть полиномиальная модель вынуждена не экстраполировать за пределами целевого объекта сканера Dmin.
Ожидается, что модель камеры экстраполирует к зрительным выделениям, поэтому вырезка на 100 является нежелательной. Вместо этого используется следующий алгоритм.
Искусственные контрольные точки представлены для управления поведением полиномиальных в регионах с недостаточной выборкой. Стратегически размещая эти контрольные точки с соответствующими значениями, они служат для "извлечения" полиномиал в требуемом направлении. В текущей реализации используются восемь контрольных точек, соответствующих углам куба RGB. Если значения устройства нормализуются в unity, то следующие точки:
R = 0, G = 0, B = 0
R = 0, G = 0, B = 1
R = 0, G = 1, B = 0
R = 0. G = 1, B = 1
R = 1, G = 0, B = 0
R = 1, G = 0, B = 1
R = 1, G = 1, B = 0
R = 1, G = 1, B = 1
За исключением белого R =G B = = 1, связанного со значением CIELAB l = 100, u =v = 0, используется следующий алгоритм экстраполирования для определения соответствующего значения CIELAB, с которым должно быть связано. Как правило, для заданного (R,G,B), вес связан с каждым из наборов данных (Ri,G,B) в выборочной группе данных. Существует две цели для назначения веса. Во-первых, вес обратно пропорциональен расстоянию между (R,G,B) и (Ri,Gi,B). Во-вторых, вы хотите отключить карта или назначить вес 0, точек, которые имеют другой оттенок заданной точки (R,G,B). Чтобы учесть оттенки, рассмотрите точки, лежащие в конусе, вершина которого находится в (0, 0, 0), ось которого совпадает с соединением линии (0, 0, 0) и (R,G,B), и чьи полу вертикальный угол? удовлетворяет коса ? = 0,9. На рисунке 3 показана иллюстрация этого конуса.
Рис. 3 . Фильтрация точек выборки по углам и расстоянию. Форма изображенного района предназначена только для иллюстрации. Фактическая фигура зависит от используемого расстояния; Это ромба-фигурный район, если используется 1 норма.
В этом конусе выполняется вторая фильтрация, основанная на расстоянии RGB, который использует 1-норму, определяемую
С текущим конусом начальный поиск находится на расстоянии от 0,1 от (R,G,B). Если точка не найдена в пределах этого радиуса, радиус увеличивается на 0,1, а поиск перезапускается. Если следующий раунд не указывает ни на что, радиус увеличивается на 0,1. Этот процесс продолжается до тех пор, пока радиус не превышает MaxDist/5, где MaxDist = 3 в случае 1-норм. Если точка не найдена, конус увеличивается путем уменьшения косы? на 0,05, то есть увеличение угла? и перезапуск всего процесса с увеличением радиуса. Этот процесс продолжается до тех пор, пока не будет найден непустый набор точек или cos? достигает 0, то есть конус открылся, чтобы стать самолетом. На этом этапе поиск перезапускается путем увеличения радиуса, за исключением того, что поиск продолжается, пока радиус не достигнет MaxDist. Это гарантирует, что в худшем случае будет найден непустый набор точек. Алгоритм представлен на схеме потоков на рис. 4.
Рис. 4 . Схема потока для определения набора точек выборки, используемых в экстраполации для входного ЗНАЧЕНИЯ RGB
Предположим, что предыдущий процесс дает непустый набор точек (Ri,Gi,B) и соответствующий (Li,a i,b), а затем для каждой такой точки присваивается вес wi, заданный
Наконец, экстраполант определяется
Предыдущие уравнения представляют собой экземпляр "инверсно-расстояние весовых методов", обычно называемых методами Shepard. При выполнении каждого из восьми точек из eq (6) через алгоритм получаются восемь контрольных точек, каждый из которых имеет значения R,G,B и L,b, которые помещаются в пул с исходными данными образца.
Чтобы модель всегда создает допустимые значения цвета, а также для целостности системы и стабильности по всему конвейеру обработки цветов, необходимо выполнить окончательное вырезка в выходные данные многономиальной модели. Визуальный диапазон CIE описывается атроматическим компонентом (Y или L) и хроматичным компонентом (xy или a'b), связанными с пространством XYZ путем проецивного преобразования. В текущей реализации используется chromaticity a'b, так как он напрямую связан с пространством CIELUV. Для любого значения CIELAB сначала клип L к не-отрицательному значению:
Чтобы разрешить экстраполирование для спектральных выделений, L не обрезается в 100, "обычный" верхний предел для L в лабораторном пространстве.
Затем, если L = 0, то обрезаются a и b , чтобы a*= b =* 0. Если L ? 0, вычисление
Это компоненты вектора в схеме a'b от белой точки (u?,v?' ) до цвета в вопросе. Определите спектральный локус CIE как выпуклый корпус всех точек (a', b), параметризованный длиной волны ?:
где находятся функции сопоставления цветов CIE для 2-градусного наблюдателя. Если вектор находится за пределами локуса CIE, цвет обрезается до точки на локусе CIE, который является пересечением локуса и линии, определенной вектором. См. рис. 5. Если вырезка произошла, то значение b восстанавливается путем первого вычитания a?' и b?' из обрезанного "и b", а затем умножается на 13 L.
Рис. 5 . Алгоритм вырезки для значений лаборатории, которые находятся за пределами визуального гамма CIE
В текущей реализации спектральный локус CIE в плоскости a'b представлен кусковой линейной кривой с 35 сегментами (соответствующим длине волны от 360 nm до 700 nm включительно). Упорядочив сегменты линий таким образом, чтобы их вложенные угла в белую точку возрастали, что эквивалентно убыванию волн, сегмент линии, пересекающийся с лучом, сформированным выше вектором, можно найти простым двоичным поиском.
Базовая модель устройства принтера RGB
Характеризация устройства принтера RGB состоит из создания эмпирической модели устройства, которая прогнозирует цвет CIELUV для любого заданного значения RGB
Существует два способа создания эмпирической модели. Один из способов — использовать данные устройства для принтера RGB, а другой — использовать аналитические данные параметров. В первом случае данные измерения, предоставляемые пользователем для устройства принтера RGB, используются для создания таблицы подстановки 3-D (LUT). Данные измерения состоят из значений XYZ для унифицированных исправлений RGB. Типичные размеры выборки — 9 или 17 для каждого компонента. Каждое исправление измеряется с помощью цветового или спектрометра в пространстве CIEXYZ. Затем значение XYZ для исправления преобразуется в значение CIELUV, формируя 3-D LUT. В модели устройства метод интерполяции Сакамото применяется к 3-D LUT для прогнозирования данных CIELUV для заданных данных RGB. (Confer US Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. Срок действия двух патентов упоминание истек.). Данные аналитических параметров, передаваемые во втором методе, — это просто LUT, созданный ранее. Как правило, этот LUT был построен с помощью первого метода, хотя он может быть создан вручную.
В текущем управлении цветами исходная карта определяется как карта, которая идет от RGB-пространства к пространству, независимому от устройства, цветового пространства CIEXYZ. Целевая карта определяется как карта, которая идет от цветового пространства CIEXYZ от устройства до пространства RGB. Это обратная карта источника.
Эмпирическая модель непосредственно используется в исходной карте. Сначала он сопоставляет данные RGB в данные CIELUV, которые преобразуются в данные XYZ. На карте назначения данные CIEXYZ независимо от устройства сначала преобразуются в данные CIELUV. Затем эмпирическая модель и классический метод Newton-Raphson используются для прогнозирования лучших данных RGB для данных CIELUV. Ниже приведены сведения о преобразовании данных CieLUV в RGB:
После создания 3-D LUT от RGB до CieLUV карта от RGB до LUV создается с помощью интерполяции тетрахедральных данных на RGB. Эта карта обозначается следующими уравнениями:
Инверсия карты состоит из решения для любого цвета , следующей системы нелинейных уравнений:
Нелинейное уравнение, основанное на классическом методе Newton-Raphson, используется в новом CTE. Начальное угадывание или предистория см. ранее (R 0, G 0, B 0) получается путем поиска по "начальной матрице", состоящей из однородной сетки 8x8x8 пар предварительно вычисляемых (RGB,Luv). Выбран rgb соответствующий Luv, ближайший к L*u*v*. Каждая точка в матрице начального значения соответствует центру ячейки, чтобы итерации не начинались с точки на границе куба RGB. Другими словами, RGB семян определяется: STEP = 1/8 s ijk = (STEP/2 + (i-1) STEP, STEP/2+(j-1)STEP, STEP/2+(k-1)STEP) с i,j,k = 1...8 На i-м шаге Ньютон-Рафсон, следующая оценка получается формулой:
Итерация останавливается, если ошибка (расстояние в пространстве CIELUV) меньше заданного уровня допуска (0,1 в CTE) или когда число итераций превысило максимально допустимое число итераций (10 в CTE). Значения допустимости и числа итераций эмпирически определяются как эффективные. В будущих версиях значение допуска может быть изменено.
Матрица Джейкобана вычисляется с помощью переадресации, за исключением точки границы (одна или несколько R, G, B — 1), где вместо этого используется обратная разница. Вместо вычисления обратной матрицы Джейкобиана линейная система решается непосредственно с помощью ликвидации Гаусс-Иордании с полным поворотом.
В конце итерации конвергенция все еще не может быть достигнута, так как Ньютон-Рафсон является "локальным" алгоритмом, то есть он работает хорошо, только если начать с первоначального предположения, которое близко к истинному решению. Если в конце итерации Ньютон-Рафсона конвергенция в предопределенной отказоустойчивости ошибок не достигнута, то итерации перезапускаются с новым набором семян, определенных следующим образом.
Например, лучшее решение, полученное до сих пор, — r, g, b. Из этого решения семена Афиши являются производными, где N = 4. Интуитивно решение перемещается в сторону центра в размер шага, который зависит от N. См. рисунок 6.
Рис. 6 . Направление пертурбации решения зависит от того, в какой октант он находится.
Другими словами, если r 0.5, значение канала R > уменьшается, в противном случае значение увеличивается. Существует аналогичная логика для каналов G и B. Точные определения:
PERTURBATION = 0,5/(N+1)
Dir(r) = -1, если r > 0,5; +1 в противном случае. Аналогично для Dir(g) и Dir(b)
The jth a posteriori seed, s ????, is (r + Dir(r) *j * PERTURBATION, g + Dir(g) * j * PERTURBATION, b + Dir(b) * j * PERTURBATION)
Попробуйте первый ???? и если он дает новое решение в пределах допустимости ошибок, можно остановить. В противном случае попробуйте использовать второй ???? и т. д. до ????. Nth
Схемы всего алгоритма показаны на рис. 7.
Рис. 7 . Схематика инвертирования модели устройства
Базовая модель виртуальных устройств RGB
Эта модель устройства (DM) — это простой алгоритм воспроизведения матрицы и тона. Матрица является производным от белой точки и первичных элементов с помощью стандартных алгоритмов обработки цветов. Кривая воспроизведения тонов является производным от параметров измерения в соответствии с описанием ICC кривой и параметрики (или инвертировано по мере необходимости). Подробные сведения о внутренних алгоритмах будут предоставлены после дополнительной проверки проблем с высоким динамическим диапазоном.
Модель виртуального устройства RGB — это идеальная матрица или кривая воспроизведения тона, аналогичная дизайну профиля на основе трех компонентов ICC. Параметры "виртуального измерения" dm включают значение белой точки (абсолютный CIEXYZ), первичные значения RGB (абсолютный CIEXYZ) и кривую воспроизведения тонов, основанную на параметрике ICC ParametricCurveType и CurveType в формате XML в соответствии со схемами DMP.
Кодировка типа функции ICC parametricCurveType и соответствующая поддержка в IRGBVirtualDeviceModelBase показана в следующей таблице.
Тип функции * | Параметры | Тип | Примечание. |
---|---|---|---|
g |
ГаммаТип |
Общая реализация |
|
ga b |
GammaOffsetGainType |
CIE 122-1966 |
|
ga b c |
GammaOffsetGainOffsetType |
IEC 61966-3 |
|
ga b c d |
ГаммаОффсетGainGainGainType |
IEC 61966-2.1 (sRGB) |
|
ga b c d e f |
Н/П |
Не поддерживается в WCS |
Кривая тона для виртуальных устройств RGB применяется в DeviceToColorimetric между входными данными, pDeviceColors и умножением матрицы. Для ColorimetricToDevice метод должен использоваться для инвертирования кривой тона. В базовой реализации это делается путем прямой интерполяции в той же кривой тона, используемой для DeviceToColorimetric.
Кривые должны быть указаны в профилях в виде пар чисел в плавающем пространстве. Первое число представляет значения в pDeviceColors. Второе число представляет выходные данные кривой тона. Все значения в кривой тона должны находиться между minColorantUsed и maxColorantUsed. Кривые тонов должны содержать не менее двух записей: один для minColorantUsed и один для maxColorantUsed. Максимальное количество записей в ToneCurve — 2048. Как правило, чем больше записей в таблице, тем более точно можно моделировать кривизну. Отрезковая линейная интерполяция выполняется между записями.
Можно рассмотреть альтернативные методы интерполяции. Если вы знаете что-то о базовом поведении устройства, вы можете использовать меньше выборок и модель более точно с более высокой кривой порядка. Но если вы используете неправильный тип кривой, вы будете очень неточными. Без дополнительных сведений вы не можете угадать тип кривой. Поэтому используйте линейную интерполяцию и укажите множество точек данных.
Базовая модель устройства принтера CMYK
Характеризация устройства принтера CMYK состоит из создания эмпирической модели устройства, которая прогнозирует печатный цвет для любого заданного значения CMYK. Символизация также включает в себя инверсию этой модели, чтобы можно было дать рецепт значения CMYK для данного цвета. Обычно это определяется с точки зрения значения CIEXYZ или CIELAB.
Как правило, используется целевой объект IT8.7/3, содержащий исправления CMYK. Исправления состоят из выборки пространства CMYK четко определенным образом, чтобы прямоугольная сетка (с неоднородным интервалом в C, M, Y и K) формировалась. Затем каждое исправление измеряется с помощью цветового или спектрометра. Измерения в значениях CIEXYZ затем образуют таблицу подстановки (LUT), из которой эмпирическая модель принтера строится с помощью метода интерполяции Сакамото. Патент США 4275413 (Сакамото et al.), ПАТЕНТ США 4511989 (Сакамото), Кан [1]. Срок действия двух патентов упоминание истек.
Конкретные требования для примеров измерений CMYK, необходимых для того, чтобы профиль модели устройства был принят как допустимый моделью базового устройства принтера CMYK, как показано ниже. (Выборка набора наиболее четко описывается как набор примеров кубов CMY, каждый из которых связан с определенным уровнем K.)
Как минимум, допустимые кубы CMY должны быть предоставлены для уровней K = 0 и K = 100.
Промежуточные уровни K могут быть неоднородными.
Любой промежуточный уровень K без допустимого куба CMY будет игнорироваться.
Кубы CMY могут использовать неоднородные интервалы выборки (интервалы сетки), но один и тот же набор интервалов выборки должен использоваться во всех измерениях C,M и Y в кубе CMY для заданного уровня K.
Каждый куб CMY уровня K может использовать другое число и интервалы интервалов выборки.
Все куби CMY должны содержать "угловы" куба CMY, то есть примеры CMY по адресу [0,0,0], [0,0,100], [0,100,0], [100 0,0], [0,100,100], [100,100], [100,100, 0], [100 100,100].
Все промежуточные уровни сетки CMY должны быть полностью образцы в каждом канале. Другими словами, образец должен существовать на каждом пересечении сетки 3-D в кубе CMY.
Для кубов K = 0 и K = 100 кубов CMY, 2x2x2 "только для углов" являются минимальным допустимым.
[ПРИМЕЧАНИЕ. Для уровней K=0 и K=100 куб CMY будет обработан как куб 2x2x2 "только для углов"; промежуточный уровень выборки игнорируется. 4x4x4 и более крупные куби будут использовать все примеры в сетке.]
Для промежуточных уровней K куби 4x4x4 CMY являются минимальным допустимым.
Профиль высокого качества будет использовать более подробные сетки выборки, чем минимальный, необходимый для допустимости, обычно 9x9x9x9 или более поздней версии. Примеры из целевых объектов IT8.7.3, IT8.7/4 и ECI создают допустимые профили моделей устройств (DMPS)для модели базового устройства принтера CMYK. Хотя эта модель устройства может игнорировать лишние примеры (вне сетки) в этих целевых объектах, это не гарантируется для других целевых объектов, поэтому рекомендуется удалить лишние образцы из наборов измерений, поступающих в профили для этой модели устройства.
Инверсия модели принтера представляет больше трудностей. Учитывая цвет ввода в CIECAM, существует вопрос о том, находится ли этот цвет в гамме принтера. Существует также вопрос о расположении точек в пространстве цветового вида. Хотя мы можем упорядочить значения CMYK для падения на прямоугольную сетку, как это делается в целевом объекте IT8.7/3, то же самое нельзя сказать о результирующий печатный цвет, как они расположены в пространстве внешнего вида цвета. Как правило, они разбросаны в пространстве внешнего вида цвета без определенного шаблона.
Как правило, существует два подхода к проблеме инверсии разбросанных точек. Одним из способов является использование геометрического подразделения гаммы принтера с помощью простых трехмерных сплошных веществ, таких как тетрахедра. Подразделение гаммы принтера в пространстве внешнего вида цвета может быть вызвано из соответствующего подразделения пространства CMY(K), см. hung[93], Kang[97]. Этот подход имеет преимущество вычислительной простоты. В случае тетрахедрона в интерполяции используются только четыре точки. С другой стороны, результат сильно зависит от нескольких точек, что означает, что ошибка измерения будет иметь значительное влияние на результат. Интерполяция также, как правило, не так гладко. Второй подход не предполагает каких-либо подразделений и основан на методе интерполяции разбросанных данных. Классическим примером является метод интерполяции Shepard или обратный весовый метод (См. Шепард [68]). Здесь несколько точек, окружающих точку ввода, выбираются каким-то образом, каждая назначенная весовая, обычно обратно пропорциональная расстоянию, и интерполяция принимается в качестве взвешенной средней из соседних точек. В этом подходе выбор соседних точек имеет первостепенное значение для производительности. Хотя слишком мало точек может отображать интерполяцию неточной и неровной, слишком много точек накладывают высокую вычислительную стоимость, так как весы обычно нелинейные функции и дорогостоящие вычисления.
Два подхода, описанные выше, имеют проблемы. Подход деления критически зависит от того, что данные являются достаточно пустотой шума, и, как правило, интерполяция не очень гладкая. Интерполяция разбросанных данных более терпима к шуму данных, и, как правило, обеспечивает более плавную интерполяцию, но это вычисление дороже.
Новый CTE принимает альтернативный подход. Устройство CMYK рассматривается как коллекция нескольких устройств CMY, каждая из которых имеет определенное значение черного (K). С помощью алгоритма выбора, который принимает в качестве параметров светность и хрома, выбирается уровень черного цвета. Значения CMY получаются путем инверсии соответствующего CMY в таблицу Luv с помощью методов Newton, используемых в другом месте алгоритмом принтера RGB.
Для этого выполните следующие действия:
- Распечатайте целевой объект символизации, который является целевым объектом IT8.7/3 или целевым объектом, содержащим выборку пространства CMYK регулярно или нерегулярно.
- Измеряйте целевой объект с помощью спектротометра и преобразуйте измерения в пространство CIELUV.
- Создайте карту вперед из CMYK в Luv.
- Используйте карту пересылки для создания набора карт CMY в Luv для диапазона значений K.
- Для любого входного значения Luv соответствующее значение CMYK получается путем выбора одного из карт, созданных на шаге 4 выше, и инвертирования с помощью метода Newton для получения цветового набора CMY для сопровождения выбранного значения K.
Шаги 1 и 2, которые являются стандартными процедурами, выполняются программой профилирования, которая не является частью нового CTE. Целевой объект IT8.7/3 содержит достаточно подробную выборку всех значений CMYK на различных уровнях C, M, Y и K. Кроме того, можно использовать настраиваемый целевой объект с единой выборкой каналов C, M, Y и K. После печати целевого объекта можно использовать спектрометр или цветометр для измерения значения XYZ каждого исправления, а значение XYZ можно преобразовать в значение Luv с помощью модели CIELUV.
Шаг 3, построение прямой карты из CMYK в Luv, можно достичь, применяя любой известный метод интерполяции, например тетрахедральный или многолинейный метод, в прямоугольной сетке в пространстве CMYK. В новом CTE используется 4-мерная интерполяция тетрахедра. Поскольку сетки выборки CMY обычно отличаются на каждом уровне K, однако мы используем метод супер-выборки, как описано ниже. Для заданной точки CMYK уровни K сначала определяются на основе значения K. Затем введите "супер-сетку" на каждом уровне K, который является объединением сетки CMY на каждом из двух уровней K. На каждом уровне K значение Luv любой вновь введенной точки сетки получается трехмерной интерполяцией тетрахедральной интерполяции в пределах этого уровня K. Наконец, на этой новой сетке выполняется интерполяция 4-мерной тетрахеральной интерполяции для конкретной точки CMYK.
Рис. 8 . Суперсамплинг
Шаг 4 создает набор таблиц подстановки CMY-to-Luv (LUT). Прямая карта, созданная на шаге 3, вызывается многократно для повторного изменения пространства CMYK. Цветовое пространство CMYK используется с использованием равномерного интервала K и другого, но по-прежнему равномерно разделенного, выборки CMY.
Шаг 5 — это процедура получения значения CMYK с помощью LUT, созданных на шаге 4 для любой входной точки Luv. Соответствующее значение K выбирается путем анализа легкости, а также степени цвета в запрошенном Луве. После выбора таблицы значения CMY получаются из таблицы с помощью метода Newton (как описано в модели устройства принтера RGB ранее).
Пространство CIELUV используется в модели принтера вместо CIEJab, так как модель устройства должна основываться исключительно на данных цветовой метрики, доступных в DMP. DMP содержит данные цветовой метрики для каждого измеряемого исправления, включая точку белого носителя, поэтому можно преобразовать данные CIEXYZ в данные CIELUV. Однако невозможно преобразовать в CIECAM02 JCh или Jab, так как в DMP нет доступа к сведениям о состоянии просмотра.
Базовая модель устройства RGB Projector
Примечание. Многие проекторы RGB имеют несколько рабочих режимов. В одном режиме, который часто используется по умолчанию и может вызываться примерно так же, как "презентация", цветовая реакция проектора оптимизирована для максимальной яркости. Однако в этом режиме проектор теряет возможность воспроизвести свет, немного хроматические цвета, такие как бледные желтые и некоторые тоны плоти. В другом режиме, часто называемом "фильм", "видео", или "sRGB", проектор оптимизирован для воспроизведения реалистичных изображений и естественных сцен. В этом режиме максимальная яркость отключается для улучшения общего качества цветопередачи. Чтобы получить удовлетворительное воспроизведение цвета с помощью проекторов RGB, необходимо разместить проектор в режиме, где можно воспроизвести гладкую гамму цветов.
Рис. 9 . Модель устройства защиты от потери данных
Входящее значение RGB проходит через два вычислительных пути. Первым является модель матрицы, которая приводит к значению XYZ. За этим сразу же следует преобразование из XYZ в Luv. Во-вторых, интерполяция LUT неоднородна с помощью интерполяции тетрахедра. Результат интерполяции уже находится в пространстве Luv путем построения. Для получения прогнозируемого значения Luv добавляются два выходных данных. Это, наконец, преобразуется в XYZ, что является ожидаемым выходным результатом модели цветовой метрики для устройства защиты от потери данных.
Так как проекторы являются устройствами отображения, они также поддерживают инверсию модели, то есть преобразование из XYZ в RGB. Так как модель устройства преобразует пространство RGB в пространство XYZ, которое является трехмерным, инверсия эквивалентна решению трех нелинейных уравнений в трех неизвестных. Это можно сделать с помощью стандартных методов решения уравнений, таких как Ньютон-Рэпсон. Однако предпочтительнее сначала преобразовать XYZ в Luv, а затем инвертировать преобразование Luv To RGB, так как пространство Luv является более перцептуально линейным, чем пространство XYZ.
Базовая модель устройства ICC
Взаимодействие с рабочими процессами CITE ICC включается путем создания специального профиля базовой модели устройства ICC, который сохраняет объект профиля и создает преобразование ICC с помощью профиля XYZ no-op. Затем это преобразование используется для преобразования между цветами устройства и CIEXYZ.
Рис. 10 . Взаимодействие рабочих процессов CITE ICC