Compartir a través de


Información de color extendida

Si sabes algo sobre el color RGB, sabes que (255, 255, 255) es el triple RGB de 8 bits para el color blanco. ¿Pero cuál es el color real definido por este triplete?

La respuesta puede ser sorprendente: sin alguna información adicional, este triplete no define ningún color en particular! El significado de cualquier valor RGB depende del espacio de color. Si no conocemos el espacio de color, entonces estrictamente hablando no sabemos el color.

Un espacio de colores define cómo se debe reproducir la representación numérica de un valor de color determinado como luz física. Cuando el vídeo se codifica en un espacio de color, pero se muestra en otro, da como resultado colores distorsionados, a menos que el vídeo se corrija en color. Para lograr una fidelidad de color precisa, por lo tanto, es fundamental conocer el espacio de color del vídeo de origen. Anteriormente, la canalización de vídeo en Windows no llevaba información sobre el espacio de color previsto. A partir de Windows Vista, DirectShow y Media Foundation admiten información de color extendida en el tipo de medio. Esta información también está disponible para la aceleración de vídeo DirectX (DXVA).

La manera estándar de describir un espacio de colores matemáticamente es usar el espacio de colores CIE XYZ, definido por la Comisión Internacional de Iluminación (CIE). No es práctico usar valores XYZ de CIE directamente en vídeo, pero el espacio de colores CIE XYZ se puede usar como representación intermedia al convertir entre espacios de color.

Para reproducir colores con precisión, se necesita la siguiente información:

  • Colores principales. Los colores principales definen cómo se representan los valores tristimulus de CIE XYZ como componentes RGB. En efecto, los colores principales definen el "significado" de un valor RGB determinado.
  • Función transfer. La función de transferencia es una función que convierte valores RGB lineales en valores R'G'B' no lineales. Esta función también se denomina corrección gamma.
  • Matriz de transferencia. La matriz de transferencia define cómo se convierte R'G'B' en Y'PbPr.
  • Muestreo cromático. La mayoría del vídeo YUV se transmite con menos resolución en los componentes cromáticos que el luma. El muestreo cromático se indica mediante el FOURCC del formato de vídeo. Por ejemplo, YUY2 es un formato 4:2:2, lo que significa que las muestras cromáticas se muestrea horizontalmente por un factor de 2.
  • Sición cromática. Cuando se muestrea el cromático, la posición de las muestras cromáticas relativas a las muestras luma determina cómo se deben interpolar las muestras que faltan.
  • Rango nominal. El intervalo nominal define cómo se escalan los valores de Y'PbPr a Y'CbCr.

Espacio de colores en tipos de medios

DirectShow, Media Foundation y DirectX Video Acceleration (DXVA) tienen diferentes formas de representar formatos de vídeo. Afortunadamente, es fácil traducir la información del espacio de colores de una a otra, ya que las enumeraciones pertinentes son las mismas.

  • DXVA 1.0: la información del espacio de color se proporciona en la estructura DXVA_ExtendedFormat .

  • DXVA 2.0: la información del espacio de colores se proporciona en la estructura DXVA2_ExtendedFormat . Esta estructura es idéntica a la estructura DXVA 1.0 y el significado de los campos es el mismo.

  • DirectShow: la información del espacio de colores se proporciona en la estructura VIDEOINFOHEADER2 . La información se almacena en los 24 bits superiores del campo dwControlFlags . Si la información del espacio de colores está presente, establezca la marca AMCONTROL_COLORINFO_PRESENT en dwControlFlags. Cuando se establece esta marca, el campo dwControlFlags debe interpretarse como una estructura de DXVA_ExtendedFormat , salvo que los 8 bits inferiores de la estructura están reservados para marcas de AMCONTROL_xxx .

  • Controladores de captura de vídeo: la información del espacio de color se proporciona en la estructura KS_VIDEOINFOHEADER2 . Esta estructura es idéntica a la estructura VIDEOINFOHEADER2 y el significado de los campos es el mismo.

  • Media Foundation: la información del espacio de color se almacena como atributos en el tipo de medio:

    Información de color Atributo
    Principales de color MF_MT_VIDEO_PRIMARIES
    Función Transfer MF_MT_TRANSFER_FUNCTION
    Matriz de transferencia MF_MT_YUV_MATRIX
    Submuestreo cromático MF_MT_SUBTYPE
    (Dada por FOURCC, que se almacena en la primera DWORD del GUID del subtipo GUID).
    Siting de cromática MF_MT_VIDEO_CHROMA_SITING
    Rango nominal MF_MT_VIDEO_NOMINAL_RANGE

     

Conversión del espacio de color

La conversión de un espacio Y'CbCr a otro requiere los pasos siguientes.

  1. Cuantificación inversa: convierta la representación Y'CbCr en una representación Y'PbPr mediante el rango nominal de origen.

  2. Muestreo: convierta los valores cromáticos muestreados en 4:4:4 mediante la interpolación de valores cromáticos.

  3. Conversión YUV a RGB: convierta de Y'PbPr a R'G'B' no lineal, mediante la matriz de transferencia de origen.

  4. Función de transferencia inversa: convierte R'G'B' no lineal en RGB lineal, utilizando el inverso de la función de transferencia.

  5. Conversión de espacio de color RGB: use los colores principales para convertir desde el espacio RGB de origen al espacio RGB de destino.

  6. Función de transferencia: convierta RGB lineal en R'G'B no lineal mediante la función de transferencia de destino.

  7. Conversión RGB a YUV: convierta R'G'B' a Y'PbPr mediante la matriz de transferencia de destino.

  8. Muestreo descendente: convierta 4:4:4 a 4:2:2, 4:2:0 o 4:1:1 filtrando los valores cromáticos.

  9. Cuantificación: convierta Y'PbPr en Y'CbCr con el rango nominal de destino.

Los pasos 1–4 se producen en el espacio de color de origen y los pasos 6-9 se producen en el espacio de color de destino. En la implementación real, los pasos intermedios se pueden aproximar y se pueden combinar pasos adyacentes. Por lo general, existe un equilibrio entre la precisión y el costo computacional.

Por ejemplo, para convertir de RT.601 a RT.709 requiere las siguientes fases:

  • Cuantificación inversa: Y'CbCr(601) a Y'PbPr(601)

  • Muestreo: Y'PbPr(601)

  • YUV a RGB: Y'PbPr(601) a R'G'B'(601)

  • Función de transferencia inversa: R'G'B'(601) a RGB(601)

  • Conversión de espacio de color RGB: RGB(601) a RGB(709)

  • Función de transferencia: RGB(709) a R'G'B'(709)

  • RGB a YUV: R'G'B'(709) a Y'PbPr(709)

  • Muestreo descendente: Y'PbPr(709)

  • Cuantificación: Y'PbPr(709) a Y'CbCr(709)

Usar información de color extendida

Para conservar la fidelidad de color en toda la canalización, la información del espacio de colores debe introducirse en el origen o el descodificador y transmitirse todo el camino a través de la canalización al receptor.

Dispositivos de captura de vídeo

La mayoría de los dispositivos de captura analógica usan un espacio de color bien definido al capturar vídeo. Los controladores de captura deben ofrecer un formato con un bloque de formato KS_VIDEOINFOHEADER2 que contenga la información de color. Por motivos de compatibilidad con versiones anteriores, el controlador debe aceptar formatos que no contengan la información de color. Esto permitirá que el controlador funcione con componentes que no acepten la información de color extendida.

Orígenes basados en archivos

Al analizar un archivo de vídeo, es posible que el origen multimedia (o el filtro del analizador, en DirectShow) pueda proporcionar parte de la información de color. Por ejemplo, el navegador de DVD puede determinar el espacio de color en función del contenido del DVD. Es posible que haya otra información de color disponible para el descodificador. Por ejemplo, una secuencia de vídeo elemental MPEG-2 proporciona la información de color en el campo sequence_display_extension. Si la información de color no se describe explícitamente en el origen, podría definirse implícitamente por el tipo de contenido. Por ejemplo, las variedades NTSC y PAL de vídeo DV usan espacios de color diferentes. Por último, el descodificador puede usar la información de color que obtenga del tipo de medio del origen.

Otros componentes

Es posible que otros componentes necesiten usar la información del espacio de colores en un tipo de medio:

  • Los convertidores de espacio de color de software deben usar información de espacio de colores al seleccionar un algoritmo de conversión.
  • Los mezcladores de vídeo, como el mezclador mejorado de video renderizador (EVR), deben usar la información de color al mezclar secuencias de vídeo de diferentes tipos de contenido.
  • Las API y las DDIs de procesamiento de vídeo DXVA permiten al autor de la llamada especificar información de espacio de colores. La GPU debe usar esta información cuando realiza la mezcla de vídeos de hardware.

tipos de medios de vídeo

aceleración de vídeo directX 2.0