ES2874552T3 - Diseño de codificación y descodificación en modo de paleta - Google Patents

Diseño de codificación y descodificación en modo de paleta Download PDF

Info

Publication number
ES2874552T3
ES2874552T3 ES15748436T ES15748436T ES2874552T3 ES 2874552 T3 ES2874552 T3 ES 2874552T3 ES 15748436 T ES15748436 T ES 15748436T ES 15748436 T ES15748436 T ES 15748436T ES 2874552 T3 ES2874552 T3 ES 2874552T3
Authority
ES
Spain
Prior art keywords
palette
block
video data
video
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES15748436T
Other languages
English (en)
Inventor
Rajan Laxman Joshi
Wei Pu
Vadim Seregin
Rojals Joel Sole
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2874552T3 publication Critical patent/ES2874552T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento: determinar (300) que un bloque de datos de vídeo se ha de codificar usando un modo de paleta; determinar (302) un tamaño de paleta para el bloque de datos de vídeo; codificar (306) el bloque de datos de vídeo usando el modo de paleta; determinar (308) si se ha de señalizar un primer elemento de sintaxis de nivel de bloque para descodificar el primer bloque de datos de vídeo codificado en modo de paleta, en el que el primer elemento de sintaxis de nivel de bloque es representativo de si un proceso de transposición se aplica o no a unos índices de paleta del bloque actual; caracterizado por que cuando el tamaño de paleta es igual a un valor de uno y el bloque de datos de vídeo codificado en paleta no incluye al menos un píxel de escape, la primera sintaxis de nivel de bloque no se señaliza.

Description

DESCRIPCIÓN
Diseño de codificación y descodificación en modo de paleta
CAMPO TÉCNICO
[0001] La presente divulgación se refiere a la codificación y a la descodificación de vídeo.
ANTECEDENTES
[0002] Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes personales digitales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos de radio móviles o de satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por el MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificación avanzada de vídeo (AVC), la norma de codificación de vídeo de alta eficacia (HEVC) actualmente en desarrollo y ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca a las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un segmento de vídeo (es decir, una trama de vídeo o una parte de una trama de vídeo) se puede partir en bloques de vídeo. Los bloques de vídeo de un segmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a unas muestras de referencia de bloques vecinos de la misma imagen. Los bloques de vídeo de un segmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a unas muestras de referencia de bloques vecinos de la misma imagen o predicción temporal con respecto a unas muestras de referencia de otras imágenes de referencia. Las imágenes se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia.
[0004] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio de píxel hasta un dominio de transformada, dando como resultado unos coeficientes residuales que, a continuación, se pueden cuantificar. Se puede realizar un barrido de los coeficientes cuantificados, dispuestos inicialmente en una matriz bidimensional, para generar un vector unidimensional de coeficientes, y se puede aplicar codificación entrópica para lograr incluso más compresión.
[0005] El documento de Lai P et al. "Description of screen content coding technology proposal by MediaTek" (JCT-VC Meeting; 27-3-2014 - 4-4-2014; Valencia) describe técnicas de codificación basada en paleta. La sección 2.7.3.2.3 describe la señalización de un indicador denominada "indicador de rotación de índice de color" para unidades de codificación codificadas en modo de paleta. Si el indicador es igual a 1, las áreas de posición de muestra para el mapa de índices de color se intercambiarán.
[0006] El documento de Pu W et al. "Non-RCE4: Refinement of the palette in RCE4 Test 2"(JCT-VC Meeting; 9­ 1-2014 - 17-1-2014; San Jose) también describe técnicas de codificación basada en paleta. La sección 2.1 describe, cuando hay un solo elemento (color) en la paleta, la omisión de la codificación de los elementos de sintaxis que indican el color de los píxeles.
BREVE EXPLICACIÓN
[0007] El alcance de protección está definido por las reivindicaciones independientes. Las características opcionales se indican en las reivindicaciones dependientes.
[0008] Las técnicas de la presente divulgación se refieren a la codificación de vídeo basada en paleta. Por ejemplo, en la codificación de vídeo basada en paleta, un codificador de vídeo (por ejemplo, un codificador de vídeo o un descodificador de vídeo) puede formar una "paleta" como una tabla de colores para representar los datos de vídeo del área particular (por ejemplo, un bloque dado). La codificación de vídeo basada en paleta puede ser especialmente útil para codificar áreas de datos de vídeo que tienen un número relativamente pequeño de colores. En lugar de codificar valores de píxeles reales (o sus residuos), el codificador de vídeo puede codificar índices de paleta para uno o más de los píxeles que relacionan los píxeles con entradas de la paleta que representan los colores de los píxeles. Las técnicas descritas en la presente divulgación también pueden incluir técnicas para diversas combinaciones de uno o más de señalización de modos de codificación de vídeo basada en paleta, transmisión de paletas, obtención de paleta, obtención del valor de unos elementos de sintaxis no transmitidos y transmisión de mapas de codificación de vídeo basada en paleta y otros elementos de sintaxis.
[0009] De acuerdo con un aspecto de la presente invención, se proporciona un procedimiento de descodificación de datos de vídeo, comprendiendo el procedimiento: recibir un primer bloque de datos de vídeo codificado en modo de paleta de una imagen; determinar un tamaño de paleta para el primer bloque de datos de vídeo codificado en modo de paleta; en base al tamaño de paleta para el primer bloque de datos de vídeo codificado en modo de paleta, inferir un valor de cero para un primer elemento de sintaxis de nivel de bloque que no está presente para el primer bloque codificado en modo de paleta, en el que el valor de cero para el primer elemento de sintaxis de nivel de bloque indica que un proceso de transposición no se va a aplicar para descodificar el primer bloque de datos de vídeo codificado en modo de paleta; descodificar el primer bloque de datos de vídeo codificado en modo de paleta usando el valor inferido de cero para el primer elemento de sintaxis de nivel de bloque; recibir un segundo bloque de datos de vídeo codificado en modo de paleta de la imagen; determinar un tamaño de paleta para el segundo bloque de datos de vídeo codificado en modo de paleta; en base al tamaño de paleta para el segundo bloque de datos de vídeo codificado en modo de paleta, recibir un segundo elemento de sintaxis de nivel de bloque que tiene un valor de cero o un valor de uno, en el que el valor de cero para el segundo elemento de sintaxis de nivel de bloque indica que un proceso de transposición no se va a aplicar para descodificar el segundo bloque de datos de vídeo codificado en modo de paleta y el valor de uno indica que el proceso de transposición se va a aplicar para descodificar el segundo bloque de datos de vídeo codificado en modo de paleta; y descodificar el segundo bloque de datos de vídeo codificado en modo de paleta usando el valor de cero o el valor de uno recibido para el segundo elemento de sintaxis de nivel de bloque.
[0010] De acuerdo con otro aspecto de la presente invención, se proporciona un dispositivo para descodificar datos de vídeo, comprendiendo el dispositivo: una memoria configurada para almacenar datos de vídeo de una imagen; y un descodificador de vídeo configurado para: recibir un primer bloque de datos de vídeo codificado en modo de paleta; determinar un tamaño de paleta para el primer bloque de datos de vídeo codificado en modo de paleta; en base al tamaño de paleta para el primer bloque de datos de vídeo codificado en modo de paleta, inferir un valor de cero para un primer elemento de sintaxis de nivel de bloque que no está presente para el primer bloque codificado en modo de paleta, en el que el valor de cero para el primer elemento de sintaxis de nivel de bloque indica que no se va a aplicar un proceso de transposición para descodificar el primer bloque de datos de vídeo codificado en modo de paleta; descodificar el primer bloque de datos de vídeo codificado en modo de paleta usando el valor inferido de cero para el primer elemento de sintaxis de nivel de bloque; recibir un segundo bloque de datos de vídeo codificado en modo de paleta de la imagen; determinar un tamaño de paleta para el segundo bloque de datos de vídeo codificado en modo de paleta; en base al tamaño de paleta para el segundo bloque de datos de vídeo codificado en modo de paleta, recibir un segundo elemento de sintaxis de nivel de bloque que tiene un valor de cero o un valor de uno, en el que el valor de cero para el segundo elemento de sintaxis de nivel de bloque indica que un proceso de transposición no se va a aplicar para descodificar el segundo bloque de datos de vídeo codificado en modo de paleta y el valor de uno indica que el proceso de transposición se va a aplicar para descodificar el segundo bloque de datos de vídeo codificado en modo de paleta; y descodificar el segundo bloque de datos de vídeo codificado en modo de paleta usando el valor de cero o el valor de uno recibido para el segundo elemento de sintaxis de nivel de bloque.
[0011] De acuerdo con otro aspecto de la presente invención, se proporciona un medio de almacenamiento no transitorio legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que uno o más procesadores de un dispositivo informático configurado para descodificar datos de vídeo: reciban un primer bloque de datos de vídeo codificado en modo de paleta de una imagen; determinen un tamaño de paleta para el primer bloque de datos de vídeo codificado en modo de paleta; en base al tamaño de paleta para el primer bloque de datos de vídeo codificado en modo de paleta, infieran un valor de cero para un primer elemento de sintaxis de nivel de bloque que no está presente para el primer bloque codificado en modo de paleta, en el que el valor de cero para el primer elemento de sintaxis de nivel de bloque indica que no se va a aplicar un proceso de transposición para descodificar el primer bloque de datos de vídeo codificado en modo de paleta; descodifiquen el primer bloque de datos de vídeo codificado en modo de paleta usando el valor de cero inferido para el primer elemento de sintaxis de nivel de bloque; reciban un segundo bloque de datos de vídeo codificado en modo de paleta de la imagen; determinen un tamaño de paleta para el segundo bloque de datos de vídeo codificado en modo de paleta; en base al tamaño de paleta para el segundo bloque de datos de vídeo codificado en modo de paleta, reciban un segundo elemento de sintaxis de nivel de bloque que tiene un valor de cero o un valor de uno, en el que el valor de cero para el segundo elemento de sintaxis de nivel de bloque indica que no se va a aplicar un proceso de transposición para descodificar el segundo bloque de datos de vídeo codificado en modo de paleta y el valor de uno indica que se va a aplicar el proceso de transposición para descodificar el segundo bloque de datos de vídeo codificado en modo de paleta; y descodifiquen el segundo bloque de datos de vídeo codificado en modo de paleta usando el valor de cero o el valor de uno recibido para el segundo elemento de sintaxis de nivel de bloque.
[0012] De acuerdo con otro aspecto de la presente invención, se proporciona un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento: determinar que un bloque de datos de vídeo se va a codificar usando un modo de paleta; determinar un tamaño de paleta para el bloque de datos de vídeo; codificar el bloque de datos de vídeo usando el modo de paleta; determinar, en base al tamaño de la paleta, si se va a señalizar un primer elemento de sintaxis de nivel de bloque representativo de si se aplica o no un proceso de transposición para descodificar el primer bloque de datos de vídeo codificado en modo de paleta; y no señalizar el primer elemento de sintaxis de nivel de bloque cuando el tamaño de paleta es igual a un valor de cero o cuando el tamaño de paleta es igual a un valor de uno y el bloque de datos de vídeo codificado en modo de paleta no incluye al menos un píxel de escape.
[0013] De acuerdo otro aspecto de la presente invención, se proporciona un dispositivo para codificar datos de vídeo, comprendiendo el dispositivo: una memoria configurada para almacenar datos de vídeo de una imagen; y un codificador de vídeo configurado para: determinar que un bloque de datos de vídeo se va de codificar usando un modo de paleta; determinar un tamaño de paleta para el bloque de datos de vídeo; codificar el bloque de datos de vídeo usando un modo de paleta; determinar, en base al tamaño de paleta, si se va a señalizar un primer elemento de sintaxis de nivel de bloque representativo de si se aplica o no un proceso de transposición para descodificar el primer bloque de datos de vídeo codificado en modo de paleta; y no señalizar el primer elemento de sintaxis de nivel de bloque cuando el tamaño de la paleta es igual a un valor de cero o cuando el tamaño de paleta es igual a un valor de uno y el bloque de datos de vídeo codificado en modo de paleta no incluye al menos un píxel de escape.
[0014] Los detalles de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y en la descripción siguiente. Otras características, objetivos y ventajas resultarán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0015]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo de ejemplo que puede utilizar las técnicas para codificación de vídeo basada en paleta descritas en la presente divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas para codificación de vídeo basada en paleta descritas en la presente divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas para codificación de vídeo basada en paleta descritas en la presente divulgación.
La FIG. 4 es un diagrama conceptual que ilustra un ejemplo de determinación de entradas de paleta para codificación de vídeo basada en paleta, consecuente con las técnicas de la presente divulgación.
La FIG. 5 es un diagrama conceptual que ilustra un ejemplo de determinación de índices a una paleta para un bloque de píxeles, consecuente con las técnicas de la presente divulgación.
La FIG. 6A es un diagrama conceptual que ilustra un ejemplo de orden de barrido de píxeles.
La FIG. 6B es un diagrama conceptual que ilustra un ejemplo de orden de barrido de píxeles.
La FIG. 7 es un diagrama de flujo que ilustra un proceso de ejemplo para descodificar datos de vídeo consecuente con las técnicas para codificación de vídeo basada en paleta de la presente divulgación.
La FIG. 8 es un diagrama de flujo que ilustra un proceso de ejemplo para codificar datos de vídeo consecuente con las técnicas para codificación de vídeo basada en paleta de la presente divulgación.
La FIG. 9 es un diagrama conceptual que ilustra un ejemplo de habilitación del modo Copia para la primera fila de un bloque de datos de vídeo consecuente con unas técnicas para codificación de vídeo basada en paleta de la presente divulgación.
La FIG. 10 es un diagrama de flujo que ilustra un proceso de ejemplo para descodificar datos de vídeo consecuente con las técnicas para codificación de vídeo basada en paleta de la presente divulgación.
La FIG. 11 es un diagrama de flujo que ilustra un proceso de ejemplo para codificar datos de vídeo consecuente con las técnicas para codificación de vídeo basada en paleta de la presente divulgación.
DESCRIPCIÓN DETALLADA
[0016] Los aspectos de la presente divulgación están dirigidos a unas técnicas para codificación de vídeo y compresión de datos de vídeo. En particular, la presente divulgación describe unas técnicas para codificación de vídeo basada en paleta de datos de vídeo. En la codificación de vídeo tradicional, se supone que las imágenes son de tono continuo y espacialmente uniformes. En base a estos supuestos, se han desarrollado diversas herramientas, tales como transformadas basadas en bloques, filtrado y otras herramientas de codificación, y dichas herramientas han mostrado un buen rendimiento para vídeos de contenido natural. Sin embargo, en aplicaciones tales como las de escritorio remoto, trabajo colaborativo y visualización inalámbrica, el contenido de pantalla generado por ordenador puede ser el contenido dominante que se ha de comprimir. Este tipo de contenido de pantalla tiende a tener un tono discreto, líneas nítidas y límites de objetos de alto contraste. El supuesto de tono continuo y uniformidad pueden dejar de ser aplicables y, por lo tanto, las técnicas de codificación de vídeo tradicionales pueden resultar ineficaces en la compresión de contenido de pantalla.
[0017] La presente divulgación describe las técnicas de codificación de vídeo basada en paleta, que pueden ser particularmente adecuadas para la codificación de contenido de pantalla generado por ordenador (por ejemplo codificación de contenido de pantalla (SCC)) u otro contenido donde una o más herramientas de codificación tradicionales son ineficaces. Las técnicas para codificación de vídeo basada en paleta de datos de vídeo descrita en la presente divulgación se pueden usar con una o más de otras técnicas de codificación, tales como unas técnicas para codificación interpredictiva o intrapredictiva. Por ejemplo, como se describe con más en detalle a continuación, un codificador o descodificador, o un codificador-descodificador combinado (códec), puede estar configurado para realizar una codificación interpredictiva e intrapredictiva, así como una codificación de vídeo basada en paleta.
[0018] Recientemente, el Equipo Mixto de Colaboración sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC ha terminado el diseño de una nueva norma de codificación de vídeo, a saber, la codificación de vídeo de alta eficacia (HEVC). El JCT-VC también está desarrollando la ampliación a la HEVC de codificación de contenido de pantalla, denominada SCC. Un borrador de trabajo (WD) reciente de SCC (SCC WD) que incluye una descripción del modo de paleta está disponible en JCTVC-R0348 "JCTVC-R0348_18thMeetingFinalPaletteTextSpecification.doc".
[0019] En algunos ejemplos, las técnicas de codificación de vídeo basada en paleta pueden estar configuradas para su uso con una o más normas de codificación de vídeo. Las normas de codificación de vídeo de ejemplo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC). La codificación de vídeo de alta eficacia (HEVC) es una nueva norma de codificación de vídeo desarrollada por el Equipo Conjunto de Colaboración en Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC. Un reciente borrador de especificación textual de la HEVC se describe en el documento de Bross et al., "High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Consent)," JCVC-L1003_v13, 12.a reunión de JCT-VC de ITU-T SG16 WP 3 e ISO/IEC JCT 1/SC 29/WG 11, 14 - 23 de enero de 2013 ("HEVC Draft 10"), disponible en: http://phenix.intevry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v13.zip.
[0020] Con respecto al marco de trabajo de la HEVC, como ejemplo, las técnicas de codificación de vídeo basada en paleta de la presente divulgación pueden estar configuradas para su uso en un nivel de unidad de codificación (CU). En otros ejemplos para HEVC, las técnicas de codificación de vídeo basada en paleta de la presente divulgación pueden estar configuradas para su uso en el nivel unidad de predicción (PU). En otros ejemplos para HEVC, las técnicas de codificación de vídeo basada en paleta de la presente divulgación pueden estar configuradas para su uso en el nivel de unidad de subpredicción (sub-PU) (por ejemplo, un subbloque de una unidad de predicción). En consecuencia, todos los siguientes procesos divulgados y descritos en el contexto de un nivel de CU se pueden aplicar, de forma adicional o alternativa, a un nivel de PU o a un nivel de sub-PU. Sin embargo, estos ejemplos basados en HEVC no se deben considerar como una restricción o limitación de las técnicas de codificación de vídeo basada en paleta descritas en el presente documento, ya que dichas técnicas se pueden aplicar para que funcionen independientemente o como parte de otros sistemas/normas existentes o todavía por desarrollar. En estos casos, la unidad para la codificación de paleta puede ser unos bloques cuadrados, unos bloques rectangulares o incluso unas regiones de forma no rectangular.
[0021] En la codificación de vídeo basada en paleta, un área particular de datos de vídeo puede tener un número relativamente pequeño de colores. Un codificador de vídeo (por ejemplo, un codificador de vídeo o un descodificador de vídeo) puede codificar (es decir, codificar o descodificar) una denominada "paleta" como una tabla de colores para representar los datos de vídeo del área particular (por ejemplo, un bloque dado). Cada píxel puede estar asociado a una entrada de la paleta que representa el color del píxel. Por ejemplo, el codificador de vídeo puede codificar un índice que relaciona el valor de píxel con el valor adecuado de la paleta.
[0022] En el ejemplo anterior, un codificador de vídeo puede codificar un bloque de datos de vídeo determinando una paleta para el bloque, localizando una entrada de la paleta para representar el valor de cada píxel y codificando la paleta con índices de paleta (denominados también valores de índice de paleta) para los píxeles que relacionan el valor de píxel con la paleta. Un descodificador de vídeo puede obtener, a partir de un flujo de bits codificado, una paleta para un bloque, así como unos índices de paleta para los píxeles del bloque. El descodificador de vídeo puede relacionar los índices de paleta de los píxeles con unas entradas de la paleta para reconstruir los valores de píxel del bloque. Los píxeles (y/o índices de paleta relacionados que indican un valor de píxel) en general se pueden denominar muestras.
[0023] Las muestras de un bloque de datos de vídeo se pueden procesar (por ejemplo, explorar mediante barrido) usando un orden de barrido de trama horizontal u otro orden de barrido. Por ejemplo, el codificador de vídeo puede convertir un bloque bidimensional de índices de paleta en una matriz unidimensional realizando un barrido de los índices de paleta usando un orden de barrido de trama horizontal. Asimismo, el descodificador de vídeo puede reconstruir un bloque de índices de paleta usando el orden de barrido de trama horizontal. En consecuencia, la presente divulgación se puede referir a una muestra previa como una muestra que precede a la muestra que se está codificando actualmente en el bloque en el orden de barrido. Se debe apreciar que los barridos distintos a los barridos de trama horizontal, tales como un orden de barrido de trama vertical, también pueden ser aplicables. El ejemplo anterior, así como otros ejemplos expuestos en la presente divulgación, pretende proporcionar una descripción general de la codificación de vídeo basada en paleta.
[0024] Una paleta incluye típicamente entradas numeradas mediante un índice y que representan unos valores o intensidades de componente de color (por ejemplo, RGB, YUV, YCbCR o similares). Tanto un codificador de vídeo como un descodificador de vídeo determinan el número de entradas de paleta, los valores de componentes de color para cada entrada de paleta y el ordenamiento exacto de las entradas de paleta para el bloque actual. En la presente divulgación, se supone que cada entrada de paleta especifica los valores para todos los componentes de color de una muestra. Sin embargo, los conceptos de la presente divulgación son aplicables al uso de una paleta separada para cada componente de color.
[0025] En algunos ejemplos, una paleta se puede componer usando información de bloques previamente codificados. Es decir, una paleta puede contener entradas de paleta predichas a partir de la(s) paleta(s) usada(s) para codificar el (los) bloque(s) previo(s). Por ejemplo, como se describe en el documento de Wei Pu etal., "AHG10: Suggested- Software for Palette Coding based on RExt6.0", JCTVC-Q0094, Valencia, ES, 27 de marzo - 4 de abril de 2014 (a continuación en el presente documento, JCTVC-Q0094), una paleta puede incluir entradas que se copian de una paleta predictora. Una paleta predictora puede incluir entradas de paleta de bloques codificados previamente usando un modo de paleta u otras muestras reconstruidas. Para cada entrada de la paleta predictora, se puede codificar un indicador binario para indicar si la entrada asociada al indicador se copia a la paleta actual (por ejemplo, se indica mediante el indicador = 1). La cadena de indicadores binarios se puede denominar vector de predicción de paleta binaria. La paleta para codificar un bloque actual también puede incluir un número de nuevas entradas de paleta, que se pueden codificar explícitamente (por ejemplo, por separado del vector de predicción de paleta). También se puede codificar una indicación del número de nuevas entradas. Una suma de las entradas predichas y las nuevas entradas puede indicar el tamaño de paleta total para el bloque.
[0026] Como se propone en el documento JCTVC-Q0094, cada muestra de un bloque codificado con un modo de codificación de vídeo basada en paleta se puede codificar usando uno de los tres modos de paleta, como se expone a continuación:
• Modo Escape: en este modo, el valor de muestra no está incluido en una paleta como una entrada de paleta y el valor de muestra cuantificado está explícitamente señalizado para todos los componentes de color. Es similar a la señalización de las nuevas entradas de paleta, aunque para las nuevas entradas de paleta, los valores de componente de color no están cuantificados.
• Modo CopiaDeEncima (también denominado modo CopiaEncima o modo Copia): en este modo, el índice de entrada de paleta para la muestra actual se copia de la muestra localizada directamente encima en un bloque.
• Modo Valor (también denominado modo Índice): en este modo, el valor del índice de entrada de paleta está explícitamente señalizado.
[0027] En algunos ejemplos, el modo de escape no es un modo separado del modo CopiaEncima o el modo Índice. En su lugar, en dichos ejemplos, el modo de escape puede estar incluido en el modo Copia o en el modo Índice.
[0028] Como se describe en el presente documento, un índice de entrada de paleta se puede denominar índice de paleta o simplemente índice. Estos términos se pueden usar de manera intercambiable para describir unas técnicas de la presente divulgación. Además, como se describe con más detalle a continuación, un índice de paleta puede tener uno o más valores de color o intensidad asociados. Por ejemplo, un índice de paleta puede tener un único valor de color o intensidad asociado, asociado a un único componente de color o intensidad de un píxel (por ejemplo, un componente Rojo de datos RGB, un componente Y de datos YUV o similares). En otro ejemplo, un índice de paleta puede tener múltiples valores de color o intensidad asociados. En algunos casos, la codificación de vídeo basada en paleta se puede aplicar para codificar vídeo monocromo. En consecuencia, "valor de color" se puede referir en general a cualquier componente de color o no de color usado para generar un valor de píxel.
[0029] Para los modos CopiaDeEncima y Valor, también se puede señalizar un valor de recorrido (que también se puede denominar simplemente recorrido). Un valor de recorrido puede indicar un número de muestras consecutivas (por ejemplo, un recorrido de muestras) en un orden de barrido particular en un bloque codificado en modo de paleta que se codifican juntas. En algunos casos, el recorrido de muestras también se puede denominar recorrido de índices de paleta, porque cada muestra del recorrido tiene un índice asociado a una paleta.
[0030] Un valor de recorrido puede indicar un recorrido de índices de paleta que se codifican usando el mismo modo de codificación de paleta. Por ejemplo, con respecto al modo Valor, un codificador de vídeo (codificador de vídeo o descodificador de vídeo) puede codificar un índice de paleta (también denominado valor de índice de paleta o simplemente valor de índice) y un valor de recorrido que indica un número de muestras consecutivas en un orden de barrido que tienen el mismo índice de paleta y que se codifican con el índice de paleta. Con respecto al modo CopiaDeEncima, el codificador de vídeo puede codificar una indicación de que un índice para el valor de muestra actual se copia en base a un índice de una muestra vecina superior (por ejemplo, una muestra que está situada encima de la muestra que se codifica actualmente en un bloque) y un valor de recorrido que indica un número de muestras consecutivas en un orden de barrido que también copian un índice de paleta de una muestra vecina superior y que se codifican con el índice de paleta. En consecuencia, en los ejemplos anteriores, un recorrido de índices de paleta se refiere a un recorrido de índices de paleta que tienen el mismo valor o un recorrido de índices de paleta que se copian de los índices de paleta vecinos superiores.
[0031] Por lo tanto, el recorrido puede especificar, para un modo dado, el número de muestras posteriores que pertenecen al mismo modo. En algunos casos, la señalización de un índice y un valor de recorrido puede ser similar a la codificación de longitud de recorrido. En un ejemplo con propósitos de ilustración, una cadena de índices de paleta consecutivos de un bloque puede ser 0, 2, 2, 2, 2, 5 (por ejemplo, donde cada índice corresponde a una muestra del bloque). En este ejemplo, un codificador de vídeo puede codificar la segunda muestra (por ejemplo, el primer valor de índice de paleta de dos) usando el modo Valor. Después de codificar un valor de índice que es igual a 2, el codificador de vídeo puede codificar un recorrido de tres, que indica que las tres muestras posteriores también tienen el mismo valor de índice de paleta de dos. De forma similar, codificar un recorrido de cuatro índices de paleta después de codificar un índice usando el modo CopiaDeEncima puede indicar que se copian un total de cinco índices de paleta de los índices de paleta correspondientes de la fila de encima de la posición de muestra que se codifica actualmente.
[0032] Las técnicas descritas en la presente divulgación también pueden incluir técnicas para diversas combinaciones de uno o más de una señalización de modos de codificación de vídeo basada en paleta, una transmisión de paletas, una obtención de paletas, una señalización de orden de barrido, una obtención de orden de barrido, una habilitación de modo Copia para la primera fila de un bloque de datos de vídeo y una transmisión de mapas de codificación de vídeo basada en paleta y otros elementos de sintaxis. En algunos ejemplos, las técnicas de la presente divulgación se pueden usar para resolver redundancias potenciales asociadas con la señalización de los modos de paleta, los índices de paleta, los recorridos y los tamaños de paleta que están presentes en JCTVC-Q0094 (así como el software de referencia que implementa el modo de paleta que se ha cargado con la contribución de JCTVC-Q0094). En algunos ejemplos, las técnicas de la presente divulgación se pueden usar, entre otras cosas, para resolver posibles redundancias asociadas con la señalización del orden de barrido. En otros ejemplos, las técnicas de la presente divulgación se pueden usar, entre otras cosas, para eliminar la señalización innecesaria del orden de barrido. En otros ejemplos más, las técnicas de la presente divulgación pueden, entre otras cosas, habilitar el modo Copia para la primera fila de un bloque de datos de vídeo a pesar de que no haya píxeles directamente encima de esa fila de ese bloque de datos de vídeo. En consecuencia, como se describe con más detalle a continuación, las técnicas de la presente divulgación pueden, en algunos casos, mejorar la eficacia y mejorar la tasa de bits cuando se codifican datos de vídeo usando un modo de paleta.
[0033] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo 10 de ejemplo que puede utilizar las técnicas de la presente divulgación. Como se usa en el presente documento, el término "codificador de vídeo" se refiere genéricamente tanto a codificadores de vídeo como a descodificadores de vídeo. En la presente divulgación, los términos "codificación de vídeo" o "codificación" se pueden referir genéricamente a codificación de vídeo o a descodificación de vídeo. El codificador de vídeo 20 y el descodificador de vídeo 30 del sistema de codificación de vídeo 10 representan ejemplos de dispositivos que pueden estar configurados para realizar técnicas para codificación de vídeo basada en paleta de acuerdo con diversos ejemplos descritos en la presente divulgación.
[0034] Como se muestra en la FIG. 1, el sistema de codificación de vídeo 10 incluye un dispositivo de origen 12 y un dispositivo de destino 14. El dispositivo de origen 12 genera datos de vídeo codificados. En consecuencia, el dispositivo de origen 12 se puede denominar dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo de destino 14 puede descodificar los datos de vídeo codificados generados por el dispositivo de origen 12. En consecuencia, el dispositivo de destino 14 se puede denominar dispositivo de descodificación de vídeo o aparato de descodificación de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 pueden ser ejemplos de dispositivos de codificación de vídeo o aparatos de codificación de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender una amplia gama de dispositivos, que incluye ordenadores de escritorio, dispositivos informáticos móviles, ordenadores tipo notebook (por ejemplo, portátiles), ordenadores tipo tableta, descodificadores multimedia, aparatos telefónicos tales como los denominados teléfonos "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, ordenadores para vehículos o similares.
[0035] El dispositivo de destino 14 puede recibir datos de vídeo codificados desde el dispositivo de origen 12 por medio de un canal 16. El canal 16 puede comprender uno o más medios o dispositivos que pueden transferir los datos de vídeo codificados desde el dispositivo de origen 12 hasta el dispositivo de destino 14. En un ejemplo, el canal 16 puede comprender uno o más medios de comunicación que permiten al dispositivo de origen 12 transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. En este ejemplo, el dispositivo de origen 12 puede modular los datos de vídeo codificados de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y puede transmitir los datos de vídeo modulados al dispositivo de destino 14. El uno o más medios de comunicación pueden incluir medios de comunicación inalámbrica y/o alámbrica, tales como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El uno o más medios de comunicación pueden formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global (por ejemplo, Internet). El uno o más medios de comunicación pueden incluir encaminadores, conmutadores, estaciones base u otros equipos que facilitan la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
[0036] En otro ejemplo, el canal 16 puede incluir un medio de almacenamiento que almacena datos de vídeo codificados generados por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder al medio de almacenamiento, por ejemplo, por medio de acceso a disco o acceso a tarjeta. El medio de almacenamiento puede incluir una variedad de medios de almacenamiento de datos de acceso local, tales como discos Blu-ray, DVD, CD-ROM, memoria flash u otros medios de almacenamiento digital adecuados para almacenar datos de vídeo codificados.
[0037] En otro ejemplo, el canal 16 puede incluir un servidor de archivos u otro dispositivo de almacenamiento intermedio que almacena datos de vídeo codificados generados por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder a datos de vídeo codificados almacenados en el servidor de archivos o en otro dispositivo de almacenamiento intermedio por medio de transmisión continua o descarga. El servidor de archivos puede ser un tipo de servidor que puede almacenar datos de vídeo codificados y transmitir los datos de vídeo codificados al dispositivo de destino 14. Los ejemplos de servidores de archivos incluyen servidores web (por ejemplo, para un sitio web), servidores de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectado en red (NAS) y unidades de disco locales.
[0038] El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de una conexión de datos estándar, tal como una conexión a Internet. Los ejemplos de tipos de conexiones de datos pueden incluir canales inalámbricos (por ejemplo, conexiones de wifi), conexiones alámbricas (por ejemplo, DSL, módem de cable, etc.) o combinaciones de ambos que sean adecuadas para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el servidor de archivos puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0039] Las técnicas de la presente divulgación para codificación de vídeo basada en paleta no están limitadas a aplicaciones o a configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como apoyo a una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo, por ejemplo, por medio de Internet, codificación de datos de vídeo para su almacenamiento en un medio de almacenamiento de datos, descodificación de datos de vídeo almacenados en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema de codificación de vídeo 10 puede estar configurado para admitir transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0040] El sistema de codificación de vídeo 10 ilustrado en la FIG. 1 es simplemente un ejemplo y las técnicas de la presente divulgación se pueden aplicar a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no incluyen necesariamente ninguna comunicación de datos entre los dispositivos de codificación y descodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten de forma continua por una red o similares. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en una memoria, y/o un dispositivo de descodificación de vídeo puede recuperar y descodificar datos de una memoria. En muchos ejemplos, la codificación y la descodificación se realizan mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en una memoria y/o recuperan y descodifican datos de una memoria.
[0041] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos ejemplos, la interfaz de salida 22 puede incluir un modulador/demodulador (módem) y/o un transmisor. La fuente de vídeo 18 puede incluir un dispositivo de captación de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contiene datos de vídeo previamente captados, una interfaz de suministro de vídeo para recibir datos de vídeo desde un proveedor de contenido de vídeo, y/o un sistema de gráficos por ordenador para generar datos de vídeo, o una combinación de dichas fuentes de datos de vídeo.
[0042] El codificador de vídeo 20 puede codificar datos de vídeo de la fuente de vídeo 18. En algunos ejemplos, el dispositivo de origen 12 transmite directamente los datos de vídeo codificados al dispositivo de destino 14 por medio de la interfaz de salida 22. En otros ejemplos, los datos de vídeo codificados también se pueden almacenar en un medio de almacenamiento o en un servidor de archivos para su acceso posterior por el dispositivo de destino 14 para su descodificación y/o su reproducción.
[0043] En el ejemplo de la FIG. 1, el dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En algunos ejemplos, la interfaz de entrada 28 incluye un receptor y/o un módem. La interfaz de entrada 28 puede recibir datos de vídeo codificados a través del canal 16. El dispositivo de visualización 32 puede estar integrado en, o ser externo a, el dispositivo de destino 14. En general, el dispositivo de visualización 32 muestra datos de vídeo descodificados. El dispositivo de visualización 32 puede comprender una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0044] Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden implementar como cualquiera de una variedad de circuitos adecuados, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas están parcialmente implementadas en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento no transitorio legible por ordenador adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Se puede considerar que cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) es uno o más procesadores. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0045] De acuerdo con las técnicas de la presente divulgación, el descodificador de vídeo 30 puede estar configurado para inferir un orden de barrido de píxeles para un bloque de datos de vídeo codificado en modo de paleta. Por ejemplo, el descodificador de vídeo 30 puede estar configurado para inferir el orden de barrido de píxeles para un bloque de datos de vídeo codificado sin recibir un elemento de sintaxis de nivel de bloque que tenga un valor representativo del orden de barrido de píxeles para el bloque de datos de vídeo codificado. Como otro ejemplo, el descodificador de vídeo 30 puede estar configurado para inferir el orden de barrido de píxeles para un bloque de datos de vídeo codificado que no está basado en un elemento de sintaxis de nivel de bloque que tiene un valor representativo del orden de barrido de píxeles para el bloque de datos de vídeo codificado, porque el elemento de sintaxis de nivel de bloque (i) no se ha transmitido al descodificador de vídeo 30, (ii) no ha sido recibido por el descodificador de vídeo 30 o (iii) es recibido por el descodificador de vídeo 30 pero el descodificador de vídeo 30 está configurado para inferir el orden de barrido de píxeles sin referencia al elemento de sintaxis de nivel de bloque recibido.
[0046] Por ejemplo, el descodificador de vídeo 30 puede estar configurado para recibir un primer bloque de datos de vídeo codificado en modo de paleta de una imagen. El descodificador de vídeo 30 puede estar configurado para inferir un orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta sin recibir un elemento de sintaxis de nivel de bloque que tenga un valor representativo del orden de barrido de píxeles para el primer bloque codificado en modo de paleta. En otro ejemplo, el descodificador de vídeo 30 puede estar configurado para inferir un orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta que no está basado en un elemento de sintaxis de nivel de bloque (recibido o no) que tiene un valor representativo del orden de barrido de píxeles para el primer bloque codificado en modo de paleta. El descodificador de vídeo 30 puede estar configurado para descodificar el primer bloque de datos de vídeo codificado en modo de paleta usando el orden de barrido de píxeles inferido.
[0047] En algunos ejemplos, el descodificador de vídeo 30 puede estar configurado para recibir un segundo bloque de datos de vídeo codificado en modo de paleta de la imagen. En dichos ejemplos, el descodificador de vídeo 30 puede estar configurado para recibir un elemento de sintaxis de nivel de bloque que tiene un valor representativo de un orden de barrido de píxeles para el segundo bloque de datos de vídeo codificado en modo de paleta. El descodificador de vídeo 30 puede estar configurado para determinar el orden de barrido de píxeles para el segundo bloque de datos de vídeo codificado en modo de paleta en base al elemento de sintaxis de nivel de bloque recibido. El descodificador de vídeo 30 puede estar configurado para descodificar el segundo bloque de datos de vídeo codificado en modo de paleta usando el orden de barrido de píxeles determinado.
[0048] En otro ejemplo de acuerdo con las técnicas de la presente divulgación, el codificador de vídeo 20 puede estar configurado para determinar si ha de señalizar un orden de barrido para un bloque de datos de vídeo. El codificador de vídeo 20 puede estar configurado para señalizar o no señalizar un orden de barrido para el bloque de datos de vídeo en base a esta determinación. Por ejemplo, la determinación de si se ha de señalizar un orden de barrido puede estar basada en el tamaño de paleta del bloque de datos de vídeo.
[0049] Por ejemplo, el codificador de vídeo 20 puede estar configurado para determinar que un bloque de datos de vídeo se ha de codificar usando un modo de paleta. El codificador de vídeo 20 puede estar configurado para determinar un tamaño de paleta para el bloque de datos de vídeo. El codificador de vídeo 20 puede estar configurado para determinar un orden de barrido de píxeles para el bloque de datos de vídeo. El codificador de vídeo 20 puede estar configurado para codificar el bloque de datos de vídeo usando un modo de paleta. El codificador de vídeo 20 puede estar configurado para determinar si ha de señalizar un primer elemento de sintaxis de nivel de bloque representativo del orden de barrido de píxeles usado para el bloque de datos de vídeo en base al tamaño de paleta.
[0050] La presente divulgación se puede referir en general a un codificador de vídeo 20 que "señaliza" o "transmite" determinada información a otro dispositivo, tal como un descodificador de vídeo 30. El término "señalizar" o "transmitir" se puede referir en general a la comunicación de elementos de sintaxis y/u otros datos usados para descodificar los datos de vídeo comprimidos. Dicha comunicación se puede producir en tiempo real o casi real. De forma alternativa, dicha comunicación se puede producir durante un período de tiempo, tal como se podría producir cuando se almacenan elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que a continuación un dispositivo de descodificación puede recuperar en cualquier momento después de su almacenamiento en este medio.
[0051] En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 funcionan de acuerdo con una norma de compresión de vídeo, tal como la norma de HEVC mencionada anteriormente y descrita en HEVC Draft 10. Además de la norma de HEVC básica, hay iniciativas en curso para producir ampliaciones de codificación de vídeo escalable, codificación de vídeo multivista y codificación en 3D para HEVC. Además, se pueden proporcionar unos modos de codificación de vídeo basada en paleta, por ejemplo, como se describe en la presente divulgación, para la ampliación de la norma de HEVC. En algunos ejemplos, las técnicas descritas en la presente divulgación para codificación de vídeo basada en paleta se pueden aplicar a codificadores y descodificadores configurados para funcionar de acuerdo con otras normas de codificación de vídeo, tales como la norma ITU-T-H.264/AVC o normas futuras. En consecuencia, la aplicación de un modo de codificación de vídeo basada en paleta para la codificación de unidades de codificación (CU) o unidades de predicción (PU) en un códec de HEVC se describe con propósitos de ejemplo.
[0052] En la HEVC y otras normas de codificación de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también se pueden denominar "tramas". Una imagen puede incluir tres matrices de muestras, denotadas por Sl, SCb y SCr. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luma. SCb es una matriz bidimensional de muestras de crominancia Cb. SCr es una matriz bidimensional de muestras de crominancia Cr. Las muestras de crominancia también se pueden denominar en el presente documento muestras de "croma". En otros casos, una imagen puede ser monocroma y puede incluir solo una matriz de muestras de luma.
[0053] Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades de árbol de codificación (CTU). Cada una de las CTU puede ser un bloque de árbol de codificación de muestras de luma, dos bloques de árbol de codificación correspondientes de muestras de croma, y unas estructuras de sintaxis usadas para codificar las muestras de los bloques de árbol de codificación. Un bloque del árbol de codificación puede ser un bloque de muestras NxN. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación más grande" (LCU). Las CTU de HEVC pueden ser análogas en términos generales a los macrobloques de otras normas, tales como H.264/AVC. Sin embargo, una CTU no está necesariamente limitada a un tamaño particular y puede incluir una o más unidades de codificación (CU). Un segmento puede incluir un número entero de CTU ordenadas consecutivamente en el barrido de trama.
[0054] Para generar una CTU codificada, el codificador de vídeo 20 puede realizar de forma recursiva una partición de árbol cuaternario en los bloques de árbol de codificación de una CTU para dividir los bloques de árbol de codificación en bloques de codificación, de ahí el nombre "unidades de árbol de codificación". Un bloque de codificación es un bloque de muestras NxN. Una CU puede ser un bloque de codificación de muestras de luma y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luma, una matriz de muestras de Cb y una matriz de muestras de Cr, y unas estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. El codificador de vídeo 20 puede dividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción puede ser un bloque rectangular (es decir, cuadrado o no cuadrado) de muestras en las que se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede ser un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma de una imagen, y unas estructuras de sintaxis usadas para predecir las muestras de bloques de predicción. El codificador de vídeo 20 puede generar bloques predictivos de luma, Cb y Cr para bloques de predicción de luma, Cb y Cr de cada PU de la CU.
[0055] El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador de vídeo 20 usa intrapredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a unas muestras descodificadas de la imagen asociada con la PU.
[0056] Si el codificador de vídeo 20 usa interpredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a unas muestras descodificadas de una o más imágenes distintas a la imagen asociada a la PU. El codificador de vídeo 20 puede usar unipredicción o bipredicción para generar los bloques predictivos de una PU. Cuando el codificador de vídeo 20 usa unipredicción para generar los bloques predictivos para una PU, la PU puede tener un único vector de movimiento (MV). Cuando el codificador de vídeo 20 usa bipredicción para generar los bloques predictivos para una PU, la PU puede tener dos MV.
[0057] Después de que el codificador de vídeo 20 genere bloques predictivos de luma, Cb y Cr para una o más PU de una CU, el codificador de vídeo 20 puede generar un bloque residual de luma para la CU. Cada muestra del bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques predictivos de luma de la CU y una muestra correspondiente del bloque de codificación de luma original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual de Cb para la CU. Cada muestra del bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb de uno de los bloques predictivos de Cb de la CU y una muestra correspondiente del bloque de codificación de Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual de Cr para la CU. Cada muestra del bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr de uno de los bloques predictivos de Cr de la CU y una muestra correspondiente del bloque de codificación de Cr original de la CU.
[0058] Además, el codificador de vídeo 20 puede usar una partición de árbol cuaternario para descomponer los bloques residuales de luma, Cb y Cr de una CU en uno o más bloques de transformada de luma, Cb y Cr. Un bloque de transformada puede ser un bloque rectangular de muestras en el que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede ser un bloque de transformada de muestras de luma, dos bloques de transformada correspondientes de muestras de croma y unas estructuras de sintaxis usadas para transformar las muestras de bloques de transformada. De este modo, cada TU de una CU puede estar asociada a un bloque de transformada de luma, un bloque de transformada de Cb y un bloque de transformada de Cr. El bloque de transformada de luma asociado a la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada de Cb puede ser un subbloque del bloque residual de Cb de la CU. El bloque de transformada de Cr puede ser un subbloque del bloque residual de Cr de la CU.
[0059] El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cb de una TU para generar un bloque de coeficientes de Cb para la TU. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cr de una TU para generar un bloque de coeficientes de Cr para la TU.
[0060] Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luma, un bloque de coeficientes de Cb o un bloque de coeficientes de Cr), el codificador de vídeo 20 puede cuantificar el bloque de coeficientes. La cuantificación se refiere, en general, a un proceso en el que unos coeficientes de transformada se cuantifican para reducir, posiblemente, la cantidad de datos usados para representar los coeficientes de transformada, proporcionando más compresión. Después de que el codificador de vídeo 20 cuantifique un bloque de coeficientes, el codificador de vídeo 20 puede realizar una codificación entrópica de unos elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por ejemplo, el codificador de vídeo 20 puede realizar una codificación aritmética binaria adaptativa al contexto (CABAC) en los elementos de sintaxis que indican los coeficientes de transformada cuantificados. El codificador de vídeo 20 puede facilitar los elementos de sintaxis codificados entrópicamente en un flujo de bits.
[0061] El codificador de vídeo 20 puede facilitar un flujo de bits que incluye los elementos de sintaxis codificados entrópicamente. El flujo de bits puede incluir una secuencia de bits que forma una representación de imágenes codificadas y datos asociados. El flujo de bits puede comprender una secuencia de unidades de capa de abstracción de red (NAL). Cada una de las unidades de NAL incluye una cabecera de unidad de NAL y encapsula una carga útil de secuencia de bytes sin procesar (RBSP). La cabecera de unidad de NAL puede incluir un elemento de sintaxis que indica un código del tipo de unidad de NAL. El código del tipo de unidad de NAL especificado por la cabecera de unidad de NAL de una unidad de NAL indica el tipo de la unidad de NAL. Una RBSP puede ser una estructura de sintaxis que contiene un número entero de bytes que está encapsulado dentro de una unidad de NAL. En algunos casos, una RBSP incluye bits cero.
[0062] Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para un segmento codificado, un tercer tipo de unidad de NAL puede encapsular una RBSP para SEI, etc. Las unidades de NAL que encapsulan unas RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes de SEI) se pueden denominar unidades de NAL de capa de codificación de vídeo (VCL).
[0063] El descodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Además, el descodificador de vídeo 30 puede analizar el flujo de bits para descodificar elementos de sintaxis del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo en base, al menos en parte, a los elementos de sintaxis descodificados a partir del flujo de bits. El procedimiento para reconstruir los datos de vídeo puede ser, en general, recíproco al procedimiento realizado por el codificador de vídeo 20. Por ejemplo, el descodificador de vídeo 30 puede usar unos MV de unas PU para determinar unos bloques predictivos para las PU de una CU actual. Además, el descodificador de vídeo 30 puede cuantificar inversamente unos bloques de coeficientes de transformada asociados a unas TU de la CU actual. El descodificador de vídeo 30 puede realizar transformadas inversas en los bloques de coeficientes de transformada para reconstruir bloques de transformada asociados a las TU de la CU actual. El descodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a unas muestras correspondientes de los bloques de transformada de las TU de la CU actual. Reconstruyendo los bloques de codificación para cada CU de una imagen, el descodificador de vídeo 30 puede reconstruir la imagen.
[0064] En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar configurados para realizar una codificación de vídeo basada en paleta. Por ejemplo, en la codificación de vídeo basada en paleta, en lugar de realizar las técnicas de codificación intrapredictiva o interpredictiva descritas anteriormente, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar una denominada paleta como una tabla de colores para representar los datos de vídeo del área particular (por ejemplo, un bloque dado). Cada píxel puede estar asociado a una entrada de la paleta que representa el color del píxel. Por ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar un índice que relaciona el valor de píxel con el valor apropiado de la paleta.
[0065] En el ejemplo de codificación de vídeo basada en paleta, el codificador de vídeo 20 puede codificar un bloque de datos de vídeo determinando una paleta para el bloque, localizando una entrada de la paleta para representar el valor de cada píxel y codificando la paleta con valores de índice para los píxeles que relacionan el valor de píxel con la paleta. El descodificador de vídeo 30 puede obtener, a partir de un flujo de bits codificado, una paleta para un bloque, así como unos valores de índice para los píxeles del bloque. El descodificador de vídeo 30 puede relacionar los valores de índice de los píxeles con entradas de la paleta para reconstruir los valores de píxel del bloque.
[0066] En algunos ejemplos de la divulgación, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican un número de píxeles consecutivos en un orden de barrido dado que tienen el mismo valor de píxel. La cadena de valores de píxel de igual valor se puede denominar "recorrido" en el presente documento. En un ejemplo con propósitos ilustrativos, si dos píxeles consecutivos en un orden de barrido dado tienen valores diferentes, el recorrido es igual a cero. Si dos píxeles consecutivos en un orden de barrido dado tienen el mismo valor pero el tercer píxel en el orden de barrido tiene un valor diferente, el recorrido es igual a uno. El descodificador de vídeo 30 puede obtener los elementos de sintaxis que indican un recorrido desde un flujo de bits codificado y usar los datos para determinar el número de ubicaciones de píxel consecutivas que tienen el mismo valor de índice.
[0067] En algunos ejemplos de la divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden realizar una copia por líneas para una o más entradas de un mapa. Por ejemplo, el codificador de vídeo 20 puede indicar que un valor de píxel para una entrada particular de un mapa es igual a una entrada de una línea situada encima de la entrada particular. El codificador de vídeo 20 también puede indicar, como un recorrido, el número de índices en el orden de barrido que son iguales a la entrada de la línea situada encima de la entrada particular. En este ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden copiar valores de índice de la línea vecina especificada y del número especificado de entradas para la línea del mapa que se codifica actualmente.
[0068] Se han llevado a cabo varias propuestas para hacer que los códecs basados en HEVC sean más adecuados para funcionar en paralelo, que incluyen teselas y procesamiento paralelo de frente de onda (WPP). El documento HEVC WD10 define las teselas como un número entero de bloques de árbol de codificación que coexisten en una columna y una fila, ordenados consecutivamente en un barrido de trama de bloques de árbol de codificación de la tesela. La división de cada imagen en teselas es una partición. El número de teselas y la ubicación de sus límites se pueden definir para toda la secuencia o cambiar de una imagen a otra. Los límites de tesela, de manera similar a los límites de segmento, rompen las dependencias de análisis sintáctico y de predicción, de modo que una tesela se puede procesar de forma independiente, pero los filtros en bucle (desbloqueo y desplazamiento adaptativo de muestra (SAO)) pueden seguir cruzando límites de tesela. El documento HEVC WD10 también especifica algunas restricciones en la relación entre segmentos y teselas.
[0069] De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden realizar cualquier combinación de las técnicas para codificación en modo de paleta descritas en el presente documento, por ejemplo, con respecto a las FIGS. 4-11 siguientes.
[0070] La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas de la presente divulgación. La FIG. 2 se proporciona con propósitos explicativos y no se debe considerar limitante de las técnicas ampliamente ejemplificadas y descritas en la presente divulgación. Con propósitos explicativos, la presente divulgación describe un codificador de vídeo 20 en el contexto de la codificación de HEVC. Sin embargo, las técnicas de la presente divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0071] El codificador de vídeo 20 representa un ejemplo de dispositivo que puede estar configurado para realizar técnicas para codificación de vídeo basada en paleta de acuerdo con diversos ejemplos descritos en la presente divulgación. Por ejemplo, el codificador de vídeo 20 puede estar configurado para codificar selectivamente diversos bloques de datos de vídeo, tales como las CU o PU en la codificación de HEVC, usando codificación de vídeo basada en paleta o codificación de vídeo no basada en paleta. Los modos de codificación de vídeo no basada en paleta se pueden referir a diversos modos de codificación temporal interpredictiva o a modos de codificación espacial intrapredictiva, tales como los diversos modos de codificación especificados en el documento HEVC Draft 10. El codificador de vídeo 20, en un ejemplo, puede estar configurado para generar una paleta que tiene entradas que indican valores de píxel, seleccionar valores de píxel en una paleta para representar valores de píxel de al menos algunas ubicaciones de píxel en un bloque de datos de vídeo, y señalizar información que asocia al menos algunas de las ubicaciones de píxel del bloque de datos de vídeo con entradas de la paleta correspondientes, respectivamente, a los valores de píxel seleccionados en la paleta. El descodificador de vídeo 30 puede usar la información señalizada para descodificar datos de vídeo.
[0072] En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una unidad de codificación de bloques 100, una memoria de datos de vídeo 101, una unidad de generación de residuos 102, una unidad de procesamiento de transformada 104, una unidad de cuantificación 106, una unidad de cuantificación inversa 108, una unidad de procesamiento de transformada inversa 110, una unidad de reconstrucción 112, una unidad de filtro 114, un búfer de imágenes descodificadas 116 y una unidad de codificación entrópica 118. La unidad de codificación de bloques 100 incluye una unidad de procesamiento de interpredicción 120 y una unidad de procesamiento de intrapredicción 126. La unidad de procesamiento de interpredicción 120 incluye una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostradas). El codificador de vídeo 20 también incluye una unidad de codificación basada en paleta 122 configurada para realizar diversos aspectos de las técnicas de codificación de vídeo basada en paleta descritas en la presente divulgación. En otros ejemplos, el codificador de vídeo 20 puede incluir más, menos o diferentes componentes funcionales.
[0073] La memoria de datos de vídeo 101 puede almacenar datos de vídeo que los componentes del codificador de vídeo 20 van a codificar. Los datos de vídeo almacenados en la memoria de datos de vídeo 101 se pueden obtener, por ejemplo, a partir de la fuente de vídeo 18. El búfer de imágenes descodificadas (DPB) 116 puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para su uso en la codificación de datos de vídeo por el codificador de vídeo 20, por ejemplo, en los modos de intra- o intercodificación. La memoria de datos de vídeo 101 y el búfer de imágenes descodificadas 116 pueden estar formadas por cualquiera de una variedad de dispositivos de memoria, tales como una memoria dinámica de acceso aleatorio (DRAM), incluyendo una DRAM síncrona (SDRAM), una RAM magnetorresistiva (MRAM), una RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. El mismo dispositivo de memoria o unos dispositivos de memoria separados pueden proporcionar una memoria de datos de vídeo 101 y un búfer de imágenes descodificadas 116. En diversos ejemplos, la memoria de datos de vídeo 101 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera del chip en relación con esos componentes.
[0074] El codificador de vídeo 20 puede recibir datos de vídeo. El codificador de vídeo 20 puede codificar cada CTU en un segmento de una imagen de los datos de vídeo. Cada una de las CTU puede estar asociada a unos bloques de árbol de codificación (CTB) de luma de igual tamaño y a unos CTB correspondientes de la imagen. Como parte de la codificación de una CTU, la unidad de codificación de bloques 100 puede realizar una partición de árbol cuaternario para dividir los CTB de la CTU en bloques progresivamente más pequeños. Los bloques más pequeños pueden ser bloques de codificación de unas CU. Por ejemplo, la unidad de codificación de bloques 100 puede partir un CTB asociado a una CTU en cuatro subbloques de igual tamaño, partir uno o más de los subbloques en cuatro subbloques de igual tamaño, y así sucesivamente.
[0075] El codificador de vídeo 20 puede codificar unas CU de una CTU para generar representaciones codificadas de las CU (es decir, unas CU codificadas). Como parte de la codificación de una CU, la unidad de codificación de bloques 100 puede partir los bloques de codificación asociados a la CU entre una o más PU de la CU. Por tanto, cada PU puede estar asociada a un bloque de predicción de luma y a unos bloques de predicción de croma correspondientes. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden admitir unas PU que tienen diversos tamaños. Como se indica anteriormente, el tamaño de una CU se puede referir al tamaño del bloque de codificación de luma de la CU, y el tamaño de una PU se puede referir al tamaño de un bloque de predicción de luma de la PU. Suponiendo que el tamaño de una CU particular sea 2Nx2N, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden admitir tamaños de PU de 2Nx2N o NxN para intrapredicción, y tamaños
de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, o similares, para interpredicción. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden admitir una partición asimétrica para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N para interpredicción.
[0076] La unidad de procesamiento de interpredicción 120 puede generar datos predictivos para una PU realizando una interpredicción en cada PU de una CU. Los datos predictivos para la PU pueden incluir bloques predictivos de la PU e información de movimiento para la PU. La unidad de interpredicción 121 puede realizar diferentes operaciones para una PU de una CU dependiendo de si la PU está en un segmento I, en un segmento
P o en un segmento B. En un segmento I, todas las PU se intrapredicen. Por lo tanto, si la PU está en un segmento
I, la unidad de interpredicción 121 no realiza una interpredicción en la PU. Por tanto, para bloques codificados en
modo I, el bloque predicho se forma usando predicción espacial a partir de bloques vecinos codificados previamente dentro de la misma trama.
[0077] Si una PU está en un segmento P, la unidad de estimación de movimiento de la unidad de procesamiento
de interpredicción 120 puede buscar en las imágenes de referencia de una lista de imágenes de referencia (por ejemplo, “RefPicListO”) una región de referencia para la PU. La región de referencia para la PU puede ser una
región, dentro de una imagen de referencia, que contiene bloques de muestras que se corresponden más estrechamente con los bloques de muestras de la PU. La unidad de estimación de movimiento puede generar un
índice de referencia que indica una posición en RefPicListO de la imagen de referencia que contiene la región de referencia para la PU. Además, la unidad de estimación de movimiento puede generar un MV que indica un desplazamiento espacial entre un bloque de codificación de la PU y una ubicación de referencia asociada a la
región de referencia. Por ejemplo, el MV puede ser un vector bidimensional que proporciona un desplazamiento
desde las coordenadas de la imagen descodificada actual hasta las coordenadas de una imagen de referencia. La
unidad de estimación de movimiento puede facilitar el índice de referencia y el MV como la información de movimiento de la PU. La unidad de compensación de movimiento de la unidad de procesamiento de interpredicción
120 puede generar los bloques predictivos de la PU en base a unas muestras reales o interpoladas en la ubicación
de referencia, indicada por el vector de movimiento de la PU.
[0078] Si una PU está en un segmento B, la unidad de estimación de movimiento puede realizar unipredicción o bipredicción para la PU. Para realizar una unipredicción para la PU, la unidad de estimación de movimiento puede
buscar en las imágenes de referencia de RefPicListO o de una segunda lista de imágenes de referencia (“RefPicList1”) una región de referencia para la PU. La unidad de estimación de movimiento puede facilitar, como
la información de movimiento de la PU, un índice de referencia que indica una posición en RefPicListO o RefPicList1 de la imagen de referencia que contiene la región de referencia, un MV que indica un desplazamiento espacial entre un bloque de predicción de la PU y una ubicación de referencia asociada a la región de referencia, y uno o más indicadores de dirección de predicción que indican si la imagen de referencia está en RefPicListO o RefPicList1. La unidad de compensación de movimiento de la unidad de procesamiento de interpredicción 120
puede generar los bloques predictivos de la PU en base al menos en parte a unas muestras reales o interpoladas en la región de referencia indicada por el vector de movimiento de la PU.
[0079] Para realizar una interpredicción bidireccional para una PU, la unidad de estimación de movimiento puede
buscar en las imágenes de referencia de RefPicListO una región de referencia para la PU y también puede buscar en las imágenes de referencia de RefPicList1 otra región de referencia para la PU. La unidad de estimación de movimiento puede generar índices de imágenes de referencia que indican posiciones en RefPicListO y en RefPicList1 de las imágenes de referencia que contienen las regiones de referencia. Además, la unidad de estimación de movimiento puede generar unos MV que indican desplazamientos espaciales entre la ubicación de referencia asociada a las regiones de referencia y un bloque de muestras de la PU. La información de movimiento
de la PU puede incluir los índices de referencia y los MV de la PU. La unidad de compensación de movimiento
puede generar los bloques predictivos de la PU en base al menos en parte a unas muestras reales o interpoladas en las regiones de referencia indicadas por los vectores de movimiento de la PU.
[0080] De acuerdo con diversos ejemplos de la presente divulgación, el codificador de vídeo 20 puede estar configurado para realizar una codificación basada en paleta. Con respecto al marco de trabajo de la HEVC, como ejemplo, las técnicas de codificación de vídeo basada en paleta pueden estar configuradas para su uso en el nivel de CU. En otros ejemplos, las técnicas de codificación de vídeo basada en paleta pueden estar configuradas para
su uso en el nivel de PU. En otros ejemplos, las técnicas de codificación de vídeo basada en paleta pueden estar configuradas para su uso en el nivel de la subunidad de predicción (sub-PU) (por ejemplo, un subbloque de una
unidad de predicción). En consecuencia, todos los procesos divulgados descritos en el presente documento (a lo
largo de la presente divulgación) en el contexto de un nivel de CU se pueden aplicar, de forma adicional o alternativa, a un nivel de PU o de sub-PU. Sin embargo, estos ejemplos basados en HEVC no se deben considerar como una restricción o limitación de las técnicas de codificación de vídeo basada en paleta descritas en el presente documento, ya que dichas técnicas se pueden aplicar para que funcionen independientemente o como parte de
otros sistemas/normas existentes o todavía por desarrollar. En estos casos, la unidad para la codificación de paleta
puede ser unos bloques cuadrados, unos bloques rectangulares o incluso unas regiones de forma no rectangular.
[0081] La unidad de codificación basada en paleta 122, por ejemplo, puede realizar una codificación basada en paleta cuando se selecciona un modo de codificación basada en paleta, por ejemplo, para una CU o PU. Por ejemplo, la unidad de codificación basada en paleta 122 puede estar configurada para generar una paleta que tiene entradas que indican valores de píxel, seleccionar valores de píxel en una paleta para representar valores de píxel de al menos algunas posiciones de un bloque de datos de vídeo, y señalizar información que asocia al menos algunas de las posiciones del bloque de datos de vídeo a entradas de la paleta correspondientes, respectivamente, a los valores de píxel seleccionados. Aunque se describe que la unidad de codificación basada en paleta 122 realiza diversas funciones, otras unidades de procesamiento, o una combinación de diferentes unidades de procesamiento, pueden realizar algunas o la totalidad de dichas funciones.
[0082] De acuerdo con unos aspectos de la presente divulgación, la unidad de codificación basada en paleta 122 puede estar configurada para realizar cualquier combinación de las técnicas para codificación de paleta descritas en el presente documento, por ejemplo, con respecto a las FIGS. 4-11 siguientes.
[0083] Por ejemplo, la unidad de codificación basada en paleta 122 puede estar configurada para determinar si se ha de señalizar un orden de barrido para un bloque de datos de vídeo. La unidad de codificación basada en paleta 122 puede estar configurada para señalizar o no señalizar un orden de barrido para el bloque de datos de vídeo en base a esta determinación. Por ejemplo, la determinación de si se ha de señalizar un orden de barrido puede estar basada en el tamaño de paleta del bloque de datos de vídeo.
[0084] Por ejemplo, la unidad de codificación basada en paleta 122 puede estar configurada para determinar que un bloque de datos de vídeo se ha de codificar usando un modo de paleta. La unidad de codificación basada en paleta 122 puede estar configurada para determinar un tamaño de paleta para el bloque de datos de vídeo. La unidad de codificación basada en paleta 122 puede estar configurada para determinar un orden de barrido de píxeles para el bloque de datos de vídeo. La unidad de codificación basada en paleta 122 puede estar configurada para codificar el bloque de datos de vídeo usando un modo de paleta. La unidad de codificación basada en paleta 122 puede estar configurada para determinar si se ha de señalizar un primer elemento de sintaxis de nivel de bloque representativo del orden de barrido de píxeles usado para el bloque de datos de vídeo en base al tamaño de paleta.
[0085] Como otro ejemplo, de acuerdo con unos aspectos de la presente divulgación, la unidad de codificación basada en paleta 122 puede estar configurada para codificar al menos un píxel de una primera fila de píxeles de un bloque de datos de vídeo codificado en modo de paleta usando el modo Copia cuando no hay ninguna otra fila de la pluralidad de filas de píxeles por encima de la primera fila.
[0086] La unidad de procesamiento de intrapredicción 126 puede generar datos predictivos para una PU realizando una intrapredicción en la PU. Los datos predictivos para la PU pueden incluir bloques predictivos para la PU y diversos elementos de sintaxis. La unidad de procesamiento de intrapredicción 126 puede realizar una intrapredicción en unas PU de segmentos I, segmentos P y segmentos B.
[0087] Para realizar una intrapredicción en una PU, la unidad de procesamiento de intrapredicción 126 puede usar múltiples modos de intrapredicción para generar múltiples conjuntos de datos predictivos para la PU. La unidad de procesamiento de intrapredicción 126 puede usar muestras de bloques de muestras de PU vecinas para generar un bloque predictivo para una PU. Las PU vecinas pueden estar encima, encima y a la derecha, encima y a la izquierda, o a la izquierda de la PU, suponiendo un orden de codificación de izquierda a derecha y de arriba abajo, para las PU, CU y CTU. La unidad de procesamiento de intrapredicción 126 puede usar diversos números de modos de intrapredicción, por ejemplo, 33 modos de intrapredicción direccional. En algunos ejemplos, el número de modos de intrapredicción puede depender del tamaño de la región asociada a la PU.
[0088] La unidad de codificación de bloques 100 puede seleccionar los datos predictivos para las PU de una CU de entre los datos predictivos generados por la unidad de procesamiento de interpredicción 120 para las PU, o los datos predictivos generados por la unidad de procesamiento de intrapredicción 126 para las PU. En algunos ejemplos, la unidad de codificación de bloques 100 selecciona los datos predictivos para las PU de la CU en base a unas métricas de velocidad/distorsión de los conjuntos de datos predictivos. Los bloques predictivos de los datos predictivos seleccionados se pueden denominar en el presente documento bloques predictivos seleccionados.
[0089] La unidad de generación de residuos 102 puede generar, en base al bloque de codificación de luma, Cb y Cr de una CU y los bloques predictivos seleccionados de luma, Cb y Cr de las PU de la CU, unos bloques residuales de luma, Cb y Cr de la CU. Por ejemplo, la unidad de generación de residuos 102 puede generar los bloques residuales de la CU de modo que cada muestra de los bloques residuales tiene un valor igual a una diferencia entre una muestra de un bloque de codificación de la CU y una muestra correspondiente de un bloque predictivo seleccionado correspondiente de una PU de la CU.
[0090] La unidad de procesamiento de transformada 104 puede realizar una partición de árbol cuaternario para partir los bloques residuales asociados a una CU en bloques de transformada asociados a unas TU de la CU. Por tanto, una TU puede estar asociada a un bloque de transformada de luma y a dos bloques de transformada de croma. Los tamaños y las posiciones de los bloques de transformada de luma y croma de las TU de una CU pueden o no estar basados en los tamaños y las posiciones de unos bloques de predicción de las PU de la CU. Una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT) puede incluir nodos asociados a cada una de las regiones. Las TU de una CU pueden corresponder a nodos hoja del RQT.
[0091] La unidad de procesamiento de transformada 104 puede generar bloques de coeficientes de transformada para cada TU de una CU aplicando una o más transformadas a los bloques de transformada de la TU. La unidad de procesamiento de transformada 104 puede aplicar diversas transformadas a un bloque de transformada asociado a una TU. Por ejemplo, la unidad de procesamiento de transformada 104 puede aplicar una transformada discreta del coseno (DCT), una transformada direccional o una transformada conceptualmente similar a un bloque de transformada. En algunos ejemplos, la unidad de procesamiento de transformada 104 no aplica transformadas a un bloque de transformada. En dichos ejemplos, el bloque de transformada se puede tratar como un bloque de coeficientes de transformada.
[0092] La unidad de cuantificación 106 puede cuantificar los coeficientes de transformada de un bloque de coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos o a la totalidad de los coeficientes de transformada. Por ejemplo, un coeficiente de transformada de n bits se puede redondear por defecto hasta un coeficiente de transformada de m bits durante la cuantificación, donde n es mayor que m. La unidad de cuantificación 106 puede cuantificar un bloque de coeficientes asociado a una TU de una CU en base a un valor de parámetro de cuantificación (QP) asociado a la CU. El codificador de vídeo 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes asociados a una CU, ajustando el valor de QP asociado a la CU. La cuantificación puede introducir pérdida de información y, por tanto, los coeficientes de transformada cuantificados pueden tener una precisión menor que los originales.
[0093] La unidad de cuantificación inversa 108 y la unidad de procesamiento de transformada inversa 110 pueden aplicar una cuantificación inversa y transformadas inversas a un bloque de coeficientes, respectivamente, para reconstruir un bloque residual a partir del bloque de coeficientes. Una unidad de reconstrucción 112 puede añadir el bloque residual reconstruido a unas muestras correspondientes de uno o más bloques predictivos generados por una unidad de codificación de bloques 100 para producir un bloque de transformada reconstruido asociado a una TU. Reconstruyendo bloques de transformada para cada TU de una CU de esta manera, el codificador de vídeo 20 puede reconstruir los bloques de codificación de la CU.
[0094] La unidad de filtro 114 puede realizar una o más operaciones de reducción de efecto bloque para reducir los artefactos de bloque en los bloques de codificación asociados a una CU. La unidad de filtro 114 puede realizar otras operaciones de filtrado, incluido el filtrado de desplazamiento adaptativo de muestras (SAO) y/o el filtrado de bucle adaptativo (ALF). El búfer de imágenes descodificadas 116 puede almacenar los bloques de codificación reconstruidos después de que la unidad de filtro 114 realice la una o más operaciones de reducción de efecto bloque en los bloques de codificación reconstruidos. La unidad de procesamiento de interpredicción 120 puede usar una imagen de referencia que contiene los bloques de codificación reconstruidos para realizar una interpredicción en las PU de otras imágenes. Además, la unidad de procesamiento de intrapredicción 126 puede usar bloques de codificación reconstruidos del búfer de imágenes descodificadas 116 para realizar una intrapredicción en otras PU de la misma imagen que la CU.
[0095] La unidad de codificación entrópica 118 puede recibir datos desde otros componentes funcionales del codificador de vídeo 20. Por ejemplo, la unidad de codificación entrópica 118 puede recibir bloques de coeficientes desde la unidad de cuantificación 106 y puede recibir elementos de sintaxis desde la unidad de codificación de bloques 100. La unidad de codificación entrópica 118 puede realizar una o más operaciones de codificación entrópica en los datos para generar datos codificados entrópicamente. Por ejemplo, la unidad de codificación entrópica 118 puede realizar una operación de codificación de longitud variable adaptativa al contexto (CAVLC), una operación de CABAC, una operación de codificación de longitud de variable a variable (V2V), una operación de codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), una operación de codificación entrópica de partición de intervalos de probabilidad (PIPE), una operación de codificación Golomb exponencial u otro tipo de operación de codificación entrópica en los datos. El codificador de vídeo 20 puede facilitar un flujo de bits que incluye datos codificados entrópicamente generados por la unidad de codificación entrópica 118. Por ejemplo, el flujo de bits puede incluir datos que representan un RQT para una CU.
[0096] De acuerdo con unos aspectos de la presente divulgación, la unidad de codificación entrópica 118 puede estar configurada para codificar datos de paleta usando un código de Golomb exponencial truncado de k-ésimo orden (TEGk) como se describe en el presente documento con respecto a diversas figuras de la presente divulgación, tal como la FIG. 1. En particular, de acuerdo con unos aspectos de la presente divulgación, la unidad de codificación entrópica 118 puede codificar datos que indican que al menos un píxel de una primera fila de píxeles de un bloque de datos de vídeo codificado se ha codificado usando el modo Copia. En algunos ejemplos, la unidad de codificación entrópica 118 puede codificar los datos de primera fila con modo Copia habilitado usando un código TEGk.
[0097] La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo 30 de ejemplo que está configurado para implementar las técnicas de la presente divulgación. La FIG. 3 se proporciona con propósitos explicativos y no se limita a las técnicas ampliamente ejemplificadas y descritas en la presente divulgación. Con propósitos explicativos, la presente divulgación describe un descodificador de vídeo 30 en el contexto de la codificación de HEVC. Sin embargo, las técnicas de la presente divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0098] El codificador de vídeo 20 representa un ejemplo de dispositivo que puede estar configurado para realizar técnicas para codificación de vídeo basada en paleta de acuerdo con diversos ejemplos descritos en la presente divulgación. Por ejemplo, el codificador de vídeo 20 puede estar configurado para descodificar selectivamente diversos bloques de datos de vídeo, tales como unas CU o PU en la codificación de HEVC, usando codificación de vídeo basada en paleta o bien codificación de vídeo no basada en paleta. Los modos de codificación de vídeo no basada en paleta se pueden referir a diversos modos de codificación temporal interpredictiva o a modos de codificación espacial intrapredictiva, tales como los diversos modos de codificación especificados en el documento HEVC Draft 10. El descodificador de vídeo 30, en un ejemplo, puede estar configurado para generar una paleta que tiene entradas que indican valores de píxel, recibir información que asocia al menos algunas ubicaciones de píxel de un bloque de datos de vídeo con entradas de la paleta, seleccionar valores de píxel de la paleta en base a la información y reconstruir unos valores de píxel del bloque en base a los valores de píxel seleccionados en la paleta.
[0099] En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye una unidad de descodificación entrópica 150, una memoria de datos de vídeo 151, una unidad de descodificación de bloques 152, una unidad de cuantificación inversa 154, una unidad de procesamiento de transformada inversa 156, una unidad de reconstrucción 158, una unidad de filtro 160 y un búfer de imágenes descodificadas 162. La unidad de descodificación de bloques 152 incluye una unidad de compensación de movimiento 164 y una unidad de procesamiento de intrapredicción 166. El descodificador de vídeo 30 también incluye una unidad de descodificación basada en paleta 165 configurada para realizar diversos aspectos de las técnicas de codificación de vídeo basada en paleta descritas en la presente divulgación. En otros ejemplos, el descodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
[0100] La memoria de datos de vídeo 151 puede almacenar datos de vídeo, tales como un flujo de bits de vídeo codificado, que los componentes del descodificador de vídeo 30 van a descodificar. Los datos de vídeo almacenados en una memoria de datos de vídeo 151 se pueden obtener, por ejemplo, a partir del canal 16, por ejemplo, desde una fuente de vídeo local, tal como una cámara, por medio de una comunicación de red alámbrica o inalámbrica de datos de vídeo, o accediendo a medios físicos de almacenamiento de datos. La memoria de datos de vídeo 151 puede formar un búfer de imágenes codificadas (CPB) que almacena datos de vídeo codificados a partir de un flujo de bits de vídeo codificado. El búfer de imágenes descodificadas 162 puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para su uso en la descodificación de datos de vídeo por el descodificador de vídeo 30, por ejemplo, en unos modos de intracodificación o intercodificación. La memoria de datos de vídeo 151 y el búfer de imágenes descodificadas 162 pueden estar formadas por cualquiera de una variedad de dispositivos de memoria, tales como una memoria dinámica de acceso aleatorio (DRAM), incluyendo una DRAM síncrona (SDRAM), una RAM magnetorresistiva (MRAM), una RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. El mismo dispositivo de memoria o unos dispositivos de memoria separados pueden proporcionar una memoria de datos de vídeo 151 y un búfer de imágenes descodificadas 162. En diversos ejemplos, la memoria de datos de vídeo 151 puede estar en un chip con otros componentes del descodificador de vídeo 30, o fuera del chip en relación con esos componentes.
[0101] Un búfer de imágenes codificadas (CPB) puede recibir y almacenar datos de vídeo codificados (por ejemplo, unidades de NAL) de un flujo de bits. La unidad de descodificación entrópica 150 puede recibir datos de vídeo codificados (por ejemplo, unidades de NAL) desde el CPB y analizar las unidades de NAL para descodificar elementos de sintaxis. La unidad de descodificación entrópica 150 puede descodificar entrópicamente elementos de sintaxis codificados entrópicamente en las unidades de NAL.
[0102] De acuerdo con unos aspectos de la presente divulgación, la unidad de descodificación entrópica 150 puede estar configurada para descodificar datos de paleta usando un código TEGk, como se describe anteriormente con respecto al ejemplo de la FIG. 1. En particular, de acuerdo con unos aspectos de la presente divulgación, la unidad de descodificación entrópica 150 puede descodificar datos que indican que al menos un píxel de una primera fila de píxeles de un bloque codificado de datos de vídeo se ha codificado usando el modo Copia. En algunos ejemplos, la unidad de descodificación entrópica 150 puede descodificar los datos de primera fila con modo Copia habilitado usando un código TEGk.
[0103] La unidad de descodificación de bloques 152, la unidad de cuantificación inversa 154, la unidad de procesamiento de transformada inversa 156, la unidad de reconstrucción 158 y la unidad de filtro 160 pueden generar datos de vídeo descodificados en base a los elementos de sintaxis extraídos del flujo de bits.
[0104] Las unidades de NAL del flujo de bits pueden incluir unidades de NAL de segmentos codificados. Como parte de la descodificación del flujo de bits, la unidad de descodificación entrópica 150 puede extraer y descodificar entrópicamente elementos de sintaxis de las unidades de NAL de segmentos codificados. Cada uno de los segmentos codificados puede incluir una cabecera de segmento y datos de segmento. La cabecera de segmento puede contener elementos de sintaxis pertenecientes a un segmento. Los elementos de sintaxis de la cabecera de segmento pueden incluir un elemento de sintaxis que identifica un PPS asociado a una imagen que contiene el segmento.
[0105] Además de descodificar elementos de sintaxis del flujo de bits, el descodificador de vídeo 30 puede realizar una operación de reconstrucción en una CU no partida. Para realizar la operación de reconstrucción en una CU no partida, el descodificador de vídeo 30 puede realizar una operación de reconstrucción en cada TU de la CU. Realizando la operación de reconstrucción para cada TU de la CU, el descodificador de vídeo 30 puede reconstruir bloques residuales de la CU.
[0106] Como parte de la realización de una operación de reconstrucción en una TU de una CU, la unidad de cuantificación inversa 154 puede realizar una cuantificación inversa, es decir, una descuantificación, de bloques de coeficientes asociados a la TU. La unidad de cuantificación inversa 154 puede usar un valor de QP asociado a la CU de la TU para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa para que la unidad de cuantificación inversa 154 los aplique. Es decir, la relación de compresión, es decir, la relación del número de bits usados para representar la secuencia original y la comprimida, se puede controlar ajustando el valor del QP usado al cuantificar coeficientes de transformada. La relación de compresión también puede depender del procedimiento de codificación entrópica empleado.
[0107] Después de que la unidad de cuantificación inversa 154 haya realizado la cuantificación inversa de un bloque de coeficientes, la unidad de procesamiento de transformada inversa 156 puede aplicar una o más transformadas inversas al bloque de coeficientes para generar un bloque residual asociado a la TU. Por ejemplo, la unidad de procesamiento de transformada inversa 156 puede aplicar al bloque de coeficientes una DCT inversa, una transformada entera inversa, una transformada inversa de Karhunen-Loeve (KLT), una transformada de rotación inversa, una transformada direccional inversa u otra transformada inversa.
[0108] Si se codifica una PU usando intrapredicción, la unidad de procesamiento de intrapredicción 166 puede realizar una intrapredicción para generar bloques predictivos para la PU. La unidad de procesamiento de intrapredicción 166 puede usar un modo de intrapredicción para generar los bloques predictivos de luma, Cb y Cr para la PU en base a los bloques de predicción de unas PU espacialmente vecinas. La unidad de procesamiento de intrapredicción 166 puede determinar el modo de intrapredicción para la PU en base a uno o más elementos de sintaxis descodificados del flujo de bits.
[0109] La unidad de descodificación de bloques 152 puede construir una primera lista de imágenes de referencia (RefPicListO) y una segunda lista de imágenes de referencia (RefPicList1) en base a unos elementos de sintaxis extraídos del flujo de bits. Además, si una PU se codifica usando interpredicción, la unidad de descodificación entrópica 150 puede extraer información de movimiento para la PU. La unidad de compensación de movimiento 164 puede determinar, en base a la información de movimiento de la PU, una o más regiones de referencia para la PU. La unidad de compensación de movimiento 164 puede generar, en base a unos bloques de muestras del uno o más bloques de referencia para la PU, unos bloques predictivos de luma, Cb y Cr para la PU.
[0110] La unidad de reconstrucción 158 puede usar los bloques de transformada de luma, Cb y Cr, asociados a las TU de una CU y los bloques predictivos de luma, Cb y Cr de las PU de la CU, es decir, datos de intrapredicción o datos de interpredicción, según corresponda, para reconstruir los bloques de codificación de luma, Cb y Cr de la CU. Por ejemplo, la unidad de reconstrucción 158 puede añadir muestras de los bloques de transformada de luma, Cb y Cr a unas muestras correspondientes de los bloques predictivos de luma, Cb y Cr para reconstruir los bloques de codificación de luma, Cb y Cr de la CU.
[0111] La unidad de filtro 160 puede realizar una operación de reducción de efecto bloque para reducir los artefactos de bloque asociados a los bloques de codificación de luma, Cb y Cr de la CU. La unidad de filtro 160 puede realizar otras operaciones de filtrado, incluido el filtrado de desplazamiento adaptativo de muestras (SAO) y/o el filtrado de bucle adaptativo (ALF). El descodificador de vídeo 30 puede almacenar los bloques de codificación de luma, Cb y Cr de la CU en el búfer de imágenes descodificadas 162. El búfer de imágenes descodificadas 162 puede proporcionar imágenes de referencia para una posterior compensación de movimiento, intrapredicción y presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1. Por ejemplo, el descodificador de vídeo 30 puede realizar, en base a los bloques de luma, Cb y Cr del búfer de imágenes descodificadas 162, operaciones de intrapredicción o de interpredicción en unas PU de otras CU.
[0112] De acuerdo con diversos ejemplos de la presente divulgación, el descodificador de vídeo 30 puede estar configurado para realizar una codificación de vídeo basada en paleta. La unidad de descodificación basada en paleta 165, por ejemplo, puede realizar una descodificación basada en paleta cuando se selecciona un modo de descodificación basada en paleta, por ejemplo, para una CU o una PU. Por ejemplo, la unidad de descodificación basada en paleta 165 puede estar configurada para generar una paleta que tiene entradas que indican valores de píxel, recibir información que asocia al menos algunas ubicaciones de píxel en un bloque de datos de vídeo a unas entradas de la paleta, seleccionar valores de píxel de la paleta en base a la información y reconstruir valores de píxel del bloque en base a los valores de píxel seleccionados de la paleta. Aunque se describe que la unidad de descodificación basada en paleta 165 realiza diversas funciones, otras unidades de procesamiento o una combinación de diferentes unidades de procesamiento pueden realizar algunas o la totalidad de dichas funciones.
[0113] La unidad de descodificación basada en paleta 165 puede recibir información de modo de codificación de paleta, y realizar las operaciones anteriores cuando la información de modo de codificación de paleta indica que el modo de codificación de paleta se aplica al bloque. Cuando la información de modo de codificación de paleta indica que el modo de codificación de paleta no se aplica al bloque, o cuando otra información de modo indica el uso de un modo diferente, el descodificador de vídeo 30 puede descodificar el bloque de datos de vídeo usando un modo de codificación de vídeo no basada en paleta, por ejemplo, tal como un modo de codificación interpredictiva o intrapredictiva de HEVC. El bloque de datos de vídeo puede ser, por ejemplo, una CU o PU generada de acuerdo con un proceso de codificación de HEVC.
[0114] De acuerdo con unos aspectos de la presente divulgación, la unidad de descodificación basada en paleta 165 puede estar configurada para realizar cualquier combinación de las técnicas para codificación de paleta descritas en el presente documento.
[0115] De acuerdo con las técnicas de la presente divulgación, la unidad de descodificación basada en paleta 165 puede estar configurada para inferir un orden de barrido de píxeles para un bloque de datos de vídeo codificado en modo de paleta. Por ejemplo, la unidad de descodificación basada en paleta 165 puede estar configurada para inferir el orden de barrido de píxeles para un bloque de datos de vídeo codificado sin recibir un elemento de sintaxis de nivel de bloque que tiene un valor representativo del orden de barrido de píxeles para el bloque de datos de vídeo codificado. Como otro ejemplo, la unidad de descodificación basada en paleta 165 puede estar configurada para inferir el orden de barrido de píxeles para un bloque de datos de vídeo codificado que no está basado en un elemento de sintaxis de nivel de bloque que tiene un valor representativo del orden de barrido de píxeles para el bloque codificado de datos de vídeo. debido a que el elemento de sintaxis de nivel de bloque (i) no se ha transmitido a la unidad de descodificación basada en paleta 165, (ii) no es recibido por la unidad de descodificación basada en paleta 165, o (iii) es recibido por la unidad de descodificación basada en paleta 165, pero la unidad de descodificación basada en paleta 165 está configurada para inferir el orden de barrido de píxeles sin referencia al elemento de sintaxis de nivel de bloque recibido.
[0116] Por ejemplo, la unidad de descodificación basada en paleta 165 puede estar configurada para recibir un primer bloque de datos de vídeo codificado en modo de paleta de una imagen. La unidad de descodificación basada en paleta 165 puede estar configurada para inferir un orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta sin recibir un elemento de sintaxis de nivel de bloque que tiene un valor representativo del orden de barrido de píxeles para el primer bloque codificado en modo de paleta. En otro ejemplo, la unidad de descodificación basada en paleta 165 puede estar configurada para inferir un orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta no basado en un elemento de sintaxis de nivel de bloque (recibido o no) que tiene un valor representativo del orden de barrido de píxeles para el primer bloque codificado en modo de paleta. La unidad de descodificación basada en paleta 165 puede estar configurada para descodificar el primer bloque de datos de vídeo codificado en modo de paleta usando el orden de barrido de píxeles inferido.
[0117] En algunos ejemplos, la unidad de descodificación basada en paleta 165 puede estar configurada para recibir un segundo bloque de datos de vídeo codificado en modo de paleta de la imagen. En dichos ejemplos, la unidad de descodificación basada en paleta 165 puede estar configurada para recibir un elemento de sintaxis de nivel de bloque que tiene un valor representativo de un orden de barrido de píxeles para el segundo bloque de datos de vídeo codificado en modo de paleta. La unidad de descodificación basada en paleta 165 puede estar configurada para determinar el orden de barrido de píxeles para el segundo bloque de datos de vídeo codificado en modo de paleta en base al elemento de sintaxis de nivel de bloque recibido. La unidad de descodificación basada en paleta 165 puede estar configurada para descodificar el segundo bloque de datos de vídeo codificado en modo de paleta usando el orden de barrido de píxeles determinado.
[0118] Como otro ejemplo, de acuerdo con unos aspectos de la presente divulgación, la unidad de descodificación basada en paleta 165 puede estar configurada para descodificar al menos un píxel de una primera fila de píxeles de un bloque de datos de vídeo codificado en modo de paleta usando el modo Copia cuando no hay ninguna otra fila de la pluralidad de filas de píxeles por encima de la primera fila.
[0119] La FIG. 4 es un diagrama conceptual que ilustra un ejemplo de determinación de una paleta para codificar datos de vídeo, consecuente con las técnicas de la presente divulgación. El ejemplo de la FIG. 4 incluye una imagen 178 que tiene una primera unidad de codificación (CU) codificada en modo de paleta (PAL) 180 que está asociada a unas primeras paletas 184 y una segunda PAL CU 188 que está asociada a unas segundas paletas 192. Como se describe con más detalle a continuación y de acuerdo con las técnicas de la presente divulgación, las segundas paletas 192 están basadas en las primeras paletas 184. La imagen 178 también incluye un bloque 196 codificado con un modo de codificación de intrapredicción y un bloque 200 que está codificado con un modo de codificación de interpredicción.
[0120] Las técnicas de la FIG. 4 se describen en el contexto del codificador de vídeo 20 (FIG. 1 y FIG. 2) y el descodificador de vídeo 30 (FIG. 1 y FIG. 3) y con respecto a la norma de codificación de vídeo de HEVC con propósitos explicativos. Sin embargo, se debe entender que las técnicas de la presente divulgación no están limitadas de esta manera, y que otros procesadores y/o dispositivos de codificación de vídeo pueden aplicarlas en otros procesos y/o normas de codificación de vídeo.
[0121] En general, una paleta se refiere a un número de valores de píxeles que son dominantes y/o representativos para una CU que se codifica actualmente, la CU 188 en el ejemplo de la FIG. 4. Las primeras paletas 184 y las segundas paletas 192 que se muestran incluyen múltiples paletas. En algunos ejemplos, de acuerdo con unos aspectos de la presente divulgación, un codificador de vídeo (tal como el codificador de vídeo 20 o el descodificador de vídeo 30) puede codificar paletas por separado para cada componente de color de una CU. Por ejemplo, el codificador de vídeo 20 puede codificar una paleta para un componente de luma (Y) de una CU, otra paleta para un componente de croma (U) de la CU y otra paleta más para el componente de croma (V) de la CU. En este ejemplo, unas entradas de la paleta Y pueden representar valores Y de píxeles de la CU, unas entradas de la paleta U pueden representar valores U de píxeles de la CU y unas entradas de la paleta V pueden representar valores V de píxeles de la CU.
[0122] En otros ejemplos, el codificador de vídeo 20 puede codificar una única paleta para todos los componentes de color de una CU. En este ejemplo, el codificador de vídeo 20 puede codificar una paleta que tiene una i-ésima entrada que es un valor triple, que incluye Yi, Ui y Vi. En este caso, la paleta incluye valores para cada uno de los componentes de los píxeles. En consecuencia, la representación de las paletas 184 y 192 como un conjunto de paletas que tiene múltiples paletas individuales es simplemente un ejemplo y no pretende ser limitante.
[0123] En el ejemplo de la FIG. 4, la primera paleta 184 incluye tres entradas 202-206 que tienen un valor de índice de entrada 1, un valor de índice de entrada 2 y un valor de índice de entrada 3, respectivamente. Las entradas 202-206 relacionan los valores de índice con valores de píxel, incluyendo un valor de píxel A, un valor de píxel B y un valor de píxel C, respectivamente. Como se describe en el presente documento, en vez de codificar los valores de píxel reales de la primera CU 180, un codificador de vídeo (tal como un codificador de vídeo 20 o un descodificador de vídeo 30) puede usar una codificación de vídeo basada en paleta para codificar los píxeles del bloque usando los índices 1 -3. Es decir, para cada posición de píxel de la primera CU 180, el codificador de vídeo 20 puede codificar un valor del índice para el píxel, donde el valor del índice está asociado a un valor de píxel en una o más de las primeras paletas 184. El descodificador de vídeo 30 puede obtener los valores de índice a partir de un flujo de bits y reconstruir los valores de píxel usando los valores de índice y una o más de las primeras paletas 184. Por tanto, el codificador de vídeo 20 transmite unas primeras paletas 184 en un flujo de bits de datos de vídeo codificado para su uso por el descodificador de vídeo 30 en la descodificación basada en paleta.
[0124] En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden determinar unas segundas paletas 192 en base a las primeras paletas 184. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden localizar uno o más bloques a partir de los cuales se determinan las paletas predictivas, en este ejemplo, las primeras paletas 184. La combinación de entradas que se usan con propósitos de predicción se puede denominar paleta predictora.
[0125] En el ejemplo de la FIG. 4, las segundas paletas 192 incluyen tres entradas 208-212 que tienen un valor de índice de entrada 1, un valor de índice de entrada 2 y un valor de índice de entrada 3, respectivamente. Las entradas 208-212 relacionan los valores de índice con valores de píxel, incluyendo un valor de píxel A, un valor de píxel B y un valor de píxel D, respectivamente. En este ejemplo, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican qué entradas de las primeras paletas 184 (que representan una paleta predictora, aunque la paleta predictora puede incluir entradas de un número de bloques) están incluidas en las segundas paletas 192.
[0126] En el ejemplo de la FIG. 4, el uno o más elementos de sintaxis se ilustran como un vector 216. El vector 216 tiene un número de bins (o bits) asociados, indicando cada bin si la paleta predictora asociada a ese bin se usa para predecir una entrada de la paleta actual. Por ejemplo, el vector 216 indica que las dos primeras entradas de las primeras paletas 184 (202 y 204) están incluidas en las segundas paletas 192 (un valor de "1" en el vector 216), mientras que la tercera entrada de las primeras paletas 184 no está incluida en las segundas paletas 192 (un valor de "0" en el vector 216). En el ejemplo de la FIG. 4, el vector es un vector booleano. El vector se puede denominar vector de predicción de paleta.
[0127] En algunos ejemplos, como se indica en el presente documento, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden determinar una paleta predictora (que también se puede denominar tabla de paleta predictora o lista de paleta predictora) cuando se realiza la predicción de paleta. La paleta predictora puede incluir entradas de paletas de uno o más bloques vecinos que se usan para predecir una o más entradas de una paleta para codificar un bloque actual. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden construir la lista de la misma manera. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar datos (tales como el vector 216) para indicar qué entradas de la paleta predictora se han de copiar a una paleta para codificar un bloque actual.
[0128] Por tanto, en algunos ejemplos, las entradas de paleta descodificadas previamente se almacenan en una lista para su uso como predictor de paleta. Esta lista se puede usar para predecir entradas de paleta en la CU de modo de paleta actual. Se puede señalizar un vector de predicción binario en el flujo de bits para indicar qué entradas de la lista se reúsan en la paleta actual. En la solicitud provisional de Estados Unidos n.° 62/018.461, presentada el 27 de junio de 2014, se usa la codificación de longitud de recorrido para comprimir el predictor de paleta binario. En un ejemplo, el valor de longitud de recorrido se codifica usando un código Golomb exponencial de 0.° orden.
[0129] De acuerdo con unos aspectos de la presente divulgación, en algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 (por ejemplo, la unidad de codificación entrópica 118 y la unidad de descodificación entrópica 150) pueden estar configurados para codificar (por ejemplo, codificar y descodificar, respectivamente) un vector de predicción de paleta binario para una paleta de un bloque usando un código Golomb exponencial truncado de k-ésimo orden (TEGk), como se describe anteriormente con respecto al ejemplo de la FIG. 1.
[0130] En algunos casos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar configurados para codificar el vector de predicción de paleta binario usando el código TEGk junto con las técnicas descritas en el documento de presentación de norma de Seregin etal., "Non-SCCE3: Run-Length Coding for Palette Predictor", JCTVC-R0228, Sapporo, JP, 30 de junio - 9 de julio de 2014 (a continuación en el presente documento, JCTVC-R0228). En JCTVC-R0228, la codificación de longitud de recorrido se usa para codificar los elementos cero en un vector binario con las siguientes condiciones y etapas:
■ El valor de longitud de recorrido igual a 1 indica el final de la predicción
■ El final de la predicción no se señaliza para el último 1 del vector binario
■ El número de elementos cero precedentes se codifica para cada 1 del vector binario
■ Si el número de elementos cero es mayor que 0, se señaliza el número más uno, debido al valor de escape de 1
■ El valor de longitud de recorrido se codifica usando un código Golomb exponencial de orden 0
[0131] En un ejemplo con propósitos ilustrativos, un vector de predicción de paleta binario puede ser igual a {1100100010000}, lo que indica que cuatro entradas (indicadas por los cuatro unos) del predictor de paleta se copian en la paleta para codificar un bloque actual. En este ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar el vector como 0-0-3-4-1.
[0132] De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar el vector de predicción de paleta binario usando un valor de recorrido máximo X para el vector, que puede ser igual al número de entradas de paleta de la lista predictora de paleta menos la posición actual en orden de barrido menos uno). De acuerdo con un ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 usan un código TEGO para codificar el valor de recorrido.
[0133] La FIG. 5 es un diagrama conceptual que ilustra un ejemplo de determinación de índices a una paleta para un bloque de píxeles, consecuente con las técnicas de la presente divulgación. Por ejemplo, la FIG. 5 incluye un mapa 240 de índices de paleta que relacionan unas posiciones respectivas de píxeles asociados a los índices de paleta a unas entradas de paleta 244.
[0134] Por ejemplo, el índice 1 está asociado al valor A, el índice 2 está asociado al valor B y el índice 3 está asociado al valor C. Además, cuando se indican muestras de escape usando señalización de escape implícita, el codificador de vídeo 20 y el descodificador de vídeo 30 también pueden añadir un índice adicional a las paletas 244, que en la FIG. 5 se ilustra como índice 4, que puede indicar que las muestras del mapa 240 asociado al índice 4 son muestras de escape. En este caso, el codificador de vídeo 20 puede codificar (y el descodificador de vídeo 30 puede obtener, a partir de un flujo de bits codificado) una indicación de un valor de píxel real (o su versión cuantificada) para una posición en el mapa 240 si el valor de píxel no está incluido en las paletas 244.
[0135] En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar configurados para codificar un mapa adicional que indica a qué posiciones de píxel se asocian índices de paleta. Por ejemplo, se va a suponer que la entrada (i, j) del mapa corresponde a la posición (i, j) de una CU. El codificador de vídeo 20 puede codificar uno o más elementos de sintaxis para cada entrada del mapa (es decir, cada posición de píxel) que indican si la entrada tiene un valor de índice asociado. Por ejemplo, el codificador de vídeo 20 puede codificar un indicador que tiene un valor de uno para indicar que el valor del píxel en la ubicación (i, j) de la CU es uno de los valores de las paletas 244.
[0136] El codificador de vídeo 20 puede, en dicho ejemplo, codificar también un índice de paleta (mostrado en el ejemplo de la FIG. 5 como los valores 1-3) para indicar ese valor de píxel de la paleta y permitir que el descodificador de vídeo reconstruya el valor de píxel. En casos en los que las paletas 244 incluyen una sola entrada y un valor de píxel asociado, el codificador de vídeo 20 puede omitir la señalización del valor del índice. El codificador de vídeo 20 puede codificar el indicador para que tenga un valor de cero para indicar que el valor del píxel en la ubicación (i, j) de la CU no es uno de los valores de las paletas 244. En este ejemplo, el codificador de vídeo 20 también puede codificar una indicación del valor del píxel para su uso por el descodificador de vídeo 30 en la reconstrucción del valor de píxel. En algunos casos, el valor del píxel se puede codificar de una manera que conlleva pérdidas.
[0137] El valor de un píxel en una posición de una CU puede proporcionar una indicación de unos valores de uno o más de otros píxeles en otras posiciones de la CU. Por ejemplo, puede haber una probabilidad relativamente alta de que unas posiciones de píxel vecinas de una CU tengan el mismo valor de píxel o estén mapeadas al mismo valor de índice (en el caso de codificación con pérdidas, en la que más de un valor de píxel puede estar mapeado a un único valor de índice).
[0138] En consecuencia, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican un número de píxeles o valores de índice consecutivos en un orden de barrido dado que tienen el mismo valor de píxel o valor de índice. Como se indica anteriormente, la cadena de valores de píxel o índice con igual valor se puede denominar recorrido en el presente documento. En un ejemplo con propósitos ilustrativos, si dos píxeles o índices consecutivos en un orden de barrido dado tienen valores diferentes, el recorrido es igual a cero. Si dos píxeles o índices consecutivos en un orden de barrido dado tienen el mismo valor, pero el tercer píxel o índice en el orden de barrido tiene un valor diferente, el recorrido es igual a uno. Para tres índices o píxeles consecutivos con el mismo valor, el recorrido es dos, y así sucesivamente. El descodificador de vídeo 30 puede obtener los elementos de sintaxis que indican un recorrido a partir de un flujo de bits codificado, y usar los datos para determinar el número de ubicaciones consecutivas que tienen el mismo valor de píxel o índice.
[0139] Como se ha indicado anteriormente, los recorridos se pueden usar junto con un modo CopiaDeEncima o Valor. En un ejemplo con propósitos de ilustración, se van a considerar las filas 264 y 268 del mapa 240. Suponiendo una dirección de barrido horizontal, de izquierda a derecha, la fila 264 incluye tres índices de paleta de "1", dos índice de paleta de "2" y tres índices de paleta de "3". La fila 268 incluye cinco índices de paleta de "1", dos índices de paleta de "3" y una muestra que no está incluida en las paletas 244 (representada por el índice 4, aunque se puede usar un indicador de escape de nivel de muestra para una señalización de escape explícita), que se pueden denominar muestra de escape.
[0140] En este ejemplo, el codificador de vídeo 20 puede usar el modo CopiaDeEncima para codificar datos para la fila 268. Por ejemplo, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican que la primera posición de la fila 268 (la posición más a la izquierda de la fila 268) es la misma que la primera posición de la fila 264. El codificador de vídeo 20 también puede codificar uno o más elementos de sintaxis que indican que el siguiente recorrido de dos entradas consecutivas en la dirección de barrido en la fila 268 es el mismo que el de la primera posición de la fila 264.
[0141] Después de codificar el uno o más elementos de sintaxis que indican la primera posición de la fila 264 y el recorrido de dos entradas (indicadas anteriormente), el codificador de vídeo 20 puede codificar las posiciones cuarta y quinta de la fila 268 (de izquierda a derecha), usando el modo Valor. Por ejemplo, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican un valor de 1 para la cuarta posición y uno o más elementos de sintaxis que indican un recorrido de 1 (por ejemplo, modo Valor). Por consiguiente, el codificador de vídeo 20 codifica estas dos posiciones sin referencia a otra línea.
[0142] El codificador de vídeo 20 puede codificar, pues, la primera posición que tiene un valor de índice de 3 en la fila 268 usando el modo CopiaDeEncima con respecto a la fila superior 264. Por ejemplo, el codificador de vídeo 20 puede señalizar un modo CopiaDeEncima y un recorrido de 1. En consecuencia, el codificador de vídeo 20 puede seleccionar entre codificar valores de píxel o índices de paleta de una línea con respecto a otros valores de la línea, por ejemplo, usando un recorrido, codificar valores de píxel o de una línea con respecto a unos valores de otra línea (o columna), o una combinación de ambas cosas. El codificador de vídeo 20 puede, en algunos ejemplos, realizar una optimización velocidad/distorsión para efectuar la selección.
[0143] El codificador de vídeo 20 puede codificar a continuación la muestra de escape para la muestra final de la fila 268 de acuerdo con un orden de barrido (de izquierda a derecha), que no está incluida en las primeras paletas 244. Por ejemplo, el codificador de vídeo 20 puede codificar la posición final de la fila 268 como una muestra de escape. Es decir, el codificador de vídeo 20 puede codificar una indicación de que la posición final de la fila 268 es una muestra de escape (por ejemplo, índice 4), así como una indicación del valor de muestra. El descodificador de vídeo 30 puede obtener la sintaxis descrita anteriormente a partir de un flujo de bits codificado y reconstruir la fila 268 usando dicha sintaxis.
[0144] El descodificador de vídeo 30 puede recibir los elementos de sintaxis descritos anteriormente y reconstruir la fila 268. Por ejemplo, el descodificador de vídeo 30 puede obtener datos que indican una ubicación particular en una fila vecina de la cual se va a copiar el valor de índice asociado para la posición del mapa 240 que se codifica actualmente. El descodificador de vídeo 30 también puede obtener datos que indican el número de posiciones consecutivas en el orden de barrido que tienen el mismo valor de índice. Aunque se describen con respecto a un orden de barrido horizontal, las técnicas de la presente divulgación también se pueden aplicar a otro orden de barrido o dirección de barrido, tal como un orden de barrido o dirección de barrido vertical o diagonal (por ejemplo, de 45 grados o 135 grados en sentido diagonal en el bloque).
[0145] Las técnicas de la presente divulgación, descritas con más detalle a continuación, están relacionadas con el diseño de codificación de vídeo basada en paleta, que incluye una definición de tamaño de paleta. Las técnicas de la presente divulgación se pueden usar junto con la codificación de contenido de pantalla y otras ampliaciones de la HEVC, así como con otros códecs de vídeo que utilizan codificación de contenido de pantalla.
[0146] En un ejemplo de codificación de paleta de HEVC, los píxeles de un bloque se pueden codificar con uno de un modo Recorrido, un modo Copia o un modo Escape, excepto la primera fila del bloque cuando solo se usan los modos Recorrido o Escape. Se puede generar un elemento de sintaxis palette_run_type_flag para indicar si se usa el modo Recorrido o el modo Copia. En el modo de recorrido, se señaliza un índice de paleta (palette_index) junto con un valor de recorrido (palette_run). El valor de recorrido indica el número de píxeles que tendrán el mismo índice de paleta. En el modo Copia, solo se señaliza un valor de recorrido que indica el número de píxeles para los que se copia el índice de paleta de los píxeles localizados directamente encima del píxel actual. El modo Escape se codifica dentro del modo Recorrido, donde se usa un índice de paleta específico para indicar este modo. En una propuesta de modo de codificación de paleta, el índice de paleta específico es igual al tamaño de paleta. En el modo Escape, el valor de recorrido no está codificado ya que el modo Escape se aplica a un solo triplete de píxeles (por ejemplo, componentes de color Y, Cr y Cb de un píxel) donde los valores de los componentes de color se señalizan explícitamente usando el elemento de sintaxis palette_escape_val.
[0147] Se puede señalizar un identificador (por ejemplo, palette_escape_val_present_flag) por bloque para indicar el uso de los píxeles de escape. El indicador palette_escape_val_present_flag igual a 1 indica que hay al menos un píxel de escape en el bloque codificado en modo de paleta, y el indicador palette_escape_val_present_flag es igual a 0 en caso contrario.
[0148] El número de valores en una paleta (es decir, el tamaño de paleta) se puede establecer en uno de varios valores y puede tener un tamaño máximo predeterminado. Por ejemplo, en una propuesta para la codificación de paleta en HEVC, el tamaño de paleta se restringe para que esté en el intervalo de 0 a max_palette_size (igual a 31, en un ejemplo).
[0149] Para bloques codificados con un modo de codificación de paleta, los valores de la paleta se pueden predecir a partir de unas entradas de paleta de una paleta usada para bloques previamente codificados en modo de paleta. En algunos ejemplos, las entradas de una paleta se pueden señalizar explícitamente como nuevas entradas. En otros ejemplos, las entradas de la paleta de un bloque codificado previamente se pueden reusar para paletas posteriores. Este caso se denomina uso compartido de paleta, y se puede señalizar un indicador (por ejemplo, palette_share_flag) para indicar que toda la paleta del bloque previo se reúsa sin modificaciones.
[0150] En algunas propuestas para el modo de codificación de paleta, el barrido de píxeles en el bloque puede ser de dos tipos: barrido transversal vertical o transversal horizontal (por ejemplo, serpenteante). Un ejemplo de orden de barrido horizontal se muestra en la FIG. 6A, que muestra un bloque de datos de vídeo 270 representado con una matriz de píxeles 272 y un orden de barrido horizontal 274. Un ejemplo de orden de barrido vertical se muestra en la FIG. 6B, que muestra un bloque de datos de vídeo 270 representado con una matriz de píxeles 272 y un orden de barrido vertical 276. El patrón de barrido usado para un bloque particular se puede obtener a partir de un indicador (por ejemplo, palette_transpose_flag) que se señaliza por unidad de bloque.
[0151] Los diseños de codificación de paleta actuales presentan los siguientes inconvenientes. Como un ejemplo de inconveniente, en algunas propuestas para codificación de paleta, el tamaño máximo de paleta en el bloque puede ser igual a 31, lo que significa que el índice de paleta más grande puede ser igual a 30, y un píxel de escape se señaliza con el índice de paleta igual a 31. En otras palabras, el índice de paleta eficaz que se puede señalizar puede ser igual a 31, lo que corresponde a un tamaño máximo de paleta de 32. Sin embargo, si palette_escape_val_present_flag indica que no hay píxeles de escape en el bloque, el índice de paleta máximo que se puede codificar sigue siendo 30, y el índice de paleta igual a 31 no se usa en este caso. De forma similar, cuando se hace uso compartido de una paleta, se puede usar hasta un índice de paleta igual a 30 independientemente de la presencia de píxeles de escape en el bloque actual.
[0152] Como otro inconveniente, en algunas propuestas de codificación de paleta, se puede usar un tamaño de paleta igual a 0. En este caso, los píxeles solo se pueden codificar con el modo Escape. Como resultado, palette_escape_val_present_flag siempre se ha de señalizar con un valor igual a 1, y no puede tener un valor 0.
[0153] Como otro inconveniente, en algunas propuestas para codificación de paleta, si el tamaño de paleta es igual a 0, el único modo de píxel posible es el modo Escape. En este caso, el modo de barrido en el que se procesan los píxeles no tiene ningún impacto (es decir, el barrido transversal vertical y el transversal horizontal darán el mismo resultado). Sin embargo, el indicador para indicar el modo de barrido se sigue señalizando. De forma similar, cuando el tamaño de paleta es igual a 1 y no se usan píxeles de escape, el único modo posible es el modo Recorrido con un índice de paleta igual a 0. El orden de barrido usado tampoco tiene ningún impacto en esta situación.
[0154] Como otro inconveniente, en algunas propuestas para codificación de paleta, la señalización de modo de píxel no se señaliza uniformemente en el bloque. Esto se debe a que, para la primera fila del bloque, el modo no puede ser un modo Copia. Así pues, para la primera fila del bloque, el índice de modo se obtiene de modo que sea igual al modo Recorrido (o el modo Escape para el valor de índice de paleta específico). Este proceso de obtención introduce una verificación durante el análisis, ya que, en algunos casos, el valor de modo no se analiza, sino que se obtiene.
[0155] Como otro inconveniente, en algunas propuestas para el modo Copia para codificación de paleta, un píxel superior (es decir, el píxel directamente encima del píxel codificado actualmente) codificado con el modo Escape se puede incluir en el valor de recorrido del modo Copia. Sin embargo, el proceso de copia no está definido para píxeles codificados en modo de escape, ya que esos píxeles incluyen dos elementos de información (es decir, el índice de paleta y el valor de escape). Si el codificador de vídeo 20 simplemente copiara el índice de paleta del píxel superior (que es un índice de paleta específico que representa un modo de escape) como se hace en el modo Copia, los valores de escape para los píxeles actuales no se definirían ni señalizarían. Esto puede crear un problema en el análisis, ya que cuando el descodificador de vídeo 30 intenta descodificar un píxel de escape, los valores de color de escape que se esperaría que estuvieran señalizados no están presentes.
[0156] Como otro inconveniente, en algunas propuestas para codificación de paleta, existen dos procedimientos generales para obtener la paleta para el bloque actual. Un procedimiento implica reusar por completo la paleta del bloque codificado en modo de paleta previo (uso compartido de paleta) donde no se pueden señalizar nuevas entradas. El segundo procedimiento conlleva señalizar un vector binario predictor de paleta. El vector binario predictor de paleta incluye una indicación de una entrada de paleta del bloque codificado en modo de paleta previo junto con las nuevas entradas de paleta. En las propuestas actuales, no es posible hacer algo entre esos dos procedimientos de obtención de paleta, es decir, reusar por completo la paleta del bloque codificado en modo de paleta previo sin señalizar un vector predictor de paleta, pero siguiendo señalizando adicionalmente nuevas entradas de paleta. Así pues, las propuestas actuales carecen de flexibilidad.
[0157] En vista de los inconvenientes mencionados anteriormente, la presente divulgación propone procedimientos y técnicas de diseño de codificación de paleta, que incluyen una definición del tamaño de paleta.
[0158] En un ejemplo de la divulgación, se propone una definición de tamaño de paleta mejorada. En este ejemplo, el tamaño de paleta se define de modo que el índice máximo posible para la paleta incluye el índice que representa el píxel de escape. Con referencia al ejemplo anterior para técnicas de codificación de paleta actuales, cuando el tamaño máximo de paleta es 31, el índice máximo de paleta es 31 para el píxel de escape. La presente divulgación propone hacer que el tamaño máximo de paleta sea igual a 32 y el valor máximo posible de índice de paleta señalizado sea 31. O, más en general, el valor máximo posible de índice de paleta señalizado es uno menos que el tamaño máximo de paleta.
[0159] En un ejemplo de la presente divulgación, cuando no se usan píxeles de escape en el bloque actual (por ejemplo, como se indica en el indicador palette_escape_val_present_flag), el índice de paleta anterior igual a 31, que está vacante en este ejemplo, se puede usar en el modo Recorrido. El elemento de sintaxis palette_escape_val_present_flag puede definirse mediante uno o más bits. En los ejemplos, donde el indicador palette_escape_val_present_flag es un solo bit, un valor igual a 1 puede especificar que el bloque actual puede contener o que realmente contiene un píxel de escape. Un valor igual a 0 puede especificar que el bloque actual puede no contener o que en realidad no contiene un píxel de escape.
[0160] La indicación de modo Escape se puede mantener sin cambios, es decir, la indicación del modo Escape sería un índice máximo de paleta igual a un valor de hasta 31 (es decir, un valor de 0 a 31) y el índice de paleta en el modo Recorrido puede ser igual a hasta 30 (es decir, un valor de 0 a 30). En otras palabras, se puede observar que no se reserva ningún índice de paleta adicional dentro de la paleta de palette_size para el píxel codificado de escape.
[0161] En un sentido más general, el índice de paleta máximo usado en el modo Recorrido puede ser palette_size - 1 si no hay un píxel codificado de escape en el bloque, y palette_size - 2 si hay al menos un píxel codificado de escape en el bloque que se puede indicar, por ejemplo, mediante el índice de paleta igual a palette_size - 1.
[0162] En este caso, palette_size siempre es mayor que 0, y palette_size se obtiene como una suma del número de entradas de paleta reusadas y el número de las nuevas entradas de paleta señalizadas se incrementa en 1 si palette_size no es igual a max_palette_size.
[0163] Adicionalmente, cuando se hace uso compartido de una paleta y un índice de paleta dentro de la paleta de palette_size no está disponible o no está reservado para el píxel de escape, el tamaño de paleta no se puede ampliar simplemente en 1, ya que existe la posibilidad de que el tamaño de paleta ya sea igual a max_palette_size. En este ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden realizar una verificación para el tamaño de paleta, y si palette_size de la paleta compartida es menor que max_palette_size, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden alterar o cambiar el tamaño de paleta del bloque actual en base a palette_escape_val_present_flag. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 incrementan el tamaño de paleta del bloque actual en 1 si se usan píxeles de escape en el bloque (por ejemplo, como se indica mediante palette_escape_val_present_flag). Sin embargo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar que palette_size ya es igual a max_palette_size y puede, como respuesta, alterar o cambiar el tamaño de paleta del bloque actual. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden reducir el tamaño de paleta del bloque actual en 1 antes de incrementarlo en 1 para un píxel de escape. En este ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden establecer el indicador de predictor de paleta reusada en 0 para la última entrada que está relacionada con el índice de paleta igual a max_palette_size menos 1.
[0164] En otro ejemplo, si no se hace uso compartido de una paleta y el tamaño de paleta es igual a max_palette_size, los píxeles de escape no se pueden codificar en el bloque y el codificador de vídeo 20 puede señalizar palette_escape_val_present_flag con un valor igual a 0. El codificador de vídeo 20 puede señalizar condicionalmente palette_escape_val_present_flag con un valor correspondiente (por ejemplo, 0 o 1) dependiendo del tamaño de paleta. En otro ejemplo, el codificador de vídeo 20 puede señalizar condicionalmente palette_escape_val_present_flag con un valor correspondiente (por ejemplo, 0 o 1) dependiendo del modo de uso compartido de paleta y de si el tamaño de paleta del bloque actual es igual a max_palette_size. En otro ejemplo, cuando se desea habilitar la señalización de píxeles de escape cuando el tamaño de paleta es igual a max_palette_size con el uso compartido de paleta habilitado, si no se hace uso compartido de una paleta, entonces el codificador de vídeo 20 puede no señalizar palette_escape_val_present_flag y el descodificador de vídeo 30 puede obtener el valor de palette_escape_val_present_flag para que sea igual a 0. En otros ejemplos, el descodificador de vídeo 30 puede obtener el valor de palette_escape_val_present_flag para que sea igual a 1 cuando el codificador de vídeo 20 no señaliza palette_escape_val_present_flag.
[0165] La siguiente sección analiza unas técnicas para obtener el valor de palette_escape_val_present_flag. En base a un tamaño de paleta igual a 0, el codificador de vídeo 20 puede determinar que solo se pueden usar píxeles codificados en el modo Escape en el bloque actual. En este ejemplo, el codificador de vídeo puede señalizar o señalizar siempre palette_escape_val_present_flag con un valor igual a 1. El codificador de vídeo 20 puede no señalizar o no señalizar siempre palette_escape_val_present_flag porque el valor de palette_escape_val_present_flag es constante en este ejemplo. En su lugar, el descodificador de vídeo 30 puede estar configurado para inferir el valor de palette_escape_val_present_flag para que sea igual a 1. En otros ejemplos, el descodificador de vídeo 30 puede estar configurado para inferir el valor de palette_escape_val_present_flag para que sea igual a 0.
[0166] El codificador de vídeo 20 puede señalizar condicionalmente palette_escape_val_present_flag con un valor correspondiente en base al tamaño de paleta del bloque actual de datos de vídeo. Por ejemplo, el codificador de vídeo 20 puede no señalizar palette_escape_val_present_flag como respuesta a la determinación por el codificador de vídeo 20 de que el tamaño de la paleta es igual a 0. Como otro ejemplo, el codificador de vídeo 20 puede estar configurado para no señalizar un índice de paleta ya que también se puede obtener el índice de paleta igual a 0. En este caso, el modo de paleta es similar al modo intra-PCM. Sin embargo, el codificador de vídeo 20 puede estar configurado para señalizar recorridos para los valores de escape en este caso, para diferenciarlo de la PCM y captar algunas redundancias de señal.
[0167] Por ejemplo, este procedimiento se puede implementar como sigue en relación con el SCC WD, donde las adiciones están representadas por texto subrayado.
Figure imgf000025_0001
palette_escape_val_present_flag igual a 1 especifica que el bloque actual puede contener un píxel de escape. escape_val_present_flag igual a 0 especifica que no hay ningún píxel de escape en el bloque actual. Si palette escape val present flag no está presente se infiere que es igual a 1.
[0168] En otro ejemplo, las técnicas de la presente divulgación pueden estar implementadas como una restricción normativa sobre el elemento de sintaxis como sigue, donde las adiciones al SCC WD están representadas por texto subrayado:palette_escape_val_present_flag igual a 1 especifica que el bloque actual puede contener un píxel de escape. escape_val_present_flag igual a 0 especifica que no hay ningún píxel de escape en el bloque actual. palette escape val present flag será igual a 1 si palette size es igual a 1.
[0169] Si se infringe esta regla, se considera que dicho flujo de bits no cumple con la norma.
[0170] Los procedimientos descritos anteriormente para la definición de tamaño de paleta y la obtención de palette_escape_val_present_flag se pueden combinar conjuntamente con la implementación siguiente, proporcionada como ejemplo, donde las adiciones al SCC WD están representadas por texto subrayado.
Figure imgf000026_0001
[0171] Las condiciones en cursiva anteriores se pueden eliminar si los píxeles de escape no se pueden incluir en el modo de paleta con un tamaño de paleta igual a max_palette_size cuando está habilitado el uso compartido de paleta. La variable indexMax indica el índice de paleta máximo posible, y se puede establecer incondicionalmente como palette_size - 1 en comparación con el ajuste condicional basado en palette_escape_val_present_flag en el SCC WD.
[0172] Esta sección de la divulgación describe la señalización de orden de barrido. De acuerdo con algunos ejemplos de la presente divulgación, la señalización de orden de barrido (o señalización de orden de exploración por barrido) para un bloque actual de datos de vídeo de una imagen (por ejemplo, una CU, PU o sub-PU actual) no se requiere cuando el tamaño de paleta del bloque de datos de vídeo actual es igual a 0, o el tamaño de paleta es igual a 1 y no se usan píxeles de escape en el bloque, ya que el único modo de píxel posible es el modo Escape o el modo Recorrido, respectivamente.
[0173] La presente divulgación propone que el codificador de vídeo 20 señalice el indicador de orden de barrido solo en los casos en que pueda haber un impacto (es decir, cuando órdenes de barrido diferentes producen resultados diferentes), por ejemplo, cuando el tamaño de paleta es mayor que 0 y se usan píxeles de escape o el tamaño de la paleta es mayor que 1 si no se usan píxeles de escape.
[0174] Como dos ejemplos, este procedimiento se puede implementar como sigue en relación con el SCC WD, donde las adiciones están representadas por texto subrayado:
Figure imgf000026_0002
o
Figure imgf000027_0001
palette_transpose_flag igual a 1 especifica que el proceso de transposición se aplica a los índices de paleta asociados de la CU actual (por ejemplo, el bloque de datos de vídeo actual de una imagen que se codifica o descodifica). palette_transpose_flag igual a 0 especifica que el proceso de transposición no se aplica a los índices de paleta asociados de la CU actual. Si palette transpose flag no está presente, se infiere que es igual a 0.
[0175] En lugar de que el descodificador de vídeo 30 infiera que el valor de palette_transpose_flag es igual a 0 si no está presente, se pueden usar otros órdenes de barrido predefinidos en otros ejemplos. Este procedimiento también se puede ampliar a más de dos patrones de barrido.
[0176] En un ejemplo de las técnicas de la presente divulgación para señalizar órdenes de barrido, el codificador de vídeo 20 ha de señalizar el valor de palette_escape_val_present_flag antes de señalizar el valor de palette_transpose_flag.
[0177] En otro ejemplo, el codificador de vídeo puede determinar que el tamaño de paleta del bloque de datos de vídeo actual es igual a 0 y, como resultado, el codificador de vídeo 20 puede codificar cada píxel como un píxel de escape. Desde la perspectiva de la optimización velocidad-distorsión del codificador, es menos probable que se elija este caso. Por lo tanto, se propone imponer una restricción al modo de paleta en el sentido de que si se selecciona el modo de paleta, el tamaño de paleta debe ser mayor o igual a 1.
[0178] En base a esta restricción de flujo de bits, la semántica del elemento de sintaxis palette_num_signalled_entries es como sigue, donde las adiciones al SCC WD están representadas por texto subrayado:
Figure imgf000027_0002
palette_num_signalled_entries especifica el número de entradas de la paleta que se señalizan explícitamente para la unidad de codificación actual si numPredPreviousPalette es mayor que 0. palette num signalled entries especifica el número de entradas menos 1 en la paleta que se señalizan explícitamente para la unidad de codificación actual si numPredPreviousPalette es igual a 0.
[0179] En otro ejemplo de la divulgación, en lugar de cambiar la semántica para el elemento de sintaxis palette_num_signalled_entries cuando el valor de numPredPreviousPalette es igual a 0, solo un intervalo válido de valores para el elemento de sintaxis palette_num_signalled_entries se cambia como sigue, donde los cambios relativos al SCC WD están representados por texto subrayado:
palette_num_signalled_entries especifica el número de entradas de la paleta que se señalan explícitamente para la unidad de codificación actual. El valor de palette num signalled entries se restringe como sigue: Si numPredPreviousPalette es mayor que 0, palette num signalled entries debe estar en el intervalo de 0 a (max palette size - numPredPreviousPalette). ambos incluidos. De lo contrario (es decir, si numPredPreviousPalette es igual a 0), palette num signalled entries deberá estar en el intervalo de 1 a max palette size, ambos incluidos.
[0180] La FIG. 7 es un diagrama de flujo que ilustra un proceso de ejemplo para la descodificación de datos de vídeo consecuente con las técnicas de la presente divulgación. Aunque con propósitos ilustrativos se describe en general que el proceso de la FIG. 7 es realizado por un descodificador de vídeo 30, una variedad de procesadores diferentes también pueden llevar a cabo el proceso mostrado en la FIG. 7. En algunos ejemplos, la unidad de descodificación de bloques 152 y/o la unidad de descodificación basada en paleta 165 pueden realizar uno o más procesos mostrados en la FIG. 7.
[0181] En el ejemplo de la FIG. 7, el descodificador de vídeo 30 puede recibir (280) un primer bloque de datos de vídeo codificado en modo de paleta de una imagen. El descodificador de vídeo 30 puede inferir (282) un orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta sin recibir un elemento de sintaxis de nivel de bloque que tenga un valor representativo del orden de barrido de píxeles para el primer bloque codificado en modo de paleta. En algunos ejemplos, el elemento de sintaxis de nivel de bloque no recibido por el descodificador de vídeo 30 puede ser palette_transpose_flag. El descodificador de vídeo 30 puede descodificar (284) el primer bloque de datos de vídeo codificado en modo de paleta usando el orden de barrido de píxeles inferido.
[0182] En algunos ejemplos, el descodificador de vídeo 30 puede inferir el orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta infiriendo el valor del primer elemento de sintaxis de nivel de bloque para el primer bloque codificado en modo de paleta de modo que se va a aplicar o no se va a aplicar un proceso de transposición a unos índices de paleta asociados al primer bloque de datos de vídeo codificado en modo de paleta para descodificar el primer bloque de datos de vídeo codificado en modo de paleta. En los ejemplos donde el proceso de transposición se va a aplicar a unos índices de paleta asociados con el primer bloque de datos de vídeo codificado en modo de paleta, el valor inferido del elemento de sintaxis de nivel de bloque puede ser de uno. En ejemplos donde el proceso de transposición no se va a aplicar a unos índices de paleta asociados al primer bloque de datos de vídeo codificado en modo de paleta, el valor inferido del elemento de sintaxis de nivel de bloque puede ser de cero. En algunos ejemplos, el descodificador de vídeo 30 puede inferir el orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta infiriendo el valor del elemento de sintaxis de nivel de bloque de modo que el orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta se infiere que es un orden de barrido de píxeles no horizontal o no vertical.
[0183] En algunos ejemplos, el descodificador de vídeo 30 puede inferir el orden de barrido de píxeles para el primer bloque de datos de vídeo codificado en modo de paleta en base a un tamaño de paleta del primer bloque de datos de vídeo codificado en modo de paleta que es igual a un valor de cero, igual a un valor de uno, mayor que un valor de cero o mayor que un valor de uno.
[0184] El descodificador de vídeo 30 puede recibir (286) un segundo bloque de datos de vídeo codificado en modo de paleta de la imagen. El descodificador de vídeo 30 puede recibir (288) un elemento de sintaxis de nivel de bloque que tiene un valor representativo de un orden de barrido de píxeles para el segundo bloque de datos de vídeo codificado en modo de paleta. En algunos ejemplos, el elemento de sintaxis de nivel de bloque recibido puede ser palette_transpose_flag. El descodificador de vídeo 30 puede determinar (290) el orden de barrido de píxeles para el segundo bloque de datos de vídeo codificado en modo de paleta en base al elemento de sintaxis de nivel de bloque recibido. El descodificador de vídeo 30 puede descodificar (292) el segundo bloque de datos de vídeo codificado en modo de paleta usando el orden de barrido de píxeles determinado.
[0185] La FIG. 8 es un diagrama de flujo que ilustra un proceso de ejemplo para codificar datos de vídeo consecuente con las técnicas de la presente divulgación. Aunque con propósitos ilustrativos se describe en general que el proceso de la FIG. 8 es realizado por un codificador de vídeo 20, una variedad de procesadores diferentes también pueden llevar a cabo el proceso mostrado en la FIG. 7. En algunos ejemplos, la unidad de codificación de bloques 100 y/o la unidad de codificación basada en paleta 122 pueden realizar uno o más procesos mostrados en la FIG. 8.
[0186] En el ejemplo de la FIG. 8, el codificador de vídeo 20 puede determinar (300) que un bloque de datos de vídeo se ha de codificar usando el modo de paleta. El codificador de vídeo 20 puede determinar (302) un tamaño de paleta para el bloque de datos de vídeo. El codificador de vídeo 20 puede determinar (304) un orden de barrido de píxeles para el bloque de datos de vídeo. El codificador de vídeo 20 puede codificar (306) el bloque de datos de vídeo usando el modo de paleta. El codificador de vídeo 20 puede determinar (308) si se ha de señalizar un primer elemento de sintaxis de nivel de bloque representativo del orden de barrido de píxeles usado para el bloque de datos de vídeo en base al tamaño de paleta. En algunos ejemplos, el primer elemento de sintaxis de nivel de bloque puede ser palette_transpose_flag.
[0187] En algunos ejemplos, una determinación de si se ha de señalizar el primer elemento de sintaxis de nivel de bloque puede estar basada en que el tamaño de paleta es igual a un valor de cero, igual a un valor de uno, mayor que un valor de cero o mayor que un valor de uno. En otros ejemplos, una determinación de si se ha de señalizar el primer elemento de sintaxis de nivel de bloque puede estar basada en si el bloque de datos de vídeo codificado en modo de paleta incluye al menos un píxel de escape. En otros ejemplos, una determinación de si se ha de señalizar el primer elemento de sintaxis de nivel de bloque puede estar basada en un valor de un segundo elemento de sintaxis de nivel de bloque representativo de si el bloque de datos de vídeo codificado en modo de paleta incluye al menos un píxel de escape.
[0188] En algunos ejemplos, el procedimiento mostrado en el ejemplo de la FIG. 8 puede incluir no señalizar el primer elemento de sintaxis de nivel de bloque cuando el tamaño de paleta es igual a un valor de cero. En otro ejemplo, el primer elemento de sintaxis de nivel de bloque puede no señalizarse cuando el tamaño de paleta es igual a un valor de uno y el bloque de datos de vídeo codificado en modo de paleta no incluye al menos un píxel de escape. En otro ejemplo, el primer elemento de sintaxis de nivel de bloque puede no señalizarse cuando el tamaño de paleta es igual a un valor de uno y el valor de un segundo elemento de sintaxis de nivel de bloque es representativo de que el bloque de datos de vídeo codificado en modo de paleta no incluye al menos un píxel de escape.
[0189] La FIG. 9 es un diagrama conceptual que ilustra un ejemplo de habilitación de modo Copia para una primera fila de un bloque de datos de vídeo. En unas propuestas actuales para codificación de paleta, el modo Copia no se usa para la primera fila del bloque, ya que no hay píxeles directamente encima de la primera fila localizada dentro del bloque actual. Por lo tanto, el modo Copia no está señalizado para la primera fila y el modo Recorrido se obtiene de las propuestas actuales para la codificación de paleta. Esto introduce una verificación durante el análisis, ya que el modo de píxel a veces no se señaliza, sino que se obtiene.
[0190] En las técnicas de ejemplo de la presente divulgación, el codificador de vídeo 20 puede habilitar el modo Copia para la primera fila de píxeles en el bloque actual de datos de vídeo (por ejemplo, representada como la fila 0 en el bloque de datos de vídeo 320 actual) de una imagen estableciendo que el índice de paleta sea igual a un índice de paleta predeterminado para píxeles codificados con el modo Copia en la primera fila. Aunque el bloque de datos de vídeo 320 actual se muestra como un bloque de 8 x 8, el bloque de datos de vídeo 320 actual puede tener cualquier otro tamaño en otros ejemplos. Con respecto a la primera fila, se entiende que ninguna otra fila del bloque de datos de vídeo 320, que contiene una pluralidad de filas de píxeles, está por encima de la primera fila del bloque de datos de vídeo actual. Sin embargo, también se entiende que otros píxeles pueden ser vecinos (por la izquierda, por la derecha, por encima o en diagonal dependiendo del orden de barrido implementado) de cualquier píxel de la primera fila del bloque de datos de vídeo 320 actual de otro bloque de datos de vídeo de la misma imagen. El término "actual" en "bloque de datos de vídeo actual" significa que el bloque de datos de vídeo es el bloque de datos de vídeo actual que el codificador de vídeo 20 o el descodificador de vídeo 30 está codificando o descodificando.
[0191] En algunos ejemplos, el índice de paleta predeterminado puede ser un índice fijo o un índice señalizado para al menos cada bloque, cabecera de segmento, cualquier conjunto de parámetros, tal como un conjunto de parámetros de vídeo (VPS), un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de imagen (PPS) u otro lugar. En algunos ejemplos, habilitar el modo Copia para la primera fila permite codificar el bloque de datos de vídeo usando el modo de paleta de modo que al menos un píxel de la primera fila de píxeles del bloque de datos de vídeo se codifica usando el modo Copia.
[0192] El índice predeterminado (fijo) puede ser uno de los índices de paleta válidos del bloque actual en el intervalo de 0 a palette_size - 1. Por ejemplo, el índice predeterminado puede ser siempre igual a 0; sin embargo, también son posibles otros valores. El índice predeterminado puede depender de otros valores de índice señalizados en la primera fila. Por ejemplo, si el primer índice señalizado es 1 y el segundo señalizado es 2, entonces, si hay otro índice, es probable que el índice 1 vuelva a aparecer. Por lo tanto, el índice predeterminado puede ser un valor de índice obtenido mediante el modo de copia para la primera fila.
[0193] En algunos ejemplos, el índice de paleta predeterminado puede ser uno de los índices de paleta correspondientes al bloque de datos de vídeo 320. En otros ejemplos, el índice de paleta predeterminado puede ser el primer índice de los índices de paleta correspondientes al bloque de datos de vídeo. El índice de paleta predeterminado se puede identificar mediante un valor de cero (o cualquier otro valor correspondiente a otro índice de paleta válido del bloque de datos de vídeo actual) donde el primer índice de los índices de paleta se identifica mediante el valor de cero. En otros ejemplos más, el índice de paleta predeterminado puede no ser uno de los índices de paleta correspondientes al bloque de datos de vídeo actual. En dichos ejemplos, el índice de paleta predeterminado puede ser un índice de unos índices de paleta correspondiente a otro bloque de datos de vídeo que se ha codificado o descodificado previamente.
[0194] Para el modo Copia habilitado para la primera fila, el índice de paleta y el índice máximo de paleta se pueden ajustar antes de la señalización, de forma similar a la realizada para el índice de paleta para otras filas del bloque de datos de vídeo 320 actual. Adicionalmente, se puede definir que si los píxeles virtuales localizados fuera del bloque de datos de vídeo 320 actual, incluyendo los píxeles localizados encima de la primera fila (por ejemplo, de otro bloque de datos de vídeo previamente codificados o descodificados), no están codificados en modo de escape, por ejemplo. codificados con el modo Copia, el índice de paleta puede ser igual al índice de paleta predeterminado. Esta definición adicional se puede usar para evitar redundancia en la señalización de índices de paleta. Por ejemplo, el modo de píxel del primer píxel no puede ser igual al modo Recorrido con el índice de paleta igual al índice de paleta predeterminado, ya que este píxel se va a codificar con el modo Copia.
[0195] Por ejemplo, la implementación puede ser como sigue:
• Si el píxel es el primer píxel del bloque
◦ el índice máximo de paleta se reduce en 1
◦ el índice de paleta se reduce en 1
• De lo contrario, si el modo de píxel del píxel codificado a la izquierda en el orden de barrido es el modo Recorrido, se aplica lo siguiente:
◦ el índice máximo de paleta se reduce en 1
◦ si el índice de paleta es mayor que el índice de paleta del píxel izquierdo en el orden de barrido, el índice de paleta se reduce en 1
• De lo contrario, si el modo de píxel del píxel codificado a la izquierda en el orden de barrido es el modo Copia, y el píxel actual está localizado en la primera fila, o el píxel no está en la primera fila y el modo de píxel del píxel directamente encima no es el modo Escape, se aplica lo siguiente:
◦ el índice máximo de paleta se reduce en 1
◦ si el índice de paleta es mayor que el índice de paleta del píxel superior en el orden de barrido o igual al índice de paleta predeterminado si el píxel superior está fuera del bloque, entonces el índice de paleta se reduce en 1.
[0196] Por ejemplo, este procedimiento se puede implementar como sigue en relación con el SCC WD, donde las adiciones están representadas con texto subrayado y las eliminaciones están representadas con texto tachado:
Figure imgf000030_0001
[0197] En las técnicas descritas en el presente documento, se puede usar más de un índice predeterminado. Además, el orden en que se usan los índices puede tener patrones diferentes. El patrón que se usa se puede fijar y almacenar tanto en el codificador de vídeo 20 como en el descodificador de vídeo 30, o el patrón se puede señalizar desde el codificador de vídeo 20 al descodificador de vídeo 30, de forma similar a como se hace para el índice predeterminado.
[0198] La señalización del modo de píxel (modo Recorrido o modo Copia) se puede añadir para la primera fila del bloque de datos de vídeo 320 actual cuando el modo Copia está habilitado en la primera fila. En algunos ejemplos, los elementos de sintaxis para señalización de modo de píxel se pueden codificar en CABAC usando modelización de contexto. El contexto del elemento de sintaxis de modo de píxel en la primera fila se puede compartir con los contextos para elementos de sintaxis de modo de píxel para otras filas del bloque de datos de vídeo 320 actual. Por ejemplo, se puede usar el contexto 0 si un píxel de referencia está codificado con el modo Copia, y se puede usar el contexto 1 si un píxel de referencia está codificado con el modo Recorrido, o viceversa.
[0199] El píxel de referencia puede ser un píxel izquierdo del píxel actual, puede ser un píxel superior empezando por la segunda fila y/o puede ser un píxel izquierdo para la primera fila (ya que no hay ningún píxel superior en la primera fila). Más en general, el píxel de referencia puede ser un píxel ya codificado donde la información de modo de píxel está disponible. Para el primer píxel, puede no haber ningún píxel de referencia disponible. En esta situación, el contexto para el elemento de sintaxis para la primera fila puede estar predefinido (por ejemplo, se puede seleccionar un contexto usado previamente o se puede usar un contexto separado).
[0200] En otro ejemplo, solo se puede usar un único contexto y el contexto para codificar el elemento de sintaxis de modo píxel en la primera fila se puede compartir solo con el contexto 0 o el contexto 1.
[0201] Sin embargo, compartir el contexto puede no ser la mejor opción en todas las circunstancias, ya que las estadísticas de usar un modo de píxel particular en la primera fila pueden ser diferentes de las estadísticas de las otras filas, ya que la elección del índice de paleta es más limitada en la primera. fila (por ejemplo, donde solo se usa(n) un(os) índice(s) predeterminado(s)). Así pues, en otro ejemplo, se puede asignar un contexto separado o unos contextos separados para los elementos de sintaxis de modo de píxel para el modo de píxel de la primera fila. Por ejemplo, el (los) contexto(s) separado(s) puede(n) ser solo un único contexto adicional, tal como el contexto 2, o el (los) contexto(s) separado(s) puede(n) depender del modo de píxel del píxel de referencia. Por ejemplo, el contexto 2 se puede usar para codificar un elemento de sintaxis de modo de píxel si el píxel de referencia está codificado con el modo Copia, y el contexto 3 se puede usar para codificar el elemento de sintaxis de modo de píxel si el píxel de referencia está codificado en el modo Recorrido. Para el elemento de sintaxis para el primer píxel, el contexto se puede fijar para que sea el contexto 2 o el contexto 3 o, en otro ejemplo, se puede usar un contexto 4 separado.
[0202] Como un enfoque más general, que se puede usar con o sin habilitar el modo Copia para la primera fila, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden dividir los contextos de acuerdo con el modo de píxel de referencia, incluyendo el modo Escape, el contexto para el cual se comparte actualmente con el modo Recorrido. En este caso, el número de contextos puede ser de al menos tres; uno para el modo Recorrido, uno para el modo Copia y uno para el modo Escape, donde el modo es el modo del píxel de referencia.
[0203] De forma similar, la ampliación de contexto que incluye el modo Escape se puede realizar con el modo Copia habilitado para la primera fila.
[0204] La FIG. 10 es un diagrama de flujo que ilustra un proceso de ejemplo para descodificar datos de vídeo consecuente con las técnicas de la presente divulgación. Aunque con propósitos ilustrativos se describe en general que el proceso de la FIG. 10 es realizado por un descodificador de vídeo 30, una variedad de procesadores diferentes también pueden llevar a cabo el proceso mostrado en la FIG. 10. En algunos ejemplos, la unidad de descodificación de bloques 152 y/o la unidad de descodificación basada en paleta 165 pueden realizar uno o más procesos mostrados en la FIG. 10.
[0205] En el ejemplo de la FIG. 10, el descodificador de vídeo 30 puede determinar (330) que un bloque de datos de vídeo se ha de codificar usando el modo de paleta. El descodificador de vídeo 30 puede recibir (332) un bloque de datos de vídeo codificado en modo de paleta que tiene una pluralidad de filas de píxeles. El descodificador de vídeo 30 puede recibir (334) índices de paleta correspondientes al bloque de datos de vídeo codificado en modo de paleta. El descodificador de vídeo 30 puede determinar (336) un orden de barrido de píxeles para el bloque de datos de vídeo codificado en modo de paleta. El descodificador de vídeo 30 puede descodificar (338) el bloque de datos de vídeo codificado en modo de paleta usando el orden de barrido de píxeles. El descodificador de vídeo 30 puede descodificar (340) al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo codificado en modo de paleta usando el modo de copia donde no hay ninguna otra fila de la pluralidad de filas de píxeles encima de la primera fila.
[0206] En algunos ejemplos, descodificar al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo codificados en modo de paleta usando el modo de copia puede incluir usar un índice de paleta predeterminado para el al menos un píxel de la primera fila de píxeles. En otros ejemplos, descodificar al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo codificado en modo de paleta usando el modo de copia puede incluir usar un índice de paleta predeterminado para el al menos un píxel de la primera fila de píxeles que es uno de los índices de paleta correspondientes al bloque de datos de vídeo codificado. En otros ejemplos, descodificar al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo codificado en modo de paleta usando el modo de copia puede incluir usar un índice de paleta predeterminado para el al menos un píxel de la primera fila de píxeles que es el primer índice de los índices de paleta.
[0207] En otros ejemplos más, descodificar al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo codificado en modo de paleta usando el modo de copia puede incluir usar un índice de paleta predeterminado para el al menos un píxel de la primera fila de píxeles que se identifica mediante el valor de cero y el primer índice de los índices de paleta se identifica mediante el valor de cero. En otros ejemplos más, descodificar al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo codificado en modo de paleta usando el modo de copia puede incluir usar un índice de paleta predeterminado para el al menos un píxel de la primera fila de píxeles que no es uno de los índices de paleta correspondientes al bloque de datos de vídeo. En otros ejemplos más, descodificar al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo codificado en modo de paleta usando el modo de copia puede incluir usar un índice de paleta predeterminado para el al menos un píxel de la primera fila de píxeles que es un índice de unos índices de paleta correspondientes a otro bloque de datos de vídeo. En otros ejemplos más, descodificar al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo codificado en modo de paleta usando el modo de copia puede incluir usar un índice de paleta para el al menos un píxel de la primera fila de píxeles en base a uno o más índices de paleta de uno o más píxeles descodificados antes del al menos un píxel.
[0208] La FIG. 11 es un diagrama de flujo que ilustra un proceso de ejemplo para codificar datos de vídeo consecuente con unas técnicas de la presente divulgación. Aunque con propósitos ilustrativos se describe en general que el proceso de la FIG. 11 es realizado por un codificador de vídeo 20, una variedad de procesadores diferentes también pueden llevar a cabo el proceso mostrado en la FIG. 11. En algunos ejemplos, la unidad de codificación de bloques 100 y/o la unidad de codificación basada en paleta 122 pueden realizar uno o más procesos mostrados en la FIG. 11.
[0209] En el ejemplo de la FIG. 11, el codificador de vídeo 20 puede determinar (350) que un bloque de datos de vídeo que tiene una pluralidad de filas de píxeles se ha de codificar usando el modo de paleta. El codificador de vídeo 20 puede generar (352) índices de paleta para el bloque de datos de vídeo. El codificador de vídeo 20 puede codificar (354) el bloque de datos de vídeo usando el modo de paleta de modo que el al menos un píxel de una primera fila de píxeles del bloque de datos de vídeo se codifica usando el modo de copia donde no hay ninguna otra fila de la pluralidad de filas de píxeles encima de la primera fila.
[0210] En algunos ejemplos, codificar el bloque de datos de vídeo usando el modo de paleta de modo que al menos un píxel de la primera fila de píxeles del bloque de datos de vídeo se codifica usando el modo de copia puede incluir usar un índice de paleta predeterminado para el al menos un píxel de la primera fila de píxeles. En dichos ejemplos, el índice de paleta predeterminado puede ser uno de los índices de paleta correspondientes al bloque de datos de vídeo. Por ejemplo, el índice de paleta predeterminado puede ser el primer índice de los índices de paleta o cualquier otro índice de los índices de paleta. El índice de paleta predeterminado se puede identificar mediante el valor de cero y el primer índice de los índices de paleta se puede identificar mediante el valor de cero. En algunos ejemplos, el índice de paleta predeterminado puede no ser uno de los índices de paleta correspondientes al bloque de datos de vídeo. Por ejemplo, el índice de paleta predeterminado puede ser un índice de los índices de paleta correspondientes a otro bloque de datos de vídeo (por ejemplo, de los índices de paleta de un bloque de datos de vídeo codificado previamente). En algunos ejemplos, codificar el bloque de datos de vídeo usando el modo de paleta de modo que al menos un píxel de la primera fila de píxeles del bloque de datos de vídeo se codifica usando el modo de copia puede incluir usar un índice de paleta para el al menos un píxel de la primera fila de píxeles en base a uno o más índices de paleta de uno o más píxeles codificados antes del al menos un píxel.
[0211] En la siguiente sección se analizan los píxeles de escape y el modo Copia. En las propuestas actuales para codificación de paleta, cuando el píxel superior se codifica con el modo Escape, el procedimiento de copia no se define para el píxel codificado en modo de escape. La solución puede ser definir un proceso de copia para el píxel de escape o prohibir normativamente que se produzca este caso. Como ejemplos, el problema se puede resolver usando uno de los siguientes procedimientos descritos a continuación.
[0212] Como se describe en la solicitud provisional de EE. UU., n.° 62/019.223, presentada el 2 de julio de 2014, el único modo de escape representado por un índice de paleta específico se copia para el píxel actual. Los valores de color de escape para el triplete se señalizan posteriormente.
[0213] En lugar de copiar un índice de escape, se puede asignar otro índice de paleta para el píxel actual si el píxel superior es un píxel de escape. Por ejemplo, el índice de paleta puede ser un índice de paleta predeterminado que se puede fijar, por ejemplo, para ser igual a uno de los índices de paleta válidos para el bloque actual, tal como 0, o el índice de paleta predeterminado se puede señalizar al menos para cada bloque, cabecera de segmento, conjunto de parámetros (tal como VPS, SPS, PPS) o señalizar en otro lugar. De forma adicional o alternativa, el píxel de escape se puede sustituir por un índice de paleta no de escape previo. Por ejemplo, se supone que el índice para el modo Copia es el último índice copiado que no es un escape como el primero disponible a la izquierda del píxel superior en el orden de barrido, o puede ser el índice izquierdo del píxel actual. Esto se puede combinar con el índice fijo. Por ejemplo, si el índice de paleta de escape de sustitución es de escape, se puede usar el índice predeterminado. Por ejemplo, si el píxel izquierdo es un píxel de escape, entonces se usa el índice predeterminado (por ejemplo, 0) para reemplazar el escape con un propósito de copia; de lo contrario, se usa el índice del píxel izquierdo.
[0214] En otro ejemplo, el codificador de vídeo 20 puede estar configurado para no permitir normativamente el caso en el que el píxel codificado con el modo Copia pueda tener el píxel superior codificado con el modo Escape. Esto, por ejemplo, se puede implementar en la semántica del elemento de sintaxis palette_run, como se muestra a continuación. Si se infringe esta regla, se considera que el flujo de bits incumple el estándar.
[0215] El elemento de sintaxis palette_run indica el número de ubicaciones consecutivas menos 1 con el mismo índice de paleta que la posición en la fila superior cuando palette_run_type_flag es igual a COPY_ABOVE_MODE o representa el número de ubicaciones consecutivas menos 1 con el mismo índice de paleta cuando palette_run_type_flag es igual a INDEX_MODE. Si palette_run_type_flag es igual a COPY_ABOVE_MODE, uno de los píxeles consecutivos definidos por el valor palette_run localizado en la fila superior no se puede codificar como ESCAPE_PIXEL.
[0216] La siguiente sección analiza unas técnicas para definir un píxel de escape de acuerdo con algunos ejemplos. Si se usan las técnicas descritas anteriormente para la definición del tamaño de paleta, puede suceder que un índice particular denote un píxel de escape o un píxel no de escape, dependiendo del valor de palette_escape_val_present_flag. Por ejemplo, se va a considerar que el tamaño máximo de paleta es 32. Si palette_escape_val_present_flag es 1, el valor de índice 31 denota un píxel de escape. Por otro lado, cuando palette_escape_val_present_flag es 0, es posible un valor de índice de 31 para un píxel no de escape. Se aplica una situación similar si se usa algún otro valor, tal como 0, para denotar un píxel de escape. En este caso, un valor de índice de 0 puede representar un píxel de escape cuando palette_escape_val_present_flag es 1, pero un píxel no de escape cuando palette_escape_val_present_flag es 0.
[0217] Por consiguiente, de acuerdo con algunos ejemplos, la presente divulgación propone cambiar la definición de píxel de escape como sigue: Un píxel se define como un píxel de escape si palette_escape_val_present_flag es igual a 1, el píxel está codificado en modo Recorrido y tiene un valor de índice de paleta específico. El valor de índice específico puede, por ejemplo, ser igual al tamaño de paleta o al tamaño de paleta menos 1 o a algún otro valor fijo tal como 0.
[0218] Esta sección de la divulgación analiza el uso compartido de una paleta con nuevas entradas de paleta. En la presente divulgación, se propone ampliar el uso compartido de una paleta con la capacidad de señalizar nuevas entradas de paleta. El número de nuevas entradas y los valores de color de las nuevas entradas en sí se señalizan explícitamente cuando hay espacio para su inclusión en la paleta (es decir, el tamaño de paleta es menor que max_palette_size).
[0219] La ampliación de uso compartido de paleta de la presente divulgación puede reemplazar las propuestas actuales para uso compartido de paleta (es decir, el número de nuevas entradas se señaliza para el uso compartido de paleta, o se puede añadir como un tercer procedimiento de la obtención de paleta). En el último caso, se señaliza un nuevo indicador, posiblemente después de palette_share_flag y condicionalmente si no se hace uso compartido de una paleta y el tamaño de paleta previa es menor que max_palette_size, para indicar que el predictor de paleta no está señalizado y que se reúsa la paleta del bloque anterior . En este caso, el número de nuevas entradas es mayor que 0 ya que tener un número cero de las nuevas entradas es lo mismo que compartir la paleta, por lo que en su lugar se puede señalizar el número de nuevas entradas menos 1.
[0220] El codificador de vídeo 20 señaliza posteriormente las nuevas entradas de paleta que se pueden incluir después de las entradas de paleta reusadas o antes de las entradas de paleta reusadas para el tercer procedimiento de la obtención de paleta (analizado en esta sección). De forma alternativa, siempre se pueden colocar nuevas entradas de paleta antes de las entradas de paleta reusadas para tener una obtención de paleta uniforme en todos los procedimientos de obtención de paleta.
[0221] La inclusión de nuevas entradas antes de las entradas reusadas puede ser más eficaz, ya que las entradas de la paleta previa que desempeñan un papel de las entradas reusadas o predichas pueden no usarse todas, lo que introduce cierta ineficacia en la señalización de índices de paleta, al contrario de lo que sucede con las nuevas entradas, que se usan todas en el bloque. Otra ventaja de colocar las nuevas entradas antes que las entradas de paleta reusadas es que no todas las entradas reusadas se pueden añadir debido a la limitación del tamaño de paleta. En este caso, primero se añaden las nuevas entradas y a continuación se añaden las entradas de la paleta previa, mientras que el tamaño de paleta actual es menor que max_palette_size.
[0222] Cuando se hace uso compartido de una paleta con nuevas entradas de paleta, la señalización existente se puede reusar de la siguiente manera, donde las adiciones al SCC WD están representadas por texto subrayado:
Figure imgf000033_0001
[0223] Se debe reconocer que, dependiendo del ejemplo, determinadas acciones o eventos de cualquiera de las técnicas descritas en el presente documento se pueden realizar en una secuencia distinta, se pueden añadir, fusionar o excluir por completo (por ejemplo, no todas las acciones o los eventos descritos son necesarios para la puesta en práctica de las técnicas). Además, en determinados ejemplos, las acciones o los eventos se pueden realizar simultáneamente, por ejemplo, a través de procesamiento de múltiples hilos, procesamiento por Interrupciones o múltiples procesadores, en lugar de secuencialmente. Además, aunque con propósitos de claridad se describe que un único módulo o unidad realiza determinados aspectos de la presente divulgación, se debe entender que una combinación de unidades o módulos asociados a un codificador de vídeo pueden realizar las técnicas de la presente divulgación.
[0224] De acuerdo con la presente divulgación, el término "o" se puede interpretar como "y/o" cuando el contexto no dicta lo contrario. Adicionalmente, aunque se pueden haber usado frases como "uno o más" o "al menos uno" o similares para algunas características divulgadas en el presente documento pero no para otras; se puede interpretar que las características para las cuales no se ha usado dicho lenguaje tienen dicho significado implícito cuando el contexto no dicta lo contrario.
[0225] Determinados aspectos de la presente divulgación se han descrito con respecto a la norma de HEVC en desarrollo con propósitos ilustrativos. Sin embargo, las técnicas descritas en la presente divulgación pueden ser útiles para otros procesos de codificación de vídeo, que incluyen otros procesos de codificación de vídeo estándar o de propiedad todavía por desarrollar.
[0226] El codificador de vídeo 20 (FIGS. 1 y 2) y/o el descodificador de vídeo 30 (FIGS. 1 y 3), ambos de los cuales se pueden denominar en general codificadores de vídeo, pueden realizar las técnicas descritas anteriormente. Asimismo, la codificación de vídeo se puede referir a una codificación de vídeo o a una descodificación de vídeo, según corresponda.
[0227] Aunque se han descrito anteriormente combinaciones particulares de diversos aspectos de las técnicas, estas combinaciones se proporcionan simplemente para ilustrar ejemplos de las técnicas descritas en la presente divulgación. En consecuencia, las técnicas de la presente divulgación no se deben limitar a estas combinaciones de ejemplo, sino que pueden englobar cualquier combinación concebible de los diversos aspectos de las técnicas descritas en la presente divulgación. Las técnicas descritas en la presente divulgación se pueden usar juntas en cualquier combinación.
[0228] En uno o más ejemplos, las funciones descritas en la presente divulgación se pueden implementar en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en o transmitir a través de un medio legible por ordenador como una o más instrucciones o código, y ejecutar mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible, tal como unos medios de almacenamiento de datos, o unos medios de comunicación que incluyen cualquier medio que facilita la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) unos medios tangibles de almacenamiento legibles por ordenador que no son transitorios o a (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se puede acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0229] A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se puede usar para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o unas tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que en su lugar están dirigidos a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, donde los discos flexibles reproducen normalmente datos magnéticamente, mientras que los demás discos reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también se deben incluir dentro del alcance de los medios legibles por ordenador.
[0230] Las instrucciones se pueden ejecutar mediante uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables in situ (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. Por consiguiente, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o de software dedicados configurados para codificar y descodificar, o incorporar en un códec combinado. Asimismo, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
[0231] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En la presente divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización mediante diferentes unidades de hardware. En su lugar, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar mediante un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.
[0232] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (4)

REIVINDICACIONES
1. Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:
determinar (300) que un bloque de datos de vídeo se ha de codificar usando un modo de paleta; determinar (302) un tamaño de paleta para el bloque de datos de vídeo;
codificar (306) el bloque de datos de vídeo usando el modo de paleta;
determinar (308) si se ha de señalizar un primer elemento de sintaxis de nivel de bloque para descodificar el primer bloque de datos de vídeo codificado en modo de paleta, en el que el primer elemento de sintaxis de nivel de bloque es representativo de si un proceso de transposición se aplica o no a unos índices de paleta del bloque actual; caracterizado por que cuando el tamaño de paleta es igual a un valor de uno y el bloque de datos de vídeo codificado en paleta no incluye al menos un píxel de escape, la primera sintaxis de nivel de bloque no se señaliza.
2. El procedimiento de la reivindicación 1, en el que determinar (308) si se ha de señalizar el primer elemento de sintaxis de nivel de bloque se basa en un valor de un segundo elemento de sintaxis de nivel de bloque representativo de si el bloque de datos de vídeo codificado en paleta incluye al menos un píxel de escape.
3. Un dispositivo (12) para codificar datos de vídeo, comprendiendo el dispositivo:
una memoria (101) configurada para almacenar datos de vídeo de una imagen; y
un codificador de vídeo (20) configurado para:
determinar (300) que un bloque de los datos de vídeo se ha de codificar usando un modo de paleta; determinar (302) un tamaño de paleta para el bloque de datos de vídeo;
codificar (306) el bloque de datos de vídeo usando un modo de paleta;
determinar (308) si se ha de señalizar un primer elemento de sintaxis de nivel de bloque para descodificar el primer bloque de datos de vídeo codificado en modo de paleta, en el que el primer elemento de sintaxis de nivel de bloque es representativo de si se aplica o no un proceso de transposición; caracterizado por que cuando el tamaño de paleta es igual a un valor de uno y el bloque de datos de vídeo codificado en paleta no incluye al menos un píxel de escape, la primera sintaxis de nivel de bloque no se señaliza.
4. Un medio de almacenamiento no transitorio legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que uno o más procesadores de un dispositivo informático configurado para codificar datos de vídeo para:
determinar que un bloque de datos de vídeo se ha de codificar usando un modo de paleta; determinar que un bloque de datos de vídeo se ha de codificar usando un modo de paleta; determinar un tamaño de paleta para el bloque de datos de vídeo;
codificar el bloque de datos de vídeo usando un modo de paleta;
determinar si se ha de señalizar un primer elemento de sintaxis de nivel de bloque para descodificar el primer bloque de datos de vídeo codificado en modo de paleta, en el que el primer elemento de sintaxis de nivel de bloque es representativo de si un proceso de transposición se aplica o no a unos índices de paleta del bloque actual; caracterizado por que cuando el tamaño de paleta es igual a un valor de uno y el bloque de datos de vídeo codificado en paleta no incluye al menos un píxel de escape, la primera sintaxis de nivel de bloque no se señaliza.
ES15748436T 2014-08-04 2015-08-04 Diseño de codificación y descodificación en modo de paleta Active ES2874552T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462033067P 2014-08-04 2014-08-04
US201462044088P 2014-08-29 2014-08-29
US201462062674P 2014-10-10 2014-10-10
US14/816,980 US10687064B2 (en) 2014-08-04 2015-08-03 Palette mode encoding and decoding with inferred pixel scan order
PCT/US2015/043572 WO2016022537A1 (en) 2014-08-04 2015-08-04 Palette mode encoding and decoding design

Publications (1)

Publication Number Publication Date
ES2874552T3 true ES2874552T3 (es) 2021-11-05

Family

ID=55181443

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15748436T Active ES2874552T3 (es) 2014-08-04 2015-08-04 Diseño de codificación y descodificación en modo de paleta

Country Status (10)

Country Link
US (2) US10687064B2 (es)
EP (2) EP3843397A1 (es)
JP (1) JP6571162B2 (es)
KR (1) KR102338145B1 (es)
CN (1) CN106537916B (es)
AU (1) AU2015301222B2 (es)
BR (1) BR112017002138A2 (es)
ES (1) ES2874552T3 (es)
TW (1) TWI718101B (es)
WO (1) WO2016022537A1 (es)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10687064B2 (en) 2014-08-04 2020-06-16 Qualcomm Incorporated Palette mode encoding and decoding with inferred pixel scan order
KR20160037111A (ko) 2014-09-26 2016-04-05 주식회사 케이티 비디오 신호 처리 방법 및 장치
TWI577177B (zh) * 2014-10-06 2017-04-01 財團法人工業技術研究院 調色板編碼方法與解碼方法以及電子裝置
KR102109154B1 (ko) * 2014-10-06 2020-05-12 브이아이디 스케일, 인크. 화면 콘텐츠 코딩에 대한 개선된 팔레트 코딩
US9596479B2 (en) * 2014-10-07 2017-03-14 Hfi Innovation Inc. Method of pulse-code modulation and palette coding for video coding
CN107079163B (zh) 2014-10-20 2020-06-05 株式会社Kt 用于处理视频信号的方法和设备
WO2016114583A1 (ko) 2015-01-15 2016-07-21 주식회사 케이티 비디오 신호 처리 방법 및 장치
WO2016122253A1 (ko) * 2015-01-29 2016-08-04 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN107409224B (zh) 2015-01-29 2020-09-08 株式会社Kt 用于处理视频信号的方法和设备
CN105872539B (zh) * 2015-02-08 2020-01-14 同济大学 图像编码方法和装置及图像解码方法和装置
EP3282706A4 (en) 2015-04-02 2019-01-30 KT Corporation METHOD AND APPARATUS FOR PROCESSING VIDEO SIGNAL
US20180213222A1 (en) * 2015-05-27 2018-07-26 Kt Corporation Method and device for processing video signal
KR20180010260A (ko) * 2015-06-03 2018-01-30 미디어텍 인크. 화상 및 비디오 데이터의 팔레트 코딩 방법
US20160360205A1 (en) 2015-06-08 2016-12-08 Industrial Technology Research Institute Video encoding methods and systems using adaptive color transform
US10728738B2 (en) * 2016-04-01 2020-07-28 Intel Corporation Smart device for notification loopback routing to a primary communication device
CN112673640A (zh) * 2018-08-30 2021-04-16 华为技术有限公司 使用调色板译码的编码器、解码器和相应方法
WO2020084602A1 (en) * 2018-10-26 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Signaling of partition information
US11202101B2 (en) * 2019-03-13 2021-12-14 Qualcomm Incorporated Grouped coding for palette syntax in video coding
CN114466185B (zh) * 2019-04-25 2024-07-26 北京达佳互联信息技术有限公司 使用调色板模式进行视频编解码的方法和装置
US11553209B2 (en) * 2019-05-15 2023-01-10 Hyundai Motor Company Method and apparatus for parallel encoding and decoding of moving picture data
US11109041B2 (en) * 2019-05-16 2021-08-31 Tencent America LLC Method and apparatus for video coding
MX2022000905A (es) 2019-09-07 2022-02-14 Beijing Dajia Internet Information Tech Co Ltd Se?alizacion de modo de prediccion en codificacion de video.
US11240507B2 (en) * 2019-09-24 2022-02-01 Qualcomm Incorporated Simplified palette predictor update for video coding
CN111755051B (zh) * 2020-06-19 2022-07-26 杭州电子科技大学 基于忆阻器的2-9线三值译码器电路

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60254190A (ja) 1984-05-31 1985-12-14 株式会社 アスキ− デイスプレイコントロ−ラ
US8413205B2 (en) * 2001-09-19 2013-04-02 Tvworks, Llc System and method for construction, delivery and display of iTV content
KR20070052642A (ko) * 2005-11-17 2007-05-22 엘지전자 주식회사 데이터 재생방법 및 재생장치와 데이터 전송방법
AU2006246497B2 (en) 2006-11-30 2010-02-11 Canon Kabushiki Kaisha Method and apparatus for hybrid image compression
WO2012035691A1 (ja) * 2010-09-13 2012-03-22 株式会社ソニー・コンピュータエンタテインメント 画像処理装置、画像処理方法、動画像ファイルのデータ構造、データ圧縮装置、データ復号装置、データ圧縮方法、データ復号方法、および圧縮動画像ファイルのデータ構造
US8615138B2 (en) 2011-11-03 2013-12-24 Google Inc. Image compression using sub-resolution images
GB201321851D0 (en) 2013-12-10 2014-01-22 Canon Kk Run length parameters coding for palette mode
GB2526337A (en) 2014-05-21 2015-11-25 Canon Kk Method and apparatus for syntax element encoding in video coding and decoding
US11323733B2 (en) 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization in palette-based video coding
EP3130148A4 (en) 2014-05-23 2017-06-21 HFI Innovation Inc. Methods for palette size signaling and conditional palette escape flag signaling
US10382749B2 (en) 2014-05-23 2019-08-13 Qualcomm Incorporated Coding run values based on palette index in palette-based video coding
US10291940B2 (en) 2014-05-23 2019-05-14 Qualcomm Incorporated Coding runs with escape in palette-based video coding
US10687064B2 (en) 2014-08-04 2020-06-16 Qualcomm Incorporated Palette mode encoding and decoding with inferred pixel scan order

Also Published As

Publication number Publication date
AU2015301222B2 (en) 2019-07-11
US11785222B2 (en) 2023-10-10
CN106537916A (zh) 2017-03-22
US20200267390A1 (en) 2020-08-20
JP6571162B2 (ja) 2019-09-04
EP3178226B1 (en) 2021-03-10
US10687064B2 (en) 2020-06-16
BR112017002138A2 (pt) 2017-11-21
TWI718101B (zh) 2021-02-11
EP3843397A1 (en) 2021-06-30
US20160037164A1 (en) 2016-02-04
TW201615012A (en) 2016-04-16
WO2016022537A1 (en) 2016-02-11
CN106537916B (zh) 2019-10-25
JP2017527193A (ja) 2017-09-14
AU2015301222A1 (en) 2017-02-02
KR20170039176A (ko) 2017-04-10
KR102338145B1 (ko) 2021-12-09
EP3178226A1 (en) 2017-06-14

Similar Documents

Publication Publication Date Title
ES2874552T3 (es) Diseño de codificación y descodificación en modo de paleta
ES2866035T3 (es) Restricción de los valores señalizados de píxeles de escape en la codificación de vídeo por el modo de paleta
ES2767103T3 (es) Determinación de valores de parámetros de cuantificación (QP) y de valores QP delta para bloques codificados por paleta en la codificación de vídeo
KR102574560B1 (ko) 비디오 코딩을 위해 액세스하는 샘플을 갖는 선형 모델 예측 모드
ES2807184T3 (es) Determinación de aplicación de filtrado de reducción del efecto bloque a bloques codificados por paleta en la codificación de vídeo
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
ES2873548T3 (es) Codificación de píxeles de escape para codificación de paleta
ES2751576T3 (es) Agrupación de períodos de derivación de paleta para codificación de vídeo
ES2770664T3 (es) Restricción en el tamaño de bloque de paleta en la codificación de vídeo
ES2746072T3 (es) Parámetros de paletas máximos en codificación de vídeo basada en paletas
ES2892964T3 (es) Inicialización de predictor de paleta y fusión para codificación de vídeo
ES2633947T3 (es) Predicción de paletas en la codificación de vídeo basada en paleta
KR102478411B1 (ko) 서브샘플링 포맷을 위한 팔레트 모드
ES2804515T3 (es) Derivación de Qp y desviación para la transformada de color adaptativa en la codificación de vídeo
ES2677522T3 (es) Series de codificación en codificación de vídeo basada en paleta
ES2702909T3 (es) Cuantización de los píxeles de escape de un bloque de vídeo en modo de codificación de paleta
ES2750957T3 (es) Señalización de predictores de paleta con código de longitud de ejecución para codificación de vídeo
KR102205328B1 (ko) 팔레트-기반 비디오 코딩에서 팔레트 인덱스들의 결정
BR112016027426B1 (pt) Codificação de valores de curso com base em índice de paleta em codificação de vídeo baseada em paleta
BR112016027428B1 (pt) Inicialização de paleta de preditor em codificação de vídeo com base em paleta
BR112015024766B1 (pt) Desabilitação da ocultação de dados de sinal na codificação de vídeo
BR112016027384B1 (pt) Codificação de amostra de escape em codificação de vídeo com base em paleta
BR112016006607B1 (pt) Método e dispositivo para processamento de dados de vídeo, e memória legível por computador
WO2014197691A1 (en) Residual differential pulse code modulation (dpcm) extensions and harmonization with transform skip, rotation, and scans
EP3198873A1 (en) Parsing dependency reduction for palette index coding