Freigeben über


WCS Color Device Model Profile Schema und Algorithmen

Dieses Thema enthält Informationen zum WCS Color Device Model Profile Schema und den zugehörigen Algorithmen.

Dieses Thema enthält die folgenden Abschnitte:

Überblick

Dieses Schema wird verwendet, um den Inhalt eines Farbgerätemodellprofils (CDMP) anzugeben. Die zugehörigen Basisplanalgorithmen werden unten beschrieben.

Das grundlegende DMP-Schema (Device Model Profile) besteht aus den Sampling-Messdaten.

Die Samplingkomponente des DMP-XML-Schemas bietet Unterstützung für grundlegende Farbmessziele, die sich auf allgemeine Standardziele und Ziele konzentrieren, die für die Basisgerätemodelle optimiert sind.

Darüber hinaus stellt das Geräteprofil spezifische Informationen zum zielbezogenen Gerätemodell bereit und stellt eine Richtlinie bereit, die das grundlegende Fallbackgerätemodell verwenden kann, wenn das Zielmodell nicht verfügbar ist. Die Profilinstanzen können private Erweiterungen mit standardmäßigen XML-Erweiterungsmechanismen enthalten.

Profilarchitektur des Farbgerätemodells

Diagramm, das die Informationen anzeigt, aus denen ein Gerätemodellprofil besteht.

Das CDMP-Schema

<?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-Kalibrierungszugabe

Das ColorDeviceModel Element des CDMP-Schemas wurde in Windows 7 aktualisiert, um das neue Kalibrierungselement einzuschließen. Im Folgenden wird die Änderung des CDMP-Schemas gezeigt.

  ...
  <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>
  ...

Die CDMP-Schemaelemente

Anmerkung

Primaries sind primäre Proben von Rot, Grün, Blau, Schwarz und Weiß. Eine primäre Rampe ist eine Tonalhierarchie von der geringsten Leuchtdichte bis hin zum vollständigen Primärwert. Die maximale Anzahl von Einträgen in einer Tonhierarchie beträgt 4096.

Anmerkung

DMPs sind erforderlich, um Messdaten zu erhalten.

ColorDeviceModelProfile

Dieses Element ist vom Typ ColorDeviceModel.

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

ColorDeviceModel

Dieses Element ist eine Sequenz der folgenden Unterelemente.

  1. ProfileName-Zeichenfolge,
  2. optionale Beschreibungszeichenfolge,
  3. optionale Author-Zeichenfolge,
  4. optional MeasurementConditions MeasurementConditionsType,
  5. Self-Luminous vom Typ Boolean,
  6. MaxColorant float,
  7. MinColorant float,
  8. Auswahl von Elementen
    1. CRTDevice,
    2. LCDDevice,
    3. RGBProjectorDevice,
    4. ScannerDevice,
    5. CameraDevice,
    6. RGBPrinterDevice,
    7. CMYKPrinterDevice,
    8. RGBVirtualDevice,
  9. PlugInDevice,
  10. optional Extension ExtensionType

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft. Zeichenfolgenunterelemente haben maximal 10.000 Zeichen. Das MaxColorant-Unterelement muss größer oder gleich Null (0) und größer als das MinColorant-Unterelement sein. Der MinColorant kann negativ sein.

NamespaceVersion

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" mit Windows Vista.

Gültigkeitsprüfungsbedingungen: Jeder Versionswert >0.1 oder <=2.0 ist gültig, um ungebrochene Änderungen am Format zu unterstützen.

Dokumentation

Gerätemodellprofilschema.

Copyright (C) Microsoft. Alle Rechte vorbehalten.

CRTDevice-Element

Dieses Element ist eine Abfolge von Unterelementen eines MeasurementData DisplayMeasurementType.

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

LCDDevice-Element

Dieses Element ist eine Abfolge von Unterelementen eines MeasurementData DisplayMeasurementType.

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

ProjektorDevice-Element

Dieses Element ist eine Abfolge von Unterelementen eines MeasurementData RGBProjectorMeasurementType.

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

ScannerDevice-Element

Dieses Element ist eine Abfolge von Unterelementen eines MeasurementData RGBCaptureMeasurementType

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

CameraDevice-Element

Dieses Element ist eine Abfolge von Unterelementen eines MeasurementData RGBCaptureMeasurementType

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

RGBPrinterDevice-Element

Dieses Element ist eine Abfolge von Unterelementen eines MeasurementData RGBPrinterMeasurementType.This element is a sequence of sub-elements of a MeasurementData RGBPrinterMeasurementType.

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

CMYKPrinterDevice-Element

Dieses Element ist eine Abfolge von Unterelementen eines MeasurementData CMYKPrinterMeasurementType.

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

RGBVirtualDevice-Element

Dieses Element ist eine Abfolge von Unterelementen eines RGBVirtualMeasurementDataType.

Überprüfungsbedingungen: Jedes Unterelement wird durch seinen eigenen Typ überprüft.

PlugInDeviceType

Dieses Element ist eine Sequenz einer GUID GUIDType und aller Unterelemente.

Überprüfungsbedingungen: Die GUID wird verwendet, um der GUID der DM PlugIn Dll-GUID zu entsprechen. Es gibt maximal 100.000 benutzerdefinierte Unterelemente.

RGBVirtualMeasurementType

Dieses Element ist eine Sequenz, die aus

  1. RGBPrimariesGroup-Gruppe

  2. Eine Auswahl von

    • Gamma
    • GammaOffsetGain
    • GammaOffsetGainLinearGam
    • ToneResponseCurves-Elemente
  3. optional GamutBoundarySamples GamutBoundarySamplesType

  4. TimeStamp dateTime

Überprüfungsbedingungen: Jedes Unterelement dieser Typen verfügt über eigene Gültigkeitsprüfungsbedingungen.

GammaType

Dieses Element ist ein komplexer Typ, der aus dem Attribut besteht.

  • Gamma NonNegativeFloatType

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

GammaOffsetGainType

Dieses Element ist ein komplexer Typ, der aus den Attributen besteht.

  • Gamma NonNegativeFloatType
  • Offset NonNegativeFloatType
  • Gain NonNegativeFloatType

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

GammaOffsetGainLinearGainType

Dieses Element ist ein komplexer Typ, der aus den Attributen besteht.

  • Gamma NonNegativeFloatType
  • Offset NonNegativeFloatType
  • Gain NonNegativeFloatType
  • LinearGain NonNegativeFloatType
  • TransitionPoint NonNegativeFloatType.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

ToneResponseCurvesType

Dieses Element ist eine Abfolge von

  1. RedTRC FloatPairList
  2. GreenTRC FloatPairList
  3. BlueTRC FloatPairList

Das Element verfügt außerdem über ein Attribut "TRCLength" vom Typ "unsignedint".

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

GamutBoundarySamplesType

Dieses Element ist eine Sequenz von RGB RGBTypes.

Validierungsbedingungen: Derzeit ungebundene maximale Vorkommen, die basierend auf Branchenfeedback begrenzt werden sollen.

FloatPairList

Dieses Element ist ein einfacher Listentyp von Gleitkommapaaren.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

CMYKPrinterMeasurementType

Dieses Element ist ein

  1. Sequenz des ColorCube-Elements, das aus einer Sequenz von Sample NonNegativeCMYKSampleType besteht

  2. TimeStamp dateTime-Attribut.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

RGBPrinterMeasurementType

Dieses Element ist ein

  1. Sequenz des ColorCube-Elements, das aus einer Sequenz von Sample NonNegativeRGBSampleType besteht

  2. TimeStamp dateTime-Attribut.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

RGBCaptureMeasurementType

Dieses Element ist eine Abfolge von

  1. PrimaryIndex complexType von

    1. White OneBasedIndex
    2. Optionaler schwarzer OneBasedIndex
    3. Optionaler Red OneBasedIndex
    4. Optionaler grüner OneBasedIndex
    5. Optional Blue OneBasedIndex
    6. Optionaler Cyan OneBasedIndex
    7. Optionaler Magenta OneBasedIndex
    8. Optionaler gelber OneBasedIndex
  2. Neutrale Indizes von Zeilen von OneBasedIndex

  3. ColorSamples-Sequenz von Sample NonNegativeRGBSampleType

Das Element verfügt auch über ein TimeStamp dateTime-Attribut.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

OneBasedIndex

Dieses Element ist eine einfache Art von Einschränkungsbasis ohne Vorzeichen mit dem minInclusive-Wert = "1".

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

RGBProjectorMeasurementType

Dieses Element ist eine Abfolge von

  1. RGBPrimariesGroup-Gruppe
  2. Element ColorSamples, das aus einer Sequenz von Sample NonNegativeRGBSampleType besteht

Das Element verfügt auch über ein TimeStamp dateTime-Attribut.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

DisplayMeasurementType

Dieses Element ist eine Abfolge von

  1. RGBPrimariesGroup gruppieren
  2. GrayRamp der Sequenz von Sample NonNegativeRGBType
  3. RedRamp der Sequenz von Sample NonNegativeRGBType
  4. GreenRamp der Sequenz von Sample NonNegativeRGBType
  5. BlueRamp der Sequenz von Sample NonNegativeRGBType

Das DisplayMeasurementType-Element verfügt auch über ein TimeStamp dateTime-Attribut.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

MeasurementConditionsType

Der MeasurementConditionsType ist eine Abfolge von Unterelementen, die Folgendes enthalten:

  1. ColorSpace restricted string enumeration value of "CIEXYZ"
  2. optionale Auswahl von WhitePoint NonNegativeXYZType- oder WhitePointName-Zeichenfolgenaufzählung von Werten D50, D65, A oder F2
  3. Geometry GeometryType
  4. Blenden ganzzahlige Zahlen in Millimetern

Standardwerte sind:

  1. RGB- und CMYK-Drucker:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm Blendengröße
  2. Scanner:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm Blendengröße
  3. Displays und RGB Virtual Device:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm Blendengröße
  4. Fotoapparate:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. Direct GeometryType
    4. 10mm Blendengröße

Gültigkeitsprüfungsbedingungen: Überprüfung jedes Unterelements wird durch Überprüfungsbedingungen für diese Unterelemente bestimmt. Fehlt ein Unterelement, wird der typspezifische Standardtyp des Gerätemodells verwendet.

GeometryType

Schnur

Enumerationswerte:

  • "0/45"
  • "0/diffuse"
  • "diffuse/0"
  • "Direkt"

Gültigkeitsprüfungsbedingungen: Ein beliebiger Wert mit Ausnahme der aufgelisteten Werte ist ungültig. Diese Informationen ändern das Grundlegende Verarbeitungsverhalten nicht.

RGBPrimariesGroup

Dieses Element ist eine Abfolge von

  1. WhitePrimary NonNegativeXYZType
  2. RedPrimary NonNegativeXYZType
  3. GreenPrimary NonNegativeXYZType
  4. BluePrimary NonNegativeXYZTYpe
  5. BlackPrimary NonNegativeXYZType

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

NonNegativeCMYKSampleType

Dieses Element ist eine Abfolge von

  1. CMYK NonNegativeCMYKType
  2. CIEXYZ NonNegativeXYZType

Das Element verfügt außerdem über eine optionale Attribut-Tag-Zeichenfolge.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

NonNegativeRGBSampleType

Dieses Element ist eine Abfolge von

  1. RGB NonNegativeRGBType
  2. CIEXYZ NonNegativeXYZType

Das Element verfügt außerdem über eine optionale Attribut-Tag-Zeichenfolge.

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

NonNegativeCMYKType

Dieses Element, das aus Attributen besteht

  1. C float
  2. M float
  3. Y float
  4. K float

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

NonNegativeRGBType

Dieses Element, das aus Attributen besteht

  1. R float
  2. G float
  3. B float

Validierungsbedingungen: Aus Branchenfeedback zu ermitteln.

ExtensionType

Das ExtensionType-Element ist eine Abfolge eines beliebigen Unterelementtyps und wird für proprietäre Informationen von Nicht-Microsoft-Anwendungen verwendet.

Überprüfungsbedingungen: Dieses Element ist optional. Es können maximal 1000 Erweiterungselemente vorhanden sein.

NonNegativeXYZType

Das NonNegativeXYZType-Element besteht aus drei IEEE-Gleitkommaelementen mit einfacher Genauigkeit namens "X", "Y" und "Z". Diese Werte sind auf die DMP-Profile messwerte beschränkt. Diese Messungen können entweder absolute (nicht relative) CIEXYZ 1931 reflektierende Werte oder absolute (nicht relative) CIEXYZ 1931 direkte (transmissive) Werte in Candelas pro Meter quadratischen Einheiten sein.

Validierungsbedingungen: Nur reale Werte sind gültig, und negative CIEXYZ-Messwerte sind ungültig. Da es sich hierbei um absolute Werte handelt, können Werte größer als 1,0f sein. Ein angemessener Grenzwert für alle "X", "Y" oder "Z" wird willkürlich auf 10000,0f festgelegt.

XYZType

Das XYZType-Element besteht aus drei IEEE-Gleitkommawerten mit einfacher Genauigkeit: "X", "Y" und "Z".

Die CDMP-Basisalgorithmen

CRT-Gerätemodellgrundlinie

Um dieses Modell zu verstehen, müssen Sie sowohl den Charakterisierungsprozess als auch die Gerätemodellierung berücksichtigen. Im Charakterisierungsprozess werden XYZ-Messungen zunächst auf den Farben durchgeführt, die durch Ausfüllen des Anzeigepuffers eines CRT-Anzeigegeräts abgerufen werden. Die folgenden Beispielwerte generieren gute Daten für das grundlegende CRT-Gerätemodell:

Rot: 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

Blau: B = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = G = 0

Neutrale: R = G = B = 0, 8, 16, 32, 64, 128, 192, 255

Auch Inkremente außer 15 und nichtlinearen Schritten können verwendet werden. Jede rote, grüne, blaue und neutrale Rampe muss mindestens drei Proben enthalten, aber es wird empfohlen, weitere Proben bereitzustellen. Sie müssen Proben für reines Rot, Grün, Blau, Schwarz und Weiß bereitstellen. Die Beispiele müssen nicht einheitlich angeordnet sein.

Der Prozess der Erstellung der Tristimulus-Matrix besteht aus zwei Schritten. Schätzen Sie zunächst den Schwarzen Punkt XYZ-Wert oder den Flare. Dieser Schritt basiert weitgehend auf der Arbeit von Bern[3] mit einer leicht modifizierten Zielfunktion für die nichtlineare Optimierung. Zweitens berechnen Sie die Tristimulus-Matrix basierend auf dem Ergebnis aus Schritt 1 und auch aus einer durchschnittlichen Berechnung für alle Messungen pro Kanal, nicht nur die für die maximale digitale Anzahl.

Jede dieser Schritte enthält detaillierte Verfahren. Der Ausgangspunkt ist die Rampen (17 Schritte in unserem Beispiel) für jeden R-, G- und B-Kanal. Wenn die XYZ-Messungen auf der Farbigkeit Xy- -Ebene gezeichnet werden, wird eine typische Situation in Abbildung 1 dargestellt. Schritt 1 besteht darin, ein nichtlineares Optimierungsproblem zu lösen, um den "besten passgenauen" schwarzen Punkt zu finden, der die Drift in der Farbigkeit minimiert, während man entlang der R-, G- und B-Kanäle durchläuft. Basierend auf Bern[3], suchen wir ( XK,YK,ZK ), die die folgende Zielfunktion minimiert:

Zeigt die Zielfunktion an, wobei Sr, Sg und Sb die Datenpunkte auf den R-, G- und B-Kanälen sind.

wobei SR,SGund SB die Datenpunkte sind, die den Punkten auf den R-, G- und B-Kanälen entsprechen. Definieren Sie für jeden Satz SFolgendes:

Zeigt eine Formel zum Definieren eines satz S.

Im vorherigen Abschnitt | S | ist die Kardinalität von S, d. h. die Anzahl der Punkte im Satz S. Zeigt eine Formel für die Farbigkeit eines Punkts an. ist die Farbigkeitskoordinate des Punkts Zeigt eine Formaula für einen Punkt an. , sodass zeigt eine Formel für den Mittelwert oder die Mitte der Masse an.ist der Mittelwert oder die Mitte der Masse aller Punkte im Satz S in der Farbigkeitsebene. Daher zeigt eine Formel für die Summe einer zweiten Punktzahl an. ist die Summe der zweiten Momente der Punkte über die Mitte der Masse und ist ein Maß dafür, wie verteilt die Punkte darüber sind. Schließlich zeigt eine Formel für das Gesamtmaß der Ausbreitung von drei Punktgruppen an. ist ein Gesamtmaß dafür, wie verteilt sich die drei Punktegruppen auf ihre jeweiligen Massenzentren beziehen.

In der Berechnung von Zeigt eine Formel von f(X,Y,Z; Xk, Yk, Zk). , wenn eine Formel für X. anzeigt, wird die Berechnung übersprungen, und die Kardinalität von S wird entsprechend angepasst.

Trotz der offensichtlichen Komplexität der objektiven Funktion, Es handelt sich um eine Summe der Quadrate vieler unterschiedlicher Funktionen in XK,YKZK (17 Punkt 2xy -components 3 Kanäle = 102, im Beispiel), und daher ist es für standardmäßige nichtlinearste Quadrattechniken am besten, z. B. der Levenberg-Marquardt Algorithmus, der in WCS verwendet wird. Beachten Sie, dass sich die oben genannte Zielfunktion von der in Bern[3] vorgeschlagenen unterscheidet, dass die letztere Funktion die Varianz der Entfernungen vom Massemittelpunkt misst, sodass die Varianz null ist, wenn die Punkte von der Mitte der Masse gleich sind, auch wenn sie sich ziemlich weit darüber verteilen können. Im Beispiel wird die Verteilung von Punkten direkt mit den zweiten Momenten konverollt.

Wie bei jedem iterativen Algorithmus für das Problem der nichtlinearen Kleinsten Quadrate erfordert Levenberg-Marquardt eine anfängliche Vermutung. Es gibt zwei offensichtliche Kandidaten. Eine ist (0, 0, 0); die andere ist der gemessene schwarze Punkt. Für den CTE wird der gemessene schwarze Punkt zuerst als anfänglicher Schätzwert verwendet. Wenn maximal 100 Iterationen überschritten werden, ohne einen Schwellenwert für einen durchschnittlichen Abstand von 0,001 von jedem Punkt von seiner Massemitte zu erreichen (was einem Schwellenwert von (0,001) 17 3 = 0,000051 für die Zielfunktion entspricht, wird eine weitere Iterationsrunde mit der anfänglichen Vermutung von (0, 0, 0, 0) durchgeführt. Die resultierende Schätzung des schwarzen Punkts ist XYZ im Vergleich zur besten Schätzung aus der vorherigen Iterationsrunde (mit dem gemessenen schwarzen Punkt als anfänglicher Schätzwert). Verwenden Sie die Schätzung, die den kleinsten Wert für die Zielfunktion angibt. Die Wahl von 100 Iterationen und der Fehlerabstand von 0,001 wurden jeweils empirisch ausgewählt. In zukünftigen Versionen kann es sinnvoll sein, den Fehlerabstand zu parametrisieren.

Das Ergebnis von Schritt 1 ist der geschätzte schwarze Punkt ( XK,YK,ZK ). Schritt 2 besteht aus der Bestimmung der Tristimulus-Matrix durch Durchschnittlichkeit der Farbigkeit der Punkte in den drei Clustern, die in Schritt 1 ermittelt werden. Bei CRTs erfolgt dies in erster Linie, um die Auswirkungen von Messfehlern zu minimieren. Die punkte, die bei der Durchschnittlichkeit der Farbigkeit verwendet werden, müssen die gleichen Punkte sein, die in Schritt 1 in der Optimierung verwendet werden. Anders ausgedrückt: Wenn der erste Punkt (digitale Anzahl 15, im Beispiel) in jeder Rampe im Optimierungsschritt verworfen wird, muss dasselbe im Mittelwert erfolgen. If Shows formulas of averaged chromaticity for coordinates in the red and green channels. und Zeigt eine Formel der durchschnittliche Farbigkeit für Koordinaten im blauen Kanal an. sind die durchschnittliche Farbigkeitskoordinaten der roten, grünen und blauen Kanäle, dann bestimmt das folgende Verfahren die Tristimulus-Matrix. Lösen Sie zunächst das lineare 3?3-System:

Zeigt den ersten Teil des Verfahrens an, um ein lineares 3?3-System zu lösen.

Zeigt den zweiten Teil des linearen 3?3-Systems an. Zeigen Sie den t subscript b-Wert am Ende des zweiten Teils des linearen 3?3-Systems an.

XW,YW,ZW

Zeigt den letzten Teil des Verfahrens an, um ein lineares 3?3-System zu lösen.

Nachdem die Tristimulus-Matrix bestimmt wurde, folgt die Bestimmung von Tonkurven dem Standardansatz. Bei CRT-Displays wird davon ausgegangen, dass die einzelnen Kanäle dem "GOG"-Modell folgen:

Zeigt die Formel für das Modell

wo kg ist der "Gewinn",1 -kg ist der "Offset" und ? ist das "Gamma". Die umkehrende Matrix der Tristimulus-Matrix wird auf die XYZ-Daten der Neutralen angewendet, um die linearen RGB-Daten abzurufen, die dann mit den digitalen RGB-Werten korreliert werden, wobei die nichtlineare Regression im GOG-Modell verwendet wird. Diese Merkmale müssen für die R-, G- und B-Kanäle nicht identisch sein und sind in der Regel nicht identisch.

Bern[1]: Bern, Billmeyer und Saltzmans Prinzipien der Farbtechnik, 3 rd Ed. John Wiley & Söhne (2000).

Bern[2]: Bern und Katoh, Die digital-zu-radiometrische Übertragungsfunktion für computergesteuerte CRT Displays, CIE Expert Symposium '97 Farbstandards für Imaging Technology, Nov. 1997.

Bern[3]: Bern, Fernandez und Taplin, Schätzen Black-Level Emissionen von Computer-Controlled Displays, Farbforschung und Anwendung, 28: 379-383 Wiley Periodika, Inc. (2003)

Kang[1]: Kang, Color Technology for Electronic Imaging Devices, SPIE (1997)

Katoh[1]: Katoh, Deguchi und Bern, Eine genaue Charakterisierung des CRT Monitor (II) Vorschlag für eine Erweiterung der CIE-Methode und deren Überprüfung, Opt. Rev. 8: 397-408 (2001)

Baseline für LCD-Gerätemodelle

Die BASELINE des LCD-Gerätemodells ähnelt der CRT-Gerätemodellbasis. In diesem Abschnitt wird erläutert, wie sich die LCD-Modellierung von der CRT-Modellierung unterscheidet.

Ein Unterschied besteht darin, dass Sie nicht davon ausgehen können, dass LCD-Displays dem für CRTs verwendeten GOG-Modell folgen, und die Tonkurven werden durch Interpolation gemessener Daten abgerufen. Aus diesem Grund sollte die neutrale Geräteachse häufiger abgesampt werden.

Im Folgenden finden Sie einige typische Beispielwerte, die gute Daten für die Grundlinie des LCD-Gerätemodells generieren können:

Rot: 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

Blau: B = 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, R = G = 0

Neutrale: R = G = B = 0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255.

Der Prozess der Durchschnittlichkeit gemessener Farbfarbchromtiken, um die Farbfarbigkeiten für die Geräteprimierung zu erhalten, ist für LCDs wichtiger als für CRTs. Wenn XYZ-Messungen auf der Farbigkeit xy -Ebene gezeichnet werden, wird eine typische Situation in Abbildung 1 dargestellt. Beachten Sie, wie sich die Farbigkeit in Richtung des schwarzen Punkts bewegt. Dies liegt daran, dass alle LCDs eine bestimmte Menge an Lichtlecks aufweisen.

Diagramm, das ein Diagramm der Farbigkeit mit Rohdaten ohne Korrektur zeigt.

Abbildung 1: Das Farbdiagramm mit Rohdaten ohne Korrektur

Wenn dies von den rohen XYZ-Maßen subtrahiert wird, wird eine typische Situation in Abbildung 2 dargestellt. Tthe Punkte sind jetzt um drei Zentren gruppiert, obwohl sie nicht identisch auf sie fallen. Der für CRTs beschriebene Durchschnittlichungsprozess verbessert die Ergebnisse für LCDs erheblich.

Diagramm, das ein Diagramm der Farbigkeit mit Rohdaten mit einem angepassten schwarzen Punkt zeigt.

Abbildung 2: Das Farbigkeitsdiagramm mit Daten mit angepassten schwarzen Punkt

RGB Capture Device Model Baseline

Das grundlegende RGB-Aufnahmegerätemodell ist eine Unterklasse der IDeviceModel-Klasse. Bei der farbmetrischen Charakterisierung von Farbaufnahmegeräten wie Scannern und Digitalkameras wird der folgende Ansatz verwendet. Ein Ziel, das aus Farbpatches mit bekannten CIEXYZ-Werten besteht, wird mithilfe des Aufnahmegeräts erfasst. Das Ergebnis der Aufnahme ist ein RGB-Bitmapbild, in dem die Farbe jedes Patches in einem RGB-Wert codiert wird. Diese RGB-Gerätewerte sind spezifisch für ein bestimmtes Aufnahmegerät. Ziel der colorimetrischen Charakterisierung ist es, eine empirische Beziehung zwischen den RGB-Werten des Geräts und CIEXYZ-Werten oder einer mathematischen Transformation von RGB zu XYZ herzustellen, die das Verhalten des Aufnahmegeräts so genau wie möglich modelliert.

Eine solche mathematische Transformation kann vernünftigerweise durch Polynomen von niedrigen Grad modelliert werden. Dieses Verfahren ist in der Literatur beschrieben, z. B. Kang[92], Kang[97]. In Kang[97] wird ein Ansatz gemeldet, der einen Satz von drei Polynomen mit 3, 6, 8, 9, 11, 14 oder 20 Begriffen in den Variablen R, G und B verwendet, während die drei Polynomen in die X-, Y- und Z-Komponenten des CIEXYZ-Raums zurücktreten. Für das 20-Term-Polynom lautet die Form:

Zeigt das 20-Term-Polynom an.

Es gibt ähnliche Ausdrücke für Y und Z. Die mathematische Technik für die Anpassung der Polynomen liegt in "Multivariate Linear Regression" und wird in jedem elementaren Text in Statistik beschrieben.

Diese Methode der linearen Regression leidet daran, die "richtige" Zielfunktion nicht zu minimieren. Die lineare Regression findet die Lösung der kleinsten Quadrate, was bedeutet, dass die erhaltenen Koeffizienten die Gesamtsumme der Quadrate von Fehlern im zugrunde liegenden Raum oder gleichwertig die Summe der Quadrate der euklinischen Entfernungen minimieren. In der Praxis möchten Sie die Summe der Quadrate minimieren? Es, wo ? E ist einer der akzeptierten Standards wie CIE94. Die Minimierung dieser Zielfunktion ist ein nichtlineares Regressionsproblem.

In der neuen Engine ist Lab to XYZ der CIE-Farbraum, in den zurückgerückt wird, und das 20-Begriff kubische Polynom wird als Modell für das Aufnahmegerät verwendet, oder Koeffizienten ls,as,bs so, dass die folgenden Polynomen die Summe der Quadrate von ? E CIE94 s.

Zeigt einen Satz polynomischer Formeln an.

Die Lösung ( li, eini, bi ) im 60-dimensionalen realen Raum R203 muss so sein, dass der folgende Gesamtfehler minimiert wird:

Zeigt den Gesamtfehler an, der minimiert werden soll.

wobei die Summe durch alle Datenpunktpaare erfolgt (Ri,Gi,Bi;Li,ui,vi ) im stichprobenierten Dataset sowie zusätzliche Kontrollpunkte, die im folgenden Detail beschrieben werden sollen. Dies ist ein nichtlineares Regressionsproblem, da die Parameter ?i, eini, * i* in die zielfunktion in eine nichtlineare Weise (nicht quadratisch).

Denn die objektive Funktion ? ist eine nichtlineare (und nichtquadratische) Funktion der Parameter ?i, eini und * i*, müssen Sie iterative Techniken verwenden, um das Optimierungsproblem zu lösen. Da es sich bei der Form der Zielfunktion um eine Summe von Quadraten handelt, wird eine Standardoptimierungsmethode verwendet, die als Levenberg-Marquardt Algorithmus bezeichnet wird. Es wird als die Methode der Wahl für nichtlineare kleinste Quadrate Probleme betrachtet. Für iterative Algorithmen wie Levenberg-Marquardt müssen Sie einen anfänglichen Schätzwert angeben. Eine gute Anfängliche Vermutung ist in der Regel wichtig, um den richtigen Minimalwert zu finden. In diesem Fall ist ein guter Kandidat für die anfängliche Vermutung die Lösung des linearen Regressionsproblems. Minimieren Sie zunächst die Summe des Quadrats der euklidischen Entfernungen im Laborbereich, indem Sie eine quadratische Zielfunktion definieren:

Zeigt eine definierte quadratische Zielfunktion an.

Die mathematische Lösung für ein solches Problem der "linearen kleinsten Quadrate" ist bekannt. Weil ?i wird nur in der L Modellierung angezeigt, eini nur in der u Modellierung angezeigt wird, und * i* wird nur in der v Modellierung angezeigt; Das Optimierungsproblem kann in drei Unterprobleme zerlegt werden: eine für L, eine für u und eine für v. Berücksichtigen Sie die formeln L. (Die formeln u und die formeln v folgen genau demselben Argument.) Das Problem, die Summe der Quadrate von Fehlern in L zu minimieren, kann als Lösung der folgenden Matrixgleichung im geringsten Quadratsinn angegeben werden:

Zeigt eine Matrixgleichung für L.

dabei ist N die Gesamtanzahl der Datenpunkte (ursprüngliche stichprobenierte Punkte plus Kontrollpunkte, die in einer unten beschriebenen Weise erstellt wurden). In der Regel ist N viel größer als 20, sodass die vorangehende Gleichung überbestimmt ist und eine Lösung mit den geringsten Quadraten erfordert. Eine geschlossene Formularlösung für ? ist verfügbar:

Zeigt eine geschlossene Formularlösung an.

In der Praxis wird die direkte Auswertung mithilfe der geschlossenen Formularlösung nicht verwendet, da sie schlechte numerische Eigenschaften aufweist. Stattdessen wird eine Art Matrixfaktorisierungsalgorithmus auf die Koeffizientenmatrix angewendet, die das System von Formeln auf eine kanonische Form reduziert. In der aktuellen Implementierung wird Singular Value Decomposition (SVD) auf die Matrix R angewendet und dann das resultierende dekompilierte System gelöst.

Die Lösung für das lineare Regressionsproblem, das von bezeichnet wird, zeigt die Lösung für das lineare Regressionsproblem an. wird als Ausgangspunkt des Levenberg-Marquardt Algorithmus verwendet. In diesem Algorithmus wird ein Testschritt berechnet, der den Punkt näher an die optimale Lösung verschieben sollte. Der Testschritt erfüllt eine Reihe linearer Gleichungen, die vom funktionalen Wert und den Werten der Ableitungen am aktuellen Punkt abhängig sind. Aus diesem Grund die Ableitungen der objektiven Funktion ? in Bezug auf die Parameter ?i, einii sind Eingaben für den Levenberg-Marquardt Algorithmus erforderlich. Obwohl es 60 Parameter gibt, gibt es eine Verknüpfung, mit der Sie viel weniger berechnen können. Durch die Kettenregel von Calculus,

Zeigt eine Formel an, die eine Verknüpfung mithilfe der Kettenregel von Calculus zulässt.

wobei j = 1, 2, 20, Li,ui,vi der CIELAB-Wert des i Beispielpunkts ist, und Rij ist der (i,j )-Eintrag der Matrix R oben definiert. Statt Derivate für 60 Parameter zu berechnen, können Sie Derivate für L,eineund b mithilfe numerischer Forward-Differencing berechnen.

Es ist auch erforderlich, ein Stoppkriterium für iterative Algorithmen einzurichten. In der aktuellen Implementierung werden die Iterationen beendet, wenn das mittlere Quadrat DECIE94 kleiner als 1 ist oder die Anzahl der durchgeführten Iterationen 10 überschritten hat. Die Zahl 10 stammt aus der praktischen Erfahrung, dass, wenn die ersten Iterationen den Fehler nicht erheblich reduzieren, weitere Iterationen nicht viel helfen würden, als den Punkt auf oszillatorische Weise zu bewegen, d. h. der Algorithmus kann nicht konvergen. Auch wenn sich der Algorithmus unterscheidet, können wir sicher sein, dass die DECIE94 nicht schlimmer ist als das, was wir begonnen haben, d. h. mit den Parametern, die aus der linearen Regression gewonnen wurden.

Selbst bei der vorherigen Methode der nichtlinearen Regression gibt es mehrere Probleme mit der Anpassung. Ein Problem besteht darin, dass die Polynomen dazu neigen, über die Datenpunkte hinaus zu überschießen oder zu unterschreiten. Künstliche lokale Maxima und Minima können beim Anpassen eingeführt werden. Dies kann durch Verwendung von Polynomen von geringem Grad entgegenwirken, was der Grund ist, dass Sie nicht höher als drei Grad verwenden sollten. Ein schwerwiegenderer Aspekt des Überschießens oder Unterschießens besteht darin, dass ein Polynom zwar theoretisch jeden realen Wert annehmen kann, aber der Raum, den er modellieren möchte, in der Regel physische Einschränkungen und praktische Einschränkungen aufweist. CIEXYZ muss alle X, Y, Z nicht negativ haben, was eine physische Einschränkung ist. In der Praxis nehmen sie nur Werte in der Größenordnung von Hunderten, nicht Tausende oder höher. Ebenso hat CIELAB oder CIELUV eigene physische und praktische Einschränkungen. Wenn der RGB-Raum ausreichend mit Beispielpunkten gefüllt ist, ist das Problem des Überschießens oder Unterschießens nicht schwerwiegend. Die erfassten RGB-Punkte des Aufnahmegeräts füllen den RGB-Raum jedoch normalerweise nicht einheitlich aus. Die Punkte können nur inner der 80% des RGB-Würfels gefüllt werden oder schlimmer noch, sie befinden sich in einer unterdimensionalen Vielfältigen. In diesem Fall können die regressierten Polynomen einen schlechten Job bei der Extrapolierung der Werte über die Datenpunkte hinaus ausführen und manchmal unrealistische Vorhersagen zurückgeben. Sie möchten ein Modell, das immer vernünftige realistische Werte zurückgibt. Dies erfordert eine Methode, mit der das Grenzverhalten von Regressionsponomen effektiv gesteuert werden kann, indem zusätzliche Kosten für die Polynomen auferlegt werden, die sich in der Nähe der Grenze des RGB-Cubes verhalten. Eine weitere Maßnahme, um sicherzustellen, dass die Polynomen immer realistische Werte zurückgeben, indem die Ausgabe innerhalb der CIE-Spektral locus abgeschnitten wird.

An dieser Stelle unterscheiden sich die Scannermodellierung und Kameramodellierung voneinander. Für das Scannermodell wird erwartet, dass das Kameramodell zu Regionen über die stichprobenierten Punkte hinaus extrapoliert wird, einschließlich der "Glanzlichter", die gleiche Extrapolation für das Scannermodell nicht erforderlich ist. Das Scannerziel soll eine Charakterisierung abdecken, die den zu scannenden gedruckten Materialien ähnelt. Das Scannermodell muss weiterhin robust sein, sodass es keine unrealistischen Werte zurückgeben sollte, aber eine Extrapolation weit über das Charakterisierungsziel hinaus ist nicht erforderlich. Um die Stabilität zu gewährleisten, wird das oben genannte L-Polynom bei 100 abgeschnitten, d. h. das Polynommodell wird gezwungen, nicht über "Dmin" des Scannerziels hinaus extrapolieren zu müssen.

Es wird erwartet, dass das Kameramodell auf Glanzlichter extrapoliert wird, sodass das Abschneiden bei 100 nicht erwünscht ist. Stattdessen wird der folgende Algorithmus verwendet.

Künstliche Kontrollpunkte werden eingeführt, um das Verhalten der Polynomen in Regionen mit unzureichender Probenahme zu steuern. Indem sie diese Kontrollpunkte strategisch mit entsprechenden Werten platzieren, dienen sie dazu, die Polynomen in die erforderliche Richtung zu "ziehen". In der aktuellen Implementierung werden acht Kontrollpunkte verwendet, die den Ecken des RGB-Cubes entsprechen. Wenn die Gerätewerte in Einheit normalisiert sind, sind die folgenden Punkte:

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

Mit Ausnahme der weißen R =G =B = 1, die einem CIELAB-Wert von L = 100, u =v = 0 zugeordnet ist, wird der folgende Extrapolationsalgorithmus verwendet, um den entsprechenden CIELAB-Wert zu bestimmen. Im Allgemeinen wird für eine bestimmte (R,G,B ) eine Gewichtung mit jedem der (Ri,Gi,Bi ) im stichprobenierten Datensatz zugeordnet. Es gibt zwei Ziele, um die Gewichtung zuzuweisen. Erstens ist die Gewichtung umgekehrt proportional zum Abstand zwischen (R,G,B ) und (Ri,Gi,Bi ). Zweitens möchten Sie punkte mit einem anderen Farbton als dem angegebenen Punkt verwerfen oder 0 zuweisen (R,G,B ). Um den Farbton zu berücksichtigen, sollten Sie Punkte berücksichtigen, die sich in einem Kegel befinden, dessen Scheitelpunkt (0, 0, 0), dessen Achse mit der Verbindung (0, 0, 0, 0) zu (R,G,B ) übereinstimmt und dessen halb vertikaler Winkel ? erfüllt Cos ? = 0,9. Eine Illustration dieses Kegels finden Sie in Abbildung 3.

Diagramm, das die Form der Nachbarschaft zeigt.

Abbildung 3: Filtern der Beispielpunkte nach Winkel und Abstand. Die Form der dargestellten Nachbarschaft dient nur zur Veranschaulichung. Die tatsächliche Form hängt von dem verwendeten Abstand ab; es ist eine rautenförmige Nachbarschaft, wenn die 1-Norm verwendet wird.

Innerhalb dieses Kegels wird eine zweite Filterung durchgeführt, die auf dem RGB-Abstand basiert, der die 1-Norm verwendet, definiert durch

Zeigt die Formel für die zweite Filterung innerhalb des Kegels an.

Mit dem aktuellen Kegel sucht die anfängliche Suche nach Punkten, die sich innerhalb eines Abstands von 0,1 von (R,G,B ). Wenn innerhalb dieses Radius kein Punkt gefunden wird, wird der Radius um 0,1 erhöht, und die Suche wird neu gestartet. Wenn auch die nächsten Rundennetze keinen Punkt haben, wird der Radius um 0,1 erhöht. Dieser Prozess wird fortgesetzt, bis der Radius MaxDist/5 überschreitet, wobei MaxDist = 3 im Fall von 1-Norm. Wenn kein Punkt gefunden wird, wird der Kegel durch Abnehmen der Cos vergrößert? um 0,05, d. h., den Winkel zu erhöhen? und starten Sie den gesamten Prozess mit einem zunehmenden Radius neu. Dieser Vorgang wird fortgesetzt, bis eine nicht leere Gruppe von Punkten gefunden wird, oder cos ? erreicht 0, d. h. der Kegel hat sich geöffnet, um ein Flugzeug zu werden. An diesem Punkt wird die Suche neu gestartet, indem der Radius erhöht wird, mit der Ausnahme, dass die Suche fortgesetzt wird, bis der Radius MaxDist erreicht. Dies garantiert, dass im schlimmsten Fall eine nicht leere Gruppe von Punkten gefunden wird. Der Algorithmus wird im Flussdiagramm in Abbildung 4 zusammengefasst.

Diagramm, das den Fluss des Algorithmus zeigt.

Abbildung 4: Flussdiagramm zur Bestimmung der S-Stichprobenpunkte, die in der Extrapolation für einen RGB-Eingabewert verwendet werden

Vorausgesetzt, dass der vorstehende Prozess einen nicht leeren Satz S punkt (Ri,Gi,Bi ) und entsprechende (Li,eini,bi ), dann für jeden solchen Punkt, eine Gewichtung wi zugewiesen wird.

Zeigt die Formel für eine Gewichtung für jeden Punkt an.

Schließlich wird das Extrapolant durch

Zeigt die Definition für das Extrapolant an.

Die vorstehenden Gleichungen stellen eine Instanz der "umgekehrten Methoden" dar, die häufig als Shepard-Methoden bezeichnet werden. Durch Ausführen der acht Punkte von eq (6) bis zum Algorithmus werden acht Kontrollpunkte abgerufen, die jeweils mit R,G,B und L,ein,b Werte, die in den Pool mit den ursprünglichen Beispieldaten eingefügt werden.

Um sicherzustellen, dass das Modell immer gültige Farbwerte erzeugt und die Systemintegrität und Stabilität bis zur gesamten Farbverarbeitungspipeline erreicht, müssen Sie eine endgültige Beschneidung an die Ausgabe des Polynommodells durchführen. Die visuelle CIE-Gamut wird durch die achrome Komponente (Y oder L ) und die chromatische Komponente (xy oder a'b'beschrieben, die mit dem XYZ-Raum durch eine projektive Transformation zusammenhängen). In der aktuellen Implementierung wird die a'b' Farbigkeit verwendet, da sie direkt mit dem CIELUV-Raum verknüpft ist. Bei einem beliebigen CIELAB- Wert L zunächst einen nicht negativen Wert:

Zeigt den Clipping von L auf einen nicht negativen Wert an.

Um eine Extrapolation für Glanzlichter zu ermöglichen, wird L nicht mit 100 abgeschnitten, die "konventionelle" Obergrenze für L im Laborbereich.

Wenn L = 0, dann ein und b so abgeschnitten werden, dass ein*= b =* 0 abgeschnitten wird. Wenn L? 0, berechnen

Zeigt die Formel an, wenn L=0.

Dies sind die Komponenten eines Vektors im Diagramm vom weißen Punkt (u?',v?' ) bis zur betreffenden Farbe. Definieren Sie die CIE-Spektral locus als konvexer Rumpf aller Punkte (a',b' ), parametrisiert durch die Wellenlänge ?:

Zeigt die Formel für die Wellenlänge an.

wobei zeigt die Funktionen für den Farbabgleich von CIE an. sind die Farbabgleichsfunktionen von CIE für den 2-Grad-Beobachter. Wenn sich der Vektor außerhalb des CIE-Locus befindet, wird die Farbe an den Punkt auf dem CIE-Locus abgeschnitten, der die Schnittmenge des Locus und die durch den Vektor definierte Linie darstellt. Siehe Abbildung 5. Wenn ein Clipping aufgetreten ist, wird der ein und b Wert rekonstruiert, indem zuerst und b?' aus dem beschnittenen und b'subtrahiert und dann mit 13 Lmultipliziert wird.

Diagramm, das das Diagramm für den Clippingalgorithmus zeigt.

Abbildung 5: Beschneidungsalgorithmus für Lab-Werte außerhalb der visuellen CIE-Skala

In der aktuellen Implementierung wird die CIE-Spektral locus im a'b' Ebene durch eine stückweise lineare Kurve mit 35 Segmenten dargestellt (entsprechend einer Wellenlänge von 360 nm bis einschließlich 700 nm). Indem sie die Liniensegmente so anordnen, dass ihre untergehenden Winkel am weißen Punkt aufsteigend sind, was den absteigenden Wellenlängen entspricht, kann das Liniensegment, das sich mit dem durch den obigen Vektor gebildeten Strahl überschneidet, durch eine einfache binäre Suche gefunden werden.

BASELINE für RGB-Druckergerätemodell

Eine Gerätecharakterisierung eines RGB-Druckers besteht aus der Konstruktion eines empirischen Modells des Geräts, das die geräteunabhängige CIELUV-Farbe für einen bestimmten RGB-Wert vorhersagt

Es gibt zwei Möglichkeiten, das empirische Modell zu konstruieren. Eine Möglichkeit besteht darin, die Gerätedaten für einen RGB-Drucker zu verwenden, und die andere besteht darin, analytische Parameterdaten zu verwenden. In der ersten werden messtechnische Daten verwendet, die von einem Benutzer für ein RGB-Druckergerät bereitgestellt werden, um eine 3D-Nachschlagetabelle (LUT) zu erstellen. Die Messdaten bestehen aus XYZ-Werten für einheitliche RGB-Patches. Typische Samplinggrößen sind 9 oder 17 für jede Komponente. Jeder Patch wird mit einem Colorimeter oder Spektrometer im CIEXYZ-Raum gemessen. Der XYZ-Wert für einen Patch wird dann in den CIELUV-Wert konvertiert, der eine 3D-LUT bildet. Im Gerätemodell wird die tetrahedrale Interpolationsmethode von Sakamoto auf die 3D-LUT angewendet, um die CIELUV-Daten für eine bestimmte RGB-Daten vorherzusagen. (Confer US Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. Die beiden genannten Patente sind abgelaufen.) Die analyseparameterdaten, die in der zweiten Methode übergeben werden, sind lediglich ein zuvor erstellter LUT.The analytical parameter data passed in the second method is simply a LUT that was built previously. In der Regel wurde dieser LUT mit der ersten Methode erstellt, obwohl es handgebaut werden konnte.

In der aktuellen Farbverwaltung wird die Quellzuordnung als Karte definiert, die vom RGB-Raum zu einem geräteunabhängigen CIEXYZ-Farbraum wechselt. Die Zielzuordnung wird als Karte definiert, die vom geräteunabhängigen CIEXYZ-Farbraum zum RGB-Raum wechselt. Es ist die Umkehrung der Quellkarte.

Das empirische Modell wird direkt in der Quellkarte verwendet. Zunächst ordnet es eine bestimmte RGB-Daten in eine CIELUV-Daten zu, die in XYZ-Daten konvertiert werden. In der Zielkarte werden geräteunabhängige CIEXYZ-Daten zuerst in CIELUV-Daten konvertiert. Anschließend werden das empirische Modell und die klassische Newton-Raphson Methode verwendet, um die besten RGB-Daten für die CIELUV-Daten vorherzusagen. Die Details zur Konvertierung von CieLUV in RGB-Daten lauten wie folgt:

Nach der Generierung eines 3D-LUT von RGB bis CieLUV wird die Karte von RGB zu LUV mit tetradedraler Interpolation auf RGB erstellt. Diese Karte wird durch die folgenden Formeln gekennzeichnet:

Zeigt die Formeln für die Karte von R G B bis L U V.

Inversion der Karte besteht aus der Lösung für jede Farbe Zeigt L U V. , das folgende System nichtlinearer Formeln:

Zeigt die nichtlinearen Formeln zum Abfüllen beliebiger Farben L U V.

Eine nichtlineare Gleichung, die auf der klassischen Newton-Raphson-Methode basiert, wird im neuen CTE verwendet. Eine anfängliche Vermutung oder a priori siehe, s prior -(R 0, G 0, B 0) wird durch Durchsuchen einer "Seed-Matrix" abgerufen, die aus einem einheitlichen 8x8x8-Raster von vorrechenten (RGB,Luv)-Paaren besteht. Der RGB-entsprechende Luv, der dem L*u*v* am nächsten kommt, wird ausgewählt. Jeder Punkt in der Ausgangsmatrix entspricht der Mitte einer Zelle, sodass die Iterationen nicht mit einem Punkt auf der Begrenzungsseite des RGB-Cubes beginnen. Mit anderen Worten, die RGB der Samen wird durch: STEP = 1/8 s ijk = (STEP/2 + (i-1) STEP, STEP/2+(j-1)STEP, STEP/2+(k-1)STEP) mit i,j,k = 1...8 Am i th step of Newton-Raphson, die nächste Schätzung Zeigt die Variablen für die nächste Schätzung an. wird von der Formel abgerufen:

Zeigt die Formel für die Schätzung an.

Iterationsstopps, wenn der Fehler (Abstand im CIELUV-Raum) kleiner als eine vordefinierte Toleranzstufe (0,1 im CTE) ist oder wenn die Anzahl der Iterationen die maximal zulässige Anzahl von Iterationen überschritten hat (10 in der CTE). Die Werte für die Toleranz und die Anzahl der Iterationen wurden empirisch ermittelt, um effektiv zu sein. In zukünftigen Versionen kann der Toleranzwert geändert werden.

Die Jacobian-Matrix wird mithilfe der Vorwärtsdifferenz berechnet, mit Ausnahme eines Grenzpunkts (einer oder mehrerer der R, G, B ist 1), wobei stattdessen die Rückwärtsdifferenz verwendet wird. Anstatt die Umkehrung der Jacobian-Matrix zu berechnen, wird das lineare System direkt mit Gauss-Jordan Eliminierung mit voller Pivotierung gelöst.

Am Ende der Iterationen kann die Konvergenz immer noch nicht erreicht werden, da Newton-Raphson ein "lokaler" Algorithmus ist, d. h., es funktioniert nur gut, wenn Sie mit einer anfänglichen Vermutung beginnen, die nahe an der tatsächlichen Lösung liegt. Wenn am Ende der Newton-Raphson Iterationen die Konvergenz innerhalb der vordefinierten Fehlertoleranz nicht erreicht wurde, werden die Iterationen mit einer neuen Gruppe von Samen neu gestartet, die wie folgt definiert sind.

Zum Beispiel ist die bisher beste Lösung (r, g, b). Aus dieser Lösung werden N A posteriori Samen abgeleitet, wobei N = 4. Intuitiv wird die Lösung "in Richtung Mitte" in einer Schrittgröße verschoben, die von N abhängt. Siehe Abbildung 6.

Diagramm, das Die Wegbeschreibungen der Lösung zeigt.

Abbildung 6: Die Perturbationsrichtung der Lösung hängt davon ab, in welcher Oktanten sie sich befindet.

Mit anderen Worten, wenn r > 0,5, wird der Wert im R-Kanal verringert, andernfalls wird der Wert erhöht. Es gibt ähnliche Logik für die G- und B-Kanäle. Die genauen Definitionen sind:

PERTURBATION = 0,5/(N+1)

Dir(r) = -1, wenn r > 0,5; +1 andernfalls. Ebenso für Dir(g) und Dir(b)

Der jth a posteriori seed, s ????, is (r + Dir(r) *j * PERTURBATION, g + Dir(g) * j * PERTURBATION, b + Dir(b) * j * PERTURBATION)

Probieren Sie die ersten ???? und wenn sie eine neue Lösung innerhalb der Fehlertoleranz gibt, können Sie anhalten. Versuchen Sie andernfalls die zweite ???? usw. bis zum Nth s ????.

Die Schematik des gesamten Algorithmus ist in Abbildung 7 dargestellt.

Diagramm, das den Fluss zum Umkehren des Gerätemodells zeigt.

Abbildung 7: Schematik der Umkehrung des Gerätemodells

RGB Virtual Device Model Baseline

Dieses Gerätemodell (DM) ist ein einfacher Matrix-/Tonwiedergabealgorithmus. Die Matrix wird vom weißen Punkt abgeleitet und primaries mit Standardfarbwissenschaftsalgorithmen. Die Tonwiedergabekurve wird von den Messparametern gemäß den ICC-Beschreibungen von CurveType und ParametricType (oder nach Bedarf invertiert) abgeleitet. Details zu den internen Algorithmen werden nach zusätzlicher Überprüfung von Problemen mit hohem dynamischen Bereich bereitgestellt.

Das virtuelle RGB-Gerätemodell ist eine idealisierte Matrix-/Tonwiedergabekurve RGB, die dem matrixbasierten Profildesign von ICC mit drei Komponenten ähnelt. Die Parameter "virtuelle Messung" der DM enthalten einen Weißen Punktwert (absolute CIEXYZ), RGB-Primärwerte (absolute CIEXYZ) und eine Tonwiedergabekurve, die auf dem ICC ParametricCurveType und CurveType in XML-Formatierung basiert, die mit den DMP-Schemas konsistent ist.

Icc parametricCurveType Funktionstypcodierung und entsprechende Unterstützung in IRGBVirtualDeviceModelBase sind in der folgenden Tabelle dargestellt.

Funktionstyp Parameter Art Anmerkung
Zeigt die Funktion
g
GammaType
Allgemeine Implementierung
Zeigt die Funktion
ga b
GammaOffsetGainType
CIE 122-1966
Zeigt die Funktion
ga b c
GammaOffsetGainOffsetType
IEC 61966-3
Zeigt die Funktion
ga b c d
GammaOffsetGainGainType
IEC 61966-2.1
(sRGB)
Zeigt eine Funktion für
ga b c d e f
N/A
In WCS nicht unterstützt

Die Tonkurve für virtuelle RGB-Geräte wird in DeviceToColorimetric zwischen den Eingabedaten, pDeviceColors und der Matrix multipliziert. Für ColorimetricToDevice muss eine Methode verwendet werden, um die Tonkurve umzukehren. In der Basisimplementierung erfolgt dies durch direkte Interpolation in derselben Tonkurve, die für DeviceToColorimetric verwendet wird.

Die Kurven sollten in den Profilen als Zahlenpaare im Gleitkommabereich angegeben werden. Die erste Zahl stellt Werte in pDeviceColors dar. Die zweite Zahl stellt die Ausgabe der Tonkurve dar. Alle Werte in der Tonkurve müssen zwischen "minColorantUsed" und "maxColorantUsed" liegen. Tonkurven müssen mindestens zwei Einträge enthalten: eine für minColorantUsed und eine für maxColorantUsed. Die maximale Anzahl von Einträgen im ToneCurve ist 2048. Je mehr Einträge in der Tabelle, desto genauer können Sie Krümmung modellieren. Zwischen den Einträgen wird eine stückweise lineare Interpolation durchgeführt.

Sie können alternative Interpolationsmethoden in Betracht ziehen. Wenn Sie etwas über das zugrunde liegende Verhalten des Geräts wissen, können Sie weniger Beispiele und Modelle genauer mit einer höheren Reihenfolgenkurve verwenden. Wenn Sie jedoch den falschen Kurventyp verwenden, sind Sie sehr ungenau. Ohne weitere Informationen können Sie den Kurventyp nicht erraten. Verwenden Sie also die lineare Interpolation, und stellen Sie viele Datenpunkte bereit.

CMYK Printer Device Model Baseline

Eine Gerätecharakterisierung eines CMYK-Druckers besteht darin, ein empirisches Modell des Geräts zu konstruieren, das die gedruckte Farbe für einen bestimmten CMYK-Wert vorhersagt. Die Charakterisierung beinhaltet auch die Inversion dieses Modells, so dass ein Rezept des CMYK-Werts für uns für eine bestimmte Farbe gedruckt werden kann. Dies wird in der Regel als CIEXYZ- oder CIELAB-Wert definiert.

In der Regel wird ein IT8.7/3-Ziel mit CMYK-Patches verwendet. Die Patches bestehen aus dem Sampling des CMYK-Raums auf gut definierte Weise, sodass ein rechteckiges Raster (mit nicht einheitlichem Abstand in C, M, Y und K) gebildet wird. Jeder Patch wird dann mit einem Colorimeter oder Spectrophotometer gemessen. Die Messungen in CIEXYZ-Werten bilden dann eine Nachschlagetabelle (LUT), aus der ein empirisches Modell des Druckers mit der Interpolationsmethode von Sakamoto erstellt wird. US Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. Die beiden genannten Patente sind abgelaufen.

Spezifische Anforderungen für die CMYK-Messproben, die für ein Gerätemodellprofil erforderlich sind, das vom CMYK-Druckerbasisgerätmodell als gültig akzeptiert wird, sind wie folgt. (Der Beispielsatz wird am deutlichsten als eine Gruppe von CMY-Beispielwürfeln beschrieben, die jeweils einer bestimmten K-Ebene zugeordnet sind.)

  • Mindestens müssen gültige CMY-Cubes für die Ebenen K = 0 und K = 100 bereitgestellt werden.

  • Zwischen K-Ebenen können nicht einheitlich angeordnet sein.

  • Alle Zwischen-K-Ebenen ohne einen gültigen CMY-Cube werden ignoriert.

  • Die CMY-Cubes können nicht einheitliche Beispielintervalle (Rasterabstand) verwenden, aber derselbe Satz von Beispielintervallen muss in allen Dimensionen C,M und Y im CMY-Cube für eine bestimmte K-Ebene verwendet werden.

  • Jeder CMY-Cube der K-Ebene kann eine andere Anzahl und abstände von Beispielintervallen verwenden.

  • Alle CMY-Würfel müssen die "Ecken" des CMY-Würfels enthalten, d. a. CMY-Beispiele bei [0,0,0;0], [0,0,100], [0,100,0], [100,0;0], [0,100,100], [100,0,100], [100,100, 0], [100,100,100].

  • Alle mittleren CMY-Rasterebenen müssen in jedem Kanal vollständig analysiert werden. Mit anderen Worten, ein Beispiel muss an jeder 3D-Rasterkreuzung innerhalb des CMY-Cubes vorhanden sein.

  • Für die Würfel K = 0 und K = 100 CMY sind 2 x 2 x 2 "Nur Ecken" die mindestens als gültig akzeptierte Würfel.

    [HINWEIS: Für K=0- und K=100-Ebenen wird ein 3x3x3 CMY-Cube als 2x2x2-Würfel "nur Ecken" verarbeitet; die Zwischenbeispielebene wird ignoriert. 4x4x4 und größere Cubes werden alle On-Grid-Beispiele verwendet.]

  • Bei Mittleren K-Ebenen sind 4x4x4 CMY-Cubes das Mindestmaß, das als gültig akzeptiert wird.

Ein hochwertiges Profil verwendet feinere Samplingraster als die mindeste, die für Gültigkeit erforderlich sind, in der Regel 9x9x9x9 oder höher. Die Beispiele aus den ZIELEN IT8.7/3, IT8.7/4 und ECI erzeugen gültige Gerätemodellprofile (DMPs) für das CMYK-Druckerbasisgerätmodell. Obwohl dieses Gerätemodell in der Lage ist, die überflüssigen (off-grid)-Proben in diesen Zielen zu ignorieren, ist es nicht garantiert, dies für andere Ziele zu tun, und daher wird empfohlen, überflüssige Proben aus Messsätzen zu entfernen, die in Profile für dieses Gerätemodell gehen.

Die Inversion des Druckermodells stellt mehr Schwierigkeiten dar. Angesichts einer Eingabefarbe in CIECAM gibt es eine Frage, ob sich diese Farbe innerhalb der Druckerskala befindet. Es gibt auch das Problem bei der Anordnung von Punkten im Farbdarstellungsbereich. Während wir die CMYK-Werte so anordnen können, dass sie auf ein rechteckiges Raster fallen, wie es im IT8.7/3-Ziel der Fall ist, kann nicht von den resultierenden gedruckten Farben gesagt werden, wie sie sich im Farbdarstellungsbereich befinden. Im Allgemeinen werden sie im Farbdarstellungsbereich ohne bestimmtes Muster verstreut.

Es gibt im Allgemeinen zwei Ansätze für das Inversionsproblem von punktierten Punkten. Ein Ansatz besteht darin, eine geometrische Unterteilung der Druckerskala mit elementaren 3dimensionalen Festkörpern wie Tetrahedra zu verwenden. Eine Unterteilung der Druckerskala im Farbdarstellungsbereich kann aus der entsprechenden Unterteilung des CMY(K)-Leerzeichens induziert werden, siehe Hung[93], Kang[97]. Dieser Ansatz hat den Vorteil der rechentechnischen Einfachheit. Bei einem Tetrahedron werden nur vier Punkte in einer Interpolation verwendet. Andererseits hängt das Ergebnis stark von einigen Punkten ab, was bedeutet, dass ein Messfehler erhebliche Auswirkungen auf das Ergebnis hat. Der Interpolant tendiert auch dazu, nicht so glatt zu sein. Der zweite Ansatz setzt keine Unterteilung voraus und basiert auf der Technik der punktierten Dateninterpolation.The second approach does not assume any subdivision, and is based on the technique of scattered data interpolation. Ein klassisches Beispiel ist die Technik der Shepard-Interpolation oder umgekehrte gewichtete Methode (Siehe Shepard [68]). Hier werden mehrere Punkte, die den Eingabepunkt umgeben, auf irgendeine Weise ausgewählt, wobei jeweils eine Gewichtung zugewiesen wird, in der Regel umgekehrt proportional zum Abstand, und die Interpolante wird als gewichteter Mittelwert der benachbarten Punkte verwendet. Bei diesem Ansatz ist die Wahl der benachbarten Punkte für die Leistung von größter Bedeutung. Obwohl zu wenige Punkte die interpolanten ungenauen und nicht reibungslosen Rendern können, stellen zu viele Punkte hohe Rechenkosten auf, da die Gewichte in der Regel nicht lineare Funktionen und kostenaufwendig zu berechnen sind.

Die beiden oben beschriebenen Ansätze haben Probleme. Der Unterteilungsansatz hängt kritisch davon ab, dass die Daten relativ leer sind, und im Allgemeinen ist der Interpolant nicht sehr reibungslos. Die Interpolation von punktierten Daten ist toleranter für Datengeräusche und bietet im Allgemeinen einen reibungsloseren Interpolanten, ist aber rechenintensiver.

Das neue CTE setzt einen alternativen Ansatz ein. Das CMYK-Gerät wird als Sammlung mehrerer CMY-Geräte behandelt, von denen jeder einen bestimmten Wert von Schwarz (K) aufweist. Mit einem Auswahlalgorithmus, der als Parameter Licht und Chroma verwendet, wird ein Schwarzwert ausgewählt. Die CMY-Werte werden durch Inversion der entsprechenden CMY-zu-Luv-Tabelle mithilfe der Newton-Methoden abgerufen, die an anderer Stelle vom RGB-Druckeralgorithmus verwendet werden.

Führen Sie die folgenden Schritte aus.

  1. Drucken Sie das Charakterisierungsziel, das entweder das IT8.7/3-Ziel ist, oder ein Ziel, das das Sampling des CMYK-Raums in regelmäßigen oder unregelmäßigen Abständen enthält.
  2. Messen Sie das Ziel mithilfe eines Spektrometers, und konvertieren Sie die Messungen in den CIELUV-Raum.
  3. Erstellen Sie die Vorwärtskarte von CMYK zu Luv.
  4. Verwenden Sie die Vorwärtskarte, um eine Gruppe von CMY-zu-Luv-Karten für einen Bereich von K-Werten zu erstellen.
  5. Für jeden Eingabe-Luv-Wert wird der entsprechende CMYK-Wert abgerufen, indem eine der Karten ausgewählt wird, die in Schritt 4 erstellt wurden, und mithilfe der Newton-Methode einen CMY-Farbstoffsatz abrufen, der den ausgewählten K-Wert begleitet.

Die Schritte 1 und 2, die Standardverfahren sind, werden von einem Profilerstellungsprogramm durchgeführt, das nicht Teil des neuen CTE ist. Das IT8.7/3-Ziel enthält eine relativ detaillierte Stichprobe aller CMYK-Werte auf verschiedenen C-, M-, Y- und K-Ebenen. Alternativ kann ein benutzerdefiniertes Ziel mit einheitlichem Sampling der Kanäle C, M, Y und K verwendet werden. Nachdem das Ziel gedruckt wurde, kann ein Spektrometer oder Colorimeter verwendet werden, um den XYZ-Wert jedes Patches zu messen, und der XYZ-Wert kann mithilfe des CIELUV-Modells in den Luv-Wert konvertiert werden.

Schritt 3, Konstruktion der Vorwärtskarte von CMYK zu Luv, kann erreicht werden, indem alle bekannten Interpolationstechniken wie tetraedrale oder multilineare Methode, auf dem rechteckigen Raster im CMYK-Raum angewendet werden. Im neuen CTE wird eine 4-dimensionale tetrahedrale Interpolation verwendet. Da die CMY-Sampling-Raster in der Regel auf jeder Ebene von K unterschiedlich sind, verwenden wir jedoch eine Technik der Super-Sampling, wie unten beschrieben. Bei einem bestimmten CMYK-Punkt werden die Sandwiching K-Ebenen zuerst basierend auf dem K-Wert bestimmt. Führen Sie dann ein "Superraster" auf jeder K-Ebene ein, die eine Vereinigung der CMY-Raster auf jedem der beiden K-Ebenen ist. Auf jeder K-Ebene wird der Luv-Wert eines neu eingeführten Gitterpunkts durch eine 3-dimensionale tetrahedrale Interpolation innerhalb dieser K-Ebene abgerufen. Schließlich wird auf diesem neuen Raster eine vierdimensionale Tetraedralinterpolation für den spezifischen CMYK-Punkt durchgeführt.

Diagramm, das Supersampling zeigt.

Abbildung 8 : Supersampling

Schritt 4 erstellt eine Reihe von CMY-to-Luv-Nachschlagetabellen (LUTs). Die in Schritt 3 erstellte Vorwärtskarte wird wiederholt aufgerufen, um den CMYK-Raum zu resample. Der CMYK-Farbraum wird mit einem gleichmäßigen Abstand von K und einem anderen, aber dennoch gleichmäßigen Abstand, Sampling von CMY, entnommen.

Schritt 5 ist eine Prozedur zum Abrufen des CMYK-Werts mithilfe der in Schritt 4 für jeden Eingabe-Luv-Punkt erstellten LUTs. Der entsprechende Wert von K wird ausgewählt, indem die Leichtigkeit sowie der Grad der Farbe in der angeforderten Luv analysiert werden. Nachdem die Tabelle ausgewählt wurde, werden die CMY-Werte mithilfe der Newton-Methode (wie zuvor im RGB-Druckergerätemodell dokumentiert) aus der Tabelle abgerufen.

CIELUV-Speicherplatz wird im Druckermodell anstelle von CIEJab verwendet, da das Gerätemodell ausschließlich auf farbmetrischen Daten basieren sollte, die im DMP verfügbar sind. Der DMP enthält farbmetrische Daten für jeden gemessenen Patch, einschließlich des Medienweißpunkts, sodass CIEXYZ-Daten in CIELUV-Daten konvertiert werden können. Es ist jedoch nicht möglich, in CIECAM02 JCh oder Jab zu konvertieren, da es keinen Zugriff auf die Anzeigebedingungsinformationen im DMP gibt.

RGB-Projektor-Gerätemodell – Basisplan

Hinweis: Viele RGB-Projektoren verfügen über mehrere Betriebsmodus. In einem Modus, der häufig die Standardeinstellung ist und möglicherweise als "Präsentation" bezeichnet wird, ist die Farbantwort des Projektors für maximale Helligkeit optimiert. In diesem Modus verliert der Projektor jedoch die Fähigkeit, Licht, leicht farblich farbige Farben wie blassgelb und einige Fleischtöne zu reproduzieren. In einem anderen Modus, häufig "Film", "Video" oder "sRGB" genannt, ist der Projektor für die Wiedergabe realistischer Bilder und natürlicher Szenen optimiert. In diesem Modus wird die maximale Helligkeit abgetauscht, um die Gesamtqualität der Farbwiedergabe zu verbessern. Um eine zufriedenstellende Farbwiedergabe mit RGB-Projektoren zu erhalten, ist es notwendig, den Projektor in einen Modus zu platzieren, in dem eine glatte Farbskala reproduziert werden kann.

Diagramm, das ein D L P-Gerätemodell zeigt.

Abbildung 9: DLP-Gerätemodell

Ein eingehender RGB-Wert durchläuft zwei Berechnungspfade. Das erste ist das Matrixmodell, das zu einem XYZ-Wert führt. Dies folgt sofort der Konvertierung von XYZ zu Luv. Die zweite ist die nicht einheitliche LUT-Interpolation mit tetradedraler Interpolation. Die Ausgabe der Interpolation befindet sich bereits im Luv-Raum im Bau. Die beiden Ausgaben werden hinzugefügt, um den vorhergesagten Luv-Wert abzurufen. Dies wird schließlich in XYZ konvertiert, was die erwartete Ausgabe des farbmetrischen Modells für das DLP-Gerät ist.

Da Projektoren Anzeigegeräte sind, unterstützen sie auch die Inversion des Modells, d. h. die Transformation von XYZ in RGB. Da das Gerätemodell RGB-Raum in XYZ-Raum transformiert, die beide dreidimensional sind, entspricht die Inversion dem Lösen von drei nichtlinearen Gleichungen in drei unbekannten Versionen. Dies kann durch standardmäßige Formellösungstechniken wie Newton-Raphson erfolgen. Es ist jedoch vorzuziehen, zuerst XYZ in Luv zu konvertieren und dann die Luv To RGB-Transformation umzukehren, da luv space eher linear als XYZ-Raum ist.

ICC Device Model Baseline

Die CITE ICC-Workflowinteroperabilität wird durch Erstellen eines speziellen ICC-Gerätebasismodellprofils ermöglicht, das das Profilobjekt speichert und eine ICC-Transformation mithilfe eines no-op XYZ-Profils erstellt. Diese Transformation wird dann verwendet, um zwischen Geräte- und CIEXYZ-Farben zu übersetzen.

Diagramm, das die C I T E C-Workflowinteroperabilität zeigt.

Abbildung 10: CITE ICC Workflow-Interoperabilität

Grundlegende Farbverwaltungskonzepte

Windows-Farbsystemschemas und Algorithmen