Partager via


Algorithmes et schéma de profil de modèle d’appareil de couleur WCS

Cette rubrique fournit des informations sur le schéma de profil de modèle d’appareil couleur WCS et ses algorithmes associés.

Cette rubrique contient les sections suivantes :

Vue d’ensemble

Ce schéma est utilisé pour spécifier le contenu d’un profil de modèle d’appareil couleur (CDMP). Les algorithmes de base de référence associés sont décrits ci-dessous.

Le schéma DMP (Device Model Profile) de base se compose des données de mesure d’échantillonnage.

Le composant d’échantillonnage du schéma XML DMP prend en charge les cibles de mesure de couleur de base, en se concentrant sur les cibles standard courantes et les cibles optimisées pour les modèles d’appareils de base.

En outre, le profil d’appareil fournit des informations spécifiques sur le modèle d’appareil ciblé et fournit une stratégie que le modèle d’appareil de secours de base peut utiliser si le modèle ciblé n’est pas disponible. Les instances de profil peuvent inclure des extensions privées à l’aide de mécanismes d’extension XML standard.

Architecture du profil de modèle d’appareil couleur

Diagramme montrant les informations qui composent un profil de modèle d’appareil.

Schéma 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>

Ajout d’étalonnage WCS CDMP v2.0

L’élément ColorDeviceModel du schéma CDMP a été mis à jour dans Windows 7 pour inclure le nouvel élément d’étalonnage. Voici la modification apportée au schéma 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>
  ...

Éléments de schéma CDMP

Notes

Les primaires sont des échantillons principaux de rouge, vert, bleu, noir et blanc. Une rampe primaire est une rampe tonale allant de la plus petite luminance à la valeur primaire complète. Le nombre maximal d’entrées dans une rampe de tonalité est de 4 096.

Notes

Les DPM doivent avoir des données de mesure.

ColorDeviceModelProfile

Cet élément est de type ColorDeviceModel.

Conditions de validation : Chaque sous-élément est validé par son propre type.

ColorDeviceModel

Cet élément est une séquence des sous-éléments suivants

  1. Chaîne ProfileName,
  2. chaîne de description facultative,
  3. chaîne d’auteur facultative,
  4. facultatif MeasurementConditions MeasurementConditionsType,
  5. Self-Luminous Boolean,
  6. MaxColorant float,
  7. MinColorant float,
  8. Choix des éléments
    1. CRTDevice,
    2. LCDDevice,
    3. RGBProjectorDevice,
    4. ScannerDevice,
    5. CameraDevice,
    6. RGBPrinterDevice,
    7. CMYKPrinterDevice,
    8. RGBVirtualDevice,
  9. PlugInDevice,
  10. ExtensionType facultative

Conditions de validation : Chaque sous-élément est validé par son propre type. Les sous-éléments de chaîne ont un maximum de 10 000 caractères. Le sous-élément MaxColorant doit être supérieur ou égal à zéro (0) et supérieur au sous-élément MinColorant. MinColorant peut être négatif.

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 » avec Windows Vista.

Conditions de validation : Toute valeur >de version 0.1 ou <=2.0 est valide pour prendre en charge les modifications non cassants du format.

Documentation

Schéma du profil de modèle d’appareil.

Copyright (C) Microsoft. Tous droits réservés.

Élément CRTDevice

Cet élément est une séquence de sous-éléments d’un MeasurementData DisplayMeasurementType.

Conditions de validation : Chaque sous-élément est validé par son propre type.

Élément LCDDevice

Cet élément est une séquence de sous-éléments d’un MeasurementData DisplayMeasurementType.

Conditions de validation : Chaque sous-élément est validé par son propre type.

Élément ProjecteurDevice

Cet élément est une séquence de sous-éléments d’un MeasurementData RGBProjectorMeasurementType.

Conditions de validation : Chaque sous-élément est validé par son propre type.

Élément ScannerDevice

Cet élément est une séquence de sous-éléments d’un MeasurementData RGBCaptureMeasurementType

Conditions de validation : Chaque sous-élément est validé par son propre type.

Élément CameraDevice

Cet élément est une séquence de sous-éléments d’un MeasurementData RGBCaptureMeasurementType

Conditions de validation : Chaque sous-élément est validé par son propre type.

Élément RGBPrinterDevice

Cet élément est une séquence de sous-éléments d’un MeasurementData RGBPrinterMeasurementType.

Conditions de validation : Chaque sous-élément est validé par son propre type.

Élément CMYKPrinterDevice

Cet élément est une séquence de sous-éléments d’un MeasurementData CMYKPrinterMeasurementType.

Conditions de validation : Chaque sous-élément est validé par son propre type.

Élément RGBVirtualDevice

Cet élément est une séquence de sous-éléments d’un RGBVirtualMeasurementDataType.

Conditions de validation : Chaque sous-élément est validé par son propre type.

PlugInDeviceType

Cet élément est une séquence d’un GUID GUIDType et de tous les sous-éléments.

Conditions de validation : Le GUID est utilisé pour faire correspondre le GUID de dll PlugIn DM. Il existe un maximum de 100 000 sous-éléments personnalisés.

RGBVirtualMeasurementType

Cet élément est une séquence composée de

  1. RVBPrimariesGroup group

  2. Un choix de

    • Gamma
    • GammaOffsetGain
    • GammaOffsetGainLinearGam
    • Éléments ToneResponseCurves
  3. facultatif GamutBoundarySamples GamutBoundarySamplesType

  4. TimeStamp dateTime

Conditions de validation : Chaque sous-élément de ces types a ses propres conditions de validation.

GammaType

Cet élément est un type complexe constitué de l’attribut

  • Gamma NonNegativeFloatType

Conditions de validation : À déterminer à partir des commentaires de l’industrie.

GammaOffsetGainType

Cet élément est un type complexe composé des attributs

  • Gamma NonNegativeFloatType
  • Offset NonNegativeFloatType
  • Gain NonNegativeFloatType

Conditions de validation : À déterminer à partir des commentaires de l’industrie.

GammaOffsetGainLinearGainType

Cet élément est un type complexe composé des attributs

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

Conditions de validation : À déterminer à partir des commentaires de l’industrie.

ToneResponseCurvesType

Cet élément est une séquence de

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

L’élément a également un attribut TRCLength de type unsignedint.

Conditions de validation : À déterminer à partir des commentaires de l’industrie.

GamutBoundarySamplesType

Cet élément est une séquence de RVBTypes.

Conditions de validation : Les occurrences maximales actuellement non limitées, à plafonner en fonction des commentaires de l’industrie.

FloatPairList

Cet élément est un type simple de liste de paires de floats.

Conditions de validation : À déterminer à partir des commentaires de l’industrie.

CMYKPrinterMeasurementType

Cet élément est un

  1. séquence d’un élément ColorCube constitué d’une séquence de Sample NonNegativeCMYKSampleType

  2. Attribut dateTime TimeStamp.

Conditions de validation : À déterminer à partir des commentaires du secteur.

RGBPrinterMeasurementType

Cet élément est un

  1. séquence de l’élément ColorCube comprenant une séquence de Sample NonNegativeRGBSampleType

  2. Attribut dateTime TimeStamp.

Conditions de validation : À déterminer à partir des commentaires du secteur.

RGBCaptureMeasurementType

Cet élément est une séquence de

  1. ComplexType PrimaryIndex de

    1. OneBasedIndex blanc
    2. Facultatif Black OneBasedIndex
    3. Red OneBasedIndex facultatif
    4. OneBasedIndex vert facultatif
    5. Facultatif Blue OneBasedIndex
    6. Facultatif Cyan OneBasedIndex
    7. Magenta OneBasedIndex facultatif
    8. OneBasedIndex jaune facultatif
  2. NeutralIndices des lignes de OneBasedIndex

  3. Séquence ColorSamples de l’exemple NonNegativeRGBSampleType

L’élément a également un attribut dateTime TimeStamp.

Conditions de validation : À déterminer à partir des commentaires du secteur.

OneBasedIndex

Cet élément est un type simple de restriction base unsigned int avec minInclusive value = « 1 ».

Conditions de validation : À déterminer à partir des commentaires du secteur.

RGBProjectorMeasurementType

Cet élément est une séquence de

  1. Groupe RGBPrimariesGroup
  2. élément ColorSamples constitué d’une séquence de NonNegativeRGBSampleType

L’élément a également un attribut dateTime TimeStamp.

Conditions de validation : À déterminer à partir des commentaires du secteur.

DisplayMeasurementType

Cet élément est une séquence de

  1. groupe RGBPrimariesGroup
  2. GrayRamp de la séquence de l’exemple NonNegativeRGBType
  3. RedRamp de la séquence de l’exemple NonNegativeRGBType
  4. GreenRamp de la séquence de l’exemple NonNegativeRGBType
  5. BlueRamp de la séquence de l’exemple NonNegativeRGBType

L’élément DisplayMeasurementType a également un attribut dateTime TimeStamp.

Conditions de validation : À déterminer à partir des commentaires du secteur.

MeasurementConditionsType

MeasurementConditionsType est une séquence de sous-éléments qui contient :

  1. Valeur d’énumération de chaîne restreinte ColorSpace de « CIEXYZ »
  2. choix facultatif de l’énumération de chaîne WhitePoint NonNegativeXYZType ou WhitePointName des valeurs D50, D65, A ou F2
  3. Geometry GeometryType
  4. ApertureSize entier en millimètres

Les valeurs par défaut sont les suivantes :

  1. Imprimantes RVB et CMJN :
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. ApertureSize 10mm
  2. Scanners:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. ApertureSize 10mm
  3. Affichages et appareil virtuel RVB :
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. 0/45 GeometryType
    4. ApertureSize 10mm
  4. Caméras:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. Direct GeometryType
    4. ApertureSize 10mm

Conditions de validation : La validation de chaque sous-élément est déterminée par les conditions de validation de ces sous-éléments. Si un sous-élément est manquant, la valeur par défaut du type de modèle d’appareil est utilisée.

GeometryType

String

Valeurs d’énumération :

  • "0/45"
  • « 0/diffuse »
  • « diffuse/0 »
  • « Direct »

Conditions de validation : Toute valeur à l’exception des valeurs enumberation répertoriées n’est pas valide. Ces informations ne modifient pas le comportement de traitement de la base de référence.

RGBPrimariesGroup

Cet élément est une séquence de

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

Conditions de validation : À déterminer à partir des commentaires du secteur.

NonNegativeCMYKSampleType

Cet élément est une séquence de

  1. CMYK NonNegativeCMYKType
  2. CIEXYZ NonNegativeXYZType

L’élément a également une chaîne de balise d’attribut facultative

Conditions de validation : À déterminer à partir des commentaires du secteur.

NonNegativeRGBSampleType

Cet élément est une séquence de

  1. RGB NonNegativeRGBType
  2. CIEXYZ NonNegativeXYZType

L’élément a également une chaîne de balise d’attribut facultative

Conditions de validation : À déterminer à partir des commentaires du secteur.

NonNegativeCMYKType

Cet élément constitué d’attributs

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

Conditions de validation : À déterminer à partir des commentaires du secteur.

NonNegativeRGBType

Cet élément constitué d’attributs

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

Conditions de validation : À déterminer à partir des commentaires du secteur.

ExtensionType

L’élément ExtensionType est une séquence de n’importe quel type de sous-élément et est utilisé pour les informations propriétaires provenant d’applications non-Microsoft.

Conditions de validation : Cet élément est facultatif. Il peut y avoir un maximum de 1 000 sous-éléments d’extension.

NonNegativeXYZType

L’élément NonNegativeXYZType est composé de trois éléments à virgule flottante IEEE à précision unique nommés « X », « Y » et « Z ». Ces valeurs sont limitées aux valeurs de mesure des profils DMP. Ces mesures peuvent être des valeurs réfléchissantes absolues (non relatives) CIEXYZ 1931 ou absolues (non relatives) des valeurs directes (transmissives) CIEXYZ 1931 en candelas par mètre d’unités au carré.

Conditions de validation : Seules les valeurs réelles sont valides et les valeurs de mesure CIEXYZ négatives ne sont pas valides. Comme il s’agit de valeurs absolues, les valeurs peuvent être supérieures à 1,0f. Une limite raisonnable pour toute valeur « X », « Y » ou « Z . » est arbitrairement définie sur 10000.0f.

XYZType

L’élément XYZType est composé de trois valeurs à virgule flottante IEEE simple précision : « X », « Y » et « Z ».

Algorithmes de base CDMP

Base de référence du modèle d’appareil CRT

Pour comprendre ce modèle, vous devez prendre en compte à la fois le processus de caractérisation et la modélisation de l’appareil. Dans le processus de caractérisation, les mesures XYZ sont d’abord effectuées sur les couleurs obtenues en remplissant la mémoire tampon d’affichage d’un dispositif d’affichage CRT. Les exemples de valeurs suivants génèrent des données correctes pour le modèle d’appareil CRT de base :

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

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

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

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

Les incréments autres que 15 et les incréments non linéaires peuvent également être utilisés. Chaque rampe rouge, verte, bleue et neutre doit contenir au moins trois échantillons, mais il est recommandé de fournir d’autres échantillons. Vous devez fournir des échantillons pour le rouge pur, le vert, le bleu, le noir et le blanc. Il n’est pas nécessaire d’espacer uniformément les échantillons.

Le processus de construction de la matrice tristimulus se compose de deux étapes. Tout d’abord, estimez la valeur xyz du point noir, ou la torche. Cette étape est largement basée sur le travail de Berns[3] avec une fonction d’objectif légèrement modifiée pour l’optimisation non linéaire. Ensuite, calculez la matrice tristimulus en fonction du résultat de l’étape 1 et également d’un calcul de moyenne sur toutes les mesures par canal, et pas seulement sur celle du nombre numérique maximal.

Chacune de ces étapes contient des procédures détaillées. Le point de départ est les rampes (17 étapes dans notre exemple) pour chacun des canaux R, G et B. Lorsque les mesures XYZ sont tracées sur le plan de chromaticité xy , une situation typique est illustrée à la figure 1. L’étape 1 consiste à résoudre un problème d’optimisation non linéaire pour trouver le point noir « le mieux adapté » qui minimisera la dérive de la chromaticité lorsque l’on traverse les canaux R, G et B. Sur la base de Berns[3], nous recherchons ( XK,YK,ZK ) qui réduit la fonction d’objectif suivante :

Affiche la fonction objective où Sr, Sg et Sb sont l’ensemble de points de données sur les canaux R, G et B.

SR, SG et SB sont l’ensemble de points de données correspondant aux points sur les canaux R, G et B. Pour tout ensemble S, définissez :

Affiche une formule permettant de définir n’importe quel ensemble S.

Dans le précédent, | S | est la cardinalité de S, c’est-à-dire le nombre de points dans l’ensemble S. Montre une formule pour la chromaticité d’un point. est les coordonnées de chromaticité du point Montre une formaule pour un point. , Montre donc une formule pour la moyenne ou le centre de masse., est la moyenne, ou centre de masse, de tous les points de l’ensemble S dans le plan de chromaticité. Ainsi, Montre une formule pour la somme d’un deuxième moment de points. est la somme des deuxièmes moments des points sur le centre de la masse et est une mesure de la façon dont les points sont répartis à ce sujet. Enfin, montre une formule pour la mesure totale de la répartition de trois clusters de points. Est une mesure totale de la façon dont les trois clusters de points sont répartis sur leurs centres de masse respectifs.

Dans le calcul de Affiche une formule de f(X,Y,Z; Xk, Yk, Zk). , si Affiche une formule pour X. , le calcul est ignoré et la cardinalité de S est ajustée en conséquence.

Malgré la complexité apparente de la fonction objective, il s’agit d’une somme des carrés de nombreuses fonctions différentiables dans XK,YK ZK (17 points 2xy -composants 3 canaux = 102, dans l’exemple) et, par conséquent, est accessible aux techniques de moindres carrés non linéaires standard, telles que l’algorithme Levenberg-Marquardt, qui est l’algorithme utilisé dans WCS. Notez que la fonction d’objectif précédente est différente de celle suggérée à Berns[3] en ce que cette dernière fonction mesure la variance des distances par rapport au centre de la masse, de sorte que la variance est égale à zéro lorsque les points sont équidistants par rapport au centre de la masse, même s’ils peuvent s’étendre un peu à ce sujet. Dans l’exemple, la dispersion des points est directement liée à l’aide des deuxièmes moments.

Comme pour tout algorithme itératif pour le problème des moindres carrés non linéaires, Levenberg-Marquardt nécessite une estimation initiale. Il y a deux candidats évidents. L’un est (0, 0, 0); l’autre est le point noir mesuré. Pour l’objet CTE, le point noir mesuré est d’abord utilisé comme estimation initiale. Si un maximum de 100 itérations est dépassé sans atteindre le seuil d’une distance moyenne de 0,001 de chaque point à partir de son centre de masse (ce qui correspond à une valeur de seuil de (0,001) 17 3 = 0,000051 pour la fonction objective), une autre série d’itérations avec la estimation initiale de (0, 0, 0) est effectuée. L’estimation résultante du point noir est XYZ comparée à la meilleure estimation de la série précédente d’itérations (avec le point noir mesuré comme estimation initiale). Utilisez l’estimation qui donne la plus petite valeur pour la fonction objective. Le choix de 100 itérations et la distance d’erreur de 0,001 ont été sélectionnés de manière empirique. Dans les versions ultérieures, il peut être raisonnable de paramétrer la distance d’erreur.

Le résultat de l’étape 1 est le point noir estimé ( XK,YK,ZK ). L’étape 2 consiste à déterminer la matrice tristimulus en faisant la moyenne de la chromaticité des points dans les trois clusters obtenus à l’étape 1. Pour les CRT, cette opération est effectuée principalement pour réduire les effets des erreurs de mesure. Les points utilisés pour la moyenne de la chromaticité doivent être les mêmes points que ceux utilisés dans l’optimisation à l’étape 1. En d’autres termes, si le premier point (nombre numérique 15, dans l’exemple) dans chaque rampe est ignoré dans l’étape d’optimisation, la même chose doit être effectuée dans la moyenne. Si Affiche des formules de chromaticité moyenne pour les coordonnées dans les canaux rouge et vert. , et Affiche une formule de chromaticité moyenne pour les coordonnées dans le canal bleu. Sont les coordonnées de chromaticité moyenne des canaux rouge, vert et bleu, la procédure suivante détermine la matrice tristimulus. Tout d’abord, résolvez le système linéaire 3?3 :

Affiche la première partie de la procédure pour résoudre un système linéaire 3?3.

Affiche la deuxième partie du système linéaire 3?3. Affiche la valeur t indice b à la fin de la deuxième partie du système linéaire 3?3.

XW,YW,ZW

Affiche la dernière partie de la procédure pour résoudre un système linéaire 3?3.

Une fois la matrice tristimulus déterminée, la détermination des courbes de tonalité suit l’approche standard. Pour les affichages CRT, les canaux individuels sont supposés suivre le modèle « GOG » :

Affiche la formule du modèle « G O G ».

kg est le « gain », 1 -kg est le « décalage », et ? est le « gamma ». La matrice inverse de la matrice tristimulus est appliquée aux données XYZ des neutres pour obtenir les données RVB linéaires, qui sont ensuite corrélées avec les valeurs RVB numériques à l’aide de la régression non linéaire sur le modèle GOG. Ces caractéristiques ne doivent pas être les mêmes pour les canaux R, G et B, et ne sont généralement pas les mêmes.

Berns[1] : Berns, Billmeyer and Saltzman’s Principles of Color Technology, 3 rd Ed. John Wiley & Sons (2000).

Berns[2] : Berns et Katoh, The digital to radiometric transfer function for computer controlled CRT displays, CIE Expert Symposium '97 Colour Standards for Imaging Technology, novembre 1997.

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

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

Katoh[1]: Katoh, Deguchi et Berns, Une caractérisation précise de la proposition de moniteur CRT (II) pour une extension de la méthode CIE et sa vérification, Opt. Rev. 8: 397-408 (2001)

Base de référence du modèle d’appareil LCD

La base de référence du modèle d’appareil LCD est similaire à la base de référence du modèle d’appareil CRT. Cette section explique en quoi la modélisation LCD diffère de la modélisation CRT.

Une différence réside dans le fait que vous ne pouvez pas supposer que les affichages LCD suivent le modèle GOG utilisé pour les CRT, et que les courbes de tonalité sont obtenues par interpolation de données mesurées. Pour cette raison, l’axe neutre de l’appareil doit être échantillonné plus fréquemment.

Voici quelques exemples de valeurs typiques qui peuvent générer de bonnes données pour la base de référence du modèle d’appareil LCD :

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

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

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

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

Le processus de moyenne des chromatiques de couleur mesurées pour obtenir les chromaticités des appareils primaires est plus critique pour les LCDs que pour les CRT. Lorsque les mesures XYZ sont tracées sur le plan de chromaticité xy , une situation typique est illustrée dans la figure 1. Notez comment la chromaticité dérive vers le point noir. Cela est dû au fait que tous les LCD ont une certaine quantité de fuite de lumière.

Diagramme montrant un graphique de la chromaticité à l’aide de données brutes sans correction.

Figure 1 : Diagramme de chromaticité utilisant des données brutes sans correction

Lorsque cette valeur est soustraite des mesures XYZ brutes, une situation typique est représentée à la figure 2. Les points sont maintenant regroupés autour de trois centres, bien qu’ils ne tombent pas de la même manière sur eux. Le processus de moyenne décrit pour les CRT améliore considérablement les résultats pour les LCD.

Diagramme montrant un graphique de la chromaticité à l’aide de données brutes avec un point noir ajusté.

Figure 2 : Diagramme de chromaticité utilisant des données avec un point noir ajusté

Base de référence du modèle d’appareil de capture RVB

Le modèle d’appareil de capture RVB de base est une sous-classe de la classe IDeviceModel. Dans la caractérisation colorimétrique des appareils de capture de couleurs, tels que les scanneurs et les appareils photo numériques, l’approche suivante est utilisée. Une cible composée de correctifs de couleur avec des valeurs CIEXYZ connues est capturée à l’aide de l’appareil de capture. Le résultat de la capture est une image bitmap RVB dans laquelle la couleur de chaque correctif est encodée dans une valeur RVB. Ces valeurs RVB d’appareil sont spécifiques à un appareil de capture particulier. L’objectif de la caractérisation colorimétrique est d’établir une relation empirique entre les valeurs RVB de l’appareil et les valeurs CIEXYZ, ou une transformation mathématique de RVB en XYZ qui modélise aussi précisément que possible le comportement de l’appareil de capture.

Une telle transformation mathématique peut être modélisée raisonnablement par des polynômes de faible degré. Cette procédure est détaillée dans la littérature, par exemple Kang[92], Kang[97]. Dans Kang[97], une approche est signalée qui utilise un ensemble de trois polynomials avec 3, 6, 8, 9, 11, 14 ou 20 termes dans les variables R, G et B, tandis que les trois polynomials régressent respectivement dans les composants X, Y et Z de l’espace CIEXYZ. Pour le polynomial à 20 termes, la forme est la suivante :

Affiche le polynomial à 20 termes.

Il existe des expressions similaires pour Y et Z. La technique mathématique permettant d’ajuster les polynômes s’inscrit dans la « régression linéaire multivariée » et est décrite dans n’importe quel texte élémentaire dans Statistiques.

Cette méthode de régression linéaire souffre de ne pas réduire la fonction objective « droite ». Par conception, la régression linéaire trouve la solution des moindres carrés, ce qui implique que les coefficients obtenus réduisent la somme totale des carrés d’erreurs dans l’espace sous-jacent, ou, équivalent, la somme des carrés des distances euclidiennes. Dans la pratique, vous souhaitez réduire la somme des carrés de ? Es, où ? E est l’une des normes acceptées telles que CIE94. La réduction de cette fonction objective est un problème de régression non linéaire.

Dans le nouveau moteur, Lab to XYZ est l’espace de couleur CIE qui est régressé dans, et le polynomial cubique à 20 termes est utilisé comme modèle pour l’appareil de capture, ou coefficients ls,as,bs de sorte que les polynômes suivants réduisent la somme des carrés de ? E CIE94 s.

Affiche un ensemble de formules polynomiales.

La solution ( li, ai, bi ) dans l’espace numérique réel À 60 dimensions R203 doit être telle que l’erreur totale suivante soit réduite :

Affiche l’erreur totale à réduire.

où la somme est effectuée via toutes les paires de points de données (Ri,Gi,Bi; Li,ui,vi ) dans le jeu de données échantillonné plus des points de contrôle supplémentaires à détailler dans ce qui suit. Il s’agit d’un problème de régression non linéaire, car les paramètres ? i, ai, * i* entrent dans la fonction objective d’une manière non linéaire (non quadratique).

Parce que la fonction objective ? est une fonction non linéaire (et non quadradratique) des paramètres ? i, ai et * i*, vous devez recourir à des techniques itératives pour résoudre le problème d’optimisation. Étant donné que la forme de la fonction objective est une somme de carrés, une technique d’optimisation standard appelée algorithme Levenberg-Marquardt est utilisée. Il est considéré comme la méthode de choix pour les problèmes de moindres carrés non linéaires. Pour les algorithmes itératifs tels que Levenberg-Marquardt, vous devez fournir une estimation initiale. Une bonne estimation initiale est généralement essentielle pour trouver la valeur minimale correcte. Dans ce cas, un bon candidat pour la supposition initiale est la solution du problème de régression linéaire. Tout d’abord, réduisez la somme du carré des distances euclidiennes dans l’espace lab, en définissant une fonction d’objectif quadratique :

Affiche une fonction d’objectif quadratique définie.

La solution mathématique à ce problème de « moindres carrés linéaires » est bien connue. Parce que ? i apparaît uniquement dans la modélisation L , uni n’apparaît que dans la modélisation u et * i* n’apparaît que dans la modélisation v ; le problème d’optimisation peut être décomposé en trois sous-problèmes : un pour L, un pour u et un pour v. Considérez les équations L . (Les équations uet v suivent exactement le même argument.) Le problème de la minimisation de la somme des carrés d’erreurs en L peut être considéré comme la résolution de l’équation matricielle suivante dans le sens des moindres carrés :

Affiche une équation matricielle pour L.

N correspond au nombre total de points de données (points échantillonnées d’origine plus points de contrôle créés de la manière décrite ci-dessous). En règle générale, N étant beaucoup plus grand que 20, l’équation précédente est sur-déterminée, ce qui nécessite une solution de moindres carrés. Une solution de formulaire fermé pour ? est disponible :

Affiche une solution de formulaire fermé.

Dans la pratique, l’évaluation directe à l’aide de la solution de forme fermée n’est pas utilisée, car elle présente de mauvaises propriétés numériques. Au lieu de cela, une sorte d’algorithme de factorisation matricielle est appliquée à la matrice de coefficients qui réduit le système d’équations à une forme canonique. Dans l’implémentation actuelle, la décomposition de valeur unique (SVD) est appliquée à la matrice R , puis le système décomposé résultant est résolu.

La solution au problème de régression linéaire, désignée par Affiche la solution au problème de régression linéaire. , est utilisée comme point de départ de l’algorithme de Levenberg-Marquardt. Dans cet algorithme, une étape d’essai est calculée qui doit rapprocher le point de la solution optimale. L’étape d’essai répond à un ensemble d’équations linéaires dépendant de la valeur fonctionnelle et des valeurs des dérivés au point actuel. Pour cette raison, les dérivés de la fonction objective ? en ce qui concerne les paramètres ? i, ii sont obligatoires entrées dans l’algorithme Levenberg-Marquardt. Bien qu’il existe 60 paramètres, il existe un raccourci qui vous permet de calculer beaucoup moins. Par la règle de chaîne du calcul,

Affiche une équation qui autorise un raccourci à l’aide de la règle de chaîne de Calculus.

j = 1, 2, , 20, Li,ui,vi sont la valeur CIELAB du i ième point d’exemple, et Rij est l’entrée (i,j )th de la matrice R définie ci-dessus. Ainsi, au lieu de calculer des dérivés pour 60 paramètres, vous pouvez calculer des dérivés pour L, a et b à l’aide de la différenciation numérique vers l’avant.

Il est également nécessaire de configurer un critère d’arrêt pour les algorithmes itératifs. Dans l’implémentation actuelle, les itérations sont terminées si le carré MOYEN DECIE94 est inférieur à 1 ou si le nombre d’itérations effectuées a dépassé 10. Le nombre 10 provient de l’expérience pratique selon laquelle si les premières itérations ne réduisent pas considérablement l’erreur, d’autres itérations n’aideraient pas grand-chose autre que le déplacement du point d’une manière oscillante, c’est-à-dire que l’algorithme risque de ne pas converger. Même dans le cas où l’algorithme diverge, nous pouvons être sûrs que le DECIE94 n’est pas pire que ce que nous avons commencé, c’est-à-dire avec les paramètres obtenus à partir de la régression linéaire.

Même avec la méthode précédente de régression non linéaire, il existe plusieurs problèmes avec l’ajustement. Un problème est que les polynômes ont tendance à dépasser ou à sous-dépasser les points de données. Des maxima et des minima locaux artificiels peuvent être introduits dans le processus d’ajustement. Cela peut être contrecarré en utilisant des polynômes de faible degré, ce qui est la raison pour laquelle vous ne devez pas utiliser plus de trois degrés. Un aspect plus sérieux du dépassement ou du dépassement est que, si un polynomial peut prendre théoriquement n’importe quelle valeur réelle, l’espace qu’il tente de modéliser comporte généralement des contraintes physiques et des contraintes pratiques. CIEXYZ doit avoir tous les éléments X, Y, Z non négatifs, ce qui est une contrainte physique. Dans la pratique, ils ne prennent que des valeurs de la magnitude de centaines, et non des milliers ou plus. De même, CIELAB ou CIELUV a ses propres contraintes physiques et pratiques. Lorsque l’espace RVB est suffisamment rempli de points d’échantillon, le problème de dépassement ou de sous-ramification n’est pas sérieux. Toutefois, les points RVB capturés de l’appareil de capture ne remplissent généralement pas uniformément l’espace RVB. Les points peuvent se remplir uniquement à l’intérieur des 80 % du cube RVB, ou pire, ils peuvent résider dans un collecteur de dimensions inférieures. Dans ce cas, les polynômes régressés peuvent faire un mauvais travail pour extrapoler les valeurs au-delà des points de données, renvoyant parfois des prédictions irréalistes. Vous souhaitez un modèle qui retourne toujours des valeurs raisonnablement réalistes. Cela nécessite une méthode qui peut contrôler efficacement le comportement des limites des polynômes de régression en imposant des coûts supplémentaires aux polynômes qui se comportent de manière erratique près de la limite du cube RVB. Une autre mesure pour s’assurer que les polynômes retournent toujours des valeurs réalistes est appliquée en détournant la sortie à l’intérieur du locus spectral CIE.

C’est à ce stade que la modélisation du scanneur et la modélisation de caméra diffèrent les unes des autres. Le modèle de caméra est censé extrapoler vers des régions au-delà des points échantillonné, y compris les « surbrillances spéculaires », la même extrapolation n’est pas requise pour le modèle scanneur. On s’attend à ce que la cible du scanneur couvre une caractérisation similaire aux matériaux imprimés à analyser. Le modèle de scanneur doit toujours être robuste dans le sens où il ne doit pas retourner des valeurs irréalistes, mais l’extrapolation bien au-delà de la cible de caractérisation n’est pas nécessaire. Pour garantir la robustesse, le polynôme L-ci-dessus est coupé à 100, c’est-à-dire que le modèle polynomial est forcé de ne pas extrapoler au-delà de « Dmin » de la cible du scanneur.

Le modèle de caméra étant censé extrapoler en surbrillances spéculaires, le découpage à 100 n’est pas souhaitable. Au lieu de cela, l’algorithme suivant est utilisé.

Des points de contrôle artificiels sont introduits pour contrôler le comportement des polynômes dans les régions où l’échantillonnage est insuffisant. En plaçant stratégiquement ces points de contrôle avec les valeurs appropriées, ils servent à « tirer » les polynômes dans la direction requise. Dans l’implémentation actuelle, huit points de contrôle correspondant aux coins du cube RVB sont utilisés. Si les valeurs de l’appareil sont normalisées en unity, ces points sont les suivants :

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

Sauf pour le R =G B = blanc = 1, qui est associé à une valeur CIELAB de L = 100, u =v = 0, l’algorithme d’extrapolation suivant est utilisé pour déterminer la valeur CIELAB appropriée à associer. En règle générale, pour un donné (R,G,B ), un poids est associé à chacun des (Ri,Gi,Bi ) dans le jeu de données échantillonné. Il y a deux objectifs à attribuer le poids. Tout d’abord, le poids est inversement proportionnel à la distance entre (R,G,B ) et (Ri,Gi,Bi ). Deuxièmement, vous souhaitez ignorer ou affecter un poids 0 à des points dont la teinte est différente de celle du point donné (R,G,B ). Pour prendre en compte la teinte, considérez les points qui se trouvent à l’intérieur d’un cône dont le sommet est à (0, 0, 0), dont l’axe coïncide avec la ligne joignant (0, 0, 0) à (R,G,B), et dont l’angle semi-vertical ? satisfait cos ? = 0,9. Pour obtenir une illustration de ce cône, voir la figure 3.

Diagramme montrant la forme du quartier.

Figure 3 : Filtrage des points d’échantillon par angle et distance. La forme du quartier représenté est uniquement à des fins d’illustration. La forme réelle dépend de la distance utilisée ; il s’agit d’un quartier en forme de diamant si la norme 1 est utilisée.

Dans ce cône, un deuxième filtrage est effectué en fonction de la distance RVB, qui utilise la norme 1, définie par

Affiche la formule du deuxième filtrage dans le cône.

Avec le cône actuel, la recherche initiale concerne les points qui se trouvent à une distance de 0,1 de (R,G,B ). Si aucun point n’est trouvé dans ce rayon, le rayon est augmenté de 0,1 et la recherche est redémarrée. Si la ronde suivante n’a aucun point non plus, le rayon est augmenté de 0,1. Ce processus se poursuit jusqu’à ce que le rayon dépasse MaxDist/5, où MaxDist = 3, dans le cas d’une norme 1. Si aucun point n’est trouvé, le cône est agrandi en diminuant le cos ? de 0,05, c’est-à-dire augmenter l’angle ? et le redémarrage de l’ensemble du processus avec un rayon croissant. Ce processus se poursuit jusqu’à ce qu’un ensemble de points non vide soit trouvé, ou cos ? atteint 0, c’est-à-dire que le cône s’est ouvert pour devenir un plan. À ce stade, la recherche est redémarrée en augmentant le rayon, sauf que la recherche continue jusqu’à ce que le rayon atteigne MaxDist. Cela garantit que dans le pire des scénarios, un ensemble de points non vides sera trouvé. L’algorithme est résumé dans le diagramme de flux de la figure 4.

Diagramme montrant le flux de l’algorithme.

Figure 4 : Diagramme de flux pour déterminer l’ensemble S de points d’exemple utilisés dans l’extrapolation d’une valeur RVB d’entrée

En supposant que le processus précédent génère un ensemble non vide S de points (Ri,Gi,Bi ) et correspondant (Li,ai,bi i ), alors pour chaque point de ce type, un poids wi est attribué, donné par

Affiche la formule d’un poids pour chaque point.

Enfin, l’extrapolant est défini par

Affiche la définition de l’extrapolant.

Les équations précédentes constituent une instance des « méthodes pondérées à distance inverse », communément appelées méthodes Shepard. En exécutant chacun des huit points d’eq (6) à l’algorithme, huit points de contrôle sont obtenus, chacun avec les valeurs R,G,B et L,a,b, qui sont placés dans le pool avec les exemples de données d’origine.

Pour vous assurer que le modèle produit toujours des valeurs de couleur valides et pour assurer l’intégrité et la stabilité du système dans l’ensemble du pipeline de traitement des couleurs, vous devez effectuer un découpage final vers la sortie du modèle polynomial. La gamut visuelle CIE est décrite par le composant achromatique (Y ou L ) et le composant chromatique (xy ou a’b', qui sont liés à l’espace XYZ par une transformation projective). Dans l’implémentation actuelle, la chromaticité a’b' est utilisée, car elle est directement liée à l’espace CIELUV. Pour toute valeur CIELAB , commencez par couper L sur une valeur non négative :

Affiche le découpage de L en une valeur non négative.

Pour permettre l’extrapolation pour les surbrillances spéculaires, L n’est pas clippé à 100, la limite supérieure « conventionnelle » pour L dans l’espace lab.

Ensuite, si L = 0, a et b sont coupés de telle sorte que a*= b =* 0. Si L ? 0, calculer

Affiche la formule si L=0.

Il s’agit des composants d’un vecteur dans le diagramme a’b' du point blanc (u?',v?' ) à la couleur en question. Définissez le locus spectral CIE comme la coque convexe de tous les points (a',b' ), paramétrés par la longueur d’onde ?:

Affiche la formule de la longueur d’onde.

Affiche les fonctions pour la correspondance des couleurs CIE. Sont les fonctions de correspondance des couleurs CIE pour l’observateur à 2 degrés. Si le vecteur se trouve en dehors du locus CIE, la couleur est coupée au point sur le locus CIE qui est l’intersection du locus et de la ligne définie par le vecteur. Voir figure 5. Si le découpage s’est produit, la valeur a et b est reconstruite en soustrayant d’abord a' et b?' du clippé a' et b', puis en multipliant par 13 L.

Diagramme montrant le graphique de l’algorithme de découpage.

Figure 5 : algorithme de découpage pour les valeurs Lab qui se trouvent en dehors de la gamut visuelle CIE

Dans l’implémentation actuelle, le locus spectral CIE dans le plan a’b' est représenté par une courbe linéaire au niveau de la pièce avec 35 segments (correspondant à une longueur d’onde comprise entre 360 nm et 700 nm inclus). En triant les segments de ligne afin que leurs angles sous-attachés au point blanc soient croissants, ce qui équivaut à des longueurs d’onde décroissantes, le segment de ligne qui croise le rayon formé par le vecteur ci-dessus peut être trouvé par une simple recherche binaire.

Base de référence du modèle d’appareil d’imprimante RVB

Une caractérisation d’appareil d’une imprimante RVB consiste à construire un modèle empirique de l’appareil qui prédit la couleur CIELUV indépendante de l’appareil pour une valeur RVB donnée

Il existe deux façons de construire le modèle empirique. L’une consiste à utiliser les données d’appareil pour une imprimante RVB, et l’autre consiste à utiliser des données de paramètres analytiques. Dans la première, les données de mesure fournies par un utilisateur pour un périphérique d’imprimante RVB sont utilisées pour construire une table de recherche 3D (LUT). Les données de mesure se composent de valeurs XYZ pour les correctifs RVB échantillonnées uniformément. Les tailles d’échantillonnage standard sont de 9 ou 17 pour chaque composant. Chaque patch est mesuré avec un colorimètre ou un spectrophotomètre dans l’espace CIEXYZ. La valeur XYZ d’un correctif est ensuite convertie en valeur CIELUV, formant un LUT 3D. Dans le modèle d’appareil, la méthode d’interpolation tétraédrique de Sakamoto est appliquée au LUT 3D afin de prédire les données CIELUV pour une donnée RVB. (Conférer le 4275413 us Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. Les deux brevets mentionnés ont expiré.). Les données de paramètre analytique transmises dans la deuxième méthode sont simplement un LUT qui a été créé précédemment. En règle générale, ce LUT a été créé à l’aide de la première méthode, bien qu’il puisse être construit à la main.

Dans la gestion actuelle des couleurs, la carte source est définie comme la carte qui va de l’espace RVB à un espace de couleurs CIEXYZ indépendant de l’appareil. La carte de destination est définie comme la carte qui va de l’espace colorimétrique CIEXYZ indépendant de l’appareil à l’espace RVB. Il s’agit de l’inverse de la carte source.

Le modèle empirique est directement utilisé dans la carte source. Il mappe d’abord une donnée RVB en données CIELUV, qui sont converties en données XYZ. Dans la carte de destination, les données CIEXYZ indépendantes de l’appareil sont d’abord converties en données CIELUV. Ensuite, le modèle empirique et la méthode classique Newton-Raphson sont utilisés pour prédire les meilleures données RVB pour les données CIELUV. Les détails sur la conversion de données CieLUV en données RVB sont les suivants :

Après avoir généré un LUT 3D de RVB vers CieLUV, la carte de RVB à LUV est créée à l’aide de l’interpolation tétraédrique sur RVB. Cette carte est indiquée par les équations suivantes :

Affiche les équations de la carte de R G B à L U V.

L’inversion de la carte consiste à résoudre, pour toute couleur Affiche L U V. , le système suivant d’équations non linéaires :

Affiche les équations non linéaires pour le lolving de n’importe quelle couleur L U V.

Une équation non linéaire basée sur la méthode classique Newton-Raphson est utilisée dans le nouveau CTE. Une estimation initiale, ou a priori voir, s précédent -(R 0, G 0, B 0 ) est obtenue en recherchant dans une « matrice de départ » composée d’une grille 8x8x8 uniforme de paires précalcalcées (RVB,Luv). Le Luv RVB correspondant le plus proche de L*u*v* est choisi. Chaque point de la matrice initiale correspond au centre d’une cellule afin que les itérations ne commencent pas par un point sur la face limite du cube RVB. En d’autres termes, le RVB des graines est défini par : STEP = 1/8 s ijk = (STEP/2 + (i-1) STEP, STEP/2+(j-1)STEP, STEP/2+(k-1)STEP) avec i,j,k = 1...8 À la iième étape de Newton-Raphson, l’estimation suivante Montre les variables pour l’estimation suivante est obtenue par la formule :

Affiche la formule de l’estimation.

L’itération s’arrête lorsque l’erreur (distance dans l’espace CIELUV) est inférieure à un niveau de tolérance prédéfinis (0,1 dans le CTE), ou lorsque le nombre d’itérations a dépassé le nombre maximal autorisé d’itérations (10 dans le CTE). Les valeurs de la tolérance et du nombre d’itérations ont été déterminées de manière empirique comme étant efficaces. Dans les versions ultérieures, la valeur de tolérance peut être modifiée.

La matrice jacobienne est calculée à l’aide de la différence vers l’avant, sauf à un point limite (un ou plusieurs des R, G, B est 1) où la différence vers l’arrière est utilisée à la place. Au lieu de calculer l’inverse de la matrice jacobienne, le système linéaire est résolu directement à l’aide de Gauss-Jordan'élimination avec pivotation complète.

À la fin des itérations, la convergence peut toujours ne pas être obtenue, car Newton-Raphson est un algorithme « local », c’est-à-dire qu’il ne fonctionne bien que si vous commencez par une estimation initiale qui est proche de la vraie solution. Si, à la fin des itérations Newton-Raphson, la convergence au sein de la tolérance d’erreur prédéfinie n’a pas été atteinte, les itérations sont redémarrées avec un nouvel ensemble de graines, défini comme suit.

Par exemple, la meilleure solution obtenue jusqu’à présent est (r, g, b). De cette solution, N graines a posteriori sont dérivées, où N = 4. Intuitivement, la solution est déplacée « vers le centre » dans une taille d’étape qui dépend de N. Voir la figure 6.

Diagramme montrant les directions de perturbation de la solution.

Figure 6 : Le sens de perturbation de la solution dépend de l’octant dans lequel elle se trouve.

En d’autres termes, si r > 0,5, la valeur sur le canal R est réduite, sinon la valeur est augmentée. Il existe une logique similaire pour les canaux G et B. Les définitions précises sont les suivantes :

PERTURBATION = 0,5/(N+1)

Dir(r) = -1 si r > 0,5 ; +1 sinon. De même pour Dir(g) et Dir(b)

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

Essayez la première ???? et s’il donne une nouvelle solution dans les limites de tolérance d’erreur, vous pouvez arrêter. Sinon, essayez la deuxième ???? et ainsi de suite jusqu’à ce que le Nth s ????.

Le schéma de l’algorithme entier est illustré à la figure 7.

Diagramme montrant le flux d’inversion du modèle d’appareil.

Figure 7 : Schémas de l’inversion du modèle d’appareil

Base de référence du modèle d’appareil virtuel RVB

Ce modèle d’appareil (DM) est un algorithme de reproduction de matrice/tonalité simple. La matrice est dérivée du point blanc et des primaires à l’aide d’algorithmes de science des couleurs standard. La courbe de reproduction tonalité est dérivée des paramètres de mesure selon les descriptions ICC de CurveType et ParametricType (ou inversées selon les besoins). Les détails des algorithmes internes seront fournis après une validation supplémentaire des problèmes de plage dynamique élevée.

Le modèle d’appareil virtuel RVB est une courbe de reproduction de matrice/tonalité idéalisée RVB similaire à la conception de profil basé sur trois composants de matrice ICC. Les paramètres de « mesure virtuelle » du DM incluent une valeur de point blanc (CIEXYZ absolu), des valeurs primaires RVB (CIEXYZ absolu) et une courbe de reproduction de tonalité basée sur le paramètre ICC ParametricCurveType et CurveType dans une mise en forme XML cohérente avec les schémas DMP.

L’encodage du type de fonction ICC parametricCurveType et la prise en charge correspondante dans IRGBVirtualDeviceModelBase sont indiqués dans le tableau suivant.

Type de fonction Paramètres Type Notes
Affiche la fonction « GammaType ».
g
GammaType
Implémentation courante
Affiche la fonction « GammaOffsetGainType ».
ga b
GammaOffsetGainType
CIE 122-1966
Affiche la fonction « GammaOffsetGainOffsetType ».
ga b c
GammaOffsetGainOffsetType
IEC 61966-3
Affiche la fonction « GammaOffsetGainGainType ».
ga b c d
GammaOffsetGainGainType
IEC 61966-2.1
(sRGB)
Affiche une fonction pour les paramètres « g a b c d e f ».
ga b c d e f
N/A
Non pris en charge dans WCS

La courbe tonalité des appareils virtuels RVB est appliquée dans DeviceToColorimetric entre les données d’entrée, pDeviceColors et la matrice multipliée. Pour ColorimetricToDevice, une méthode doit être utilisée pour inverser la courbe de tonalité. Dans l’implémentation de la base de référence, cela s’effectue par interpolation directe dans la même courbe de tonalité que celle utilisée pour DeviceToColorimetric.

Les courbes doivent être spécifiées dans les profils sous forme de paires de nombres dans l’espace flottant. Le premier nombre représente les valeurs dans pDeviceColors. Le deuxième nombre représente la sortie de la courbe de tonalité. Toutes les valeurs de la courbe de tonalité doivent être comprises entre minColorantUsed et maxColorantUsed. Les courbes de tonalité doivent contenir au moins deux entrées : une pour minColorantUsed et une pour maxColorantUsed. Le nombre maximal d’entrées dans le ToneCurve est 2048. En général, plus il y a d’entrées dans la table, plus vous pouvez modéliser la courbure avec précision. Une interpolation linéaire au niveau de la pièce est effectuée entre les entrées.

Vous pouvez envisager d’autres méthodes d’interpolation. Si vous savez quelque chose sur le comportement sous-jacent de l’appareil, vous pouvez utiliser moins d’exemples et modéliser plus précisément avec une courbe d’ordre supérieur. Mais si vous utilisez le mauvais type de courbe, vous serez très imprécis. Sans plus d’informations, vous ne pouvez pas deviner le type de courbe. Par conséquent, utilisez l’interpolation linéaire et fournissez de nombreux points de données.

Base de référence du modèle d’appareil d’imprimante CMYK

Une caractérisation d’appareil d’une imprimante CMJN consiste à construire un modèle empirique de l’appareil qui prédit la couleur imprimée pour une valeur CMJN donnée. La caractérisation inclut également l’inversion de ce modèle afin qu’une prescription de la valeur CMJN pour une couleur donnée à imprimer puisse être donnée. Cela est généralement défini en termes de valeur CIEXYZ ou CIELAB.

En règle générale, une cible IT8.7/3 contenant des correctifs CMJK est utilisée. Les correctifs consistent à échantillonner l’espace CMJN de manière bien définie afin qu’une grille rectangulaire (avec un espacement non uniforme en C, M, Y et K) soit formée. Chaque patch est ensuite mesuré avec un colorimètre ou un spectrophotomètre. Les mesures dans les valeurs CIEXYZ forment ensuite une table de recherche (LUT), à partir de laquelle un modèle empirique de l’imprimante est généré à l’aide de la méthode d’interpolation de Sakamoto. US Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. Les deux brevets mentionnés ont expiré.

Les exigences spécifiques pour les exemples de mesure CMJN nécessaires pour qu’un profil de modèle d’appareil soit accepté comme valide par le modèle d’appareil de base de l’imprimante CMJN sont les suivantes. (L’exemple d’ensemble est le plus clairement décrit comme un ensemble d’exemples de cubes CMY, chacun associé à un niveau K spécifique.)

  • Au minimum, les cubes CMY valides doivent être fournis pour les niveaux K = 0 et K = 100.

  • Les niveaux K intermédiaires peuvent être non uniformément espadés.

  • Tout niveau K intermédiaire sans cube CMY valide est ignoré.

  • Les cubes CMY peuvent utiliser des intervalles d’échantillonnage non uniformes (espacement de grille), mais le même ensemble d’intervalles d’échantillons doit être utilisé dans toutes les dimensions C,M et Y dans le cube CMY pour un niveau K donné.

  • Chaque cube CMY de niveau K peut utiliser un nombre et un espacement différents d’intervalles d’échantillons.

  • Tous les cubes CMY doivent contenir les « coins » du cube CMY, c’est-à-dire, Échantillons CMY à [0,0,0], [0,0,100], [0,100,0], [100,0,0], [0,100,100], [100,0,100], [100,100, 0], [100,100,100].

  • Tous les niveaux de grille CMY intermédiaires doivent être entièrement échantillonné dans chaque canal. En d’autres termes, un exemple doit exister à chaque intersection de grille 3D dans le cube CMY.

  • Pour les cubes K = 0 et K = 100 cubes CMY, 2x2x2 cubes « corners-only » sont le minimum accepté comme valide.

    [REMARQUE : pour K=0 et K=100 niveaux, un cube CMY de 3x3x3 est traité comme un cube « corners-only » 2x2x2 ; le niveau intermédiaire de l’exemple est ignoré. Les cubes 4x4x4 et les cubes plus grands auront tous les exemples sur la grille utilisés.]

  • Pour les niveaux K intermédiaires, les cubes CMY 4x4x4 sont le minimum accepté comme valide.

Un profil de haute qualité utilise des grilles d’échantillonnage plus fines que le minimum requis pour la validité, généralement 9x9x9x9 ou plus. Les exemples des cibles IT8.7/3, IT8.7/4 et ECI produisent des profils de modèle d’appareil valides (DPM) pour le modèle d’appareil de base de l’imprimante CMJN. Bien que ce modèle d’appareil soit en mesure d’ignorer les exemples superflus (hors grille) dans ces cibles, il n’est pas garanti de pouvoir le faire pour d’autres cibles. Par conséquent, il est recommandé de supprimer les échantillons superflus des jeux de mesures entrant dans les profils pour ce modèle d’appareil.

L’inversion du modèle d’imprimante présente plus de difficultés. Étant donné une couleur d’entrée dans CIECAM, il est question de savoir si cette couleur se trouve dans le gamut de l’imprimante. Il existe également la question de la disposition des points dans l’espace d’apparence des couleurs. Bien que nous puissions organiser les valeurs CMJN pour qu’elles tombent sur une grille rectangulaire, comme c’est le cas dans la cible IT8.7/3, il n’en va pas de même pour les couleurs imprimées obtenues, car elles se trouvent dans l’espace d’apparence des couleurs. En général, ils sont dispersés dans l’espace d’apparence des couleurs sans motif particulier.

Il existe généralement deux approches pour résoudre le problème d’inversion des points dispersés. Une approche consiste à utiliser une subdivision géométrique de la gamme d’imprimantes à l’aide de solides 3 dimensions élémentaires, tels que les tétraèdres. Une subdivision du gamut d’imprimante dans l’espace d’apparence des couleurs peut être induite à partir de la subdivision correspondante de l’espace CMY(K), voir Hung[93], Kang[97]. Cette approche présente l’avantage de la simplicité de calcul. Dans le cas d’un tétraèdre, seuls quatre points sont utilisés dans une interpolation. D’autre part, le résultat dépend fortement de quelques points, ce qui signifie qu’une erreur de mesure aura un effet significatif sur le résultat. L’interpolant a également tendance à être moins lisse. La deuxième approche ne suppose aucune subdivision et est basée sur la technique de l’interpolation de données éparses. Un exemple classique est la technique de l’interpolation de Shepard, ou méthode pondérée inverse (voir Shepard [68]). Ici, plusieurs points entourant le point d’entrée sont choisis d’une manière ou d’une autre, chacun d’eux ayant un poids, généralement inversement proportionnel à la distance, et l’interpolant est pris comme la moyenne pondérée des points voisins. Dans cette approche, le choix des points voisins est primordial pour les performances. Bien que trop peu de points puissent rendre l’interpolant imprécis et non lisse, trop de points imposent un coût de calcul élevé, car les pondérations sont généralement des fonctions non linéaires et coûteuses à calculer.

Les deux approches décrites ci-dessus présentent des problèmes. L’approche de la subdivision dépend particulièrement du fait que les données sont relativement vides de bruit et que, généralement, l’interpolant n’est pas très lisse. L’interpolation de données éparses est plus tolérante au bruit des données et donne généralement un interpolant plus fluide, mais elle est plus coûteuse en termes de calcul.

Le nouveau CTE adopte une autre approche. L’appareil CMJK est traité comme une collection de plusieurs appareils CMY, chacun ayant une valeur spécifique de noir (K). À l’aide d’un algorithme de sélection qui prend comme paramètres légèreté et chroma, un niveau de noir est choisi. Les valeurs CMY sont obtenues par inversion de la table CMY en Luv correspondante à l’aide des méthodes Newton utilisées ailleurs par l’algorithme d’imprimante RVB.

Procédez comme suit.

  1. Imprimez la cible de caractérisation, qui est soit la cible IT8.7/3, soit une cible contenant l’échantillonnage de l’espace CMJN à intervalles réguliers ou irréguliers.
  2. Mesurez la cible à l’aide d’un spectrophotomètre et convertissez les mesures en espace CIELUV.
  3. Construisez la carte avant de CMJN à Luv.
  4. Utilisez la carte avant pour construire un ensemble de cartes CMY à Luv pour une plage de valeurs K.
  5. Pour toute valeur Luv d’entrée, la valeur CMJN correspondante est obtenue en sélectionnant l’une des cartes construites à l’étape 4 ci-dessus et en inversant à l’aide de la méthode de Newton pour obtenir un jeu de colorant CMY pour accompagner la valeur K sélectionnée.

Les étapes 1 et 2, qui sont des procédures standard, sont effectuées par un programme de profilage qui ne fait pas partie du nouveau CTE. La cible IT8.7/3 contient un échantillonnage assez détaillé de toutes les valeurs CMJN à différents niveaux de C, M, Y et K. Une cible personnalisée avec échantillonnage uniforme des canaux C, M, Y et K peut également être utilisée. Une fois la cible imprimée, un spectrophotomètre ou un colorimètre peut être utilisé pour mesurer la valeur XYZ de chaque correctif, et la valeur XYZ peut être convertie en valeur Luv à l’aide du modèle CIELUV.

L’étape 3, la construction de la carte en avant de CMYK à Luv, peut être obtenue en appliquant n’importe quelle technique d’interpolation connue, telle que la méthode tétraédrale ou multiligne, sur la grille rectangulaire dans l’espace CMJN. Dans le nouveau CTE, une interpolation tétraédrique à 4 dimensions est utilisée. Étant donné que les grilles d’échantillonnage CMY sont généralement différentes à chaque niveau de K, nous utilisons une technique de super-échantillonnage, comme indiqué ci-dessous. Pour un point CMJN donné, les niveaux K de sandwich sont d’abord déterminés en fonction de la valeur K. Ensuite, introduisez une « super-grille » à chaque niveau K qui est une union des grilles CMY sur chacun des deux niveaux K. À chaque niveau K, la valeur Luv de tout point de grille nouvellement introduit est obtenue par une interpolation tétraédrique à 3 dimensions au sein de ce niveau K. Enfin, une interpolation tétraédrique à 4 dimensions pour le point CMJK spécifique est effectuée sur cette nouvelle grille.

Diagramme montrant le suréchantillonnage.

Figure 8 : Suréchantillonnage

L’étape 4 construit un ensemble de tables de recherche CMY-to-Luv (LUT). La carte avant construite à l’étape 3 est appelée à plusieurs reprises pour rééchantillonner l’espace CMJN. L’espace de couleur CMJN est échantillonné à l’aide d’un espacement homogène de K et d’un échantillonnage différent, mais toujours uniformément espacé, de CMY.

L’étape 5 est une procédure permettant d’obtenir la valeur CMJN à l’aide des luts construits à l’étape 4 pour n’importe quel point de Luv d’entrée. La valeur appropriée de K est choisie en analysant la légèreté ainsi que le degré de couleur dans le Luv demandé. Une fois la table sélectionnée, les valeurs CMY sont obtenues à partir de la table à l’aide de la méthode de Newton (comme indiqué sous le modèle d’imprimante RVB précédemment).

L’espace CIELUV est utilisé dans le modèle d’imprimante au lieu de CIEJab, car le modèle d’appareil doit être basé uniquement sur les données colorimétriques disponibles dans le DMP. Le DMP contient des données colorimétriques pour chaque correctif mesuré, y compris le point blanc du média, de sorte qu’il est possible de convertir des données CIEXYZ en données CIELUV. Toutefois, il n’est pas possible de convertir en CIECAM02 JCh ou Jab, car il n’y a pas accès aux informations de condition d’affichage dans le DMP.

Base de référence du modèle d’appareil projecteur RVB

Remarque : De nombreux projecteurs RVB ont plusieurs modes de fonctionnement. Dans un mode, qui est souvent la valeur par défaut et peut être appelé quelque chose comme « présentation », la réponse en couleur du projecteur est optimisée pour une luminosité maximale. Toutefois, dans ce mode, le projecteur perd la capacité de reproduire des couleurs légèrement chromatiques, telles que les jaunes pâles et certaines tonalités de chair. Dans un autre mode, souvent appelé « film », « vidéo » ou « sRGB », le projecteur est optimisé pour la reproduction d’images réalistes et de scènes naturelles. Dans ce mode, la luminosité maximale est échangée pour améliorer la qualité globale de la reproduction des couleurs. Pour obtenir une reproduction satisfaisante des couleurs avec des projecteurs RVB, il est nécessaire de placer le projecteur dans un mode où une gamme de couleurs lisse peut être reproduite.

Diagramme montrant un modèle d’appareil DL P.

Figure 9 : modèle d’appareil DLP

Une valeur RVB entrante passe par deux voies de calcul. La première est le modèle matriciel, qui aboutit à une valeur XYZ. Cette opération est immédiatement suivie de la conversion de XYZ en Luv. La deuxième est l’interpolation LUT non uniforme utilisant l’interpolation tétraédrale. La sortie de l’interpolation est déjà dans l’espace Luv par construction. Les deux sorties sont ajoutées pour obtenir la valeur Luv prédite. Il est finalement converti en XYZ, qui est la sortie attendue du modèle colorimétrique pour l’appareil DLP.

Étant donné que les projecteurs sont des appareils d’affichage, ils prennent également en charge l’inversion du modèle, c’est-à-dire la transformation de XYZ en RVB. Étant donné que le modèle d’appareil transforme l’espace RVB en espace XYZ, qui sont tous deux tridimensionnels, l’inversion équivaut à résoudre trois équations non linéaires dans trois inconnues. Cela peut être effectué par des techniques de résolution d’équations standard, telles que Newton-Raphson. Toutefois, il est préférable de convertir d’abord XYZ en Luv, puis d’inverser la transformation Luv en RVB, car l’espace Luv est plus linéaire perceptulement que l’espace XYZ.

Base de référence du modèle d’appareil ICC

L’interopérabilité du flux de travail ICC CITE est activée en créant un profil de modèle d’appareil de référence d’appareil ICC spécial qui stocke l’objet de profil et crée une transformation ICC à l’aide d’un profil XYZ sans opération. Cette transformation est ensuite utilisée pour traduire entre les couleurs de l’appareil et CIEXYZ.

Diagramme montrant l’interopérabilité du flux de travail C I T E I I C C.

Figure 10 : Interopérabilité des flux de travail ICC CITE

Concepts de base de la gestion des couleurs

Schémas et algorithmes du système de couleurs Windows