共用方式為


WCS 色彩裝置型號配置檔架構和演算法

本主題提供 WCS 色彩裝置型號配置檔架構及其相關聯演算法的相關信息。

本主題包含下列幾節:

概觀

此架構可用來指定色彩裝置型號配置檔的內容(CDMP)。 相關聯的基準演算法如下所述。

基本裝置型號配置檔 (DMP) 架構是由取樣測量數據所組成。

DMP XML 架構的取樣元件支援基本色彩測量目標,著重於針對基準裝置型號優化的常見標準目標和目標。

此外,裝置配置檔會提供目標裝置型號的特定資訊,並提供原則,讓基準後援裝置模型在目標模型無法使用時可以使用。 配置文件實例可以使用標準 XML 擴充機制來包含私人擴充功能。

色彩裝置型號配置檔架構

Diagram that shows the information that makes up a Device Model Profile.

CDMP 架構

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:cdm="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
  xmlns:wcs="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes"
  targetNamespace="http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  blockDefault="#all"
  version="1.0">

  <xs:annotation>
    <xs:documentation>
      Color Device Model profile schema.
      Copyright (C) Microsoft. All rights reserved.
    </xs:documentation>
  </xs:annotation>

  <xs:import namespace="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes" />

  <xs:complexType name="RGBType">
    <xs:attribute name="R" type="xs:float" use="required"/>
    <xs:attribute name="G" type="xs:float" use="required"/>
    <xs:attribute name="B" type="xs:float" use="required"/>
  </xs:complexType>

  <xs:complexType name="NonNegativeRGBType">
    <xs:attribute name="R" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="G" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="B" type="wcs:NonNegativeFloatType" use="required"/>
  </xs:complexType>

  <xs:complexType name="NonNegativeCMYKType">
    <xs:attribute name="C" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="M" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="Y" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="K" type="wcs:NonNegativeFloatType" use="required"/>
  </xs:complexType>
  
  <xs:complexType name="NonNegativeRGBSampleType">
    <xs:sequence>
      <xs:element name="RGB" type="cdm:NonNegativeRGBType"/>
      <xs:element name="CIEXYZ" type="wcs:NonNegativeCIEXYZType"/>
    </xs:sequence>
    <xs:attribute name="Tag" type="xs:string" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="NonNegativeCMYKSampleType">
    <xs:sequence>
      <xs:element name="CMYK" type="cdm:NonNegativeCMYKType"/>
      <xs:element name="CIEXYZ" type="wcs:NonNegativeCIEXYZType"/>
    </xs:sequence>
    <xs:attribute name="Tag" type="xs:string" use="optional"/>
  </xs:complexType>
  
  <xs:group name="RGBPrimariesGroup">
    <xs:sequence>
      <xs:element name="WhitePrimary" type="wcs:NonNegativeCIEXYZType"/>
      <xs:element name="RedPrimary" type="wcs:NonNegativeCIEXYZType"/>
      <xs:element name="GreenPrimary" type="wcs:NonNegativeCIEXYZType"/>
      <xs:element name="BluePrimary" type="wcs:NonNegativeCIEXYZType"/>
      <xs:element name="BlackPrimary" type="wcs:NonNegativeCIEXYZType"/>
    </xs:sequence>
  </xs:group> 
  
  <xs:complexType name="MeasurementConditionsType">
    <xs:annotation>
      <xs:documentation>
      Optional measurement conditions. 
       
      We only support CIEXYZ for measurement color space in this version. 
      If the white point value from the measurement conditions is not available, 
      the default processing will use
        - "D50" for printer and scanners
        - "D65" for camera and displays.          
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ColorSpace" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="CIEXYZ"/>
          </xs:restriction>
        </xs:simpleType>    
      </xs:element>
      <xs:choice minOccurs="0">
        <xs:element name="WhitePoint" type="wcs:NonNegativeCIEXYZType"/>
        <xs:element name="WhitePointName">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="D50"/>
              <xs:enumeration value="D65"/>
              <xs:enumeration value="A"/>
              <xs:enumeration value="F2"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
      </xs:choice>
      <xs:element name="Geometry" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="0/45"/>
            <xs:enumeration value="0/diffuse"/>
            <xs:enumeration value="diffuse/0"/>
            <xs:enumeration value="direct"/>
          </xs:restriction>
        </xs:simpleType>   
      </xs:element>
      <xs:element name="ApertureSize" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="DisplayMeasurementType">
    <xs:sequence>
      <xs:group ref="cdm:RGBPrimariesGroup"/>
      <xs:element name="GrayRamp">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="4096"/> 
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="RedRamp">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="4096"/> 
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GreenRamp">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="4096"/> 
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="BlueRamp">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="4096"/> 
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="TimeStamp" type="xs:dateTime"/>
  </xs:complexType>

  <xs:complexType name="RGBProjectorMeasurementType">
    <xs:sequence>
      <xs:group ref="cdm:RGBPrimariesGroup"/>
      <xs:element name="ColorSamples">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="unbounded"/> 
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="TimeStamp" type="xs:dateTime"/>
  </xs:complexType>

  <xs:simpleType name="OneBasedIndex">
    <xs:restriction base="xs:int">
      <xs:minInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>
    
  <xs:complexType name="RGBCaptureMeasurementType">
    <xs:sequence>
      <xs:element name="PrimaryIndex">
        <xs:complexType>
          <xs:all>
            <xs:element name="White" type="cdm:OneBasedIndex"/>
            <xs:element name="Black" type="cdm:OneBasedIndex" minOccurs="0"/>
            <xs:element name="Red" type="cdm:OneBasedIndex" minOccurs="0"/>
            <xs:element name="Green" type="cdm:OneBasedIndex" minOccurs="0"/>
            <xs:element name="Blue" type="cdm:OneBasedIndex" minOccurs="0"/>
            <xs:element name="Cyan" type="cdm:OneBasedIndex" minOccurs="0"/>
            <xs:element name="Magenta" type="cdm:OneBasedIndex" minOccurs="0"/>
            <xs:element name="Yellow" type="cdm:OneBasedIndex" minOccurs="0"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
      <xs:element name="NeutralIndices">
        <xs:simpleType>
          <xs:list itemType="cdm:OneBasedIndex"/>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ColorSamples">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="unbounded"/> 
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="TimeStamp" type="xs:dateTime"/>
  </xs:complexType>

  <xs:complexType name="RGBPrinterMeasurementType">
    <xs:sequence>
      <xs:element name="ColorCube">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sample" type="cdm:NonNegativeRGBSampleType" maxOccurs="unbounded"/> 
          </xs:sequence>
        </xs:complexType>
      </xs:element>       
    </xs:sequence>
    <xs:attribute name="TimeStamp" type="xs:dateTime"/>
  </xs:complexType>
  
  <xs:complexType name="CMYKPrinterMeasurementType">
    <xs:sequence>
      <xs:element name="ColorCube">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sample" type="cdm:NonNegativeCMYKSampleType" maxOccurs="unbounded"/> 
          </xs:sequence>
        </xs:complexType>
      </xs:element>       
    </xs:sequence>
    <xs:attribute name="TimeStamp" type="xs:dateTime"/>
  </xs:complexType>

  <xs:complexType name="GammaType">
    <xs:attribute name="value" type="wcs:NonNegativeFloatType" use="required"/>
  </xs:complexType>
  
  <xs:complexType name="GammaOffsetGainType">
    <xs:attribute name="Gamma" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="Offset" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="Gain" type="wcs:NonNegativeFloatType" use="required"/>
  </xs:complexType>

  <xs:complexType name="GammaOffsetGainLinearGainType">
    <xs:attribute name="Gamma" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="Offset" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="Gain" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="LinearGain" type="wcs:NonNegativeFloatType" use="required"/>
    <xs:attribute name="TransitionPoint" type="wcs:NonNegativeFloatType" use="required"/>
  </xs:complexType>
  
  <xs:simpleType name="FloatList">
    <xs:list itemType="xs:float"/>
  </xs:simpleType>

  <xs:complexType name="OneDimensionLutType">
    <xs:sequence>
      <xs:element name="Input" type="cdm:FloatList"/>
      <xs:element name="Output" type="cdm:FloatList"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HDRToneResponseCurvesType">
    <xs:sequence>
      <xs:element name="RedTRC" type="cdm:OneDimensionLutType"/>
      <xs:element name="GreenTRC" type="cdm:OneDimensionLutType"/>
      <xs:element name="BlueTRC" type="cdm:OneDimensionLutType"/>
    </xs:sequence>
    <xs:attribute name="TRCLength" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:int">
          <xs:minInclusive value="0" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  
  <xs:complexType name="GamutBoundarySamplesType">
    <xs:sequence>
      <xs:element name="RGB" type="cdm:RGBType" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="RGBVirtualMeasurementType">
    <xs:sequence>
      <xs:element name="MaxColorantUsed" type="xs:float"/>
      <xs:element name="MinColorantUsed" type="xs:float"/>
      <xs:group ref="cdm:RGBPrimariesGroup"/>
      <xs:choice>
        <xs:element name="Gamma" type="cdm:GammaType"/>
        <xs:element name="GammaOffsetGain" type="cdm:GammaOffsetGainType"/>
        <xs:element name="GammaOffsetGainLinearGain" type="cdm:GammaOffsetGainLinearGainType"/>
        <xs:element name="HDRToneResponseCurves" type="cdm:HDRToneResponseCurvesType"/>
      </xs:choice>
      <xs:element name="GamutBoundarySamples" type="cdm:GamutBoundarySamplesType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="TimeStamp" type="xs:dateTime"/>
  </xs:complexType>
  
  <xs:element name="ColorDeviceModel">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ProfileName" type="wcs:MultiLocalizedTextType"/>
        <xs:element name="Description" type="wcs:MultiLocalizedTextType" minOccurs="0"/>
        <xs:element name="Author" type="wcs:MultiLocalizedTextType" minOccurs="0"/>
        <xs:element name="MeasurementConditions" type="cdm:MeasurementConditionsType" minOccurs="0"/>
        <xs:element name="SelfLuminous" type="xs:boolean" />
        <xs:element name="MaxColorant" type="xs:float"/>
        <xs:element name="MinColorant" type="xs:float"/>
        <xs:choice>
          <xs:element name="CRTDevice">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MeasurementData" type="cdm:DisplayMeasurementType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="LCDDevice">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MeasurementData" type="cdm:DisplayMeasurementType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="RGBProjectorDevice">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MeasurementData" type="cdm:RGBProjectorMeasurementType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="ScannerDevice">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MeasurementData" type="cdm:RGBCaptureMeasurementType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="CameraDevice">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MeasurementData" type="cdm:RGBCaptureMeasurementType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="RGBPrinterDevice">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MeasurementData" type="cdm:RGBPrinterMeasurementType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="CMYKPrinterDevice">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MeasurementData" type="cdm:CMYKPrinterMeasurementType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="RGBVirtualDevice">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MeasurementData" type="cdm:RGBVirtualMeasurementType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
        <xs:element name="PlugInDevice" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:any namespace="##other" processContents="skip"
                minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute name="GUID" type="wcs:GUIDType" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="ID" type="xs:string" use="optional" />
    </xs:complexType>
  </xs:element>
</xs:schema>

WCS CDMP v2.0 校正新增

CDMP 架構的 ColorDeviceModel 元素已在 Windows 7 中更新,以包含新的校正元素。 下列顯示CDMP架構的變更。

  ...
  <xs:element name="ColorDeviceModel">
    <xs:complexType>
      <xs:sequence>
        ...
        <xs:element name="PlugInDevice" minOccurs="0">
             ...
        </xs:element>
        <xs:element name="Calibration" type="cal:Calibration" minOccurs="0"/>
        ...
      <xs:sequence>
    ...
    <xs:complexType>
  ...

CDMP 架構元素

注意

初選是紅色、綠色、藍色、黑色和白色的主要範例。 主要坡道是從最小亮度到完整主要值的色調坡度。 語氣坡道中的參賽項目數目上限為 4096。

注意

需要 DMP 才能有測量數據。

ColorDeviceModelProfile

此元素的類型為 ColorDeviceModel。

驗證條件: 每個子元素都會由它自己的類型進行驗證。

ColorDeviceModel

這個專案是下列子元素的序列

  1. ProfileName 字串,
  2. 選擇性描述字串,
  3. 選擇性作者字串,
  4. optional MeasurementConditions MeasurementConditionsType,
  5. 自我發光布爾值,
  6. MaxColorant float,
  7. MinColorant float,
  8. 元素的選擇
    1. CRTDevice,
    2. LCDDevice,
    3. RGBProjectorDevice,
    4. ScannerDevice,
    5. 相機 Device,
    6. RGBPrinterDevice,
    7. CMYKPrinterDevice,
    8. RGBVirtualDevice,
  9. PlugInDevice,
  10. optional Extension ExtensionType

驗證條件: 每個子元素都會由它自己的類型進行驗證。 字串子元素最多有 10,000 個字元。 MaxColorant 子元素必須大於或等於零(0),且大於 MinColorant 子元素。 MinColorant 可以是負數。

NamespaceVersion

xmlns:cdm=“http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"

targetNamespace=“http://schemas.microsoft.com/windows/2005/02/color/ColorDeviceModel"

版本

版本 = “1.0” 與 Windows Vista。

驗證條件: 任何版本值 >0.1 或 <=2.0 都有效,可支援格式的非重大變更。

文件

裝置模型配置文件架構。

著作權 (C) Microsoft。 著作權所有,並保留一切權利。

CRTDevice 元素

這個專案是 MeasurementData DisplayMeasurementType 的子元素序列。

驗證條件: 每個子元素都會由它自己的類型進行驗證。

LCDDevice 元素

這個專案是 MeasurementData DisplayMeasurementType 的子元素序列。

驗證條件: 每個子元素都會由它自己的類型進行驗證。

投影機裝置元素

這個專案是 MeasurementData RGBProjectorMeasurementType 的子元素序列。

驗證條件: 每個子元素都會由它自己的類型進行驗證。

ScannerDevice 元素

這個專案是 MeasurementData RGBCaptureMeasurementType 的子元素序列

驗證條件: 每個子元素都會由它自己的類型進行驗證。

相機 Device 元素

這個專案是 MeasurementData RGBCaptureMeasurementType 的子元素序列

驗證條件: 每個子元素都會由它自己的類型進行驗證。

RGBPrinterDevice 元素

這個專案是 MeasurementData RGBPrinterMeasurementType 的子元素序列。

驗證條件: 每個子元素都會由它自己的類型進行驗證。

CMYKPrinterDevice 元素

這個專案是 MeasurementData CMYKPrinterMeasurementType 的子元素序列。

驗證條件: 每個子元素都會由它自己的類型進行驗證。

RGBVirtualDevice 元素

這個專案是 RGBVirtualMeasurementDataType 的子元素序列。

驗證條件: 每個子元素都會由它自己的類型進行驗證。

PlugInDeviceType

這個專案是 GUID GUIDType 和任何子元素的序列。

驗證條件: GUID 用來比對 DM 外掛程式 Dll GUID。 最多有 100,000 個自定義子元素。

RGBVirtualMeasurementType

此元素是包含的序列

  1. RGBPrimariesGroup 群組

  2. 選擇

    • 伽 瑪
    • GammaOffsetGain
    • GammaOffsetGainLinearGam
    • ToneResponseCurves 元素
  3. optional GamutBoundarySamples GamutBoundarySamplesType

  4. TimeStamp dateTime

驗證條件: 這些類型的每個子元素都有自己的驗證條件。

GammaType

此元素是由 屬性組成的複雜類型

  • Gamma NonNegativeFloatType

驗證條件: 由產業意見反應決定。

GammaOffsetGainType

此元素是包含屬性的複雜類型

  • Gamma NonNegativeFloatType
  • Offset NonNegativeFloatType
  • Gain NonNegativeFloatType

驗證條件: 由產業意見反應決定。

GammaOffsetGainLinearGainType

此元素是包含屬性的複雜類型

  • Gamma NonNegativeFloatType
  • Offset NonNegativeFloatType
  • Gain NonNegativeFloatType
  • LinearGain NonNegativeFloatType
  • TransitionPoint NonNegativeFloatType。

驗證條件: 由產業意見反應決定。

ToneResponseCurvesType

此元素是 的序列

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

元素也有 unsignedint 類型的 TRCLength 屬性。

驗證條件: 由產業意見反應決定。

GamutBoundarySamplesType

此元素是 RGB RGBTypes 序列。

驗證條件: 目前未系結的最大發生,要根據產業意見反應來限制。

FloatPairList

此元素是一種簡單類型的浮點數清單。

驗證條件: 由產業意見反應決定。

CMYKPrinterMeasurementType

此專案為

  1. 由 Sample NonNegativeCMYKSampleType 序列組成的 ColorCube 元素序列

  2. TimeStamp dateTime 屬性。

驗證條件: 由產業意見反應決定。

RGBPrinterMeasurementType

此專案為

  1. 由 Sample NonNegativeRGBSampleType 序列組成的 ColorCube 元素序列

  2. TimeStamp dateTime 屬性。

驗證條件: 由產業意見反應決定。

RGBCaptureMeasurementType

此元素是 的序列

  1. PrimaryIndex complexType 的

    1. White OneBasedIndex
    2. 選用 Black OneBasedIndex
    3. 選用 Red OneBasedIndex
    4. 選用 Green OneBasedIndex
    5. 選用 Blue OneBasedIndex
    6. 選用 Cyan OneBasedIndex
    7. 選用Magenta OneBasedIndex
    8. 選擇性黃色 OneBasedIndex
  2. OneBasedIndex 行的 NeutralIndices

  3. Sample NonNegativeRGBSampleType 的 ColorSamples 序列

元素也有 TimeStamp dateTime 屬性。

驗證條件: 由產業意見反應決定。

OneBasedIndex

此元素是一種簡單類型的限制基底 unsigned int,其 minInclusive 值 = “1”。

驗證條件: 由產業意見反應決定。

RGBProjectorMeasurementType

此元素是 的序列

  1. RGBPrimariesGroup 群組
  2. 由 Sample NonNegativeRGBSampleType 序列組成的元素 ColorSamples

元素也有 TimeStamp dateTime 屬性。

驗證條件: 由產業意見反應決定。

DisplayMeasurementType

此元素是 的序列

  1. group RGBPrimariesGroup
  2. Sample NonNegativeRGBType 序列的 GrayRamp
  3. Sample NonNegativeRGBType 序列的 RedRamp
  4. Sample NonNegativeRGBType 序列的 GreenRamp
  5. Sample NonNegativeRGBType 序列的BlueRamp

DisplayMeasurementType 元素也有 TimeStamp dateTime 屬性。

驗證條件: 由產業意見反應決定。

MeasurementConditionsType

MeasurementConditionsType 是包含下列專案的子元素序列:

  1. “CIEXYZ” 的 ColorSpace 限制字串列舉值
  2. 選擇性選擇 WhitePoint NonNegativeXYZType 或 WhitePointName 字串列舉值 D50、D65、A 或 F2
  3. Geometry GeometryType
  4. ApertureSize 整數以公厘為單位

預設值為:

  1. RGB 和 CMYK 印表機:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm ApertureSize
  2. 掃描器:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm ApertureSize
  3. 顯示與 RGB 虛擬裝置:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm ApertureSize
  4. 相機:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. Direct GeometryType
    4. 10mm ApertureSize

驗證條件: 每個子項目的驗證取決於這些子項目的驗證條件。 如果遺漏任何子元素,則會使用裝置型號類型特定的預設值。

GeometryType

String

列舉值:

  • "0/45"
  • “0/擴散”
  • “擴散/0”
  • “Direct”

驗證條件: 列出的列舉值以外的任何值都無效。 這項資訊不會變更基準處理行為。

RGBPrimariesGroup

此元素是 的序列

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

驗證條件: 由產業意見反應決定。

NonNegativeCMYKSampleType

此元素是 的序列

  1. CMYK NonNegativeCMYKType
  2. CIEXYZ NonNegativeXYZType

元素也有選擇性屬性 Tag 字串

驗證條件: 由產業意見反應決定。

NonNegativeRGBSampleType

此元素是 的序列

  1. RGB NonNegativeRGBType
  2. CIEXYZ NonNegativeXYZType

元素也有選擇性屬性 Tag 字串

驗證條件: 由產業意見反應決定。

NonNegativeCMYKType

這個元素由屬性組成

  1. C float
  2. M float
  3. Y 浮點數
  4. K float

驗證條件: 由產業意見反應決定。

NonNegativeRGBType

這個元素由屬性組成

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

驗證條件: 由產業意見反應決定。

ExtensionType

ExtensionType 元素是任何子元素類型的序列,並用於非 Microsoft 應用程式的專屬資訊。

驗證條件: 此專案為選擇性專案。 最多可以有 1000 個擴充子元素。

NonNegativeXYZType

NonNegativeXYZType 元素是由 NonNegativeFloatType 組成,三個名為 “X”、“Y” 和 “Z” 的單精度 IEEE 浮點元素。這些值僅限於 DMP 配置檔度量值。 這些測量可以是絕對值(非相對)CIEXYZ 1931 反射值或絕對(非相對)CIEXYZ 1931 直接(非相對)值,以每公尺平方單位的坎德拉斯為單位。

驗證條件: 只有真實世界值有效,而負的 CIEXYZ 度量值無效。 因為這些是絕對值,因此值可以大於 1.0f。 任何 「X」、“Y” 或 “Z.” 值的合理限制會任意設定為 10000.0f。

XYZType

XYZType 元素是由三個單精度 IEEE 浮點值所組成:“X”、“Y” 和 “Z”。

CDMP 基準演算法

CRT 裝置型號基準

若要瞭解此模型,您必須考慮特徵化程式和裝置模型化。 在特徵化程式中,XYZ 測量會先在填滿 CRT 顯示裝置的顯示緩衝區來取得的色彩上執行。 下列範例值會產生基準 CRT 裝置模型的良好數據:

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

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

藍色:B = 15、30、45、60、75、90、105、120、135、150、165、180、195、210、225、240、255、R = 0

中性:R = G= B = 0、8、16、32、64、128、192、255

也可以使用 15 以外的增量和非線性增量。 每個紅色、綠色、藍色和中性坡道至少必須包含三個樣本,但建議提供更多樣本。 您必須提供純紅色、綠色、藍色、黑色和白色的範例。 樣本不需要統一間距。

建置 tristimulus 矩陣的程式包含兩個步驟。 首先,估計黑點 XYZ 值或耀斑。 此步驟主要以 Berns[3] 的工作為基礎,具有稍微修改的非線性優化目標函式。 第二,根據步驟一的結果計算 tristimulus 矩陣,以及計算每個通道測量的所有平均計算,而不只是數位計數上限的矩陣。

每個步驟都包含詳細的程式。 起點是每個 R、G 和 B 通道的坡道(在我們的範例中為 17 個步驟)。 在色度 xy 平面上繪製 XYZ 度量時,圖 1 會顯示一般情況。 步驟一包含解決非線性優化問題,以找出「最適合」的黑色點,當沿著 R、G 和 B 通道周遊時,將色度中的漂移降到最低。 根據 Berns[3],我們尋找將下列目標函式最小化的 X KYKZK:

Shows the objective function where Sr, Sg, and Sb are the set of data points on the R, G, and B channels.

其中 S R、SG 和 SB 是對應至 R、G 和 B 通道上點的數據集。 針對任何一組 S,定義:

Shows a formula for defining any set S.

在上述中, |S |是 S 的基數,亦即,集合 S Shows a formula for the chromaticity of a point.中的點數是點Shows a formaula for a point.的色度座標,因此Shows a formula for the average or center of mass., 是平均或品質中心,集合 S 中的所有點在色度平面中。 因此, Shows a formula for the sum of a second moments of points. 是關於品質中心之點的第二個時刻的總和,是衡量點分佈方式的衡量標準。 最後, Shows a formula for the total measure of the spread of three clusters of points. 是關於三個點群如何分散在其各自的品質中心的總量值。

在的計算中,如果 Shows a formula for X. 為 ,則會略過計算Shows a formula of f(X,Y,Z; Xk, Yk, Zk).,並據以調整 S基數。

儘管目標函式明顯複雜,但它是 XKYKZK許多可區分函式平方的總和(例如,17 點 2xy -components 3 通道 = 102),因此,是標準非線性最小平方技術的總和,例如 WCS 中使用的演算法。 請注意,上述目標函式與 Berns[3] 中建議的函式不同,後者會測量與品質中心距離的變異數,因此當點與品質中心相等時,該變異數為零,即使它們可能散佈得相當多。 在此範例中,點的分散會直接使用第二個時刻來調集。

與非線性最小平方問題的任何反覆演算法一樣,Levenberg-Marquardt 需要初始猜測。 有兩個明顯的候選人。 一個是 (0, 0, 0):另一個是測量的黑點。 針對 CTE,測量的黑色點會先作為初始猜測使用。 如果超過最多 100 個反復專案,而未達到每個點中每個點平均距離 0.001 的臨界值(相當於目標函式的臨界值 0.001) 17 3 = 0.000051),則會執行另一輪反覆專案,初始猜測為 (0, 0, 0, 0) 。 產生的黑點估計值是 XYZ,與前一輪反覆專案的最佳估計值相比較(以測量的黑色點作為初始猜測)。 使用提供目標函式最小值的估計值。 每一次選取 100 個反覆項目和錯誤距離 0.001 的選項都是以經驗方式選取的。 在未來版本中,參數化錯誤距離可能很合理。

步驟一的結果是估計的黑點 (X K,Y K,Z K )。 步驟 2 包含藉由平均步驟一中取得之三個群集中點的色度,來判斷三元數矩陣。 針對 CCT,這主要是為了將測量錯誤的影響降到最低。 平均色度中使用的點必須是步驟一中優化中使用的相同點。 換句話說,如果在優化步驟中捨棄每個坡道的第一個點(數字計數 15,在範例中),則平均必須完成相同的作業。 如果 Shows formulas of averaged chromaticity for coordinates in the red and green channels.Shows a formula of averaged chromaticity for coordinates in the blue channel. 是紅色、綠色和藍色通道的平均色度座標,則下列程式會決定三元數矩陣。 首先,解決 3?3 線性系統:

Shows the first part of the procedure to solve a 3?3 linear system.

Shows the second part of the 3?3 linear system.Show the t subscript b value at the end of the second part of the 3?3 linear system.

XW,Y W,Z W

Shows the final part of the procedure to solve a 3?3 linear system.

決定三度矩陣之後,音調曲線的判斷會遵循標準方法。 針對CRT顯示,會假設個別通道遵循 「GOG」 模型:

Shows the formula for the 'G O G' model.

其中 kg 是 “gain”,1 -kg 是 “offset”, 和 ? 是 「gamma」。。三元數矩陣的反矩陣會套用至中性數據的 XYZ 數據,以取得線性 RGB 數據,然後使用 GOG 模型的非線性回歸與數位 RGB 值相互關聯。 R、G 和 B 通道的這些特性不一定相同,而且通常不相同。

Berns[1]: Berns、 Billmeyer 和 Saltzman 的色彩技術原則,3 Ed。 約翰·威利和兒子(2000年)。

Berns[2]:1997年11月11日,計算機控制的CRT顯示器的數位到無線電傳輸功能, CIE專家研討會'97顏色標準成像技術

Berns[3]: Berns、Fernandez 和 Taplin,估計計算機控制的顯示器 、色彩研究和應用黑階排放,28:379-383 威利期刊公司 (2003)

康[1]: 康, 電子成像設備顏色技術, SPIE (1997)

Katoh[1]: Katoh、Deguchi 和 Berns,CRT 監視器(II)的準確特徵,用於延長 CIE 方法及其驗證的建議, Opt. Rev. 8: 397-408 (2001)

LCD 裝置型號基準

LCD 裝置型號基準類似於CRT裝置型號基準。 本節將說明 LCD 模型與 CRT 模型不同的方式。

其中一個差異在於,您無法假設 LCD 顯示器遵循用於 CCT 的 GOG 模型,而色調曲線是透過插補測量數據來取得。 因此,裝置中性軸應該更頻繁地取樣。

以下是一些典型的範例值,這些值可能會為 LCD 裝置型號基準產生良好的數據:

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

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

藍色:B = 15、30、45、60、75、90、105、120、135、150、165、180、195、210、225、240、255、R = 0

中性:R = G = B = 0、15、30、45、60、75、90、105、120、135、150、165、180、195、210、225、240、255。

取得裝置初選色度之平均測量色彩色度的程式,對於 LCD 而言比 CCT 更為重要。 當 XYZ 測量繪製在色度 xy 平面時,圖 1 會顯示一般情況。 請注意色度如何向黑色點漂移。 這是因為所有 LCD 都有一定數量的光洩漏。

Diagram that shows a graph of the chromaticity using raw data with no correction.

圖 1 :使用未經修正之原始數據的色度圖表

當從原始 XYZ 度量減去時,圖 2 會描述一般情況。 這些點現在聚集在大約三個中心,雖然它們不落在他們身上。 針對 CCT 所描述的平均值程式可大幅改善 LCD 的結果。

Diagram that shows a graph of the chromaticity using raw data with an adjusted black point.

圖 2 :使用具有調整黑點的數據的色度圖表

RGB 擷取裝置型號基準

基準 RGB 擷取裝置型號是 IDeviceModel 類別的子類別。 在彩色擷取裝置(例如掃描器和數位相機)的色度特徵中,會使用下列方法。 使用擷取裝置擷取包含已知 CIEXYZ 值的色彩修補程式所組成的目標。 擷取的結果是 RGB 位圖影像,其中每個修補程式的色彩會以 RGB 值編碼。 這些裝置 RGB 值專屬於特定擷取裝置。 色度特徵的目標是建立裝置 RGB 值與 CIEXYZ 值之間的經驗關聯性,或從 RGB 到 XYZ 的數學轉換,以盡可能準確地建立擷取裝置行為模型。

這類數學轉換可由低度多項式合理模型化。 本程式在文獻中詳述,例如康[92]、康[97]。 在 Kang[97]中,有一種方法會使用一組三個多項式,其中 3、6、8、9、11、14 或 20 個詞彙在 R、G 和 B 變數中,而三個多項式分別回歸到 CIEXYZ 空間的 X、Y、Z 元件。 對於 20 個詞彙的多項式,形式為:

Shows the 20-term polynomial.

Y 和 Z 有類似的運算式。調整多項式的數學技術落在「多重變數線性回歸」內,並會在統計數據的任何基本文字中描述。

線性回歸的這個方法不會將「右」目標函式降到最低。 根據設計,線性回歸會尋找最小平方解決方案,這表示取得的係數會將基礎空間中誤差平方的總和降到最低,或同等地將 Euclidean 距離的平方總和降到最低。 在實務上,您想要將 平方的總和降到最低?Es,在哪裡?E 是其中一個公認的標準,例如 CIE94。 最小化此目標函式是非線性回歸問題。

在新引擎中,Lab to XYZ 是回歸的 CIE 色彩空間,而 20 個詞彙的立方多項式會作為擷取裝置的模型,或係數 ls,例如,bs 讓下列多項式將平方的總和降到最低?E CIE94 s.

Shows a set of polynomial formulas.

解決方案 (l i, aibi ) 在 60 維度實數值空間 R203 中必須最小化下列總錯誤:

Shows the total error to be minimized.

其中總和是透過所有數據點組 (R i,G i,B i;取樣數據集中的 Li,u i,v i )加上其他控制點,如下所述。 這是非線性回歸問題,因為參數為 ?i, ai, * i* 以非線性方式進入目標函式 (不是四方)。

因為目標函式 ? 是參數的非線性(和非誇德)函式嗎?ii 和 * i*,您必須訴諸反覆技術來解決優化問題。 由於目標函式的形式是平方的總和,因此會使用稱為 Levenberg-Marquardt 演算法的標準優化技術。 它被認為是非線性最小平方問題的選擇方法。 對於如 Levenberg-Marquardt 等反覆演算法,您必須提供初始猜測。 一個良好的初始猜測通常很重要,以找出正確的最小值。 在此情況下,初始猜測的一個好候選專案是線性回歸問題的解決方案。 首先,藉由定義二次方目標函式,將實驗室空間中 Euclidean 距離平方的總和降至最低:

Shows a defined quadratic objective function.

這類「線性最小平方」問題的數學解決方案是眾所周知的。 因為 i 只會出現在 L 模型中,i 只會出現在 u 模型中,而 * i* 只會出現在 v 模型中;優化問題可以分解成三個子專案:一個用於 L,一個用於 u,另一個用於 v。 請考慮 L 方程式。 (u 方程式與 v 方程式遵循完全相同的自變數。將 L誤差的平方總和降至最低的問題可以說明為以最小平方為單位解決下列矩陣方程式:

Shows a matrix equation for L.

其中 N 是數據點總數(原始取樣點加上以下列方式建立的控制點)。 一般而言, N 大於 20,因此上述方程式是過度決定的,需要最少平方的解決方案。 的關閉表單解決方案 可供使用

Shows a closed form solution.

實際上,不會使用封閉式窗體解決方案進行直接評估,因為它的數值屬性不佳。 相反地,某種矩陣分解演算法會套用至係數矩陣,以將方程序系統縮減為標準形式。 在目前的實作中,單一值分解 (SVD) 會套用至矩陣 R ,然後解析產生的分解系統。

線性回歸問題的解決方案,以 Shows the solution to the linear regression problem. 表示,用來作為 Levenberg-Marquardt 演算法的起點。 在此演算法中,會計算試用步驟,以將點更接近最佳解決方案。 試用步驟滿足一組線性方程式,相依於目前點之衍生工具的功能值和值。 因此,目標函式的衍生專案? 與參數有關?iii 是 Levenberg-Marquardt 演演算法的必要輸入。 雖然有 60 個參數,但有一個快捷方式可讓您計算較少。 依微積分的鏈結規則,

Shows an equation that allows a shortcut using the Chain Rule of Calculus.

其中 j = 1, 2, , 20, Li,u i,v i 是第 i 個樣本點的 CIELAB 值,而 R ij 是上面所定義矩陣 R 的 (i,j)第一個專案。 因此,您可以使用數值正向差異來 計算 Lab 的衍生專案,而不是計算 60 個參數的衍生專案。

此外,還必須為反覆演算法設定停止準則。 在目前的實作中,如果平均平方DECIE94小於 1,或執行的反覆項目數目已超過 10,則會終止反覆專案。 數位 10 來自實際經驗,即如果前幾個反覆項目沒有大幅減少錯誤,則進一步反覆專案除了以摺合方式移動點以外,也無濟於事,亦即演算法可能不會聚合。 即使演算法發生分歧,我們仍可以確定DECIE94不會比我們開始的還要差,也就是從線性回歸取得的參數。

即使使用上述非線性回歸方法,也有數個問題適合。 其中一個問題是,多項式往往超過數據點的超額或不足。 人工局部最大和最小度可能會在配接過程中引入。 這可以使用低度多項式來反擊,這是因為您不應該使用高於三度的原因。 過度拍攝或不足的更嚴重方面是,雖然多項式在理論上可以接受任何實際值,但它嘗試建立模型的空間通常具有物理條件約束和實際限制。 CIEXYZ 必須具有所有 X、Y、Z 非負數,這是實體條件約束。 實際上,它們只會接受數百個以上的值,而不是數千個以上的值。 同樣地,CIELAB 或 CIELUV 有自己的實體和實際限制。 當 RGB 空間有足夠的樣本點填滿時,過度拍攝或不足的問題並不嚴重。 不過,從擷取裝置擷取的 RGB 點通常不會統一填滿 RGB 空間。 這些點可能只填滿 80% 的 RGB 立方體內部,或者更糟的是,它們可能位於較低的維度管理中。 發生這種情況時,回歸的多項式在推斷數據點以外的值時可能會執行不佳的工作,有時會傳回不切實際的預測。 您想要一律傳回合理實際值的模型。 這需要一個方法,可以有效地控制回歸多項式的界限行為,方法是將額外的成本強加給那些在 RGB Cube 界限附近表現不經意的多項式。 進一步的量值,以確保多項式一律會傳回實際值,方法是將輸出裁剪到 CIE 光譜 locus 內。

此時,掃描儀模型化和相機模型化彼此分歧。 相機模型預計將推斷到取樣點以外的區域,包括「反射醒目提示」,掃描器模型不需要相同的推斷。 掃描器目標預計將涵蓋特徵,類似於要掃描的印刷材料。 掃描儀模型仍需要強固,因為它不應該傳回不切實際的值,但遠遠超出特徵目標的推斷並非必要。 為了確保強固性,上述 L-多項式被裁剪為 100,也就是說,多項式模型被迫不推斷出掃描儀目標的 “Dmin”。

相機模型預計將推斷出反射亮點,因此裁剪在 100 是不可取的。 而是使用下列演算法。

引進人工控制點,以控制取樣不足區域中多項式的行為。 藉由策略性地將這些控制點放入適當的值,它們會以所需的方向「提取」多項式。 在目前的實作中,會使用與 RGB Cube 角落對應的八個控制點。 如果裝置值正規化為 unity,則這些點如下:

R = 0,G = 0,B = 0

R = 0,G = 0,B = 1

R = 0,G = 1,B = 0

R = 0。 G = 1,B = 1

R = 1,G = 0,B = 0

R = 1,G = 0,B = 1

R = 1,G = 1,B = 0

R = 1,G = 1,B = 1

除了白色 R =G =B = 1,這與 L = 100,u = v = 0 的 CIELAB 值相關聯,下列推斷演算法會用來判斷與相關聯的適當 CIELAB 值。 一般而言,針對指定的 (R,G,B),加權會與取樣數據集中的每個 (Ri,G,B i) 相關聯。 指派權數有兩個目標。 首先,重量與 (R,G,B) 和 (R i,G,B i, Bi) 之間的距離成反比。 其次,您想要捨棄或指派權數 0 給與指定點不同色調的點 (R,G,B )。 若要考慮色調,請考慮位於頂點位於 (0, 0, 0, 0), 其軸與線條聯結 (0, 0, 0, 0) 到 (R,G,B) 的圓錐內,以及其半垂直角度? 滿足 cos ? = 0.9。 如需此圓錐圖的圖例,請參閱圖 3。

Diagram that shows the shape of the neighborhood.

圖 3 :依角度和距離篩選樣本點。 所描繪鄰里的形狀僅供說明之用。 實際圖形取決於所使用的距離;如果使用 1 規範,則為菱形鄰里。

在此圓錐內,會執行第二個篩選,其會根據 RGB 距離執行,該距離會使用 由 定義的 1-norm

Shows the formula for the second filtering within the cone.

使用目前的圓錐,初始搜尋是距離 0.1 與 (R,G,B) 相距 0.1 的點。 如果在此半徑內找不到任何點,則半徑會增加 0.1,並重新啟動搜尋。 如果下一輪沒有點,半徑就會增加 0.1。 此程式會繼續進行,直到半徑超過 MaxDist/5,其中 MaxDist = 3,在 1-norm 的情況下。 如果找不到點,則圓錐會藉由減少 cos 來放大? 依 0.05,也就是增加角度 ? 並使用增加半徑重新啟動整個程式。 此程式會繼續執行,直到找到非空白的一組點,或cos ? 達到 0, 也就是說, 圓錐已經打開成為飛機。 此時,搜尋會藉由增加半徑來重新啟動,但搜尋會繼續直到半徑達到 MaxDist為止。 這可確保在最壞的情況下,將會找到一組非空白的點。 此演算法摘要於圖 4 的流程圖中。

Diagram that shows the flow of the algorithm.

圖 4 :用於判斷輸入 RGB 值推斷中所用樣本點集合的流程圖

假設上述程式會產生非空白的 S 點集 (R i,G i,B i) 和對應的 (Li,a i,b i),然後針對每個這類點,指派一個加權 wi,由

Shows the formula for a weight for each point.

最後,外政由 定義

Shows the definition for the extrapolant.

上述方程式構成「反向距離加權方法」的實例,通常稱為Shepard方法。 透過演算法執行 eq (6) 中的每一個八個點,就會取得八個控制點,每個控制點都有 RGB 和 L、ab 值,這些值會放入具有原始範例數據的集區中。

為了確保模型一律會產生有效的色彩值,以及整個色彩處理管線的系統完整性和穩定性,您必須對多項式模型的輸出執行最終裁剪。 CIE 視覺遊戲是由 ACHromatic 元件 (Y 或 L) 和色度元件 (xya'b' 所描述,這些元件是由投影轉換與 XYZ 空間相關的)。 在目前的實作中 ,會使用 a'b' 色度,因為它與 CIELUV 空間直接相關。 對於任何 CIELAB 值,請先將 L 裁剪為非負值:

Shows the clipping of L to a non-negative value.

為了允許外推反射亮點,L 不會裁剪為 100,這是實驗室空間中 L 的“傳統”上限

接下來,如果 L = 0,則 ab 會裁剪成 a*= b =* 0。 如果 為 L ? 0,計算

Shows the formula if L=0.

這些是從白色點(u?'v?'' 到有問題的色彩的'b' 圖表中的向量元件。 將 CIE 光譜定位定義為所有點 (a'b' ) 的凸殼,由光譜參數化 ?:

Shows the formula for the wavelength.

其中 Shows the functions for CIE color-matching. 是 2 度觀察者的 CIE 色彩比對函式。 如果向量位於 CIE locus 之外,則會將色彩裁剪到 CIE locus 上的點,該點是 locus 的交集和向量所定義的線條。 請參閱圖 5。 如果發生裁剪,a 和 b 值會先從裁剪的 a 和 b' 減去 a'和 b?',再乘以 13 L,以重建 a?'b'

Diagram that shows the graph for the clipping algorithm.

圖 5 :CIE 視覺遊戲外部實驗室值的裁剪演算法

在目前的實作中,A'b' 平面中的 CIE 光譜定位是由具有 35 個線段的片狀線性曲線表示(對應至 360 nm 到 700 nm 的光譜)。 藉由排序線條線段,使其在白色點的子系角度遞增,這相當於遞減的光譜,即可透過簡單的二進位搜尋找到與上述向量形成的光線交集的線條線段。

RGB 印表機裝置型號基準

RGB 印表機的裝置特性是由建構裝置的經驗模型所組成,可預測任何指定 RGB 值的裝置獨立 CIELUV 色彩

有兩種方式可以建構經驗模型。 其中一種方式是使用 RGB 印表機的裝置數據,另一種方式是使用分析參數數據。 在第一個測量數據中,用戶為 RGB 印表機裝置提供的測量數據是用來建構 3D 尋找表 (LUT)。 測量數據是由 XYZ 值所組成,可用於統一取樣的 RGB 修補程式。 每個元件的一般取樣大小為 9 或 17。 每個修補程式都是使用 CIEXYZ 空間中的色計或分光hotometer 來測量。 修補程式的 XYZ 值接著會轉換成 CIELUV 值,形成 3D LUT。 在裝置模型中,Sakamoto 的四重插補方法會套用至 3D LUT,以預測指定 RGB 數據的 CIELUV 數據。 (美國專利4275413(薩卡本等),美國專利4511989(薩卡本),康[1]。 提到的兩項專利已經過期。 在第二個方法中傳遞的分析參數數據只是先前建置的 LUT。 一般而言,LUT 是使用第一個方法來建置,雖然它可以手動建置。

在目前的色彩管理中,來源對應會定義為從 RGB 空間到裝置無關 CIEXYZ 色彩空間的對應。 目的地對應會定義為從裝置無關 CIEXYZ 色彩空間到 RGB 空間的對應。 這是來源地圖的反轉。

經驗模型會直接用於來源對應中。 它會先將指定的 RGB 數據對應至 CIELUV 數據,該資料會轉換成 XYZ 數據。 在目的地對應中,裝置無關的 CIEXYZ 數據會先轉換成 CIELUV 數據。 然後,經驗模型和傳統牛頓-Raphson 方法可用來預測 CIELUV 數據的最佳 RGB 數據。 從 CieLUV 轉換成 RGB 資料的詳細資料如下:

從 RGB 產生 3D LUT 到 CieLUV 之後,會使用 RGB 上的四邊插補來建置從 RGB 到 LUV 的地圖。 這個對應是由下列方程式表示:

Shows the equations for the map from R G B to L U V.

地圖的反轉是由任何色彩 Shows L U V. 的解算所組成,適用於下列非線性方程序系統:

Shows the nonlinear equations for lolving any color L U V.

以傳統牛頓-Raphson 方法為基礎的非線性方程式,用於新的 CTE 中。 一個初始猜測或 先前 的猜測, 即先前 的 -(R 0,G 0, B 0 )是透過搜尋由預先計算 (RGB,Luv) 配對的統一 8x8x8 方格所組成的「種子矩陣」來取得。 選擇最接近 L*u*v* 的 RGB 對應 Luv。 種子矩陣中的每個點都會對應至儲存格的中心,讓反覆專案不會以 RGB Cube 界限面上的點開始。 換句話說,種子的 RGB 是由: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 在牛頓-Raphson 的第一個步驟中,下一個估計Shows the variables for the next estimate.是由公式取得:

Shows the formula for the estimate.

當錯誤 (CIELUV 空間中的距離) 小於預先設定的容錯層級 (CTE 中為 0.1),或反覆項目數目超過允許的反覆運算次數上限時,反覆運算就會停止。 容錯值和反覆項目數目的經驗判斷為有效。 在未來版本中,容錯值可能會變更。

雅各比安矩陣是使用正向差異來計算,但會改用反向差異的界限點(R、G、B 為 1 的一個或多個 R、G、B 為 1)。 線性系統不是計算雅各比的反矩陣,而是直接使用高斯-喬丹消除完全樞紐來解決線性系統。

在反覆項目結束時,由於 Newton-Raphson 是「本機」演算法,因此仍無法達成聚合,也就是說,只有在您以接近真實解決方案的初始猜測開始時,才會運作良好。 如果在牛頓-Raphson 反覆項目結束時,尚未達到預先定義的誤差容錯內的聚合,則會使用一組新的種子重新啟動反覆專案,如下所示。

例如,到目前為止取得的最佳解決方案是(r、g、b)。 從這個解決方案中,會衍生 N 個後裔種子,其中 N = 4。 以直覺方式,解決方案會在相依於 N 的步驟大小中「朝中心」移動。請參閱圖 6。

Diagram that shows perturbation directions of the solution.

圖 6 :解決方案的擾動方向取決於解決方案所在的八進位值。

換句話說,如果 r > 0.5,R 通道上的值會減少,否則值會增加。 G 和 B 通道也有類似的邏輯。 精確的定義如下:

PERTURBATION = 0.5/(N+1)

Dir(r) = -1 如果 r > 0.5;否則為 +1。 同樣地,Dir(g) 和 Dir(b)

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

嘗試第一個???? 如果它提供錯誤容錯內的新解決方案,您可以停止。 否則,請嘗試第二個 ???? 等等直到 Nth ????.

圖 7 顯示整個演算法的圖解。

Diagram that shows the flow for inverting the device model.

圖 7 :反轉裝置型號的圖解

RGB 虛擬設備型號基準

此裝置型號(DM) 是簡單的矩陣/音調複製演算法。 矩陣衍生自使用標準色彩科學演算法的白點和初選。 音調複製曲線是根據 CurveType 和 ParametricType 的 ICC 描述衍生自測量參數(或視需要反轉)。 在額外驗證高動態範圍問題之後,將會提供內部演算法的詳細數據。

RGB 虛擬設備模型是理想的矩陣/音調複製曲線 RGB,類似於 ICC 三元件矩陣型配置文件設計。 DM 的「虛擬測量」參數包括白點值(絕對 CIEXYZ)、RGB 主要值(絕對 CIEXYZ),以及音調複製曲線,其以與 DMP 架構一致之 XML 格式中的 ICC ParametricCurveType 和 CurveType 為基礎。

下表顯示 ICC parametricCurveType 函式類型編碼和 IRGBVirtualDeviceModelBase 中的對應支援。

函式類型 參數 類型 注意
Shows the 'GammaType' function.
g
GammaType
一般實作
Shows the 'GammaOffsetGainType' function.
ga b
GammaOffsetGainType
CIE 122-1966
Shows the 'GammaOffsetGainOffsetType' function.
ga b c
GammaOffsetGainOffsetType
IEC 61966-3
Shows the 'GammaOffsetGainGainType' function.
ga b c d
GammaOffsetGainGainType
IEC 61966-2.1
(sRGB)
Shows a function for 'g a b c d e f' parameters.
ga b c d e f
N/A
WCS 中不支援

RGB 虛擬設備的音調曲線會套用在 DeviceToColorimetric 中,輸入數據、pDeviceColors 和矩陣相乘。 針對 ColorimetricToDevice,方法必須用來反轉音調曲線。 在基準實作中,這是透過在 DeviceToColorimetric 所使用的相同音調曲線中直接插補來完成。

曲線應該在配置檔中指定為浮點陣列。 第一個數位代表 pDeviceColors 中的值。 第二個數位代表音調曲線的輸出。 色調曲線中的所有值都必須介於minColorantUsed和 maxColorantUsed之間。 音調曲線至少必須包含兩個專案:一個用於minColorantUsed,一個用於 MaxColorantUsed。 ToneCurve 中的項目數目上限為 2048。 一般而言,數據表中的專案越多,您可以更精確地建立彎曲模型。 項目之間會執行分次線性插補。

您可以考慮替代插補方法。 如果您知道裝置的基礎行為,您可以使用較少的樣本和模型,以較高的順序曲線更精確。 但是,如果您使用錯誤的曲線類型,您將非常不準確。 如果沒有詳細資訊,您無法猜測曲線類型。 因此,請使用線性插補,並提供許多數據點。

CMYK 印表機裝置型號基準

CMYK 印表機的裝置特性是由建構裝置的經驗模型所組成,可預測任何指定 CMYK 值的列印色彩。 特徵也包括此模型的反轉,因此可以給我們指定色彩的 CMYK 值處方。 這通常以 CIEXYZ 或 CIELAB 值來定義。

一般而言,會使用包含 CMYK 修補程式的 IT8.7/3 目標。 修補程式包含以定義完善的方式取樣 CMYK 空間,以便形成矩形網格線(在 C、M、Y 和 K 中具有非統一間距)。 然後,每個修補程式都會以色計或分光hotometer 來測量。 CIEXYZ 值中的測量接著會形成查找表 (LUT),從中建立印表機的經驗模型使用 Sakamoto 的插補方法。 美國專利4275413(薩卡本等),美國專利4511989(薩卡本),康[1]。 提及的兩項專利已過期。

CMYK 印表機基準裝置型號模型必須接受CMYK測量樣本的特定需求,如下所示。 (範例集最清楚地描述為一組 CMY 範例 Cube,每個範例都與特定 K 層級相關聯。

  • 至少必須針對 K = 0 和 K = 100 層級提供有效的 CMY Cube。

  • 中繼 K 層級可能不統一間距。

  • 任何不含有效 CMY Cube 的中繼 K 層級都會被忽略。

  • CMY Cube 可能會使用非統一的樣本間隔(網格線間距),但對於指定的 K 層級,CMY Cube 中的所有 C、M 和 Y 維度,都必須使用相同的樣本間隔集。

  • 每個 K 層級 CMY Cube 都可以使用不同的樣本間隔數目和間距。

  • 所有 CMY Cube 都必須包含 CMY Cube 的「角落」,也就是位於 [0,0,0,0]的 CMY 範例, [0,0,100], [0,100,0], [100,0,0], [0,100,100], [100,0,100], [100,100,0], [100,100,100,100]。

  • 每個通道中都必須完整取樣任何中繼CMY方格層級。 換句話說,範例必須存在於CMY Cube內的每一個3D網格線交集。

  • 針對 K = 0 和 K = 100 CMY Cube,2x2x2 僅限角落的 Cube 是接受為有效的最小值。

    [注意:對於 K=0 和 K=100 層級,3x3x3 CMY Cube 將會以 2x2x2 僅限角落的 Cube 處理;會忽略中繼範例層級。 4x4x4 和較大的 Cube 將會使用所有網格線範例。

  • 針對中繼 K 層級,4x4x4 CMY Cube 是可接受的最小有效值。

高品質的配置檔會使用比有效所需的最小值更精細的取樣方格,通常為 9x9x9x9 或更高。 來自 IT8.7/3、IT8.7/4 和 ECI 目標的範例會產生 CMYK 印表機基準裝置型號的有效裝置型號配置檔 (DMP)。 雖然此裝置型號能夠忽略這些目標中多餘的(離網格線)樣本,但不保證能夠針對其他目標執行此動作,因此,建議從進入此裝置模型的配置檔的度量集中移除多餘的樣本。

印表機模型的反轉帶來了更多的困難。 在 CIECAM 中指定輸入色彩時,有一個問題指出此色彩是否在印表機範圍中。 也有關於色彩外觀空間中點排列的問題。 雖然我們可以排列 CMYK 值以落在矩形網格線上,如 IT8.7/3 目標所完成,但無法說出產生的列印色彩,因為它們位於色彩外觀空間中。 一般而言,它們散佈在色彩外觀空間中,沒有特定的圖樣。

散布點反轉問題通常有兩種方法。 其中一種方法是使用基礎 3 維固體的印表機遊戲幾何細分,例如四合度。 從 CMY(K) 空間的對應細分中,可以從 CMY(K) 空間的對應細分推斷列印機遊戲,請參閱洪[93],康[97]。這種方法具有計算簡單性的優點。 在四合子的情況下,插補只使用四點。 另一方面,結果會高度相依於幾個點,這表示測量誤差會對結果產生顯著的影響。 插補者也往往不太順利。 第二種方法不會假設任何細分,而且是以散布的數據插補技術為基礎。 傳統範例是謝潑德插補或反向加權方法的技術(請參閱謝潑德 [68])。 在這裡,會以某種方式選擇輸入點周圍的數個點,每個點都會指派加權,通常與距離成反比,而插補點會視為鄰近點的加權平均值。 在這種方法中,鄰近點的選擇對效能至關重要。 雖然太少的點可以呈現插補不精確和非平滑,但太多點會造成高計算成本,因為權數通常是非線性函式,而且計算成本高昂。

上述兩種方法都有問題。 細分方法在很大程度上取決於數據是否合理地沒有雜訊,而且插補程式通常並不很順利。 散布的數據插補更能容忍數據雜訊,而且通常會提供更順暢的插補,但計算成本更高。

新的 CTE 採用替代方法。 CMYK 裝置會被視為數個 CMY 裝置的集合,每個裝置都有黑色 (K) 的特定值。 使用採用參數光度和色度的選項演算法,會選擇黑色層級。 CMY 值是透過使用 RGB 印表機演算法在其他位置採用的 Newton 方法,將對應的 CMY 反轉為 Luv 資料表來取得。

請使用下列步驟。

  1. 列印特徵目標,其為IT8.7/3目標,或包含以定期或不規則間隔取樣CMYK空間的目標。
  2. 使用spectrophotometer測量目標,並將度量轉換為 CIELUV 空間。
  3. 建構從 CMYK 到 Luv 的正向對應。
  4. 使用正向對應來建構一組 CMY 到 Luv 對應,以取得一系列 K 值。
  5. 針對任何輸入 Luv 值,會選取上述步驟 4 中建構的其中一個對應,並反轉使用牛頓的 方法來取得對應的 CMY 著色劑集,以伴隨選取的 K 值。

步驟 1 和 2 是標準程式,是由不屬於新 CTE 一部分的分析程式所執行。 IT8.7/3 目標包含 C、M、Y 和 K 各層級所有 CMYK 值的合理詳細取樣。或者,可以使用具有 C、M、Y 和 K 通道統一取樣的自定義目標。 列印目標之後,可以使用spectrophotometer 或colorimeter來測量每個修補程式的 XYZ 值,並使用 CIELUV 模型將 XYZ 值轉換成 Luv 值。

步驟 3:從 CMYK 到 Luv 的正向地圖建構,可藉由在 CMYK 空間的矩形網格線上套用任何已知的插補技術,例如四角或多線性方法。 在新 CTE 中,會使用 4 維四維四邊插補。 因為 CMY 取樣方格在 K 的每個層級上通常不同,但是我們會使用超取樣技術,如下所述。 對於指定的 CMYK 點,三明治 K 層級會先根據 K 值來決定。 然後在每個 K 層級上引進「超級網格線」,這是兩個 K 層級上 CMY 方格的聯集。 在每個 K 層級上,任何新引進網格點的 Luv 值都是由該 K 層級內的 3 維四邊插補來取得。 最後,這個新方格上會執行特定CMYK點的4維四維四維內插補點。

Diagram that shows supersampling.

圖 8 :超級取樣

步驟 4 會建構一組 CMY 對 Luv 查閱表格 (LUT)。 在步驟 3 中建構的正向對應會重複呼叫,以重新取樣 CMYK 空間。 CMYK 色彩空間是使用 K 的偶數間距和不同的,但仍平均間距來取樣 CMY。

步驟 5 是使用步驟 4 中針對任何輸入 Luv 點建構的 LUT 來取得 CMYK 值的程式。 藉由分析所要求 Luv 中的光線和色彩程度,選擇 K 的適當值。 選取數據表之後,CMY 值會使用 Newton 的 方法來從數據表取得(如稍早的 RGB 印表機裝置型號所述)。

CIELUV 空間用於印表機模型中,而不是 CIEJab,因為裝置型號應該只以 DMP 中可用的彩色數據為基礎。 DMP 包含每個測量修補程式的色度數據,包括媒體白點,因此可以將 CIEXYZ 資料轉換成 CIELUV 數據。 不過,無法轉換成 CIECAM02 JCh 或 Jab,因為無法存取 DMP 中的檢視條件資訊。

RGB 投影機裝置型號基準

注意:許多 RGB 投影機有多個操作模式。 在一種模式中,通常為預設值,而且可能稱為「簡報」之類的專案,投影機的色彩回應會針對最大亮度進行優化。 然而,在這個模式中,投影機失去了重現光線的能力,輕微的彩色,如淡黃色和一些肉色調。 在另一種模式中,通常稱為“電影”、“視頻”或“sRGB”,投影機已針對現實圖像和自然場景的複製進行優化。 在此模式中,最大亮度會取捨,以改善色彩複製的整體品質。 若要使用 RGB 投影機取得令人滿意的色彩複製,必須將投影機置於可以重現平滑色彩的模式中。

Diagram that shows a D L P device model.

圖 9 :D LP 裝置型號

傳入 RGB 值會通過兩個計算路徑。 第一個是矩陣模型,這會產生 XYZ 值。 這會緊接著從 XYZ 轉換為 Luv。 第二個是使用四邊插補的非統一 LUT 插補。 插補點的輸出已經透過建構在Luv空間中。 新增兩個輸出以取得預測的 Luv 值。 這最後會轉換成 XYZ,這是 DLP 裝置之色度模型的預期輸出。

由於投影機是顯示器裝置,因此它們也支援模型反轉,也就是從 XYZ 轉換為 RGB。 由於裝置模型會將 RGB 空間轉換成 XYZ 空間,這兩者都是三維,反轉相當於在三個未知數中解算三個非線性方程式。 這可以透過標準方程式解算技術來完成,例如牛頓-拉普森。 不過,最好先將 XYZ 轉換成 Luv,然後反轉 Luv To RGB 轉換,因為 Luv 空間比 XYZ 空間更感知線性。

ICC 裝置型號基準

CITE ICC 工作流程互操作性是透過建立特殊的 ICC 裝置基準裝置模型配置檔來啟用,該配置檔會儲存配置檔物件,並使用 No-op XYZ 配置檔建立 ICC 轉換。 接著,此轉換會用來在裝置與 CIEXYZ 色彩之間轉譯。

Diagram that shows the C I T E I C C Workflow Interoperability.

圖 10 :CITE ICC 工作流程互操作性

基本色彩管理概念

Windows 色彩系統架構和演算法