Compartir a través de


Algoritmos y esquema de perfil del modelo de dispositivo de color de WCS

En este tema se proporciona información sobre el esquema de perfil de modelo de dispositivo de color WCS y sus algoritmos asociados.

Este tema contiene las siguientes secciones:

Información general

Este esquema se usa para especificar el contenido de un perfil de modelo de dispositivo de color (CDMP). A continuación se describen los algoritmos de línea base asociados.

El esquema básico del perfil de modelo de dispositivo (DMP) consta de los datos de medición de muestreo.

El componente de muestreo del esquema XML DMP proporciona compatibilidad con destinos básicos de medición de color, centrándose en destinos estándar comunes y destinos optimizados para los modelos de dispositivo de línea base.

Además, el perfil de dispositivo proporciona información específica sobre el modelo de dispositivo de destino y proporciona una directiva que el modelo de dispositivo de reserva de línea base puede usar si el modelo de destino no está disponible. Las instancias de perfil pueden incluir extensiones privadas mediante mecanismos de extensión XML estándar.

Arquitectura del perfil del modelo de dispositivo de color

Diagrama que muestra la información que constituye un perfil de modelo de dispositivo.

Esquema de 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>

Adición de calibración de WCS CDMP v2.0

El elemento ColorDeviceModel del esquema CDMP se ha actualizado en Windows 7 para incluir el nuevo elemento de calibración. A continuación se muestra el cambio en el esquema de 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>
  ...

Elementos de esquema de CDMP

Nota

Las primarias son muestras principales de rojo, verde, azul, negro y blanco. Una rampa principal es una rampa tonal desde la menor luminancia hasta el valor principal completo. El número máximo de entradas en una rampa de tono es 4096.

Nota

Las DMP son necesarias para tener datos de medición.

ColorDeviceModelProfile

Este elemento es de tipo ColorDeviceModel.

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

ColorDeviceModel

Este elemento es una secuencia de los siguientes sub-elementos

  1. Cadena ProfileName,
  2. cadena de descripción opcional,
  3. cadena de autor opcional,
  4. optional MeasurementConditions MeasurementConditionsType,
  5. Self-Luminous booleano,
  6. MaxColorant float,
  7. MinColorant float,
  8. Elección de elementos
    1. CRTDevice,
    2. LCDDevice,
    3. RGBProjectorDevice,
    4. ScannerDevice,
    5. CameraDevice,
    6. RGBPrinterDevice,
    7. CMYKPrinterDevice,
    8. RGBVirtualDevice,
  9. PlugInDevice,
  10. ExtensionType opcional

Condiciones de validación: Cada sub-elemento se valida por su propio tipo. Los subelementos de cadena tienen un máximo de 10 000 caracteres. El sub-elemento MaxColorant debe ser mayor o igual que cero (0) y mayor que el sub-elemento MinColorant. MinColorant puede ser negativo.

NamespaceVersion

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

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

Versión

Version = "1.0" con Windows Vista.

Condiciones de validación: Cualquier valor >de versión 0.1 o <=2.0 es válido para admitir cambios no importantes en el formato.

Documentación

Esquema de perfil de modelo de dispositivo.

Copyright (C) Microsoft. Todos los derechos reservados.

Elemento CRTDevice

Este elemento es una secuencia de subelementos de un objeto MeasurementData DisplayMeasurementType.

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

Elemento LCDDevice

Este elemento es una secuencia de subelementos de un objeto MeasurementData DisplayMeasurementType.

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

Elemento ProjectorDevice

Este elemento es una secuencia de subelementos de un objeto MeasurementData RGBProjectorMeasurementType.

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

Elemento ScannerDevice

Este elemento es una secuencia de subelementos de measurementData RGBCaptureMeasurementType

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

Elemento CameraDevice

Este elemento es una secuencia de subelementos de measurementData RGBCaptureMeasurementType

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

Elemento RGBPrinterDevice

Este elemento es una secuencia de subelementos de un objeto MeasurementData RGBPrinterMeasurementType.

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

Elemento CMYKPrinterDevice

Este elemento es una secuencia de subelementos de un objeto MeasurementData CMYKPrinterMeasurementType.

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

Elemento RGBVirtualDevice

Este elemento es una secuencia de sub-elementos de un RGBVirtualMeasurementDataType.

Condiciones de validación: Cada sub-elemento se valida por su propio tipo.

PlugInDeviceType

Este elemento es una secuencia de un GUID GUIDType y cualquier sub-elementos.

Condiciones de validación: El GUID se usa para buscar coincidencias con el GUID del archivo DLL dm PlugIn. Hay un máximo de 100 000 subelementos personalizados.

RGBVirtualMeasurementType

Este elemento es una secuencia que consta de

  1. Grupo RGBPrimariesGroup

  2. Elección de

    • Gamma
    • GammaOffsetGain
    • GammaOffsetGainLinearGam
    • Elementos ToneResponseCurves
  3. GamutBoundarySamples GamutBoundarySamplesType opcional

  4. TimeStamp dateTime

Condiciones de validación: Cada sub-elemento de estos tipos tiene sus propias condiciones de validación.

GammaType

Este elemento es un tipo complejo que consta del atributo

  • Gamma NonNegativeFloatType

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

GammaOffsetGainType

Este elemento es un tipo complejo que consta de los atributos.

  • Gamma NonNegativeFloatType
  • Offset NonNegativeFloatType
  • Obtener nonNegativeFloatType

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

GammaOffsetGainLinearGainType

Este elemento es un tipo complejo que consta de los atributos.

  • Gamma NonNegativeFloatType
  • Offset NonNegativeFloatType
  • Obtener nonNegativeFloatType
  • LinearGain NonNegativeFloatType
  • TransitionPoint NonNegativeFloatType.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

ToneResponseCurvesType

Este elemento es una secuencia de

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

El elemento también tiene un atributo TRCLength de tipo unsignedint.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

GamutBoundarySamplesType

Este elemento es una secuencia de RGB RGBTypes.

Condiciones de validación: Actualmente, las repeticiones máximas no limitadas se limitarán en función de los comentarios del sector.

FloatPairList

Este elemento es un tipo simple de lista de pares de floats.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

CMYKPrinterMeasurementType

Este elemento es un

  1. secuencia del elemento ColorCube que consta de una secuencia de Sample NonNegativeCMYKSampleType

  2. Atributo dateTime de TimeStamp.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

RGBPrinterMeasurementType

Este elemento es un

  1. secuencia del elemento ColorCube que consta de una secuencia de Sample NonNegativeRGBSampleType

  2. Atributo dateTime de TimeStamp.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

RGBCaptureMeasurementType

Este elemento es una secuencia de

  1. ComplexType PrimaryIndex de

    1. OneBasedIndex blanco
    2. Black OneBasedIndex opcional
    3. Red OneBasedIndex opcional
    4. Green OneBasedIndex opcional
    5. Blue OneBasedIndex opcional
    6. Cyan OneBasedIndex opcional
    7. Magenta OneBasedIndex opcional
    8. OneBasedIndex amarillo opcional
  2. NeutralIndices de líneas de OneBasedIndex

  3. Secuencia ColorSamples de ejemplo NonNegativeRGBSampleType

El elemento también tiene un atributo dateTime TimeStamp.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

OneBasedIndex

Este elemento es un tipo simple de restricción base unsigned int con el valor minInclusive = "1".

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

RGBProjectorMeasurementType

Este elemento es una secuencia de

  1. Grupo RGBPrimariesGroup
  2. elemento ColorSamples que consta de una secuencia de Sample NonNegativeRGBSampleType

El elemento también tiene un atributo dateTime TimeStamp.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

DisplayMeasurementType

Este elemento es una secuencia de

  1. grupo RGBPrimariesGroup
  2. GrayRamp de secuencia de ejemplo NonNegativeRGBType
  3. RedRamp de secuencia de ejemplo NonNegativeRGBType
  4. GreenRamp de secuencia de ejemplo NonNegativeRGBType
  5. BlueRamp de secuencia de ejemplo NonNegativeRGBType

El elemento DisplayMeasurementType también tiene un atributo DateTime TimeStamp.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

MeasurementConditionsType

MeasurementConditionsType es una secuencia de subelementos que contiene:

  1. Valor de enumeración de cadena restringida colorSpace de "CIEXYZ"
  2. opción opcional de la enumeración de cadena WhitePoint NonNegativeXYZType o WhitePointName de valores D50, D65, A o F2
  3. Geometry GeometryType
  4. ApertureSize entero en milímetros

Los valores predeterminados son:

  1. Impresoras RGB y CMYK:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm ApertureSize
  2. Escáneres:
    1. CIEXYZ MeasurementSpaceType
    2. D50 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm ApertureSize
  3. Muestra y dispositivo virtual RGB:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. 0/45 GeometryType
    4. 10mm ApertureSize
  4. Cámaras:
    1. CIEXYZ MeasurementSpaceType
    2. D65 WhitePointValue
    3. GeometryType directo
    4. 10mm ApertureSize

Condiciones de validación: La validación de cada subproceso viene determinada por las condiciones de validación de esos subelementos. Si falta algún elemento secundario, se usa el tipo de modelo de dispositivo predeterminado específico.

GeometryType

String

Valores de enumeración:

  • "0/45"
  • "0/difuso"
  • "difuso/0"
  • "Directo"

Condiciones de validación: Cualquier valor excepto los valores de enumeración enumerados no es válido. Esta información no cambiará el comportamiento de procesamiento de línea base.

RGBPrimariesGroup

Este elemento es una secuencia de

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

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

NonNegativeCMYKSampleType

Este elemento es una secuencia de

  1. CMYK NonNegativeCMYKType
  2. CIEXYZ NonNegativeXYZType

El elemento también tiene una cadena tag de atributo opcional.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

NonNegativeRGBSampleType

Este elemento es una secuencia de

  1. RGB NonNegativeRGBType
  2. CIEXYZ NonNegativeXYZType

El elemento también tiene una cadena tag de atributo opcional.

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

NonNegativeCMYKType

Este elemento consta de atributos

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

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

NonNegativeRGBType

Este elemento consta de atributos

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

Condiciones de validación: Para determinarse a partir de los comentarios del sector.

ExtensionType

El elemento ExtensionType es una secuencia de cualquier tipo de sub-elemento y se usa para la información propietaria de aplicaciones que no son de Microsoft.

Condiciones de validación: Este elemento es opcional. Puede haber un máximo de 1000 subelementos de extensión.

NonNegativeXYZType

El elemento NonNegativeXYZType se compone de NonNegativeFloatType tres elementos de punto flotante IEEE de precisión sencilla denominados "X", "Y" y "Z". Estos valores se limitan a los valores de medición de perfiles DMP. Estas medidas pueden ser valores absolutos (no relativos) CIEXYZ 1931 reflectantes o valores CIEXYZ 1931 directos (transmisivos) absolutos (no relativos) en unidades candelas por metro cuadrado.

Condiciones de validación: Solo los valores reales son válidos y los valores de medida de CIEXYZ negativos no son válidos. Dado que son valores absolutos, los valores pueden ser mayores que 1,0f. Un límite razonable para cualquier valor "X", "Y" o "Z" se establece arbitrariamente en 10000.0f.

XYZType

El elemento XYZType se compone de tres valores de punto flotante IEEE de precisión sencilla: "X", "Y" y "Z".

Algoritmos de línea base de CDMP

Línea de base del modelo de dispositivo CRT

Para comprender este modelo, debe tener en cuenta tanto el proceso de caracterización como el modelado de dispositivos. En el proceso de caracterización, las mediciones XYZ se realizan primero en los colores obtenidos rellenando el búfer de visualización de un dispositivo de visualización CRT. Los valores de ejemplo siguientes generarán buenos datos para el modelo de dispositivo CRT de línea base:

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

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

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

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

También se pueden usar incrementos distintos de 15 e incrementos no lineales. Cada rampa roja, verde, azul y neutra debe contener al menos tres muestras, pero se recomienda proporcionar más muestras. Debe proporcionar muestras para rojo puro, verde, azul, negro y blanco. Las muestras no tienen que estar espaciadas uniformemente.

El proceso de creación de la matriz tristimulus consta de dos pasos. En primer lugar, calcule el valor XYZ del punto negro o el brote. Este paso se basa en gran medida en el trabajo de Berns[3] con una función objetivo ligeramente modificada para la optimización no lineal. En segundo lugar, calcule la matriz tristimulus en función del resultado del paso uno y también de un cálculo de promedio en todas las medidas por canal, no solo la del recuento digital máximo.

Cada uno de estos pasos contiene procedimientos detallados. El punto de partida es las rampas (17 pasos en nuestro ejemplo) para cada uno de los canales R, G y B. Cuando las medidas XYZ se trazan en la cromática xy -plane, se muestra una situación típica en la figura 1. El paso uno consiste en resolver un problema de optimización no lineal para encontrar el punto negro "mejor ajuste" que minimizará el desfase en cromática a medida que uno atraviesa los canales R, G y B. Basado en Berns[3], buscamos ( XK,YK,ZK ) que minimiza la siguiente función objetiva:

Muestra la función objetivo donde Sr, Sg y Sb son el conjunto de puntos de datos en los canales R, G y B.

donde SR,SG y SB son el conjunto de puntos de datos correspondientes a los puntos de los canales R, G y B. Para cualquier conjunto S, defina:

Muestra una fórmula para definir cualquier conjunto S.

En el anterior, | S | es la cardinalidad de S, es decir, el número de puntos del conjunto S. Muestra una fórmula para la cromática de un punto. es las coordenadas de cromática del punto Muestra una formaula para un punto. , por lo que muestra una fórmula para el promedio o centro de masa., es el promedio, o centro de masa, de todos los puntos del conjunto S en el plano de cromática. Por lo tanto, muestra una fórmula para la suma de un segundo momento de puntos. es la suma de los segundos de los puntos sobre el centro de masa y es una medida de cómo se extienden los puntos. Por último, muestra una fórmula para la medida total de la propagación de tres clústeres de puntos. Es una medida total de cómo se distribuyen los tres clústeres de puntos sobre sus respectivos centros de masa.

En el cálculo de Muestra una fórmula de f(X,Y,Z; Xk, Yk, Zk). , si muestra una fórmula para X. , se omite el cálculo y la cardinalidad de S se ajusta en consecuencia.

A pesar de la complejidad aparente de la función objetivo, es una suma de los cuadrados de muchas funciones diferentes en XK,YKZK K (17 puntos 2xy -components 3 canales = 102, en el ejemplo) y, por lo tanto, es amenable para técnicas estándar de mínimos cuadrados no lineales, como el algoritmo Levenberg-Marquardt, que es el algoritmo utilizado en WCS. Tenga en cuenta que la función objetivo anterior es diferente de la sugerida en Berns[3] en que esta última función mide la varianza de las distancias desde el centro de masa, de modo que la varianza es cero cuando los puntos son equidistantes desde el centro de masa, aunque se puedan extender bastante al respecto. En el ejemplo, la dispersión de puntos se contola directamente mediante los segundos.

Al igual que con cualquier algoritmo iterativo para el problema de mínimos cuadrados no lineales, Levenberg-Marquardt requiere una estimación inicial. Hay dos candidatos obvios. Uno es (0, 0, 0); el otro es el punto negro medido. Para el CTE, el punto negro medido se usa primero como estimación inicial. Si se supera un máximo de 100 iteraciones sin alcanzar un umbral de una distancia media de 0,001 de cada punto desde su centro de masa (que corresponde a un valor de umbral de (0,001) 17 3 = 0,000051 para la función objetivo), se realiza otra ronda de iteraciones con la estimación inicial de (0, 0, 0, 0). La estimación resultante del punto negro es XYZ en comparación con la mejor estimación de la ronda anterior de iteraciones (con el punto negro medido como la estimación inicial). Use la estimación que proporciona el valor más pequeño para la función objetivo. La elección de 100 iteraciones y la distancia de error de 0,001 fueron seleccionadas empíricamente. En versiones futuras, podría ser razonable parametrizar la distancia de error.

El resultado del paso uno es el punto negro estimado ( XK,YK,ZK ). El paso dos consiste en determinar la matriz tristimulus promediando la cromática de los puntos de los tres clústeres obtenidos en el paso uno. En el caso de los CRT, esto se hace principalmente para minimizar los efectos de los errores de medición. Los puntos utilizados en el promedio de cromática deben ser los mismos puntos utilizados en la optimización en el paso uno. En otras palabras, si el primer punto (recuento digital 15, en el ejemplo) de cada rampa se descarta en el paso de optimización, se debe hacer lo mismo en el promedio. Si muestra fórmulas de cromática media para coordenadas en los canales rojos y verdes. , y Muestra una fórmula de cromática media para coordenadas en el canal azul. Son las coordenadas cromáticas medias de los canales rojo, verde y azul, el procedimiento siguiente determina la matriz tristimulus. En primer lugar, resuelva el sistema lineal 3?3:

Muestra la primera parte del procedimiento para resolver un sistema lineal 3?3.

Muestra la segunda parte del sistema lineal 3?3. Muestre el valor t subíndice b al final de la segunda parte del sistema lineal 3?3.

XW,YW,ZW

Muestra la parte final del procedimiento para resolver un sistema lineal 3?3.

Después de determinar la matriz tristimulus, la determinación de curvas de tono sigue el enfoque estándar. En el caso de las pantallas de CRT, se supone que los canales individuales siguen el modelo "GOG":

Muestra la fórmula del modelo

donde kg es la "ganancia",1 -kg es el "desplazamiento" y ? es el "gamma". La matriz inversa de la matriz tristimulus se aplica a los datos XYZ de los neutrales para obtener los datos RGB lineales, que luego se correlacionan con los valores RGB digitales mediante regresión no lineal en el modelo GOG. Estas características no tienen que ser las mismas para los canales R, G y B, y generalmente no son las mismas.

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

Berns[2]: Berns and Katoh, The digital to radiometric transfer function for computer controlled CRT displays, CIE Expert Sym '97 Color Standards for Imaging Technology, nov. 1997.

Berns[3]: Berns, Fernández y Taplin, Estimando Black-Level Emisiones de Computer-Controlled Pantallas, Investigación de Color y Aplicación, 28: 379-383 Wiley Periodics, Inc. (2003)

Kang[1]: Kang, Tecnología de color para dispositivos de imágenes electrónicas, SPIE (1997)

Katoh[1]: Katoh, Deguchi y Berns, una caracterización precisa de la propuesta de monitor CRT (II) para una extensión al método CIE y su verificación, Opt. Rev. 8: 397-408 (2001)

Línea base del modelo de dispositivo LCD

La línea de base del modelo de dispositivo LCD es similar a la línea de base del modelo de dispositivo CRT. En esta sección se explican las formas en que el modelado LCD difiere del modelado de CRT.

Una diferencia es que no se puede suponer que las pantallas LCD siguen el modelo GOG usado para los CRT y las curvas de tono se obtienen mediante la interpolación de datos medidos. Debido a esto, el eje neutro del dispositivo debe muestrearse con más frecuencia.

Estos son algunos valores de ejemplo típicos que pueden generar buenos datos para la línea de base del modelo de dispositivo LCD:

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

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

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

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

El proceso de medición de cromáticas de colores medidos para obtener las cromáticas para el dispositivo principal es más crítico para los LCD que para los CRT. Cuando las medidas XYZ se trazan en la cromática xy -plane, se muestra una situación típica en la figura 1. Observe cómo la cromática se desplaza hacia el punto negro. Esto se debe a que todos los LCD tienen una cierta cantidad de fuga de luz.

Diagrama que muestra un gráfico de la cromática mediante datos sin procesar sin corrección.

Figura 1 : Diagrama de cromatismo con datos sin procesar sin corrección

Cuando se resta de las medidas XYZ sin procesar, se muestra una situación típica en la figura 2. Los puntos ahora se agrupan sobre tres centros, aunque no se encuentran idénticamente en ellos. El proceso de promedio descrito para los CRT mejora considerablemente los resultados de los LCD.

Diagrama que muestra un gráfico de la cromática utilizando datos sin procesar con un punto negro ajustado.

Figura 2 : Diagrama de cromatismo mediante datos con punto negro ajustado

Línea de base del modelo de dispositivo de captura RGB

El modelo de dispositivo de captura RGB de línea base es una subclase de la clase IDeviceModel. En la caracterización de la métrica de color de los dispositivos de captura de color, como escáneres y cámaras digitales, se usa el siguiente enfoque. Un destino que consta de revisiones de color con valores de CIEXYZ conocidos se captura mediante el dispositivo de captura. El resultado de la captura es una imagen de mapa de bits RGB en la que el color de cada revisión se codifica en un valor RGB. Estos valores RGB de dispositivo son específicos de un dispositivo de captura determinado. El objetivo de la caracterización de la métrica de colori es establecer una relación empírica entre los valores RGB del dispositivo y los valores de CIEXYZ, o una transformación matemática de RGB a XYZ que modela con la mayor precisión posible el comportamiento del dispositivo de captura.

Esta transformación matemática se puede modelar razonablemente mediante polinomios de grados bajos. Este procedimiento se detalla en la literatura, por ejemplo Kang[92], Kang[97]. En Kang[97], se informa de un enfoque que usa un conjunto de tres polinomiales con 3, 6, 8, 9, 11, 14 o 20 términos en las variables R, G y B, mientras que los tres polinomiales retrocede respectivamente en los componentes X, Y, Z del espacio CIEXYZ. Para el polinomio de 20 términos, la forma es:

Muestra el polinomio de 20 términos.

Hay expresiones similares para Y y Z. La técnica matemática para ajustar los polinomios se encuentra dentro de "Regresión lineal multivariante" y se describe en cualquier texto elemental de Estadísticas.

Este método de regresión lineal sufre de no minimizar la función objetivo "derecha". Por diseño, la regresión lineal encuentra la solución de mínimos cuadrados, lo que implica que los coeficientes obtenidos minimizarán la suma total de cuadrados de errores en el espacio subyacente, o de forma equivalente, la suma de cuadrados de las distancias euclidianas. En la práctica, desea minimizar la suma de cuadrados de ? ¿Dónde? E es una de las normas aceptadas como CIE94. Minimizar esta función objetiva es un problema de regresión no lineal.

En el nuevo motor, Lab to XYZ es el espacio de colores CIE en el que se devuelve y el polinomial cúbico de 20 términos se usa como modelo para el dispositivo de captura, o coeficientes ls, como,bs de forma que los siguientes polinomiales minimizan la suma de cuadrados de ? E CIE94 s.

Muestra un conjunto de fórmulas polinómicas.

La solución ( li, ai, bi ) en el espacio numérico real de 60 dimensiones R203 debe ser tal que se minimice el siguiente error total:

Muestra el error total que se va a minimizar.

donde la suma se realiza a través de todos los pares de puntos de datos (Ri,Gi,B i; Li,ui,vi ) del conjunto de datos muestreado más puntos de control adicionales que se detallan en lo siguiente. Se trata de un problema de regresión no lineal porque los parámetros ? i, i, *i* entrar en la función objetivo de una manera no lineal (no cuadráticamente).

Dado que la función objetivo ? es una función no lineal (y noquadratic) de los parámetros ? i, i y * i*, debe recurrir a técnicas iterativas para resolver el problema de optimización. Dado que la forma de la función objetivo es una suma de cuadrados, se usa una técnica de optimización estándar denominada algoritmo de Levenberg-Marquardt. Se considera el método de elección para problemas de mínimos cuadrados no lineales. Para algoritmos iterativos como Levenberg-Marquardt, debe proporcionar una estimación inicial. Normalmente, una buena estimación inicial es fundamental para encontrar el valor mínimo correcto. En este caso, un buen candidato para la estimación inicial es la solución del problema de regresión lineal. En primer lugar, minimice la suma del cuadrado de distancias euclidianas en el espacio del laboratorio mediante la definición de una función objetivo cuadrática:

Muestra una función objetivo cuadrática definida.

La solución matemática a este problema de "mínimos cuadrados lineales" es bien conocido. ¿Porque ? solo aparece en el modelado L , solo aparece uni en el modelado u , y * i* solo aparece en el modelado v ; el problema de optimización se puede descomponer en tres subproblemas: uno para L, uno para u y otro para v. Tenga en cuenta las ecuaciones L . (Las ecuaciones u y las ecuaciones v siguen exactamente el mismo argumento). El problema de minimizar la suma de cuadrados de errores en L se puede indicar como solución de la siguiente ecuación de matriz en el sentido de los mínimos cuadrados:

Muestra una ecuación de matriz para L.

donde N es el número total de puntos de datos (puntos muestreados originales más puntos de control creados de una manera que se describe a continuación). Normalmente, N es mucho mayor que 20, por lo que la ecuación anterior se sobredeterminación, lo que requiere una solución de mínimos cuadrados. Hay disponible una solución de formulario cerrada para ? :

Muestra una solución de formulario cerrada.

En la práctica, la evaluación directa mediante la solución de formulario cerrado no se usa porque tiene propiedades numéricas deficientes. En su lugar, algún tipo de algoritmo de factorización de matriz se aplica a la matriz de coeficientes que reduce el sistema de ecuaciones a una forma canónica. En la implementación actual, la descomposición de valores singulares (SVD) se aplica a la matriz R y, a continuación, se resuelve el sistema descomponido resultante.

La solución al problema de regresión lineal, indicada por Muestra la solución al problema de regresión lineal. , se usa como punto de partida del algoritmo de Levenberg-Marquardt. En este algoritmo, se calcula un paso de prueba que debe acercar el punto a la solución óptima. El paso de prueba satisface un conjunto de ecuaciones lineales dependientes del valor funcional y los valores de los derivados en el punto actual. Por este motivo, los derivados de la función objetivo ? con respecto a los parámetros ? i, a ison entradas necesarias para el algoritmo de Levenberg-Marquardt. Aunque hay 60 parámetros, hay un acceso directo que permite calcular mucho menos. Por la regla de cadena de cálculo,

Muestra una ecuación que permite un acceso directo mediante la regla de cadena de cálculo.

donde j = 1, 2, , 20, Li,ui,vi son el valor CIELAB del punto de muestra i y Rij es la entrada (i,j )th de la matriz definida anteriormente. Por lo tanto, en lugar de calcular derivados para 60 parámetros, puede calcular derivados paraL,a y b mediante diferencias numéricas hacia delante.

También es necesario configurar un criterio de detención para algoritmos iterativos. En la implementación actual, las iteraciones finalizan si el cuadrado medio DECIE94 es menor que 1 o el número de iteraciones realizadas ha superado 10. El número 10 proviene de la experiencia práctica que, si las primeras iteraciones no reducen significativamente el error, las iteraciones adicionales no ayudarán mucho más que mover el punto de una manera oscilatoria, es decir, el algoritmo puede no converger. Incluso en caso de que el algoritmo diverge, podemos estar seguros de que el DECIE94 no es peor que lo que empezamos, es decir, con los parámetros obtenidos de la regresión lineal.

Incluso con el método anterior de regresión no lineal, hay varios problemas con el ajuste. Un problema es que los polinomios tienden a sobresaltar o superar los puntos de datos. Las máximas y minima locales artificiales pueden introducirse en el proceso de ajuste. Esto se puede contrarrestar mediante polinomios de bajo grado, que es la razón por la que no debe usar más de tres grados. Un aspecto más grave de la sobrecarga o la falta de trabajo es que, aunque un polinomial puede tomar cualquier valor real teóricamente, el espacio que intenta modelar normalmente tiene restricciones físicas y restricciones prácticas. CIEXYZ debe tener todas las X, Y, Z no negativas, que es una restricción física. En la práctica, solo toman valores en la magnitud de cientos, no miles ni más. De forma similar, CIELAB o CIELUV tiene sus propias restricciones físicas y prácticas. Cuando el espacio RGB se rellena lo suficientemente con puntos de muestra, el problema de sobresablamiento o subsanación no es grave. Sin embargo, los puntos RGB capturados del dispositivo de captura normalmente no rellenan uniformemente el espacio RGB. Los puntos pueden rellenarse solo dentro del 80 % del cubo RGB, o peor, pueden residir en un manifold dimensional inferior. Cuando esto sucede, los polinomios con regresión pueden hacer un trabajo deficiente al extrapolar los valores más allá de los puntos de datos, a veces devolviendo predicciones poco realistas. Quiere un modelo que siempre devuelva valores razonablemente realistas. Esto requiere un método que pueda controlar eficazmente el comportamiento de límite de polinomios de regresión mediante la imposición de costos adicionales a esos polinomios que se comportan de forma errática cerca del límite del cubo RGB. Una medida adicional para asegurarse de que los polinomios siempre devuelven valores realistas se aplica mediante el recorte de la salida a dentro del locus espectral CIE.

En este momento, el modelado del escáner y el modelado de cámara se diferencian entre sí. Se espera que el modelo de cámara se extrapolar a regiones más allá de los puntos muestreados, incluidos los "resaltados especulares", no se requiere la misma extrapolación para el modelo del escáner. Se espera que el objetivo del escáner cubra una caracterización similar a los materiales impresos que se van a escanear. El modelo del escáner sigue siendo necesario para ser sólido en el sentido de que no debe devolver valores poco realistas, pero la extrapolación mucho más allá del objetivo de caracterización no es necesaria. Para garantizar la solidez, el polinomio L anterior se recorta en 100, es decir, el modelo polinómico se obliga a no extrapolar más allá de "Dmin" del objetivo del escáner.

Se espera que el modelo de cámara se extrapola a los resaltados especulares, por lo que el recorte a 100 no es deseable. En su lugar, se usa el siguiente algoritmo.

Los puntos de control artificiales se presentan para controlar el comportamiento de los polinomios en regiones con muestreo insuficiente. Al colocar estratégicamente estos puntos de control con los valores adecuados, sirven para "extraer" los polinomios en la dirección necesaria. En la implementación actual, se usan ocho puntos de control correspondientes a las esquinas del cubo RGB. Si los valores del dispositivo se normalizan en Unity, estos puntos son:

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

Excepto para el blanco R =G =B = 1, que está asociado a un valor CIELAB de L = 100, u =v = 0, se usa el siguiente algoritmo de extrapolación para determinar el valor CIELAB adecuado al que se va a asociar. Por lo general, para un determinado (R,G,B ), un peso se asocia a cada uno de los (Ri,Gi,B i ) del conjunto de datos muestreado. Hay dos objetivos para asignar el peso. En primer lugar, el peso es inversamente proporcional a la distancia entre (R,G,B ) y (Ri,Gi,Bi ). En segundo lugar, desea descartar o asignar el peso 0 a los puntos que tienen un matiz diferente al punto dado (R,G,B ). Para tener en cuenta el matiz, considere los puntos que se encuentran dentro de un cono cuyo vértice está en (0, 0, 0, 0), cuyo eje coincide con la combinación de líneas (0, 0, 0) a (R,G, B ) y cuyo ángulo semi vertical? satisface cos ? = 0,9. Vea la figura 3 para obtener una ilustración de este cono.

Diagrama que muestra la forma del vecindario.

Figura 3 : Filtrado de los puntos de muestra por ángulo y distancia. La forma del barrio representado es únicamente para fines ilustrativos. La forma real depende de la distancia utilizada; es un vecindario en forma de rombo si se utiliza la norma 1.

Dentro de este cono, se realiza un segundo filtrado que se basa en la distancia RGB, que usa la norma 1, definida por

Muestra la fórmula del segundo filtrado dentro del cono.

Con el cono actual, la búsqueda inicial es para puntos que están a una distancia de 0,1 desde (R,G,B ). Si no se encuentra ningún punto dentro de este radio, el radio aumenta en 0,1 y se reinicia la búsqueda. Si el siguiente redondeo no tiene ningún punto, el radio aumenta en 0,1. Este proceso continúa hasta que el radio supera MaxDist/5, donde MaxDist = 3, en el caso de 1 norma. Si no se encuentra ningún punto, el cono se amplía disminuyendo el cos ? en 0,05, es decir, aumentando el ángulo ? y reiniciar todo el proceso con un radio creciente. Este proceso continúa hasta que se encuentra un conjunto de puntos no vacío, o cos ? alcanza 0, es decir, el cono se ha abierto para convertirse en un plano. En este momento, la búsqueda se reinicia aumentando el radio, excepto que la búsqueda continúa hasta que el radio alcanza MaxDist. Esto garantiza que, en el peor de los casos, se encontrará un conjunto de puntos no vacío. El algoritmo se resume en el diagrama de flujo de la figura 4.

Diagrama que muestra el flujo del algoritmo.

Figura 4 : Diagrama de flujo para determinar el conjunto S de puntos de muestra usados en la extrapolación de un valor RGB de entrada

Suponiendo que el proceso anterior produce un conjunto no vacío S de puntos (Ri,Gi,Bi ) y correspondiente (Li,ai,bi ), a continuación, para cada punto de este tipo, se asigna un peso wi, dado por

Muestra la fórmula de un peso para cada punto.

Por último, el extrapolante se define mediante

Muestra la definición del extrapolante.

Las ecuaciones anteriores constituyen una instancia de los "métodos ponderados de distancia inversa", comúnmente denominados métodos Shepard. Al ejecutar cada uno de los ocho puntos de eq (6) a través del algoritmo, se obtienen ocho puntos de control, cada uno con los valores R,G,B yL,a,b, que se colocan en el grupo con los datos de ejemplo originales.

Para asegurarse de que el modelo siempre genera valores de color válidos y para la integridad del sistema y la estabilidad hacia abajo en toda la canalización de procesamiento de colores, debe realizar un recorte final en la salida del modelo polinómico. La gama visual de CIE se describe mediante el componente acromático (Y o L ) y el componente cromático (xy o a'b', que están relacionados con el espacio XYZ mediante una transformación projectiva). En la implementación actual, se utiliza la cromatística a'b' porque está directamente relacionada con el espacio CIELUV. Para cualquier valor de CIELAB , primero recorte L a un valor no negativo:

Muestra el recorte de L a un valor no negativo.

Para permitir la extrapolación de los resaltados especulares, L no se recorta a 100, el límite superior "convencional" para L en el espacio del laboratorio.

A continuación, si L = 0, a yb se recortan de forma que a*= b =* 0. Si L ? 0, calcular

Muestra la fórmula si L=0.

Estos son los componentes de un vector en el diagrama a'b' del punto blanco (u?',v?' ) al color en cuestión. Defina el locus espectral CIE como casco convexa de todos los puntos (a',b' ), parametrizado por la longitud de onda ?:

Muestra la fórmula de la longitud de onda.

donde muestra las funciones para la coincidencia de colores de CIE. son las funciones de coincidencia de colores de CIE para el observador de 2 grados. Si el vector se encuentra fuera del locus CIE, el color se recorta hasta el punto del locus CIE que es la intersección del locus y la línea definida por el vector. Vea la figura 5. Si se ha producido el recorte, el valor a y b se reconstruye restando primero a?' y b'' del a recortado a ' y b', y luego multiplicando por 13 L.

Diagrama que muestra el gráfico del algoritmo de recorte.

Figura 5 : Algoritmo de recorte para valores de laboratorio que están fuera de la gama visual de CIE

En la implementación actual, el locus espectral CIE en el plano a'b' se representa mediante una curva lineal por partes con 35 segmentos (correspondientes a una longitud de onda de 360 nm a 700 nm inclusive). Al ordenar los segmentos de línea para que sus ángulos subtendidos en el punto blanco sean ascendentes, lo que equivale a las longitudes de onda descendentes, el segmento de línea que interseca con el rayo formado por el vector anterior se puede encontrar mediante una búsqueda binaria simple.

Línea base del modelo de dispositivo de impresora RGB

Una caracterización de dispositivo de una impresora RGB consiste en construir un modelo empírica del dispositivo que predice el color CIELUV independiente del dispositivo para cualquier valor RGB determinado.

Hay dos maneras de construir el modelo empírica. Una manera es usar los datos del dispositivo para una impresora RGB y el otro es usar datos de parámetros analíticos. En la primera, los datos de medición proporcionados por un usuario para un dispositivo de impresora RGB se usan para construir una tabla de búsqueda 3D (LUT). Los datos de medición constan de valores XYZ para revisiones RGB muestreadas uniformemente. Los tamaños de muestreo típicos son 9 o 17 para cada componente. Cada parche se mide con un colorimeter o un espectrofotómetro en el espacio CIEXYZ. Después, el valor XYZ de una revisión se convierte en un valor CIELUV, formando una LUT 3D. En el modelo de dispositivo, el método de interpolación tetrahedral de Sakamoto se aplica a la LUT 3D para predecir los datos CIELUV de un determinado dato RGB. (Confer us patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. Las dos patentes mencionadas han expirado). Los datos del parámetro analítico pasados en el segundo método son simplemente una LUT que se creó anteriormente. Normalmente, ese LUT se creó con el primer método, aunque podría compilarse a mano.

En la administración de colores actual, el mapa de origen se define como el mapa que va del espacio RGB a un espacio de color CIEXYZ independiente del dispositivo. El mapa de destino se define como el mapa que va del espacio de color CIEXYZ independiente del dispositivo al espacio RGB. Es el inverso del mapa de origen.

El modelo empírica se usa directamente en el mapa de origen. En primer lugar, asigna datos RGB dados a datos CIELUV, que se convierten en datos XYZ. En el mapa de destino, los datos de CIEXYZ independientes del dispositivo se convierten primero en datos CIELUV. A continuación, el modelo empírica y el método clásico de Newton-Raphson se usan para predecir los mejores datos RGB para los datos CIELUV. Los detalles sobre la conversión de CieLUV a datos RGB son los siguientes:

Después de generar una LUT 3D de RGB a CieLUV, el mapa de RGB a LUV se crea mediante interpolación tetrahedral en RGB. Este mapa se indica mediante las ecuaciones siguientes:

Muestra las ecuaciones del mapa de R G B a L U V.

Inversión del mapa consiste en resolver, para cualquier color Muestra L U V. , el siguiente sistema de ecuaciones no lineales:

Muestra las ecuaciones no lineales para resolver cualquier color L U V.

Se usa una ecuación no lineal basada en el método clásico Newton-Raphson en el nuevo CTE. Una estimación inicial, o un priori see, s prior -(R 0, G 0, B 0 ) se obtiene mediante una búsqueda a través de una "matriz de inicialización" que consta de una cuadrícula uniforme de 8x8x8 de pares preprocesados (RGB, Luv). Se elige el Luv correspondiente RGB más cercano al L*u*v*. Cada punto de la matriz de inicialización corresponde al centro de una celda para que las iteraciones no comiencen con un punto en la cara de límite del cubo RGB. En otras palabras, el RGB de las semillas se define mediante: STEP = 1/8 s ijk = (STEP/2 + (i-1), STEP/2+(j-1)STEP, STEP/2+(k-1)STEP) con i,j,k = 1...8 En el primer paso de Newton-Raphson, la siguiente estimación Muestra las variables para la siguiente estimación. Se obtiene mediante la fórmula:

Muestra la fórmula de la estimación.

La iteración se detiene cuando el error (distancia en el espacio CIELUV) es menor que un nivel de tolerancia establecido previamente (0,1 en el CTE), o cuando el número de iteraciones ha superado el número máximo permitido de iteraciones (10 en el CTE). Los valores de la tolerancia y el número de iteraciones se determinaron empíricamente como efectivos. En versiones futuras, se puede cambiar el valor de tolerancia.

La matriz jacobiana se calcula utilizando la diferencia hacia delante, excepto en un punto de límite (uno o más de R, G, B es 1) donde se usa la diferencia hacia atrás en su lugar. En lugar de calcular el inverso de la matriz jacobiana, el sistema lineal se resuelve directamente mediante Gauss-Jordan eliminación con dinamización completa.

Al final de las iteraciones, es posible que todavía no se logre la convergencia porque Newton-Raphson es un algoritmo "local", es decir, solo funciona bien si empieza con una estimación inicial cercana a la solución verdadera. Si, al final de la Newton-Raphson iteraciones, no se ha logrado la convergencia dentro de la tolerancia de errores predefinida, las iteraciones se reinician con un nuevo conjunto de semillas, definidos como se indica a continuación.

Por ejemplo, la mejor solución obtenida hasta ahora es (r, g, b). A partir de esta solución, se derivan N a posteriori semillas, donde N = 4. Intuitivamente, la solución se mueve "hacia el centro" en un tamaño de paso que depende de N. Vea la figura 6.

Diagrama que muestra instrucciones de perturbación de la solución.

Figura 6 : Dirección de perturbación de la solución depende del octante en el que se encuentra.

En otras palabras, si r > 0,5, el valor del canal de R se reduce; de lo contrario, se aumenta el valor. Hay una lógica similar para los canales G y B. Las definiciones precisas son:

PERTURBACIÓN = 0,5/(N+1)

Dir(r) = -1 si r > 0,5; +1 en caso contrario. De forma similar para Dir(g) y Dir(b)

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

Pruebe el primer ???? y si proporciona una nueva solución dentro de la tolerancia a errores, puede detener. De lo contrario, pruebe el segundo ???? y así sucesivamente hasta el ????.

Los esquemas de todo el algoritmo se muestran en la figura 7.

Diagrama que muestra el flujo para invertir el modelo de dispositivo.

Figura 7 : Esquemas de invertir el modelo de dispositivo

Línea base del modelo de dispositivo virtual RGB

Este modelo de dispositivo (DM) es un algoritmo de reproducción de matriz y tono simple. La matriz se deriva del punto blanco y se basa en algoritmos de ciencia de colores estándar. La curva de reproducción de tono se deriva de los parámetros de medida según las descripciones ICC de CurveType y ParametricType (o invertido según sea necesario). Los detalles de los algoritmos internos se proporcionarán después de la validación adicional de problemas de alto rango dinámico.

El modelo de dispositivo virtual RGB es una curva de reproducción de matriz/tono idealizada RGB similar al diseño de perfil basado en matriz de tres componentes ICC. Los parámetros de "medición virtual" de la DM incluyen un valor de punto blanco (CIEXYZ absoluto), valores primarios RGB (CIEXYZ absoluto) y una curva de reproducción de tono basada en icc ParametricCurveType y CurveType en formato XML coherente con los esquemas DMP.

La codificación de tipo de función ICC parametricCurveType y la compatibilidad correspondiente en IRGBVirtualDeviceModelBase se muestran en la tabla siguiente.

Tipo de función Parámetros Tipo Nota:
Muestra la función
e
GammaType
Implementación común
Muestra la función
ga b
GammaOffsetGainType
CIE 122-1966
Muestra la función
ga b c
GammaOffsetGainOffsetType
IEC 61966-3
Muestra la función
ga b c d
GammaOffsetGainGainType
IEC 61966-2.1
(sRGB)
Muestra una función para los parámetros
ga b c d e f
N/D
No se admite en WCS

La curva de tono para dispositivos virtuales RGB se aplica en DeviceToColorimetric entre los datos de entrada, pDeviceColors y la multiplicación de matriz. Para ColorimetricToDevice, se debe usar un método para invertir la curva de tono. En la implementación de línea base, esto se realiza mediante la interpolación directa en la misma curva de tono que se usa para DeviceToColorimetric.

Las curvas deben especificarse en los perfiles como pares de números en espacio flotante. El primer número representa los valores de pDeviceColors. El segundo número representa la salida de la curva de tono. Todos los valores de la curva de tono deben estar entre minColorantUsed y maxColorantUsed. Las curvas de tono deben contener al menos dos entradas: una para minColorantUsed y otra para maxColorantUsed. El número máximo de entradas en ToneCurve es 2048. En general, cuantos más entradas de la tabla sean más precisas, puede modelar la curvatura. Se realiza una interpolación lineal por partes entre las entradas.

Puede considerar métodos de interpolación alternativos. Si conoce algo sobre el comportamiento subyacente del dispositivo, puede usar menos muestras y modelar con mayor precisión con una curva de orden superior. Pero si usa el tipo de curva incorrecto, será muy inexacto. Sin más información, no se puede adivinar el tipo de curva. Por lo tanto, use la interpolación lineal y proporcione muchos puntos de datos.

Línea base del modelo de dispositivo de impresora CMYK

Una caracterización de dispositivos de una impresora CMYK consiste en construir un modelo empírico del dispositivo que predice el color impreso para cualquier valor CMYK determinado. La caracterización también incluye la inversión de este modelo para que se pueda imprimir una receta del valor CMYK para que se pueda imprimir un color determinado. Normalmente, esto se define en términos de valor CIEXYZ o CIELAB.

Normalmente, se usa un destino IT8.7/3 que contiene revisiones de CMYK. Las revisiones constan de muestreo del espacio CMYK de una manera bien definida para que se forma una cuadrícula rectangular (con espaciado no uniforme en C, M, Y y K). Después, cada revisión se mide con un colorimeter o espectrofotómetro. A continuación, las medidas de los valores de CIEXYZ forman una tabla de búsqueda (LUT), a partir de la cual se crea un modelo empírico de la impresora mediante el método de interpolación de Sakamoto. Us Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. Las dos patentes mencionadas han expirado.

Los requisitos específicos para las muestras de medición de CMYK necesarias para que un perfil de modelo de dispositivo sea aceptado como válido por el modelo de dispositivo de línea base de impresora CMYK son los siguientes. (El conjunto de muestras se describe con más claridad como un conjunto de cubos de ejemplo CMY, cada uno asociado a un nivel K específico).

  • Como mínimo, se deben proporcionar cubos CMY válidos para los niveles K = 0 y K = 100.

  • Los niveles intermedios de K pueden estar no espaciados uniformemente.

  • Se omitirá cualquier nivel K intermedio sin un cubo CMY válido.

  • Los cubos CMY pueden usar intervalos de muestra no uniformes (espaciado de cuadrícula), pero se debe usar el mismo conjunto de intervalos de muestra en todas las dimensiones C,M e Y del cubo CMY para un nivel K determinado.

  • Cada cubo CMY de nivel K puede usar un número diferente y un espaciado de intervalos de muestra.

  • Todos los cubos CMY deben contener las "esquinas" del cubo CMY, es decir, Muestras cmY en [0,0,0], [0,0,100], [0,100,0], [100,0,0], [0,100,100], [100,0,100], [100,100, 0], [100,100,100].

  • Todos los niveles de cuadrícula de CMY intermedios deben muestrearse completamente en cada canal. Es decir, una muestra debe existir en cada intersección de cuadrícula 3D dentro del cubo CMY.

  • Para los cubos K = 0 y K = 100 CMY, los cubos de "solo esquinas" de 2x2 x 2 son el mínimo aceptado como válido.

    [NOTA: para los niveles K=0 y K=100, se procesará un cubo CMY de 3x3x3 como cubo de "solo esquinas" de 2x2x2; se omite el nivel de muestra intermedio. Los cubos de 4x4x4 y más grandes tendrán todas las muestras en cuadrícula usadas.]

  • En el caso de los niveles K intermedios, los cubos CMY 4x4x4 son el mínimo aceptado como válido.

Un perfil de alta calidad usará cuadrículas de muestreo más finas que el mínimo necesario para la validez, normalmente 9x9x9x9 o superior. Las muestras de los destinos IT8.7/3, IT8.7/4 y ECI generan perfiles de modelo de dispositivo (DMP) válidos para el modelo de dispositivo de línea base de impresora CMYK. Aunque este modelo de dispositivo puede omitir las muestras extrañas (fuera de la cuadrícula) en estos destinos, no se garantiza que pueda hacerlo para otros destinos, por lo que se recomienda quitar muestras extrañas de los conjuntos de medidas que entran en perfiles para este modelo de dispositivo.

La inversión del modelo de impresora presenta más dificultades. Dado un color de entrada en CIECAM, hay una cuestión de si este color está dentro de la gama de impresoras. También hay el problema relacionado con la disposición de puntos en el espacio de apariencia de color. Aunque podemos organizar los valores cmYK para caer en una cuadrícula rectangular, como se hace en el destino IT8.7/3, no se puede decir lo mismo de los colores impresos resultantes que se encuentran en el espacio de apariencia de color. En general, se dispersan en el espacio de apariencia de color sin ningún patrón determinado.

Por lo general, hay dos enfoques para el problema de inversión de puntos dispersos. Un enfoque consiste en usar una subdivisión geométrica de la gama de impresoras mediante sólidos 3 dimensionales elementales, como tetrahedra. Se puede deducir una subdivisión de la gama de impresoras en el espacio de apariencia de color a partir de la subdivisión correspondiente del espacio CMY(K), véase Hung[93], Kang[97]. Este enfoque tiene la ventaja de la simplicidad computacional. En el caso de un tetraedro, solo se utilizan cuatro puntos en una interpolación. Por otro lado, el resultado depende en gran medida de algunos puntos, lo que significa que un error de medición tendrá un efecto significativo en el resultado. El interpolante también tiende a no ser tan suave. El segundo enfoque no asume ninguna subdivisión y se basa en la técnica de interpolación de datos dispersos. Un ejemplo clásico es la técnica de interpolación shepard o método ponderado inverso (vea Shepard [68]). Aquí se eligen varios puntos que rodean el punto de entrada de alguna manera, cada uno de los cuales asigna un peso, normalmente proporcional inversamente a la distancia, y el interpolante se toma como la media ponderada de los puntos vecinos. En este enfoque, la elección de los puntos vecinos es primordial para el rendimiento. Aunque demasiados puntos pueden representar el interpolante inexacto y no suave, demasiados puntos imponen un alto costo computacional, ya que los pesos suelen ser funciones no lineales y costosos de calcular.

Los dos enfoques descritos anteriormente tienen problemas. El enfoque de subdivisión depende críticamente de que los datos sean razonablemente nulos de ruido y, por lo general, el interpolante no es muy suave. La interpolación de datos dispersos es más tolerante al ruido de los datos y, por lo general, proporciona un interpolador más suave, pero es computacionalmente más caro.

El nuevo CTE adopta un enfoque alternativo. El dispositivo CMYK se trata como una colección de varios dispositivos CMY, cada uno de los cuales tiene un valor específico de negro (K). Mediante un algoritmo de selección que toma como parámetros la ligereza y el cromático, se elige un nivel de negro. Los valores CMY se obtienen por inversión de la tabla CMY a Luv correspondiente mediante los métodos Newton empleados en otro lugar por el algoritmo de impresora RGB.

Siga estos pasos.

  1. Imprima el destino de caracterización, que es el destino IT8.7/3 o un destino que contiene el muestreo del espacio CMYK a intervalos con espacio regular o irregular.
  2. Mida el objetivo mediante un espectrofotómetro y convierta las medidas en el espacio CIELUV.
  3. Construya el mapa hacia delante de CMYK a Luv.
  4. Use el mapa de reenvío para construir un conjunto de mapas CMY a Luv para un intervalo de valores K.
  5. Para cualquier valor de Luv de entrada, el valor CMYK correspondiente se obtiene seleccionando uno de los mapas construidos en el paso 4 anterior e invertido mediante el método newton para obtener un colorant CMY establecido para acompañar el valor K seleccionado.

Los pasos 1 y 2, que son procedimientos estándar, se realizan mediante un programa de generación de perfiles que no forma parte del nuevo CTE. El destino IT8.7/3 contiene un muestreo razonablemente detallado de todos los valores de CMYK en varios niveles de C, M, Y y K. Como alternativa, se puede usar un destino personalizado con muestreo uniforme de los canales C, M, Y y K. Después de imprimir el destino, se puede usar un espectrofotómetro o colorimeter para medir el valor XYZ de cada revisión y el valor XYZ se puede convertir en el valor luv mediante el modelo CIELUV.

El paso 3, la construcción del mapa hacia delante de CMYK a Luv, se puede lograr aplicando cualquier técnica de interpolación conocida, como el método tetrahedral o multilineal, en la cuadrícula rectangular en el espacio CMYK. En el nuevo CTE, se usa una interpolación tetraedral de 4 dimensiones. Dado que las cuadrículas de muestreo cmY son generalmente diferentes en cada nivel de K, sin embargo, usamos una técnica de supermuestreo, como se detalla a continuación. Para un punto CMYK determinado, los niveles K de sándwich se determinan primero en función del valor K. A continuación, introduzca una "supercuadrícula" en cada nivel K que sea una unión de las cuadrículas CMY en cada uno de los dos niveles K. En cada nivel K, el valor luv de cualquier punto de cuadrícula recién introducido se obtiene mediante una interpolación tetraedral 3 dimensional dentro de ese nivel K. Por último, se realiza una interpolación tetraedral 4 dimensional para el punto CMYK específico en esta nueva cuadrícula.

Diagrama que muestra el supermuestreo.

Figura 8 : Supermuestreo

El paso 4 construye un conjunto de tablas de búsqueda (LUT) de CMY a Luv. El mapa hacia delante construido en el paso 3 se llama repetidamente para reescalar el espacio CMYK. El espacio de color CMYK se muestrea utilizando un espaciado par de K y otro, pero aún espaciado uniformemente, de muestreo de CMY.

El paso 5 es un procedimiento para obtener el valor de CMYK mediante las LUT construidas en el paso 4 para cualquier punto de Luv de entrada. El valor adecuado de K se elige mediante el análisis de la ligereza, así como el grado de color en el Luv solicitado. Una vez seleccionada la tabla, los valores CMY se obtienen de la tabla mediante el método newton (como se documenta anteriormente en el modelo de dispositivo de impresora RGB).

El espacio CIELUV se usa en el modelo de impresora en lugar de CIEJab porque el modelo de dispositivo debe basarse únicamente en los datos colorimétricos disponibles en DMP. El DMP contiene datos colorimétricos para cada revisión medida, incluido el punto blanco multimedia, por lo que es posible convertir los datos de CIEXYZ en datos CIELUV. Sin embargo, no es posible convertir a CIECAM02 JCh o Jab, porque no hay acceso a la información de condición de visualización en el DMP.

Línea base del modelo de dispositivo del proyector RGB

Nota: Muchos proyectores RGB tienen más de un modo de funcionamiento. En un modo, que suele ser el valor predeterminado y podría llamarse algo como "presentación", la respuesta de color del proyector está optimizada para el brillo máximo. Sin embargo, en este modo, el proyector pierde la capacidad de reproducir colores ligeramente cromáticos, como amarillos pálidos y algunos tonos de carne. En otro modo, a menudo denominado "película", "vídeo" o "sRGB", el proyector está optimizado para la reproducción de imágenes realistas y escenas naturales. En este modo, el brillo máximo se contrae para mejorar la calidad general de la reproducción del color. Para obtener una reproducción de color satisfactoria con proyectores RGB, es necesario colocar el proyector en un modo en el que se pueda reproducir una gama suave de colores.

Diagrama que muestra un modelo de dispositivo D L P.

Figura 9 : Modelo de dispositivo DLP

Un valor RGB entrante pasa por dos caminos computacionales. La primera es el modelo de matriz, lo que da como resultado un valor XYZ. Esto va seguido inmediatamente de la conversión de XYZ a Luv. El segundo es la interpolación LUT no uniforme mediante interpolación tetrahedral. La salida de la interpolación ya está en el espacio luv por construcción. Las dos salidas se agregan para obtener el valor de Luv previsto. Por último, esto se convierte en XYZ, que es la salida esperada del modelo colorimétrico para el dispositivo DLP.

Dado que los proyectores son dispositivos de visualización, también admiten la inversión del modelo, es decir, la transformación de XYZ a RGB. Dado que el modelo de dispositivo transforma el espacio RGB en el espacio XYZ, que son tridimensionales, la inversión equivale a resolver tres ecuaciones no lineales en tres desconocidos. Esto puede hacerse mediante técnicas de resolución de ecuaciones estándar, como Newton-Raphson. Sin embargo, es preferible convertir primero XYZ a Luv y, a continuación, invertir la transformación luv a RGB, porque el espacio luv es más lineal que el espacio XYZ.

Línea base del modelo de dispositivo ICC

La interoperabilidad del flujo de trabajo de CIT ICC se habilita mediante la creación de un perfil de modelo de dispositivo de línea base de dispositivo ICC especial que almacena el objeto de perfil y crea una transformación ICC mediante un perfil XYZ sin operación. Después, esta transformación se usa para traducir entre colores de dispositivo y CIEXYZ.

Diagrama que muestra la interoperabilidad del flujo de trabajo de C I T E I C C.

Figura 10 : Interoperabilidad del flujo de trabajo DE CITA ICC

Conceptos básicos de administración de colores

Algoritmos y esquemas del Sistema de colores de Windows