次の方法で共有


WCS カラー デバイス モデル プロファイルのスキーマとアルゴリズム

このトピックでは、WCS カラー デバイス モデル プロファイル スキーマとそれに関連するアルゴリズムについて説明します。

このトピックは、次のセクションで構成されています。

概要

このスキーマは、カラー デバイス モデル プロファイル (CDMP) の内容を指定するために使用されます。 関連するベースライン アルゴリズムを以下に示します。

基本的なデバイス モデル プロファイル (DMP) スキーマは、サンプリング測定データで構成されます。

DMP XML スキーマのサンプリング コンポーネントは、ベースライン デバイス モデル用に最適化された一般的な標準ターゲットとターゲットに重点を置いて、基本的な色測定ターゲットをサポートします。

さらに、デバイス プロファイルは、対象となるデバイス モデルに関する特定の情報を提供し、ターゲット モデルが使用できない場合にベースライン フォールバック デバイス モデルが使用できるポリシーを提供します。 プロファイル インスタンスには、標準の XML 拡張メカニズムを使用したプライベート拡張機能を含めることができます。

カラー デバイス モデル プロファイルアーキテクチャ

デバイス モデル プロファイルを構成する情報を示す図。

CDMP スキーマ

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

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

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

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

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

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

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

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

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

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

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

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

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

WCS CDMP 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. 省略可能な Author 文字列、
  4. オプションの MeasurementConditions MeasurementConditionsType、
  5. Self-Luminousブール値、
  6. MaxColorant float、
  7. MinColorant float、
  8. 要素の選択
    1. CRTDevice、
    2. LCDDevice,
    3. RGBProjectorDevice,
    4. ScannerDevice,
    5. CameraDevice,
    6. RGBPrinterDevice,
    7. CMYKPrinterDevice,
    8. RGBVirtualDevice,
  9. PlugInDevice、
  10. 省略可能な 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"

バージョン

バージョン = Windows Vista の場合は "1.0" です。

検証条件: バージョン値 >0.1 または <=2.0 は、形式の破壊的変更をサポートするために有効です。

ドキュメント

デバイス モデル プロファイル スキーマ。

Copyright (C) Microsoft。 All rights reserved.

CRTDevice 要素

この要素は、MeasurementData DisplayMeasurementType のサブ要素のシーケンスです。

検証条件: 各サブ要素は、独自の型によって検証されます。

LCDDevice 要素

この要素は、MeasurementData DisplayMeasurementType のサブ要素のシーケンスです。

検証条件: 各サブ要素は、独自の型によって検証されます。

ProjectorDevice 要素

この要素は、MeasurementData RGBProjectorMeasurementType のサブ要素のシーケンスです。

検証条件: 各サブ要素は、独自の型によって検証されます。

ScannerDevice 要素

この要素は、MeasurementData RGBCaptureMeasurementType のサブ要素のシーケンスです

検証条件: 各サブ要素は、独自の型によって検証されます。

CameraDevice 要素

この要素は、MeasurementData RGBCaptureMeasurementType のサブ要素のシーケンスです

検証条件: 各サブ要素は、独自の型によって検証されます。

RGBPrinterDevice 要素

この要素は、MeasurementData RGBPrinterMeasurementType のサブ要素のシーケンスです。

検証条件: 各サブ要素は、独自の型によって検証されます。

CMYKPrinterDevice 要素

この要素は、MeasurementData CMYKPrinterMeasurementType のサブ要素のシーケンスです。

検証条件: 各サブ要素は、独自の型によって検証されます。

RGBVirtualDevice 要素

この要素は、RGBVirtualMeasurementDataType のサブ要素のシーケンスです。

検証条件: 各サブ要素は、独自の型によって検証されます。

PlugInDeviceType

この要素は、GUID GUIDType と任意のサブ要素のシーケンスです。

検証条件: GUID は、DM PlugIn Dll GUID と一致するために使用されます。 最大 100,000 個のカスタム サブ要素があります。

RGBVirtualMeasurementType

この要素は、 で構成されるシーケンスです。

  1. RGBPrimariesGroup グループ

  2. の選択

    • Gamma
    • GammaOffsetGain
    • GammaOffsetGainLinearGam
    • ToneResponseCurves 要素
  3. 省略可能な 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 of

    1. White OneBasedIndex
    2. オプションの Black OneBasedIndex
    3. オプションの Red OneBasedIndex
    4. オプションの Green OneBasedIndex
    5. 省略可能な Blue OneBasedIndex
    6. オプションのシアン OneBasedIndex
    7. 省略可能な Magenta OneBasedIndex
    8. 省略可能な黄色の OneBasedIndex
  2. OneBasedIndex の行の NeutralIndices

  3. サンプル NonNegativeRGBSampleType の ColorSamples シーケンス

要素には TimeStamp dateTime 属性もあります。

検証条件: 業界からのフィードバックから決定されます。

OneBasedIndex

この要素は、minInclusive 値 = "1" の単純な型の制限ベース符号なし int です。

検証条件: 業界からのフィードバックから決定されます。

RGBProjectorMeasurementType

この要素は、 のシーケンスです。

  1. RGBPrimariesGroup グループ
  2. 要素 ColorSamples は、Sample NonNegativeRGBSampleType のシーケンスで構成されます

要素には TimeStamp dateTime 属性もあります。

検証条件: 業界からのフィードバックから決定されます。

DisplayMeasurementType

この要素は、 のシーケンスです。

  1. group RGBPrimariesGroup
  2. サンプル NonNegativeRGBType のシーケンスの GrayRamp
  3. サンプル NonNegativeRGBType のシーケンスの RedRamp
  4. サンプル NonNegativeRGBType のシーケンスの GreenRamp
  5. サンプル NonNegativeRGBType のシーケンスの BlueRamp

DisplayMeasurementType 要素には、TimeStamp dateTime 属性もあります。

検証条件: 業界からのフィードバックから決定されます。

MeasurementConditionsType

MeasurementConditionsType は、次を含むサブ要素のシーケンスです。

  1. ColorSpace 制限付き文字列列挙値 "CIEXYZ"
  2. 値 D50、D65、A、または F2 の WhitePoint NonNegativeXYZType または WhitePointName 文字列列挙のオプションの選択
  3. Geometry GeometryType
  4. ApertureSize の整数 (ミリメートル単位)

既定値は次のとおりです。

  1. RGB および CMYK プリンター:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. 10 mm ApertureSize
  2. スキャナー:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. 10 mm ApertureSize
  3. ディスプレイと RGB 仮想デバイス:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. 0/45 GeometryType
    4. 10 mm ApertureSize
  4. カメラ:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. Direct GeometryType
    4. 10 mm ApertureSize

検証条件: 各サブ要素の検証は、それらのサブ要素の検証条件によって決まります。 サブ要素がない場合は、デバイス モデルの種類固有の既定値が使用されます。

GeometryType

String

列挙値:

  • "0/45"
  • "0/拡散"
  • "diffuse/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 float
  4. K float

検証条件: 業界からのフィードバックから決定されます。

NonNegativeRGBType

属性で構成されるこの要素

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

検証条件: 業界からのフィードバックから決定されます。

ExtensionType

ExtensionType 要素は、任意のサブ要素型のシーケンスであり、Microsoft 以外のアプリケーションからの独自の情報に使用されます。

検証条件: この要素は省略可能です。 最大 1,000 個の拡張サブ要素を指定できます。

NonNegativeXYZType

NonNegativeXYZType 要素は、"X"、"Y"、"Z" という名前の 3 つの単精度 IEEE 浮動小数点要素 NonNegativeFloatType で構成されます。これらの値は、DMP プロファイルの測定値に制限されます。 これらの測定値は、絶対 (相対ではない) CIEXYZ 1931 反射値または絶対 (相対ではない) CIEXYZ 1931 直接 (透過) 値 (2 乗単位あたりのカンデラス単位) のいずれかになります。

検証条件: 実際の値のみが有効であり、負の CIEXYZ 測定値は無効です。 これらは絶対値であるため、値は 1.0f を超える可能性があります。 "X"、"Y"、または "Z" の値に対する妥当な制限は、任意に 10000.0f に設定されます。

XYZType

XYZType 要素は、"X"、"Y"、および "Z" の 3 つの単精度 IEEE 浮動小数点値で構成されます。

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 = G = 0

ニュートラル: R = G= B = 0、8、16、32、64、128、192、255

15 以外の増分と非線形インクリメントも使用できます。 赤、緑、青、ニュートラルランプには少なくとも 3 つのサンプルが含まれている必要がありますが、より多くのサンプルを提供することをお勧めします。 純粋な赤、緑、青、黒、白のサンプルを提供する必要があります。 サンプルを均等に配置する必要はありません。

トリスティミュラス 行列を構築するプロセスは、2 つの手順で構成されます。 まず、黒い点のXYZ値、またはフレアを推定します。 このステップは、主に、非線形最適化のためのわずかに変更された目的関数を持つベルン[3]の作業に基づいています。 次に、ステップ 1 の結果に基づいてトリスティミュラス 行列を計算し、また、最大デジタルカウントの 1 つだけでなく、すべてのチャネルごとの測定値の平均計算から計算します。

これらの各手順には、詳細な手順が含まれています。 開始点は、R、G、B の各チャネルのランプ (この例では 17 ステップ) です。 XYZ測定値が色度 xy 平面上にプロットされる場合、典型的な状況を図1に示す。 ステップ 1 は、非線形最適化の問題を解決して、R、G、B チャネルに沿って通過する色度のドリフトを最小限に抑える "最適な" 黒点を見つけることで構成されます。 Berns[3]に基づき、次の目的関数を最小限に抑える ( XK,YK,Z K ) を求めます。

Sr、Sg、Sb が R、G、B チャネル上のデータ ポイントのセットである目的関数を示します。

ここで 、SRSG、および SB は、R、G、B チャネル上のポイントに対応するデータ ポイントのセットです。 任意のセット S に対して、次を定義します。

任意のセット S を定義するための数式を示します。

前のでは、 | S |は 、S のカーディナリティ、つまり、セット S 内のポイント数です。 点の色度の数式を示します。、点 の色度座標 です。したがって、 平均または質量の中心の数式を示します。つまり、色度平面内の設定 された S のすべての点の平均 (質量の中心) です。 したがって、 ポイントの 2 番目のモーメントの合計の数式を示 します。は、質量の中心に関するポイントの 2 番目のモーメントの合計であり、ポイントが約どのように広がっているかを示す測定値です。 最後に、ポイントの 3 つのクラスターの広がりの合計メジャーの数式を示 します。これは、ポイントの 3 つのクラスターがそれぞれの質量の中心に対してどの程度広がっているかを示す合計メジャーです。

の計算では、 f(X,Y,Z; の数式を表示します。Xk、Yk、Zk)。 X の数式を表示する 場合は、計算はスキップされ、それに応じて S のカーディナリティが調整されます。

目的関数の明らかな複雑さにもかかわらず、 これは、XKYKZK (17 ポイント 2xy -components 3 チャネル = 102) の多くの異なる関数の 2 乗の合計であり、したがって、WCS で使用されるアルゴリズムであるLevenberg-Marquardt アルゴリズムなどの標準的な非線形最小二乗手法に対応できます。 前の目的関数は、後者の関数は質量の中心からの距離の分散を測定するため、点が質量の中心から等間隔である場合、分散がゼロになるという点で、ベルン[3]で提案されたものとは異なっています。 この例では、2 番目の瞬間を使用してポイントの分散を直接構成しています。

非線形最小二乗問題の反復アルゴリズムと同様に、Levenberg-Marquardtは最初の推測を必要とします。 明らかな候補が 2 つあります。 1 つは (0、0、0) です。もう 1 つは、測定された黒い点です。 CTE の場合、測定された黒い点が最初の推測として最初に使用されます。 最大 100 回の反復計算が、その中心から各ポイントの平均距離 0.001 のしきい値を達成せずに超えた場合 (目標関数のしきい値 (0.001) 17 3 = 0.000051 に対応します)、最初の推測 (0,0, 0) を使用して反復の別のラウンドが実行されます。 結果として得られる黒点の推定値は、反復の前のラウンドからの最良の推定値と比較した XYZ です (最初の推測として測定された黒い点)。 目標関数の最小値を示す推定値を使用します。 100 回の反復の選択と 0.001 の誤差距離をそれぞれ経験的に選択しました。 今後のバージョンでは、エラー距離をパラメーター化するのが妥当な場合があります。

ステップ 1 の結果は、推定黒点 ( XK,YK,ZK ) です。 ステップ2は、ステップ1で得られた3つのクラスター内の点の色度を平均することによって三刺激行列を決定することから成る。 CRT の場合、これは主に測定エラーの影響を最小限に抑えるために行われます。 色度の平均化に使用される点は、手順 1 の最適化で使用される点と同じである必要があります。 言い換えると、各ランプの最初の点(例ではデジタルカウント15)が最適化ステップで破棄された場合は、平均化で同じ操作を行う必要があります。 [ 赤と緑のチャネルの座標の平均色度の数式を表示 する] と [ 青チャネルの座標の平均色度の数式を示す ] の場合。は、赤、緑、青の各チャネルの平均色度座標であり、次の手順で三色行列を決定します。 まず、3?3 線形システムを解決します。

3?3 線形システムを解く手順の最初の部分を示します。

3?3 線形システムの 2 番目の部分を示します。3?3 線形システムの 2 番目の部分の末尾に t 添字 b 値を表示します。

XWYWZW

3?3 線形システムを解く手順の最後の部分を示します。

三刺激行列が決定された後、トーン曲線の決定は標準的なアプローチに従う。 CRT ディスプレイの場合、個々のチャネルは "GOG" モデルに従っていると見なされます。

'G O G' モデルの数式を示します。

ここで、kg は "gain"、1 -kg は "offset" で、 は ? は "gamma" です。三刺激行列の逆行列をニュートラルの XYZ データに適用して線形 RGB データを取得し、GOG モデルで非線形回帰を使用してデジタル RGB 値と相関させます。 これらの特性は、R、G、B チャネルで同じである必要はありません。一般的には同じではありません。

Berns[1]: Berns、 Billmeyer、Saltzman のカラー テクノロジーの原則3rd Ed。 ジョン・ワイリー・ & サンズ (2000)。

Berns[2]: Berns and Katoh, The digital to Radiometric transfer function for computer controlled CRT displays, CIE Expert Symposium '97 カラースタンダード for Imaging Technology, Nov. 1997.

Berns[3]: Berns, Fernandez and Taplin, Estimating Black-Level Emissions of Computer-Controlled Displays, Color Research and Application, 28: 379-383 Wiley Periodicals, Inc. (2003)

カン[1]: カン、 電子イメージングデバイスのカラーテクノロジー、SPIE (1997)

Katoh[1]: Katoh, Deguchi and Berns, CIE 方式の拡張のための CRT モニター (II) 提案の正確な特性評価とその検証, Opt. Rev. 8: 397-408 (2001)

LCD デバイス モデルのベースライン

LCD デバイス モデル ベースラインは、CRT デバイス モデル ベースラインに似ています。 ここでは、LCD モデリングと CRT モデリングの違いについて説明します。

1 つの違いは、LCD ディスプレイが CRT に使用される 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 = G = 0

ニュートラル: R = G = B = 0、15、30、45、60、75、90、105、120、135、150、165、180、195、210、225、240、255。

デバイスのプライマリの色度を取得するために測定された色色を平均化するプロセスは、LCD の方が CRT の場合よりも重要です。 XYZ 測定を色度 xy 面にプロットする場合、典型的な状況を図 1 に示します。 色度が黒点に向かってどのようにドリフトするかに注目してください。 これは、すべての LCD に一定量の光漏れがあるためです。

補正なしの生データを使用した色度のグラフを示す図。

図 1 : 補正なしの生データを使用した色度図

この値を生の XYZ 測定値から減算すると、一般的な状況が図 2 に示されます。 ポイントは 3 つの中心についてクラスター化されるようになりましたが、それらの中心は同じではありません。 CRL に対して説明されている平均化プロセスにより、LCD の結果が大幅に向上します。

調整された黒い点を持つ生データを使用した色度のグラフを示す図。

図 2 : 黒点が調整されたデータを使用した色度図

RGB キャプチャ デバイス モデルのベースライン

ベースライン RGB キャプチャ デバイス モデルは、IDeviceModel クラスのサブクラスです。 スキャナーやデジタルカメラなどのカラーキャプチャデバイスの比色特性評価では、次のアプローチが使用されます。 既知の CIEXYZ 値を持つカラー パッチで構成されるターゲットは、キャプチャ デバイスを使用してキャプチャされます。 キャプチャの結果は、各パッチの色が RGB 値でエンコードされる RGB ビットマップ イメージです。 これらのデバイスの RGB 値は、特定のキャプチャ デバイスに固有です。 比色評価の目的は、デバイスの RGB 値と CIEXYZ 値の間に経験的な関係を確立すること、またはキャプチャ デバイスの動作を可能な限り正確にモデル化する RGB から XYZ への数学的変換です。

このような数学的変換は、低度の多項式によって合理的にモデル化できます。 この手順は文献で詳しく説明されています。例えばKang[92]、カン[97]。 康[97]では、R、G、B変数に3、6、8、9、11、14、または20個の項を持つ3つの多項式のセットを使用するアプローチが報告され、3つの多項式はそれぞれCIEXYZ空間のX、Y、Z成分に後退する。 20 項多項式の場合、次の形式になります。

20 項多項式を示します。

Y と Z にも同様の式があります。多項式を適合させる数学的手法は、"多変量線形回帰" に含まれており、「統計」の基本テキストで説明されています。

線形回帰のこの方法は、"正しい" 目的関数を最小化しないことに悩まされます。 設計上、線形回帰は最小二乗解を見つけます。つまり、得られた係数は、基になる空間内の誤差の平方和の合計を最小限に抑えるか、ユークリッド距離の二乗の合計を最小化することを意味します。 実際には、 の平方和を最小限に抑えます。Es、 はどこにありますか?E は、CIE94 などの承認済み標準の 1 つです。 この目的関数を最小限に抑えることは、非線形回帰の問題です。

新しいエンジンでは、Lab to XYZ はに後退する CIE 色空間であり、キャプチャ デバイスのモデルとして 20 項の 3 次多項式が使用されます。または、次の多項式で 2 乗の合計を最小限に抑えるように、bs の係数 ls が使用されます。E CIE94 s.

多項式のセットを示します。

60次元実数値空間R203における解( li, ai, bi )は、次の合計誤差が最小化されるようにする必要がある。

最小化する合計エラーを表示します。

ここで、合計は、すべてのデータ ポイント ペア (RIGiBI;サンプリングされたデータ セットの L i,ui,vi ) と、以下で詳しく説明する追加の制御ポイント。 これは、パラメーター が 原因の非線形回帰の問題です。i, a i, * i* は、非線形の方法で目的関数に入力します (二次的ではありません)。

目的関数は ? はパラメーターの非線形 (および非四分の一) 関数ですか?ii および * i* は、最適化の問題を解決するために反復的な手法に頼る必要があります。 目的関数の形式は平方和であるため、Levenberg-Marquardt アルゴリズムと呼ばれる標準的な最適化手法が使用されます。 非線形最小二乗問題の選択方法と見なされます。 Levenberg-Marquardt などの反復アルゴリズムの場合は、最初の推測を指定する必要があります。 適切な初期推測は、通常、正しい最小値を見つける上で重要です。 この場合、最初の推測に適した候補の 1 つは、線形回帰問題の解です。 まず、2 次対物関数を定義して、ラボ空間内のユークリッド距離の 2 乗の合計を最小限に抑えます。

定義された 2 次対物的関数を示します。

このような「線形最小二乗」問題に対する数学的解はよく知られている。 ?iL モデリングにのみ表示され、i はu モデリングにのみ表示され、* i* は v モデリングにのみ表示されます。最適化の問題は、3 つのサブ問題に分解できます。1 つは L 用、もう 1 つは u 用、もう 1 つは v 用です。 L 方程式について考えてみましょう。 ( u 数式と v 数式はまったく同じ引数に従います)。 L の誤差の平方和を最小限に抑える問題は、最小二乗の意味で次の行列式を解くものとして記述できます。

L の行列式を示します。

N は、データ ポイントの合計数です (元のサンプリング されたポイントと、以下に示す方法で作成されたコントロール ポイント)。 通常、 N は 20 よりもはるかに大きいので、前の数式は過剰に決定されるため、最小二乗解が必要です。 ? の閉じたフォーム ソリューションを使用できます。

閉じたフォーム ソリューションを表示します。

実際には、閉じた形式の解を使用した直接評価は、数値特性が悪いため使用されません。 代わりに、何らかの行列分解アルゴリズムが係数行列に適用され、数式のシステムが正規形式に減少します。 現在の実装では、特異値分解 (SVD) がマトリックス R に適用され、結果として得られる分解システムが解決されます。

線形回帰問題の解を示します。 線形回帰問題の解を示 します。は、Levenberg-Marquardt アルゴリズムの開始点として使用されます。 このアルゴリズムでは、ポイントを最適な解に近づける必要がある試行ステップが計算されます。 試行ステップは、現在のポイントでの微分の関数値と値に依存する一連の線形方程式を満たします。 このため、目的関数の派生物は ? パラメーターに関して ?ii i は、Levenberg-Marquardt アルゴリズムへの入力が必要です。 60 個のパラメーターがありますが、計算を大幅に削減できるショートカットがあります。 微積分の連鎖ルールによって、

微積分のチェーンルールを使用してショートカットを許可する数式を示します。

ここで、j = 1, 2, , 20, Li,ui,vii 番目のサンプル ポイントの CIELAB 値であり、Rij は上記で定義した行列 R の (i,j ) 番目のエントリです。 そのため、60 個のパラメーターの派生関数を計算する代わりに、数値順差分を使用して Lab の派生関数を計算できます。

また、反復アルゴリズムの停止条件を設定する必要もあります。 現在の実装では、平均二乗 DECIE94 が 1 未満の場合、または実行されたイテレーションの数が 10 を超えた場合、イテレーションは終了します。 数値 10 は、最初の数回の繰り返しで誤差が大幅に減少しない場合、振動的な方法でポイントを移動する以外に、それ以上の反復は役に立たない、つまりアルゴリズムが収束しない可能性がある、という実用的な経験から来ています。 アルゴリズムが分岐する場合でも、DECIE94が開始したものよりも悪くないことを確認できます。つまり、線形回帰から取得されたパラメータを使用します。

前述の非線形回帰の方法でも、継手にはいくつかの問題があります。 1 つの問題は、多項式がデータ ポイントを超えてオーバーシュートまたはアンダーシュートする傾向があることです。 人工局所最大値およびミニマは、フィッティングプロセスで導入され得る。 これは、低次数の多項式を使用することで打ち消すことができます。これは、3 度を超える値を使用すべきではない理由です。 オーバーシュートまたはアンダーシュートのより深刻な側面は、多項式は理論上任意の実際の値を取ることができますが、モデル化しようとする空間には通常、物理的な制約と実用的な制約があるということです。 CIEXYZ には、物理的な制約である X、Y、Z 以外のすべてが含まれている必要があります。 実際には、数千以上ではなく、数百の大きさの値のみを受け取ります。 同様に、CIELAB または CIELUV には、独自の物理的および実用的な制約があります。 RGB空間がサンプルポイントで十分に満たされている場合、オーバーシュートやアンダーシュートの問題は深刻ではありません。 ただし、キャプチャ デバイスからキャプチャされた RGB ポイントは、通常、RGB 空間を均一に埋めるわけではありません。 ポイントは、RGB キューブの 80% の内側のみを埋めることも、さらに悪いことに、より低次元の多様体に存在する可能性があります。 このような場合、後退した多項式は、データ ポイントを超える値を外挿する際に不適切な作業を行い、非現実的な予測を返す場合があります。 常に合理的に現実的な値を返すモデルが必要です。 これには、RGB キューブの境界付近で不規則に動作する多項式に追加コストを課すことによって、回帰多項式の境界動作を効果的に制御できるメソッドが必要です。 多項式が常に現実的な値を返すようにするためのさらなる尺度は、出力をCIEスペクトル軌跡内にクリッピングすることによって適用される。

この時点で、スキャナーモデリングとカメラモデリングは互いに異なって行われます。 カメラ モデルは、"反射ハイライト" を含むサンプリングされたポイントを超える領域に外挿する必要があります。スキャナー モデルでは、同じ外挿は必要ありません。 スキャナーターゲットは、スキャンされる印刷材料に似た特性評価をカバーすることが期待されます。 スキャナー モデルは、非現実的な値を返すべきではないという意味で堅牢である必要がありますが、特性評価ターゲットをはるかに超える外挿は必要ありません。 堅牢性を確保するために、上記の L-多項式は 100 でクリップされます。つまり、多項式モデルは、スキャナー ターゲットの "Dmin" を超えて外挿しないように強制されます。

カメラ モデルは反射ハイライトに外挿することが予想されるため、100 でのクリッピングは望ましくありません。 代わりに、次のアルゴリズムが使用されます。

サンプリングが不十分な領域での多項式の動作を制御するために、人工的な制御ポイントが導入されています。 これらのコントロール ポイントを適切な値で戦略的に配置することで、多項式を必要な方向に "プル" するのに役立ちます。 現在の実装では、RGB キューブの角に対応する 8 つのコントロール ポイントが使用されています。 デバイス値が 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

L = 100、u =v = 0 の CIELAB 値に関連付けられている白色の R =G =B = 1 を除き、次の外挿アルゴリズムを使用して、関連付ける適切な CIELAB 値を決定します。 一般に、特定の (R,G,B) に対して、重みはサンプリングされたデータ セット内の (RI,Gi,Bi) のそれぞれに関連付けられます。 重みの割り当てには 2 つの目標があります。 まず、重みは (R,G,B) と (RI,Gi,B i) の間の距離に反比例します 次に、特定のポイント (RGB ) とは異なる色合いを持つポイントを破棄するか、重み 0 を割り当てます。 色合いを考慮するには、頂点が (0, 0, 0) の円錐内にある点と、その軸が線結合 (0、0、0) から (R,G,B) に一致し、半垂直方向の角度を持つ点を考慮してください。 cos を満たすか。 = 0.9。 この円錐の図については、図 3 を参照してください。

近傍の形状を示す図。

図 3 : 角度と距離でサンプル ポイントをフィルター処理する。 描かれた近隣の形状は、図示のみを目的としています。 実際の図形は、使用される距離によって異なります。1ノルムを使用する場合はダイヤモンド形の近傍です。

このコーン内では、RGB 距離に基づく 2 つ目のフィルター処理が実行されます。これは、 によって定義された 1 ノルムを使用します。

円錐形内の 2 番目のフィルター処理の数式を示します。

現在の円錐では、最初の検索では、(R,G,B) から 0.1 の距離内にあるポイントが検索されます。 この半径内にポイントが見つからない場合、半径は 0.1 増加し、検索が再開されます。 次のラウンド ネットにポイントがない場合、半径は 0.1 増加します。 このプロセスは、1 ノルムの場合、半径が MaxDist/5 (MaxDist = 3) を超えるまで続行されます。 ポイントが見つからない場合、コズを減らすと円錐体が拡大します。 0.05 で、つまり角度を大きくしますか? 半径を増やしてプロセス全体を再起動します。 このプロセスは、空でないポイントのセットが見つかるか、cos が見つかるまで続行されます。 は 0 に達します。つまり、円錐が開いて平面になります。 この時点で、半径が MaxDist に達するまで検索が続行されることを除き、半径を増やすことで検索が再開されます。 これにより、最悪のシナリオでは、空でないポイントセットが見つかることが保証されます。 このアルゴリズムは、図 4 のフロー図にまとめられています。

アルゴリズムのフローを示す図。

図 4 : 入力 RGB 値の外挿で使用されるサンプル ポイントのセット S を決定するためのフロー図

前のプロセスで空でないセット S のポイント (RI,Gi,BI) と対応する (Li,ai,bi) が生成されると仮定すると、そのような点ごとに重み wi が割り当てられます。

各ポイントの重みの数式を表示します。

最後に、外挿は によって定義されます。

外挿の定義を示します。

上記の式は、一般に Shepard メソッドと呼ばれる "逆距離重み付けメソッド" のインスタンスを構成します。 eq (6) からアルゴリズムを介して 8 つのポイントをそれぞれ実行すると、8 つの制御ポイントが取得され、それぞれ RGBLab の値が取得され、元のサンプル データを使用してプールに配置されます。

モデルが常に有効な色値を生成し、システムの整合性と色処理パイプライン全体の安定性を確保するには、多項式モデルの出力に対して最終的なクリッピングを実行する必要があります。 CIE 視覚色域は、色成分 (Y または L ) と色成分 (xy または a'b') によって記述されます。これは射光変換によって XYZ 空間に関連します。 現在の実装では、cIELUV 空間に直接関連しているため、 a'b' 色度が使用されます。 CIELAB 値の場合、最初に L を負以外の値にクリップします。

L のクリッピングを負以外の値に表示します。

反射ハイライトの外挿を可能にするために、 L はラボ空間の L の "従来の" 上限である 100 でクリップされません。

次に、 L = 0 の場合、 ab は、a*= b =* 0 のようにクリップされます。 L の場合 0、計算

L=0 の場合は数式を表示します。

これらは、白い点 (u?',v?' ) から問題の色までの a'b' 図のベクトルのコンポーネントです。 波長によってパラメーター化されたすべての点 (a',b' ) の 凸包として CIE スペクトル 軌跡を定義します。

波長の数式を示します。

ここで、 CIE カラーマッチングの関数を示します。 2 度オブザーバーの CIE カラーマッチング関数です。 ベクトルがCIE軌跡の外側にある場合、色は、軌跡とベクトルによって定義される線の交差であるCIE軌跡上の点までクリップされます。 図 5 を参照してください。 クリッピングが発生した場合、最初にクリップされた a' と b' から a?'b?' を減算し、次に 13 L を乗算することで、ab の値が再構築されます。

クリッピング アルゴリズムのグラフを示す図。

図 5 : CIE ビジュアルの色域外にあるラボ値のクリッピング アルゴリズム

現在の実装では、 a'b' 面内のCIEスペクトル軌跡は、35セグメント(360nm〜700nmを含む波長に対応する)を有する段階的線形曲線で表される。 白点でのサブ目的の角度が昇順になるように線分を並べ替えることで、上のベクトルによって形成されたレイと交差する線分を単純な二項検索で見つけることができます。

RGB プリンター デバイス モデルのベースライン

RGBプリンターのデバイス特性評価は、特定のRGB値に対してデバイスに依存しないCIELUV色を予測するデバイスの経験モデルを構築することで構成されます

経験モデルを構築するには、2 つの方法があります。 1 つの方法は、RGB プリンターのデバイス データを使用することです。もう 1 つは、分析パラメーター データを使用することです。 最初の 1 つでは、RGB プリンター デバイスのユーザーによって提供される測定データを使用して、3-D 参照テーブル (LUT) を構築します。 測定データは、均一にサンプリングされた RGB パッチの XYZ 値で構成されます。 一般的なサンプリング サイズは、コンポーネントごとに 9 または 17 です。 各パッチは、CIEXYZ空間の測色計または分光光度計で測定されます。 パッチの XYZ 値は CIELUV 値に変換され、3-D LUT が形成されます。 デバイス モデルでは、特定の RGB データの CIELUV データを予測するために、3-D LUT に対して、阪本の四面体補間法を適用します。 (米国特許4275413(サカモト他)、US Patent 4511989(サカモト)、カン[1]。 記載されている 2 つの特許の有効期限が切れています。)。 2 番目のメソッドで渡される分析パラメーター データは、以前に構築された単なる LUT です。 通常、その LUT は最初の方法を使用して構築されましたが、手動でビルドできます。

現在のカラー管理では、ソース マップは RGB 空間からデバイスに依存しない CIEXYZ 色空間に移行するマップとして定義されます。 宛先マップは、デバイスに依存しない CIEXYZ 色空間から RGB 空間に移動するマップとして定義されます。 これは、ソース マップの逆関数です。

経験モデルは、ソース マップで直接使用されます。 まず、特定の RGB データを CIELUV データにマップし、XYZ データに変換します。 宛先マップでは、デバイスに依存しない CIEXYZ データが最初に CIELUV データに変換されます。 次に、経験モデルと従来のNewton-Raphson法を使用して、CIELUV データに最適な RGB データを予測します。 CieLUV から RGB データへの変換の詳細は次のとおりです。

RGB から CieLUV への 3-D LUT を生成した後、RGB から LUV へのマップは、RGB の四面体補間を使用して構築されます。 このマップは、次の式で示されます。

マップの数式を、R G B から L U V に示します。

マップの反転は、解法で構成され、任意の色に対して、非線形方程式の次のシステムである L U V. を示します。

任意の色 L U V を笑い出す非線形方程式を示します。

新しい CTE では、古典的なNewton-Raphson法に基づく非線形方程式が使用されます。 最初の推測 (または 先行 参照 ) は、 事前計算済み (RGB,Luv) ペアの均一な 8x8x8 グリッドで構成される "シード 行列" を検索することによって取得されます。 L*u*v* に最も近い RGB 対応の Luv が選択されます。 シード マトリックス内の各ポイントはセルの中心に対応しているため、反復は RGB キューブの境界面上の点から始まらないようにします。 つまり、シードの RGB は、STEP = 1/8 s ijk = (STEP/2 + (i-1) STEP、STEP/2+(j-1)STEP、STEP/2+(k-1)STEP) と i,j,k = 1...8 で定義されます。Newton-Raphson の i 番目のステップでは、次の 推定値の変数が数式 で取得されます。

見積もりの数式を表示します。

エラー (CIELUV 空間内の距離) が事前に設定された許容レベル (CTE では 0.1) より小さい場合、または反復回数が許容される反復の最大数 (CTE では 10) を超えると、イテレーションは停止します。 許容誤差の値と反復回数は、有効であると経験的に決定されました。 将来のバージョンでは、許容範囲の値が変更される可能性があります。

ヤコビアン行列は、後方差が代わりに使用される境界点(1つ以上のR、G、Bが1)を除き、前方差分を使用して計算されます。 ヤコビアン行列の逆関数を計算する代わりに、完全ピボットを使用してGauss-Jordan除去を使用して線形システムを直接解きます。

反復の最後に、Newton-Raphsonは "ローカル" アルゴリズムであるため、収束はまだ実現されない可能性があります。つまり、真の解に近い最初の推測から始めた場合にのみ適切に機能します。 Newton-Raphsonイテレーションの最後に、定義済みの誤差許容値内の収束が達成されていない場合、イテレーションは次のように定義された新しいシード セットで再起動されます。

たとえば、これまでに得られた最良のソリューションは(r、g、b)です。 この溶液から、Nは事後種子が誘導され、ここでNは4である。 直感的に、ソリューションは N に依存するステップ サイズで "中心に向かって" 移動します。図 6 を参照してください。

ソリューションの摂動方向を示す図。

図 6 : 解の摂動方向は、それがどのオクタントにあるかによって異なります。

つまり、r > 0.5 の場合、R チャネルの値が減少し、それ以外の場合は値が増加します。 G チャネルと B チャネルにも同様のロジックがあります。 正確な定義は次のとおりです。

PERTURBATION = 0.5/(N+1)

Dir(r) = r 0.5 の場合は -1、それ以外の場合 > は +1。 Dir(g) と Dir(b) の場合も同様です

jth a 事後シード、s ????, は (r + Dir(r) *j * PERTURBATION, g + Dir(g) * j * PERTURBATION, b + Dir(b) * j * PERTURBATION) です

最初の s ????を試す エラー許容範囲内で新しいソリューションが提供される場合は、停止できます。 それ以外の場合は、2 番目の ????を試します N番目の????.までなど

アルゴリズム全体の回路図を図7に示します。

デバイス モデルを反転するフローを示す図。

図 7 : デバイス モデルを反転する回路図

RGB 仮想デバイス モデルのベースライン

このデバイス モデル (DM) は、単純なマトリックス/トーン再生アルゴリズムです。 マトリックスは、標準のカラー サイエンス アルゴリズムを使用して、ホワイト ポイントとプライマリから派生します。 トーン再現曲線は、CurveType と ParametricType の ICC 記述に従って測定パラメーターから派生します (または、必要に応じて反転されます)。 内部アルゴリズムの詳細は、高ダイナミック レンジの問題の追加検証後に提供されます。

RGB仮想デバイスモデルは、ICCの3成分マトリックスベースのプロファイル設計と同様に、理想的なマトリックス/トーン再生曲線RGBです。 DM の "仮想測定" パラメーターには、ホワイト ポイント値 (絶対 CIEXYZ)、RGB 主値 (絶対 CIEXYZ)、および DMP スキーマと一致する XML 形式の ICC パラメトリックカーブタイプと CurveType に基づくトーン再現曲線が含まれます。

IRGBVirtualDeviceModelBase での ICC パラメトリックCurveType 関数の種類のエンコードと対応するサポートを次の表に示します。

関数の型 パラメーター Type Note
'GammaType' 関数を表示します。
G
GammaType
一般的な実装
'GammaOffsetGainType' 関数を表示します。
ga b
GammaOffsetGainType
CIE 122-1966
'GammaOffsetGainOffsetType' 関数を表示します。
ga b c
GammaOffsetGainOffsetType
IEC 61966-3
'GammaOffsetGainGainType' 関数を表示します。
ga b c d
GammaOffsetGainGainType
IEC 61966-2.1
(sRGB)
'g a b c d e f' パラメーターの関数を示します。
ga b c d e f
該当なし
WCS ではサポートされていません

RGB 仮想デバイスのトーン曲線は、入力データ、pDeviceColors、およびマトリックス乗算の間の DeviceToColorimetric に適用されます。 ColorimetricToDevice の場合は、トーンカーブを反転するメソッドを使用する必要があります。 ベースライン実装では、これは DeviceToColorimetric に使用されるのと同じトーン カーブ内の直接補間によって行われます。

曲線は、浮動小数点空間内の数値のペアとしてプロファイルで指定する必要があります。 最初の数値は pDeviceColors の値を表します。 2 番目の数値は、トーン カーブの出力を表します。 トーン カーブ内のすべての値は、minColorantUsed と maxColorantUsed の間である必要があります。 トーン カーブには、少なくとも 2 つのエントリ (minColorantUsed の場合は 1 つ、maxColorantUsed の場合は 1 つ) が含まれている必要があります。 ToneCurve のエントリの最大数は 2048 です。 一般に、テーブル内のエントリが多いほど、曲率をより正確にモデル化できます。 エントリ間で段階的な線形補間が実行されます。

代替補間方法を検討できます。 デバイスの基になる動作について理解している場合は、使用するサンプルの数を減らし、より高い順序の曲線でより正確にモデル化できます。 しかし、間違った曲線タイプを使用すると、非常に不正確になります。 詳細を知らないと、曲線の種類を推測できません。 そのため、線形補間を使用し、多くのデータ ポイントを提供します。

CMYK プリンター デバイス モデルのベースライン

CMYK プリンターのデバイス特性評価は、特定の CMYK 値の印刷色を予測するデバイスの経験モデルを構築することで構成されます。 この特性評価には、このモデルの反転も含まれているため、特定の色を印刷するための CMYK 値の処方を指定できます。 これは通常、CIEXYZ または CIELAB 値の観点から定義されます。

通常、CMYK パッチを含む IT8.7/3 ターゲットが使用されます。 パッチは、明確に定義された方法で CMYK 空間のサンプリングで構成され、四角形のグリッド (C、M、Y、K の間隔が不均一) が形成されます。 各パッチは、測色計または分光光度計で測定されます。 CIEXYZ値の測定値はルックアップテーブル(LUT)を形成し、そこから坂本の補間法を使用してプリンタの経験モデルが構築されます。 US Patent 4275413 (坂本他)、US Patent 4511989 (坂本)、康 [1]。 記載されている2つの特許は期限切れになりました。

CMYK プリンターのベースライン デバイス モデルで有効なデバイス モデル プロファイルを受け入れるために必要な CMYK 測定サンプルの具体的な要件は次のとおりです。 (サンプル セットは、それぞれ特定の K レベルに関連付けられた CMY サンプル キューブのセットとして最も明確に説明されています)。

  • K = 0 および K = 100 レベルには、少なくとも有効な CMY キューブを指定する必要があります。

  • 中間Kレベルは、不均一に間隔を空けることができる。

  • 有効な CMY キューブのない中間 K レベルは無視されます。

  • CMY キューブでは、均一でないサンプル間隔 (グリッド間隔) を使用できますが、特定の K レベルの CMY キューブ内のすべての C、M、Y ディメンションで同じサンプル間隔のセットを使用する必要があります。

  • 各 K レベル CMY キューブでは、サンプル間隔の異なる数と間隔を使用できます。

  • すべての CMY キューブには、CMY キューブの "コーナー" 、つまり [0,0,0]の CMY サンプルが含まれている必要があります。 [0,0,100], [0,100,0], [100,0,0], [0,100,100], [100,0,100,0], [100,100,100,100]。

  • 中間 CMY グリッド レベルは、各チャネルで完全にサンプリングする必要があります。 つまり、CMY キューブ内の各 3-D グリッド交差部分にサンプルが存在する必要があります。

  • K = 0 および K = 100 CMY キューブの場合、2x2x2 の "コーナーのみ" キューブが、有効として許容される最小値です。

    [注: K=0 および K=100 レベルの場合、3x3x3 CMY キューブは 2x2x2 の "コーナー専用" キューブとして処理されます。中間サンプル レベルは無視されます。 4x4x4 以上のキューブでは、すべてのオングリッド サンプルが使用されます。

  • 中間 K レベルの場合、4 x 4 x 4 CMY キューブは、有効として許容される最小値です。

高品質プロファイルでは、有効性に必要な最小値 (通常は 9x9x9x9 以上) よりも細かいサンプリング グリッドが使用されます。 IT8.7/3、IT8.7/4、および ECI ターゲットのサンプルでは、CMYK プリンター ベースライン デバイス モデルの有効なデバイス モデル プロファイル (DMP) が生成されます。 このデバイス モデルは、これらのターゲット内の余分な (グリッド外の) サンプルを無視できますが、他のターゲットでこれを行うことができるとは限りません。そのため、このデバイス モデルのプロファイルに入る測定セットから余分なサンプルを削除することをお勧めします。

プリンター モデルの反転は、より困難です。 CIECAM の入力色を指定すると、この色がプリンターの色域内にあるかどうかという問題があります。 色の外観空間における点の配置に関する問題もあります。 CMYK 値を四角形のグリッドに配置することもできますが、IT8.7/3 ターゲットと同様に、色の外観空間に配置されている結果の印刷色と同じことは言えません。 一般に、これらは特定のパターンを持たない色の外観空間に散らばっています。

一般に、散乱点の反転問題には 2 つのアプローチがあります。 1 つのアプローチは、テトラヘドラなどの基本的な 3 次元固体を使用して、プリンターの色域の幾何学的な区分を使用することです。 カラーアピアランス空間におけるプリンターの色域の区分は、CMY(K) 空間の対応するサブ区分から誘発され得る。「ハング[93], カン[97]」を参照してください。この方法には、計算の簡易性という利点があります。 四面体の場合、補間では 4 つのポイントのみが使用されます。 一方、結果はいくつかの点に大きく依存します。つまり、測定誤差が結果に大きな影響を与えることになります。 また、インターポラントは滑らかではない傾向があります。 2 つ目の方法では、サブ区分は想定されず、分散データ補間の手法に基づいています。 従来の例としては、Shepard 補間の手法、または逆加重法があります (Shepard [68]を参照)。 ここで、入力点を囲む複数の点が何らかの方法で選択され、それぞれが重みを割り当て、通常は距離に反比例し、そして外挿は隣接する点の加重平均として取られる。 この方法では、パフォーマンスにとって最も重要なのは、隣接するポイントの選択です。 ポイントが少なすぎると、補間が不正確で滑らかでない可能性があります。重みは通常、非線形関数であり、計算にコストがかかるため、計算コストが高くなります。

上記の 2 つのアプローチには問題があります。 サブ区分アプローチは、ノイズが合理的に無効になっているデータに重大に依存し、一般に、インターポラントはあまり滑らかではありません。 分散データ補間は、データ ノイズに対する耐性が高く、一般に、よりスムーズな相互運用機能を提供しますが、計算コストが高くなります。

新しい CTE には別のアプローチがあります。 CMYK デバイスは、複数の CMY デバイスのコレクションとして扱われ、それぞれに黒 (K) の特定の値があります。 パラメーターとして明るさと彩度を受け取る選択アルゴリズムを使用して、黒のレベルが選択されます。 CMY 値は、RGB プリンター アルゴリズムによって他の場所で使用される Newton メソッドを使用して、対応する CMY を Luv テーブルに反転することによって取得されます。

次の手順に従います。

  1. 特性評価ターゲット (IT8.7/3 ターゲット)、または CMYK 空間のサンプリングを含むターゲットを定期的または不規則に間隔を空けた間隔で印刷します。
  2. 分光光度計を使用してターゲットを測定し、測定値を CIELUV 空間に変換します。
  3. CMYK から Luv への前方マップを構築します。
  4. 前方マップを使用して、K 値の範囲の CMY から Luv へのマップのセットを作成します。
  5. いずれの入力Luv値に対しても、対応するCMYK値は、上記のステップ4で構築されたいずれかのマップを選択し、ニュートン法を用いて反転して、選択されたK値に付随するCMY着色剤セットを得ることによって得られる。

標準的な手順である手順 1 と 2 は、新しい CTE の一部ではないプロファイリング プログラムによって実行されます。 IT8.7/3 ターゲットには、C、M、Y、K のさまざまなレベルのすべての CMYK 値の合理的に詳細なサンプリングが含まれています。または、C、M、Y、K チャネルの均一サンプリングを使用したカスタム ターゲットを使用することもできます。 ターゲットを印刷した後、分光光度計または測色計を使用して各パッチの XYZ 値を測定し、XYZ 値を CIELUV モデルを使用して Luv 値に変換できます。

ステップ3は、CMYKからLuvへの前方マップの構築を、CMYK空間の矩形グリッド上に四面体法または多線法などの任意の既知の補間技術を適用することによって達成することができる。 新しい CTE では、4 次元四面体補間が使用されます。 一般に CMY サンプリング グリッドは K の各レベルで異なるため、以下に詳しく説明するように、スーパー サンプリングの手法を使用します。 特定の CMYK ポイントの場合、サンドイッチ K レベルは最初に K 値に基づいて決定されます。 次に、2 つの K レベルのそれぞれで CMY グリッドの和集合である各 K レベルに "スーパー グリッド" を導入します。 各 K レベルでは、新しく導入されたグリッド ポイントの Luv 値は、その K レベル内の 3 次元四面体補間によって取得されます。 最後に、この新しいグリッドで特定の CMYK ポイントの 4 次元四面体補間を実行します。

スーパーサンプリングを示す図。

図 8 : スーパーサンプリング

手順 4 では、CMY から Luv への一連の参照テーブル (LUT) を構築します。 手順 3 で構築された前方マップを繰り返し呼び出して、CMYK 空間を再サンプリングします。 CMYK 色空間は、K の偶数間隔と、CMY の異なる間隔を使用してサンプリングされますが、均等に間隔が設定されています。

ステップ5は、ステップ4で構築したLUTを使用して、入力 Luv ポイントに対してCMYK値を取得する手順です。 K の適切な値は、要求された Luv の明度と色の程度を分析することによって選択されます。 テーブルが選択されると、CMY 値は Newton のメソッドを使用してテーブルから取得されます (前述の RGB プリンター デバイス モデルに記載されています)。

デバイス モデルは DMP で使用可能な比色データのみに基づいている必要があるため、CIELUV 空間は CIEJab ではなくプリンター モデルで使用されます。 DMP にはメディア ホワイト ポイントを含む各測定パッチの比色データが含まれているため、CIEXYZ データを CIELUV データに変換できます。 ただし、DMP 内の表示条件情報にアクセスできないため、CIECAM02 JCh または Jab に変換することはできません。

RGB プロジェクター デバイス モデルのベースライン

注: 多くの RGB プロジェクターには、複数の動作モードがあります。 1 つのモードでは、多くの場合、既定値であり、"プレゼンテーション" と呼ばれることがあります。プロジェクターの色応答は、最大の明るさに合わせて最適化されています。 ただし、このモードでは、プロジェクターは淡い黄色や一部の肉色などの光、わずかに色の色を再現する機能を失います。 "フィルム"、"ビデオ"、または "sRGB" と呼ばれる別のモードでは、プロジェクターはリアルな画像や自然なシーンの再現用に最適化されています。 このモードでは、色再現の全体的な品質を向上させるために、最大の明るさがトレードオフされます。 RGBプロジェクターで満足のいく色再現を得るためには、滑らかな色域を再現できるモードでプロジェクターを配置する必要があります。

D L P デバイス モデルを示す図。

図 9 : DLP デバイス モデル

受信 RGB 値は、2 つの計算経路を通過します。 1 つ目はマトリックス モデルであり、結果として XYZ 値になります。 この直後に、XYZ から Luv への変換が行われます。 2 つ目は、四面体補間を使用した非均一な LUT 補間です。 補間の出力は、構築によって Luv 空間に既に存在します。 予測された Luv 値を取得するために、2 つの出力が追加されます。 これは最終的に XYZ に変換されます。これは、DLP デバイスの比色モデルの期待される出力です。

プロジェクターはディスプレイ デバイスであるため、モデルの反転 、つまり XYZ から RGB への変換もサポートします。 デバイス モデルは RGB 空間を 3 次元の XYZ 空間に変換するため、反転は 3 つの未知の 3 つの非線形方程式を解くのと同じです。 これは、Newton-Raphson などの標準的な数式解決手法によって行うことができます。 ただし、最初に XYZ を Luv に変換し、次に Luv To RGB 変換を反転することをお勧めします。Luv 空間は XYZ 空間よりも知覚的に線形であるためです。

ICC デバイス モデルベースライン

CITE ICC ワークフローの相互運用性は、プロファイル オブジェクトを格納し、no-op XYZ プロファイルを使用して ICC 変換を作成する特別な ICC デバイス ベースライン デバイス モデル プロファイルを作成することによって有効になります。 この変換は、デバイスと CIEXYZ の色の間で変換するために使用されます。

C I T I I C ワークフローの相互運用性を示す図。

図 10 : CITE ICC ワークフローの相互運用性

基本的な色管理の概念

Windows カラー システムのスキーマとアルゴリズム