Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet innehåller information om WCS Color Device Model Profile Schema och dess associerade algoritmer.
Det här avsnittet innehåller följande avsnitt:
- Översikt
- för profilarkitektur för färgenhetsmodell
- CDMP-schemat
- WCS CDMP v2.0 Kalibreringstillägg
-
CDMP-schemaelementen
- ColorDeviceModelProfile
- ColorDeviceModel
- NamespaceVersion
- version
- dokumentation
- CRTDevice-element
- LCDEnhetselement
- ProjectorDevice-element
- ScannerEnhetselement
- CameraDevice-element
- RGBPrinterEnhetselement
- CMYKPrinterDevice-elementet
- RGBVirtualDevice-element
- PlugInDeviceType
- RGBVirtualMeasurementType
- GammaType
- GammaOffsetGainType
- GammaOffsetGainLinearGainType
- ToneResponseCurvesType
- GamutBoundarySamplesType
- FloatPairList
- CMYKPrinterMeasurementType
- RGBPrinterMeasurementType
- RGBCaptureMeasurementType
- OneBasedIndex
- RGBProjectorMeasurementType
- DisplayMeasurementType
- MeasurementConditionsType
- GeometryType
- RGBPrimariesGroup
- NonNegativeCMYKSampleType
- NonNegativeRGBSampleType
- NonNegativeCMYKType
- NonNegativeRGBType
- ExtensionType
- NonNegativeXYZType
- XYZType
- CDMP-baslinjealgoritmerna
- Relaterade ämnen
Överblick
Det här schemat används för att ange innehållet i en färgenhetsmodellprofil (CDMP). De associerade baslinjealgoritmerna beskrivs nedan.
DMP-schemat (Basic Device Model Profile) består av samplingsmätningsdata.
Samplingskomponenten i DMP XML-schemat ger stöd för grundläggande färgmätningsmål, med fokus på vanliga standardmål och mål som optimerats för baslinjeenhetsmodellerna.
Dessutom innehåller enhetsprofilen specifik information om målenhetsmodellen och tillhandahåller en princip som baslinjens reservenhetsmodell kan använda om målmodellen inte är tillgänglig. Profilinstanserna kan innehålla privata tillägg med hjälp av standardmekanismer för XML-tillägg.
Profilarkitektur för färgenhetsmodell
CDMP-schemat
<?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 v2.0 Kalibreringstillägg
Elementet ColorDeviceModel i CDMP-schemat har uppdaterats i Windows 7 för att inkludera det nya kalibreringselementet. Följande visar ändringen av CDMP-schemat.
...
<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-schemaelementen
Not
Primärt är primära exempel på rött, grönt, blått, svart och vitt. En primär ramp är en tonramp från minsta luminans till fullständigt primärt värde. Det maximala antalet poster i en tonramp är 4096.
Not
DMP:er måste ha måttdata.
ColorDeviceModelProfile
Det här elementet är av typen ColorDeviceModel.
valideringsvillkor: Varje underelement verifieras av sin egen typ.
ColorDeviceModel
Det här elementet är en sekvens med följande underelement
- ProfileName-sträng,
- valfri beskrivningssträng,
- valfri redigeringssträng,
- valfri MeasurementConditions MeasurementConditionsType,
- Self-Luminous boolesk,
- MaxColorant float,
- MinColorant float,
- Val av element
- CRTDevice,
- LCDEnhet,
- RGBProjectorDevice,
- ScannerDevice,
- CameraDevice,
- RGBPrinterDevice,
- CMYKPrinterDevice,
- RGBVirtualDevice,
- PlugInDevice,
- valfri Extension ExtensionType
valideringsvillkor: Varje underelement verifieras av sin egen typ. Strängunderelement har högst 10 000 tecken. Underelementet MaxColorant måste vara större än eller lika med noll (0) och större än underelementet MinColorant. MinColorant kan vara negativ.
NamnområdeVersion
xmlns:cdm="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
targetNamespace="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
Version
Version = "1.0" med Windows Vista.
verifieringsvillkor: Alla versionsvärden >0.1 eller <=2.0 är giltiga för att stödja icke-icke-bakåtkompatibla ändringar i formatet.
Dokumentation
Schema för enhetsmodellprofil.
Copyright (C) Microsoft. Alla rättigheter reserverade.
CRTDevice-element
Det här elementet är en sekvens av underelement i en MeasurementData DisplayMeasurementType.
valideringsvillkor: Varje underelement verifieras av sin egen typ.
LCDDevice-element
Det här elementet är en sekvens av underelement i en MeasurementData DisplayMeasurementType.
valideringsvillkor: Varje underelement verifieras av sin egen typ.
ProjectorDevice-element
Det här elementet är en sekvens av underelement i en MeasurementData RGBProjectorMeasurementType.
valideringsvillkor: Varje underelement verifieras av sin egen typ.
ScannerDevice-element
Det här elementet är en sekvens av underelement i en MeasurementData RGBCaptureMeasurementType
valideringsvillkor: Varje underelement verifieras av sin egen typ.
CameraDevice-element
Det här elementet är en sekvens av underelement i en MeasurementData RGBCaptureMeasurementType
valideringsvillkor: Varje underelement verifieras av sin egen typ.
RGBPrinterDevice-element
Det här elementet är en sekvens av underelement i en MeasurementData RGBPrinterMeasurementType.
valideringsvillkor: Varje underelement verifieras av sin egen typ.
CMYKPrinterEnhetselement
Det här elementet är en sekvens av underelement i en MeasurementData CMYKPrinterMeasurementType.
valideringsvillkor: Varje underelement verifieras av sin egen typ.
RGBVirtualDevice-element
Det här elementet är en sekvens av underelement i en RGBVirtualMeasurementDataType.
valideringsvillkor: Varje underelement verifieras av sin egen typ.
PlugInDeviceType
Det här elementet är en sekvens av en GUID GUIDType och eventuella underelement.
verifieringsvillkor: GUID används för att matcha DM PlugIn Dll GUID. Det finns högst 100 000 anpassade underelement.
RGBVirtualMeasurementType
Det här elementet är en sekvens som består av
RGBPrimariesGroup-grupp
Ett val av
-
- Gamma
- GammaOffsetGain
- GammaOffsetGainLinearGam
- ToneResponseCurves-element
valfri GamutBoundarySamples GamutBoundarySamplesType
TimeStamp dateTime
valideringsvillkor: Varje underelement av dessa typer har sina egna valideringsvillkor.
GammaType
Det här elementet är en komplex typ som består av attributet
- Gamma NonNegativeFloatType
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
GammaOffsetGainType
Det här elementet är en komplex typ som består av attributen
- Gamma NonNegativeFloatType
- Offset NonNegativeFloatType
- Få NonNegativeFloatType
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
GammaOffsetGainLinearGainType
Det här elementet är en komplex typ som består av attributen
- Gamma NonNegativeFloatType
- Offset NonNegativeFloatType
- Få NonNegativeFloatType
- LinearGain NonNegativeFloatType
- TransitionPoint NonNegativeFloatType.
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
ToneResponseCurvesType
Det här elementet är en sekvens med
- RedTRC FloatPairList
- GreenTRC FloatPairList
- BlueTRC FloatPairList
Elementet har också attributet TRCLength av osignerad typ.
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
GamutBoundarySamplesType
Det här elementet är en sekvens av RGB RGBTypes.
valideringsvillkor: För närvarande obundna maximala förekomster, som ska begränsas baserat på branschfeedback.
FloatPairList
Det här elementet är en enkel typ av lista över par med flyttal.
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
CMYKPrinterMeasurementType
Det här elementet är en
sekvens av ColorCube-element som består av en sekvens av Sample NonNegativeCMYKSampleType
TimeStamp dateTime-attribut.
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
RGBPrinterMeasurementType
Det här elementet är en
sekvens av ColorCube-element som består av en sekvens av Sample NonNegativeRGBSampleType
TimeStamp dateTime-attribut.
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
RGBCaptureMeasurementType
Det här elementet är en sekvens med
PrimaryIndex complexType of
-
- White OneBasedIndex
- Valfritt Svart OneBasedIndex
- Valfritt Red OneBasedIndex
- Valfritt grönt OneBasedIndex
- Valfritt Blue OneBasedIndex
- Valfritt Cyan OneBasedIndex
- Valfritt Magenta OneBasedIndex
- Valfritt gult OneBasedIndex
NeutralIndices av linjer i OneBasedIndex
ColorSamples-sekvens av Sample NonNegativeRGBSampleType
Elementet har också ett TimeStamp dateTime-attribut.
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
OneBasedIndex
Det här elementet är en enkel typ av begränsningsbas som är osignerad int med minInclusive-värdet = "1".
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
RGBProjectorMeasurementType
Det här elementet är en sekvens med
- RGBPrimariesGroup-grupp
- element ColorSamples som består av sekvens av Sample NonNegativeRGBSampleType
Elementet har också ett TimeStamp dateTime-attribut.
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
DisplayMeasurementType
Det här elementet är en sekvens med
- group RGBPrimariesGroup
- GrayRamp av sekvens av Sample NonNegativeRGBType
- RedRamp av sekvens av Sample NonNegativeRGBType
- GreenRamp av sekvens av Sample NonNegativeRGBType
- BlueRamp av sekvens av Sample NonNegativeRGBType
Elementet DisplayMeasurementType har också ett TimeStamp dateTime-attribut.
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
MeasurementConditionsType
MeasurementConditionsType är en sekvens med underelement som innehåller:
- ColorSpace begränsad stränguppräkningsvärde för "CIEXYZ"
- valfritt val av WhitePoint NonNegativeXYZType eller WhitePointName-stränguppräkning av värdena D50, D65, A eller F2
- GeometrigeometriTyp
- ApertureSize heltal i millimeter
Standardvärdena är:
- RGB- och CMYK-skrivare:
- CIEXYZ MeasurementSpaceType
- D50 WhitePointValue
- 0/45 GeometryType
- 10mm BländareStorlek
- Skannrar:
- CIEXYZ MeasurementSpaceType
- D50 WhitePointValue
- 0/45 GeometryType
- 10mm BländareStorlek
- Visar och virtuell RGB-enhet:
- CIEXYZ MeasurementSpaceType
- D65 WhitePointValue
- 0/45 GeometryType
- 10mm BländareStorlek
- Kameror:
- CIEXYZ MeasurementSpaceType
- D65 WhitePointValue
- Direct GeometryType
- 10mm BländareStorlek
valideringsvillkor: Validering av varje underelement bestäms av valideringsvillkor för dessa underelement. Om ett underelement saknas används den specifika standardtypen för enhetsmodell.
GeometryType
Sträng
Uppräkningsvärden:
- "0/45"
- "0/diffus"
- "diffus/0"
- "Direkt"
verifieringsvillkor: Alla värden utom uppräkningsvärdena i listan är ogiltiga. Den här informationen ändrar inte bearbetningsbeteendet för baslinjen.
RGBPrimariesGroup
Det här elementet är en sekvens med
- WhitePrimary NonNegativeXYZType
- RedPrimary NonNegativeXYZType
- GreenPrimary NonNegativeXYZType
- BluePrimary NonNegativeXYZTYpe
- BlackPrimary NonNegativeXYZType
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
NonNegativeCMYKSampleType
Det här elementet är en sekvens med
- CMYK NonNegativeCMYKType
- CIEXYZ NonNegativeXYZType
Elementet har också en valfri attributtaggsträng
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
NonNegativeRGBSampleType
Det här elementet är en sekvens med
- RGB NonNegativeRGBType
- CIEXYZ NonNegativeXYZType
Elementet har också en valfri attributtaggsträng
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
NonNegativeCMYKType
Det här elementet består av attribut
- C float
- M float
- Y float
- K-flyttal
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
NonNegativeRGBType
Det här elementet består av attribut
- R-flyttal
- G float
- B-flyttal
valideringsvillkor: Som ska fastställas utifrån branschfeedback.
ExtensionType
ExtensionType-elementet är en sekvens av alla underelementstyper och används för upphovsrättsskyddad information från program som inte kommer från Microsoft.
verifieringsvillkor: Det här elementet är valfritt. Det kan finnas högst 1 000 tilläggsunderelement.
NonNegativeXYZType
Elementet NonNegativeXYZType består av NonNegativeFloatType tre IEEE-flyttalselement med enkel precision med namnet "X", "Y" och "Z". Dessa värden är begränsade till måttvärdena för DMP-profiler. Dessa mätningar kan vara antingen absoluta (inte relativa) CIEXYZ 1931 reflekterande värden eller absoluta (inte relativa) CIEXYZ 1931 direkta (transmissiva) värden i candelas per kvadratmeter kvadratenheter.
verifieringsvillkor: Endast verkliga värden är giltiga och negativa CIEXYZ-måttvärden är ogiltiga. Eftersom det här är absoluta värden kan värdena vara större än 1,0f. En rimlig gräns för värdet "X", "Y" eller "Z" anges godtyckligt till 10000,0f.
XYZType
XYZType-elementet består av tre IEEE-flyttalsvärden med enkel precision: "X", "Y" och "Z".
CDMP-baslinjealgoritmerna
Baslinje för CRT-enhetsmodell
För att förstå den här modellen måste du överväga både karenseringsprocessen och enhetsmodellering. I karakteriseringsprocessen utförs XYZ-mätningar först på de färger som erhålls genom att fylla i visningsbufferten på en CRT-visningsenhet. Följande exempelvärden genererar bra data för CRT-baslinjeenhetsmodellen:
Röd: R = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, G = B = 0
Grön: G = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = B = 0
Blå: B = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = G = 0
Neutrala: R = G = B = 0, 8, 16, 32, 64, 128, 192, 255
Andra steg än 15 och icke-linjära steg kan också användas. Varje röd, grön, blå och neutral ramp måste innehålla minst tre prover, men fler prover rekommenderas. Du måste ange exempel för ren röd, grön, blå, svart och vit. Proverna behöver inte vara jämnt fördelade.
Processen att skapa tristimulusmatrisen består av två steg. Först beräknar du XYZ-värdet för den svarta punkten eller utflytningen. Det här steget baseras till stor del på berns[3] arbete med en något modifierad målfunktion för den icke-linjära optimeringen. För det andra beräknar du tristimulus-matrisen baserat på resultatet från steg ett och även från en genomsnittsberäkning på alla mätningar per kanal, inte bara den för maximalt digitalt antal.
Vart och ett av dessa steg innehåller detaljerade procedurer. Utgångspunkten är ramperna (17 steg i vårt exempel) för var och en av R-, G- och B-kanalerna. När XYZ-måtten ritas på kromaticityen xy -plane visas en typisk situation i bild 1. Steg ett består av att lösa ett icke-linjärt optimeringsproblem för att hitta den "bästa passformen" svarta punkten som minimerar driften i kromaticity när man passerar längs R-, G- och B-kanalerna. Baserat på Berns[3] söker vi ( XK,YK,ZK ) som minimerar följande målfunktion:
där SR,SGoch SB är den uppsättning datapunkter som motsvarar punkterna på R-, G- och B-kanalerna. Definiera för alla uppsättningar S:
I föregående , | S | är kardinaliteten för S, dvs. antalet punkter i uppsättningen S.
är kromaticitykoordinaterna för punkten
, så
är medelvärdet eller mitten av massan för alla punkter i uppsättningen S i kromaticityplanet. Därför
är summan av andra ögonblicken av punkterna om mitten av massan och är ett mått på hur utspridda punkterna är om det. Slutligen
är ett totalt mått på hur utspridda de tre klustren med punkter är om deras respektive masscentra.
I beräkningen av
, om
, hoppas beräkningen över och kardinaliteten för S justeras därefter.
Trots den uppenbara komplexiteten i den objektiva funktionen Det är en summa av kvadraterna för många olika funktioner i XK,YKZK (17 punkter 2xy -components 3 kanaler = 102, i exemplet), och är därför amenable till standard icke linjära minsta kvadrattekniker, till exempel Levenberg-Marquardt-algoritmen, som är algoritmen som används i WCS. Observera att den föregående målfunktionen skiljer sig från den som föreslogs i Berns[3] eftersom den senare funktionen mäter variansen för avstånden från massans mitt, så att variansen är noll när punkterna är likvärdiga från massans mitt, även om de kan sprida ut en hel del om det. I exemplet contolleds spridningen av punkter direkt med hjälp av den andra stunden.
Som med alla iterativa algoritmer för det icke-linjära minsta kvadratproblemet kräver Levenberg-Marquardt en första gissning. Det finns två uppenbara kandidater. En är (0, 0, 0); den andra är den uppmätta svarta punkten. För CTE används den uppmätta svarta punkten först som den första gissningen. Om maximalt 100 iterationer överskrids utan att uppnå ett tröskelvärde på ett genomsnittligt avstånd på 0,001 av varje punkt från dess viktcentrum (vilket motsvarar ett tröskelvärde på (0,001) 17 3 = 0,000051 för målfunktionen), utförs ytterligare en omgång iterationer med den första gissningen (0, 0, 0) 0. Den resulterande uppskattningen av den svarta punkten är XYZ jämfört med den bästa uppskattningen från föregående iterationsrunda (med den uppmätta svarta punkten som den första gissningen). Använd uppskattningen som ger det minsta värdet för målfunktionen. Valet av 100 iterationer och felavståndet 0,001 valdes empiriskt. I framtida versioner kan det vara rimligt att parameterisera felavståndet.
Resultatet av steg ett är den uppskattade svarta punkten ( XK,YK,ZK ). Steg två består av att bestämma tristimulusmatrisen genom att medelvärdet av kromaticityen för punkterna i de tre klustren som erhålls i steg ett. För CRT görs detta främst för att minimera effekterna av mätfel. De punkter som används vid medelvärde av kromaticity måste vara samma punkter som används i optimeringen i steg ett. Med andra ord, om den första punkten (digitalt antal 15 i exemplet) i varje ramp ignoreras i optimeringssteget, måste samma sak göras i medelvärdet. Om
, och
är de genomsnittliga kromaticitykoordinaterna för de röda, gröna och blå kanalerna, så avgör följande procedur tristimulusmatrisen. Lös först det linjära 3?3-systemet:
XW,YW,ZW
När tristimulusmatrisen har fastställts följer bestämningen av tonkurvor standardmetoden. För CRT-skärmar antas de enskilda kanalerna följa gog-modellen:
där kg är "gain",1 -kg är "offset" och ? är "gamma". Den inverterade matrisen i tristimulusmatrisen tillämpas på XYZ-data för neutralerna för att hämta linjära RGB-data, som sedan korreleras med de digitala RGB-värdena med hjälp av icke-linjär regression på GOG-modellen. Dessa egenskaper behöver inte vara desamma för R-, G- och B-kanalerna och är i allmänhet inte desamma.
Berns[1]: Berns, Billmeyer och Saltzmans principer för färgteknik, 3 rd Ed. John Wiley & Sons (2000).
Berns[2]: Berns och Katoh, Den digitala till radiometriska överföringsfunktionen för datorstyrda CRT-skärmar, CIE Expert Symposium '97 Colour Standards for Imaging Technology, Nov. 1997.
Berns[3]: Berns, Fernandez och Taplin som beräknar Black-Level utsläpp av Computer-Controlled displayer, färgforskning och program, 28: 379-383 Wiley tidskrifter, Inc. (2003)
Kang[1]: Kang, Color Technology for Electronic Imaging Devices, SPIE (1997)
Katoh[1]: Katoh, Deguchi och Berns, En exakt karakterisering av CRT övervakare (II) förslag för en f8orlängning till CIE-metod och dess verifiering, Opt. Rev. 8: 397-408 (2001)
LCD-enhetsmodellbaslinje
LCD-enhetens modellbaslinje liknar CRT-enhetsmodellbaslinjen. I det här avsnittet förklaras hur LCD-modellering skiljer sig från CRT-modellering.
En skillnad är att du inte kan anta att LCD-skärmar följer GOG-modellen som används för CRT och att tonkurvorna erhålls genom interpolering av uppmätta data. Därför bör enhetens neutrala axel samplas oftare.
Här följer några typiska exempelvärden som kan generera bra data för LCD-enhetsmodellens baslinje:
Röd: R = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, G = B = 0
Grön: G = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = B = 0
Blå: B = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = G = 0
Neutrala: R = G = B = 0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255.
Processen med medelvärde av uppmätta färgkromatika för att få kromaticiteterna för enhetens primärval är mer kritisk för LCD-skärmar än för CRT. När XYZ-mätningar ritas på kromaticityen xy -plane visas en typisk situation i bild 1. Observera hur kromaticityen driver mot den svarta punkten. Detta beror på att alla LCD-skärmar har en viss mängd ljusläckage.
bild 1: Kromaticitydiagrammet med rådata utan korrigering
När detta subtraheras från de råa XYZ-mätningarna visas en typisk situation i bild 2. Tthe-punkterna är nu grupperade ungefär tre centra, även om de inte faller identiskt på dem. Genomsnittsprocessen som beskrivs för CRT:er förbättrar avsevärt resultaten för LCD-skärmar.
bild 2: Kromaticitydiagrammet med data med justerad svart punkt
RGB Capture Device Model Baseline
RGB-avbildningsenhetens baslinjemodell är en underklass av klassen IDeviceModel. I colorimetric-karetrisk karaktärisering av färgfångstenheter, till exempel skannrar och digitalkameror, används följande metod. Ett mål som består av färgkorrigeringar med kända CIEXYZ-värden samlas in med hjälp av insamlingsenheten. Resultatet av avbildningen är en RGB-bitmappsbild där färgen på varje korrigering kodas i ett RGB-värde. Dessa RGB-värden för enheten är specifika för en viss avbildningsenhet. Målet med colorimetric-karakterisering är att upprätta en empirisk relation mellan enhetens RGB-värden och CIEXYZ-värden, eller en matematisk omvandling från RGB till XYZ som modellerar uppfångningsenhetens beteende så exakt som möjligt.
En sådan matematisk omvandling kan modelleras rimligt av polynomer med låga grader. Detta tillvägagångssätt specificeras i litteraturen, till exempel Kang[92], Kang[97]. I Kang[97] rapporteras en metod som använder en uppsättning med tre polynomer med variablerna 3, 6, 8, 9, 11, 14 eller 20 i variablerna R, G och B, medan de tre polynomerna går tillbaka till X-, Y-, Z-komponenterna i CIEXYZ-utrymmet. För 20-term polynom är formuläret:
Det finns liknande uttryck för Y och Z. Den matematiska tekniken för att passa polynomerna faller inom "Multivariate Linear Regression" och beskrivs i valfri elementär text i Statistik.
Den här metoden för linjär regression lider av att inte minimera "rätt" målfunktion. Linjär regression hittar den minsta kvadratlösningen, vilket innebär att de koefficienter som erhålls minimerar den totala summan av kvadrater av fel i det underliggande utrymmet, eller motsvarande summan av kvadraterna av de euklidiska avstånden. I praktiken vill du minimera summan av kvadraterna i ? Es, var ? E är en av de godkända standarderna, till exempel CIE94. Att minimera den här målfunktionen är ett icke-linjärt regressionsproblem.
I den nya motorn är Lab to XYZ det CIE-färgutrymme som regresseras till, och 20-term kubikpolynomen används som modell för avbildningsenheten eller koefficienterna ls, som,bs så att följande polynomer minimerar summan av kvadrater av ? E CIE94 s.
Lösningen ( li, eni, bi ) i det 60-dimensionella verkliga numeriska utrymmet R203 måste vara så att följande totala fel minimeras:
där sammanfattningen sker genom alla datapunktspar (Ri,Gi,Bi;Li,ui,vi ) i den samplade datauppsättningen plus ytterligare kontrollpunkter som beskrivs i följande. Det här är ett icke-linjärt regressionsproblem eftersom parametrarna ?i, eni, * i* anger i målfunktionen på ett icke-linjärt sätt (inte kvadratiskt).
Eftersom målfunktionen ? är en icke-linjär (och icke-ekvatorisk) funktion av parametrarna ?jag, enjag och * jag*, måste du tillgripa iterativa tekniker för att lösa optimeringsproblemet. Eftersom formen på målfunktionen är en summa kvadrater används en standardoptimeringsteknik som kallas Levenberg-Marquardt-algoritmen. Det anses vara den metod som väljs för icke-linjära minsta kvadratproblem. För iterativa algoritmer som Levenberg-Marquardt måste du ange en första gissning. En bra första gissning är vanligtvis avgörande för att hitta rätt minimivärde. I det här fallet är en bra kandidat för den första gissningen lösningen på det linjära regressionsproblemet. Först minimerar du summan av kvadraten av euklidiska avstånd i labbutrymmet genom att definiera en kvadratisk målfunktion:
Den matematiska lösningen på sådana "linjära minst kvadratiska" problem är välkänd. För att ?i visas bara i L modellering, enjag visas bara i u modellering, och * jag* visas bara i v modellering; optimeringsproblemet kan delas upp i tre underproblem: ett för L, ett för u och ett för v. Tänk på L ekvationer. (Ekvationerna u och ekvationerna v följer exakt samma argument.) Problemet med att minimera summan av kvadrater av fel i L kan anges som att lösa följande matrisekvation i minsta kvadratisk mening:
där N är det totala antalet datapunkter (ursprungliga exempelpunkter plus kontrollpunkter som skapats på ett sätt som beskrivs nedan). Vanligtvis är N mycket större än 20, så den föregående ekvationen är överbestämd, vilket kräver en lösning med minst kvadrater. En sluten formulärlösning för ? är tillgängligt:
I praktiken används inte direkt utvärdering med den stängda formulärlösningen eftersom den har dåliga numeriska egenskaper. I stället tillämpas någon form av matrisfaktoriseringsalgoritm på koefficientmatrisen som reducerar systemet med ekvationer till en kanonisk form. I den aktuella implementeringen tillämpas SVD (Singular Value Decomposition) på matrisen R och sedan löses det resulterande decomposed-systemet.
Lösningen på det linjära regressionsproblemet, som anges av
används som utgångspunkt för Levenberg-Marquardt-algoritmen. I den här algoritmen beräknas ett utvärderingssteg som ska flytta punkten närmare den optimala lösningen. Utvärderingssteget uppfyller en uppsättning linjära ekvationer som är beroende av derivatens funktionella värde och värden vid den aktuella punkten. Av den anledningen derivat av den objektiva funktionen ? med avseende på parametrarna ?ienii krävs indata till Levenberg-Marquardt-algoritmen. Även om det finns 60 parametrar finns det en genväg som gör att du kan beräkna mycket mindre. Enligt kalkylens kedjeregel,
där j = 1, 2, , 20, Li i,ui,vi är CIELAB-värdet för i th sample point, och Rij är (i,j )th posten i matrisen R definieras ovan. I stället för att beräkna derivat för 60 parametrar kan du beräkna derivat för L,enoch b med hjälp av numerisk framåtsyxning.
Det är också nödvändigt att konfigurera ett stoppvillkor för iterativa algoritmer. I den aktuella implementeringen avslutas iterationerna om den genomsnittliga kvadraten DECIE94 är mindre än 1, eller om antalet utförda iterationer har överskridit 10. Talet 10 kommer från den praktiska upplevelsen att om de första iterationerna inte minskar felet avsevärt, skulle ytterligare iterationer inte hjälpa mycket annat än att flytta punkten på ett oscillatoriskt sätt, dvs. algoritmen kanske inte konvergerar. Även om algoritmen avviker kan vi vara säkra på att DECIE94 inte är sämre än vad vi startade, dvs. med parametrarna som erhålls från linjär regression.
Även med föregående metod för icke-linjär regression finns det flera problem med monteringen. Ett problem är att polynomerna tenderar att överskrida eller underskrida bortom datapunkterna. Artificiell lokal maxima och minima kan införas i monteringsprocessen. Detta kan motverkas med hjälp av polynomer av låg grad, vilket är anledningen till att du inte bör använda högre än tre grader. En allvarligare aspekt av överskridande eller undersökning är att även om en polynom kan ta ett verkligt värde teoretiskt sett, har det utrymme som den försöker modellera vanligtvis fysiska begränsningar och praktiska begränsningar. CIEXYZ måste ha alla X, Y, Z icke-negativa, vilket är en fysisk begränsning. I praktiken tar de bara värden i storleksordningen hundratals, inte tusentals eller högre. På samma sätt har CIELAB eller CIELUV sina egna fysiska och praktiska begränsningar. När RGB-utrymmet är tillräckligt fyllt med exempelpunkter är problemet med överkörning eller undersökning inte allvarligt. De insamlade RGB-punkterna från inspelningsenheten fyller dock vanligtvis inte upp RGB-utrymmet på ett enhetligt sätt. Punkterna kan bara fyllas upp inre de 80% av RGB-kuben, eller ännu värre, de kan finnas i en lägre dimensionell manifold. När detta händer kan de regresserade polynomerna göra ett dåligt jobb med att extrapolera värdena bortom datapunkterna, och ibland returnera orealistiska förutsägelser. Du vill ha en modell som alltid returnerar rimligt realistiska värden. Detta kräver en metod som effektivt kan styra gränsbeteendet för regressionspolynomer genom att lägga till ytterligare kostnader för de polynomer som beter sig oberäkneligt nära gränsen för RGB-kuben. Ett ytterligare mått för att säkerställa att polynomerna alltid returnerar realistiska värden tillämpas genom att urklippa utdata till inom CIE-spektralloben.
Det är just nu som skannermodellering och kameramodellering skiljer sig från varandra. Kameramodellen förväntas extrapolera till regioner utanför de samplade punkterna, inklusive "specular highlights", samma extrapolering krävs inte för skannermodellen. Skannermålet förväntas täcka en karensisering som liknar det tryckta material som ska genomsökas. Skannermodellen måste fortfarande vara robust i den meningen att den inte ska returnera orealistiska värden, men extrapolering långt bortom kareteriseringsmålet krävs inte. För att säkerställa robusthet klipps L-polynomen ovan vid 100, det vill ex. polynommodellen tvingas att inte extrapolera bortom "Dmin" i skannermålet.
Kameramodellen förväntas extrapolera till spekulära markeringar, så urklipp vid 100 är inte önskvärt. I stället används följande algoritm.
Artificiella kontrollpunkter introduceras för att kontrollera polynomernas beteende i regioner med otillräcklig sampling. Genom att strategiskt placera dessa kontrollpunkter med lämpliga värden tjänar de till att "dra" polynomerna i den riktning som krävs. I den aktuella implementeringen används åtta kontrollpunkter som motsvarar hörnen i RGB-kuben. Om enhetsvärdena normaliseras till unity är följande punkter:
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
Förutom vit R =G =B = 1, som är associerad med ett CIELAB-värde på L = 100, u =v = 0, används följande extrapoleringsalgoritm för att fastställa lämpligt CIELAB-värde som ska associeras med. För en given (R,G,B ) är en vikt associerad med var och en av (Ri,Gi,Bi ) i den exempelbaserade datauppsättningen. Det finns två mål för att tilldela vikten. För det första är vikten omvänt proportionell mot avståndet mellan (R,G,B ) och (Ri,Gi,Bi ). För det andra vill du ta bort eller tilldela vikt 0 till punkter som har en annan nyans än den angivna punkten (R,G,B ). För att ta hänsyn till nyansen bör du överväga punkter som ligger inom en kon vars hörn är på (0, 0, 0), vars axel sammanfaller med linjeanslutningen (0, 0, 0) till (R,G,B ), och vars halvvertal vinkel ? uppfyller cos ? = 0,9. Se bild 3 för en bild av den här konen.
bild 3: Filtrera exempelpunkterna efter vinkel och avstånd. Formen på det avbildade grannskapet är endast i illustrationssyfte. Den faktiska formen beror på vilket avstånd som används. det är ett diamantformat område om 1-norm används.
Inom den här konen utförs en andra filtrering som baseras på RGB-avståndet, som använder 1-normen, som definieras av
Med den aktuella konen är den inledande sökningen efter punkter som ligger inom ett avstånd av 0,1 från (R,G,B ). Om ingen punkt hittas inom den här radien ökas radien med 0,1 och sökningen startas om. Om nästa runda inte heller är någon punkt ökas radien med 0,1. Den här processen fortsätter tills radien överskrider MaxDist/5, där MaxDist = 3, när det gäller 1-norm. Om ingen punkt hittas förstoras konen genom att minska cos ? av 0,05, det vill s, öka vinkeln ? och starta om hela processen med en ökande radie. Den här processen fortsätter tills en icke-tom uppsättning punkter hittas eller cos ? når 0, d.v.s. konen har öppnats för att bli ett plan. Nu startas sökningen om genom att öka radien, förutom att sökningen fortsätter tills radien når MaxDist. Detta garanterar att i värsta fall hittas en icke-tom uppsättning punkter. Algoritmen sammanfattas i flödesdiagrammet i bild 4.
bild 4 : Flödesdiagram för att fastställa uppsättningen S med exempelpunkter som används i extrapoleringen för ett RGB-indatavärde
Förutsatt att föregående process ger en icke-tom uppsättning S punkter (Ri,Gi,B ) och motsvarande (Li,eni,bi ), sedan för varje sådan punkt, en vikt wi tilldelas, som ges av
Slutligen definieras extrapolanten av
De föregående ekvationerna utgör en instans av de "omvända avståndsviktade metoderna", som ofta kallas Shepard-metoderna. Genom att köra var och en av de åtta punkterna från eq (6) via algoritmen erhålls åtta kontrollpunkter, var och en med R,G,B och L,en,b värden som placeras i poolen med de ursprungliga exempeldata.
För att säkerställa att modellen alltid genererar giltiga färgvärden och för systemintegritet och stabilitet i hela färgbearbetningspipelinen måste du utföra ett sista klipp till utdata från polynommodellen. Det visuella CIE-omfånget beskrivs av den akromatiska komponenten (Y eller L ) och den kromatiska komponenten (xy eller a'b', som är relaterade till XYZ-utrymmet genom en projektiv transformering). I den aktuella implementeringen används a'b' kromaticity eftersom den är direkt relaterad till CIELUV-utrymmet. För alla CIELAB- värde första klippet L till ett icke-negativt värde:
För att tillåta extrapolering för spektulära markeringar klipps L inte av vid 100, den "konventionella" övre gränsen för L i labbutrymmet.
Om L = 0 klipps sedan en och b så att a*= b =* 0. Om L? 0, beräkna
Det här är komponenterna i en vektor i a'b' diagram från den vita punkten (u?',v?' ) till färgen i fråga. Definiera CIE spectral locus som det konvexa skrovet på alla punkter (a",b' ), parametriserad av våglängden ?:
där
är CIE-färgmatchningsfunktionerna för 2-gradersobservatören. Om vektorn ligger utanför CIE-locusen klipps färgen till den punkt på CIE-locusen som är skärningspunkten för locusen och linjen som definieras av vektorn. Se bild 5. Om urklipp har inträffat återskapas ett och b genom att först subtrahera a?" och b?" från den klippta a" och b"och sedan multiplicera med 13 L.
bild 5: Urklippsalgoritm för labbvärden som ligger utanför det visuella CIE-omfånget
I den nuvarande implementeringen representeras CIE-spektralloben i a'b' plan av en bitvis linjär kurva med 35 segment (motsvarande en våglängd från 360 nm till 700 nm inklusive). Genom att sortera linjesegmenten så att deras subtended vinklar vid den vita punkten är stigande, vilket motsvarar fallande våglängder, kan linjesegmentet som korsar med strålen som bildas av ovanstående vektor hittas genom en enkel binär sökning.
RGB-skrivarmodellbaslinje
En enhetsteckenisering av en RGB-skrivare består av att konstruera en empirisk modell av enheten som förutsäger den enhetsoberoende CIELUV-färgen för ett givet RGB-värde
Det finns två sätt att konstruera den empiriska modellen. Ett sätt är att använda enhetsdata för en RGB-skrivare, och det andra är att använda analysparameterdata. I den första används måttdata som tillhandahålls av en användare för en RGB-skrivarenhet för att skapa en 3D-uppslagstabell (LUT). Mätdata består av XYZ-värden för RGB-korrigeringar med enhetligt urval. Typiska samplingsstorlekar är 9 eller 17 för varje komponent. Varje korrigering mäts med en färgmätare eller spektrofotometer i CIEXYZ-utrymme. XYZ-värdet för en korrigering konverteras sedan till CIELUV-värdet och bildar en 3D-LUT. I enhetsmodellen tillämpas Sakamotos tetrahedralinterpolationsmetod på 3D LUT för att förutsäga CIELUV-data för en viss RGB-data. (Confer US Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. De två patent som nämns har upphört att gälla.). Analysparameterdata som skickades i den andra metoden är helt enkelt en LUT som skapades tidigare. Vanligtvis skapades den luten med hjälp av den första metoden, även om den kunde vara handbyggd.
I den aktuella färghanteringen definieras källkartan som den karta som går från RGB-utrymme till ett enhetsoberoende CIEXYZ-färgutrymme. Målkartan definieras som den karta som går från det enhetsoberoende CIEXYZ-färgutrymmet till RGB-utrymmet. Det är inversen till källkartan.
Den empiriska modellen används direkt i källkartan. Först mappar den en viss RGB-data till en CIELUV-data, som konverteras till XYZ-data. På målkartan konverteras enhetsoberoende CIEXYZ-data först till CIELUV-data. Sedan används den empiriska modellen och den klassiska Newton-Raphson-metoden för att förutsäga de bästa RGB-data för CIELUV-data. Informationen om konvertering från CieLUV till RGB-data är följande:
När du har genererat en 3D-LUT från RGB till CieLUV skapas kartan från RGB till LUV med hjälp av tetrahedralinterpolation på RGB. Den här kartan betecknas med följande ekvationer:
Inversion av kartan består av att lösa, för alla färger
, följande system med icke-linjära ekvationer:
En icke-linjär ekvation som baseras på den klassiska Newton-Raphson-metoden används i den nya CTE:n. En första gissning, eller en priori se, s tidigare -(R 0, G 0, B 0 ) erhålls genom att söka igenom en "frömatris" som består av ett enhetligt 8x8x8-rutnät med förberäknade (RGB,Luv) par. RGB-motsvarande Luv som är närmast L*u*v* väljs. Varje punkt i frömatrisen motsvarar mitten av en cell så att iterationerna inte börjar med en punkt på RGB-kubens gränsyta. Med andra ord definieras RGB av fröna av: STEP = 1/8 s ijk = (STEP/2 + (i-1) STEP, STEP/2+(j-1)STEP, STEP/2+(k-1)STEP) with i,j,k = 1...8 At the i th step of Newton-Raphson, nästa uppskattning
erhålls med formeln:
Iterationen stoppas när felet (avståndet i CIELUV-utrymmet) är mindre än en fördefinierad toleransnivå (0,1 i CTE) eller när antalet iterationer har överskridit det maximala tillåtna antalet iterationer (10 i CTE). Värdena för toleransen och antalet iterationer fastställdes empiriskt vara effektiva. I framtida versioner kan toleransvärdet ändras.
Den jakobiska matrisen beräknas med hjälp av framåtskillnad, förutom vid en gränspunkt (en eller flera av R, G, B är 1) där bakåtskillnad används i stället. I stället för att beräkna inverteringen av den jakobiska matrisen löses det linjära systemet direkt med hjälp av Gauss-Jordan eliminering med fullständig pivotering.
I slutet av iterationerna kanske konvergens fortfarande inte uppnås eftersom Newton-Raphson är en "lokal" algoritm, det vill säga att det bara fungerar bra om du börjar med en första gissning som ligger nära den sanna lösningen. Om konvergens inom den fördefinierade feltoleransen inte har uppnåtts i slutet av Newton-Raphson iterationer, startas iterationerna om med en ny uppsättning frön, definierade enligt följande.
Den bästa lösningen hittills är till exempel (r, g, b). Från den här lösningen härleds N a posteriorifrön, där N = 4. Intuitivt flyttas lösningen "mot mitten" i en stegstorlek som är beroende av N. Se bild 6.
bild 6 : Lösningens störningsriktning beror på vilken oktant den befinner sig i.
Med andra ord, om r > 0,5, minskas värdet på R-kanalen, annars ökas värdet. Det finns liknande logik för G- och B-kanalerna. De exakta definitionerna är:
PERTURBATION = 0,5/(N+1)
Dir(r) = -1 om r > 0,5; +1 annars. På samma sätt för Dir(g) och Dir(b)
The jth a posteriori seed, s ????, is (r + Dir(r) *j * PERTURBATION, g + Dir(g) * j * PERTURBATION, b + Dir(b) * j * PERTURBATION)
Prova den första ???? och om den ger en ny lösning inom feltolerans kan du stoppa. Annars kan du prova den andra ???? och så vidare tills Nth s ????.
Schemat för hela algoritmen visas i bild 7.
bild 7: Scheman för invertering av enhetsmodellen
RGB-modellbaslinje för virtuell enhet
Den här enhetsmodellen (DM) är en enkel matris/tonåtergivningsalgoritm. Matrisen härleds från den vita punkten och primärvalen med hjälp av standardalgoritmer för färgvetenskap. Tonens reproduktionskurva härleds från mätparametrarna enligt ICC-beskrivningarna av CurveType och ParametricType (eller inverteras efter behov). Information om de interna algoritmerna kommer att tillhandahållas efter ytterligare validering av problem med högt dynamiskt omfång.
Den virtuella RGB-enhetsmodellen är en idealiserad RGB-matris/tonreproduktionskurva som liknar den trekomponentsmatrisbaserade profildesignen för ICC. Parametrarna "virtuell mätning" för DM innehåller ett vitpunktsvärde (absolut CIEXYZ), RGB-primära värden (absolut CIEXYZ) och en toningskurva som baseras på ICC ParametricCurveType och CurveType i XML-formatering som överensstämmer med DMP-scheman.
ICC parametricCurveType-funktionstypkodning och motsvarande stöd i IRGBVirtualDeviceModelBase visas i följande tabell.
| Funktionstyp | Parametrar | Typ | Not |
|---|---|---|---|
|
g |
GammaType |
Gemensam implementering |
|
ga b |
GammaOffsetGainType |
CIE 122-1966 |
|
ga b c |
GammaOffsetGainOffsetType |
IEC 61966-3 |
|
ga b c d |
GammaOffsetGainGainType |
IEC 61966-2.1 (sRGB) |
|
ga b c d e f |
Ej tillämpligt |
Stöds inte i WCS |
Tonkurvan för virtuella RGB-enheter tillämpas i DeviceToColorimetric mellan indata, pDeviceColors och matrisen multipliceras. För ColorimetricToDevice måste en metod användas för att invertera tonkurvan. I baslinjeimplementeringen görs detta genom direkt interpolering i samma tonkurva som används för DeviceToColorimetric.
Kurvorna ska anges i profilerna som par med tal i flyttalsutrymme. Det första talet representerar värden i pDeviceColors. Det andra talet representerar utdata från tonkurvan. Alla värden i tonkurvan måste vara mellan minColorantUsed och maxColorantUsed. Tonkurvor måste innehålla minst två poster: en för minColorantUsed och en för maxColorantUsed. Det maximala antalet poster i ToneCurve är 2048. I allmänhet, ju fler poster i tabellen, desto mer exakt kan du modellera krökning. En bitvis linjär interpolering utförs mellan posterna.
Du kan överväga alternativa interpoleringsmetoder. Om du vet något om enhetens underliggande beteende kan du använda färre exempel och modellera mer exakt med en högre ordningskurva. Men om du använder fel kurvtyp blir du mycket felaktig. Utan mer information kan du inte gissa kurvtypen. Använd därför linjär interpolering och ange många datapunkter.
CMYK-skrivarmodellbaslinje
En enhetsteckenisering av en CMYK-skrivare består av att konstruera en empirisk modell av enheten som förutsäger den tryckta färgen för ett givet CMYK-värde. Kareteriseringen innehåller också inversion av den här modellen så att ett recept på CMYK-värdet till oss för en viss färg som ska skrivas ut kan ges. Detta definieras vanligtvis i termer av CIEXYZ- eller CIELAB-värde.
Vanligtvis används ett IT8.7/3-mål som innehåller CMYK-korrigeringar. Korrigeringarna består av sampling av CMYK-utrymmet på ett väldefinierat sätt så att ett rektangulärt rutnät (med icke-enhetligt avstånd i C, M, Y och K) bildas. Varje korrigering mäts sedan med en färgmätare eller spektrofotometer. Mätningarna i CIEXYZ-värden bildar sedan en uppslagstabell (LUT), från vilken en empirisk modell av skrivaren skapas med hjälp av Sakamotos interpoleringsmetod. US Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. De två patent som nämns har upphört att gälla.
Specifika krav för CMYK-måttexemplen som krävs för att en enhetsmodellprofil ska accepteras som giltig av CMYK-skrivarens baslinjeenhetsmodell är följande. (Exempeluppsättningen beskrivs tydligast som en uppsättning CMY-exempelkuber, var och en associerad med en specifik K-nivå.)
Minst måste giltiga CMY-kuber anges för nivåerna K = 0 och K = 100.
Mellanliggande K-nivåer kan vara icke-jämnt fördelade.
Alla mellanliggande K-nivåer utan en giltig CMY-kub ignoreras.
CMY-kuberna kan använda icke-enhetliga urvalsintervall (rutnätsavstånd), men samma uppsättning urvalsintervall måste användas i alla C,M- och Y-dimensioner i CMY-kuben för en viss K-nivå.
Varje CMY-kub på K-nivå kan använda olika tal och avstånd för exempelintervall.
Alla CMY-kuber måste innehålla "hörnen" i CMY-kuben, det vill CMY-exempel på [0,0,0], [0,0,100], [0,100,0], [100,0,0], [0,100,100], [100,0,100], [100,100, 0], [100,100,100,100].
Alla mellanliggande CMY-rutnätsnivåer måste samplas fullständigt i varje kanal. Med andra ord måste ett exempel finnas vid varje skärningspunkt för 3D-rutnät i CMY-kuben.
För kuberna K = 0 och K = 100 CMY är kuberna 2x2x2 "endast hörn" det minsta tillåtna som giltigt.
[OBS! För K=0- och K=100-nivåer bearbetas en 3x3x3 CMY-kub som en 2x2x2 "endast hörn"-kub. Den mellanliggande urvalsnivån ignoreras. 4x4x4 och större kuber kommer att ha alla on-grid-exempel som används.]
För mellanliggande K-nivåer är 4x4x4 CMY-kuber det minsta tillåtna som giltigt.
En profil av hög kvalitet använder finare samplingsnät än det minsta som krävs för giltighet, vanligtvis 9x9x9x9 eller högre. Exemplen från IT8.7/3, IT8.7/4 och ECI-målen skapar giltiga enhetsmodellprofiler (DMP:er) för CMYK-skrivarens baslinjeenhetsmodell. Även om den här enhetsmodellen kan ignorera de överflödiga (off-grid) exemplen i dessa mål, är det inte säkert att kunna göra det för andra mål, och därför rekommenderar vi att överflödiga exempel tas bort från måttuppsättningar som går till profiler för den här enhetsmodellen.
Inverteringen av skrivarmodellen medför fler svårigheter. Med tanke på en indatafärg i CIECAM är det en fråga om huruvida den här färgen ligger inom skrivaromfånget. Det finns också problem med ordningen på punkter i färgutseendet. Även om vi kan ordna cmyk-värdena så att de hamnar på ett rektangulärt rutnät, som det görs i IT8.7/3-målet, kan samma sak inte sägas om de resulterande tryckta färgerna eftersom de finns i färgutseendet. I allmänhet är de utspridda i färgutseendeutrymmet utan något särskilt mönster.
Det finns vanligtvis två metoder för inversionsproblemet med spridda punkter. En metod är att använda en geometrisk indelning av skrivaromfånget med elementära tredimensionella fasta ämnen, till exempel tetrahedra. En indelning av skrivaromfånget i färgutseendeutrymmet kan härledas från motsvarande indelning av CMY(K)-utrymmet, se Hung[93], Kang[97]. Den här metoden har fördelen med beräkningsmässig enkelhet. När det gäller en tetrahedron används endast fyra punkter i en interpolation. Å andra sidan beror resultatet mycket på några punkter, vilket innebär att ett mätfel kommer att ha en betydande effekt på resultatet. Interpolanten tenderar också att vara inte lika smidig. Den andra metoden förutsätter inte någon underindelning och baseras på tekniken för spridda datainterpolation. Ett klassiskt exempel är tekniken för Shepard-interpolation eller omvänd viktad metod (Se Shepard [68]). Här väljs flera punkter som omger indatapunkten på något sätt, var och en tilldelas en vikt, vanligtvis omvänt proportionell mot avståndet, och interpolanten tas som det viktade genomsnittet för närliggande punkter. I den här metoden är valet av närliggande punkter av största vikt för prestanda. För få punkter kan göra interpolanten felaktig och icke-smidig, men för många punkter medför en hög beräkningskostnad, eftersom vikterna vanligtvis är icke-linjära funktioner och kostsamma att beräkna.
De två metoderna som beskrivs ovan har båda problem. Indelningsmetoden är kritiskt beroende av att data är rimligt utan brus, och i allmänhet är interpolanten inte särskilt smidig. Den spridda datainterpolationen är mer tolerant mot databrus och ger vanligtvis en smidigare interpolant, men den är beräkningsmässigt dyrare.
Den nya CTE:n har en alternativ metod. CMYK-enheten behandlas som en samling med flera CMY-enheter, som var och en har ett specifikt värde av svart (K). Med hjälp av en markeringsalgoritm som tar som parametrar ljushet och krom, väljs en nivå av svart. CMY-värdena erhålls genom inversion av motsvarande CMY till Luv-tabell med hjälp av Newton-metoderna som används någon annanstans av RGB-skrivaralgoritmen.
Följ stegen nedan.
- Skriv ut teckeniseringsmålet, som antingen är IT8.7/3-målet, eller ett mål som innehåller sampling av CMYK-utrymmet med regelbundet eller oregelbundet intervall.
- Mät målet med hjälp av en spektrofotometer och konvertera måtten till CIELUV-utrymme.
- Konstruera den framåtriktade kartan från CMYK till Luv.
- Använd den framåtriktade kartan för att konstruera en uppsättning CMY till Luv-kartor för ett intervall med K-värden.
- För alla luv-indatavärden erhålls motsvarande CMYK-värde genom att välja en av kartorna som konstruerades i steg 4 ovan och invertera med Newtons metod för att hämta en CMY-färguppsättning som medföljer det valda K-värdet.
Steg 1 och 2, som är standardprocedurer, utförs av ett profileringsprogram som inte ingår i den nya CTE. IT8.7/3-målet innehåller ett rimligt detaljerat urval av alla CMYK-värden på olika nivåer av C, M, Y och K. Alternativt kan ett anpassat mål med enhetlig sampling av kanalerna C, M, Y och K användas. När målet har skrivits ut kan en spektrofotometer eller färgmätare användas för att mäta XYZ-värdet för varje korrigering, och XYZ-värdet kan konverteras till Luv-värdet med hjälp av CIELUV-modellen.
Steg 3, konstruktion av den främre kartan från CMYK till Luv, kan uppnås genom att tillämpa alla kända interpoleringsteknik, till exempel tetrahedral eller multilinear-metod, på det rektangulära rutnätet i CMYK-utrymmet. I den nya CTE används en 4-dimensionell tetrahedralinterpolation. Eftersom CMY-samplingsrutnäten i allmänhet skiljer sig åt på varje K-nivå använder vi dock en teknik för supersampling, enligt beskrivningen nedan. För en viss CMYK-punkt bestäms först K-nivåerna för smörgås baserat på K-värdet. Introducera sedan ett "superrutnät" på varje K-nivå som är en union av CMY-rutnäten på var och en av de två K-nivåerna. På varje K-nivå erhålls Luv-värdet för en nyligen introducerad rutnätspunkt med en tredimensionell tetraedralinterpolation inom den K-nivån. Slutligen utförs en 4-dimensionell tetrahedralinterpolation för den specifika CMYK-punkten på detta nya rutnät.
bild 8 : Supersampling
Steg 4 konstruerar en uppsättning CMY-till-Luv-uppslagstabeller (LUT). Den framåtkarta som skapades i steg 3 anropas upprepade gånger för att sampla om CMYK-utrymmet. CMYK-färgrymden samplas med ett jämnt avstånd mellan K och en annan, men ändå jämnt fördelad, sampling av CMY.
Steg 5 är en procedur för att hämta CMYK-värdet med hjälp av LUT:erna som skapades i steg 4 för alla luv-indatapunkter. Det lämpliga värdet för K väljs genom att analysera ljusheten och färggraden i den begärda Luv-filen. När tabellen har valts hämtas CMY-värdena från tabellen med hjälp av Newtons -metod (som dokumenterades under RGB-skrivarenhetsmodellen tidigare).
CIELUV-utrymme används i skrivarmodellen i stället för CIEJab eftersom enhetsmodellen enbart ska baseras på färgmetriska data som är tillgängliga i DMP. DMP innehåller färgmetriska data för varje uppmätt korrigering, inklusive medievitpunkten, så det är möjligt att konvertera CIEXYZ-data till CIELUV-data. Det går dock inte att konvertera till CIECAM02 JCh eller Jab, eftersom det inte finns någon åtkomst till informationen om visningsvillkoret i DMP.
RGB-projektorns enhetsmodellbaslinje
Obs! Många RGB-projektorer har fler än ett driftläge. I ett läge, som ofta är standard och kan kallas något i stil med "presentation", optimeras projektorns färgsvar för maximal ljusstyrka. Men i detta läge förlorar projektorn förmågan att reproducera ljus, något kromatiska färger som blekgula och vissa kötttoner. I ett annat läge, som ofta kallas "film", "video" eller "sRGB", är projektorn optimerad för reproduktion av realistiska bilder och naturliga scener. I detta läge byts maximal ljusstyrka av för att förbättra den övergripande kvaliteten på färgreproduktion. För att få tillfredsställande färgreproduktion med RGB-projektorer är det nödvändigt att placera projektorn i ett läge där en jämn färgomfång kan reproduceras.
bild 9: DLP-enhetsmodell
Ett inkommande RGB-värde passerar genom två beräkningsvägar. Den första är matrismodellen, vilket resulterar i ett XYZ-värde. Detta följs omedelbart av konverteringen från XYZ till Luv. Den andra är den icke-enhetliga LUT-interpolationen med hjälp av tetrahedralinterpolation. Interpolationens utdata finns redan i Luv-utrymmet genom konstruktion. De två utdata läggs till för att hämta det förutsagda Luv-värdet. Detta konverteras slutligen till XYZ, vilket är de förväntade utdata från colorimetric-modellen för DLP-enheten.
Eftersom projektorer är visningsenheter har de också stöd för inversion av modellen, d.v.s. transformeringen från XYZ till RGB. Eftersom enhetsmodellen omvandlar RGB-utrymme till XYZ-utrymme, som båda är tredimensionella, motsvarar inversion tre icke-linjära ekvationer i tre okända. Detta kan göras med hjälp av vanliga ekvationslösningstekniker, till exempel Newton-Raphson. Det är dock bättre att först konvertera XYZ till Luv och sedan invertera Luv To RGB-transformen, eftersom Luv-utrymmet är mer perceptuellt linjärt än XYZ-utrymme.
Baslinje för ICC-enhetsmodell
Cite ICC-arbetsflödets samverkan aktiveras genom att skapa en särskild enhetsmodellprofil för ICC-enhetens baslinje som lagrar profilobjektet och skapar en ICC-transformering med hjälp av en no-op XYZ-profil. Den här transformeringen används sedan för att översätta mellan enhets- och CIEXYZ-färger.
bild 10: CITE ICC Workflow Interoperability