ES2767103T3 - 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 - Google Patents

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 Download PDF

Info

Publication number
ES2767103T3
ES2767103T3 ES15741626T ES15741626T ES2767103T3 ES 2767103 T3 ES2767103 T3 ES 2767103T3 ES 15741626 T ES15741626 T ES 15741626T ES 15741626 T ES15741626 T ES 15741626T ES 2767103 T3 ES2767103 T3 ES 2767103T3
Authority
ES
Spain
Prior art keywords
palette
block
value
encoded
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
ES15741626T
Other languages
English (en)
Inventor
Wei Pu
Rojals Joel Sole
Rajan Laxman Joshi
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 ES2767103T3 publication Critical patent/ES2767103T3/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/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/117Filters, e.g. for pre-processing or post-processing
    • 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/124Quantisation
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)
  • Color Television Systems (AREA)

Abstract

Un procedimiento de descodificación de datos de vídeo, comprendiendo el procedimiento: determinar (220) una paleta para un bloque codificado por paleta que incluye una o más entradas de paleta que indican uno o más valores de color respectivos; descodificar (224) un primer elemento sintáctico de un flujo de bits recibido, siendo el primer elemento sintáctico una bandera de nivel de bloque que indica: i) que al menos un píxel dentro del bloque codificado por paleta se va a descodificar como un píxel de escape que tiene un valor de color que no está incluido en la paleta, o ii) que ninguno de los píxeles dentro del bloque codificado por paleta va a descodificarse como píxeles de escape; y en base a que el primer elemento sintáctico que indica que al menos un píxel dentro del bloque codificado por paleta va a descodificarse como un píxel de escape: descodificar (226) un segundo elemento sintáctico del flujo de bits recibido que indica un valor de parámetro de cuantificación, QP, delta de paleta para el bloque codificado por paleta, ajustar un valor QP predicho en base al valor QP delta de paleta para determinar el valor QP de paleta para el bloque codificado por paleta, descodificar (228) del flujo de bits recibido un valor de color cuantificado para un píxel de escape, y cuantificar de manera inversa el valor de color para el píxel de escape de acuerdo con el valor QP de paleta.

Description

DESCRIPCIÓN
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
CAMPO TÉCNICO
[0001] Esta 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, que incluye televisores digitales, sistemas de radiodifusión digital directa, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, tabletas electrónicas, 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 celulares o de radio por 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 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) y las ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital con más eficacia 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 fragmento de vídeo (es decir, una trama de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo de un fragmento 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 pueden denominarse tramas, y las imágenes de referencia pueden denominarse tramas de referencia.
[0004] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original 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 de acuerdo con datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio del píxel hasta un dominio de transformada, dando como resultado coeficientes residuales, que a continuación se pueden cuantificar. Los coeficientes cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden explorar para generar un vector unidimensional de coeficientes, y se puede aplicar codificación por entropía para lograr incluso más compresión.
[0005] En el documento de Flynn et al: "BoG report on Range Extensions topics", 15a reunión de JCTVC; Ginebra; Documento n.° JCTVC-00352-v5, 1 de noviembre de 2013, se establece un informe sobre un grupo separado para revisar los documentos de entrada de JCTVC relacionados con las Ampliaciones de Gama. El informe se refiere al documento n.° JCTVC-O0182 de Guo et al titulado "AHG8: Major-colour-based screen content coding", y lo resume con el comentario "Histograma de colores en un bloque para generar una paleta de cuatro colores principales (otros colores pueden codificarse usando un procedimiento de escape)" y señala un comentario adicional "Con respecto al análisis sobre la cuantificación, un codificador es libre de no realizar la cuantificación del bloque origen relativa a colores principales. Además, cualquier valor de muestra que no esté en la paleta se puede codificar con escape después de cuantificarse con el QP actual".
[0006] En el documento de Lee et al "cu qp delta enabling syntax", 10a reunión de JCT-VC, 101a reunión de MPEG, Estocolmo, documento n.° JCTVC-J0220, 2 de julio de 2012, se propone una bandera para los conjuntos de parámetros de imagen HEVC con el nombre 'cu_qp_delta_enabled_flag', que se usa para especificar si un elemento sintáctico delta de cu qp está codificado en una unidad de transformada o no.
SUMARIO
[0007] En general, esta divulgación describe técnicas de codificación de vídeo basada en paleta. En la codificación basada en paleta, un codificador de vídeo (por ejemplo, un codificador de vídeo o un descodificador de vídeo) puede formar una denominada "paleta" como una tabla de colores para representar datos de vídeo de un área particular (por ejemplo, un bloqueo dado). La codificación basada en paletas 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 valores residuales para el bloque dado, el codificador de vídeo puede codificar valores de índice para uno o más de los píxeles. Los valores de índice correlacionan los píxeles con entradas de la paleta que representan los colores de los píxeles. En esta divulgación se describen técnicas para determinar la aplicación del filtrado de reducción del efecto bloque para píxeles de bloques codificados por paleta en un codificador de vídeo o un descodificador de vídeo. Además, se describen técnicas para determinar valores de parámetros de cuantificación (QP) y valores QP delta usados para cuantificar valores de píxeles de escape de bloques codificados por paleta en el codificador de vídeo o el descodificador de vídeo.
[0008] La invención se define mediante las reivindicaciones independientes.
[0009] En un ejemplo, esta divulgación se refiere a un procedimiento de procesamiento de datos de vídeo, comprendiendo el procedimiento determinar que un primer bloque de datos de vídeo es un bloque codificado por paleta; determinar una paleta para el primer bloque; determinar valores de color para píxeles dentro del primer bloque con respecto a la paleta; reconstruir el primer bloque de datos de vídeo en base a la paleta y los valores de color para el primer bloque; en base a que el primer bloque es un bloque codificado por paleta, inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles dentro del primer bloque reconstruido en un límite de bloque formado entre el primer bloque reconstruido y un segundo bloque reconstruido de datos de vídeo; y determinar si se aplica el filtrado de reducción del efecto bloque para segundos píxeles dentro del segundo bloque reconstruido en el límite de bloque formado entre el primer bloque reconstruido y el segundo bloque reconstruido.
[0010] En otro ejemplo, esta divulgación se refiere a un dispositivo de procesamiento de vídeo que comprende una memoria configurada para almacenar datos de vídeo, y uno o más procesadores en comunicación con la memoria. El uno o más procesadores están configurados para determinar que un primer bloque de datos de vídeo es un bloque codificado por paleta; determinar una paleta para el primer bloque; determinar valores de color para píxeles dentro del primer bloque con respecto a la paleta; reconstruir el primer bloque de datos de vídeo en base a la paleta y los valores de color para el primer bloque; en base a que el primer bloque es un bloque codificado por paleta, inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles dentro del primer bloque reconstruido en un límite de bloque formado entre el primer bloque reconstruido y un segundo bloque reconstruido de datos de vídeo; y determinar si se aplica el filtrado de reducción del efecto bloque para segundos píxeles dentro del segundo bloque reconstruido en el límite de bloque formado entre el primer bloque reconstruido y el segundo bloque reconstruido.
[0011] En un ejemplo, esta divulgación se refiere a un dispositivo de procesamiento de vídeo, que comprende medios para determinar que un primer bloque de datos de vídeo es un bloque codificado por paleta; medios para determinar una paleta para el primer bloque; medios para determinar valores de color para uno o más píxeles dentro del primer bloque con respecto a la paleta; medios para reconstruir el primer bloque de datos de vídeo en base a la paleta y los valores de color para el primer bloque; medios para, en base a que el primer bloque es un bloque codificado por paleta, inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles dentro del primer bloque reconstruido en un límite de bloque formado entre el primer bloque reconstruido y un segundo bloque reconstruido de datos de vídeo; y medios para determinar si se aplica el filtrado de reducción del efecto bloque para segundos píxeles dentro del segundo bloque reconstruido en el límite de bloque formado entre el primer bloque reconstruido y el segundo bloque reconstruido.
[0012] En un ejemplo, esta divulgación se refiere a un medio legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo para procesar datos de vídeo que, cuando se ejecutan, hacen que uno o más procesadores determinen que un primer bloque de datos de vídeo es un bloque codificado por paleta; determinen una paleta para el primer bloque; determinen valores de color para uno o más píxeles dentro del primer bloque con respecto a la paleta; reconstruyan el primer bloque de datos de vídeo en base a la paleta y los valores de color para el primer bloque; en base a que el primer bloque es un bloque codificado por paleta, inhabiliten el filtrado de reducción del efecto bloque para los primeros píxeles dentro del primer bloque reconstruido en un límite de bloque formado entre el primer bloque reconstruido y un segundo bloque reconstruido de datos de vídeo; y determinen si se aplica el filtrado de reducción del efecto bloque para segundos píxeles dentro del segundo bloque reconstruido en el límite de bloque formado entre el primer bloque reconstruido y el segundo bloque reconstruido.
[0013] En un ejemplo, esta divulgación se refiere a un procedimiento de procesamiento de datos de vídeo, comprendiendo el procedimiento determinar una paleta para un bloque codificado por paleta que incluye cero o más entradas de paleta que indican uno o más valores de color respectivos; determinar si al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape que tiene un valor de color que no está incluido en la paleta; en base a que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinar un valor de parámetro de cuantificación de paleta (QP) para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho; y en base a que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinar el valor de color para el píxel de escape que no está incluido en la paleta y cuantificar el valor de color para el píxel de escape de acuerdo con valor QP de paleta.
[0014] En otro ejemplo, esta divulgación se refiere a un dispositivo de procesamiento de vídeo que comprende una memoria configurada para almacenar datos de vídeo, y uno o más procesadores en comunicación con la memoria. El uno o más procesadores están configurados para determinar una paleta para un bloque codificado por paleta que incluye cero o más entradas de paleta que indican uno o más valores de color respectivos; determinar si al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape que tiene un valor de color que no está incluido en la paleta; en base a que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinar un valor de parámetro de cuantificación de paleta (QP) para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho; y en base a que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinar el valor de color para el píxel de escape que no está incluido en la paleta y cuantificar el valor de color para el píxel de escape de acuerdo con valor QP de paleta.
[0015] En otro ejemplo, esta divulgación se refiere a un dispositivo de procesamiento de vídeo que comprende medios para determinar una paleta para un bloque codificado por paleta que incluye cero o más entradas de paleta que indican uno o más valores de color respectivos; medios para determinar si al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape que tiene un valor de color que no está incluido en la paleta; medios para, en base a que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinar un valor de parámetro de cuantificación de paleta (QP) para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho; y medios para, en base a que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinar el valor de color para el píxel de escape que no está incluido en la paleta y cuantificar el valor de color para el píxel de escape de acuerdo con valor QP de paleta.
[0016] En otro ejemplo, esta divulgación se refiere a un medio legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo para procesar datos de vídeo que, cuando se ejecutan, hacen que uno o más procesadores determinen una paleta para un bloque codificado por paleta que incluye cero o más entradas de paleta que indican uno o más valores de color respectivos; determinen si al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape que tiene un valor de color que no está incluido en la paleta; en base a que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinen un valor de parámetro de cuantificación de paleta (QP) para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho; y en base a que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinen el valor de color para el píxel de escape que no está incluido en la paleta y cuantificar el valor de color para el píxel de escape de acuerdo con valor QP de paleta.
[0017] 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
[0018]
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 descritas en esta 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 descritas en esta 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 descritas en esta divulgación.
La FIG. 4 es un diagrama conceptual que ilustra un ejemplo de un límite de bloque vertical de cuatro píxeles de largo formado entre dos bloques adyacentes.
La FIG. 5 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo que determina si se aplica filtrado de reducción del efecto bloque a píxeles a lo largo de un límite de bloque formado por al menos un bloque codificado por paleta.
La FIG. 6 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo que determina un valor de parámetro de cuantificación (QP) de paleta usado para cuantificar valores de píxeles de escape de un bloque codificado por paleta.
DESCRIPCIÓN DETALLADA
[0019] Esta divulgación describe técnicas de codificación y compresión de vídeo. En particular, esta divulgación describe técnicas para admitir la codificación de contenido de vídeo, especialmente contenido de pantalla con codificación basada en paleta. Esta divulgación describe múltiples aspectos técnicos de la codificación basada en paleta. En algunos ejemplos, esta divulgación describe técnicas para determinar el diseño y la aplicación del filtrado en bucle (por ejemplo, filtrado de reducción del efecto bloque y/o filtrado de desplazamiento adaptativo de muestra (SAO)) para píxeles de bloques codificados por paleta. Más específicamente, se describen técnicas para determinar la aplicación del filtrado de reducción del efecto bloque para píxeles a lo largo de un límite de bloque formado por al menos un bloque codificado por paleta en un codificador de vídeo o un descodificador de vídeo. En otros ejemplos, esta divulgación describe técnicas para determinar valores de parámetros de cuantificación (QP) y valores Qp delta usados para cuantificar valores de píxeles de escape de bloques codificados por paleta en el codificador de vídeo o el descodificador de vídeo.
[0020] En la codificación de vídeo tradicional, se supone que las imágenes son de tono continuo y espacialmente homogéneas. Basándose en estas suposiciones, se han desarrollado diversas herramientas, tales como la transformada basada en bloques, el filtrado, etc., y dichas herramientas han demostrado un buen rendimiento para vídeos de contenido natural. Sin embargo, en aplicaciones como escritorio remoto, trabajo colaborativo y pantalla inalámbrica, el contenido de pantalla generado por ordenador (por ejemplo, tales como texto o gráficos de ordenador) puede ser el contenido dominante que se vaya a comprimir. Este tipo de contenido tiende a tener tonos discretos, y presenta líneas nítidas y límites de objetos de alto contraste. Es posible que la suposición de tono continuo y homogeneidad ya no se aplique al contenido de pantalla, y por tanto que las técnicas tradicionales de codificación de vídeo puedan no ser maneras eficientes de comprimir contenido de pantalla que incluye datos de vídeo.
[0021] Esta divulgación describe la codificación basada en paleta, que puede ser particularmente adecuada para la codificación de contenido generado en pantalla. Por ejemplo, suponiendo que un área particular de datos de vídeo tiene un número de colores relativamente pequeño, un codificador de vídeo (por ejemplo, un codificador de vídeo o descodificador de vídeo) puede formar una denominada "paleta" para representar los datos de vídeo del área particular. La paleta puede expresarse como una tabla de colores que representan los datos de vídeo del área particular (por ejemplo, un bloque dado). Por ejemplo, la paleta puede incluir los colores más dominantes (es decir, los valores de píxel) en el bloque dado. En algunos casos, los colores más dominantes pueden incluir el uno o más colores que se producen con mayor frecuencia dentro del bloque. Además, en algunos casos, un codificador de vídeo puede aplicar un valor umbral para determinar si un color se incluirá como uno de los colores más dominantes en el bloque. Una paleta puede codificarse explícitamente y enviarse a un descodificador de vídeo, predecirse a partir de entradas de paleta anteriores, o una combinación de ambos casos. De acuerdo con diversos aspectos de la codificación basada en paleta, el codificador de vídeo puede codificar valores de índice indicativos de uno o más de los píxeles del bloque actual, en lugar de codificar los valores de píxeles reales o sus valores residuales para el bloque actual. En el contexto de la codificación basada en paleta, los valores de índice indican entradas respectivas en la paleta que se usan para representar los colores de los píxeles individuales del bloque actual.
[0022] Por ejemplo, el 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 los colores de uno o más de los píxeles del bloque y codificando el bloque con valores de índice que indiquen las entradas de la paleta. En cuanto a los píxeles del bloque con valores de color que se correlacionan con entradas de la paleta, el codificador de vídeo puede codificar los valores de índice de las entradas para los píxeles respectivos. En cuanto a los píxeles del bloque con valores de color que no se correlacionan con entradas de la paleta, el codificador de vídeo puede codificar un índice especial para el píxel y codificar el valor de píxel real o su valor residual (o una versión cuantificada del mismo). Estos píxeles se conocen como "píxeles de escape". En algunos ejemplos, una paleta puede incluir cero entradas que no representan valores de color. En este ejemplo, todos los píxeles del bloque tienen valores de color que no se correlacionan con las entradas de la paleta y, por lo tanto, se codifican como píxeles de escape.
[0023] En algunos ejemplos, el codificador de vídeo puede señalizar la paleta, los valores de índice y cualquier píxel de escape en un flujo de bits codificado. A su vez, el descodificador de vídeo puede obtener, a partir del flujo de bits codificado, la paleta para el bloque, así como cualquier valor de índice para los píxeles del bloque, y valores de píxel para cualquier píxel de escape del bloque. El descodificador de vídeo puede correlacionar los valores de índice con entradas de la paleta y descodificar los píxeles de escape para reconstruir los valores de píxel del bloque. El ejemplo anterior pretende proporcionar una descripción general de la codificación basada en paleta.
[0024] Las técnicas para la codificación basada en paleta de datos de vídeo se pueden usar con una o más técnicas de codificación diferentes, tales como técnicas de codificación interpredictiva o intrapredictiva. Por ejemplo, como se describe con más detalle a continuación, un codificador de vídeo o descodificador de vídeo, o un codificadordescodificador (códec) combinado, puede estar configurado para realizar una codificación interpredictiva e intrapredictiva, así como una codificación basada en paleta.
[0025] En algunos ejemplos, las técnicas de codificación basada en paleta pueden estar configuradas para su uso con una o más normas de codificación de vídeo. Por ejemplo, la Codificación de Vídeo de Alta Eficacia (HEVC) es una norma de codificación de vídeo desarrollada por el Equipo de Colaboración Conjunta 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. La norma HEVC finalizada, denominada más adelante en el presente documento "HEVC Versión 1", se publica como "ITU-T H.265, SERIE H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video - High efficiency video coding", Sector de Normalización de las Telecomunicaciones de la Unión Internacional de Telecomunicaciones (ITU), abril de 2013, y está disponible en http://www.itu.int/rec/T-REC-H.265-201304-I.
[0026] La Ampliación de Gama de HEVC, en concreto HEVC-Rext, también está siendo desarrollada por el JCT-VC. Un borrador de trabajo (WD) reciente de Ampliaciones de Gama, denominado más adelante en el presente documento "RExt WD7", está disponible en http://phenix.int-evry.fr/jct/doc end user/documents/17 Valencia/wg11/JCTVC-Q1005-v4.zip. El JCT-VC también está desarrollando la codificación de contenido de pantalla (SCC) de HEVC, que está basada en HEVC-Rext. Un WD reciente de la ampliación de SCC de HEVC, denominado más adelante en el presente documento SCC WD1.0, está disponible en http://phenix.intevrv.fr/ict/doc end user/documents/18 Sapporo/wg11/JCTVC-R1005-v3.zip. Un WD más reciente de la ampliación de SCC de HEVC, denominado más adelante en el presente documento SCC WD2.0, está disponible en http://phenix.int-evrv.fr/ict/doc end user/documents/19 Strasbourg/wg11/JCTVC-S1005-v1.zip.
[0027] Con respecto al marco de trabajo de HEVC, como ejemplo, las técnicas de codificación basada en paleta pueden estar configuradas para su uso como un modo de unidad de codificación (CU). En otros eiemplos, las técnicas de codificación basada en paleta pueden estar configuradas para su uso como un modo PU en el marco de trabajo de HEVC. En consecuencia, todos los procesos siguientes divulgados, descritos en el contexto de un modo CU, se pueden aplicar, de forma adicional o alternativa, a una 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 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 de codificación por paleta puede ser bloques cuadrados, bloques rectangulares o incluso regiones de forma no rectangular.
[0028] La idea básica de la codificación basada en paleta es que, para cada CU, se obtiene una paleta que incluye los colores más dominantes (es decir, valores de píxel) en la CU actual, o en algunos casos no hay colores. El tamaño de paleta y los elementos de paleta de la paleta pueden transmitirse desde un codificador de vídeo a un descodificador de vídeo. El tamaño de paleta y las entradas de la paleta se pueden codificar directamente o de forma predictiva usando el tamaño y las entradas, respectivamente, de las paletas para una o más CU vecinas (por ejemplo, CU codificadas dispuestas arriba y/o a la izquierda). Los píxeles de la CU pueden codificarse entonces en base a la paleta de acuerdo con un determinado orden de exploración.
[0029] Para cada ubicación de píxel en la CU, se puede transmitir una bandera para indicar si el color del píxel está incluido en la paleta. En cuanto a los píxeles que están correlacionados con una entrada en la paleta, el índice de paleta asociado a esa entrada puede señalizarse para la ubicación de píxel dada en la CU. En algunos casos, la codificación en modo de serie se puede usar de modo que el índice de paleta asociado a la ubicación de píxel en la CU se señaliza seguido de una "serie" (run) del valor de píxel. En este caso, ni la bandera ni el índice de paleta deben transmitirse para las ubicaciones de píxel subsiguientes que están cubiertas por la "serie", ya que todas tienen el mismo valor de píxel. En cuanto a píxeles con valores de color que no están correlacionados con entradas de la paleta (es decir, píxeles de escape), se puede asignar un índice especial al píxel y el valor de píxel real o su valor residual (o una versión cuantificada del mismo) puede transmitirse para la ubicación de píxel dada en la CU. Los valores de píxel de escape pueden cuantificarse de acuerdo con un valor de parámetro de cuantificación (QP) de nivel de fragmento o un valor QP de coeficiente. Los píxeles de escape pueden codificarse usando cualquier procedimiento de codificación por entropía existente, tal como la codificación de longitud fija, la codificación unaria, etc.
[0030] Múltiples aspectos técnicos diferentes de la codificación basada en paleta se describen con más detalle a continuación, incluida la indicación de un modo de codificación basado en paleta, la determinación de una paleta para un bloque dado, la transmisión de valores de índice de paleta usados para indicar valores de píxel del bloque dado y la codificación con pérdidas de la paleta y los valores de índice de la paleta.
[0031] Por ejemplo, un elemento sintáctico, tal como una bandera "PLT_Mode_flag" o "palette_mode_flag", puede transmitirse para indicar si se debe usar un modo de codificación basado en paleta para una CU actual (o una PU en otros ejemplos). En un ejemplo, un valor del elemento sintáctico palette_mode_flag puede especificar que la CU actual se codifica usando el modo de codificación basado en paleta o que la CU actual se codifica usando un modo distinto del modo de codificación basado en paleta. Por ejemplo, se puede usar cualquiera de una variedad de modos de codificación interpredictiva, intrapredictiva u otros. El uso de palette_mode_flag se describe con fines de ejemplo. En otros ejemplos, se pueden usar otros elementos sintácticos, tales como códigos de múltiples bits, para indicar si el modo de codificación basado en paleta, interpredictivo, intrapredictivo, u otro, se usará para una CU (o PU en otros ejemplos).
[0032] En algunos ejemplos, el elemento sintáctico que indica el modo de codificación basado en paleta puede señalizarse a nivel de CU en un flujo de bits codificado y, a continuación, recibirse por un descodificador de vídeo al descodificar el flujo de bits codificado. En otros ejemplos, el elemento sintáctico puede transmitirse a un nivel más alto que el nivel de CU. Por ejemplo, una bandera que indica el modo de codificación basado en paleta puede transmitirse a nivel de fragmento para indicar si todas las Cu en el fragmento deben codificarse usando el modo de codificación basado en paleta. En otros ejemplos, una bandera que indica el modo de codificación basado en paleta puede señalizarse a nivel de conjunto de parámetros de imagen (PPS), de conjunto de parámetros de secuencia (SPS) o de conjunto de parámetros de vídeo (VPS).
[0033] En ejemplos adicionales, un elemento sintáctico puede transmitirse en uno de los niveles superiores, por ejemplo, nivel SPS, VPS, PPS o de fragmento, especificando si el modo de codificación basado en paleta está habilitado para una secuencia de vídeo, imagen o fragmento en particular, mientras que palette_mode_flag indica si el modo de codificación basado en paleta se usa para cada CU. En un ejemplo, si una bandera u otro elemento sintáctico enviado a nivel SPS, VPS, PPS o de fragmento indica que el modo de codificación basado en paleta está inhabilitado, puede que no sea necesario señalizar adicionalmente palette_mode_flag para cada CU. De nuevo, como se ha mencionado anteriormente, la aplicación de estas técnicas para indicar el modo de codificación basada en paleta de una CU actual podría usarse, de forma adicional o alternativa, para indicar el modo de codificación basada en paleta para una PU.
[0034] De forma adicional o alternativa, un elemento sintáctico o bandera que indica el modo de codificación basado en paleta puede transmitirse o inferirse condicionalmente en base a información secundaria. La información secundaria usada como condiciones para transmitir o inferir el elemento sintáctico puede ser, por ejemplo, uno o más del tamaño de una CU actual, un tipo de trama, un espacio de colores, un componente de color, un tamaño de trama, una velocidad de trama, una ID de capa en codificación de vídeo escalable o un ID de vista en codificación de múltiples vistas.
[0035] La paleta usada por un codificador de vídeo para la codificación basada en paleta puede ser transmitida por el codificador de vídeo en un flujo de bits codificado para su uso por un descodificador de vídeo para la descodificación basada en paleta. Se puede transmitir una paleta para cada CU, o posiblemente compartirla entre diferentes CU. En un ejemplo, una paleta se puede transmitir por separado para cada componente de color de una CU actual. Por ejemplo, puede haber una paleta para un componente de luminancia (Y) de la CU actual, otra paleta para un primer componente de crominancia (U) de la CU actual y otra paleta más para un segundo componente de crominancia (V) de la CU actual. En la paleta para el componente Y, cada entrada de la paleta puede ser un valor de luminancia representativo en la CU actual. En cada una de las paletas respectivas para los componentes U y V, cada entrada de la paleta puede ser un valor de crominancia representativo en la CU actual. En otro ejemplo, se puede transmitir una sola paleta para todos los componentes de color de la CU actual. En este ejemplo, la entrada i-ésima de la paleta puede representarse como una terna (Yi, Ui, Vi) que indica un valor para cada uno de los componentes de color. En otro ejemplo más, una paleta de luminancia se puede transmitir para el componente Y de la CU actual, mientras que una paleta de crominancia se puede transmitir para los componentes U y V de la CU actual.
[0036] El tamaño de la paleta, por ejemplo, en términos del número de valores de píxeles incluidos, puede ser un valor fijo o puede ser señalado por el codificador de vídeo 20 en un flujo de bits de vídeo codificado. En el caso de que se definan paletas separadas para diferentes componentes de color de la CU actual, el tamaño de la paleta se puede señalizar por separado para cada uno de los diferentes componentes de color o se puede señalizar un único tamaño para todos los componentes de color. Un elemento sintáctico definido para indicar el tamaño de la paleta puede codificarse usando códigos unarios, códigos unarios truncados (por ejemplo, que se truncan en un límite máximo del tamaño de la paleta), códigos Golomb exponenciales o Rice-Golomb. En algunos ejemplos, el tamaño de la paleta puede indicarse señalizando una bandera de "detención" después de señalizar una entrada de la paleta. El tamaño de la paleta puede transmitirse o inferirse condicionalmente en base a información secundaria.
[0037] En algunos ejemplos, para cada CU se puede transmitir una bandera para indicar si una paleta para la CU actual se predice o se transmite explícitamente. La bandera se puede transmitir por separado para cada uno de los diferentes componentes de color (por ejemplo, se pueden transmitir tres banderas para cada uno de los componentes de color YUV), o se puede transmitir una sola bandera para todos los componentes de color. En algunos ejemplos, una paleta de una CU actual se puede predecir copiando algunas o todas las entradas de las paletas de predicción de una o más CU vecinas previamente codificadas. Por ejemplo, la paleta de predicción puede ser la paleta de la CU vecina izquierda o de la CU vecina superior. La paleta de predicción también puede ser una combinación de paletas de dos o más CU vecinas. Por ejemplo, se pueden aplicar una o más fórmulas, funciones, reglas o similares para generar la paleta de predicción en base a paletas de dos o más de una pluralidad de CU vecinas. También es posible que se pueda construir una lista de candidatos y que se puedan transmitir uno o más índices para indicar una o más Cu candidatas a partir de las cuales se copiará, al menos parcialmente, la paleta de la CU actual.
[0038] En algunos ejemplos, la paleta de la CU actual puede predecirse a nivel de entrada. En un ejemplo, para cada entrada en la paleta de la CU actual, se transmite una bandera para indicar si la entrada respectiva se va a copiar de una entrada correspondiente en una paleta de predicción, por ejemplo, de una CU vecina seleccionada o una combinación de una o más CU vecinas, o debe transmitirse explícitamente desde el codificador de vídeo al descodificador de vídeo. En otro ejemplo, para cada entrada de una paleta de predicción de una CU vecina seleccionada o una combinación de una o más CU vecinas, se transmite una bandera para indicar si la entrada respectiva va a copiarse a la paleta de la CU actual. La CU vecina cuya paleta se usa como la paleta de predicción o las reglas para construir la paleta de predicción a partir de una combinación de dos o más CU vecinas puede transmitirse o inferirse condicionalmente en base a la información secundaria.
[0039] Una alternativa a ese enfoque para transmitir o predecir explícitamente la paleta es construir la paleta sobre la marcha. En este caso, al comienzo de la CU, no hay ninguna entrada en la paleta, y como el codificador señaliza nuevos valores de los píxeles para las posiciones en la CU, estos valores se incluyen en la paleta. Es decir, el codificador añade valores de color a la paleta a medida que se generan y transmiten para posiciones en la CU. A continuación, las posiciones posteriores en la CU que tienen los mismos valores pueden referirse a valores de color de la paleta, por ejemplo, con valores de índice, en lugar de que el codificador transmita explícitamente los valores de color. De forma similar, cuando el descodificador recibe un nuevo valor de color (por ejemplo, señalizado por el codificador) para una posición en la CU, incluye el valor de color en la paleta construida por el descodificador. Cuando posiciones posteriores en la CU tienen valores de color que se han añadido a la paleta, el descodificador puede recibir información tal como, por ejemplo, valores de índice, que identifican los correspondientes valores de color en la paleta para la reconstrucción de los píxeles en la CU.
[0040] Una vez que se ha determinado la paleta para una CU actual, la CU se puede codificar (es decir, codificar o descodificar) seleccionando y transmitiendo valores de índice que se correlacionan con valores de color de la paleta para uno o más píxeles dentro de la CU. Por ejemplo, la i-ésima entrada en un mapa de valor de índice corresponde a la i-ésima posición en la CU. Un valor de la entrada i-ésima en el mapa de valores de índice igual a 1 puede especificar que el valor de color del píxel en esta ubicación i-ésima en la CU es uno de los valores de color en la paleta, y un índice de paleta correspondiente al valor de color dentro de la paleta se transmite además de modo que un descodificador de vídeo pueda reconstruir la CU. En caso de que solo haya una entrada en la paleta, la transmisión del índice de paleta puede omitirse. Un valor de la entrada i-ésima en el mapa de valores de índice igual a 0 puede especificar que el valor de color del píxel en la posición i-ésima en la CU no se incluye en la paleta (es decir, el píxel es un píxel de escape), y el valor de color del píxel de escape se transmite explícitamente al descodificador de vídeo.
[0041] Si el valor de color en una posición en la CU es un valor de color en la paleta, se observa que hay una alta probabilidad de que las posiciones vecinas en la CU tengan el mismo valor de color. Para aprovechar esta probabilidad, después de codificar un índice de paleta (por ejemplo, índice j correspondiente al valor de color s) para una posición en la CU, se puede transmitir un elemento sintáctico "ejecutar" para indicar el número de píxeles consecutivos que tienen el mismo color valores s que se incluyen en la CU antes de que la exploración alcance un valor de color diferente. Por ejemplo, si la siguiente posición inmediata en la CU tiene un valor diferente de s, entonces se transmite serie=0 (run=0). Si la siguiente posición en la CU tiene el valor s pero la siguiente posición no tiene el valor s, entonces se transmite serie=1 (run=1).
[0042] En algunos casos, cuando una serie no se transmite explícitamente, esto puede implicar que un valor de la serie es un número constante de posiciones, por ejemplo, 4, 8, 16, etc., o el valor implícito de la serie también puede depender de información secundaria. En algunos casos adicionales, en los que un mapa de valores de índice no se transmite explícitamente, se puede obtener implícitamente una posición inicial para la serie. Por ejemplo, la serie solo puede comenzar en determinadas ubicaciones, por ejemplo, el comienzo de cada fila, al comienzo de cada N filas, dependiendo de la dirección de exploración o dependiendo de información secundaria. También es posible que la obtención de la posición de inicio implícita y la obtención de serie implícita se combinen. Por ejemplo, el valor de la serie puede implicar que es igual a la distancia entre dos posiciones de inicio vecinas.
[0043] En algunos ejemplos, el mapa de valores de índice puede transmitirse copiando la línea de señalización. En caso de que una línea de píxeles actual en la CU tenga los mismos valores de color que una línea de píxeles anterior arriba o a la izquierda dentro de la CU, un codificador de vídeo puede indicar que los valores de índice para la línea de píxeles actual deben ser copiados de los valores de índice para la línea de píxeles anterior arriba o a la izquierda dentro del mapa de valores de índice. Como ejemplo, se pueden almacenar cuatro líneas anteriores dentro del mapa de valores de índice, y a continuación se puede señalizar qué línea anterior se copiará a la línea actual y cuántas entradas de esa línea anterior se copiarán.
[0044] Un codificador de vídeo puede realizar una codificación basada en paleta ya sea sin pérdidas o con algunas pérdidas cuando la coincidencia entre las entradas en la paleta y los valores de color reales de los píxeles de la CU no sea exacta. Un descodificador de vídeo puede aplicar, en general, el mismo proceso independientemente de que el codificador de vídeo realice una codificación basada en paleta sin pérdidas o con pérdidas. En el caso de la codificación basada en paleta con pérdidas, se puede usar una paleta cuantificada de modo que dos o más entradas con valores de color parecidos se puedan fusionar (es decir, cuantificar) en un solo valor en la paleta. En un ejemplo, se puede añadir un nuevo valor de color a la paleta en función de si una diferencia absoluta entre el nuevo valor de color y cada uno de los valores de color existentes ya incluidos en la paleta es mayor que un umbral. Si la diferencia absoluta es menor que o igual al umbral, es posible que el nuevo valor de color no se añada a la paleta y, en cambio, se elimine o fusione con un valor de color existente incluido en la paleta.
[0045] De manera similar, en otro ejemplo, un valor de color de un píxel dentro de una CU actual a codificar puede compararse con los valores de color de cada una de las entradas de la paleta. Si la diferencia absoluta entre el valor de color del píxel y una de las entradas de la paleta es menor que o igual a un umbral, el valor de píxel puede codificarse como el valor de índice correspondiente a la una de las entradas de la paleta. En algunos ejemplos, la entrada de paleta que produce la diferencia absoluta más pequeña del valor de color del píxel se puede seleccionar para codificar el píxel. Si la diferencia absoluta entre el valor de color del píxel y todas las entradas de la paleta es mayor que el umbral, el píxel puede codificarse como un píxel de escape que tiene un valor de color que no está incluido en la paleta y, en su lugar, se transmite explícitamente.
[0046] En la versión 1 de HEVC, después de la reconstrucción de la imagen, un proceso de filtro de reducción del efecto bloque en un codificador de vídeo o un descodificador de vídeo intenta detectar artefactos en los límites formados entre bloques codificados y atenuar los artefactos aplicando un filtro de reducción del efecto bloque seleccionado a los píxeles a lo largo del límite. El codificador de vídeo o descodificador de vídeo puede tomar decisiones de filtrado de reducción del efecto bloque por separado para cada límite de bloque que tenga una longitud de cuatro píxeles que se encuentre en una cuadrícula que divida una imagen en bloques de 8x8 píxeles o muestras.
[0047] La FIG. 4 es un diagrama conceptual que ilustra un ejemplo de un límite de bloque vertical de cuatro píxeles de largo 174 formado entre dos bloques adyacentes 170, 172. Con propósitos explicativos, un primer bloque 170 puede denominarse bloque P y un segundo bloque 172 puede denominarse bloque Q. Como se ilustra en la FIG. 4, el primer bloque 170 (P) incluye 4x4 píxeles, cada uno etiquetado como j donde j indica los números de columna 0, 3 comenzando a partir del límite del bloque 174, e i indica los números de fila 0, 3 comenzando a partir de la parte superior del primero bloque 170. Como se ilustra adicionalmente en la FIG. 4, el segundo bloque 172 (Q) incluye 4x4 píxeles, cada uno etiquetado como qj,i, donde j indica los números de columna 0-3 comenzando a partir del límite de bloque 174, e i indica los números de fila 0-3 comenzando a partir de la parte superior del segundo bloque 172.
[0048] Como ejemplo, en caso de que el primer bloque 170 y el segundo bloque 172 sean bloques de luminancia, el codificador de vídeo o descodificador de vídeo puede aplicar filtrado de reducción del efecto bloque a los píxeles de luminancia en cada uno del primer bloque 170 y el segundo bloque 172 a lo largo del límite de bloque 174 si se cumplen los tres criterios siguientes: (1) el límite de bloque 174 es un límite de unidad de predicción (PU) o de unidad de transformada (TU), (2) un valor de intensidad de límite para el límite de bloque 174 es mayor que cero, y (3) la variación de píxeles o muestras en ambos lados del límite de bloque 174 está por debajo de un umbral especificado. En caso de que determinadas condiciones adicionales, descritas a continuación, también sean ciertas, se puede aplicar un filtro fuerte a los píxeles en cada uno del primer bloque 170 y el segundo bloque 172 a lo largo del límite de bloque 174 en lugar de un filtro de reducción del efecto bloque normal o débil.
[0049] El valor de intensidad de límite, Bs, para el límite de bloque 174 puede determinarse de acuerdo con las condiciones incluidas en la siguiente TABLA 1.
TABLA 1: Definición de valores de intensidad de límite para límite de bloque formado entre dos bloques de luminancia vecinos
Figure imgf000009_0002
[0050] En caso de que el límite de bloque 174 sea un límite de PU o TU y el valor de intensidad de límite, Bs, sea positivo (es decir, mayor que 0), los criterios de variación de píxel usados adicionalmente por el codificador de vídeo o descodificador de vídeo para determinar si el filtrado de reducción del efecto bloque está habilitado para el límite de bloque 174 son los siguientes, con los valores de píxel indicados como se ilustra en la FIG. 4.
IP2.0 - -Pu> Po,o\ + \P2.3 - - P u Poj\ + |qi.o - 2q¡.o + qo.o|
\<te.¡ - ~qu + <?oj| < (0
[0051] En base a que el filtrado de reducción del efecto bloque esté habilitado para el límite de bloque 174, los criterios adicionales usados por el codificador de vídeo o descodificador de vídeo para determinar un tipo de filtrado de reducción del efecto bloque, es decir, normal o fuerte, son los siguientes, con los valores de píxel indicados como se ilustra en la FIG. 4 y con i=0, 3.
Figure imgf000009_0001
IP u - pnj\ + |qu - qo,i\ < ¡8/8 (3)
\pm - qo.¡\ < 2 ,5tc (4)
[0052] En caso de que se seleccione un filtro fuerte de reducción del efecto bloque, el filtro de reducción del efecto bloque se puede aplicar a tres píxeles de luminancia en cada lado del límite de bloque 174, por ejemplo p2 ,i, pu, p0 ,i, q0 ,i, q1 ,i, q2 ,i. En caso de que se seleccione un filtro normal o débil, el filtro de reducción del efecto bloque se puede aplicar a uno o dos píxeles de luminancia en cada lado del límite de bloque 174, por ejemplo, p0 ,i y q0 ,i; o pu, p0 ,i, q0 ,i, q1,i.
[0053] Además, en caso de que el primer bloque 170 y el segundo bloque 172 sean bloques de crominancia, el codificador de vídeo o descodificador de vídeo puede aplicar filtrado de reducción del efecto bloque a los píxeles de crominancia en cada uno del primer bloque 170 y segundo bloque 172 a lo largo del límite de bloque 174 en base a un valor de intensidad de límite para que el límite de bloque 174 sea igual a 2. En base al filtrado de reducción del efecto bloque habilitado para el límite de bloque 174, el filtro de reducción del efecto bloque puede aplicarse a un píxel de crominancia en cada lado del límite de bloque 174, por ejemplo, p0 ,i y q0 ,i.
[0054] Las decisiones de filtro de reducción del efecto bloque para los límites de bloque horizontal se pueden determinar de forma similar a los límites de bloque vertical descritos anteriormente con respecto a la FIG. 4. El filtrado de reducción del efecto bloque en HEVC se describe con más detalle en la versión 1 de HEVC y en el documento de A. Norkin, G. Bj^ntegaard, A. Fuldseth, M. Narroschke, M. Ikeda, K. Andersson, M. Zhou y G. V. der Auwera, "HEVC deblocking filter"IEEE Trans. Cirt. & Sys. Video Technol., vol. 22, n.° 12, diciembre de 2012.
[0055] En la versión 1 de HEVC, después de la reconstrucción de la imagen, un codificador de vídeo o un descodificador de vídeo puede aplicar dos clases diferentes de filtrado SAO, a saber, desplazamiento de banda (BO) y desplazamiento de borde (EO). En un ejemplo, el filtrado de desplazamiento de banda se puede usar para compensar errores de cuantificación sistemática. En este ejemplo, el codificador de vídeo o descodificador de vídeo puede clasificar los valores de píxel por su intensidad, y señalizar una posición de banda inicial y cuatro valores de desplazamiento en un flujo de bits para corregir los valores de píxel en las cuatro bandas consecutivas, incluida la banda inicial.
[0056] En otro ejemplo, el filtrado de desplazamiento de borde se puede usar para compensar los artefactos de sobreoscilación debido a la cuantificación. En este ejemplo, el codificador de vídeo o descodificador de vídeo puede seleccionar una clase de desplazamiento de borde de entre cuatro candidatos (por ejemplo, horizontal, vertical, diagonal de 45 grados y diagonal de 135 grados) en base a una dirección de artefacto de sobreoscilación principal en una unidad de árbol de codificación (CTU) actual. Después de determinar la clase de desplazamiento de borde, el codificador de vídeo o descodificador de vídeo puede clasificar los píxeles de la CTU en cinco categorías basándose en las intensidades relativas entre píxeles vecinos a lo largo de la dirección de la clase de desplazamiento de borde seleccionada. Cuatro de las cinco categorías pueden estar asociadas a la aplicación de un desplazamiento para reducir los artefactos de sobreoscilación, y la quinta categoría puede estar asociada con no aplicar un desplazamiento o inhabilitar el filtrado de desplazamiento de borde.
[0057] En la versión 1 de HEVC se puede usar un parámetro de cuantificación a nivel de fragmento (QP) para cuantificar bloques en un fragmento de datos de vídeo. Un codificador de vídeo o un descodificador de vídeo puede ajustar el QP a nivel de fragmento para cuantificar o cuantificar inversamente un bloque dado incluido en un grupo de cuantificación actual de al menos tres maneras diferentes. En general, los valores QP descritos en esta divulgación pueden incluir un valor QP de paleta de luminancia y al menos un valor QP de paleta de crominancia. Por ejemplo, un valor QP puede incluir un valor QPy para un componente de luminancia (Y), un valor QPCb para un primer componente de crominancia (Cb o U) y un valor QPCr para un segundo componente de crominancia (Cr o V).
[0058] Como primer ejemplo, el codificador de vídeo o descodificador de vídeo puede ajustar el QP a nivel de fragmento mediante un valor QP delta (a veces denominado CuQpDeltaVal) que se señaliza como máximo una vez por grupo de cuantificación. Cada grupo de cuantificación puede incluir una o más CU. Un valor QP delta puede señalizarse para una primera TU con una bandera de bloque codificado (CBF) igual a 1. La CBF puede ser una CBF de luminancia (Y) o una CBF de crominancia (Cb o Cr). En general, una CBF para una TU se establece igual a 1 para indicar que la TU incluye al menos un coeficiente distinto de cero, que puede cuantificarse. Por lo tanto, un valor QP delta, solo puede señalizarse en caso de que una TU respectiva incluya al menos un coeficiente cuantificado en la TU.
[0059] La señalización del valor QP delta puede incluir la señalización de un nivel absoluto y signo del valor QP delta a nivel de CU en un flujo de bits. En algunos ejemplos, el nivel absoluto y signo del valor QP delta pueden señalizarse si el mecanismo QP delta está habilitado para las CU mediante cu_qp_delta_enabled_flag. La bandera cu_qp_delta_enabled_flag puede señalizarse en uno de entre un SPS, VPS, PPS o cabecera de fragmento en el flujo de bits para indicar si los valores QP delta están habilitados para las CU de modo que el nivel absoluto y signo del valor QP delta pueden señalizarse a nivel de TU en el flujo de bits.
[0060] Un valor QP predicho, que puede ser el valor QP a nivel de fragmento o un valor de QP anterior asociado a un bloque en un grupo de cuantificación anterior, puede ajustarse mediante el valor QP delta de acuerdo con la siguiente ecuación.
Qpy = ( ( qPy pred + CuQpDeltciVal + 52+2 * QpBdOffsety)%
( 52 QpBdOffsety) ) - QpBdOffsety (5)
En la ecuación anterior, Qpy es una variable, qPy_pRED es el valor QP de luminancia predicho, CuQpDeltaVal es el valor QP delta y QpBdOffsety es un valor de desplazamiento de intervalo de parámetro de cuantificación de luminancia basado en una profundidad de bits de entrada para muestras de luminancia.
[0061] Como segundo ejemplo, el codificador de vídeo o el descodificador de vídeo pueden ajustar el QP a nivel de fragmento mediante un valor QpBdOffset para desplazar el valor QP a nivel de fragmento debido profundidades de bits de entrada variables. Por ejemplo, el valor QP de luminancia, Qp'y, se puede determinar de acuerdo con la siguiente ecuación.
Qp V = Qpy + QpBdOffsety (6)
En la ecuación anterior, Qpy es la variable determinada en la ecuación (5) y QpBdOffsety es el valor de desplazamiento de intervalo de parámetro de cuantificación de luminancia basado en la profundidad de bits de entrada para muestras de luminancia. Las profundidades de bits de entrada pueden ser diferentes para cada uno de los componentes y, Cb o Cr. Como se describe con más detalle a continuación, los valores QP de crominancia se pueden determinar ajustando aún más el valor QP de luminancia en función de, al menos en parte, un valor de desplazamiento de intervalo de parámetro de cuantificación de crominancia, QpBdOffsetC, que está basado en la profundidad de bits de entrada para muestras de crominancia.
[0062] En un tercer ejemplo, el codificador de vídeo o el descodificador de vídeo pueden determinar valores QP de crominancia con respecto al valor QP de luminancia basándose en valores de desplazamiento de crominancia. Los valores de desplazamiento de crominancia pueden incluir desplazamientos a nivel de PPS, por ejemplo, pps_cb_qp_offset y pps_cr_qp_offset, y desplazamientos a nivel de fragmento, por ejemplo, slice_cb_qp_offset y slice_cr_qp_offset. Los valores de desplazamiento de crominancia pueden incluir además valores de desplazamiento de QP de crominancia, por ejemplo, CuQpOffsetCb y CuQpOffsetCr. En algunos ejemplos, los valores de desplazamiento QP de crominancia pueden señalizarse si el mecanismo de desplazamiento QP de crominancia está habilitado para las CU mediante cu_chroma_qp_offset_enabled_flag. La bandera cu_chroma_qp_offset_enabled_flag puede señalizarse en uno de entre un SPS, VPS, PPS o cabecera de fragmento en el flujo de bits para indicar si los valores de desplazamiento QP de crominancia están habilitados para las CU, de modo que los valores de desplazamiento QP de crominancia pueden señalizarse a nivel de TU en el flujo de datos.
[0063] Por ejemplo, los valores QP de crominancia, Qp'Cb y Qp'Cr, pueden determinarse de acuerdo con las siguientes ecuaciones.
qPicb = C!ip3(' -QpBdOffsetc, 57, Qpy pps cb qp offset + sl icecbqpof fset
CuQpOffsetcb) (7)
qPicr = Clip3( -QpBdOffsetc, 57, Qp} ppscrqpof fset + sHce cr qp offset
+ CuQpOJfsetc) (8)
Qp'cb = qPcb QpBdOffsetc (9)
Qp'cr = qPcr + QpBdOffsetc (10)
En las ecuaciones anteriores, qPiCb y qPior son índices usados para determinar variables respectivas qPCb y qPCr, Qpy es la variable determinada en la ecuación (5), y QpBdOffsetC es el valor de desplazamiento de intervalo de parámetro de cuantificación de crominancia basado en la profundidad de bits de entrada para muestras de crominancia.
[0064] El codificador de vídeo y el descodificador de vídeo pueden determinar los valores QP de crominancia con respecto al QP de luminancia para valores QP altos (por ejemplo, superiores a 30) basándose en un ajuste no lineal que depende del formato de crominancia de entrada. El ajuste no lineal usado para determinar una variable QpC se especifica a continuación en la TABLA 2. Como se especifica en la TABLA 2, si ChromaArrayType es igual a 1, las variables qPCb y qPCr se establecen iguales al valor de QpC en base a que el índice qPi es igual a qPiCb y qPiCr, respectivamente. La variable ChromaArrayType se establece igual a 1 en caso de que los componentes de color (es decir, y , Cb, Cr) se codifiquen juntos usando un formato de crominancia específico, por ejemplo, 4:2:0.
TABLA 2: Especificación de Qpc en función de qPi para ChromaArrayType=1
qPi < 30 3 0 _ 3 1 3 2 _ 3 3 _ 3 4 _ 3 5 _ 3 6 _ 3 7 _ 3 8 _ 3 9 _ 4 0 _ 4 1 4 2 _ 4 3 _ >43
Figure imgf000012_0001
[0065] El proceso completo de cómo se obtiene el valor de parámetro de cuantificación de luminancia, Qp'y, y los valores de parámetro de cuantificación de crominancia, Qp'cb y Qp'cr, se describe con más detalle en la versión 1 de HEVC. En algunos casos, el valor Qpy puede usarse como una etapa de cuantificación para determinar la aplicación del filtrado de reducción del efecto bloque en píxeles de una CU dada. Si el filtrado de reducción del efecto bloque se aplica a píxeles de dos CU diferentes, entonces el Qpy promedio en ambas CU se puede usar para la determinación del filtrado de reducción del efecto bloque.
[0066] En caso de que una CU actual esté codificada como un bloque codificado por paleta, los procesos de filtrado en bucle (por ejemplo, filtrado de reducción del efecto bloque y/o filtrado SAO) diseñados para los modos de codificación de HEVC pueden no proporcionar buenos resultados para el contenido de pantalla codificado usando el modo de codificación basado en paleta. Convencionalmente, los bloques codificados por paleta se han tratado de la misma manera que los bloques intercodificados y, de este modo, el filtrado se ha aplicado automáticamente a los bloques reconstruidos antes de almacenarse en una memoria intermedia de imágenes descodificadas. Puede ser deseable cambiar los procesos de filtrado en bucle de acuerdo con las características de señal asociadas al modo de codificación basado en paleta. En algunos ejemplos, esta divulgación describe técnicas para determinar el diseño y la aplicación del filtrado en bucle (por ejemplo, filtrado de reducción del efecto bloque y/o filtrado SAO) para píxeles de bloques codificados por paleta. Más específicamente, se describen técnicas para determinar la aplicación del filtrado de reducción del efecto bloque para píxeles a lo largo de un límite de bloque formado por al menos un bloque codificado por paleta en un codificador de vídeo o un descodificador de vídeo.
[0067] A continuación se describen varios ejemplos para determinar el diseño y la aplicación del filtrado de reducción del efecto bloque para píxeles de bloques codificados por paleta. Cada uno de los ejemplos siguientes puede usarse conjuntamente o por separado con cualquiera de los otros ejemplos (a menos que se presenten específicamente como ejemplos alternativos). Los siguientes ejemplos se describen con respecto al primer bloque 170, el segundo bloque 172 y el límite de bloque 174 de la FIG. 4.
[0068] En un ejemplo de las técnicas divulgadas, en caso de que el primer bloque 170 adyacente al límite de bloque 174 se codifique usando el modo de codificación de paleta, un codificador de vídeo o un descodificador de vídeo puede aplicar el filtrado de reducción del efecto bloque de una manera similar a como si el primer bloque 170 estuviera codificado como un bloque sin pérdidas (es decir, cu_transquant_bypass=1, de modo que no se aplica transformación ni cuantificación al bloque). En otras palabras, las técnicas divulgadas incluyen tratar el primer bloque codificado por paleta 170 de la misma manera que un bloque codificado sin pérdidas inhabilitando el filtrado de reducción del efecto bloque para píxeles dentro del primer bloque codificado por paleta 170 en el límite de bloque 174 formado con el segundo bloque 172.
[0069] Como ejemplo, en caso de que el primer bloque 170 y el segundo bloque 172 comprendan bloques de luminancia, el filtrado de reducción del efecto bloque puede inhabilitarse para primeros píxeles de luminancia dentro de una versión reconstruida del primer bloque 170 como sigue. El codificador de vídeo o descodificador de vídeo puede determinar primero si el filtrado de reducción del efecto bloque está habilitado para el límite de bloque 174 formado entre el primer bloque reconstruido 170 y una versión reconstruida del segundo bloque 172. Esta determinación puede basarse en los tres criterios descritos anteriormente con respecto al filtrado de reducción del efecto bloque. Basándose en que el filtrado de reducción del efecto bloque esté habilitado para el límite de bloque 174, el codificador de vídeo o descodificador de vídeo puede entonces determinar un número de primeros píxeles de luminancia del primer bloque reconstruido 170 que van a someterse al filtrado de reducción del efecto bloque. Como se describe anteriormente, el número de primeros píxeles de luminancia que se someten al filtrado de reducción del efecto bloque puede depender del tipo determinado de filtrado de reducción del efecto bloque, es decir, normal o fuerte, que se aplicará.
[0070] Basándose en que el número de primeros píxeles de luminancia que se van a someter a filtrado de reducción del efecto bloque sea mayor que cero y basándose en que el primer bloque 170 sea un bloque codificado por paleta, el codificador de vídeo o descodificador de vídeo puede establecer a cero el número de primeros píxeles de luminancia que se van a someter a filtrado de reducción del efecto bloque para inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles de luminancia dentro del primer bloque reconstruido 170. Esto es similar a la forma en que se inhabilita el filtrado de reducción del efecto bloque para muestras de luminancia de bloques codificados sin pérdidas en la versión 1 de HEVC, de modo que, de acuerdo con las técnicas divulgadas, los bloques de luminancia codificados por paleta se tratan de la misma manera que los bloques codificados sin pérdida para fines de filtrado de reducción del efecto bloque.
[0071] Como otro ejemplo, en caso de que el primer bloque 170 y el segundo bloque 172 comprendan bloques de crominancia, el filtrado de reducción del efecto bloque puede inhabilitarse para primeros píxeles de crominancia dentro del primer bloque reconstruido 170 como sigue. El codificador de vídeo o descodificador de vídeo puede determinar primero si el filtrado de reducción del efecto bloque está habilitado para el límite de bloque 174. Como se describió anteriormente, esta determinación puede basarse en que el valor de intensidad de límite para el límite de bloque 174 sea igual a dos. Basándose en que el filtrado de reducción del efecto bloque esté habilitado para el límite de bloque 174, el codificador de vídeo o descodificador de vídeo puede entonces determinar valores sometidos a filtrado de reducción del efecto bloque para uno o más de los primeros píxeles de crominancia dentro del primer bloque reconstruido 170.
[0072] En base a que el primer bloque 170 sea un bloque codificado por paleta, el codificador de vídeo o descodificador de vídeo puede establecer los valores sometidos a filtrado de reducción del efecto bloque para el uno o más de los primeros píxeles de crominancia para que sean iguales a los valores originales para el uno o más de los primeros píxeles de crominancia para inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles de crominancia dentro del primer bloque reconstruido 170. Esto es similar a la forma en que se inhabilita el filtrado de reducción del efecto bloque para muestras de crominancia de bloques codificados sin pérdidas en la versión 1 de HEVC, de modo que, de acuerdo con las técnicas divulgadas, los bloques de crominancia codificados por paleta se tratan de la misma manera que los bloques codificados sin pérdida para fines de filtrado de reducción del efecto bloque.
[0073] En otro ejemplo de las técnicas divulgadas, en caso de que el primer bloque 170 y el segundo bloque 172 adyacentes al límite de bloque 174 se codifiquen usando el modo de codificación por paleta, el codificador de vídeo o descodificador de vídeo puede inhabilitar el filtrado de reducción del efecto bloque para píxeles tanto del primer bloque 170 como del segundo bloque 172 a lo largo del límite de bloque 174. En algunos ejemplos, el filtrado de reducción del efecto bloque puede inhabilitarse para cada uno del primer bloque 170 y el segundo bloque 172 de la manera descrita anteriormente con respecto a la inhabilitación del filtrado de reducción del efecto bloque para píxeles del primer bloque 170. En otros ejemplos, el filtrado de reducción del efecto bloque puede inhabilitarse para cada uno del primer bloque 170 y el segundo bloque 172 estableciendo el valor de intensidad de límite para el límite de bloque 174 igual a cero. De esta manera, el filtrado de reducción del efecto bloque se inhabilita para los píxeles de luminancia y crominancia del primer bloque 170 y del segundo bloque 172 a lo largo del límite de bloque 174.
[0074] En otro ejemplo de las técnicas divulgadas, en caso de que el primer bloque 170 se codifique usando el modo de codificación por paleta y el segundo bloque 172 se codifique usando un modo de codificación sin paleta, por ejemplo, modo de intercodificación o modo de intracodificación, etc., el codificador de vídeo o descodificador de vídeo puede inhabilitar el filtrado de reducción del efecto bloque solo para píxeles del primer bloque 170 a lo largo del límite de bloque 174. En este ejemplo, el filtrado de reducción del efecto bloque puede aplicarse a píxeles del segundo bloque 172 a lo largo del límite de bloque 174. Como ejemplo, el codificador de vídeo o descodificador de vídeo puede determinar si el filtrado de reducción del efecto bloque está habilitado para el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172. Basándose en que el filtrado de reducción del efecto bloque esté habilitado para el límite de bloque 174, el codificador de vídeo o descodificador de vídeo puede determinar un tipo de filtrado de reducción del efecto bloque para los segundos píxeles dentro del segundo bloque reconstruido 172, y aplicar el tipo determinado del filtrado de reducción del efecto bloque a uno o más de los segundos píxeles dentro del segundo bloque reconstruido 172. El filtrado de reducción del efecto bloque puede aplicarse a los segundos píxeles dentro del segundo bloque reconstruido 172 sin aplicar el filtrado de reducción del efecto bloque a los primeros píxeles dentro del primer bloque reconstruido 170.
[0075] En otro ejemplo de las técnicas divulgadas, en caso de que el primer bloque 170 adyacente al límite de bloque 174 se codifique usando el modo de codificación por paleta, el codificador de vídeo o descodificador de vídeo puede inhabilitar el filtrado de reducción del efecto bloque para píxeles dentro del primer bloque 170 y del segundo bloque 172 adyacentes al límite de bloque 174, independientemente del modo de codificación usado para codificar el segundo bloque 172. Por ejemplo, el filtrado de reducción del efecto bloque puede inhabilitarse estableciendo el valor de intensidad de límite para el límite de bloque 174 igual a cero. De esta manera, el filtrado de reducción del efecto bloque se inhabilita para los píxeles de luminancia y crominancia del primer bloque 170 y del segundo bloque 172 a lo largo del límite de bloque 174.
[0076] En un ejemplo adicional de las técnicas divulgadas, en caso de que el primer bloque 170 adyacente al límite de bloque 174 se codifique usando el modo de codificación por paleta, el codificador de vídeo o descodificador de vídeo puede determinar si se aplica el filtrado de reducción del efecto bloque a píxeles en ambos lados del límite de bloque 174 basándose en que el valor QP para el primer bloque codificado por paleta 170 esté establecido igual a cero.
[0077] En otro ejemplo de las técnicas divulgadas, en caso de que solo el primer bloque 170 se codifique usando el modo de codificación por paleta y el segundo bloque 172 se codifique usando un modo de codificación sin paleta, el codificador de vídeo o descodificador de vídeo puede establecer el valor de intensidad límite para el límite de bloque 174 a un valor positivo (es decir, mayor que 0) de modo que el filtrado de reducción del efecto bloque se pueda habilitar para píxeles a cada lado del límite de bloque 174.
[0078] En caso de este ejemplo, si el primer bloque 170 se codifica usando el modo de codificación por paleta y el segundo bloque 172 se codifica usando el modo de intracodificación, el valor de intensidad de límite para el límite de bloque 174 puede establecerse igual a 2. Por lo tanto, la regla 1 en la anterior TABLA 1, se sigue cumpliendo en el caso del modo de codificación por paleta. En otro caso de este ejemplo, si el primer bloque 170 se codifica usando el modo de codificación por paleta y el segundo bloque 172 se codifica usando el modo de codificación de copia intrabloque (IntraBC), el valor de intensidad de límite para el límite de bloque 174 puede establecerse igual a 1. De forma alternativa, se puede aplicar una restricción determinada. Por ejemplo, si un vector de movimiento asociado al segundo bloque codificado mediante IntraBC 172 tiene un valor absoluto que es mayor que un umbral (por ejemplo, 1 en unidades de píxeles enteros), el valor de intensidad de límite puede establecerse igual a 1. De otro modo, el valor de intensidad de límite puede establecerse igual a 0.
[0079] En otro caso de este ejemplo, si el primer bloque 170 se codifica usando el modo de codificación por paleta y el segundo bloque 172 se codifica usando el modo de intercodificación, el valor de intensidad de límite para el límite de bloque 174 puede establecerse igual a 1. De forma alternativa, se puede aplicar una restricción determinada. Por ejemplo, si un vector de movimiento asociado al segundo bloque intercodificado 172 tiene un valor absoluto que es mayor que un umbral (por ejemplo, 1 en unidades de píxeles enteros), el valor de intensidad de límite puede establecerse igual a 1. De otro modo, el valor de intensidad de límite puede establecerse igual a 0.
[0080] En otro ejemplo de las técnicas divulgadas, en caso de que solo el primer bloque 170 (P) se codifique usando el modo de codificación por paleta y el segundo bloque 172 (Q) se codifique usando un modo de codificación sin paleta, los criterios de variación de píxel usados por el codificador de vídeo o descodificador de vídeo para determinar si el filtrado de reducción del efecto bloque está habilitado para el límite de bloque 174 pueden modificarse pasando de la ecuación (1) anterior a la siguiente ecuación.
Iq2,o - 2qi,o + qn,n\ + \q2.3 - 2q¡j + qoj\ < c - J3 ( 11)
En la ecuación anterior, c es una constante, por ejemplo, se establece igual a 0,5, y p es un parámetro que solo depende del valor QP del segundo bloque no codificado por paleta 172 (Q). De forma alternativa, p puede depender de los valores QP tanto del primer bloque 170 como del segundo bloque 172, si el valor QP del primer bloque codificado por paleta 170 (P) está bien definido, tal como establecido igual a cero como en uno de los ejemplos anteriores.
[0081] De forma similar, los criterios adicionales usados por el codificador de vídeo o descodificador de vídeo para determinar un tipo de filtrado de reducción del efecto bloque, es decir, normal o fuerte, pueden modificarse pasando de las ecuaciones (2), (3) y (4) anteriores a las siguientes ecuaciones, con i= 0, 3.
1 qi.¡ - 2q¡,¡ + q0,i\ < c -J3/8 ( 12)
|qs,¡ - qo,¡\ < c ■ f i /8 ( 13)
\po,¡ - qo,¡\ < c ■ 2,5/,. ( 14)
[0082] En otro ejemplo de las técnicas divulgadas, los valores QP para el modo de codificación basado en paleta, que se usa para calcular los parámetros j8 y tc usados para diseñar el filtrado de reducción del efecto bloque, se definen como sigue. Por ejemplo, en caso de que solo el primer bloque 170 (P) se codifique usando el modo de codificación por paleta y el segundo bloque 172 (Q) se codifique usando un modo de codificación sin paleta, puede suponerse que el valor QP del segundo bloque no codificado por paleta 172 (Q) es qpQ, y el valor QP del primer bloque codificado por paleta 170 (P) se puede definir como qpP = qpQ pltQPOffset. El parámetro pltQPOffset puede ser una constante predefinida, un valor señalizado en un SPS, VPS, PPS o cabecera de fragmento, u obtenerse implícitamente. En algunos ejemplos, el parámetro pltQPOffset puede ser un valor QP delta. De forma alternativa, el valor QP del primer bloque codificado por paleta 170 (P), es decir, qpP, también puede obtenerse de los valores QP de otro u otros bloques vecinos.
[0083] En otro ejemplo de las técnicas divulgadas, se puede señalizar una bandera en SPS, VPS, PPS, cabecera de fragmento, CTU o CU para indicar si el filtrado de reducción del efecto bloque se usa en el límite de bloque 174 adyacente a al menos un bloque codificado por paleta, por ejemplo, el primer bloque 170.
[0084] A continuación se describen varios ejemplos para determinar el diseño y la aplicación del filtrado SAO para bloques codificados por paleta. Cada uno de los ejemplos siguientes puede usarse conjuntamente o por separado con cualquiera de los otros ejemplos (a menos que se presenten específicamente como ejemplos alternativos).
[0085] En un ejemplo de las técnicas divulgadas, en caso de que todas las CU de una CTU se codifiquen usando el modo de codificación por paleta, un codificador de vídeo o descodificador de vídeo 30 puede inhabilitar el filtrado SAO para todas las CU de la CTU.
[0086] En un ejemplo alternativo de las técnicas divulgadas, si el porcentaje de CU en la CTU que se codifican usando el modo de codificación por paleta es superior a un umbral, el codificador de vídeo o descodificador de vídeo puede inhabilitar el filtrado SAO para todas las CU de la CTU. El porcentaje de CU codificadas por paleta en la CTU puede calcularse como el número de píxeles codificados por paleta con respecto al número total de píxeles en la CTU, o como el número de CU codificadas por paleta con respecto al número total de CU en la CTU, o de acuerdo con algunos otros criterios. En este ejemplo alternativo, si el filtrado SAO está habilitado en la CTU, es posible que las CU codificadas por paleta y las CU no codificadas por paleta puedan tener diferentes parámetros de filtro SAO. Por ejemplo, las CU codificadas por paleta y las CU no codificadas por paleta pueden tener diferentes tipos de filtro SAO, diferentes clases de filtro SAO o diferentes desplazamientos de filtro SAO. Además, cada una de las CU codificadas por paleta puede tener diferentes parámetros de filtro SAO.
[0087] En otro ejemplo de las técnicas divulgadas, el proceso de filtrado SAO para bloques codificados por paleta puede mejorarse de la siguiente manera. En un caso, los píxeles de escape y los píxeles que no son de escape en un bloque codificado por paleta pueden tener diferentes valores de desplazamiento. Por ejemplo, el filtrado SAO solo puede aplicarse a los píxeles de escape, mientras que los píxeles que no son de escape tienen valores de desplazamiento establecidos iguales a cero. Como ejemplo adicional, solo se puede aplicar el filtrado de desplazamiento de banda a los píxeles de escape. En algunos ejemplos, cuatro bandas pueden corregirse mediante valores de desplazamiento de banda. En otros ejemplos, puede corregirse un número mayor o menor de cuatro bandas mediante valores de desplazamiento de banda. En otro caso, debido a que el contenido de pantalla tiene, en general, patrones horizontales y verticales marcados, el filtrado de desplazamiento de borde puede estar restringido a solamente las direcciones horizontal y vertical.
[0088] En otro caso, si se usa una tabla de desplazamiento de transición, por ejemplo, {(index, offset_index)}, para determinar un desplazamiento cuando se produce una transición de color, se puede aplicar un modo de desplazamiento de borde de transición. En este caso, se puede suponer que el bloque de índice de color reconstruido en el modo de codificación de paleta se denota como INDEX[x] en el orden de exploración por líneas. Si INDEX[x-1] != INDEX[x], se produce una transición en la posición [x] y un desplazamiento igual a offset_INDEX[x] (si este valor existe en la tabla de desplazamiento de transición) se aplica al valor de píxel reconstruido en la posición [x]. El desplazamiento puede propagarse a los siguientes píxeles en el orden de exploración por líneas. En otras palabras, el mismo desplazamiento se aplica a los píxeles en las posiciones [x+1], [x+2],... [x+k], hasta INDEX[x+k] != INDEX[x]. La tabla de desplazamiento de transición puede señalizarse para cada índice de paleta o solo un subconjunto de los índices de paleta. Por ejemplo, un desplazamiento de transición puede codificarse y señalizarse en el flujo de bits solo hasta los cuatro primeros índices de paleta. Si el desplazamiento de transición para un índice específico no se señaliza, se puede usar un valor por defecto, por ejemplo, 0. Los tres componentes de color (por ejemplo, Y, Cb, Cr) pueden o bien compartir los mismos valores de desplazamiento o bien tener valores de desplazamiento individuales.
[0089] En caso de que una CU actual se codifique como un bloque codificado por paleta, los valores QP se pueden usar para cuantificar los valores de píxeles de escape del bloque codificado por paleta. En algunos ejemplos, los valores QP y la cuantificación también pueden aplicarse a la codificación de nuevas entradas de paleta. Convencionalmente, el modo de codificación por paleta no incluye un mecanismo para ajustar un valor QP a nivel de fragmento para cada CU o cada grupo de cuantificación, que puede incluir una o más CU. Por lo tanto, un codificador de vídeo o descodificador de vídeo debe funcionar con un QP constante para cuantificar los valores de píxeles de escape de los bloques codificados por paleta. En algunos ejemplos, esta divulgación describe técnicas para determinar valores QP y valores QP delta usados para cuantificar los valores de píxeles de escape de los bloques codificados por paleta.
[0090] A continuación se describen varios ejemplos de determinación u obtención de valores QP de paleta para bloques codificados por paleta. Cada uno de los ejemplos siguientes puede usarse conjuntamente o por separado con cualquiera de los otros ejemplos (a menos que se presenten específicamente como ejemplos alternativos).
[0091] En un ejemplo de las técnicas divulgadas, un codificador de vídeo o descodificador de vídeo puede determinar un valor QP de paleta (o tamaño de etapa de cuantificación correspondiente) para un bloque codificado por paleta que se ajusta a partir de un valor QP predicho. El bloque codificado por paleta puede incluirse en un grupo de cuantificación actual, que puede incluir otro u otros bloques que incluyen otros bloques codificados por paleta y bloques no codificados por paleta. El valor QP predicho puede ser el valor QP a nivel de fragmento o un valor QP asociado a un bloque incluido en un grupo de cuantificación anterior. El valor QP a nivel de fragmento es el valor QP que se usa para cuantificar bloques dentro de un fragmento en la versión 1 de HEVC.
[0092] Por ejemplo, en lugar de usar el valor QP a nivel de fragmento para un bloque codificado de paleta, el codificador de vídeo o descodificador de vídeo puede definir un valor QP de paleta para el bloque codificado por paleta como QP pltQPOffest a nivel de fragmento. En otros ejemplos, el valor QP de paleta puede obtenerse de un valor QP asociado a un bloque en un grupo de cuantificación anterior o asociado a un bloque vecino en el grupo de cuantificación actual que también incluye el bloque codificado por paleta. El parámetro pltQPOffset puede ser una constante predefinida, un valor señalizado en un SPS, VPS, PPS o cabecera de fragmento, u obtenerse implícitamente. En algunos ejemplos, el parámetro pltQPOffset puede ser un valor QP delta.
[0093] En otro ejemplo de las técnicas divulgadas, el codificador de vídeo o descodificador de vídeo puede usar dos valores QP diferentes o desplazamientos correspondientes para el bloque codificado por paleta. En este ejemplo, se puede usar un primer pltQPOffset1 para cuantificar al menos una parte de cualquier entrada de paleta nueva para el bloque codificado por paleta, y un segundo pltQPOffset2 se puede usar para cuantificar al menos una parte de los píxeles de escape dentro del bloque codificado por paleta. Cada uno de pltQPOffsetl y pltQPOffset2 puede ser una constante predefinida, un valor señalizado en un SPS, VPS, PPS o cabecera de fragmento, u obtenerse implícitamente. En algunos casos, al menos uno de los valores de pltQPOffset puede indicar que no se utiliza ninguna cuantificación (es decir, el bloque codificado por paleta está codificado sin pérdidas).
[0094] En otro ejemplo de las técnicas divulgadas, el codificador de vídeo o descodificador de vídeo puede usar varios valores QP diferentes o desplazamientos correspondientes para el bloque codificado por paleta. En este ejemplo, se puede usar un primer pltQPOffset1 para cuantificar cualquier entrada de paleta nueva hasta que una bandera indique un punto de conmutación para comenzar a usar un segundo pltQPOffset2 para cuantificar cualquier entrada de paleta nueva adicional, y así sucesivamente.
[0095] En un ejemplo adicional de las técnicas divulgadas, diferentes valores QP o desplazamientos correspondientes, es decir, pltQPOffsets, se pueden señalizar o predefinir para cada valor de índice o cada subconjunto de valores de índice codificados para píxeles dentro del bloque codificado por paleta. En algunos casos, también se puede usar un pltQPOffset diferente para píxeles en cada modo de serie de paleta diferente. Por ejemplo, los píxeles en un modo de serie "copiar desde la izquierda" pueden tener un valor QP diferente que los píxeles en un modo de serie "copiar desde arriba". En otro caso, el pltQPOffset también puede depender de la longitud de la serie.
[0096] A continuación se describen diversos ejemplos de determinación de valores QP delta usados para determinar u obtener valores de QP de paleta para bloques codificados por paleta. Cada uno de los ejemplos siguientes puede usarse conjuntamente o por separado con cualquiera de los otros ejemplos (a menos que se presenten específicamente como ejemplos alternativos). Convencionalmente, el modo de codificación por paleta no incluye un mecanismo para ajustar un valor QP a nivel de fragmento para cada CU o cada grupo de cuantificación. Como se describe anteriormente, para los bloques no codificados por paleta, el valor QP a nivel de fragmento se puede ajustar en base a un valor QP delta señalizado una vez para cada CU o cada grupo de cuantificación si el bloque no codificado por paleta incluye al menos un coeficiente distinto de cero, que puede estar indicado por una CBF asociada que es igual a 1.
[0097] En un ejemplo de las técnicas divulgadas, un codificador de vídeo o descodificador de vídeo puede determinar si al menos un píxel dentro de un bloque codificado por paleta se codifica como un píxel de escape que tiene un valor de color que no está incluido en una paleta para el bloque codificado por paleta, y basándose en que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinar un valor QP delta para un grupo de cuantificación actual que incluya el bloque codificado por paleta. El codificador de vídeo o descodificador de vídeo puede entonces ajustar un valor QP predicho basándose en el valor QP delta para determinar el valor QP de paleta para el bloque codificado por paleta. El bloque codificado por paleta puede incluirse en el grupo de cuantificación actual. El valor QP predicho puede ser el valor QP a nivel de fragmento o un valor QP asociado a un bloque incluido en un grupo de cuantificación anterior.
[0098] Por ejemplo, un valor QP delta (a veces denominado CuQpDeltaVal) puede señalizarse dependiendo de un valor de una bandera de escape a nivel de CU que indica si una CU actual incluye al menos un píxel que se codifica como valor de píxel de escape. Un ejemplo de esta bandera de escape a nivel de CU, es decir, palette_escape_val_present_flag, se describe en la solicitud estadounidense n.° 14/719.215, presentada el 21 de mayo de 2015, que reivindica el beneficio de la solicitud provisional estadounidense n.° 62/002.054, presentada el 22 de mayo de 2014. Si la bandera de escape a nivel de CU indica que la CU actual incluye al menos una bandera de escape, el valor QP delta puede señalizarse a nivel de CU en el flujo de bits justo después de la bandera de escape a nivel de CU. Como otro ejemplo, se puede señalizar un valor de QP delta si al menos una bandera de escape está presente para un píxel dentro de una CU codificada usando el modo de codificación por paleta. El valor QP delta puede señalizarse justo después de que se señalice el primer indicador de escape, o al final de la CU. La señalización del valor QP delta puede incluir la señalización de un nivel absoluto y signo del valor QP delta.
[0099] El ejemplo anterior se puede usar para determinar un valor QP de paleta de luminancia usado para cuantificar píxeles de luminancia que están codificados como píxeles de escape. Además, basándose en que al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, el codificador de vídeo y el descodificador de vídeo pueden determinar un valor de desplazamiento QP de crominancia para el grupo de cuantificación actual que incluye el bloque codificado por paleta, y ajustar el valor QP de paleta de luminancia determinado para el bloque codificado por paleta en base al valor de desplazamiento QP de crominancia para determinar un valor QP de paleta de crominancia para el bloque codificado por paleta.
[0100] En otro ejemplo de las técnicas divulgadas, se puede señalizar un valor QP delta para cada CU codificada por paleta dependiendo de un valor de un elemento sintáctico que indique si los valores QP delta están habilitados para bloques codificados por paleta. En este ejemplo, el elemento sintáctico puede señalizarse en uno de entre un SPS, VPS, PPS o cabecera de fragmento para indicar si los valores QP delta se señalizan a nivel de CU para los bloques codificados por paleta. En caso de los píxeles de luminancia, el valor QP delta puede señalizarse si el mecanismo QP delta está habilitado para las CU mediante cu_qp_delta_enabled_flag, señalizada en uno de entre un SPS, VPS, PPS o cabecera de fragmento en el flujo de bits. En el caso de los píxeles de crominancia, los valores de desplazamiento QP de crominancia pueden señalizarse si el mecanismo de desplazamiento QP de crominancia está habilitado para las CU mediante cu_chroma_qp_offset_enabled_flag, señalizada en uno de un SPS, VPS, PPS o cabecera de fragmento en el flujo de bits.
[0101] Como otro ejemplo de las técnicas divulgadas, un valor QP delta se puede señalizar para una CU codificada por paleta dependiendo de si al menos una parte de las nuevas entradas de paleta se cuantifica.
[0102] A continuación se describen diversos ejemplos de determinación de valores QP de paleta para bloques de codificación por paleta usando un valor QP predicho. Cada uno de los ejemplos siguientes puede usarse conjuntamente o por separado con cualquiera de los otros ejemplos (a menos que se presenten específicamente como ejemplos alternativos).
[0103] En un ejemplo de las técnicas divulgadas, un codificador de vídeo o descodificador de vídeo puede determinar si un bloque codificado por paleta es un primer bloque en un grupo de cuantificación actual o si cualquier bloque no codificado por paleta anterior en el grupo de cuantificación actual incluye coeficientes distintos de cero. En base a que el bloque codificado por paleta sea el primer bloque del grupo de cuantificación actual o ninguno de los bloques no codificados por paleta anteriores en el grupo de cuantificación actual incluya coeficientes distintos de cero, el codificador de vídeo o descodificador de vídeo puede determinar el valor QP de paleta para el bloque codificado por paleta ajustado a partir del valor de QP predicho, por ejemplo, qPY_PRED de la ecuación (5) anterior. El valor QP de paleta puede incluir valores QP de luminancia y crominancia, es decir, QpY, Qp'Y, QpC, Qp'Cb y Qp'Cr de las ecuaciones (6) y (11) y la TABLA 2 anteriores, que se usan para cuantificar los píxeles de escape dentro del bloque codificado por paleta.
[0104] En este ejemplo, en algunos casos, no se puede señalizar ningún valor QP delta para el bloque codificado por paleta y se puede suponer que es igual a cero. En otros casos, el valor QP delta puede señalizarse para el bloque codificado por paleta y el valor QP de paleta puede determinarse de acuerdo con una o más de las técnicas descritas anteriormente. Para obtener el valor QP de paleta para el bloque codificado por paleta a partir de un valor QP de un bloque en un grupo de cuantificación vecino anterior, se puede usar el QP predicho. A este respecto, el bloque codificado por paleta se puede tratar de manera similar a una TU no codificada por paleta, ya sea sin coeficientes distintos de cero (sin valor QP delta señalizado) o con coeficientes distintos de cero (valor QP delta señalizado).
[0105] De forma alternativa, basándose en que el bloque codificado por paleta no sea el primer bloque en el grupo de cuantificación actual y en que al menos uno de los bloques no codificados por paleta anteriores en el grupo de cuantificación actual incluya coeficientes distintos de cero, el codificador de vídeo o descodificador de vídeo puede determinar que el valor QP de paleta es igual a un valor QP de grupo de cuantificación, incluidos los valores QP de luminancia y crominancia, previamente determinados para el al menos uno bloque no codificados por paleta anterior en el grupo de cuantificación actual. En otras palabras, en cuanto a los bloques codificados por paleta en el grupo de cuantificación actual que se codifican después de al menos una TU que tiene coeficientes distintos de cero en el grupo de cuantificación actual, los valores QP de luminancia y crominancia determinados para el grupo de cuantificación se usan para los bloques codificados por paleta. Estos valores QP de luminancia y crominancia pueden ser los valores QP que también se usan para las otras TU no codificadas por paleta en el grupo de cuantificación.
[0106] En el caso de los píxeles de luminancia, un valor QP delta de paleta puede señalizarse para el bloque codificado por paleta solo si no se ha determinado previamente un valor QP delta para un bloque incluido en el grupo de cuantificación actual que también incluye el bloque codificado por paleta. Esto puede ocurrir en caso de que el bloque codificado por paleta sea un primer bloque del grupo de cuantificación actual o en caso de que ningún bloque no codificado por paleta anterior del grupo de cuantificación actual incluya coeficientes distintos de cero. En un ejemplo, un elemento sintáctico, por ejemplo, IsCuQpDeltaCoded, puede indicar si un valor QP delta para un bloque de luminancia se ha señalizado previamente para el grupo de cuantificación actual. En caso de que no se haya determinado previamente un valor QP delta para el grupo de cuantificación actual, se señaliza el valor QP delta de paleta para el bloque codificado por paleta de luminancia. Si el valor QP delta de paleta para el bloque codificado por paleta de luminancia no está señalizado, puede obtenerse explícitamente para que sea igual a cero.
[0107] En el caso de los píxeles de crominancia, un valor de desfase QP de crominancia de paleta puede señalizarse para el bloque codificado por paleta solo si no se ha determinado previamente un valor de desplazamiento QP de crominancia para un bloque incluido en el grupo de cuantificación actual que también incluye el bloque codificado por paleta. Esto puede ocurrir en caso de que el bloque codificado por paleta sea un primer bloque del grupo de cuantificación actual o en caso de que ningún bloque no codificado por paleta anterior del grupo de cuantificación actual incluya coeficientes distintos de cero. En un ejemplo, un elemento sintáctico, por ejemplo, IsCuChromaQPOffsetCoded, puede indicar si un valor de desplazamiento QP de crominancia para un bloque de crominancia se ha señalizado previamente para el grupo de cuantificación actual. En caso de que no se haya determinado previamente un valor de desplazamiento QP de crominancia para el grupo de cuantificación actual, se señaliza el valor de desplazamiento QP de crominancia de paleta para el bloque codificado por paleta de crominancia. Si el valor de desplazamiento QP de crominancia de paleta para el bloque codificado por paleta de crominancia no está señalizado, puede obtenerse explícitamente para que sea igual a cero.
[0108] En general, los valores QP de paleta para los bloques codificados por paleta se pueden determinar de acuerdo con el proceso de derivación de parámetro de cuantificación descrito anteriormente y en la versión 1 de HEVC, HEVC SCC WD1.0 y HEVC SCC WD2.0. En otro ejemplo de las técnicas divulgadas, en cuanto a un bloque codificado por paleta, el codificador de vídeo o descodificador de vídeo puede conmutar entre determinar u obtener valores QP de paleta basándose en valores QP delta señalizados explícitamente y determinar u obtener valores QP de paleta basándose en el valor QP predicho sin ningún valor QP delta. Esta conmutación se puede realizar a través de una bandera señalizada en el SPS, VPS, PPS o cabecera de fragmento.
[0109] A continuación se describen diversos ejemplos de especificación de Qpo en función de qPi para bloques codificados por paleta. Como se ilustra en la anterior TABLA 2, un valor QP usado para componentes de crominancia puede ajustarse de forma no lineal en función del valor QP usado para componentes de luminancia. Dado que el modo de codificación basado en paleta tiene diferentes características para los componentes de luminancia y crominancia, el ajuste no lineal puede simplificarse para el modo de codificación basado en paleta. Como ejemplo, en cuanto a bloques codificados por paleta, la variable QpC puede establecerse igual al índice qPi.
[0110] A continuación se describen diversos ejemplos de un valor QP usado para determinar la aplicación del filtrado de reducción del efecto bloque para píxeles dentro de bloques codificados por paleta. Por ejemplo, los diferentes valores QP y los diferentes ajustes descritos anteriormente se pueden usar como el valor de QP empleado para determinar la aplicación del filtrado de reducción del efecto bloque para bloques codificados por paleta.
[0111] A continuación se describen diversos ejemplos de realización de cuantificación de nuevas entradas de paleta para bloques codificados por paleta. En un ejemplo de las técnicas divulgadas, en caso de que una CU actual se codifique como un bloque codificado por paleta, se pueden cuantificar nuevas entradas de paleta en una paleta para el bloque codificado por paleta. La señalización y los valores QP para cuantificar las nuevas entradas de paleta pueden ser los siguientes. En un caso, el valor QP para las nuevas entradas de paleta puede ser diferente del valor QP determinado para cuantificar valores de píxeles de escape dentro del bloque codificado por paleta. Por ejemplo, el valor QP para nuevas entradas de paleta se puede establecer como un desplazamiento con respecto al valor QP de píxel de escape.
[0112] En otro caso, un elemento sintáctico, por ejemplo, una bandera o índice de posición, puede indicar qué nuevas entradas de la paleta para el bloque codificado por paleta están cuantificadas y cuáles no. Por ejemplo, las nuevas entradas de paleta se pueden dividir en dos subconjuntos, donde el primer subconjunto incluye las nuevas entradas que no están cuantificadas (es decir, codificadas sin pérdidas) y el segundo subconjunto incluye las nuevas entradas que están cuantificadas. Una bandera se puede señalizar después de cada nueva entrada de paleta para indicar si está cuantificada o no. De forma alternativa, una bandera se puede señalizar después de cada nueva entrada de paleta que no esté cuantificada, mientras que otra bandera se puede señalizar para indicar que una nueva entrada de paleta dada y todas las nuevas entradas de paleta subsiguientes están cuantificadas. Se pueden aplicar varios niveles diferentes de cuantificación a las nuevas entradas de paleta.
[0113] La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación de vídeo 10 que puede utilizar las técnicas de esta 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 esta 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 de codificación de vídeo basada en paleta de acuerdo con diversos ejemplos descritos en esta divulgación. Por ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar configurados para codificar selectivamente diversos bloques de datos de vídeo, tales como las CU o PU en la codificación HEVC, usando codificación basada en paleta o bien codificación no basada en paleta. Los modos de codificación no basados en paleta pueden referirse 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 por la versión 1 de la HEVC.
[0114] 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.
[0115] 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), tabletas electrónicas, 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.
[0116] 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 capaces de 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 extensa 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.
[0117] 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, mediante el acceso a disco o el 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.
[0118] En otro ejemplo, el canal 16 puede incluir un servidor de archivos u otro dispositivo de almacenamiento intermedio que almacena los 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 mediante transmisión continua o descarga. El servidor de archivos puede ser un tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir los datos de vídeo codificados al dispositivo de destino 14. Ejemplos de servidores de archivos incluyen servidores web (por ejemplo, para una página web), servidores de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados en red (NAS) y unidades de disco local.
[0119] 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. Ejemplos de tipos de conexiones de datos pueden incluir canales inalámbricos (por ejemplo, conexiones Wi-Fi), conexiones alámbricas (por ejemplo, DSL, módem por 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.
[0120] Las técnicas de esta divulgación no están limitadas a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como soporte de 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.
[0121] El sistema de codificación de vídeo 10 ilustrado en la FIG. 1 es simplemente un ejemplo y las técnicas de esta divulgación pueden aplicarse a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no incluyan 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 en continuo 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.
[0122] 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/desmodulador (módem) y/o un transmisor. La fuente de vídeo 18 puede incluir un dispositivo de captura de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contenga datos de vídeo previamente capturados, una interfaz de alimentación 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.
[0123] El codificador de vídeo 20 puede codificar datos de vídeo procedentes 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 pueden almacenarse en un medio de almacenamiento o en un servidor de archivos para un acceso posterior mediante el dispositivo de destino 14 para su descodificación y/o su reproducción.
[0124] 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 con, 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.
[0125] Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden implementarse como cualquiera de una variedad de circuitos adecuados, tales 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 se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio adecuado de almacenamiento no transitorio legible por ordenador, y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cualquiera de lo anterior (incluyendo hardware, software, una combinación de hardware y software, etc.) puede considerarse como uno o más procesadores. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden incluir en uno o más codificadores o descodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0126] Esta divulgación puede referirse, en general, al codificador de vídeo 20 que "señaliza" o "transmite" determinada información a otro dispositivo, tal como el descodificador de vídeo 30. El término "señalizar" o "transmitir" puede referirse en general a la comunicación de elementos sintácticos y/u otros datos usados para descodificar los datos de vídeo comprimidos. Dicha comunicación puede producirse en tiempo real o casi real. De forma alternativa, dicha comunicación puede producirse durante un tramo de tiempo, tal como podría producirse cuando se almacenan elementos sintácticos en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que pueden ser recuperados después por un dispositivo de descodificación en cualquier momento tras haber sido almacenados en este medio.
[0127] 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 HEVC mencionada anteriormente y descrita en la versión 1 de la HEVC. Además de la norma HEVC base, hay esfuerzos constantes 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, pueden proporcionarse modos de codificación basada en paleta, por ejemplo, como se describe en esta divulgación, para la ampliación de la norma HEVC. En algunos ejemplos, las técnicas descritas en esta divulgación para la codificación 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. Por consiguiente, la aplicación de un modo de codificación 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 fines de ejemplo.
[0128] En HEVC y otras normas de codificación de vídeo, una secuencia de vídeo incluye típicamente una pluralidad de imágenes. Las imágenes también se pueden denominar "tramas". Una imagen puede incluir tres matrices de muestras, denotadas como Sl, SCb y SCr. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luminancia. 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 monocromática y puede incluir solo una matriz de muestras de luminancia.
[0129] 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 luminancia, dos bloques de árbol de codificación correspondientes de muestras de crominancia y estructuras sintácticas usadas para codificar las muestras de los bloques de árbol de codificación. Un bloque de árbol de codificación puede ser un bloque NxN de muestras. Una CTU también puede denominarse "bloque de árbol" o "unidad de codificación de máximo tamaño" (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 fragmento puede incluir un número entero de CTU ordenadas consecutivamente en la exploración por líneas.
[0130] Para generar una CTU codificada, el codificador de vídeo 20 puede realizar de forma recursiva una divisió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 NxN de muestras. Una CU puede ser un bloque de codificación de muestras de luminancia y dos bloques de codificación correspondientes de muestras de crominancia de una imagen que tenga una matriz de muestras de luminancia, una matriz de muestras de Cb y una matriz de muestras de Cr, y estructuras sintácticas 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 luminancia, dos bloques de predicción correspondientes de muestras de crominancia de una imagen y estructuras sintácticas usadas para predecir las muestras de bloques de predicción. El codificador de vídeo 20 puede generar bloques predictivos de luminancia, Cb y Cr para bloques de predicción de luminancia, Cb y Cr de cada PU de la CU.
[0131] 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 basándose en muestras descodificadas de la imagen asociada a la PU.
[0132] 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 basándose en 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.
[0133] Después de que el codificador de vídeo 20 genere bloques predictivos de luminancia, Cb y Cr para una o más PU de una CU, el codificador de vídeo 20 puede generar un bloque residual de luminancia para la CU. Cada muestra del bloque residual de luminancia de la CU indica una diferencia entre una muestra de luminancia de uno de los bloques predictivos de luminancia de la CU y una muestra correspondiente del bloque de codificación de luminancia 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.
[0134] Además, el codificador de vídeo 20 puede usar la partición en árbol cuaternario para descomponer los bloques residuales de luminancia, Cb y Cr de una CU en uno o más bloques de transformada de luminancia, 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 luminancia, dos bloques de transformada correspondientes de muestras de crominancia y estructuras sintácticas usadas para transformar las muestras de bloques de transformada. Por tanto, cada TU de una CU puede estar asociada a un bloque de transformada de luminancia, un bloque de transformada de Cb y un bloque de transformada de Cr. El bloque de transformada de luminancia asociado a la TU puede ser un subbloque del bloque residual de luminancia 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.
[0135] El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luminancia de una TU para generar un bloque de coeficientes de luminancia 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.
[0136] Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luminancia, 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 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 codificar por entropía elementos sintácticos que indiquen 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 sintácticos que indican los coeficientes de transformada cuantificados. El codificador de vídeo 20 puede proporcionar los elementos sintácticos codificados por entropía en un flujo de bits.
[0137] El codificador de vídeo 20 puede proporcionar un flujo de bits que incluye los elementos sintácticos codificados por entropía. 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 NAL incluye una cabecera de unidad NAL y encapsula una carga útil de secuencia de octetos sin procesar (RBSP). La cabecera de unidad NAL puede incluir un elemento sintáctico que indica un código de tipo de unidad NAL. El código de tipo de unidad NAL especificado por la cabecera de unidad NAL de una unidad NAL indica el tipo de la unidad NAL. Una RBSP puede ser una estructura sintáctica que contiene un número entero de octetos que están encapsulados dentro de una unidad NAL. En algunos casos, una RBSP incluye bits cero.
[0138] Diferentes tipos de unidades NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad NAL puede encapsular una RBSP para un fragmento codificado, un tercer tipo de unidad NAL puede encapsular una RBSP para SEI, etc. Las unidades NAL que encapsulan las RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes SEI) pueden denominarse unidades NAL de capa de codificación de vídeo (VCL).
[0139] 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 sintácticamente el flujo de bits para descodificar elementos sintácticos del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo basándose, al menos en parte, en los elementos sintácticos descodificados a partir del flujo de bits. El proceso para reconstruir los datos de vídeo puede ser, en general, recíproco al proceso realizado por el codificador de vídeo 20.
[0140] Por ejemplo, el descodificador de vídeo 30 puede usar los MV de las PU para determinar bloques predictivos para las PU de una CU actual. Además, el descodificador de vídeo 30 puede cuantificar inversamente bloques de coeficientes de transformada asociados a las 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 de las PU de la CU actual a 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.
[0141] En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar configurados para realizar una codificación basada en paleta. Por ejemplo, en la codificación 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 se puede asociar 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 adecuado de la paleta.
[0142] En el ejemplo anterior, 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 relacionando 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 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 paleta para reconstruir los valores de píxel del bloque.
[0143] En algunos ejemplos, el codificador de vídeo 20 puede codificar uno o más elementos sintácticos que indican una pluralidad de píxeles consecutivos, en un orden de exploración dado, que tienen el mismo valor de píxel. La cadena de valores de píxel de valor similar se puede denominar en el presente documento una "serie". En un ejemplo con propósitos ilustrativos, si dos píxeles consecutivos en un orden de exploración dado tienen valores diferentes, la serie es igual a cero. Si dos píxeles consecutivos en un orden de exploración dado tienen el mismo valor pero el tercer píxel en el orden de exploración tiene un valor diferente, la serie es igual a uno. El descodificador de vídeo 30 puede obtener los elementos sintácticos que indican una serie 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.
[0144] En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden realizar un copiado por líneas para una o más entradas de un mapa de valores de índice. Por ejemplo, el codificador de vídeo 20 puede indicar que un valor de píxel para una entrada particular en un mapa de índices es igual a una entrada en una línea dispuesta sobre la entrada particular. El codificador de vídeo 20 también puede indicar, como una serie, el número de índices en el orden de exploración que son iguales a la entrada en la línea superior 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 a partir de la línea vecina especificada y del número especificado de entradas para la línea del mapa que se está codificando actualmente.
[0145] De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden determinar el diseño y la aplicación del filtrado en bucle (por ejemplo, filtrado de reducción del efecto bloque y/o filtrado SAO) para píxeles de bloques codificados por paleta. Más específicamente, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden determinar la aplicación del filtrado de reducción del efecto bloque para píxeles a lo largo de un límite de bloque formado por al menos un bloque codificado por paleta. Además, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden determinar valores QP y valores QP delta usados para cuantificar valores de píxeles de escape de bloques codificados por paleta. Por ejemplo, basándose en que al menos un píxel dentro de un bloque codificado por paleta que se codifica como un píxel de escape, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden determinar un valor QP de paleta para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho. En particular, en algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden configurarse para realizar técnicas de esta divulgación que se describen con más detalle con respecto a las FIGS. 4-6.
[0146] 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 esta divulgación. La FIG. 2 se proporciona con propósitos explicativos y no se debería considerar limitativa de las técnicas ampliamente ejemplificadas y descritas en esta divulgación. Con propósitos explicativos, esta divulgación describe un codificador de vídeo 20 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0147] El codificador de vídeo 20 representa un ejemplo de dispositivo que puede estar configurado para realizar técnicas de codificación de vídeo basada en paleta de acuerdo con diversos ejemplos descritos en esta 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 HEVC, usando codificación basada en paleta o codificación no basada en paleta. Los modos de codificación no basados en paleta pueden referirse 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 por la versión 1 de la HEVC. El codificador de vídeo 20, en un ejemplo, puede estar configurado para generar una paleta que tenga entradas que indiquen valores de píxel, seleccionar valores de píxel en una paleta para representar valores de píxeles de al menos algunas ubicaciones de píxel en un bloque de datos de vídeo, y señalizar información que asocie 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.
[0148] En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una memoria de datos de vídeo 98, una unidad de procesamiento de predicción 100, una unidad de generación residual 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, una memoria intermedia de imágenes descodificadas 116 y una unidad de codificación por entropía 118. La unidad de procesamiento de predicción 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 basada en paleta descritas en esta divulgación. En otros ejemplos, el codificador de vídeo 20 puede incluir más, menos o diferentes componentes funcionales.
[0149] La memoria de datos de vídeo 98 puede almacenar datos de vídeo a codificar mediante los componentes del codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 98 se pueden obtener, por ejemplo, a partir de la fuente de vídeo 18. La memoria intermedia de imágenes descodificadas 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 mediante el codificador de vídeo 20, por ejemplo, en los modos de intracodificación o intercodificación. La memoria de datos de vídeo 98 y la memoria intermedia de imágenes descodificadas 116 pueden estar formadas por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (s DrAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. El mismo dispositivo de memoria u otros dispositivos de memoria separados pueden proporcionar una memoria de datos de vídeo 98 y una memoria intermedia de imágenes descodificadas 116. En diversos ejemplos, la memoria de datos de vídeo 98 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera del chip con respecto a esos componentes.
[0150] El codificador de vídeo 20 puede recibir datos de vídeo. El codificador de vídeo 20 puede codificar cada CTU en un fragmento de una imagen de los datos de vídeo. Cada una de las CTU puede estar asociada a bloques de árbol de codificación (CTB) de luminancia de igual tamaño y a CTB correspondientes de la imagen. Como parte de la codificación de una CTU, la unidad de procesamiento de predicción 100 puede realizar una divisió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 las CU. Por ejemplo, la unidad de procesamiento de predicción 100 puede dividir un CTB asociado a una CTU en cuatro subbloques de igual tamaño, dividir uno o más de los subbloques en cuatro subsubbloques de igual tamaño, y así sucesivamente.
[0151] El codificador de vídeo 20 puede codificar las CU de una CTU para generar representaciones codificadas de las CU (es decir, CU codificadas). Como parte de la codificación de una CU, la unidad de procesamiento de predicción 100 puede dividir 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 luminancia y a bloques correspondientes de predicción de crominancia. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden admitir PU que tienen diversos tamaños. Como se indicó anteriormente, el tamaño de una CU se puede referir al tamaño del bloque de codificación de luminancia de la CU, y el tamaño de una PU se puede referir al tamaño de un bloque de predicción de luminancia de la PU. Suponiendo que el tamaño de una CU particular es de 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 la intrapredicción, y tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN o similares para la interpredicción. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden admitir una división asimétrica para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N para la interpredicción.
[0152] 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 fragmento I, en un fragmento P o en un fragmento B. En un fragmento I, todas las PU se intrapredicen. Por lo tanto, si la PU está en un fragmento I, la unidad de interpredicción 121 no realiza interpredicción en la PU. Por tanto, para bloques codificados en el modo I, el bloque predicho se forma usando predicción espacial a partir de bloques vecinos previamente codificados dentro de la misma trama.
[0153] Si una PU está en un fragmento 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 proporcionar 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 basándose en muestras reales o interpoladas en la ubicación de referencia, indicada por el vector de movimiento de la PU.
[0154] Si una PU está en un fragmento B, la unidad de estimación de movimiento puede realizar unipredicción o bipredicción para la PU. Para realizar la 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 proporcionar, como 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 basándose, al menos en parte, en muestras reales o interpoladas en la región de referencia indicada por el vector de movimiento de la PU.
[0155] 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 basándose, al menos en parte, en muestras reales o interpoladas en las regiones de referencia indicadas por los vectores de movimiento de la PU.
[0156] 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 sintácticos. La unidad de procesamiento de intrapredicción 126 puede realizar una intrapredicción en las PU en fragmentos I, fragmentos P y fragmentos B.
[0157] 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.
[0158] La unidad de procesamiento de predicción 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 procesamiento de predicción 100 selecciona los datos predictivos para las PU de la CU basándose en métricas de velocidad/distorsión de los conjuntos de datos predictivos. Los bloques de muestras predictivos de los datos predictivos seleccionados se pueden denominar en el presente documento bloques de muestras predictivos seleccionados.
[0159] La unidad de generación residual 102 puede generar, basándose en el bloque de codificación de luminancia, Cb y Cr de una CU y los bloques predictivos seleccionados de luminancia, Cb y Cr de las PU de la CU, bloques residuales de luminancia, Cb y Cr de la CU. Por ejemplo, la unidad de generación residual 102 puede generar los bloques residuales de la CU de modo que cada muestra de los bloques residuales tenga 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 de muestras predictivo seleccionado correspondiente de una PU de la CU.
[0160] La unidad de procesamiento de transformada 104 puede realizar una división de árbol cuaternario para dividir los bloques residuales asociados a una CU en bloques de transformada asociados a las TU de la CU. Por tanto, una TU puede estar asociada a un bloque de transformada de luminancia y a dos bloques de transformada de crominancia. Los tamaños y las posiciones de los bloques de transformada de luminancia y crominancia de las TU de una CU pueden o no estar basados en los tamaños y las posiciones de 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.
[0161] 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 de coseno discreta (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.
[0162] La unidad de cuantificación 106 puede cuantificar los coeficientes de transformada en 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 puede redondearse 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 basándose en 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 QP asociado a la CU. La cuantificación puede introducir pérdida de información, por lo que los coeficientes de transformada cuantificados pueden tener una precisión menor que los originales.
[0163] 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. La unidad de reconstrucción 112 puede añadir el bloque residual reconstruido a muestras correspondientes de uno o más bloques de muestras predictivos generados por la unidad de procesamiento de predicción 100 para generar 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.
[0164] La unidad de filtro 114 puede realizar una o más operaciones de eliminación de bloques para reducir los artefactos de bloque en los bloques de codificación asociados a una CU. La memoria intermedia 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 del 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 de la memoria intermedia de imágenes descodificadas 116 para realizar una intrapredicción en otras PU de la misma imagen que la CU.
[0165] La unidad de codificación por entropía 118 puede recibir datos desde otros componentes funcionales del codificador de vídeo 20. Por ejemplo, la unidad de codificación por entropía 118 puede recibir bloques de coeficientes desde la unidad de cuantificación 106 y puede recibir elementos sintácticos desde la unidad de procesamiento de predicción 100. La unidad de codificación por entropía 118 puede realizar una o más operaciones de codificación por entropía en los datos para generar datos codificados por entropía. Por ejemplo, la unidad de codificación por entropía 118 puede realizar una operación de codificación de longitud variable adaptativa al contexto (CAVLC), una operación CABAC, una operación de codificación de longitud variable a variable (V2V), una operación de codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), una operación de codificación por entropía de división en intervalos de probabilidad (PIPE), una operación de codificación Golomb exponencial u otro tipo de operación de codificación por entropía en los datos. El codificador de vídeo 20 puede proporcionar un flujo de bits que incluye datos codificados por entropía, generados por la unidad de codificación por entropía 118. Por ejemplo, el flujo de bits puede incluir datos que representan un RQT para una CU.
[0166] De acuerdo con diversos ejemplos de esta 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 HEVC, como ejemplo, las técnicas de codificación basada en paleta pueden estar configuradas para su uso como un modo de unidad de codificación (CU). En otros ejemplos, las técnicas de codificación basada en paleta pueden estar configuradas para su uso como un modo PU en el marco de trabajo de HEVC. En consecuencia, todos los procesos divulgados, descritos en el presente documento (a lo largo de esta divulgación) en el contexto de un modo de CU, se pueden aplicar, de forma adicional o alternativa, a las 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 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 de codificación por paleta puede ser bloques cuadrados, bloques rectangulares o incluso regiones de forma no rectangular.
[0167] 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 tenga entradas que indiquen valores de píxel, seleccionar valores de píxel en una paleta para representar valores de píxeles de al menos algunas ubicaciones de píxel en un bloque de datos de vídeo, y señalizar información que asocie al menos algunas de las ubicaciones de píxeles del bloque de datos de vídeo a entradas de la paleta correspondientes, respectivamente, a los valores de píxel seleccionados en la paleta. 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.
[0168] De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 puede estar configurado para determinar el diseño y la aplicación del filtrado en bucle (por ejemplo, filtrado de reducción del efecto bloque y/o filtrado SAO) para píxeles de bloques codificados por paleta reconstruidos mediante la unidad de filtro 114 antes de almacenar los bloques reconstruidos en la memoria intermedia de imágenes descodificadas 116. Más específicamente, la unidad de codificación basada en paleta 122 del codificador de vídeo 20 puede estar configurada para determinar la aplicación del filtrado de reducción del efecto bloque por la unidad de filtro 114 para píxeles a lo largo de un límite de bloque formado por al menos un bloque codificado por paleta. Por ejemplo, basándose en que un primer bloque de datos de vídeo sea un bloque codificado por paleta, la unidad de codificación basada en paleta 122 puede inhabilitar el filtrado de reducción del efecto bloque por la unidad de filtro 114 para píxeles dentro de una versión reconstruida del primer bloque en un límite de bloque formado entre el primer bloque reconstruido y un segundo bloque reconstruido de los datos de vídeo. La unidad de codificación basada en paleta 122 también puede determinar si se aplica o no el filtrado de reducción del efecto bloque por la unidad de filtro 114 para píxeles dentro del segundo bloque reconstruido en el límite de bloque formado entre el primer bloque reconstruido y el segundo bloque reconstruido. Las técnicas para determinar la aplicación del filtrado de reducción del efecto bloque de bloques codificados por paleta se describen con más detalle con respecto a las FIGS. 4 y 5.
[0169] De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 puede estar configurado para determinar los valores QP y los valores QP delta usados por la unidad de cuantificación 106 para cuantificar valores de píxeles de escape de los bloques codificados por paleta. Por ejemplo, el codificador de vídeo 20 puede estar configurado para codificar un primer elemento sintáctico en un flujo de bits que indica si al menos un píxel dentro de un bloque codificado por paleta se codifica como un píxel de escape que tiene un valor de color que no está incluido en una paleta para el bloque codificado por paleta. El codificador de vídeo 20 puede estar configurado adicionalmente para, basándose en que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, determinar un valor QP de paleta para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho.
[0170] En un ejemplo, basándose en que el al menos un píxel dentro del bloque codificado por paleta esté codificado como un píxel de escape y en caso de que no se haya determinado previamente un valor QP delta para un grupo de cuantificación actual que incluye el bloque codificado por paleta, el codificador de vídeo 20 puede determinar el valor QP de paleta para el bloque codificado por paleta, determinar un valor QP delta de paleta como una diferencia entre el valor QP de paleta y el valor QP predicho, y codificar un segundo elemento sintáctico del flujo de bits que indica el valor QP delta de paleta. El codificador de vídeo 20 puede entonces cuantificar el valor de color para el píxel de escape de acuerdo con el valor QP de paleta, y codificar el valor de color cuantificado para el píxel de escape en el flujo de bits. Las técnicas para determinar el valor QP de paleta para un bloque codificado por paleta se describen con más detalle con respecto a la FIG. 6.
[0171] 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 esta divulgación. La FIG. 3 se proporciona con propósitos explicativos y no se limita a las técnicas ampliamente ejemplificadas y descritas en esta divulgación. Con propósitos explicativos, esta divulgación describe un descodificador de vídeo 30 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0172] El codificador de vídeo 30 representa un ejemplo de dispositivo que puede estar configurado para realizar técnicas de codificación de vídeo basada en paleta, de acuerdo con diversos ejemplos descritos en esta divulgación. Por ejemplo, el codificador de vídeo 30 puede estar configurado para descodificar selectivamente diversos bloques de datos de vídeo, tales como CU o PU en la codificación HEVC, usando codificación basada en paleta o bien codificación no basada en paletas. Los modos de codificación no basados en paleta pueden referirse 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 por la versión 1 de la HEVC. 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 posiciones de un bloque de datos de vídeo a 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.
[0173] En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye una memoria de datos de vídeo 148, una unidad de descodificación por entropía 150, una unidad de procesamiento de predicción 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 una memoria intermedia de imágenes descodificadas 162. La unidad de procesamiento de predicción 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 basada en paleta descritas en esta divulgación. En otros ejemplos, el descodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
[0174] La memoria de datos de vídeo 148 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 la memoria de datos de vídeo 148 pueden obtenerse, por ejemplo, a partir del medio legible por ordenador 16, por ejemplo, desde una fuente de vídeo local, tal como una cámara, por medio de comunicación de datos de vídeo por red cableada o inalámbrica, o accediendo a medios de almacenamiento físico de datos. La memoria de datos de vídeo 148 puede formar una memoria intermedia de imágenes codificadas (CPB) que almacena datos de vídeo codificados a partir de un flujo de bits de vídeo codificado. La memoria intermedia 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 mediante el descodificador de vídeo 30, por ejemplo, en los modos de intracodificación o intercodificación. La memoria de datos de vídeo 148 y la memoria intermedia de imágenes descodificadas 162 pueden estar formadas por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. El mismo dispositivo de memoria u otros dispositivos de memoria separados pueden proporcionar una memoria de datos de vídeo 148 y una memoria intermedia de imágenes descodificadas 162. En diversos ejemplos, la memoria de datos de vídeo 148 puede estar en un chip con otros componentes del descodificador de vídeo 30, o fuera del chip con respecto a esos componentes.
[0175] La memoria de datos de vídeo 148, es decir, una CPB, puede recibir y almacenar datos de vídeo codificados (por ejemplo, unidades NAL) de un flujo de bits. La unidad de descodificación por entropía 150 puede recibir datos de vídeo codificados (por ejemplo, unidades NAL) desde la memoria de datos de vídeo 148 y puede analizar sintácticamente las unidades NAL para descodificar elementos sintácticos. La unidad de descodificación por entropía 150 puede descodificar por entropía elementos sintácticos codificados por entropía en las unidades NAL. La unidad de procesamiento de predicción 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 basándose en los elementos sintácticos extraídos del flujo de bits.
[0176] Las unidades NAL del flujo de bits pueden incluir unidades NAL de fragmentos codificados. Como parte de la descodificación del flujo de bits, la unidad de descodificación por entropía 150 puede extraer y descodificar por entropía elementos sintácticos de las unidades NAL de fragmentos codificados. Cada uno de los fragmentos codificados puede incluir una cabecera de fragmento y datos de fragmento. La cabecera de fragmento puede contener elementos sintácticos pertenecientes a un fragmento. Los elementos sintácticos de la cabecera de fragmento pueden incluir un elemento sintáctico que identifica un PPS asociado a una imagen que contiene el fragmento.
[0177] Además de descodificar elementos sintácticos del flujo de bits, el descodificador de vídeo 30 puede realizar una operación de reconstrucción en una CU no dividida. Para realizar la operación de reconstrucción en una CU no dividida, 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.
[0178] 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 la cuantificación inversa, es decir, la descuantificación, de los bloques de coeficientes asociados a la TU. La unidad de cuantificación inversa 154 puede usar un valor 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 lo aplique. Es decir, la relación de compresión, es decir, la relación entre el número de bits usados para representar la secuencia original y la comprimida, puede controlarse ajustando el valor del QP usado al cuantificar los coeficientes de transformada. La relación de compresión también puede depender del procedimiento de codificación por entropía empleado.
[0179] 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 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 al bloque de coeficientes.
[0180] 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 luminancia, Cb y Cr para la PU basándose en los bloques de predicción de PU vecinas en el espacio. La unidad de procesamiento de intrapredicción 166 puede determinar el modo de intrapredicción para la PU basándose en uno o más elementos sintácticos descodificados a partir del flujo de bits.
[0181] La unidad de procesamiento de predicción 152 puede construir una primera lista de imágenes de referencia (RefPicListO) y una segunda lista de imágenes de referencia (RefPicList1) basándose en elementos sintácticos extraídos del flujo de bits. Además, si una PU se codifica usando interpredicción, la unidad de descodificación por entropía 150 puede extraer información de movimiento para la PU. La unidad de compensación de movimiento 164 puede determinar, basándose en 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, basándose en bloques de muestras del uno o más bloques de referencia para la PU, bloques predictivos de luminancia, Cb y Cr para la PU.
[0182] La unidad de reconstrucción 158 puede usar los bloques de transformada de luminancia, Cb y Cr, asociados a las TU de una CU y los bloques predictivos de luminancia, 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 luminancia, Cb y Cr de la CU. Por ejemplo, la unidad de reconstrucción 158 puede añadir muestras de los bloques de transformada de luminancia, Cb y Cr a muestras correspondientes de los bloques predictivos de luminancia, Cb y Cr para reconstruir los bloques de codificación de luminancia, Cb y Cr de la CU.
[0183] La unidad de filtro 160 puede realizar una operación de reducción del efecto bloque para reducir los artefactos de bloque asociados a los bloques de codificación de luminancia, Cb y Cr de la CU. El descodificador de vídeo 30 puede almacenar los bloques de codificación de luminancia, Cb y Cr de la CU en la memoria intermedia de imágenes descodificadas 162. La memoria intermedia 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, basándose en los bloques de luminancia, Cb y Cr de la memoria intermedia de imágenes descodificadas 162, operaciones de intrapredicción o de interpredicción en las PU de otras CU. De esta manera, el descodificador de vídeo 30 puede extraer, a partir del flujo de bits, niveles de coeficientes de transformada del bloque de coeficientes de luminancia significativos, realizar la cuantificación inversa de los niveles de coeficientes de transformada, aplicar una transformada a los niveles de coeficientes de transformada para generar un bloque de transformada, generar, basándose al menos en parte en el bloque de transformada, un bloque de codificación, y proporcionar el bloque de codificación para su visualización.
[0184] De acuerdo con diversos ejemplos de esta divulgación, el descodificador de vídeo 30 puede estar configurado para realizar una codificación 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 PU. Por ejemplo, la unidad de descodificación basada en paleta 165 puede estar configurada para generar una paleta que tenga entradas que indiquen valores de píxeles, recibir información que asocie al menos algunas ubicaciones de píxel en un bloque de datos de vídeo a 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.
[0185] De acuerdo con las técnicas de esta divulgación, el descodificador de vídeo 30 puede estar configurado para determinar el diseño y la aplicación del filtrado en bucle (por ejemplo, filtrado de reducción del efecto bloque y/o filtrado SAO) para píxeles de bloques codificados por paleta reconstruidos mediante la unidad de filtro 160 antes de almacenar los bloques reconstruidos en la memoria intermedia de imágenes descodificadas 162 o proporcionar los bloques reconstruidos para su visualización. Más específicamente, la unidad de descodificación basada en paleta 165 del descodificador de vídeo 30 puede estar configurada para determinar la aplicación del filtrado de reducción del efecto bloque por la unidad de filtro 160 para píxeles a lo largo de un límite de bloque formado por al menos un bloque codificado por paleta. Por ejemplo, basándose en que un primer bloque de datos de vídeo sea un bloque codificado por paleta, la unidad de descodificación basada en paleta 165 puede inhabilitar el filtrado de reducción del efecto bloque por la unidad de filtro 160 para píxeles dentro de una versión reconstruida del primer bloque en un límite de bloque formado entre el primer bloque reconstruido y un segundo bloque reconstruido de los datos de vídeo. La unidad de descodificación basada en paleta 165 también puede determinar si se aplica o no el filtrado de reducción del efecto bloque por la unidad de filtro 160 para píxeles dentro del segundo bloque reconstruido en el límite de bloque formado entre el primer bloque reconstruido y el segundo bloque reconstruido. Las técnicas para determinar la aplicación del filtrado de reducción del efecto bloque de bloques codificados por paleta se describen con más detalle con respecto a las FIGS. 4 y 5.
[0186] De acuerdo con las técnicas de esta divulgación, el descodificador de vídeo 30 puede estar configurado para determinar los valores QP y los valores QP delta usados por la unidad de cuantificación inversa 154 para cuantificar valores de píxeles de escape de los bloques codificados por paleta. Por ejemplo, el descodificador de vídeo 30 puede estar configurado para descodificar un primer elemento sintáctico de un flujo de bits recibido que indica si al menos un píxel dentro de un bloque codificado por paleta debe descodificarse como un píxel de escape que tiene un valor de color que no está incluido en una paleta para el bloque codificado por paleta. El descodificador de vídeo 30 puede estar configurado adicionalmente para, basándose en que el al menos un píxel dentro del bloque codificado por paleta se descodifica como un píxel de escape, determinar un valor QP de paleta para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho.
[0187] En un ejemplo, basándose en que el al menos un píxel dentro del bloque codificado por paleta esté descodificado como un píxel de escape y en caso de que un valor QP delta no se haya determinado previamente para un grupo de cuantificación actual que incluye el bloque codificado por paleta, el descodificador de vídeo 30 puede descodificar un segundo elemento sintáctico del flujo de bits recibido que indica un valor QP delta de paleta para el bloque codificado por paleta, y ajustar el valor QP predicho en base al valor QP delta de paleta para determinar el valor QP de paleta para el bloque codificado por paleta. El descodificador de vídeo 30 puede descodificar a continuación el valor de color cuantificado para el píxel de escape del flujo de bits recibido, y cuantificar de manera inversa el valor de color para el píxel de escape de acuerdo con el valor QP de paleta. Las técnicas para determinar el valor QP de paleta para un bloque codificado por paleta se describen con más detalle con respecto a la FIG. 6.
[0188] La FIG. 5 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo que determina si se aplica filtrado de reducción del efecto bloque a píxeles a lo largo de un límite de bloque formado por al menos un bloque codificado por paleta. La operación de ejemplo de la FIG. 5 se describe con respecto a la aplicación del filtrado de reducción del efecto bloque a píxeles a lo largo del límite de bloque 174 formado entre el primer bloque 170 y el segundo bloque 172 de la FIG. 4. La operación de ejemplo ilustrada en la FIG. 5 puede realizarse por cualquier codificador de vídeo 20 de la FIG. 2 o descodificador de vídeo 30 de la FIG. 3.
[0189] La operación de ejemplo de la FIG. 5 se describirá primero con respecto al descodificador de vídeo 30. El descodificador de vídeo 30 recibe un flujo de bits codificado desde un codificador de vídeo, tal como el codificador de vídeo 20. El flujo de bits codificado incluye representaciones de bloques codificados de datos de vídeo para al menos una imagen y uno o más elementos sintácticos asociados a los datos de vídeo. El descodificador de vídeo 30 determina que el primer bloque 170 de los datos de vídeo a descodificar es un bloque codificado por paleta (200). En algunos ejemplos, el descodificador de vídeo 30 puede recibir al menos un elemento sintáctico (por ejemplo, una bandera) en el flujo de bits que indica si cada bloque de datos de vídeo es o no un bloque codificado por paleta. En otros ejemplos, el descodificador de vídeo 30 puede recibir uno o más elementos sintácticos que indican un tipo de codificación usada para codificar cada bloque de datos de vídeo, por ejemplo, si cada bloque es un bloque codificado por paleta, un bloque intercodificado o un bloque intracodificado, etc.
[0190] Cuando el primer bloque 170 es un bloque codificado por paleta, la unidad de descodificación basada en paleta 165 del descodificador de vídeo 30 determina una paleta para el primer bloque 170 (202). La paleta para el primer bloque 170 incluye cero o más entradas de paleta que indican uno o más valores de color respectivos. Como se describe con más detalle anteriormente, los valores de color respectivos incluidos en la paleta pueden ser los valores de color principales que ocurren con mayor frecuencia en el primer bloque 170. La unidad de descodificación basada en paleta 165 puede determinar la paleta de acuerdo con un tamaño de paleta y entradas de paleta recibidas en el flujo de bits codificado. La unidad de descodificación basada en paleta 165 determina entonces el valor de color para los píxeles del primer bloque 170 con respecto a la paleta (204).
[0191] En caso de que la paleta incluya cero entradas de paleta, todos los píxeles dentro del primer bloque 170 deben descodificarse como píxeles de escape que tienen valores de color que no están incluidos en la paleta, y la unidad de descodificación basada en paleta 165 determina los valores de color para los píxeles de escape recibidos en el flujo de bits codificado. En caso de que la paleta incluya una o más entradas de paleta, la unidad de descodificación basada en paleta 165 determina valores de índice para uno o más píxeles dentro del primer bloque 170 recibidos en el flujo de bits codificado, donde cada uno de los valores de índice corresponde a una de las entradas de paleta que indica un valor de color para uno de los píxeles dentro del primer bloque 170, y determina valores de color para cualquiera de los píxeles dentro del primer bloque que se descodifican como píxeles de escape.
[0192] El descodificador de vídeo 30 reconstruye el primer bloque 170 de los datos de vídeo en base a la paleta determinada y los valores de color determinados para el primer bloque 170 (206). El descodificador de vídeo 30 puede entonces almacenar los datos de vídeo del primer bloque reconstruido 170 en la memoria intermedia de imágenes descodificadas 162 y posteriormente proporcionar los datos de vídeo del primer bloque reconstruido 170 para su visualización.
[0193] Convencionalmente, los bloques codificados por paleta se han tratado de la misma manera que los bloques intercodificados y, de este modo, el filtrado se ha aplicado automáticamente a los bloques reconstruidos antes de almacenarse en la memoria intermedia de imágenes descodificadas o proporcionarse para su visualización. De acuerdo con las técnicas divulgadas, los bloques codificados por paleta se tratan, en cambio, de manera similar a los bloques codificados sin pérdidas para fines de filtrado de reducción del efecto bloque. En otras palabras, las técnicas divulgadas incluyen inhabilitar el filtrado de reducción del efecto bloque para píxeles dentro de bloques codificados por paleta.
[0194] Basándose en que el primer bloque 170 sea un bloque codificado por paleta, la unidad de descodificación basada en paleta 165 inhabilita el filtrado de reducción del efecto bloque para los primeros píxeles dentro del primer bloque reconstruido 170 en el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172 (208). De esta manera, no se puede aplicar filtrado de reducción del efecto bloque a los primeros píxeles en el primer bloque reconstruido 170 antes de almacenar o proporcionar el primer bloque reconstruido 170.
[0195] En caso de que el primer bloque reconstruido 170 y el segundo bloque reconstruido 172 comprendan bloques de luminancia, la unidad de descodificación basada en paleta 165 puede inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles de luminancia dentro del primer bloque reconstruido 170 de la siguiente manera. La unidad de descodificación basada en paleta 165 puede determinar primero si el filtrado de reducción del efecto bloque está habilitado para el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172. Esta determinación puede basarse en que el límite de bloque 174 sea un límite de PU o TU, un valor de intensidad de límite para el límite de bloque 174 sea mayor que cero, y la variación del primer y el segundo píxel luminancia a lo largo de ambos lados del límite de bloque 174 esté por debajo de un umbral.
[0196] Basándose en que el filtrado de reducción del efecto bloque esté habilitado para el límite de bloque 174, la unidad de descodificación basada en paleta 165 puede entonces determinar un número de los primeros píxeles de luminancia dentro del primer bloque reconstruido 170 que van a someterse al filtrado de reducción del efecto bloque. El número de los primeros píxeles de luminancia que se van a someter a filtrado de reducción del efecto bloque puede depender de si se aplicará un filtrado fuerte o normal de reducción del efecto bloque a los primeros píxeles de luminancia y, en caso de filtrado normal de reducción del efecto bloque, se aplicará una intensidad de filtrado normal de reducción del efecto bloque a los primeros píxeles de luminancia. Basándose en que el número de primeros píxeles de luminancia que se van a someter a filtrado de reducción del efecto bloque sea mayor que cero y basándose en que el primer bloque 170 sea un bloque codificado por paleta, la unidad de descodificación basada en paleta 165 puede establecer a cero el número de primeros píxeles de luminancia que se van a someter a filtrado de reducción del efecto bloque para inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles de luminancia dentro del primer bloque reconstruido 170. Esto es similar a la forma en que se inhabilita el filtrado de reducción del efecto bloque para muestras de luminancia de bloques codificados sin pérdidas en la versión 1 de HEVC, de modo que, de acuerdo con las técnicas divulgadas, los bloques codificados por paleta se tratan de la misma manera que los bloques codificados sin pérdida para fines de filtrado de reducción del efecto bloque.
[0197] En caso de que el primer bloque reconstruido 170 y el segundo bloque reconstruido 172 comprendan bloques de crominancia, la unidad de descodificación basada en paleta 165 puede inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles de crominancia dentro del primer bloque reconstruido 170 de la siguiente manera. La unidad de descodificación basada en paleta 165 puede determinar primero si el filtrado de reducción del efecto bloque está habilitado para el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172. Esta determinación puede basarse en que un valor de intensidad de límite para el límite de bloque 174 sea igual a dos. Basándose en que el filtrado de reducción del efecto bloque esté habilitado para el límite de bloque 174, la unidad de descodificación basada en paleta 165 puede entonces determinar valores sometidos a filtrado de reducción del efecto bloque para uno o más de los primeros píxeles de crominancia dentro del primer bloque reconstruido 170. Basándose en que el primer bloque 170 sea un bloque codificado por paleta, la unidad de descodificación basada en paleta 165 puede establecer los valores sometidos a filtrado de reducción del efecto bloque para el uno o más de los primeros píxeles de crominancia para que sean iguales a los valores originales para el uno o más de los primeros píxeles de crominancia para inhabilitar el filtrado de reducción del efecto bloque para los primeros píxeles de crominancia dentro del primer bloque reconstruido 170. Esto es similar a la forma en que se inhabilita el filtrado de reducción del efecto bloque para muestras de crominancia de bloques codificados sin pérdidas en la versión 1 de HEVC, de modo que, de acuerdo con las técnicas divulgadas, los bloques codificados por paleta se tratan de la misma manera que los bloques codificados sin pérdida para fines de filtrado de reducción del efecto bloque.
[0198] Además, la unidad de descodificación basada en paleta 165 determina si se aplica el filtrado de reducción del efecto bloque para segundos píxeles dentro del segundo bloque reconstruido 172 en el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172 (210). En un ejemplo, la unidad de descodificación basada en paleta 165 puede determinar que el segundo bloque 172 también es un bloque codificado por paleta. Después de reconstruir el segundo bloque 172, basándose en que el segundo bloque 172 sea un bloque codificado por paleta, la unidad de descodificación basada en paleta 165 inhabilita el filtrado de reducción del efecto bloque para los segundos píxeles dentro del segundo bloque reconstruido 172 en el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172. De esta manera, no se puede aplicar filtrado de reducción del efecto bloque a los segundos píxeles en el segundo bloque reconstruido 172 antes de almacenar o proporcionar el segundo bloque reconstruido 172.
[0199] En otro ejemplo, la unidad de descodificación basada en paleta 165 puede determinar que el segundo bloque
172 no es un bloque codificado por paleta, sino que es un bloque intercodificado o un bloque intracodificado, etc.
Después de reconstruir el segundo bloque 172, la unidad de descodificación basada en paleta 165 determina si el filtrado de reducción del efecto bloque está habilitado para el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172. Basándose en que el filtrado de reducción del efecto bloque esté habilitado para el límite de bloque 174, la unidad de descodificación basada en paleta 165 determina un tipo de filtrado de reducción del efecto bloque para los segundos píxeles dentro del segundo bloque reconstruido 172, y aplica el tipo determinado del filtrado de reducción del efecto bloque a uno o más de los segundos píxeles dentro del segundo bloque reconstruido 172, sin aplicar el filtrado de reducción del efecto bloque a los primeros píxeles dentro del primer bloque reconstruido 170. De esta manera, se puede aplicar filtrado de reducción del efecto bloque a los segundos píxeles en el segundo bloque reconstruido 172 antes de almacenar o proporcionar el segundo bloque reconstruido 172.
[0200] La operación de ejemplo de la FIG. 5 se describirá a continuación con respecto al codificador de vídeo 20. El codificador de vídeo 20 determina que el primer bloque 170 de los datos de vídeo se va a codificar como un bloque codificado por paleta (200). En algunos ejemplos, el codificador de vídeo 20 puede señalizar al menos un elemento sintáctico (por ejemplo, una bandera) en un flujo de bits codificado que indica si cada bloque de datos de vídeo es o no un bloque codificado por paleta. En otros ejemplos, el codificador de vídeo 20 puede señalizar uno o más elementos sintácticos del flujo de bits codificado que indican un tipo de codificación usada para codificar cada bloque de datos de vídeo, por ejemplo, si cada bloque es un bloque codificado por paleta, un bloque intercodificado o un bloque intracodificado, etc.
[0201] Cuando el primer bloque 170 va a codificarse como un bloque codificado por paleta, la unidad de codificación basada en paleta 122 del codificador de vídeo 20 determina una paleta para el primer bloque 170 (202). La paleta para el primer bloque 170 incluye cero o más entradas de paleta que indican uno o más valores de color respectivos.
Como se describe con más detalle anteriormente, los valores de color respectivos incluidos en la paleta pueden ser los valores de color principales que ocurren con mayor frecuencia en el primer bloque 170. La unidad de codificación basada en paleta 122 puede determinar un tamaño de paleta y entradas de paleta de la paleta usando un procedimiento de agrupación de valores de píxel.
[0202] Después de determinar la paleta, la unidad de codificación basada en paleta 122 determina valores de color para los píxeles del primer bloque 170 con respecto a la paleta (204). En caso de que la paleta incluya cero entradas de paleta, todos los píxeles dentro del primer bloque 170 se codifican como píxeles de escape que tienen valores de color que no están incluidos en la paleta, y la unidad de codificación basada en paleta 122 codifica los píxeles de escape en el flujo de bits codificado. En caso de que la paleta incluya una o más entradas de paleta, la unidad de codificación basada en paleta 122 codifica valores de índice para uno o más píxeles dentro del primer bloque 170 en el flujo de bits codificado, donde cada uno de los valores de índice corresponde a una de las entradas de paleta que indica un valor de color para uno de los píxeles dentro del primer bloque 170, y codifica valores de color para cualquiera de los píxeles dentro del primer bloque que se codifican como píxeles de escape.
[0203] El codificador de vídeo 20 puede señalizar la paleta y los valores de color para el primer bloque 170 del flujo de bits codificado a un descodificador de vídeo, tal como el descodificador de vídeo 30. El codificador de vídeo 20 reconstruye a continuación el primer bloque 170 de los datos de vídeo en base a la paleta determinada y los valores de color determinados para el primer bloque 170 en un bucle de descodificación (206). El codificador de vídeo 20 puede entonces almacenar los datos de vídeo del primer bloque reconstruido 170 en la memoria intermedia de imágenes descodificadas 116.
[0204] De acuerdo con las técnicas divulgadas, basándose en que el primer bloque 170 sea un bloque codificado por paleta, la unidad de codificación basada en paleta 122 inhabilita el filtrado de reducción del efecto bloque para los primeros píxeles dentro del primer bloque reconstruido 170 en el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172 (208). De esta manera, no se puede aplicar filtrado de reducción del efecto bloque a los primeros píxeles en el primer bloque reconstruido 170 antes de almacenar el primer bloque reconstruido 170 en la memoria intermedia de imágenes descodificadas 116. Además, la unidad de codificación basada en paleta 122 determina si se aplica el filtrado de reducción del efecto bloque para segundos píxeles dentro del segundo bloque reconstruido 172 en el límite de bloque 174 formado entre el primer bloque reconstruido 170 y el segundo bloque reconstruido 172 (210). Esta determinación puede basarse, al menos en parte, en si el segundo bloque 172 es un bloque codificado por paleta, un bloque intercodificado o un bloque intracodificado, etc.
[0205] La FIG. 6 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo que determina un valor QP de paleta usado para cuantificar valores de píxeles de escape de un bloque codificado por paleta. La operación de ejemplo ilustrada en la FIG. 5 puede realizarse por cualquier codificador de vídeo 20 de la FIG. 2 o descodificador de vídeo 30 de la FIG. 3.
[0206] La operación de ejemplo de la FIG. 6 se describirá primero con respecto al descodificador de vídeo 30. El descodificador de vídeo 30 recibe un flujo de bits codificado desde un codificador de vídeo, tal como el codificador de vídeo 20. El flujo de bits codificado incluye representaciones de bloques codificados de datos de vídeo para al menos una imagen y uno o más elementos sintácticos asociados a los datos de vídeo. En algunos ejemplos, el descodificador de vídeo 30 puede recibir al menos un elemento sintáctico (por ejemplo, una bandera) en el flujo de bits que indica si cada bloque de datos de vídeo es o no un bloque codificado por paleta. En otros ejemplos, el descodificador de vídeo 30 puede recibir uno o más elementos sintácticos que indican un tipo de codificación usada para codificar cada bloque de datos de vídeo, por ejemplo, si cada bloque es un bloque codificado por paleta, un bloque intercodificado o un bloque intracodificado, etc.
[0207] Cuando un bloque actual que se va a descodificar es un bloque codificado por paleta, la unidad de descodificación basada en paleta 165 del descodificador de vídeo 30 determina una paleta para el bloque codificado por paleta, donde la paleta incluye cero o más entradas de paleta que indican uno o más valores de color respectivos (220). La unidad de descodificación basada en paleta 165 determina si al menos un píxel dentro del bloque codificado por paleta va a descodificarse como un píxel de escape que tiene un valor de color que no está incluido en la paleta (224). En algunos ejemplos, el descodificador de vídeo 30 puede recibir al menos un elemento sintáctico (por ejemplo, una bandera) a nivel de CU en el flujo de bits que indica si el bloque codificado por paleta incluye al menos un píxel de escape. En otros ejemplos, el descodificador de vídeo 30 puede recibir un elemento sintáctico (por ejemplo, una bandera) para cada píxel dentro del bloque codificado por paleta que indica si el píxel debe descodificarse en base a la paleta o como un píxel de escape.
[0208] En algunos ejemplos, el descodificador de vídeo 30 también puede recibir un elemento sintáctico en el flujo de bits que indica un valor QP a nivel de fragmento. El valor QP a nivel de fragmento es el valor QP que se usa para cuantificar bloques dentro de un fragmento en la versión 1 de HEVC. En cuanto a bloques no codificados por paleta, el valor QP a nivel de fragmento se puede ajustar en base a un valor QP delta, que se puede señalizar una vez para cada CU o una vez para cada grupo de cuantificación que incluye múltiples CU. El QP delta puede señalizarse para un bloque dado no codificado por paleta en caso de que el bloque no codificado por paleta incluya al menos un coeficiente distinto de cero. Convencionalmente, el modo de codificación basado en paleta no incluye un mecanismo para ajustar el valor QP a nivel de fragmento para cada CU o cada grupo de cuantificación, de modo que el descodificador de vídeo 30 debe funcionar con un QP constante para cuantificar de manera inversa los valores de píxeles de escape de los bloques codificados por paleta.
[0209] De acuerdo con las técnicas de esta divulgación, basándose en que el al menos un píxel dentro del bloque codificado por paleta se descodifica como un píxel de escape, el descodificador de vídeo 30 determina un valor QP de paleta para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho (226). El bloque codificado por paleta puede incluirse en un grupo de cuantificación actual, que puede incluir otro u otros bloques que incluyen otros bloques codificados por paleta y bloques no codificados por paleta. En algunos ejemplos, el valor QP predicho que se ajusta para determinar el valor QP de paleta puede ser el valor QP a nivel de fragmento. En otros ejemplos, el valor QP predicho que se ajusta para determinar el valor QP de paleta puede ser un valor QP asociado a un bloque incluido en un grupo de cuantificación anterior. Aunque se describe principalmente en esta divulgación como un solo valor QP de paleta, el valor QP de paleta puede incluir un valor QP de paleta de luminancia y al menos un valor QP de paleta de crominancia. Por ejemplo, el valor QP de paleta puede incluir un valor QPy de paleta , un valor QPCb de paleta y un valor QPCr de paleta.
[0210] En un ejemplo, basándose en que el al menos un píxel dentro del bloque codificado por paleta se descodifica como un píxel de escape, el descodificador de vídeo 30 puede determinar un valor QP delta para el grupo de cuantificación actual que incluye el bloque codificado por paleta, y ajustar el valor QP predicho basándose en el valor QP delta para determinar el valor QP de paleta para el bloque codificado por paleta.
[0211] En algunos casos, basándose en que el al menos un píxel dentro del bloque codificado por paleta se descodifica como un píxel de escape y en caso de que no se haya determinado previamente un valor QP delta para un bloque incluido en el grupo de cuantificación actual que también incluye el bloque codificado por paleta, el descodificador de vídeo 30 puede recibir un elemento sintáctico que indica un valor QP delta de paleta para el bloque codificado por paleta, y ajustar el valor QP predicho basándose en el valor QP delta de paleta para determinar el valor QP de paleta para el bloque codificado por paleta. En otros casos, basándose en que el al menos un píxel dentro del bloque codificado por paleta se descodifica como un píxel de escape y en caso de que se haya determinado previamente un valor QP delta para un bloque incluido en el grupo de cuantificación actual, el descodificador de vídeo 30 puede ajustar el valor QP predicho basándose en el valor QP delta determinado previamente para determinar el valor QP de paleta para el bloque codificado por paleta sin recibir un valor QP delta para el bloque codificado por paleta.
[0212] En algunos ejemplos, el descodificador de vídeo 30 puede recibir el elemento sintáctico que indica el valor QP delta de paleta para el bloque codificado por paleta solo si valores QP delta están habilitados para bloques codificados por paleta. Por ejemplo, el descodificador de vídeo 30 puede recibir un elemento sintáctico en uno de entre un SPS, VPS, PPS o cabecera de fragmento que indica si valores QP delta se señalizan a nivel de CU para bloques codificados por paleta.
[0213] Los ejemplos anteriores se puede usar para determinar un valor QP de paleta de luminancia usado para cuantificar píxeles de luminancia que están descodificados como píxeles de escape. Además, basándose en que el al menos un píxel dentro del bloque codificado por paleta se descodifica como un píxel de escape, el descodificador de vídeo 30 puede determinar un valor de desplazamiento QP de crominancia para el grupo de cuantificación actual que incluye el bloque codificado por paleta, y ajustar el valor QP de paleta de luminancia determinado para el bloque codificado por paleta en base al valor de desplazamiento QP de crominancia para determinar un valor QP de paleta de crominancia para el bloque codificado por paleta.
[0214] En algunos casos, basándose en que el al menos un píxel dentro del bloque codificado por paleta se descodifica como un píxel de escape y en caso de que no se haya determinado previamente un valor de desplazamiento QP de crominancia para un bloque incluido en el grupo de cuantificación actual que también incluye el bloque codificado por paleta, el descodificador de vídeo 30 puede recibir un elemento sintáctico que indica un valor de desplazamiento QP de crominancia de paleta para el bloque codificado por paleta, y ajustar el valor QP de paleta de luminancia basándose en el valor de desplazamiento QP de crominancia de paleta para determinar el valor QP de paleta de crominancia para el bloque codificado por paleta. En otros casos, basándose en que el al menos un píxel dentro del bloque codificado por paleta se descodifica como un píxel de escape y en caso de que se haya determinado previamente un valor de desplazamiento QP de crominancia para un bloque incluido en el grupo de cuantificación actual, el descodificador de vídeo 30 puede ajustar el valor QP de paleta de luminancia basándose en el valor de desplazamiento QP de crominancia determinado previamente para determinar el valor QP de paleta de crominancia para el bloque codificado por paleta sin recibir un valor de desplazamiento QP de crominancia para el bloque codificado por paleta.
[0215] En algunos ejemplos, el descodificador de vídeo 30 puede recibir el elemento sintáctico que indica el valor de desplazamiento QP de crominancia de paleta para el bloque codificado por paleta solo si los valores de desplazamiento QP de crominancia están habilitados para bloques codificados por paleta. Por ejemplo, el descodificador de vídeo 30 puede recibir un elemento sintáctico en uno de entre un SPS, VPS, PPS o cabecera de fragmento que indica si valores de desplazamiento QP de crominancia se señalizan a nivel de CU para bloques codificados por paleta.
[0216] Como otro ejemplo, para determinar el valor QP de paleta para el bloque codificado por paleta, el descodificador de vídeo 30 puede estar configurado para determinar si el bloque codificado por paleta es un primer bloque en el grupo de cuantificación actual o si algún bloque anterior no codificado por paleta del grupo de cuantificación actual incluye coeficientes distintos de cero. Basándose en que el bloque codificado por paleta es el primer bloque en el grupo de cuantificación actual o ninguno de los bloques anteriores no codificados por paleta en el grupo de cuantificación actual incluye coeficientes distintos de cero, el descodificador de vídeo 30 puede determinar el valor QP de paleta, incluidos valores QP de luminancia y crominancia, ajustado a partir del valor QP predicho. De forma alternativa, basándose en que el bloque codificado por paleta no sea el primer bloque en el grupo de cuantificación actual y en que al menos uno de los bloques no codificados por paleta anteriores en el grupo de cuantificación actual incluya coeficientes distintos de cero, el descodificador de vídeo 30 puede determinar que el valor QP de paleta es igual a un valor QP de grupo de cuantificación, incluidos los valores QP de luminancia y crominancia, previamente determinados para el al menos uno bloque no codificados por paleta anterior en el grupo de cuantificación actual.
[0217] Además, basándose en que el al menos un píxel dentro del bloque codificado de paleta se descodifica como un píxel de escape y tras determinar el valor QP de paleta para el bloque codificado por paleta, el descodificador de vídeo 30 determina el valor de color para el píxel de escape que no está incluido en el paleta y cuantifica el valor de color para el píxel de escape de acuerdo con el valor QP de paleta (228). Más específicamente, el descodificador de vídeo 30 descodifica del flujo de bits recibido un valor de color cuantificado para el píxel de escape, y cuantifica inversamente el valor de color para el píxel de escape de acuerdo con el valor QP de la paleta.
[0218] El descodificador de vídeo 30 reconstruye a continuación el bloque codificado por paleta de los datos de vídeo basándose en la paleta determinada, los valores de índice determinados y los valores de color cuantificados de manera inversa de píxeles de escape para el bloque codificado por paleta. Por ejemplo, el descodificador de vídeo 30 puede correlacionar los valores de índice determinados con entradas de la paleta para reconstruir los valores de píxel del bloque codificado por paleta. El descodificador de vídeo 30 puede entonces almacenar los datos de vídeo del bloque codificado por paleta reconstruido en la memoria intermedia de imágenes descodificadas 162 y posteriormente proporcionar los datos de vídeo del bloque codificado por paleta reconstruido para su visualización.
[0219] La operación de ejemplo de la FIG. 6 se describirá a continuación con respecto al codificador de vídeo 20. El codificador de vídeo 20 puede señalizar al menos un elemento sintáctico (por ejemplo, una bandera) en un flujo de bits codificado que indica si cada bloque de datos de vídeo es o no un bloque codificado por paleta. En otros ejemplos, el codificador de vídeo 20 puede señalizar uno o más elementos sintácticos del flujo de bits codificado que indican un tipo de codificación usada para codificar cada bloque de datos de vídeo, por ejemplo, si cada bloque es un bloque codificado por paleta, un bloque intercodificado o un bloque intracodificado, etc.
[0220] Cuando un bloque actual que se va a codificar es un bloque codificado por paleta, la unidad de codificación basada en paleta 122 del codificador de vídeo 20 determina una paleta para el bloque codificado por paleta, donde la paleta incluye cero o más entradas de paleta que indican uno o más valores de color respectivos (220). La unidad de codificación basada en paleta 122 determina si al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape que tiene un valor de color que no está incluido en la paleta (224). En algunos ejemplos, el codificador de vídeo 20 puede señalizar al menos un elemento sintáctico (por ejemplo, una bandera) a nivel de CU en el flujo de bits que indica si el bloque codificado por paleta incluye al menos un píxel de escape. En otros ejemplos, el codificador de vídeo 20 puede señalizar un elemento sintáctico (por ejemplo, una bandera) para cada píxel dentro del bloque codificado por paleta que indica si el píxel se codifica en base a la paleta o como un píxel de escape. En algunos ejemplos, el codificador de vídeo 20 también puede señalizar un elemento sintáctico en el flujo de bits que indica un valor QP a nivel de fragmento.
[0221] De acuerdo con las técnicas de esta divulgación, basándose en que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, el codificador de vídeo 20 determina un valor QP de paleta para el bloque codificado por paleta, donde el valor QP de paleta se ajusta a partir de un valor QP predicho (226). El bloque codificado por paleta puede incluirse en un grupo de cuantificación actual, que puede incluir otro u otros bloques que incluyen otros bloques codificados por paleta y bloques no codificados por paleta. El valor QP predicho que se ajusta para determinar el valor QP de paleta puede ser el valor QP a nivel de fragmento o un valor QP que está asociado a un bloque incluido en un grupo de cuantificación anterior. El valor QP de paleta puede incluir un valor QP de paleta de luminancia y al menos un valor QP de paleta de crominancia.
[0222] En un ejemplo, basándose en que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape, el codificador de vídeo 20 puede determinar un valor QP delta para el grupo de cuantificación actual que incluye el bloque codificado por paleta y ajustar el valor QP predicho basándose en el valor QP delta para determinar el valor QP de paleta para el bloque codificado por paleta.
[0223] En un ejemplo, basándose en que el al menos un píxel dentro del bloque codificado por paleta esté codificado como un píxel de escape y en caso de que no se haya determinado previamente un valor QP delta para un bloque incluido en el grupo de cuantificación actual que también incluye el bloque codificado por paleta, el codificador de vídeo 20 puede determinar el valor QP de paleta para el bloque codificado por paleta, determinar un valor QP delta de paleta como una diferencia entre el valor QP de paleta y el valor QP predicho, y señalizar un elemento sintáctico que indica el valor QP delta de paleta para el bloque codificado por paleta. En otros casos, basándose en que el al menos un píxel dentro del bloque codificado por paleta se codifica como un píxel de escape y en caso de que se haya determinado previamente un valor QP delta para un bloque incluido en el grupo de cuantificación actual, el codificador de vídeo 20 puede ajustar el valor QP predicho basándose en el valor QP delta determinado previamente para determinar el valor QP de paleta para el bloque codificado por paleta sin señalizar un valor QP delta para el bloque codificado por paleta.
[0224] En otro ejemplo, para determinar el valor QP de paleta para el bloque codificado por paleta, el codificador de vídeo 20 puede estar configurado para determinar si el bloque codificado por paleta es un primer bloque en el grupo de cuantificación actual o si algún bloque anterior no codificado por paleta del grupo de cuantificación actual incluye coeficientes distintos de cero. Basándose en que el bloque codificado por paleta es el primer bloque en el grupo de cuantificación actual o ninguno de los bloques anteriores no codificados por paleta en el grupo de cuantificación actual incluye coeficientes distintos de cero, el codificador de vídeo 20 puede determinar el valor QP de paleta, incluidos valores QP de luminancia y crominancia, ajustado a partir del valor QP predicho. De forma alternativa, basándose en que el bloque codificado por paleta no sea el primer bloque en el grupo de cuantificación actual y en que al menos uno de los bloques no codificados por paleta anteriores en el grupo de cuantificación actual incluya coeficientes distintos de cero, el codificador de vídeo 20 puede determinar que el valor QP de paleta es igual a un valor QP de grupo de cuantificación, incluidos los valores QP de luminancia y crominancia, previamente determinados para el al menos uno bloque no codificados por paleta anterior en el grupo de cuantificación actual.
[0225] Basándose en que el al menos un píxel dentro del bloque codificado de paleta se codifica como un píxel de escape y tras determinar el valor QP de paleta para el bloque codificado por paleta, el codificador de vídeo 20 determina el valor de color para el píxel de escape que no está incluido en el paleta y cuantifica el valor de color para el píxel de escape de acuerdo con el valor QP de paleta (228). Más específicamente, el codificador de vídeo 20 cuantifica el valor de color para el píxel de escape de acuerdo con el valor QP de paleta, y codifica en el flujo de bits el valor de color cuantificado para el píxel de escape.
[0226] El codificador de vídeo 20 reconstruye a continuación el bloque codificado por paleta de los datos de vídeo basándose en la paleta determinada, los valores de índice determinados y los valores de color cuantificados de manera inversa de píxeles de escape para el bloque codificado por paleta en un bucle de descodificación. Por ejemplo, el codificador de vídeo 20 puede correlacionar los valores de índice determinados con entradas de la paleta para reconstruir los valores de píxel del bloque codificado por paleta. El codificador de vídeo 20 puede entonces almacenar los datos de vídeo del bloque reconstruido codificado por paleta en la memoria intermedia de imágenes descodificadas 116.
[0227] 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 eventos descritos son necesarios para la puesta en práctica de las técnicas). Por otro lado, en determinados ejemplos, las acciones o eventos pueden tener lugar simultáneamente, por ejemplo, a través de procesamiento de múltiples subprocesos, procesamiento de 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 esta divulgación, se debería entender que una combinación de unidades o módulos asociados a un codificador de vídeo pueden realizar las técnicas de esta divulgación.
[0228] Con propósitos ilustrativos, determinados aspectos de esta divulgación se han descrito con respecto a la versión 1 de HEVC, HEVC SCC WD 1.0 y WD2.0. Sin embargo, las técnicas descritas en esta 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 propietarios, aún no desarrollados.
[0229] El codificador de vídeo 20 (FIGS. 1 y 2) y/o el descodificador de vídeo 30 (FIGS. 1 y 3), los cuales se pueden denominar en general codificadores de vídeo, pueden realizar las técnicas descritas anteriormente. Del mismo modo, la codificación de vídeo se puede referir a una codificación de vídeo o una descodificación de vídeo, según corresponda.
[0230] 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 esta divulgación. En consecuencia, las técnicas de esta divulgación no se deben limitar a estos ejemplos de combinaciones, sino que pueden abarcar cualquier combinación concebible de los diversos aspectos de las técnicas descritas en esta divulgación.
[0231] En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en o transmitir por un medio legible por ordenador como una o más instrucciones o código, y ejecutarse 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 medios de almacenamiento de datos, o medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático desde 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) medios de almacenamiento tangibles y legibles por ordenador que sean no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder mediante 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 esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0232] 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 de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse 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 otro origen remoto usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o 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 se incluyen en la definición de medio. Sin embargo, debe entenderse 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 cambio, se orientan a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye el disco compacto (CD), el disco láser, el disco óptico, el disco versátil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos reproducen normalmente datos de manera magnética, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior se deben incluir también dentro del alcance de los medios legibles por ordenador.
[0233] Las instrucciones pueden ser ejecutadas por 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), formaciones lógicas programables in situ (FPGA) u otros circuitos lógicos equivalentes, integrados o discretos. En consecuencia, 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 software dedicados, configurados para la codificación y la descodificación, o incorporarse en un códec combinado. Además, las técnicas se pueden implementar totalmente en uno o más circuitos o elementos lógicos.
[0234] Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un equipo manual inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionarse mediante un grupo de unidades de hardware interoperativas, incluidos uno o más procesadores, como se describe anteriormente, junto con software y/o firmware adecuados.
[0235] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (10)

REIVINDICACIONES
1. Un procedimiento de descodificación de datos de vídeo, comprendiendo el procedimiento:
determinar (220) una paleta para un bloque codificado por paleta que incluye una o más entradas de paleta que indican uno o más valores de color respectivos;
descodificar (224) un primer elemento sintáctico de un flujo de bits recibido, siendo el primer elemento sintáctico una bandera de nivel de bloque que indica: i) que al menos un píxel dentro del bloque codificado por paleta se va a descodificar como un píxel de escape que tiene un valor de color que no está incluido en la paleta, o ii) que ninguno de los píxeles dentro del bloque codificado por paleta va a descodificarse como píxeles de escape; y
en base a que el primer elemento sintáctico que indica que al menos un píxel dentro del bloque codificado por paleta va a descodificarse como un píxel de escape:
descodificar (226) un segundo elemento sintáctico del flujo de bits recibido que indica un valor de parámetro de cuantificación, QP, delta de paleta para el bloque codificado por paleta,
ajustar un valor QP predicho en base al valor QP delta de paleta para determinar el valor QP de paleta para el bloque codificado por paleta,
descodificar (228) del flujo de bits recibido un valor de color cuantificado para un píxel de escape, y cuantificar de manera inversa el valor de color para el píxel de escape de acuerdo con el valor QP de paleta.
2. Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:
determinar (220) una paleta para un bloque codificado por paleta que incluye una o más entradas de paleta que indican uno o más valores de color respectivos;
determinar (224) si al menos un píxel dentro del bloque codificado por paleta va a codificarse como un píxel de escape que tiene un valor de color que no está incluido en la paleta;
codificar un primer elemento sintáctico en un flujo de bits, donde el primer elemento sintáctico es una bandera de nivel de bloque que indica: i) que al menos un píxel dentro del bloque codificado por paleta va a codificarse como un píxel de escape, o ii) que ninguno de los píxeles dentro del bloque codificado por paleta va a descodificarse como píxeles de escape;
en base a que el bloque de paleta codificado incluye al menos un píxel que va a codificarse como un píxel de escape:
determinar (226) un valor de parámetro de cuantificación, QP, de paleta para el bloque codificado por paleta, determinar un valor QP delta de paleta como una diferencia entre el valor QP de paleta y un valor QP predicho,
codificar un segundo elemento sintáctico en el flujo de bits que indica el valor QP delta de paleta para el bloque codificado por paleta,
cuantificar el valor de color para el píxel de escape de acuerdo con el valor QP de paleta, y codificar (228) en el flujo de bits el valor de color cuantificado para el píxel de escape.
3. El procedimiento según la reivindicación 1 o la reivindicación 2, en el que el valor QP de paleta comprende un valor QP de paleta de luminancia y al menos un valor QP de paleta de crominancia.
4. El procedimiento según la reivindicación 1 o la reivindicación 2, en el que el valor QP predicho comprende uno de un valor QP a nivel de fragmento o un valor QP asociado a un bloque incluido en un grupo de cuantificación anterior.
5. Un dispositivo de codificación de vídeo, que comprende:
una memoria configurada para almacenar datos de vídeo; y
uno o más procesadores en comunicación con la memoria y configurados para:
determinar (220) una paleta para un bloque codificado por paleta que incluye una o más entradas de paleta que indican uno o más valores de color respectivos;
descodificar (224) un primer elemento sintáctico de un flujo de bits recibido, siendo el primer elemento sintáctico una bandera de nivel de bloque que indica: i) que al menos un píxel dentro del bloque codificado por paleta se va a descodificar como un píxel de escape que tiene un valor de color que no está incluido en la paleta, o ii) que ninguno de los píxeles dentro del bloque codificado por paleta va a descodificarse como píxeles de escape; y
en respuesta a que el primer elemento sintáctico que indica que al menos un píxel dentro del bloque codificado por paleta va a descodificarse como un píxel de escape:
descodificar (226) un segundo elemento sintáctico del flujo de bits recibido que indica un valor de parámetro de cuantificación, QP, delta de paleta para el bloque codificado por paleta,
ajustar un valor QP predicho en base al valor QP delta de paleta para determinar el valor QP de paleta para el bloque codificado por paleta,
descodificar (228) del flujo de bits recibido un valor de color cuantificado para un píxel de escape, y cuantificar de manera inversa el valor de color para el píxel de escape de acuerdo con el valor QP de paleta.
6. Un dispositivo de codificación de vídeo, que comprende:
una memoria configurada para almacenar datos de vídeo; y
uno o más procesadores en comunicación con la memoria y configurados para:
determinar (220) una paleta para un bloque codificado por paleta que incluye una o más entradas de paleta que indican uno o más valores de color respectivos;
determinar (224) si al menos un píxel dentro del bloque codificado por paleta va a codificarse como un píxel de escape que tiene un valor de color que no está incluido en la paleta;
codificar un primer elemento sintáctico en un flujo de bits, donde el primer elemento sintáctico es una bandera de nivel de bloque que indica: i) que al menos un píxel dentro del bloque codificado por paleta va a codificarse como un píxel de escape, o ii) que ninguno de los píxeles dentro del bloque codificado por paleta va a descodificarse como píxeles de escape;
en respuesta a que el bloque de paleta codificado incluye al menos un píxel que va a codificarse como un píxel de escape:
determinar (226) un valor de parámetro de cuantificación, QP, de paleta para el bloque codificado por paleta,
determinar un valor QP delta de paleta como una diferencia entre el valor QP de paleta y un valor QP predicho,
codificar un segundo elemento sintáctico en el flujo de bits que indica el valor QP delta de paleta para el bloque codificado por paleta;
cuantificar el valor de color para un píxel de escape de acuerdo con el valor QP de paleta, y codificar (228) en el flujo de bits el valor de color cuantificado para el píxel de escape.
7. El dispositivo de procesamiento de vídeo según la reivindicación 5 o la reivindicación 6, en el que el valor QP de paleta comprende un valor QP de paleta de luminancia y al menos un valor QP de paleta de crominancia.
8. El dispositivo de procesamiento de vídeo según la reivindicación 5 o la reivindicación 6, en el que el valor QP predicho comprende uno de un valor QP a nivel de fragmento o un valor QP asociado a un bloque incluido en un grupo de cuantificación anterior.
9. El dispositivo de procesamiento de vídeo según la reivindicación 5 o la reivindicación 6, en el que el dispositivo comprende al menos uno de:
un circuito integrado;
un microprocesador; o
un dispositivo de comunicación inalámbrica.
10. Un medio no transitorio legible por ordenador que tiene instrucciones almacenadas en el mismo para el procesamiento de datos de vídeo que, al ejecutarse, hacen que uno o más procesadores realicen un procedimiento según cualquiera de las reivindicaciones 1 a 4.
ES15741626T 2014-06-11 2015-06-11 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 Active ES2767103T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462010979P 2014-06-11 2014-06-11
US201462066851P 2014-10-21 2014-10-21
US201462066797P 2014-10-21 2014-10-21
US14/736,111 US10136141B2 (en) 2014-06-11 2015-06-10 Determining quantization parameter (QP) values and delta QP values for palette coded blocks in video coding
PCT/US2015/035301 WO2015191838A1 (en) 2014-06-11 2015-06-11 Determining quantization parameter (qp) values and delta qp values for palette coded blocks in video coding

Publications (1)

Publication Number Publication Date
ES2767103T3 true ES2767103T3 (es) 2020-06-16

Family

ID=53719905

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15741626T Active ES2767103T3 (es) 2014-06-11 2015-06-11 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

Country Status (10)

Country Link
US (1) US10136141B2 (es)
EP (1) EP3155815B1 (es)
JP (1) JP6542268B2 (es)
KR (1) KR102384090B1 (es)
CN (1) CN106416249B (es)
BR (1) BR112016028722A2 (es)
CA (1) CA2950168C (es)
ES (1) ES2767103T3 (es)
HU (1) HUE046926T2 (es)
WO (1) WO2015191838A1 (es)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105659606B (zh) 2013-10-14 2019-06-18 微软技术许可有限责任公司 用于视频和图像编码和解码的方法、系统和介质
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US9924175B2 (en) 2014-06-11 2018-03-20 Qualcomm Incorporated Determining application of deblocking filtering to palette coded blocks in video coding
JP2017535145A (ja) 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則
JP6532222B2 (ja) * 2014-11-28 2019-06-19 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
WO2016197314A1 (en) * 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
GB2539486B (en) * 2015-06-18 2019-07-31 Gurulogic Microsystems Oy Encoder, decoder and method employing palette compression
WO2017203930A1 (en) * 2016-05-27 2017-11-30 Sharp Kabushiki Kaisha Systems and methods for varying quantization parameters
US10448056B2 (en) * 2016-07-15 2019-10-15 Qualcomm Incorporated Signaling of quantization information in non-quadtree-only partitioned video coding
JP2018107534A (ja) * 2016-12-22 2018-07-05 富士通株式会社 映像符号化装置、映像符号化方法、映像復号装置、及び映像復号方法
CN110249630B (zh) 2017-03-23 2020-11-27 华为技术有限公司 去块效应滤波装置、方法和存储介质
US11070818B2 (en) * 2017-07-05 2021-07-20 Telefonaktiebolaget Lm Ericsson (Publ) Decoding a block of video samples
US10701402B2 (en) * 2017-10-02 2020-06-30 Arris Enterprises Llc System and method for reducing blocking artifacts and providing improved coding efficiency
KR102450359B1 (ko) 2018-01-02 2022-10-04 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
CN111919446B (zh) 2018-04-02 2022-10-28 夏普株式会社 解码视频图片中的当前视频块的方法
JP7278719B2 (ja) * 2018-06-27 2023-05-22 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
CN118175342A (zh) * 2018-09-05 2024-06-11 华为技术有限公司 视频解码方法及视频解码器
KR20210089654A (ko) * 2018-10-01 2021-07-16 오피 솔루션즈, 엘엘씨 지수 파티셔닝의 방법들 및 시스템들
US10951895B2 (en) * 2018-12-31 2021-03-16 Alibaba Group Holding Limited Context model selection based on coding unit characteristics
CN117676169A (zh) * 2019-01-02 2024-03-08 Lg 电子株式会社 使用去块滤波的图像编译方法和装置
US11019359B2 (en) 2019-01-15 2021-05-25 Tencent America LLC Chroma deblock filters for intra picture block compensation
CN113475062A (zh) 2019-02-24 2021-10-01 北京字节跳动网络技术有限公司 确定屏幕内容编解码的条件
US10924750B2 (en) * 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
US11503311B2 (en) 2019-03-08 2022-11-15 Sony Group Corporation Hybrid palette-DPCM coding for image compression
WO2020182113A1 (en) * 2019-03-10 2020-09-17 Beijing Bytedance Network Technology Co., Ltd. Combined screen content coding mode
KR20210147063A (ko) * 2019-04-26 2021-12-06 후아웨이 테크놀러지 컴퍼니 리미티드 크로마 양자화 파라미터의 매핑 함수의 시그널링을 위한 방법 및 장치
US11109041B2 (en) * 2019-05-16 2021-08-31 Tencent America LLC Method and apparatus for video coding
US11616962B2 (en) * 2019-07-15 2023-03-28 Tencent America LLC Method and apparatus for video coding
CN114175662B (zh) * 2019-07-20 2023-11-24 北京字节跳动网络技术有限公司 调色板模式使用指示的条件相关编解码
CN117221536A (zh) 2019-07-23 2023-12-12 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
JP2022543009A (ja) * 2019-07-29 2022-10-07 北京字節跳動網絡技術有限公司 予測処理におけるパレットモードの符号化
CN114930822A (zh) 2019-08-15 2022-08-19 字节跳动有限公司 用于调色板逸出符号的熵编解码
WO2021030786A1 (en) 2019-08-15 2021-02-18 Bytedance Inc. Palette mode with different partition structures
CN116684582A (zh) * 2019-08-26 2023-09-01 Lg电子株式会社 解码设备、编码设备和数据发送设备
CN116684634A (zh) * 2019-08-26 2023-09-01 Lg电子株式会社 编码设备、解码设备和比特流发送设备
EP4014497A4 (en) 2019-09-14 2022-11-30 ByteDance Inc. QUANTIZE PARAMETER FOR CHROMINANCE UNBLOCKING FILTERING
US11388443B2 (en) * 2019-09-18 2022-07-12 Qualcomm Incorporated Harmonization of deblocking conditions in video coding
CN114424545A (zh) * 2019-09-19 2022-04-29 字节跳动有限公司 用于调色板模式的量化参数推导
WO2021061021A1 (en) * 2019-09-23 2021-04-01 Huawei Technologies Co., Ltd. Method and apparatus for chrominance qp offsets tables signaling and derivation
CN114827605A (zh) * 2019-09-23 2022-07-29 北京达佳互联信息技术有限公司 用于视频解码的方法和计算设备
WO2021072177A1 (en) 2019-10-09 2021-04-15 Bytedance Inc. Cross-component adaptive loop filtering in video coding
CN114586370B (zh) 2019-10-14 2024-01-23 字节跳动有限公司 在视频编解码中使用色度量化参数的方法、装置及介质
KR20220071268A (ko) * 2019-11-05 2022-05-31 엘지전자 주식회사 팔레트 코딩 또는 변환 유닛을 위한 양자화 파라미터 정보 기반 영상 또는 비디오 코딩
WO2021091261A1 (ko) * 2019-11-05 2021-05-14 엘지전자 주식회사 양자화 관련 정보 기반 영상 또는 비디오 코딩
WO2021091260A1 (ko) * 2019-11-05 2021-05-14 엘지전자 주식회사 크로마 양자화 파라미터 오프셋 정보 기반 영상 또는 비디오 코딩
WO2021091214A1 (ko) * 2019-11-05 2021-05-14 엘지전자 주식회사 크로마 양자화 파라미터 오프셋 관련 정보를 코딩하는 영상 디코딩 방법 및 그 장치
US11973947B2 (en) 2019-11-05 2024-04-30 Lg Electronics Inc. Image or video coding based on signaling of quantization parameter offset-related information
WO2021091263A1 (ko) * 2019-11-05 2021-05-14 엘지전자 주식회사 양자화 파라미터 관련 정보의 시그널링 기반 영상 또는 비디오 코딩
WO2021118977A1 (en) 2019-12-09 2021-06-17 Bytedance Inc. Using quantization groups in video coding
CN114902657A (zh) 2019-12-31 2022-08-12 字节跳动有限公司 视频编解码中的自适应颜色变换
US11516514B2 (en) * 2020-03-27 2022-11-29 Tencent America LLC High level control for deblocking operations
JP2023520141A (ja) * 2020-03-31 2023-05-16 アリババ グループ ホウルディング リミテッド パレット予測のための方法
WO2023195330A1 (ja) * 2022-04-08 2023-10-12 ソニーグループ株式会社 画像処理装置および方法
CN116489373A (zh) * 2022-07-26 2023-07-25 杭州海康威视数字技术股份有限公司 一种图像解码方法、编码方法及装置

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0160610B1 (ko) * 1992-04-07 1999-01-15 강진구 가변장부호화에 의한 영상압축방법과 신장방법 및 그 장치
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US6937759B2 (en) * 2002-02-28 2005-08-30 Nokia Corporation Method and device for reducing image by palette modification
US6987807B2 (en) * 2002-04-19 2006-01-17 Seiko Epson Corporation Frame compression using differential codes and an escape code
EP2461293A1 (en) * 2005-09-23 2012-06-06 Slipstream Data Inc. Method, system and computer program product for providing entropy constrained color splitting for palette images with color-wise splitting
WO2008005102A2 (en) 2006-05-13 2008-01-10 Sap Ag Consistent set of interfaces derived from a business object model
AU2007249117B2 (en) * 2007-12-19 2010-11-18 Canon Kabushiki Kaisha Variable-length encoding for image data compression
CN102067603B (zh) 2008-06-20 2012-11-14 杜比实验室特许公司 在多个失真约束下的视频压缩
WO2010017166A2 (en) 2008-08-04 2010-02-11 Dolby Laboratories Licensing Corporation Overlapped block disparity estimation and compensation architecture
WO2010022002A1 (en) 2008-08-19 2010-02-25 Marvell World Trade Ltd Systems and methods for perceptually lossless video compression
KR101813189B1 (ko) * 2010-04-16 2018-01-31 에스케이 텔레콤주식회사 영상 부호화/복호화 장치 및 방법
JP5924823B2 (ja) * 2010-06-10 2016-05-25 トムソン ライセンシングThomson Licensing 複数の隣接する量子化パラメータから量子化パラメータ予測子を決定する方法及び装置
WO2012035691A1 (ja) * 2010-09-13 2012-03-22 株式会社ソニー・コンピュータエンタテインメント 画像処理装置、画像処理方法、動画像ファイルのデータ構造、データ圧縮装置、データ復号装置、データ圧縮方法、データ復号方法、および圧縮動画像ファイルのデータ構造
US8786625B2 (en) * 2010-09-30 2014-07-22 Apple Inc. System and method for processing image data using an image signal processor having back-end processing logic
US8787443B2 (en) 2010-10-05 2014-07-22 Microsoft Corporation Content adaptive deblocking during video encoding and decoding
US20120114034A1 (en) * 2010-11-08 2012-05-10 Mediatek Inc. Method and Apparatus of Delta Quantization Parameter Processing for High Efficiency Video Coding
WO2012103149A2 (en) * 2011-01-28 2012-08-02 Eye IO, LLC Color conversion based on an hvs model
JP5924700B2 (ja) 2011-03-01 2016-05-25 テレフオンアクチーボラゲット エルエム エリクソン(パブル) デブロッキング・フィルタリング制御
WO2013109773A1 (en) 2012-01-17 2013-07-25 Futurewei Technologies, Inc. In-loop filtering for lossless coding mode in high efficiency video coding
US9596461B2 (en) 2012-11-26 2017-03-14 Qualcomm Incorporated Loop filtering across constrained intra block boundaries in video coding
WO2015090217A1 (en) 2013-12-18 2015-06-25 Mediatek Inc. Method and apparatus for palette table prediction
WO2015090219A1 (en) 2013-12-18 2015-06-25 Mediatek Inc. Method and apparatus for palette initialization and management
EP3087742B1 (en) 2013-12-27 2020-09-23 HFI Innovation Inc. Method and apparatus for syntax redundancy removal in palette coding
WO2015096812A1 (en) 2013-12-27 2015-07-02 Mediatek Inc. Method and apparatus for palette coding with cross block prediction
WO2015096647A1 (en) 2013-12-27 2015-07-02 Mediatek Inc. Method and apparatus for major color index map coding
EP3090559A2 (en) * 2014-01-02 2016-11-09 VID SCALE, Inc. Two-dimensional palette coding for screen content coding
CN105981385B (zh) 2014-01-02 2020-03-13 寰发股份有限公司 帧内预测编码方法及其装置
US10484696B2 (en) 2014-01-07 2019-11-19 Mediatek Inc. Method and apparatus for color index prediction
KR102401946B1 (ko) * 2014-03-04 2022-05-24 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑
EP3114838B1 (en) * 2014-03-04 2018-02-07 Microsoft Technology Licensing, LLC Hash table construction and availability checking for hash-based block matching
EP3114841B1 (en) * 2014-03-04 2020-06-10 Microsoft Technology Licensing, LLC Encoder-side decisions for block flipping and skip mode in intra block copy prediction
JP6164360B2 (ja) 2014-03-14 2017-07-19 富士通株式会社 画像符号化装置、画像復号装置、画像符号化方法、及び画像復号方法
KR102494913B1 (ko) * 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
CN106105229B (zh) 2014-03-14 2019-03-15 寰发股份有限公司 使用调色板编码来编码视频数据的块的方法及装置
CA2942903A1 (en) 2014-03-16 2015-09-24 Vid Scale, Inc. Method and apparatus for the signaling of lossless video coding
US9654806B2 (en) 2014-03-26 2017-05-16 Qualcomm Incorporated Determining palette size, palette entries and filtering of palette coded blocks in video coding
EP3138293A4 (en) * 2014-04-29 2017-05-24 Microsoft Technology Licensing, LLC Encoder-side decisions for sample adaptive offset filtering
US10038915B2 (en) 2014-05-22 2018-07-31 Qualcomm Incorporated Escape sample coding in palette-based video coding
CA2948683C (en) 2014-05-23 2019-05-21 Hfi Innovation Inc. Methods for palette size signaling and conditional palette escape flag signaling
US10091512B2 (en) * 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US9924175B2 (en) 2014-06-11 2018-03-20 Qualcomm Incorporated Determining application of deblocking filtering to palette coded blocks in video coding
CN105282550A (zh) * 2014-06-13 2016-01-27 财团法人工业技术研究院 编码方法与解码方法、编解码系统、编码器与解码器
CN105323583B (zh) * 2014-06-13 2019-11-15 财团法人工业技术研究院 编码方法、解码方法、编解码系统、编码器与解码器
KR102311815B1 (ko) * 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
US10237557B2 (en) 2014-06-20 2019-03-19 Hfi Innovation Inc. Method of run-length coding for palette predictor
WO2015194187A1 (en) * 2014-06-20 2015-12-23 Sharp Kabushiki Kaisha Harmonized palette coding
US20150381994A1 (en) * 2014-06-27 2015-12-31 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US9807410B2 (en) * 2014-07-02 2017-10-31 Apple Inc. Late-stage mode conversions in pipelined video encoders
US9544607B2 (en) * 2014-08-25 2017-01-10 Hfi Innovation Inc. Method of palette index signaling for image and video coding
US10448049B2 (en) * 2014-09-03 2019-10-15 Mediatek Inc. Method for color index coding using a generalized copy previous mode
JP2017535145A (ja) * 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則
CN105491379A (zh) * 2014-10-01 2016-04-13 财团法人工业技术研究院 解码器、编码器、解码方法、编码方法与编解码系统
US9807402B2 (en) * 2014-10-06 2017-10-31 Industrial Technology Research Institute Method of color palette coding applicable to electronic device and electronic device using the same
KR102109154B1 (ko) * 2014-10-06 2020-05-12 브이아이디 스케일, 인크. 화면 콘텐츠 코딩에 대한 개선된 팔레트 코딩
US10687069B2 (en) * 2014-10-08 2020-06-16 Microsoft Technology Licensing, Llc Adjustments to encoding and decoding when switching color spaces
GB2542858A (en) * 2015-10-02 2017-04-05 Canon Kk Encoder optimizations for palette encoding of content with subsampled colour component
GB2547047B (en) * 2016-02-08 2018-07-18 Canon Kk Encoder optimizations for palette lossless encoding of content with subsampled colour component

Also Published As

Publication number Publication date
CA2950168C (en) 2023-08-29
KR20170016856A (ko) 2017-02-14
BR112016028722A2 (pt) 2017-08-22
HUE046926T2 (hu) 2020-03-30
CA2950168A1 (en) 2015-12-17
US20150365671A1 (en) 2015-12-17
KR102384090B1 (ko) 2022-04-06
JP6542268B2 (ja) 2019-07-10
EP3155815B1 (en) 2019-10-16
US10136141B2 (en) 2018-11-20
EP3155815A1 (en) 2017-04-19
CN106416249A (zh) 2017-02-15
JP2017521920A (ja) 2017-08-03
WO2015191838A1 (en) 2015-12-17
CN106416249B (zh) 2019-08-30

Similar Documents

Publication Publication Date Title
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
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
ES2874552T3 (es) Diseño de codificación y descodificación en modo de paleta
ES2873548T3 (es) Codificación de píxeles de escape para codificación 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
ES2751576T3 (es) Agrupación de períodos de derivación de paleta para codificación de vídeo
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
ES2746072T3 (es) Parámetros de paletas máximos en codificación de vídeo basada en paletas
ES2702909T3 (es) Cuantización de los píxeles de escape de un bloque de vídeo en modo de codificación de paleta
ES2770664T3 (es) Restricción en el tamaño de bloque de paleta en la codificación de vídeo
US9900617B2 (en) Single color palette mode in video coding
ES2677522T3 (es) Series de codificación en codificación de vídeo basada en paleta
BR112016022261B1 (pt) Métodos de codificação e decodificação de dados de vídeo, aparelhos configurados para codificar e decodificar dados de vídeo, e, memória legível por computador
BR112016027384B1 (pt) Codificação de amostra de escape em codificação de vídeo com base em paleta
BR112016022085B1 (pt) Determinação de tamanho de paleta, entradas de paleta e filtragem de blocos codificados por paleta em codificação de vídeo
KR20150135411A (ko) 비디오 코딩에서 부호 데이터 은닉의 디스에이블링
KR20170031133A (ko) 진보된 팔레트 예측 및 시그널링
US9961351B2 (en) Palette mode coding