Compartir a través de


Esquema y algoritmos de perfil del modelo de dispositivo de color WCS

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

Este tema contiene las secciones siguientes:

Visión general

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

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

El componente de muestreo del esquema XML DMP proporciona compatibilidad con destinos de medición de color básicos, 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 de 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 compone un perfil de modelo de dispositivo.

Esquema 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 ColorDeviceModel elemento 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 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 del esquema CDMP

Nota

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

Nota

Las DMV deben tener datos de medición.

ColorDeviceModelProfile

Este elemento es de tipo ColorDeviceModel.

condiciones de validación: cada sublemento 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 sublemento se valida por su propio tipo. Los sub elementos 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

Versión = "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 sub elementos de un objeto MeasurementData DisplayMeasurementType.

condiciones de validación: cada sublemento se valida por su propio tipo.

Elemento LCDDevice

Este elemento es una secuencia de sub elementos de un objeto MeasurementData DisplayMeasurementType.

condiciones de validación: cada sublemento 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 sublemento se valida por su propio tipo.

Elemento ScannerDevice

Este elemento es una secuencia de subelementos de un Objeto MeasurementData RGBCaptureMeasurementType

condiciones de validación: cada sublemento se valida por su propio tipo.

Elemento CameraDevice

Este elemento es una secuencia de subelementos de un Objeto MeasurementData RGBCaptureMeasurementType

condiciones de validación: cada sublemento se valida por su propio tipo.

Elemento RGBPrinterDevice

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

condiciones de validación: cada sublemento 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 sublemento se valida por su propio tipo.

Elemento RGBVirtualDevice

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

condiciones de validación: cada sublemento se valida por su propio tipo.

PlugInDeviceType

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

condiciones de validación: Se usa el GUID para que coincida con el GUID del archivo DLL de DM PlugIn. Hay un máximo de 100 000 subelementos personalizados.

RGBVirtualMeasurementType

Este elemento es una secuencia que consta de

  1. Grupo RGBPrimariesGroup

  2. Una opción de

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

  4. TimeStamp dateTime

Condiciones de validación: Cada sublemento 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: Determinar 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: Determinar 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: Determinar 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: Determinar a partir de los comentarios del sector.

GamutBoundarySamplesType

Este elemento es una secuencia de RGB RGBTypes.

condiciones de validación: las repeticiones máximas sin enlazar actualmente, que 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: Determinar 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: Determinar 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: Determinar a partir de los comentarios del sector.

RGBCaptureMeasurementType

Este elemento es una secuencia de

  1. ComplexType primaryIndex de

    1. White OneBasedIndex
    2. Black OneBasedIndex opcional
    3. Red OneBasedIndex opcional
    4. Green OneBasedIndex opcional
    5. Blue OneBasedIndex opcional
    6. Cian 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 TimeStamp dateTime.

condiciones de validación: Determinar 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: Determinar a partir de los comentarios del sector.

RGBProjectorMeasurementType

Este elemento es una secuencia de

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

El elemento también tiene un atributo TimeStamp dateTime.

condiciones de validación: Determinar 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 TimeStamp dateTime.

condiciones de validación: Determinar a partir de los comentarios del sector.

MeasurementConditionsType

MeasurementConditionsType es una secuencia de sub elementos que contiene:

  1. Valor de enumeración de cadenas restringidas de ColorSpace de "CIEXYZ"
  2. opción opcional de la enumeración de cadenas 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: Validación de cada sub-elemento viene determinado por condiciones de validación para esos sub elementos secundarios. Si falta algún sublemento, se usa el valor predeterminado específico del tipo de modelo de dispositivo.

GeometryType

Cuerda

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 son válidos. 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: Determinar 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 de etiqueta de atributo opcional.

condiciones de validación: Determinar 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 de etiqueta de atributo opcional.

condiciones de validación: Determinar a partir de los comentarios del sector.

NonNegativeCMYKType

Este elemento consta de atributos

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

condiciones de validación: Determinar 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: Determinar a partir de los comentarios del sector.

ExtensionType

El elemento ExtensionType es una secuencia de cualquier tipo de subelemento y se usa para obtener 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 única denominados "X", "Y" y "Z". Estos valores se limitan a los valores de medida de perfiles DMP. Estas medidas pueden ser valores absolutos (no relativos) ciEXYZ 1931 reflectantes o valores absolutos (no relativos) CIEXYZ 1931 directo (transmisivo) en candelas por unidades cuadradas de medidor.

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 única: "X", "Y" y "Z".

Algoritmos de línea base de CDMP

Línea 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 pantalla de un dispositivo de visualización CRT. Los siguientes valores de ejemplo 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 = G = 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 neutral 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 destello. 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 inicial 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 plano, 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 se recorre a lo largo de los canales R, G y B. Basado en Berns[3], buscamos ( XK,YK,ZK ) que minimiza la siguiente función objetivo:

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,SGy 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 cromáticas del punto Muestra una formaula para un punto. , por lo que Muestra una fórmula para el promedio o el 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 extienden 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 (17 puntos 2xy -components 3 canales = 102, en el ejemplo) y, por lo tanto, es amable para técnicas de mínimos no lineales estándar, 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 la ú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 puedan extenderse bastante al respecto. En el ejemplo, la dispersión de puntos se contola directamente utilizando 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 se seleccionaron empíricamente. En versiones futuras, puede 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 rojo y verde. , 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, a continuación, el siguiente procedimiento 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. Mostrar el valor b del subíndice t 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 -k g 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 la 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 por lo general 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 Symposium '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 del 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 base del modelo de dispositivo LCD es similar a la línea 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 eso, 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 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 = G = 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 promedio de cromáticas de color medida para obtener las cromáticas de los dispositivos principales es más crítico para los LCD que para los CRT. Cuando las medidas XYZ se trazan en la cromática xy plano, se muestra una situación típica en la figura 1. Observe cómo la cromática se desfase 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 utilizando datos sin procesar sin corrección.

Figura 1 : Diagrama de cromatidad mediante 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 cromatidad utilizando datos con punto negro ajustado

Línea 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 conocidos de CIEXYZ 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 del 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 polinomiales de grados bajos. Este procedimiento se detalla en la literatura, por ejemplo Kang[92], Kang[97]. En Kang[97], se notifica 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 polinomial de 20 términos, la forma es:

Muestra el polinomial de 20 términos.

Hay expresiones similares para Y y Z. La técnica matemática para ajustar los polinomiales 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 equivalentemente, la suma de cuadrados de las distancias euclidianas. En la práctica, desea minimizar la suma de cuadrados de ? ¿Dónde? E es uno de los estándares aceptados, como CIE94. Minimizar esta función objetivo es un problema de regresión no lineal.

En el nuevo motor, Lab to XYZ es el espacio de color CIE 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 modo 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, uni, 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 punto de datos (Ri,Gi,Bi;Li,ui,vi ) en el 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, uni, * 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, uni 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 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. Una buena estimación inicial suele ser 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, definiendo 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 ?i solo aparece en el modelado de L, uni solo aparece en el modelado u y * i* solo aparece en el modelado de 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 de L. (Las ecuaciones de u y las ecuaciones de v siguen exactamente el mismo argumento). El problema de minimizar la suma de cuadrados de errores en L se puede indicar como resolver 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. ¿Una solución de formulario cerrada para ? está disponible:

Muestra una solución de formulario cerrada.

En la práctica, no se usa la evaluación directa mediante la solución de formulario cerrado porque tiene propiedades numéricas deficientes. En su lugar, se aplica algún tipo de algoritmo de factorización de matriz 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 valor singular (SVD) se aplica a la matriz R y, a continuación, se resuelve el sistema descomponido resultante.

Solución al problema de regresión lineal, indicado 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, unaii son 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 ejemplo i, y Rij es la entrada (i,j )ésima entrada de la matriz R definida anteriormente. Por lo tanto, en lugar de calcular derivados para 60 parámetros, puede calcular derivados para L,uny b mediante diferencias numéricas de reenvío.

También es necesario configurar un criterio de detención para algoritmos iterativos. En la implementación actual, las iteraciones se finalizan si el cuadrado medio DECIE94 es menor que 1 o el número de iteraciones realizadas ha superado 10. El número 10 procede 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 el caso de que el algoritmo diverges, 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 polinomiales tienden a superar o subsoponer más allá de los puntos de datos. La máxima y la minima locales artificiales se pueden introducir en el proceso de ajuste. Esto se puede contrarrestar mediante polinomiales de grado bajo, que es la razón por la que no debe usar más de tres grados. Un aspecto más serio de sobresaltar o desajustar es que, mientras que 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 sobresaplicación o subsanación no es grave. Sin embargo, los puntos RGB capturados del dispositivo de captura no suelen rellenar uniformemente el espacio RGB. Los puntos pueden rellenarse solo dentro de los 80% del cubo RGB, o peor, pueden residir en un manifold dimensional inferior. Cuando esto sucede, los polinomiales 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 polinomiales de regresión mediante la imposición de costos adicionales a esos polinomiales que se comportan de forma errática cerca del límite del cubo RGB. Una medida adicional para asegurarse de que los polinomiales siempre devuelven valores realistas se aplica recortando la salida a dentro del locus espectral CIE.

Es en este punto que el modelado del escáner y el modelado de cámara se diferencian entre sí. Se espera que el modelo de cámara se extrapola a las 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 examinar. 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 destino 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 fuerza a no extrapolar más allá de "Dmin" del destino 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 polinomiales en regiones con muestreo insuficiente. Al colocar estratégicamente estos puntos de control con los valores adecuados, sirven para "extraer" las polinomiales 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 asociará. Por lo general, para un determinado (R,G,B ), un peso se asocia a cada uno de los (Ri,Gi,Bi ) en el 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 puntos que tienen un tono diferente al punto dado (R,G,B ). Para tener en cuenta el tono, considere los puntos que se encuentran dentro de un cono cuyo vértice está en (0, 0, 0, 0), cuyo eje coincide con la unión de línea (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 vecindario representado es solo para fines ilustrativos. La forma real depende de la distancia utilizada; es un vecindario con forma de diamante 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 señala 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 las cos ? por 0,05, es decir, aumentar 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, salvo 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,uni,bi ), a continuación, para cada punto, 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 a 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 R,G,B y L,un,b valores, 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 de toda la canalización de procesamiento de colores, debe realizar un recorte final en la salida del modelo polinómico. La gama visual 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 usa el a'b' cromática porque está directamente relacionado 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 en 100, el límite superior "convencional" para L en el espacio del laboratorio.

A continuación, si L = 0, un y b 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 del diagrama de 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 para 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 un y b valor se reconstruye restando primero un y b?' del recortado a' y b'y, a continuación, 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 (correspondiente 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 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 consta de la construcción de un modelo empírico del dispositivo que predice el color CIELUV independiente del dispositivo para cualquier valor RGB determinado.

Hay dos maneras de construir el modelo empírico. 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 espectrofotómetro en el espacio CIEXYZ. A continuación, el valor XYZ de una revisión se convierte en el valor CIELUV, formando un LUT 3D. En el modelo de dispositivo, el método de interpolación tetrahedral de Sakamoto se aplica al LUT 3D para predecir los datos CIELUV para los datos RGB especificados. (Confer US Patent 4275413 (Sakamoto et al.), US Patent 4511989 (Sakamoto), Kang [1]. Las dos patentes mencionadas han expirado). Los datos de 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írico se usa directamente en el mapa de origen. Primero asigna un determinado datos RGB 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írico y el método clásico 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 un LUT 3D de RGB a CieLUV, el mapa de RGB a LUV se crea mediante la 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.

La inversión del mapa consta de 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 anterior, s anterior -(R 0, G 0, B 0 ) se obtiene mediante la 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 la luv correspondiente RGB más cercana a 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, STEP/2+(j-1)STEP, STEP/2+(k-1)STEP) with i,j,k = 1...8 At the i th step of Newton-Raphson, the next estimate Shows the variables for the next estimate. 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 eficaces. 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 varios de los 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 no se logre la convergencia porque Newton-Raphson es un algoritmo "local", es decir, solo funciona bien si empieza con una estimación inicial que está cerca de la solución verdadera. Si, al final de la Newton-Raphson iteraciones, no se ha logrado la convergencia dentro de la tolerancia a errores predefinida, las iteraciones se reinician con un nuevo conjunto de semillas, definidos de la siguiente manera.

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.

Es decir, 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 de lo 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) * 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 Nº ????.

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 simple de reproducción de matriz/tono. La matriz se deriva del punto blanco y las principales que usan algoritmos estándar de ciencia de colores. 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 se invierte según sea necesario). Los detalles de los algoritmos internos se proporcionarán después de la validación adicional de problemas de rango dinámico alto.

El modelo de dispositivo virtual RGB es una curva rgb de reproducción de matriz/tono idealizada similar al diseño de perfil basado en matriz de tres componentes ICC. Los parámetros de "medida 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
g
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/A
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 matriz multiplicada. 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 valores en 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 más 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 dispositivo de una impresora CMYK consta de la construcción de 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 prescripción del valor CMYK para que se imprima un color determinado. Normalmente 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). A continuación, cada parche se mide con un colorimeter o un esspectrophotometer. 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 los ejemplos de medida de CMYK necesarios 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 y un espaciado diferentes 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. En otras palabras, debe existir una muestra en cada intersección de cuadrícula 3D dentro del cubo CMY.

  • Para los cubos K = 0 y K = 100 CMY, los cubos "solo esquinas" de 2x2x2 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 "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 de 4x4x4 son los mínimos aceptados como válidos.

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. Los ejemplos 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 van a 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 están situados 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 tetrahedro, 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 supone 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 de 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 a la distancia, y el interpolante se toma como la media ponderada de los puntos vecinos. En este enfoque, la elección de puntos vecinos es fundamental 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 los datos que son 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). Utilizando un algoritmo de selección que toma como parámetros la luz y el cromático, se elige un nivel de negro. Los valores CMY se obtienen mediante la 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 destino 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 hacia delante 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 invertir usando el método newton para obtener un colorante 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 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 esspectrophotometer o colorimeter para medir el valor XYZ de cada revisión y el valor XYZ se puede convertir al valor luv mediante el modelo CIELUV.

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 tetrahedral 4 dimensional. 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, introduce una "super grid" en cada nivel K que es 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 tetrahedral 3 dimensional dentro de ese nivel K. Por último, se realiza una interpolación tetrahedral 4 dimensional para el punto CMYK específico en esta nueva cuadrícula.

Diagrama que muestra el supermuestreo.

Figura 8 : Supermuestreo

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

El paso 5 es un procedimiento para obtener el valor cmYK mediante los LUT construidos 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 de Newton (como se documenta en el modelo de dispositivo de impresora RGB anteriormente).

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 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 claros, 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. La segunda 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. Esto se convierte finalmente en XYZ, que es la salida esperada del modelo colorimétrico para el dispositivo DLP.

Dado que los proyectores son dispositivos para mostrar, 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 bidimensionales, 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 To RGB, ya que el espacio luv es más perceptualmente lineal que el espacio XYZ.

Línea base del modelo de dispositivo ICC

La interoperabilidad del flujo de trabajo de CITE ICC se habilita mediante la creación de un perfil especial de modelo de dispositivo de línea base de dispositivo ICC que almacena el objeto de perfil y crea una transformación ICC mediante un perfil de no-op XYZ. A continuación, esta transformación se usa para traducir entre los colores del 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 CITE ICC

conceptos básicos de administración de colores

esquemas y algoritmos del sistema de colores de Windows