ES2873548T3 - Codificación de píxeles de escape para codificación de paleta - Google Patents

Codificación de píxeles de escape para codificación de paleta Download PDF

Info

Publication number
ES2873548T3
ES2873548T3 ES16705382T ES16705382T ES2873548T3 ES 2873548 T3 ES2873548 T3 ES 2873548T3 ES 16705382 T ES16705382 T ES 16705382T ES 16705382 T ES16705382 T ES 16705382T ES 2873548 T3 ES2873548 T3 ES 2873548T3
Authority
ES
Spain
Prior art keywords
pixel
value
block
palette
encoded
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
ES16705382T
Other languages
English (en)
Inventor
Feng Zou
Rajan Laxman Joshi
Marta Karczewicz
Vadim Seregin
Wei Pu
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 ES2873548T3 publication Critical patent/ES2873548T3/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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Un procedimiento de descodificación de datos de vídeo que se han codificado en modo de paleta, en el que, en el modo de paleta, los píxeles de un bloque de datos de vídeo se codifican usando una de una referencia a una entrada en una paleta, una referencia a un píxel vecino superior o como un píxel de escape, en el que las entradas en la paleta representan valores de píxeles del bloque, y en el que, cuando un píxel se codifica como un píxel de escape, un valor de píxel para el píxel no existe en la paleta y un valor de píxel para el píxel se señaliza directamente, comprendiendo el procedimiento: formar una paleta que incluye entradas que representan valores de píxeles para un bloque de los datos de vídeo; determinar que el bloque de los datos de vídeo incluye uno o más píxeles codificados como píxeles de escape; descodificar, para cada uno de uno o más píxeles codificados como píxeles de escape, una palabra de código de Golomb exponencial representativa de un valor para el píxel, en el que descodificar la palabra de código de Golomb exponencial comprende descodificar la palabra de código de Golomb exponencial usando descodificación de Golomb exponencial con parámetro 3; y descodificar el bloque usando el valor para cada uno de los uno o más píxeles codificados como píxeles de escape.

Description

DESCRIPCIÓN
Codificación de píxeles de escape para codificación de paleta
[0001] Esta solicitud reivindica el beneficio de la solicitud provisional de Estados Unidos n.° 62/110.395, presentada el viernes, 30 de enero de 2015, y la solicitud provisional de Estados Unidos n.° 62/110.995, presentada el lunes, 02 de febrero de 2015.
Campo técnico
[0002] Esta divulgación se refiere a la codificación y descodificación de bloques de datos de vídeo.
Antecedentes
[0003] Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, que incluyen televisores digitales, sistemas de radiodifusión digital directa, sistemas de radiodifusión inalámbrica, asistentes personales digitales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos de radio móviles o 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 de Vídeo Avanzada (AVC), ITU-T H.265, también denominada Codificación de Vídeo de Alta Eficacia (HEVC) y las extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de compresión de vídeo.
[0004] Las técnicas de compresión de vídeo realizan una predicción espacial (intraimagen) y/o una predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca a las secuencias de vídeo. En 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 unas muestras de referencia de bloques vecinos de 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 se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia.
[0005] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio de píxel hasta un dominio de transformada, dando como resultado 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.
[0006] Un flujo de bits de codificación multivista puede generarse codificando vistas, por ejemplo, desde múltiples perspectivas. Se han desarrollado algunas normas de vídeo tridimensional (3D) que aprovechan aspectos de la codificación multivista. Por ejemplo, diferentes vistas pueden transmitir vistas del ojo izquierdo y del ojo derecho para admitir vídeo 3D. De forma alternativa, algunos procesos de codificación de vídeo 3D pueden aplicar la denominada codificación multivista con profundidad. En la codificación multivista más profundidad, un flujo de bits de vídeo 3D puede contener no solo componentes de textura de la vista, sino también componentes de profundidad de la vista. Por ejemplo, cada vista puede comprender un componente de textura de la vista y un componente de profundidad de la vista.
[0007] El documento WO2015006724 divulga la codificación de modo de paleta, donde los píxeles que no están presentes en la paleta se definen como píxeles de escape, y cuyos valores se transmiten explícitamente.
[0008] Vivienne Sze ET AL.: "High Efficiency Video Coding (HEVC): Algorithms and Architectures -Capítulo 8: Entropy Coding in HEVC"En: "High Efficiency Video Coding (HEVC): Algorithms and Architectures - Capítulo 8: Entropy Coding in HEVC", 1 de enero de 2014 (01/01/2014), Springer International Publishing, XP055263413,ISBN: 978-3-319-06894-7 páginas 209-269, divulga la concatenación de palabras de código de Golomb Rice con el parámetro k y palabras de código de orden (k+1) de Golomb exponencial para binarizar valores de nivel.
Breve explicación
[0009] En general, esta divulgación describe técnicas relacionadas con la codificación de datos de vídeo usando el modo de paleta. Más particularmente, las técnicas de esta divulgación están dirigidas a codificar píxeles de escape en bloques codificados en modo de paleta. Por ejemplo, esta divulgación describe técnicas para la codificación de píxeles de escape usando una palabra de código truncada, en base a la determinación de un valor de píxel de escape cuantificado máximo. Esta divulgación también describe diversas técnicas para determinar el valor de píxel de escape cuantificado máximo. Además, esta divulgación describe técnicas para la codificación de un valor de píxel de escape en dos partes, por ejemplo, codificar la primera parte usando codificación de Golomb Rice y la segunda parte usando codificación de Golomb exponencial con parámetro 3. La invención se define en las reivindicaciones adjuntas. Cualquier ejemplo y modo de realización de la descripción que no esté dentro del alcance de las reivindicaciones no forma parte de la invención y solamente se proporciona con propósitos ilustrativos.
[0010] En un ejemplo, se divulga un procedimiento de descodificación de datos de vídeo de acuerdo con la reivindicación independiente 1.
[0011] En otro ejemplo, se divulga un dispositivo para la descodificación de datos de vídeo de acuerdo con la reivindicación independiente 3.
[0012] En otro ejemplo, se divulga un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas el él, de acuerdo con la reivindicación independiente 13.
[0013] En otro ejemplo, se divulga un procedimiento de codificación de datos de vídeo de acuerdo con la reivindicación independiente 4.
[0014] En otro ejemplo, se divulga un dispositivo para la codificación de datos de vídeo de acuerdo con la reivindicación independiente 12.
Breve descripción de los dibujos
[0015]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo de ejemplo que puede utilizar las técnicas descritas en la presente divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en la presente divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas descritas en la presente divulgación.
La FIG. 4 es un diagrama de flujo que ilustra un ejemplo de procedimiento para la codificación de un bloque de datos de vídeo de acuerdo con las técnicas de esta divulgación.
La FIG. 5 es un diagrama de flujo que ilustra otro ejemplo de procedimiento para la codificación de un bloque de datos de vídeo de acuerdo con las técnicas de esta divulgación.
La FIG. 6 es un diagrama de flujo que ilustra un ejemplo de procedimiento de descodificación de un bloque de datos de vídeo de acuerdo con las técnicas de esta divulgación.
La FIG. 7 es un diagrama de flujo que ilustra otro ejemplo de procedimiento de descodificación de un bloque de datos de vídeo de acuerdo con las técnicas de esta divulgación.
Descripción detallada
[0016] Esta divulgación proporciona técnicas que están dirigidas la codificación de píxeles de escape para la codificación de paleta, y más específicamente, la derivación de un valor de píxel de escape cuantificado máximo. En algunos ejemplos, las técnicas propuestas en esta divulgación pueden retirar o eliminar uno o más cálculos que usan parámetros dependientes de codificador y/o operaciones de división para derivar un valor de píxel de escape cuantificado máximo. En algunos ejemplos, esta divulgación proporciona una nueva palabra de código, que puede diseñarse independientemente del valor de píxel de escape cuantificado máximo.
[0017] En algunos ejemplos, las técnicas de esta divulgación pueden no usar parámetros dependientes del codificador para derivar el valor de píxel de escape cuantificado máximo en el descodificador. En cambio, las técnicas de esta divulgación solo pueden usar el tamaño de paso de cuantificación en la derivación de parámetros. Además, en algunos ejemplos, las técnicas de esta divulgación pueden usar operaciones de adición y comparación en lugar de operaciones de división durante la derivación del valor de píxel de escape cuantificado máximo.
[0018] En algunos ejemplos, las técnicas de esta divulgación pueden usar parámetros del codificador para derivar el valor de escape cuantificado máximo en el descodificador. Por tanto, las técnicas de esta divulgación pueden almacenar parámetros relacionados con el codificador en una tabla de consulta en el lado del descodificador. Además, las técnicas de esta divulgación pueden usar operaciones de bucle o desplazamiento para derivar el número máximo de bits para representar el valor de escape cuantificado.
[0019] En algunos ejemplos, las técnicas de esta divulgación pueden usar parámetros del codificador para derivar el valor de escape cuantificado máximo sin operaciones de recorte y división. Por tanto, las técnicas de esta divulgación pueden almacenar parámetros relacionados con el codificador en una tabla de consulta en el lado del descodificador. Como se describe adicionalmente en esta divulgación, en algunos ejemplos, las técnicas de esta divulgación pueden derivar el valor de píxel de escape cuantificado máximo usando un parámetro de cuantificación qP y el componente de color bitDepth. Específicamente, las técnicas de esta divulgación pueden obtener un valor de cMax usando una tabla de consulta con qP y bitDepth.
[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 relativamente pequeño de colores, un codificador de vídeo (por ejemplo, un codificador de vídeo o descodificador de vídeo) puede formar una llamada "paleta" para representar los datos de vídeo del área particular. La paleta puede expresarse como una tabla de colores o valores de píxeles que representan los datos de vídeo del área en particular (por ejemplo, un bloque dado). Por ejemplo, la paleta puede incluir los valores de píxeles más dominantes en el bloque dado. En algunos casos, los valores de píxeles más dominantes pueden incluir los uno o más valores de píxeles 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 valor de píxel se incluirá como uno de los valores de píxeles más dominantes en el bloque. De acuerdo con diversos aspectos de la codificación basada en paletas, el codificador de vídeo puede codificar valores de índices indicativos de uno o más de los valores de píxeles del bloque actual, en lugar de codificar valores de píxeles reales o sus residuales para un bloque actual de datos de vídeo. En el contexto de la codificación basada en paletas, los valores de índices indican entradas respectivas en la paleta que se usan para representar valores de píxeles individuales del bloque actual.
[0022] Por ejemplo, el codificador de vídeo puede codificar un bloque de datos de vídeo determinando la paleta para el bloque (por ejemplo, codificando la paleta explícitamente, prediciendo la paleta, o una combinación de los mismos), ubicando una entrada en la paleta para representar uno o más de los valores de píxeles, y codificando el bloque con valores de índice que indican la entrada en la paleta utilizada para representar los valores de píxeles del bloque. En algunos ejemplos, el codificador de vídeo puede señalizar la paleta y/o los valores de índices en un flujo de bits codificado. A su vez, el descodificador de vídeo puede obtener, a partir de un flujo de bits codificado, una paleta para un bloque, así como valores de índice para los píxeles individuales del bloque. El descodificador de vídeo puede relacionar los valores de índices de los píxeles con las entradas de la paleta para reconstruir los diversos valores de píxeles del bloque.
[0023] Más particularmente, los píxeles de un bloque codificados usando el modo de paleta pueden codificarse usando un modo de "índice", en el que un píxel se codifica usando una referencia a la paleta, o una copia del modo anterior, en el que el píxel se codifica usando una referencia a un píxel vecino superior. Una tercera opción es codificar el píxel como un píxel de escape. En este caso, el valor del píxel (o un valor cuantificado para el píxel) se señaliza directamente.
[0024] De acuerdo con técnicas de esta divulgación, los codificadores de vídeo (por ejemplo, codificadores de vídeo y descodificadores de vídeo) pueden configurarse para codificar por entropía un valor cuantificado para un píxel de escape usando una combinación de modos de codificación por entropía. En particular, en un ejemplo, el codificador de vídeo codifica una primera parte del valor cuantificado para el píxel de escape usando codificación de Golomb Rice, y una segunda parte del valor cuantificado usando Golomb exponencial con parámetro 3. Para muchos elementos de sintaxis, Golomb exponencial con parámetro 3 produjo un rendimiento relativamente bajo, pero las pruebas heurísticas han revelado un rendimiento inesperadamente alto cuando la codificación por entropía cuantificó valores para píxeles de escape usando Golomb exponencial con parámetro 3.
[0025] En consecuencia, un codificador de vídeo puede determinar primero codificar un bloque de píxeles (por ejemplo, una unidad de codificación (CU) o una unidad de predicción (PU)) usando el modo de paleta. El codificador de vídeo puede analizar los píxeles para formar la paleta para el bloque y a continuación explorar los píxeles para determinar un modo de codificación basado en píxeles para cada píxel. Por ejemplo, el codificador de vídeo puede seleccionar el modo de índice para un píxel si el valor del píxel está incluido en la paleta, el modo de copiar de superior si el píxel tiene un valor que es igual al píxel vecino superior o el modo de escape si el píxel no está en la paleta y tampoco se puede copiar de superior. Cuando el codificador de vídeo determina que un píxel debe codificarse usando el modo de escape, el codificador de vídeo puede codificar por entropía el valor del píxel como una primera parte y una segunda parte, donde la primera parte y la segunda parte, cuando se concatenan, representan la valor total para el píxel. En particular, el codificador de vídeo puede codificar la primera parte usando la codificación de Golomb Rice y la segunda parte usando Golomb exponencial con parámetro 3. Además, el codificador de vídeo puede señalizar que el píxel está codificado usando el modo de escape señalizando un valor de índice que es igual al tamaño de la paleta para el bloque. El codificador de vídeo también puede codificar la paleta para el bloque, por ejemplo, usando una paleta de un bloque previamente codificado como paleta de referencia.
[0026] Asimismo, un descodificador de vídeo puede recibir datos codificados para el bloque. Los datos codificados pueden incluir datos que indican que el bloque se predice usando el modo de paleta, datos representativos de la paleta (por ejemplo, una versión codificada de la paleta) y datos que representan valores y modos de codificación para cada uno de los píxeles del bloque. Además, para cada píxel codificado en modo de escape, el descodificador de vídeo puede descodificar por entropía una primera parte de un valor del píxel usando codificación Golomb Rice y una segunda parte del valor usando Golomb exponencial con parámetro 3, y a continuación concatenar la primera y segunda partes para reproducir el valor del píxel.
[0027] Las normas de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluidas sus ampliaciones de Codificación de Vídeo Escalable (SVC) y de Codificación de Vídeo Multivista (MVC).
[0028] Recientemente, el Equipo Mixto de Colaboración sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC ha terminado el diseño de un nuevo estándar de codificación de vídeo, concretamente la codificación de vídeo de alta eficacia (HEVC). La última especificación de HEVC, denominada HEVC Versión 1 en lo sucesivo, se describe en UIT-T H.265, disponible en http://www.itu.int/rec/T-REC-H.265-201304-I. Las ampliaciones de gama para HEVC, a saber, HEVC-Rext, también están siendo desarrolladas por JCT-VC. Un reciente borrador de trabajo (WD) de ampliaciones de gama y denominado RExt WD7 más adelante en el presente documento, está disponible en phenix.intevry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1005-v4.zip.
[0029] Recientemente, JCT-VC ha comenzado el desarrollo de la codificación de contenido de pantalla (SCC), que se basa en HEVC-Rext y se están considerando determinadas técnicas importantes. Se puede encontrar un borrador de documento (R. Joshi, J. Xu, "HEVC Screen Content Coding Draft Text 2," JCTVC-S1005) que describe la codificación de contenido de pantalla HEVC en hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM -16,2+SCM-3.0.
[0030] En algunos ejemplos, técnicas de codificación basada en paletas pueden configurarse para su uso en uno o más modos de codificación de la norma HEVC o de la norma SCC de HEVC. En otros ejemplos, técnicas de codificación basada en paletas se pueden usar de forma independiente o como parte de otros sistemas o normas existentes o futuros. En algunos ejemplos, las técnicas para la codificación basada en paletas de datos de vídeo se pueden usar con una o más técnicas de codificación adicionales, tales como técnicas para la codificación interpredictiva o la codificación intrapredictiva de datos de vídeo. Por ejemplo, como se describe más en detalle a continuación, un codificador o descodificador, o un codificadordescodificador combinado (códec), puede estar configurado para realizar una codificación interpredictiva e intrapredictiva, así como una codificación basada en paletas.
[0031] Con respecto al marco de trabajo de la HEVC, como ejemplo, las técnicas de codificación basada en paletas 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 paletas pueden estar configuradas para su uso como un modo de unidad de predicción (PU) en el marco de la 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 la HEVC no se deben considerar como una restricción o limitación de las técnicas de codificación basada en paletas descritas en el presente documento, ya que dichas técnicas se pueden aplicar para que funcionen independientemente o como parte de otros sistemas/normas existentes o todavía por desarrollar. En estos casos, la unidad para la codificación de paletas puede ser bloques cuadrados, bloques rectangulares o incluso regiones de forma no rectangular.
[0032] La idea básica de la codificación basada en paletas es que, para cada CU, se obtiene una paleta que comprende (y puede consistir en) los valores de píxeles más dominantes en la CU actual. El tamaño y los elementos de la paleta primero se transmiten desde un codificador de vídeo a un descodificador de vídeo. El tamaño y/o los elementos de la paleta pueden codificarse directamente o codificarse de manera predictiva usando el tamaño y/o los elementos de la paleta en las CU adyacentes (por ejemplo, la CU codificada superior y/o izquierda). Después de eso, los valores de píxeles en la CU se codifican en base a la paleta de acuerdo con un cierto orden de barrido. Para cada ubicación de píxeles en la CU, un indicador, por ejemplo, un indicador de paleta, se transmite primero para indicar si el valor de píxeles está incluido en la paleta. Para esos valores de píxeles que correlacionan con una entrada en la paleta, el índice de la paleta asociado con esa entrada se señaliza para la ubicación de píxel dada en la CU. Para aquellos valores de píxeles que no existen en la paleta, se puede asignar un índice especial al píxel y el valor del píxel real se transmite para la ubicación de píxel dada en la CU. Estos píxeles se conocen como "píxeles de escape". Un píxel de escape puede codificarse utilizando cualquier procedimiento de codificación por entropía existente, como la codificación de longitud fija, la codificación unaria, etc.
[0033] Esta divulgación describe procedimientos para admitir la codificación de contenido de vídeo, especialmente contenido de pantalla con codificación de paleta. Los procedimientos propuestos se refieren principalmente a la codificación de píxeles de escape para codificación en modo de paleta.
[0034] En base a las características del vídeo de contenido de pantalla, se introdujo la codificación de paleta para mejorar la eficiencia de SCC descrita en JCTVC-M0323. Específicamente, la codificación de paleta introduce una tabla de consulta, es decir, una paleta de colores, para comprimir valores de píxeles repetitivos en base al hecho de que en SCC, los colores de dentro de una CU normalmente se concentran en unos pocos valores máximos. Dada una paleta para una CU específica, los píxeles de dentro de la CU se mapean al índice de paleta. En la segunda fase, se propone una copia efectiva del procedimiento de longitud de recorrido izquierdo para comprimir eficazmente el patrón repetitivo del bloque de índices. Más tarde, en Guo etal., "Non-RCE3: Modified Palette Mode for Screen Content Coding," j Ct -VC de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, JCTVC-N0249, 14a reunión, Viena, AT, 25 de julio - 2 de agosto de 2013, el modo de codificación de índice de paleta se generalizó para copiar desde la izquierda y copiar de superior con codificación de longitud de recorrido. Debe tenerse en cuenta que no se invoca ningún proceso de transformación para la codificación de paleta para evitar una disminución de definición de los bordes nítidos, lo cual puede tener impactos negativos en la calidad visual del contenido de pantalla.
[0035] Una paleta es una estructura de datos que almacena pares (índice, valor de píxel). La paleta diseñada puede decidirse en el codificador, por ejemplo, mediante un histograma de valores de píxeles en un bloque actual de datos de vídeo, tal como una CU actual. Por ejemplo, los valores máximos en el histograma se añaden a la paleta, mientras que los valores de píxeles de baja frecuencia no se incluyen en la paleta. El tamaño de paleta puede estar restringido para estar en el intervalo de 0 a max_palette_size, que puede ser igual a 31.
[0036] Para SCC, los bloques CU dentro de un fragmento pueden compartir muchos colores dominantes. Por lo tanto, es posible predecir la paleta de un bloque actual usando las paletas de las CU del modo de paleta anterior (en el orden de descodificación de las CU) como referencia. Específicamente, se puede señalizar un vector binario 0-1 para indicar si los valores de píxeles en la paleta de referencia son reutilizados o no por la paleta actual. Como ejemplo, en las tablas 1 y 2 a continuación, se supone que la paleta de referencia tiene 6 elementos. Un vector (1, 0, 1, 1, 1, 1) se señaliza con la paleta actual, lo que indica que v0, v2, v3, v4 y v5 se reutilizan en la paleta actual mientras que v1 no se reutiliza. Si la paleta actual contiene colores que no son predecibles a partir de la paleta de referencia, se codifica el número de colores impredecibles y, a continuación, estos colores se señalizan directamente. Por ejemplo, en las tablas 1 y 2, u0 y u1 se señalizan directamente en el flujo de bits.
Tabla 1-Paleta de referencia
Figure imgf000007_0002
Tabla 2-Paleta actual
Figure imgf000007_0001
[0037] Para el bloque codificado con el modo de paleta, la paleta se puede predecir a partir de las entradas de paleta de los bloques codificados con paleta previamente, se puede señalizar explícitamente como una nueva entrada o se puede reutilizar completamente la paleta del bloque codificado previamente. El último caso se denomina compartir paleta y se señaliza un indicador de compartir paleta, para indicar que toda la paleta del bloque anterior se reutiliza sin modificaciones tal como está. En las tablas 1 y 2 anteriores se muestran ejemplos de una paleta de referencia y una paleta actual. En particular, la tabla 1 ilustra una paleta de referencia de ejemplo y la tabla 2 ilustra una paleta actual de ejemplo que se puede predecir a partir de la paleta de referencia de la tabla 1.
[0038] En el software de referencia SCM3.0 actual, los dos aspectos principales de la codificación de paleta desde una perspectiva normativa son la codificación de la paleta y la codificación del índice de paleta para cada muestra en el bloque que se codifica en el modo de paleta. La codificación de los índices de paleta se realiza mediante dos modos principales, el modo "índice" y el modo "copiar superior". Esto se señaliza mediante la codificación de un indicador palette_mode. El modo "índice" también se usa para indicar muestras de escape, es decir, muestras que no pertenecen a la paleta. En el diseño actual, un modo de "copiar superior" no es posible para la primera fila del bloque de paleta. Además, es posible que un modo de "copiar superior" no siga a otro modo de "copiar superior". En estos casos, se infiere un modo de "índice".
[0039] Específicamente, para el modo de paleta, los píxeles en la CU se codifican en un orden de exploración serpenteante horizontal/vertical de la siguiente manera:
1. Modo "Índice": En este modo, primero se señaliza un índice de paleta. Si el índice es igual al tamaño de la paleta, esto indica que la muestra es una muestra de escape. En este caso, se señaliza el valor de la muestra o el valor de muestras cuantificado para cada componente. Por ejemplo, si el tamaño de la paleta es 4, para muestras no de escape, los índices de la paleta están en el intervalo [0, 3]. En este caso, un valor de índice de 4 significa una muestra de escape. Si el índice indica una muestra no de escape, se señaliza la longitud de recorrido, que especifica el número de muestras posteriores en orden de exploración que comparten el mismo índice, mediante un valor no negativo n-1 que indica la longitud de recorrido, lo que significa que los siguientes n píxeles, incluyendo el actual, tienen el mismo índice de píxel que el primero señalizado.
2. Modo de recorrido "copiar de superior" (CA): En este modo, solo se transmite un valor de longitud de recorrido no negativo m-1 para indicar que para los siguientes m píxeles, incluido el actual, los índices de paleta son los mismos que sus vecinos directamente superiores, respectivamente. Debe tenerse en cuenta que este modo es diferente del modo "índice", en el sentido de que los índices de paleta podrían ser diferentes dentro del modo de recorrido copiar de superior.
[0040] En el diseño actual, el modo de paleta se señaliza a un nivel de CU, pero puede ser posible señalizarlo a un nivel de PU. También se señaliza un indicador, palette_esc_val_present_flag, para indicar la presencia de muestras de escape en un bloque actual.
[0041] En el modo de paleta, la exploración de píxeles en el bloque puede ser de dos tipos: exploración transversal vertical o transversal horizontal (como una serpiente). El patrón de exploración utilizado en el bloque se deriva de acuerdo con el indicador, indicador de transponer paleta, señalizado por unidad de bloque.
[0042] Durante la codificación de índice de la paleta, se puede aplicar un proceso de ajuste del índice de la paleta. Comenzando a partir del segundo píxel del bloque, consiste en comprobar el modo de paleta del píxel previamente codificado. En primer lugar, el tamaño de la paleta se reduce en 1, y si el modo izquierdo es igual al modo de Recorrido, entonces el índice de la paleta a codificar se reduce en 1 si el índice es mayor que el índice de la paleta izquierdo, o si el modo izquierdo es el modo de Copia, entonces el índice de la paleta a codificar se reduce en 1 si el índice es mayor que el índice de la paleta superior. La descripción se proporciona desde el lado de la codificación, y el proceso correspondiente también se puede realizar en el orden inverso en el lado del descodificador.
[0043] En SCM-3,0, se adoptaron las siguientes optimizaciones de sintaxis:
• Si el tamaño de paleta es 0, todos los píxeles de escape se derivan y no se señaliza ningún indicador presente de escape, modo de paleta, índice de paleta, recorrido de paleta e indicador de transponer paleta, y se infiere que ej indicador de presente de escape es igual a 1, se infiere que el modo de paleta es igual al modo ÍNDICE, el índice de la paleta se establece igual al ESCAPE, el valor de recorrido de la paleta se establece igual al tamaño del bloque y el indicador de transponer paleta se establece en 0.
• Si el tamaño de la paleta es 1 y no se usan píxeles de escape en el bloque, entonces no se indica ningún modo de paleta, recorrido de paleta o indicador de transponer paleta, y el modo de paleta se deriva para ser igual al modo ÍNDICE, el índice de paleta se establece en 0, el valor de recorrido de paleta se establece igual al tamaño del bloque y el indicador de transponer paleta se establece en 0.
[0044] En SCM3,0, se usa una palabra de código binaria truncada (TB) para señalizar píxeles de escape cuantificados. Esta palabra de código puede denominarse como un elemento de sintaxis palette_escape_val. Para usar binaria truncada, se necesita el número total de valores posibles. Por ejemplo, si se usa una palabra de código binaria truncada para indicar un conjunto de N valores posibles {0, 1,2, 3,..., N-1}, N se usa para construir una palabra de código binaria truncada (donde N-1 es el valor máximo). De manera equivalente, cuando se conoce el valor máximo, N-1 en este ejemplo (asumiendo que comienza a partir de 0), la palabra de código binaria truncada correspondiente se puede construir de la misma manera. Para obtener los valores de escape cuantificados máximos, se usa el siguiente procedimiento en SCM3,0:
1. El parámetro de cuantificación qP se deriva de la siguiente manera:
qP = ( cldx = = 0) ? QpV : ( ( cldx = = 1) ? Qp'Cb : Qp'cr)
2. Un factor de ajuste a escala de cuantificación quantScale, desfase de desplazamiento hacia la derecha rightShiftOffset y parámetro de desplazamiento hacia la derecha rightShiftParam se derivan en base a la tabla de consulta de cuantificación HEVC de la siguiente manera:
quantScale = g quantScales[qP%6], where g quantScales = {26214, 23302,
20560, 18396, 16384, 14564 }
rightShiftParam = 14 [qP / 6J
rightShiftOffset = 1 « (rightShiftParam -1)
3. Un parámetro de tamaño de paso de cuantificación qStep se deriva de la siguiente manera:
qStep = ( qP= =0) ? Round( 2(qP “ 4) 76) : 1
4. Un valor máximo cuantificado posible maxValue se deriva de la siguiente manera:
maxValue = ( ( l«bitD epth) - 1) / Qstep
5. El número de periodos numBins para representar maxValue se deriva de la siguiente manera while( maxValue) {
maxValué = maxValue » 1
numBins++
}
6. El parámetro máximo cMax para la palabra de código binaria truncada se deriva de la siguiente manera
cMax = clip3(0, 2numBins, ((l«bitDepth) - 1) XquantScale
rightShiftOffset) » rightShiftParam)
[0045] Hay al menos dos problemas potenciales con el diseño de píxeles de escape actual.
[0046] En primer lugar, en el lado del descodificador, el factor de escala de cuantificación, el desfase de desplazamiento hacia la derecha y los parámetros no están disponibles porque estos parámetros son parámetros típicos del codificador y no están estandarizados por el descodificador. Un codificador diferente puede tener un factor de escala, un parámetro de desplazamiento hacia la derecha y un desfase diferentes y, por tanto, puede causar cálculos de cMax incorrectos usando parámetros inconsistentes entre diferentes codificadores y descodificadores.
[0047] En segundo lugar, la derivación de maxValue implica una operación de división, lo que no es deseable para el descodificador. En particular, diferentes descodificadores tienen diferentes precisiones o interpretaciones para operaciones de división y, por tanto, pueden tener diferentes cálculos de maxValue en diferentes plataformas de descodificador. Por lo tanto, los cálculos inconsistentes de maxValue pueden causar una discordancia codificador/descodificador.
[0048] Esta divulgación describe diversas técnicas que pueden ofrecer soluciones a estos y otros problemas. Diversas técnicas de esta divulgación incluyen eliminar el cálculo usando parámetros dependientes del codificador y/o eliminar las operaciones de división.
[0049] Adicionalmente o de forma alternativa, se puede diseñar una nueva palabra de código que puede ser independiente del valor máximo.
[0050] En un ejemplo, los parámetros dependientes del codificador no se usan para derivar el valor de píxel de escape cuantificado máximo en el descodificador. En su lugar, en la derivación de parámetros solo se usa el tamaño de paso de cuantificación. Además, se usan operaciones de adición y comparación en lugar de operaciones de división durante la derivación del valor de píxel de escape cuantificado máximo. Se propone el siguiente procedimiento para derivar el valor de píxel de escape cuantificado máximo:
1. El parámetro de cuantificación qP se deriva en base al componente de color. Los diferentes componentes de color pueden tener diferentes parámetros de cuantificación. El siguiente es un ejemplo para obtener Qp'Y, Qp'Cb o Qp'Cr, para el componente Y, Cb y Cr respectivamente, que pueden ser diferentes o no.
qP = ( cldx = = 0) ? QpV : ( ( cldx = = 1) ? Qp'cb : Qp'cr) (1)
2. Un parámetro de tamaño de paso de cuantificación qStep se deriva usando una fórmula con un parámetro de cuantificación qP como entrada. La siguiente fórmula es un ejemplo donde Round (.) es un operador de redondeo. Debe tenerse en cuenta que no se limita a Round(.) únicamente. Más bien, también puede ser reemplazado por otros operadores, por ejemplo, operador de suelo L.J u operador de techo r .-|:
qStep = ( qP= =0) ? Round( 2(qP “ 4); 6) : 1 (2)
3. Se deriva un valor cuantificado máximo posible cMax (inicializado como 0) dado el valor máximo de píxel antes de la cuantificación y qStep usando un bucle de la siguiente manera (qStepTemp se inicializa como qStep):
while ( qStepTemp <= (( l«bitDepth ) - 1 )){
qStepTemp = qStep
cMax++
} (3)
[0051] Y a continuación cMax se usa para construir la palabra de código binaria truncada para codificar los píxeles de escape cuantificados para la unidad de codificación actual. Debe tenerse en cuenta que todos los píxeles de escape cuantificados están restringidos en el intervalo de [0, cMax] inclusive.
[0052] De forma alternativa, en la etapa 3, cMax (inicializado como 1) se puede derivar usando operaciones de desplazamiento de la siguiente manera con menos precisión:
while ( qStep <= ( ( l«bitDepth) - 1) ) {
qStep«=l
cM ax«=l
}
cMax- (4)
[0053] En otro ejemplo, los parámetros del codificador (por ejemplo, un valor de escala de cuantificación (quantScale), un valor de desfase de desplazamiento hacia la derecha (rightShiftOffset) y un valor de parámetro de desplazamiento hacia la derecha (rightShiftParam)) se pueden usar para derivar el valor de escape cuantificado máximo en el descodificador. Por tanto, los parámetros relacionados con el codificador pueden almacenarse en una tabla de consulta en el lado del descodificador. Además, se pueden usar operaciones de bucle o desplazamiento para derivar el número máximo de bits para representar el valor de escape cuantificado. Se puede usar el siguiente procedimiento para derivar el valor de píxel de escape cuantificado máximo:
1. El parámetro de cuantificación qP se deriva en base al componente de color. El componente de color diferente puede tener diferentes parámetros de cuantificación. El siguiente es un ejemplo para obtener Qp'Y , Qp'Cb o Qp'Cr para el componente Y, Cb y Cr respectivamente, que pueden ser diferentes o no:
qP = ( cldx = = 0) ? QpV : ( ( cldx = = 1) ? Qp'a : Qp'cr) 2. Un factor de ajuste a escala de cuantificación quantScale, un desfase de desplazamiento hacia la derecha rightShiftOffset y un parámetro de desplazamiento hacia la derecha rightShiftParam se derivan en base a una tabla de consulta almacenada en el descodificador, por ejemplo:
quantScale = g_quantScales[qP%6], where g_quantScales = {26214, 23302, 20560, 18396, 16384, 14564 }
rightShiftParam = 14 [qP/6 J
rightShiftOffset = 1 « (rightShiftParam -1)
3. Un parámetro de tamaño de paso de cuantificación qStep se deriva usando una fórmula con un parámetro de cuantificación qP como entrada. La siguiente fórmula es un ejemplo para derivar qStep, donde Round (.) es un operador de redondeo. Debe tenerse en cuenta que no se limita a Round(.) únicamente. Más bien, también puede ser reemplazado por otros operadores, por ejemplo, operador de suelo L.J u operador de techo r .-|:
qStep = ( qP= =0) ? Round( 2(qP “ 4) 76) : 1
4. Un valor máximo cuantificado posible maxValue (inicializado como 0) se deriva de la siguiente manera (qStepTemp se inicializa como qStep):
while(qStepTemp <= ( ( l«bitDepth) - 1) ) {
qStepTemp = qStep
max Valué +
} (5)
5. El número de periodos numBins para representar maxValue se deriva de la siguiente manera while( maxValue) {
maxValue = maxValue » 1
numBins++
} (6)
6. El parámetro máximo cMax para la palabra de código binaria truncada se deriva de la siguiente manera
cMax = clip3(0, 2numBins3 ((l«bitDepth ) - 1 ) XquantScale
rightShiftOffset) » rightShiftParam) (7)
[0054] Debe tenerse en cuenta que, en el caso, el píxel de escape cuantificado está restringido a estar dentro del intervalo de [0, cMax] inclusive.
[0055] En otro ejemplo, los parámetros del codificador pueden usarse para derivar un valor de escape cuantificado máximo, sin realizar operaciones de recorte y/o división. Por tanto, los parámetros relacionados con el codificador deben almacenarse en una tabla de consulta en el lado del descodificador. Se puede usar el siguiente procedimiento para derivar el valor de píxel de escape cuantificado máximo:
1. El parámetro de cuantificación qP se deriva en base al componente de color. El componente de color diferente puede tener diferentes parámetros de cuantificación. El siguiente es un ejemplo para obtener Qp'Y, Qp'Cb o Qp'Cr para el componente Y, Cb y Cr respectivamente, que pueden ser diferentes o no:
qP = ( cldx = = 0) ? Qp 'y : ( ( cldx = = 1) ? Qp'cb : Qp'cr)
2. Un factor de ajuste a escala de cuantificación quantScale, un desfase de desplazamiento hacia la derecha rightShiftOffset y un parámetro de desplazamiento hacia la derecha rightShiftParam se derivan en base a una tabla de consulta almacenada en el descodificador, por ejemplo:
quantScale = g quantScales[qP%6], where g quantScales = {26214, 23302, 20560, 18396, 16384, 14564 }
rightShiftParam = 14 [qP / 6J
rightShiftOffset = 1 « (rightShiftParam -1 )
3. El parámetro máximo cMax para la palabra de código binaria truncada se deriva de la siguiente manera
cMax = ((l«bitDepth) - 1) XquantScale rightShiftOffset) »
rightShiftParam (8)
[0056] Debe tenerse en cuenta que, en el caso, el píxel de escape cuantificado es una restricción en el intervalo de [0, cMax] inclusive.
[0057] En otro ejemplo, el valor de píxel de escape cuantificado máximo puede derivarse usando un parámetro de cuantificación qP y un componente de color bitDepth, junto con una tabla de consulta. Específicamente, cMax se puede obtener usando una tabla de consulta con qP y bitDepth. El siguiente es un ejemplo de derivación de cMax
1. El parámetro de cuantificación qP se deriva en base al componente de color. El componente de color diferente puede tener diferentes parámetros de cuantificación. El siguiente es un ejemplo para obtener Qp'Y, Qp'Cb o Qp'Cr para el componente Y, Cb y Cr respectivamente, que pueden ser diferentes o no:
qP = ( cldx = = 0 ) ? Qp 'y : ( ( cldx = = 1) ? Qp'Cb: Qp'cr) 2. Un parámetro de cuantificación base baseQp se deriva con bitDepth dado:
baseQp = qP - 6*(bitDepth - 8)
3. Si baseQp es igual o mayor que 0, cMax se puede encontrar a través de la tabla de consulta dada baseQp como entrada de entrada
4. De lo contrario, (baseQp es negativo) y cMax se puede derivar de la siguiente manera:
cMax = Table[qP]»(bitDepth - 8) (9)
Tabla 3. Un ejemplo de una tabla de consulta de cmax
Figure imgf000012_0001
Figure imgf000012_0002
Figure imgf000012_0003
Figure imgf000012_0004
Tabla 4. Un ejemplo de una tabla de consulta de cmax
Figure imgf000012_0005
Figure imgf000012_0006
Figure imgf000012_0007
Figure imgf000012_0008
[0058] En algunos ejemplos, un sistema de codificación, tal como un codificador o un descodificador, puede derivar el valor máximo usando una fórmula basada en ecuaciones basada en la profundidad de bits y los parámetros de cuantificación, ya sea de forma conjunta o separada, dependiendo del ejemplo. El siguiente procedimiento es un ejemplo para considerar conjuntamente la profundidad de bits y el parámetro de cuantificación:
[0059] El parámetro de cuantificación qP se deriva en base al componente de color. El componente de color diferente puede tener diferentes parámetros de cuantificación. El siguiente es un ejemplo para obtener Qp'Y , Qp'Cb o Qp'Cr para el componente Y, Cb y Cr respectivamente, que pueden ser diferentes o no:
qP = ( cldx = = 0) ? QpV : ( ( cldx = = 1) ? Qp'cb : Qp'cr)
[0060] Un parámetro de base de cuantificación qPBase está predefinido tanto en el codificador como en el descodificador, o se señaliza en diferentes niveles, tales como SPS, PPS, niveles de fragmento, etc., o derivado adaptativamente en base a cada valor de qP y profundidad de bits de forma conjunta o separada. El siguiente es un ejemplo para usar un número fijo para qPBase:
qPBase = 4 (10)
[0061] Un factor de reducción de bits de cuantificación quantBits se deriva usando una ecuación o en base a una tabla de consulta almacenada tanto en el codificador como en el descodificador de la siguiente manera. Debe tenerse en cuenta que la operación invocada en el presente documento no se limita a la operación de suelo L.J como se muestra en la siguiente ecuación. La operación de techo r .-| se puede usar en lugar de la operación de suelo.
quantBits = (qP - qPBase) > 0 ? [(qP - qPBase)/6J ¡0 (11)
[0062] Se puede derivar un parámetro de bits máximo maxBit basado en bitDepth y quantBits, y el siguiente es un ejemplo:
maxBit = bitDepth - quantBits (12)
[0063] El parámetro máximo cMax para la palabra de código binaria truncada (u otra palabra de código que requiera el cálculo de un valor máximo posible, por ejemplo, una palabra de código de longitud fija) se deriva de la siguiente manera
cMax = ( 1 « maxBit) - 1 (13)
[0064] Debe tenerse en cuenta que, en el caso, el píxel de escape cuantificado está restringido en el intervalo de [0, cMax] inclusive.
[0065] Debe tenerse en cuenta también que los ejemplos anteriores tratan el caso en el que el modo de paleta actual está funcionando en modo con pérdidas. Cuando el modo de paleta actual está operando en modo sin pérdidas, el parámetro máximo cMax puede mantenerse sin cambios, como en el SCM3.0 actual en forma de cMax = ((1<<bitDepth) - 1).
[0066] Además, los diversos ejemplos analizados anteriormente se aplican a una palabra de código de longitud variable. Si se usa una palabra de código de longitud fija para codificar píxeles de escape cuantificados, se puede usar un procedimiento similar al de los ejemplos anteriores para derivar el valor de píxel de escape cuantificado máximo. Y a continuación se puede usar un bucle para determinar el número de bits para presentar el valor de píxel de escape cuantificado máximo.
[0067] Esta divulgación también describe técnicas que pueden usarse para diseñar una palabra de código independiente de una restricción de valor máximo. Estas técnicas pueden usarse solas o en combinación con los diversos ejemplos analizados anteriormente. En particular, puede usarse una palabra de código sin una restricción de valor máximo durante la codificación de píxeles de escape cuantificados. En un ejemplo, se utiliza una concatenación de Golomb Rice y una palabra de código de Golomb exponencial para codificar los píxeles de escape cuantificados. De forma alternativa, el código unario o las palabras de código de la familia de Golomb o sus combinaciones también se pueden aplicar en el presente documento durante la codificación de los píxeles de escape cuantificados. Por ejemplo, un codificador o descodificador puede usar Golomb Rice con parámetro de Rice K, y/o Golomb exponencial con parámetro L, donde K y L pueden ser cualquier número entero, 0, 1, 2, 3... Los valores de los parámetros (L, K) pueden depender de la profundidad de bits. El píxel de escape cuantificado puede estar restringido a una precisión de 15 bits (signo más) para una señal de entrada de 8 bits, mientras que la precisión puede mantenerse como max(15, bitDepth+6). Por ejemplo, se puede usar la codificación de Golomb Rice para codificar una primera parte de un valor de píxel de escape, y se puede usar Golomb exponencial con parámetro 3 para codificar una segunda parte del valor de píxel de escape.
[0068] En la codificación de Golomb exponencial con codificación de parámetro L, un valor a codificar se divide por 2L. El resultado de esta división se codifica usando una palabra de código de Golomb exponencial de orden 0, y el resto (es decir, el módulo de valor 2L) se codifica en binario. Por tanto, el parámetro L afecta a varios bits incluidos en el resto. Debe entenderse que el mismo valor, cuando se codifica usando valores diferentes para el parámetro L, puede dar como resultado palabras de código de Golomb exponenciales que tienen diferentes longitudes. Además, en algunos casos, un valor mayor para el parámetro L puede dar como resultado una palabra de código más corta para un valor a codificar que un valor menor para el parámetro L para el mismo valor a codificar.
[0069] Aunque se describe como independiente de una restricción de valor máximo, las técnicas para codificar el valor de píxel de escape usando una combinación de Golomb Rice y Golomb exponencial con parámetro 3 pueden usarse en combinación con cualquiera de las otras técnicas analizadas anteriormente para determinar un valor de píxel de escape cuantificado máximo. Por ejemplo, el valor de píxel de escape aún puede estar truncado (por ejemplo, puede eliminarse un bit). Como ejemplo, la segunda parte del valor de píxel de escape (es decir, la parte codificada usando Golomb exponencial con parámetro 3 como se analizó anteriormente) se puede truncar en base a un valor de píxel de escape cuantificado máximo determinado, como se analizó anteriormente.
[0070] Esta divulgación describe un procedimiento de derivación de un valor de píxel de escape cuantificado máximo. De acuerdo con las técnicas de esta divulgación, un codificador de vídeo y/o descodificador de vídeo puede determinar un bloque indicativo de una pluralidad de píxeles; determinar un valor de píxel de escape cuantificado máximo en base, al menos en parte, a un parámetro de cuantificación; y codificar el bloque usando el valor de píxel de escape cuantificado máximo.
[0071] Por ejemplo, las técnicas de esta divulgación pueden no usar parámetros dependientes del codificador para derivar el valor de píxel de escape cuantificado máximo en el descodificador. En cambio, las técnicas de esta divulgación solo pueden usar el tamaño de paso de cuantificación en la derivación de parámetros. Además, en algunos ejemplos, las técnicas de esta divulgación pueden usar operaciones de adición y comparación en lugar de operaciones de división durante la derivación del valor de píxel de escape cuantificado máximo.
[0072] Como otro ejemplo, las técnicas de esta divulgación pueden usar parámetros del codificador para derivar el valor de escape cuantificado máximo en el descodificador. Por tanto, las técnicas de esta divulgación pueden almacenar parámetros relacionados con el codificador en una tabla de consulta en el lado del descodificador. Además, las técnicas de esta divulgación pueden usar operaciones de bucle o desplazamiento para derivar el número máximo de bits para representar el valor de escape cuantificado.
[0073] En algunos ejemplos, las técnicas de esta divulgación pueden usar parámetros del codificador para derivar el valor de escape cuantificado máximo sin operaciones de recorte y división. Por tanto, las técnicas de esta divulgación pueden almacenar parámetros relacionados con el codificador en una tabla de consulta en el lado del descodificador. Como se describe adicionalmente en esta divulgación, en algunos ejemplos, las técnicas de esta divulgación pueden derivar el valor de píxel de escape cuantificado máximo usando un parámetro de cuantificación qP y el componente de color bitDepth. Específicamente, las técnicas de esta divulgación pueden obtener un valor de cMax usando una tabla de consulta con qP y bitDepth.
[0074] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo 10 de ejemplo que puede utilizar las técnicas de la presente divulgación. Como se usa en el presente documento, el término "codificador de vídeo" se refiere genéricamente tanto a codificadores de vídeo como a descodificadores de vídeo. En la presente divulgación, los términos "codificación de vídeo" o "codificación" se pueden referir genéricamente a codificación de vídeo o a descodificación de vídeo. El codificador de vídeo 20 y el descodificador de vídeo 30 del sistema de codificación de vídeo 10 representan ejemplos de dispositivos que pueden estar configurados para realizar técnicas de codificación de vídeo basada en paletas 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 de forma selectiva diversos bloques de datos de vídeo, tales como las CU o PU en la codificación HEVC, usando codificación basada en paletas o bien codificación no basada en paletas. Las modalidades de codificación no basada en paletas pueden referirse a diversas modalidades de codificación temporal interpredictiva o a modalidades de codificación espacial intrapredictiva, tales como las diversas modalidades de codificación especificadas por el Borrador 10 de la HEVC.
[0075] 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.
[0076] El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender una amplia gama de dispositivos, que incluyen ordenadores de escritorio, dispositivos informáticos móviles, ordenadores tipo notebook (por ejemplo, portátiles), ordenadores de tableta, descodificadores multimedia, aparatos telefónicos tales como los denominados teléfonos "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, ordenadores para vehículos o similares.
[0077] 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. Los 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. Los uno o más medios de comunicación pueden formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global (por ejemplo, Internet). Los 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.
[0078] 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 medio de acceso de disco o de acceso de 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.
[0079] 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 por medio de transmisión continua o descarga. El servidor de archivos puede ser un tipo de servidor que puede almacenar datos de vídeo codificados y transmitir los datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen servidores web (por ejemplo, para un sitio web), servidores de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectado en red (NAS) y unidades de disco locales.
[0080] El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de una conexión de datos estándar, tal como una conexión a Internet. Los tipos de conexiones de datos de ejemplo pueden incluir canales inalámbricos (por ejemplo, conexiones de wifi), conexiones alámbricas (por ejemplo, DSL, módem de cable, etc.) o combinaciones de ambos que sean adecuadas para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el servidor de archivos puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas cosas.
[0081] Las técnicas de la presente divulgación no se limitan 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 de vídeo en continuo, 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 una transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o videotelefonía.
[0082] El sistema de codificación de vídeo 10 ilustrado en la figura 1 es simplemente un ejemplo y las técnicas de la presente 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 emiten 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.
[0083] 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 suministro de vídeo para recibir datos de vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de vídeo, o una combinación de dichas fuentes de datos de vídeo.
[0084] 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 su acceso posterior mediante el dispositivo de destino 14 para su descodificación y/o su reproducción.
[0085] En el ejemplo de la FIG. 1, el dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En algunos ejemplos, la interfaz de entrada 28 incluye un receptor y/o un módem. La interfaz de entrada 28 puede recibir datos de vídeo codificados a través del canal 16. El dispositivo de visualización 32 puede estar integrado en, o ser externo a, el dispositivo de destino 14. En general, el dispositivo de visualización 32 muestra datos de vídeo descodificados. El dispositivo de visualización 32 puede comprender una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0086] la presente 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 se puede producir en tiempo real o casi real. De forma alternativa, dicha comunicación se puede producir durante un período de tiempo, tal como se podría producir cuando se almacenan elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que, a continuación, se pueden recuperar por un dispositivo de descodificación en cualquier momento después de almacenarse en este medio. Por lo tanto, aunque el descodificador de vídeo 30 puede mencionarse como "recibiendo" cierta información, la recepción de información no necesariamente se produce en tiempo real o casi real, y puede recuperarse desde un medio en algún momento después del almacenamiento.
[0087] 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 de almacenamiento legible por ordenador no transitorio adecuado, y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Se puede considerar que cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) es uno o más procesadores. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0088] 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 el Borrador 10 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 la HEVC. Además, pueden proporcionarse modos de codificación basada en paletas, 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 paletas para la codificación de unidades de codificación (CU) o unidades de predicción (PU) en un códec de la HEVC se describe con fines de ejemplo.
[0089] En la HEVC y otras normas de codificación de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también se pueden denominar "tramas". Una imagen puede incluir tres matrices de muestras, indicadas con Sl , Sob y So r. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luma. Scb es una matriz bidimensional de muestras de crominancia Cb. Ser 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 luma.
[0090] Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades del árbol de codificación (CTU). Cada una de las CTU puede ser un bloque de árbol de codificación de muestras de luma, dos bloques de árbol de codificación correspondientes de muestras de croma y estructuras de sintaxis usadas para codificar las muestras de los bloques de árbol de codificación. Un bloque del árbol de codificación puede ser un bloque de muestras NxN. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación de máximo tamaño" (LCU). Las CTU de la 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 en 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 el barrido de trama. Un fragmento codificado puede comprender una cabecera de fragmento y datos de fragmento. La cabecera de fragmento de un fragmento puede ser una estructura de sintaxis que incluye elementos de sintaxis que proporcionan información sobre el fragmento. Los datos del fragmento pueden incluir CTU codificadas del fragmento.
[0091] Esta divulgación puede usar el término "unidad de vídeo" o "bloque de vídeo" o "bloque" para referirse a uno o más bloques de muestras y estructuras sintácticas usadas para codificar muestras de los uno o más bloques de muestras. Los tipos de ejemplo de unidades o bloques de vídeo pueden incluir CTU, CU, PU, unidades de transformadas (TU), macrobloques, particiones de macrobloque, etc. En algunos contextos, el análisis de las PU puede intercambiarse con el análisis de macrobloques o de particiones de macrobloques.
[0092] 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 del árbol de codificación de una CTU para dividir los bloques del árbol de codificación en bloques de codificación, de ahí el nombre "unidades del árbol de codificación". Un bloque de codificación es un bloque de muestras de tamaño NxN. Una CU puede ser un bloque de codificación de muestras de luma y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luma, una matriz de muestras de Cb y una matriz de muestras de Cr, y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. El codificador de vídeo 20 puede dividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción puede ser un bloque rectangular (es decir, cuadrado o no cuadrado) de muestras en las que se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede ser un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma de una imagen y estructuras de sintaxis usadas para predecir las muestras de bloques de predicción. El codificador de vídeo 20 puede generar bloques predictivos de luma, Cb y Cr para bloques de predicción de luma, Cb y Cr de cada PU de la CU.
[0093] El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador de vídeo 20 usa intrapredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a muestras descodificadas de la imagen asociada con la PU.
[0094] Si el codificador de vídeo 20 usa interpredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a muestras descodificadas de una o más imágenes distintas a la imagen asociada con 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.
[0095] Después de que el codificador de vídeo 20 genera bloques predictivos (por ejemplo, bloques predictivos de luma, Cb y Cr) para una o más PU de una CU, el codificador de vídeo 20 puede generar bloques residuales para la CU. Cada muestra en un bloque residual de la CU puede indicar una diferencia entre una muestra en un bloque predictivo de una PU de la CU y una muestra correspondiente en un bloque de codificación de la CU. Por ejemplo, el codificador de vídeo 20 puede generar un bloque residual de luma para la CU. Cada muestra del bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques predictivos de luma de la CU y una muestra correspondiente en el bloque de codificación de luma original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual de Cb para la CU. Cada muestra del bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb de uno de los bloques predictivos de Cb de la CU y una muestra correspondiente del bloque de codificación de Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual de Cr para la CU. Cada muestra del bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr en uno de los bloques predictivos de Cr de la CU y una muestra correspondiente en el bloque de codificación de Cr original de la CU.
[0096] Además, el codificador de vídeo 20 puede usar la partición en árbol cuaternario para descomponer los bloques residuales (por ejemplo, los bloques residuales de luma, Cb y Cr) de una CU en uno o más bloques de transformada (por ejemplo, bloques de transformada de luma, Cb y Cr). Un bloque de transformada puede ser un bloque rectangular de muestras en el que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede ser un bloque de transformada de muestras de luma, dos bloques de transformada correspondientes de muestras de croma y estructuras de sintaxis usadas para transformar las muestras de bloques de transformada. De este modo, cada TU de una CU puede estar asociada con un bloque de transformada de luma, un bloque de transformada de Cb y un bloque de transformada de Cr. El bloque de transformada de luma asociado a la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada de Cb puede ser un subbloque del bloque residual de Cb de la CU. El bloque de transformada de Cr puede ser un subbloque del bloque residual de Cr de la CU.
[0097] El codificador de vídeo 20 puede aplicar una o más transformaciones a un bloque de transformada para generar un bloque de coeficientes para una TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. Por ejemplo, el codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. 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.
[0098] Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luma, un bloque de coeficientes de Cb o un bloque de coeficientes de Cr), el codificador de vídeo 20 puede cuantificar el bloque de coeficientes. La cuantificación se refiere, en general, a un proceso en el que unos coeficientes de transformada se cuantifican para reducir, posiblemente, la cantidad de datos usados para representar los coeficientes de transformada, proporcionando más compresión. Después de que el codificador de vídeo 20 cuantifique un bloque de coeficientes, el codificador de vídeo 20 puede codificar por entropía elementos de sintaxis 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 de sintaxis que indiquen los coeficientes de transformada cuantificados. El codificador de vídeo 20 puede facilitar los elementos sintácticos codificados por entropía en un flujo de bits. El flujo de bits también puede incluir elementos de sintaxis que no estén codificados por entropía.
[0099] El codificador de vídeo 20 puede emitir un flujo de bits que incluye los elementos de sintaxis 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 de NAL puede incluir un elemento de sintaxis que indique un código del tipo de unidad de NAL. El código del tipo de unidad de NAL especificado por la cabecera de unidad de NAL de una unidad de NAL indica el tipo de la unidad de NAL. Una RBSP puede ser una estructura de sintaxis que contenga un número entero de bytes que esté encapsulado dentro de una unidad de NAL. En algunos casos, una RBSP incluye cero bits.
[0100] Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para un fragmento codificado, un tercer tipo de unidad de NAL puede encapsular una RBSP para información de mejora complementaria (SEI), y así sucesivamente. Las unidades de 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) se pueden denominar unidades de NAL de la capa de codificación de vídeo (VCL).
[0101] 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 obtener elementos de sintaxis del flujo de bits. Por ejemplo, el descodificador de vídeo 30 puede analizar sintácticamente el flujo de bits para descodificar elementos de sintaxis a partir 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 de sintaxis obtenidos (por ejemplo, descodificados) a partir del flujo de bits. El procedimiento para reconstruir los datos de vídeo puede ser, en general, recíproco al procedimiento realizado por el codificador de vídeo 20. Por ejemplo, el descodificador de vídeo 30 puede usar MV de PU para determinar bloques predictivos de muestras (es decir, 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 muestras para las PU de la CU actual a las muestras correspondientes de los bloques de transformada de las TU de la CU actual. Mediante la reconstrucción de los bloques de codificación para cada CU de una imagen, el descodificador de vídeo 30 puede reconstruir la imagen.
[0102] 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 paletas. Por ejemplo, en la codificación basada en paletas, 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 o de valores de píxeles que representan los datos de vídeo de un área en particular (por ejemplo, un bloque dado). De esta manera, en lugar de codificar los valores de píxeles reales o sus residuales para un bloque actual de datos de vídeo, el codificador de vídeo puede codificar valores de índices para uno o más de los valores de píxeles del bloque actual, donde los valores de índices indican entradas en la paleta que se usan para representar los valores de píxeles del bloque actual.
[0103] Por ejemplo, el codificador de vídeo 20 puede codificar un bloque de datos de vídeo determinando una paleta para el bloque, ubicando una entrada en la paleta que tenga un valor representativo del valor de uno o más píxeles individuales del bloque, y codificando el bloque con valores de índice que indiquen la entrada en la paleta usada para representar uno o más valores de píxeles individuales del bloque. Además, el codificador de vídeo 20 puede señalizar los valores de índice en un flujo de bits codificado. A su vez, un dispositivo de descodificación de vídeo (por ejemplo, un descodificador de vídeo 30) puede obtener, a partir del flujo de bits codificado, la paleta para un bloque, así como los valores de índice usados para determinar los distintos píxeles individuales del bloque que usa la paleta. El descodificador de vídeo 30 puede relacionar los valores de índices de los píxeles individuales con las entradas de paleta para reconstruir los valores de píxeles del bloque. En los casos en que el valor del índice asociado con un píxel individual no coincide con ningún valor del índice de la paleta correspondiente para el bloque, el descodificador de vídeo 30 puede identificar dicho píxel como un píxel de escape, para los propósitos de la codificación basada en paletas.
[0104] En otro ejemplo, el codificador de vídeo 20 puede codificar un bloque de datos de vídeo de acuerdo con las siguientes operaciones. El codificador de vídeo 20 puede determinar los valores residuales de predicción para píxeles individuales del bloque, determinar una paleta para el bloque y ubicar una entrada (por ejemplo, un valor del índice) en la paleta que tenga un valor representativo del valor de uno o más de los valores residuales de predicción de los píxeles individuales. Adicionalmente, el codificador de vídeo 20 puede codificar píxeles el bloque con valores de índices que indiquen la entrada en la paleta usada para representar el valor residual de predicción correspondiente para cada píxel individual del bloque. El descodificador de vídeo 30 puede obtener, a partir de un flujo de bits codificado, señalizado por el dispositivo de origen 12, una paleta para un bloque, así como valores de índices para los valores residuales de predicción correspondientes a los píxeles individuales del bloque. Como se describe, los valores de índices pueden corresponder a entradas en la paleta asociada con el bloque actual. A su vez, el descodificador de vídeo 30 puede relacionar los valores de índices de los valores residuales de predicción con las entradas de la paleta para reconstruir los valores residuales de predicción del bloque. Los valores residuales de predicción pueden añadirse a los valores de predicción (por ejemplo, obtenidos usando intra o interpredicción) para reconstruir los valores de píxeles del bloque.
[0105] Como se describe con más detalle a continuación, la idea básica de la codificación basada en paletas es que, para un bloque de datos de vídeo que se vaya a codificar, el codificador de vídeo 20 puede obtener una paleta que incluya los valores de píxeles más dominantes en el bloque. Por ejemplo, la paleta puede referirse a un número de valores de píxeles que se determina o se supone que son dominantes y/o representativos de la CU actual. El codificador de vídeo 20 puede codificar datos representativos del tamaño y los elementos de la paleta. Adicionalmente, el codificador de vídeo 20 puede codificar los valores de píxeles en el bloque de acuerdo con un determinado orden de barrido. Para cada píxel incluido en el bloque, el codificador de vídeo 20 puede determinar si el valor de píxel está incluido en la paleta. Si el píxel está incluido en la paleta, el codificador de vídeo 20 puede señalizar el valor del índice que correlaciona el valor del píxel con una entrada correspondiente en la paleta. Además, el codificador de vídeo 20 puede señalizar un valor de "recorrido" que indica cuántos píxeles que siguen al píxel para el que se señalizó el índice tienen el mismo valor. Como alternativa, si una serie de píxeles tiene valores que son los mismos que los valores de píxeles vecinos superiores, el codificador de vídeo 20 puede codificar los píxeles usando un modo de "copiar de superior", en el que un valor de recorrido (pero no un valor de índice) indica una cantidad de píxeles que comparten valores con píxeles de superior.
[0106] Por otra parte, si el valor de un píxel actual del bloque no está incluido en la paleta (es decir, no existe una entrada de paleta que especifique un valor de píxel particular del bloque codificado por paleta), y el píxel no comparte un valor con un píxel vecino superior, entonces dicho píxel puede definirse como un "píxel de escape". De acuerdo con la codificación basada en paletas, el codificador de vídeo 20 puede codificar y señalizar un valor del índice que esté reservado para un píxel de escape. Por ejemplo, el valor de índice que representa un píxel de escape puede ser del tamaño de la paleta, asumiendo que la paleta tiene un índice cero. Es decir, para una paleta que tiene cuatro entradas indexadas de cero a tres, el codificador de vídeo 20 puede señalizar un valor de cuatro (4) para un píxel para indicar que el píxel está codificado como un píxel de escape. En algunos ejemplos, el codificador de vídeo 20 también puede codificar y señalizar el valor del píxel o un valor residual (o versiones cuantificadas del mismo) para un píxel de escape incluido en el bloque.
[0107] De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 puede codificar el valor de un píxel de escape en dos partes, una primera parte y una segunda parte. La primera y la segunda partes, cuando se concatenan, pueden representar el valor del píxel de escape. El codificador de vídeo 20 puede codificar la primera parte usando una palabra de código de Golomb Rice y la segunda parte usando una palabra de código de Golomb exponencial con parámetro 3.
[0108] Al recibir el flujo de bits de vídeo codificado señalizado por el codificador de vídeo 20, el descodificador de vídeo 30 puede determinar primero la paleta basándose en la información recibida del codificador de vídeo 20. El descodificador de vídeo 30 puede asignar entonces los valores de índices recibidos asociados con las ubicaciones de píxeles en el bloque dado a las entradas de la paleta para reconstruir los valores de píxeles del bloque dado. En algunos casos, el descodificador de vídeo 30 puede determinar que un píxel de un bloque codificado por la paleta es un píxel de escape, como puede ser determinando que el píxel está codificado por la paleta con un valor del índice reservado para los píxeles de escape. En los casos en que el descodificador de vídeo 30 identifica un píxel de escape en un bloque codificado por la paleta, el descodificador de vídeo 30 puede recibir el valor del píxel o un valor residual (o versiones cuantificadas del mismo) para un píxel de escape incluido en el bloque dado. El descodificador de vídeo 30 puede reconstruir el bloque codificado por la paleta correlacionando los valores de píxeles individuales con las entradas correspondientes de la paleta y utilizando el valor del píxel o el valor residual (o las versiones cuantificadas de los mismos) para reconstruir cualquier píxel de escape incluido en el bloque codificado por la paleta.
[0109] El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse para operar de acuerdo con las técnicas descritas en esta divulgación para derivar un valor de píxel de escape cuantificado máximo. Por ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden determinar un bloque indicativo de una pluralidad de píxeles; determinar un valor de píxel de escape cuantificado máximo en base, al menos en parte, a un parámetro de cuantificación y codificar el bloque usando el valor de píxel de escape cuantificado máximo.
[0110] En algunos ejemplos, determinar el valor de píxel de escape cuantificado máximo comprende además: determinar el parámetro de cuantificación en base a un componente de color; determinar un tamaño de paso de cuantificación en base al parámetro de cuantificación; determinar un valor cuantificado máximo posible en base al tamaño del paso de cuantificación; y generar una palabra de código binaria truncada para codificar los píxeles de escape cuantificados, en base al valor de píxel de escape cuantificado máximo. En algunos ejemplos, el valor de píxel de escape cuantificado máximo se determina usando solo el paso de cuantificación. En algunos ejemplos, la determinación del valor de píxel de escape cuantificado máximo no se basa en un parámetro dependiente del codificador.
[0111] En algunos ejemplos, las técnicas de esta divulgación incluyen la determinación del valor de píxel de escape cuantificado máximo que se realiza sin usar operaciones de división. En algunos ejemplos, la determinación del valor de píxel de escape cuantificado máximo se realiza usando adición y comparación. En algunos ejemplos, determinar el valor de píxel de escape cuantificado máximo comprende además: determinar un parámetro de cuantificación en base a un componente de color; determinar, en base al parámetro de cuantificación, al menos uno de un factor de ajuste a escala de cuantificación o parámetro de desplazamiento; determinar un valor cuantificado máximo posible en base a, al menos, uno de un factor de ajuste a escala de cuantificación o parámetro de desplazamiento; y generar una palabra de código binaria truncada para codificar los píxeles de escape cuantificados, en base al valor de píxel de escape cuantificado máximo.
[0112] En algunos ejemplos, las técnicas de esta divulgación incluyen determinar un parámetro de tamaño de paso de cuantificación en base al parámetro de cuantificación; y en el que el valor cuantificado máximo posible se determina además en base al tamaño del paso de cuantificación. En algunos ejemplos, el al menos uno del factor de ajuste a escala de cuantificación o parámetro de desplazamiento es un parámetro del codificador. En algunos ejemplos, las técnicas de esta divulgación incluyen almacenar el al menos uno del factor de ajuste a escala de cuantificación o parámetro de desplazamiento en una tabla de consulta; y en el que determinar, en base al parámetro de cuantificación, el al menos uno del factor de ajuste a escala de cuantificación o el parámetro de desplazamiento comprende además realizar una búsqueda en la tabla de consulta para determinar el al menos uno del factor de ajuste a escala de cuantificación o el parámetro de desplazamiento.
[0113] En algunos ejemplos, determinar el valor de píxel de escape cuantificado máximo incluye además determinar un parámetro de cuantificación en base a un componente de color; determinar un parámetro de cuantificación base en base a una profundidad de bits; determinar si el parámetro de cuantificación base satisface un umbral; y cuando el parámetro de cuantificación base satisface el umbral, determinar un valor cuantificado máximo posible a partir de una tabla de consulta y en base al parámetro de cuantificación base, y cuando el parámetro de cuantificación base no satisface el umbral, determinar un valor cuantificado máximo posible a partir de una tabla de consulta y en base a la profundidad de bits.
[0114] En algunos ejemplos, los píxeles de escape cuantificados se codifican en una palabra de código de longitud fija. En algunos ejemplos, se genera una palabra de código que incluye el valor de píxel de escape cuantificado máximo sin una restricción de valor máximo. En algunos ejemplos, el valor de píxel de escape cuantificado máximo se determina al menos sin realizar una operación de división o sin usar un parámetro dependiente del codificador.
[0115] La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar diversas técnicas de esta divulgación. La FIG. 2 se proporciona con propósitos explicativos y no se debe considerar limitante de las técnicas ampliamente ejemplificadas y descritas en la presente divulgación. Con propósitos explicativos, la presente divulgación describe un codificador de vídeo 20 en el contexto de la codificación de HEVC. Sin embargo, las técnicas de la presente divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0116] 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 se muestran). El codificador de vídeo 20 también incluye una unidad de codificación basada en paletas 122 configurada para realizar diversos aspectos de las técnicas de codificación basada en paletas descritas en esta divulgación. En otros ejemplos, el codificador de vídeo 20 puede incluir más, menos o diferentes componentes funcionales.
[0117] La memoria de datos de vídeo 98 puede almacenar datos de vídeo que se van 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 la memoria dinámica de acceso aleatorio (DRAM), incluyendo la DRAM síncrona (SDRa M), la RAM magnetorresistiva (MRAM), la 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 en relación con esos componentes.
[0118] 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 luma 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.
[0119] 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. De este modo, cada PU puede estar asociada a un bloque de predicción de luma y a bloques de predicción de croma correspondientes. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden admitir PU que tienen diversos tamaños. Como se indica anteriormente, el tamaño de una CU se puede referir al tamaño del bloque de codificación de luma de la CU, y el tamaño de una PU se puede referir al tamaño de un bloque de predicción de luma de la PU. Suponiendo que el tamaño de una CU particular 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 intrapredicción, y tamaños de PU simétricos de 2Nx2n , 2NxN, Nx2N, NxN o similares para interpredicción. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden admitir una partición asimétrica para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N para interpredicción.
[0120] 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 uno o más bloques predictivos de muestras de la PU y la 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 modo I, el bloque predictivo se forma usando predicción espacial a partir de bloques vecinos previamente codificados dentro de la misma trama.
[0121] 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 contenga bloques de muestra que se correspondan más estrechamente con los bloques de muestra 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 de muestras predictivos de la PU en base a unas muestras reales o interpoladas en la localización de referencia indicada por el vector de movimiento de la PU.
[0122] 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 facilitar, como la información de movimiento de la PU, un índice de referencia que indica una posición en RefPicListO o en RefPicList1 de la imagen de referencia que contiene la región de referencia, un MV que indica un desplazamiento espacial entre un bloque de muestras de la PU y una localizació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 en RefPicList1. La unidad de compensación de movimiento de la unidad de procesamiento de interpredicción 120 puede generar los bloques de muestras predictivos de la PU en base, al menos en parte, a muestras reales o interpoladas en la región de referencia indicada por el vector de movimiento de la PU.
[0123] 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 la RefPicListO una región de referencia para la PU y también puede buscar en las imágenes de referencia de la 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 la RefPicListO y en la 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 de muestras predictivos de la PU en base, al menos en parte, a muestras reales o interpoladas en la región de referencia indicada por el vector de movimiento de la PU.
[0124] 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 paletas. Con respecto al entorno de HEVC, como ejemplo, las técnicas de codificación basada en paletas pueden configurarse para usarse como un modo 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. Por consiguiente, todos los procesos divulgados, descritos en el presente documento (a lo largo de esta divulgación) en el contexto de un modo CU, pueden, adicionalmente o de forma alternativa, aplicarse a un modo PU. Sin embargo, estos ejemplos basados en la HEVC no se deben considerar como una restricción o limitación de las técnicas de codificación basada en paletas descritas en el presente documento, ya que dichas técnicas se pueden aplicar para que funcionen independientemente o como parte de otros sistemas/normas existentes o todavía por desarrollar. En estos casos, la unidad para la codificación de paletas puede ser bloques cuadrados, bloques rectangulares o incluso regiones de forma no rectangular.
[0125] La unidad de codificación basada en paleta 122, por ejemplo, puede realizar una codificación basada en paleta cuando se selecciona un modo de codificación basada en paleta, por ejemplo, para una CU o PU. Por ejemplo, la unidad de codificación basada en paleta 122 puede estar configurada para generar una paleta que tiene entradas que indican valores de píxeles, seleccionar valores de píxeles de una paleta para representar valores de píxeles de al menos algunas posiciones de un bloque de datos de vídeo y señalizar información, tal como valores de índices, que asocia al menos algunas de las posiciones del bloque de datos de vídeo a entradas de la paleta correspondiente, respectivamente, a los valores de píxeles seleccionados. Aunque se describe que la unidad de codificación basada en paletas 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.
[0126] La unidad de codificación basada en paletas 122 puede estar configurada para generar cualquiera de los diversos elementos sintácticos descritos en el presente documento. Por consiguiente, el codificador de vídeo 20 puede estar configurado para codificar bloques de datos de vídeo usando modos de codificación basada en paleta como se describe en esta divulgación. El codificador de vídeo 20 puede codificar selectivamente un bloque de datos de vídeo usando un modo de codificación basada en paleta, o codificar un bloque de datos de vídeo usando un modo diferente, por ejemplo, tal como un modo de codificación HEVC interpredictiva o intrapredictiva. El bloque de datos de vídeo puede ser, por ejemplo, una CU o PU generada de acuerdo con un proceso de codificación HEVC. Un codificador de vídeo 20 puede codificar algunos bloques con modos de codificación de predicción temporal interpredictiva o espacial intrapredictiva y descodificar otros bloques con el modo de codificación basada en paleta.
[0127] 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 de muestras 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.
[0128] 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. Cuando se usan algunos modos de intrapredicción para generar un conjunto de datos predictivos para la PU, la unidad de procesamiento de intrapredicción 126 puede extender los valores de las muestras de los bloques de muestra de las PU adyacentes a través de los bloques predictivos de la PU en direcciones asociadas con los modos de intrapredicción. Las PU vecinas pueden estar arriba, arriba y a la derecha, arriba 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.
[0129] 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 en base a unas 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.
[0130] La unidad de generación residual 102 puede generar, basándose en los bloques de codificación (por ejemplo, los bloques de codificación de luma, Cb y Cr) de una CU y los bloques predictivos de muestras seleccionados (por ejemplo, los bloques predictivos de luma, Cb y Cr) de las PU de la CU, bloques residuales (por ejemplo, bloques residuales de luma, 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.
[0131] La unidad de procesamiento de transformada 104 puede realizar una partició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, en algunos ejemplos, una TU puede asociarse a un bloque de transformada de luma y dos bloques de transformada de croma. Los tamaños y las posiciones de los bloques de transformada de luma y croma de las TU de una CU pueden o no estar basados en los tamaños y las posiciones de 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.
[0132] La unidad de procesamiento de transformada 104 puede generar bloques de coeficientes de transformada para cada TU de una CU aplicando una o más transformadas a los bloques de transformada de la TU. La unidad de procesamiento de transformada 104 puede aplicar diversas transformadas a un bloque de transformada asociado a una TU. Por ejemplo, la unidad de procesamiento de transformada 104 puede aplicar una transformada discreta del coseno (DCT), una transformada direccional o una transformada conceptualmente similar a un bloque de transformada. En algunos ejemplos, la unidad de procesamiento de transformada 104 no aplica transformadas a un bloque de transformada. En dichos ejemplos, el bloque de transformada se puede tratar como un bloque de coeficientes de transformada.
[0133] 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 hacia abajo 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 de 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.
[0134] 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.
[0135] La unidad de filtro 114 puede realizar una o más operaciones de reducción del efecto bloque 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 las 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.
[0136] 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 de sintaxis 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 CABAC, una operación de codificación de longitud variable adaptativa al contexto (CAVLC), 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 la sintaxis (SBAC), una operación de codificación por entropía por división de intervalos de probabilidad (PIPE), una operación de codificación exponencial-Golomb u otro tipo de operación de codificación por entropía en los datos. El codificador de vídeo 20 puede emitir 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.
[0137] En algunos ejemplos, la codificación residual no se realiza con la codificación de paletas. Por consiguiente, el codificador de vídeo 20 no puede realizar la transformación o la cuantificación cuando se codifica usando un modo de codificación de paletas. Además, el codificador de vídeo 20 puede codificar por entropía los datos generados usando un modo de codificación de paletas separado de los datos residuales.
[0138] De acuerdo con una o más de las técnicas de esta divulgación, el codificador de vídeo 20, y específicamente la unidad de codificación basada en paletas 122, puede realizar la codificación de vídeo basada en paletas de bloques de vídeo predichos. Como se describe anteriormente, una paleta generada por el codificador de vídeo 20 puede codificarse explícitamente, predecirse a partir de entradas de paleta anteriores, predecirse a partir de valores de píxeles anteriores, o una combinación de los mismos.
[0139] En particular, la unidad de procesamiento de predicción 100 puede determinar un modo de codificación para un bloque (por ejemplo, una CU o PU) de datos de vídeo, tal como el modo de interpredicción, intrapredicción o paleta. Suponiendo que se selecciona el modo de paleta, la unidad de codificación basada en paleta 122 puede formar una paleta para el bloque en base a estadísticas de valores de píxeles para el bloque. Para cada píxel del bloque, la unidad de codificación basada en paleta 122 puede determinar si el píxel tiene un valor correspondiente en la paleta y, de ser así, señalizar un índice en la paleta al valor correspondiente para el píxel. La unidad de codificación basada en paleta 122 también puede señalizar un valor de recorrido, que representa un número de píxeles que tienen el mismo valor que el píxel anterior.
[0140] De forma alternativa, si una secuencia de píxeles tiene valores iguales a los píxeles vecinos superiores, la unidad de codificación basada en paleta 122 puede señalizar un valor de recorrido para el modo "copiar de superior", donde el recorrido representa el número de píxeles que tienen valores iguales a los píxeles vecinos superiores.
[0141] Si ni el modo de índice ni el modo de copiar de superior representan adecuadamente el valor de un píxel actual del bloque codificado en modo de paleta, la unidad de codificación basada en paleta 122 puede usar las técnicas de esta divulgación para codificar el píxel como un píxel de escape. De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 puede codificar el valor de un píxel de escape en dos partes, una primera parte y una segunda parte. La primera y la segunda partes, cuando se concatenan, pueden representar el valor del píxel de escape. La unidad de codificación por entropía 118 puede codificar la primera parte usando una palabra de código de Golomb Rice y la segunda parte usando una palabra de código de Golomb exponencial con parámetro 3. En un modo de realización, el codificador de vídeo 20 y/o el descodificador de vídeo 30 codifican (codifican o descodifican, respectivamente) solo un valor único usando codificación de Golomb exponencial con parámetro 3, donde este valor representa el valor completo para el píxel de escape. En otros ejemplos más, la unidad de codificación por entropía 118 codifica solo un valor único usando la codificación de Golomb exponencial con parámetro 3, donde este valor representa el valor completo del píxel de escape.
[0142] En algunos ejemplos, la unidad de codificación por entropía 118 puede codificar la segunda parte usando codificación de Golomb exponencial truncada. La codificación de Golomb exponencial truncada puede basarse en un valor de píxel de escape cuantificado máximo determinado. El codificador de vídeo 20 (más particularmente, la unidad de codificación por entropía 118) puede determinar el valor de píxel de escape cuantificado máximo usando cualquiera de las diversas técnicas descritas en el presente documento.
[0143] Por ejemplo, la unidad de codificación por entropía 118 puede determinar un valor de tamaño de paso de cuantificación en base a un parámetro de cuantificación para el bloque de acuerdo con la fórmula (2) anterior, y a continuación usar el tamaño de paso de cuantificación para determinar el valor de píxel de escape cuantificado máximo, por ejemplo, de acuerdo con el proceso (3) anterior. En particular, en el proceso (3), se inicializa un valor temporal al valor de paso cuantificado determinado usando la fórmula (2). A continuación, mientras que el valor temporal es menor que (1 << bitDepth)-1, es decir, el valor de uno desplazado hacia la izquierda por la profundidad de bits, menos 1, el valor temporal aumenta por el valor de paso cuantificado determinado y el valor de píxel de escape cuantificado máximo (inicializado a uno) se incrementa en uno. De forma alternativa, la unidad de codificación por entropía 118 puede determinar el valor de píxel de escape cuantificado máximo de acuerdo con el proceso (4) anterior.
[0144] Como otro ejemplo, el codificador de vídeo 20 puede señalizar valores para determinadas variables del codificador, tales como un valor de escala de cuantificación (quantScale), un valor de parámetro de desplazamiento hacia la derecha (rightShiftParam) y un valor de desfase de desplazamiento hacia la derecha (rightShiftOffset). Típicamente, estos valores solo estarían disponibles para el codificador de vídeo 20, pero en este ejemplo, el codificador de vídeo 20 puede señalizar valores para estos elementos en el flujo de bits, y también usar estos valores para determinar el valor de píxel de escape cuantificado máximo. El codificador de vídeo 20 puede señalizar valores para estos elementos usando una o más tablas de consulta. Además, la unidad de codificación por entropía 118 puede calcular el valor de píxel de escape cuantificado máximo usando los procesos (5), (6) y (7) anteriores. Como puede verse, el proceso (7) incluye el cálculo del valor de píxel de escape cuantificado máximo cMax usando quantScale, rightShiftOffset y rightShiftParam. De forma alternativa, la unidad de codificación por entropía 118 puede calcular el valor de píxel de escape cuantificado máximo usando el proceso (8), que usa los elementos quantScale, rightShiftOffset y rightShiftParam, y omite las operaciones de recorte y división.
[0145] Como otro ejemplo más, la unidad de codificación por entropía 118 puede determinar el valor de píxel de escape cuantificado máximo usando el proceso (9) anterior, que usa una tabla de consulta en base a un parámetro de cuantificación (qP) y una profundidad de bits. La tabla de consulta se puede definir de acuerdo con las tablas 3 o 4, u otras tablas de consulta.
[0146] Como otro ejemplo, la unidad de codificación por entropía 118 puede determinar el píxel de escape cuantificado máximo usando los procesos (10) a (13) anteriores. Es decir, la unidad de codificación por entropía 118 puede determinar un valor de qPBase (usando el proceso (10)), que puede ser un valor predeterminado. La unidad de codificación por entropía 118 puede determinar a continuación un valor de quantBits a partir del parámetro de cuantificación (qP) y el valor de qPBase usando el proceso (11), a continuación determinar un valor de maxBit de acuerdo con el proceso (12) a partir de la profundidad de bits y el valor de quantBits determinado. Finalmente, la unidad de codificación por entropía 118 puede determinar el valor de píxel de escape cuantificado máximo (cMax) de acuerdo con el proceso (13) como un valor de 1 desplazado hacia la izquierda por el valor de maxBit, menos 1.
[0147] Como se indicó anteriormente, cualquiera de estas diversas técnicas de ejemplo puede usarse para determinar un valor de píxel de escape cuantificado máximo, que la unidad de codificación por entropía 118 puede usar para realizar una codificación de Golomb exponencial truncada de la segunda parte del valor de píxel de escape. De forma alternativa, la unidad de codificación por entropía 118 puede usar cualquiera de estas diversas técnicas para realizar una codificación binaria truncada del valor de píxel de escape, sin realizar una combinación de codificación de Golomb Rice y codificación de Golomb exponencial con parámetro 3.
[0148] De esta manera, el codificador de vídeo 20 representa un ejemplo de un codificador de vídeo configurado para determinar un valor para un píxel de escape de un bloque de datos de vídeo codificado en modo de paleta, y codificar una palabra de código de Golomb exponencial representativa de al menos una parte del valor de píxel de escape, en el que para codificar la palabra de código de Golomb exponencial, el codificador de vídeo está configurado para usar codificación de Golomb exponencial con parámetro 3.
[0149] La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo 30 que está configurado para implementar las técnicas de la presente divulgación. La FIG. 3 se proporciona con propósitos explicativos y no es limitante con respecto a las técnicas ampliamente ejemplificadas y descritas en la presente divulgación. Con propósitos explicativos, la presente divulgación describe un descodificador de vídeo 30 en el contexto de la codificación de HEVC. Sin embargo, las técnicas de la presente divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0150] 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 paletas 165 configurada para realizar diversos aspectos de las técnicas de codificación basada en paletas descritas en esta divulgación. En otros ejemplos, el descodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
[0151] La memoria de datos de vídeo 148 puede almacenar los datos de vídeo, tales como un flujo de bits de vídeo codificado, que se van a descodificar por los componentes del descodificador de vídeo 30. Los datos de vídeo almacenados en la memoria de datos de vídeo 148 pueden obtenerse, por ejemplo, a partir de un medio legible por ordenador 16, por ejemplo, desde una fuente de vídeo local, tal como una cámara, mediante comunicación de datos de vídeo por red alámbrica 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 la memoria dinámica de acceso aleatorio (DRAM), incluyendo la DRAM síncrona (SDRAM), la RAM magnetorresistiva (MRAM), la 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 en relación con esos componentes.
[0152] 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 de NAL) desde la memoria de datos de vídeo 148 y puede analizar sintácticamente las unidades de NAL para descodificar elementos de sintaxis. La unidad de descodificación por entropía 150 puede descodificar por entropía elementos de sintaxis codificados por entropía en las unidades de 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 de sintaxis obtenidos (por ejemplo, extraídos) del flujo de bits.
[0153] Las unidades de NAL del flujo de bits pueden incluir unidades de 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 de sintaxis pertenecientes a un fragmento. Los elementos de sintaxis de la cabecera de fragmento pueden incluir un elemento de sintaxis que identifica un PPS asociado a una imagen que contiene el fragmento.
[0154] Además de descodificar elementos de sintaxis del flujo de bits, el descodificador de vídeo 30 puede realizar una operación de reconstrucción en una CU no dividida. Para realizar la operación de reconstrucción en una CU no partida, el descodificador de vídeo 30 puede realizar una operación de reconstrucción en cada TU de la CU. Realizando la operación de reconstrucción para cada TU de la CU, el descodificador de vídeo 30 puede reconstruir bloques residuales de la CU.
[0155] Como parte de realizar 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, descuantificar, 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.
[0156] Después de que la unidad de cuantificación inversa 154 haya realizado la cuantificación inversa de un bloque de coeficientes, la unidad de procesamiento de transformada inversa 156 puede aplicar una o más transformadas inversas al bloque de coeficientes para generar un bloque residual asociado a la TU. Por ejemplo, la unidad de procesamiento de transformada inversa 156 puede aplicar al bloque de coeficientes una DCT inversa, una transformada entera inversa, una transformada inversa de Karhunen-Loeve (KLT), una transformada de rotación inversa, una transformada direccional inversa u otra transformada inversa.
[0157] 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 de sintaxis descodificados a partir del flujo de bits.
[0158] La unidad de procesamiento de predicción 152 puede construir una primera lista de imágenes de referencia (RefPicList0) 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 zonas de referencia para la PU. La unidad de compensación de movimiento 164 puede generar, basándose en bloques de muestras en uno o más bloques de referencia para la PU, bloques predictivos (por ejemplo, bloques predictivos de luma, Cb y Cr) para la PU.
[0159] La unidad de reconstrucción 158 puede usar los bloques de transformada (por ejemplo, los bloques de transformada de luma, Cb y Cr) asociados con las TU de una CU y los bloques predictivos (por ejemplo, los bloques de Luma, Cb y Cr) de las PU de la UC, es decir, cualquiera de los datos de predicción o de los datos de interpredicción, según corresponda, para reconstruir los bloques de codificación (por ejemplo, bloques de codificación de luma, Cb y Cr) de la CU. Por ejemplo, la unidad de reconstrucción 158 puede agregar muestras de los bloques de transformada (por ejemplo, los bloques de transformada de luma, Cb y Cr) a las muestras correspondientes de los bloques predictivos (por ejemplo, los bloques predictivos de luma, Cb y Cr) para reconstruir los bloques de codificación (por ejemplo, bloques de codificación de luma, Cb y Cr) de la CU.
[0160] La unidad de filtro 160 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con los bloques de codificación (por ejemplo, los bloques de codificación de luma, Cb y Cr) de la CU. El descodificador de vídeo 30 puede almacenar los bloques de codificación (por ejemplo, los bloques de codificación de luma, 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, en base a los bloques (por ejemplo, los bloques de luma, 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 forma, el descodificador de vídeo 30 puede obtener, a partir del flujo de bits, los niveles de coeficientes de transformada de un bloque de coeficientes significativo, cuantificar inversamente los niveles de coeficientes de transformada, aplicar una transformación 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 emitir el bloque de codificación para su visualización.
[0161] 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 paletas. En particular, el descodificador de vídeo 30 incluye una unidad de descodificación basada en paleta 165 que puede realizar una codificación basada en paleta. Por ejemplo, la unidad de descodificación basada en paletas 165 puede configurarse para generar una paleta que tenga entradas que indiquen valores de píxeles. Además, en este ejemplo, la unidad de descodificación basada en paletas 165 puede recibir información que asocie al menos algunas posiciones de un bloque de datos de vídeo con entradas en la paleta. En este ejemplo, la unidad de descodificación basada en paletas 165 puede seleccionar valores de píxeles en la paleta basándose en la información. Adicionalmente, en este ejemplo, la unidad de descodificación basada en paletas 165 puede reconstruir los valores de píxeles del bloque basándose en los valores de píxeles seleccionados. Aunque se describe que la unidad de descodificación basada en paletas 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.
[0162] La unidad de descodificación basada en paletas 165 puede recibir información de modo de codificación de paletas, y realizar las operaciones anteriores cuando la información del modo de codificación de paletas indica que el modo de codificación de paletas se aplica al bloque. Cuando la información del modo de codificación por paleta indica que el modo de codificación por paleta no se aplica al bloque, o cuando la información de otro modo indica el uso de un modo diferente, la unidad de descodificación basada en paletas 165 descodifica el bloque de datos de vídeo usando un modo de codificación no basada en paletas, por ejemplo, tal como un modo de codificación HEVC interpredictivo o intrapredictivo, cuando la información del modo de codificación por paleta indica que el modo de codificación por paleta no se aplica al bloque. El bloque de datos de vídeo puede ser, por ejemplo, una CU o PU generada de acuerdo con un proceso de codificación HEVC. Un descodificador de vídeo 30 puede descodificar algunos bloques con modos de codificación de predicción temporal interpredictiva o espacial intrapredictiva y descodificar otros bloques con el modo de codificación basada en paleta. El modo de codificación basada en paletas puede comprender uno de una pluralidad de diferentes modos de codificación basada en paletas, o puede haber un único modo de codificación basada en paletas.
[0163] De acuerdo con una o más de las técnicas de esta divulgación, el descodificador de vídeo 30, y específicamente la unidad de descodificación basada en paletas 165, puede realizar la descodificación de vídeo basada en paletas de bloques de vídeo codificados por paleta. Como se describió anteriormente, una paleta descodificada por el descodificador de vídeo 30 puede codificarse y señalizarse explícitamente, reconstruirse por el descodificador de vídeo 30 con respecto a un bloque codificado por paleta recibido, predecirse a partir de entradas de paleta anteriores, predecirse a partir de valores de píxeles anteriores, o una combinación de los mismos.
[0164] En particular, la unidad de descodificación por entropía 150 puede descodificar información que indica que un bloque (por ejemplo, una PU o CU) de datos de vídeo está codificado usando el modo de paleta. La unidad de descodificación por entropía 150 puede descodificar además información representativa de cómo se codifica cada píxel del bloque usando el modo de paleta. Por ejemplo, la unidad de descodificación por entropía 150 puede descodificar un valor de índice y un valor de recorrido como un par {índice, recorrido}. El valor de índice representa una entrada de la paleta para el bloque, donde la entrada especifica un valor de píxel y el valor de recorrido indica una cantidad de píxeles además del píxel actual que tienen el mismo valor.
[0165] Si el valor del índice es igual al tamaño de la paleta, la unidad de descodificación por entropía 150 puede determinar que el píxel actual es un píxel de escape. Por tanto, de acuerdo con las técnicas de esta divulgación, la unidad de descodificación por entropía 150 puede descodificar dos valores subsiguientes del flujo de bits: un primer valor codificado por Golomb-Rice y un segundo valor codificado por Golomb exponencial con parámetro 3. El primer valor representa una primera parte del valor del píxel de escape, mientras que el segundo valor representa una segunda parte del valor del píxel de escape. Por tanto, después de descodificar el primer valor y el segundo valor (produciendo la primera parte y la segunda parte, respectivamente), la unidad de descodificación por entropía 150 puede concatenar la primera parte y la segunda parte para reproducir el valor del píxel de escape y proporcionar el valor del píxel de escape a la unidad de descodificación basada en paleta 165. De forma alternativa, la unidad de descodificación por entropía 150 puede proporcionar la primera parte y la segunda parte a la unidad de descodificación basada en paleta 165, que puede concatenar la primera parte y la segunda parte para reproducir el valor del píxel de escape. En otros ejemplos más, la unidad de descodificación por entropía 150 puede descodificar solo un valor único usando la codificación de Golomb exponencial con parámetro 3, donde este valor representa el valor completo del píxel de escape.
[0166] En algunos ejemplos, la unidad de descodificación por entropía 150 puede descodificar la segunda parte usando codificación de Golomb exponencial truncada. La codificación de Golomb exponencial truncada puede basarse en un valor de píxel de escape cuantificado máximo determinado. El descodificador de vídeo 30 (más particularmente, la unidad de descodificación por entropía 150) puede determinar el valor de píxel de escape cuantificado máximo usando cualquiera de las diversas técnicas descritas en el presente documento.
[0167] Por ejemplo, la unidad de descodificación por entropía 150 puede determinar un valor de tamaño de paso de cuantificación en base a un parámetro de cuantificación para el bloque de acuerdo con la fórmula (2) anterior, y a continuación usar el tamaño de paso de cuantificación para determinar el valor de píxel de escape cuantificado máximo, por ejemplo, de acuerdo con el proceso (3) anterior. En particular, en el proceso (3), se inicializa un valor temporal al valor de paso cuantificado determinado usando la fórmula (2). A continuación, mientras que el valor temporal es menor que (1 << bitDepth)-1, es decir, el valor de uno desplazado hacia la izquierda por la profundidad de bits, menos 1, el valor temporal aumenta por el valor de paso cuantificado determinado y el valor de píxel de escape cuantificado máximo (inicializado a uno) se incrementa en uno. De forma alternativa, la unidad de descodificación por entropía 150 puede determinar el valor de píxel de escape cuantificado máximo de acuerdo con el proceso (4) anterior.
[0168] Como otro ejemplo, el descodificador de vídeo 30 puede recibir valores para determinadas variables del codificador, tales como un valor de escala de cuantificación (quantScale), un valor de parámetro de desplazamiento hacia la derecha (rightShiftParam) y un valor de desfase de desplazamiento hacia la derecha (rightShiftOffset). Típicamente, estos valores solo estarían disponibles para un codificador de vídeo, pero en este ejemplo, el descodificador de vídeo 30 puede descodificar valores para estos elementos a partir del flujo de bits, y también usar estos valores para determinar el valor de píxel de escape cuantificado máximo. El descodificador de vídeo 30 puede descodificar índices en una o más tablas de consulta que representan estas variables del codificador. Además, la unidad de descodificación por entropía 150 puede calcular el valor de píxel de escape cuantificado máximo usando los procesos (5), (6) y (7) anteriores. Como puede verse, el proceso (7) incluye el cálculo del valor de píxel de escape cuantificado máximo cMax usando quantScale, rightShiftOffset y rightShiftParam. De forma alternativa, la unidad de descodificación por entropía 150 puede calcular el valor de píxel de escape cuantificado máximo usando el proceso (8), que usa los elementos quantScale, rightShiftOffset y rightShiftParam, y omite las operaciones de recorte y división.
[0169] Como otro ejemplo más, la unidad de descodificación por entropía 150 puede determinar el valor de píxel de escape cuantificado máximo usando el proceso (9) anterior, que usa una tabla de consulta basada en un parámetro de cuantificación (qP) y una profundidad de bits. La tabla de consulta se puede definir de acuerdo con las tablas 3 o 4, u otras tablas de consulta.
[0170] Como otro ejemplo, la unidad de descodificación por entropía 150 puede determinar el píxel de escape cuantificado máximo usando los procesos (10) a (13) anteriores. Es decir, la unidad de descodificación por entropía 150 puede determinar un valor de qPBase (usando el proceso (10)), que puede ser un valor predeterminado. La unidad de descodificación por entropía 150 puede determinar a continuación un valor de quantBits a partir del parámetro de cuantificación (qP) y el valor de qPBase usando el proceso (11), a continuación determinar un valor de maxBit de acuerdo con el proceso (12) a partir de la profundidad de bits y el valor de quantBits determinado. Finalmente, la unidad de descodificación por entropía 150 puede determinar el valor de píxel de escape cuantificado máximo (cMax) de acuerdo con el proceso (13) como un valor de 1 desplazado hacia la izquierda por el valor de maxBit, menos 1.
[0171] Como se indicó anteriormente, cualquiera de estas diversas técnicas de ejemplo puede usarse para determinar un valor de píxel de escape cuantificado máximo, que la unidad de descodificación por entropía 150 puede usar para realizar una codificación de Golomb exponencial truncada de la segunda parte del valor de píxel de escape. De forma alternativa, la unidad de descodificación por entropía 150 puede usar cualquiera de estas diversas técnicas para realizar una codificación binaria truncada del valor de píxel de escape, sin realizar una combinación de codificación de Golomb Rice y codificación de Golomb exponencial con parámetro 3.
[0172] De nuevo, la unidad de descodificación por entropía 150 puede realizar los procesos anteriores para descodificar un valor de píxel de escape, señalizado por un valor de índice de paleta que es igual al tamaño de la paleta. De forma alternativa, la unidad de descodificación por entropía 150 puede descodificar solo un valor de recorrido. El valor de recorrido significa un número de píxeles codificados usando el modo de copiar de superior. La unidad de descodificación por entropía 150 puede proporcionar el valor de recorrido descodificado a la unidad de descodificación basada en paleta 165. Por tanto, la unidad de descodificación basada en paleta 165 puede recuperar valores para cada uno de estos píxeles a partir de píxeles vecinos superiores respectivos.
[0173] De esta manera, el descodificador de vídeo 30 representa un ejemplo de un descodificador de vídeo configurado para descodificar una palabra de código de Golomb exponencial representativa de al menos una parte de un valor para un píxel de escape de un bloque codificado en modo paleta, en el que el descodificador de vídeo está configurado para descodificar la palabra de código de Golomb exponencial usando descodificación de Golomb exponencial con parámetro 3, y descodificar el bloque usando el valor para el píxel de escape.
[0174] La FIG. 4 es un diagrama de flujo que ilustra un ejemplo de procedimiento para la codificación de un bloque de datos de vídeo de acuerdo con las técnicas de esta divulgación. El procedimiento de la FIG.
4 puede realizarse mediante el codificador de vídeo 20 y los componentes del mismo (por ejemplo, ilustrados en la FIG. 2).
[0175] En este ejemplo, la unidad de procesamiento de predicción 100 recibe inicialmente un bloque de datos de vídeo (200). El bloque puede ser, por ejemplo, una unidad de predicción (PU) o una unidad de codificación (CU). La unidad de procesamiento de predicción 100 determina a continuación un modo de codificación para el bloque (202). Por ejemplo, la unidad de procesamiento de predicción 100 puede probar diversos modos de codificación y comparar los modos usando un proceso de optimización de la distorsión de la velocidad (RDO). Además, la unidad de procesamiento de predicción 100 también puede comparar diversos tamaños de bloque y esquemas de división de bloques usando el proceso de RDO.
[0176] La unidad de procesamiento de predicción 100 puede seleccionar un modo de intra o interpredicción, en cuyo caso la unidad de procesamiento de interpredicción 120 o la unidad de procesamiento de intrapredicción 126 pueden predecir píxeles del bloque usando intrapredicción o interpredicción (204), respectivamente, formando un bloque predicho. El codificador de vídeo 20 puede, a continuación, formar y procesar valores residuales del bloque (206). Por ejemplo, la unidad de generación residual 102 puede restar el bloque original del bloque predicho píxel por píxel, formando un bloque residual. La unidad de procesamiento de transformada 104 puede transformar a continuación el bloque residual usando una transformada tal como, por ejemplo, una DCT, que forma un bloque de transformada. La unidad de cuantificación 106 puede cuantificar, a continuación, los coeficientes de transformada del bloque de transformada y proporcionar los coeficientes de transformada cuantificados a la unidad de codificación por entropía 118. La unidad de procesamiento de predicción 100 también proporciona información representativa del modo de predicción (por ejemplo, intra/inter, un modo intra seleccionado si se usa intrapredicción, o parámetros de movimiento si se usa interpredicción) a la unidad de codificación por entropía 118. Por tanto, la entropía de la unidad de codificación por entropía 118 codifica la información de predicción y los valores residuales (es decir, los coeficientes de transformada cuantificados) (208).
[0177] De forma alternativa, la unidad de procesamiento de predicción 100 puede seleccionar el modo de paleta para codificar el bloque, en cuyo caso la unidad de codificación basada en paleta 122 analiza las estadísticas de píxeles para el bloque (210). Por ejemplo, la unidad de codificación basada en paleta 122 puede determinar valores de píxeles usados con frecuencia. La unidad de codificación basada en paleta 122 forma, a continuación, una paleta para el bloque en base a las estadísticas (212). Aunque no se muestra en la FIG. 4, la unidad de codificación por entropía 118 puede codificar por entropía datos para la paleta. Por ejemplo, la paleta puede codificarse de manera predictiva con respecto a una paleta usada previamente, por ejemplo, como se analizó anteriormente con respecto a las tablas 1 y 2.
[0178] La unidad de codificación basada en paleta 122 puede escanear, a continuación, píxeles del bloque (214) para determinar cómo codificar los píxeles. Por ejemplo, la unidad de codificación basada en paleta 122 puede determinar si un valor de píxel actual está incluido en la paleta. Si el valor de píxel está incluido en la paleta, la unidad de codificación basada en paleta 122 puede proporcionar un índice a partir de la paleta que corresponde al valor de píxel a la unidad de codificación por entropía 118, que puede codificar por entropía el valor de índice (216). Además, la unidad de codificación basada en paleta 122 puede determinar un número de píxeles en una fila después del píxel anterior que tienen el mismo valor, y proporcionar un valor de "recorrido" a la unidad de codificación por entropía 118, que puede codificar por entropía el valor de recorrido (218).
[0179] De forma alternativa, si el píxel actual no tiene un valor en la paleta, la unidad de codificación basada en paleta 122 puede determinar si el valor para el píxel es el mismo que el valor de un píxel vecino superior. En algunos ejemplos, esta determinación puede realizarse antes de determinar si el valor de píxel corresponde a un valor en la paleta. En cualquier caso, si el píxel actual tiene un valor que es igual a un valor de píxel vecino superior, la unidad de codificación basada en paleta 122 puede proporcionar un valor de recorrido que describe un número de píxeles que tienen valores iguales a sus píxeles vecinos superiores a la unidad de codificación por entropía 118, que puede codificar por entropía el valor de recorrido (220).
[0180] Si el píxel actual no corresponde a un valor en la paleta y no tiene un valor igual a un píxel vecino superior, la unidad de codificación basada en paleta 122 puede codificar el píxel como un píxel de escape. En particular, la unidad de codificación basada en paleta 122 puede proporcionar un valor de índice igual al tamaño de la paleta a la unidad de codificación por entropía 118, que puede codificar por entropía el valor de índice como el tamaño de la paleta (222). Un valor de índice igual al tamaño de la paleta puede señalizar que el píxel actual se está codificando como un píxel de escape. La unidad de codificación basada en paleta 122 puede proporcionar además el valor del píxel de escape a la unidad de codificación por entropía 118.
[0181] De acuerdo con las técnicas de esta divulgación, la unidad de codificación por entropía 118 puede codificar el valor del píxel de escape en dos partes. Más particularmente, la unidad de codificación por entropía 118 puede dividir el valor del píxel de escape en una primera parte y una segunda parte. La unidad de codificación por entropía 118 puede codificar por Golomb-Rice la primera parte del valor de píxel (224) y codificar por Golomb exponencial con parámetro 3 la segunda parte del valor de píxel (226). Aunque no se muestra en la FIG. 4, la unidad de codificación por entropía 118 puede codificar la segunda parte usando Golomb exponencial con parámetro 3 truncada, en base a un valor de píxel de escape cuantificado máximo determinado.
[0182] El codificador de vídeo 20 puede realizar este proceso (por ejemplo, uno de la secuencia de las etapas 216 y 218, la etapa 220 o la secuencia de las etapas 222-226) para cada píxel del bloque codificado en modo de paleta.
[0183] De esta manera, el procedimiento de la FIG. 4 representa un ejemplo de un procedimiento que incluye determinar un valor para un píxel de escape de un bloque de datos de vídeo codificado en modo de paleta, y codificar una palabra de código de Golomb exponencial representativa de al menos una parte del valor del píxel de escape, en el que codificar la palabra de código de Golomb exponencial comprende codificar la palabra de código de Golomb exponencial usando codificación de Golomb exponencial con parámetro 3.
[0184] Aunque el procedimiento de la FIG. 4 incluye codificar tanto una primera parte del valor del píxel de escape usando codificación de Golomb Rice como una segunda parte del valor del píxel de escape usando codificación de Golomb exponencial, debe entenderse que en otros ejemplos, el valor completo del píxel de escape puede codificarse usado solo la codificación de Golomb exponencial (por ejemplo, usando el parámetro 3 para la codificación de Golomb exponencial.
[0185] La FIG. 5 es un diagrama de flujo que ilustra otro ejemplo de procedimiento para la codificación de un bloque de datos de vídeo de acuerdo con las técnicas de esta divulgación. El procedimiento de la FIG.
5 puede realizarse mediante el codificador de vídeo 20 y los componentes del mismo (por ejemplo, ilustrados en la FIG. 2). En general, el procedimiento de la FIG. 5 se ajusta sustancialmente al procedimiento de la FIG. 4. Sin embargo, en la FIG. 5, cuando el píxel actual no corresponde a un valor en la paleta y no tiene un valor igual a un píxel vecino superior, la unidad de codificación basada en paleta 122 puede codificar el píxel como un píxel de escape y, en particular, codificar el valor para el píxel de escape usando codificación de Golomb exponencial con parámetro 3 (228).
[0186] De esta manera, el procedimiento de la FIG. 5 representa otro ejemplo de un procedimiento que incluye determinar un valor para un píxel de escape de un bloque de datos de vídeo codificado en modo de paleta, y codificar una palabra de código de Golomb exponencial representativa de al menos una parte del valor para el píxel de escape, en el que codificar la palabra de código de Golomb exponencial comprende codificar la palabra de código de Golomb exponencial usando codificación de Golomb exponencial con parámetro 3.
[0187] La FIG. 6 es un diagrama de flujo que ilustra un ejemplo de procedimiento de descodificación de un bloque de datos de vídeo de acuerdo con las técnicas de esta divulgación. El procedimiento de la FIG.
6 puede realizarse mediante el descodificador de vídeo 30 y los componentes del mismo (por ejemplo, ilustrados en la FIG. 3).
[0188] Inicialmente, la unidad de descodificación por entropía 150 puede descodificar datos que indican un modo de codificación para un bloque de datos de vídeo (250). La unidad de descodificación por entropía 150 puede usar estos datos para determinar un modo de codificación para el bloque (252), por ejemplo, uno de intrapredicción, interpredicción o modo de paleta.
[0189] En el caso de que el modo de codificación sea intrapredicción o interpredicción, la unidad de descodificación por entropía 150 puede descodificar información de predicción (por ejemplo, un intra-modo o parámetros de movimiento) y proporcionar la información de predicción a la unidad de procesamiento de predicción 152. La unidad de procesamiento de predicción 152 puede usar la información de predicción para predecir píxeles del bloque usando intrapredicción o interpredicción (254). Por ejemplo, la unidad de procesamiento de intrapredicción 166 puede usar un modo de intrapredicción para construir un bloque de predicción a partir de píxeles vecinos al bloque. Como otro ejemplo, la unidad de compensación de movimiento 164 puede usar los parámetros de movimiento para recuperar (y potencialmente procesar, por ejemplo, filtrar) un bloque de referencia de una imagen descodificada previamente de la memoria intermedia de imágenes descodificadas 162.
[0190] Además, el descodificador de vídeo 30 puede descodificar y procesar valores residuales del bloque (256). Por ejemplo, la unidad de cuantificación inversa 154 puede cuantificar de forma inversa los coeficientes de transformada cuantificados, y la unidad de procesamiento de transformada inversa 156 puede transformar los coeficientes de transformada inversa, para reconstruir un bloque residual. La unidad de reconstrucción 158 puede combinar, a continuación, valores residuales del bloque residual y valores predichos del bloque predicho (258) para reconstruir el bloque original.
[0191] De forma alternativa, la unidad de descodificación por entropía 150 puede determinar que el modo de codificación para el bloque es el modo de paleta. En este caso, la unidad de descodificación por entropía 150 puede descodificar una paleta para el bloque (260). Como se analizó anteriormente con respecto a las tablas 1 y 2, la paleta puede codificarse de manera predictiva con respecto a una paleta anterior. Por tanto, la unidad de descodificación por entropía 150 puede proporcionar datos descodificados para la paleta a la unidad de descodificación basada en paleta 165, que puede reconstruir la paleta para el bloque usando los datos descodificados.
[0192] La unidad de descodificación por entropía 150 también puede descodificar datos para píxeles del bloque (264). Por ejemplo, los datos descodificados pueden corresponder a un valor de índice que es menor que el tamaño de la paleta. En este caso, la unidad de descodificación por entropía 150 también puede descodificar un valor de recorrido (266) y proporcionar el índice y el valor de recorrido a la unidad de descodificación basada en paleta 165. La unidad de descodificación basada en paleta 165 puede establecer el valor del píxel y cada uno de los píxeles en el recorrido igual al valor de píxel de la paleta que corresponde al valor de índice (268).
[0193] Como otro ejemplo, los datos descodificados pueden ser un valor de recorrido sin un valor de índice. Dicho valor de recorrido sin un valor de índice puede indicar un número de píxeles codificados usando el modo de copiar de superior. En este caso, la unidad de descodificación por entropía 150 puede proporcionar el valor de recorrido a la unidad de descodificación basada en paleta 165, que puede establecer valores para cada uno de los píxeles en el recorrido iguales a los valores de los respectivos valores de píxeles vecinos superiores.
[0194] Como otro ejemplo, los datos descodificados pueden ser un valor de índice que es igual al tamaño de la paleta. En este caso, la unidad de descodificación por entropía 150 puede descodificar por Golomb-Rice un primer valor correspondiente a una primera parte del valor de píxel (272). La unidad de descodificación por entropía 150 también puede descodificar por Golomb exponencial con parámetro 3 un segundo valor correspondiente a una segunda parte del valor de píxel (274). Como se analizó anteriormente, la unidad de descodificación por entropía 150 puede determinar de forma alternativa un valor de píxel de escape cuantificado máximo para realizar descodificación de Golomb exponencial truncada con parámetro 3 del segundo valor. La unidad de descodificación por entropía 150 (o la unidad de descodificación basada en paleta 165) puede concatenar, a continuación, la primera parte y la segunda parte para reproducir el valor de píxel (276).
[0195] El descodificador de vídeo 30 puede realizar este proceso (por ejemplo, uno de la secuencia de las etapas 266 y 268, la etapa 270 o la secuencia de las etapas 272-276) para cada píxel del bloque codificado en modo de paleta.
[0196] De esta manera, el procedimiento de la FIG. 6 representa un ejemplo de un procedimiento que incluye descodificar una palabra de código de Golomb exponencial representativa de al menos una parte del valor para un píxel de escape de un bloque de datos de vídeo codificado en modo de paleta, en el que descodificar la palabra de código de Golomb exponencial comprende descodificar la palabra de código de Golomb exponencial usando descodificación de Golomb exponencial con parámetro 3 y descodificar el bloque usando el valor para el píxel de escape.
[0197] Aunque el procedimiento de la FIG. 6 incluye descodificar tanto una primera parte del valor del píxel de escape usando codificación de Golomb Rice como una segunda parte del valor del píxel de escape usando codificación de Golomb exponencial, debe entenderse que en otros ejemplos, el valor completo del píxel de escape puede codificarse usado solo la codificación de Golomb exponencial (por ejemplo, usando el parámetro 3 para la codificación de Golomb exponencial.
[0198] La FIG. 7 es un diagrama de flujo que ilustra otro ejemplo de procedimiento de descodificación de un bloque de datos de vídeo de acuerdo con las técnicas de esta divulgación. El procedimiento de la FIG.
7 puede realizarse mediante el descodificador de vídeo 30 y los componentes del mismo (por ejemplo, ilustrados en la FIG. 3). En general, el procedimiento de la FIG. 7 se ajusta sustancialmente al procedimiento de la FIG. 6. Sin embargo, en la FIG. 7, cuando el valor de índice es igual al tamaño de la paleta, la unidad de descodificación basada en paleta 165 puede descodificar el píxel como un píxel de escape y, en particular, descodificar el valor para el píxel de escape usando codificación de Golomb exponencial con parámetro 3 (278).
[0199] De esta manera, el procedimiento de la FIG. 7 representa un ejemplo de un procedimiento que incluye descodificar una palabra de código de Golomb exponencial representativa de al menos una parte del valor para un píxel de escape de un bloque de datos de vídeo codificado en modo de paleta, en el que descodificar la palabra de código de Golomb exponencial comprende descodificar la palabra de código de Golomb exponencial usando descodificación de Golomb exponencial con parámetro 3 y descodificar el bloque usando el valor para el píxel de escape.
[0200] 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). Además, en determinados ejemplos, las acciones o eventos se pueden realizar simultáneamente, por ejemplo, a través de procesamientos de múltiples hilos, procesamientos por interrupciones o mediante múltiples procesadores, en lugar de secuencialmente. Además, aunque con propósitos de claridad se describe que un único módulo o unidad realiza determinados aspectos de la presente divulgación, se 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 la presente divulgación.
[0201] Determinados aspectos de esta divulgación se han descrito con respecto a la norma de HEVC en desarrollo con fines ilustrativos. Sin embargo, las técnicas descritas en la presente divulgación pueden ser útiles para otros procesos de codificación de vídeo, que incluyen otros procesos de codificación de vídeo, estándar o de propiedad, aún no desarrollados.
[0202] 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. Asimismo, la codificación de vídeo se puede referir a una codificación de vídeo o a una descodificación de vídeo, según corresponda.
[0203] Aunque se han descrito anteriormente combinaciones particulares de diversos aspectos de las técnicas, estas combinaciones se proporcionan simplemente para ilustrar ejemplos de las técnicas descritas en la presente divulgación. En consecuencia, las técnicas de la presente divulgación no se deben limitar a estos ejemplos de combinaciones, sino que pueden abarcar cualquier combinación concebible de los diversos aspectos de las técnicas descritas en la presente divulgación.
[0204] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en, o transmitir a través de, un medio legible por ordenador como una o más instrucciones o código, y ejecutar mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador que corresponden a un medio tangible, tales como unos medios de almacenamiento de datos, o unos medios de comunicación que incluyen cualquier medio que facilita la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) unos medios de almacenamiento tangibles legibles por ordenador que no son transitorios o a (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser unos medios cualesquiera disponibles a los que se puede acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, un código y/o unas estructuras de datos para la implementación de las técnicas descritas en la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0205] A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se puede usar para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Asimismo, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o unas tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en su lugar, se dirigen a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, donde los discos flexibles normalmente reproducen datos magnéticamente, mientras que los demás discos reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también se deben incluir dentro del alcance de los medios legibles por ordenador.
[0206] 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), matrices de puertas programables in situ (FPGA) u otra circuitería lógica integrada o discreta equivalente. 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 de software dedicados configurados para codificar y descodificar, o incorporar en un códec combinado. Asimismo, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
[0207] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyen un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar mediante un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores descritos anteriormente, junto con software y/o firmware adecuados.
[0208] Se han descrito diversos ejemplos.

Claims (13)

REIVINDICACIONES
1. Un procedimiento de descodificación de datos de vídeo que se han codificado en modo de paleta, en el que, en el modo de paleta, los píxeles de un bloque de datos de vídeo se codifican usando una de una referencia a una entrada en una paleta, una referencia a un píxel vecino superior o como un píxel de escape, en el que las entradas en la paleta representan valores de píxeles del bloque, y en el que, cuando un píxel se codifica como un píxel de escape, un valor de píxel para el píxel no existe en la paleta y un valor de píxel para el píxel se señaliza directamente, comprendiendo el procedimiento:
formar una paleta que incluye entradas que representan valores de píxeles para un bloque de los datos de vídeo;
determinar que el bloque de los datos de vídeo incluye uno o más píxeles codificados como píxeles de escape;
descodificar, para cada uno de uno o más píxeles codificados como píxeles de escape, una palabra de código de Golomb exponencial representativa de un valor para el píxel, en el que descodificar la palabra de código de Golomb exponencial comprende descodificar la palabra de código de Golomb exponencial usando descodificación de Golomb exponencial con parámetro 3; y
descodificar el bloque usando el valor para cada uno de los uno o más píxeles codificados como píxeles de escape.
2. El procedimiento de la reivindicación 1, que comprende además:
determinar un valor de tamaño de paso de cuantificación para el bloque codificado en modo de paleta usando un parámetro de cuantificación para el bloque codificado en modo de paleta; y determinar un valor cuantificado máximo para el píxel de escape del bloque codificado en modo de paleta en base al valor de tamaño de paso de cuantificación,
en el que descodificar la palabra de código de Golomb exponencial comprende descodificar la palabra de código de Golomb exponencial usando descodificación de Golomb exponencial truncada, en base al valor máximo cuantificado.
3. Un dispositivo para la descodificación de datos de vídeo que se han codificado en modo de paleta, en el que, en el modo de paleta, los píxeles de un bloque de datos de vídeo se codifican usando una de una referencia a una entrada en una paleta, una referencia a un píxel vecino superior o como un píxel de escape, en el que las entradas en la paleta representan valores de píxeles del bloque, y en el que, cuando un píxel se codifica como un píxel de escape, un valor de píxel para el píxel no existe en la paleta y un valor de píxel para el píxel se señaliza directamente, comprendiendo el dispositivo: medios para formar una paleta que incluye entradas que representan valores de píxeles para un bloque de los datos de vídeo;
medios para determinar que el bloque de los datos de vídeo incluye uno o más píxeles codificados como píxeles de escape;
medios para la descodificación, para cada uno de uno o más píxeles codificados como píxeles de escape, de una palabra de código de Golomb exponencial representativa de un valor para el píxel, en el que los medios para la descodificación de la palabra de código de Golomb exponencial comprenden medios para la descodificación de la palabra de código de Golomb exponencial usando descodificación de Golomb exponencial con parámetro 3; y
medios para la descodificación del bloque usando el valor para cada uno de los uno o más píxeles codificados como píxeles de escape.
4. Un procedimiento de codificación de datos de vídeo en modo de paleta,
en el que, en el modo de paleta, los píxeles de un bloque de datos de vídeo se codifican usando una de una referencia a una entrada en una paleta, una referencia a un píxel vecino superior o como un píxel de escape, en el que las entradas en la paleta representan valores de píxeles del bloque, y en el que, cuando un píxel se codifica como un píxel de escape, un valor de píxel para el píxel no existe en la paleta y un valor de píxel para el píxel se señaliza directamente, comprendiendo el procedimiento: formar una paleta que incluye entradas que representan valores de píxeles para un bloque de los datos de vídeo;
determinar un valor para cada uno de uno o más píxeles del bloque de los datos de vídeo, que se codificarán como píxeles de escape; y
codificar, para cada uno de los uno o más píxeles que se codificarán como píxeles de escape, una palabra de código de Golomb exponencial representativa del valor para el píxel, en el que codificar la palabra de código de Golomb exponencial comprende codificar el Golomb exponencial usando codificación de Golomb exponencial con parámetro 3.
5. El procedimiento de la reivindicación 5, que comprende además:
determinar un valor de tamaño de paso de cuantificación para el bloque codificado en modo de paleta usando un parámetro de cuantificación para el bloque codificado en modo de paleta; y determinar un valor cuantificado máximo para el píxel de escape del bloque codificado en modo de paleta en base al valor de tamaño de paso de cuantificación,
en el que codificar la palabra de código de Golomb exponencial comprende codificar la palabra de código de Golomb exponencial usando descodificación de Golomb exponencial truncada, en base al valor máximo cuantificado.
6. El procedimiento de la reivindicación 2 o la reivindicación 5, en el que la determinación del valor cuantificado máximo comprende determinar el valor cuantificado máximo en base únicamente al valor de tamaño de paso de cuantificación.
7. El procedimiento de la reivindicación 2 o la reivindicación 5, en el que determinar el valor cuantificado máximo comprende determinar el valor cuantificado máximo en base al valor de tamaño de paso de cuantificación, un valor de escala de cuantificación, un valor de desfase de desplazamiento hacia la derecha y un valor de parámetro de desplazamiento hacia la derecha, comprendiendo además el procedimiento valores de codificación representativos del valor de escala de cuantificación, el valor de desfase de desplazamiento hacia la derecha y el valor de parámetro de desplazamiento hacia la derecha de una tabla de consulta.
8. El procedimiento de la reivindicación 8, en el que determinar el valor cuantificado máximo comprende determinar el valor cuantificado máximo sin realizar una operación de recorte.
9. El procedimiento de la reivindicación 2 o la reivindicación 5, en el que determinar el valor cuantificado máximo comprende calcular el valor cuantificado máximo sin realizar una operación de división.
10. El procedimiento de la reivindicación 2 o la reivindicación 5, en el que determinar el valor cuantificado máximo comprende recuperar el valor cuantificado máximo de una tabla de consulta indexada por el parámetro de cuantificación.
11. El procedimiento de la reivindicación 11, que comprende además determinar el parámetro de cuantificación en base a un componente de color que incluye el píxel de escape.
12. Un dispositivo para la codificación de datos de vídeo en modo de paleta,
en el que, en el modo de paleta, los píxeles de un bloque de datos de vídeo se codifican usando una de una referencia a una entrada en una paleta, una referencia a un píxel vecino superior o como un píxel de escape, en el que las entradas en la paleta representan valores de píxeles del bloque, y en el que, cuando un píxel se codifica como un píxel de escape, un valor de píxel para el píxel no existe en la paleta y un valor de píxel para el píxel se señaliza directamente, comprendiendo el dispositivo: medios para formar una paleta que incluye entradas que representan valores de píxeles para un bloque de los datos de vídeo;
medios para determinar un valor para cada uno de uno o más píxeles del bloque de datos de vídeo, que se codificarán como píxeles de escape; y
medios para la codificación, para cada uno de los uno o más píxeles que se codificarán como píxeles de escape, de una palabra de código de Golomb exponencial representativa del valor para el píxel, en el que los medios para la codificación de la palabra de código de Golomb exponencial comprenden medios para la codificación de la palabra de código de Golomb exponencial usando codificación de Golomb exponencial con parámetro 3.
13. Un medio de almacenamiento legible por ordenador que tiene almacenadas en él instrucciones que, cuando son ejecutadas por uno o más procesadores, hacen que dicho uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1,2 y 4-11.
ES16705382T 2015-01-30 2016-01-29 Codificación de píxeles de escape para codificación de paleta Active ES2873548T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562110395P 2015-01-30 2015-01-30
US201562110995P 2015-02-02 2015-02-02
US15/009,678 US10425659B2 (en) 2015-01-30 2016-01-28 Coding escape pixels for palette coding
PCT/US2016/015707 WO2016123513A1 (en) 2015-01-30 2016-01-29 Coding escape pixels for palette coding

Publications (1)

Publication Number Publication Date
ES2873548T3 true ES2873548T3 (es) 2021-11-03

Family

ID=55398443

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16705382T Active ES2873548T3 (es) 2015-01-30 2016-01-29 Codificación de píxeles de escape para codificación de paleta

Country Status (12)

Country Link
US (1) US10425659B2 (es)
EP (1) EP3251355B1 (es)
JP (1) JP6710691B2 (es)
KR (1) KR102218511B1 (es)
CN (1) CN107211139B (es)
AU (1) AU2016211272B2 (es)
BR (1) BR112017016337A2 (es)
EA (1) EA038545B1 (es)
ES (1) ES2873548T3 (es)
TN (1) TN2017000297A1 (es)
TW (1) TWI689195B (es)
WO (1) WO2016123513A1 (es)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107135004B (zh) * 2017-04-20 2020-04-03 中国科学技术大学 一种对地震数据流的自适应实时无损压缩方法
US10706492B2 (en) * 2017-09-05 2020-07-07 Texas Instruments Incorporated Image compression/decompression in a computer vision system
GB2570710B (en) 2018-02-05 2022-10-12 Sony Corp Data encoding and decoding
US10778971B2 (en) * 2018-06-01 2020-09-15 Tencent America LLC Method and apparatus for video coding
US11695919B2 (en) * 2018-08-28 2023-07-04 Google Llc Lossy image compression using palettization of locally mixed colors
WO2020072494A1 (en) * 2018-10-01 2020-04-09 Op Solutions, Llc Methods and systems of exponential partitioning
US10652537B1 (en) * 2018-11-21 2020-05-12 Alibaba Group Holding Limited Coding unit size adaptive palette mode for video compression system
CN113475062A (zh) 2019-02-24 2021-10-01 北京字节跳动网络技术有限公司 确定屏幕内容编解码的条件
JP2022065225A (ja) * 2019-03-08 2022-04-27 シャープ株式会社 Lic部、画像復号装置および画像符号化装置
JP7359936B2 (ja) * 2019-07-20 2023-10-11 北京字節跳動網絡技術有限公司 パレットモードの使用の指示の条件依存符号化
CN114145013B (zh) 2019-07-23 2023-11-14 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
WO2021018166A1 (en) 2019-07-29 2021-02-04 Beijing Bytedance Network Technology Co., Ltd. Scanning order improvements for palette mode coding
MX2022001928A (es) * 2019-08-15 2022-05-24 Beijing Dajia Internet Information Tech Co Ltd Métodos y aparatos de codificación de vídeo usando el modo paleta.
JP7358136B2 (ja) * 2019-09-17 2023-10-10 キヤノン株式会社 画像符号化装置、画像符号化方法、及びプログラム、画像復号装置、画像復号方法、及びプログラム
WO2021055114A1 (en) * 2019-09-20 2021-03-25 Alibaba Group Holding Limited Method and system for signaling chroma quantization parameter offset
JP7201873B2 (ja) * 2019-09-24 2023-01-10 ベイジン ダジア インターネット インフォメーション テクノロジー カンパニー リミテッド 残差及び係数符号化の方法、プログラム並びに装置
KR102626260B1 (ko) * 2019-10-01 2024-01-17 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 잔차 및 계수 코딩 방법 및 장치
WO2021112950A1 (en) * 2019-12-05 2021-06-10 Alibaba Group Holding Limited Method and apparatus for chroma sampling

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717697A (en) * 1990-06-27 1998-02-10 Texas Instruments Incorporated Test circuits and methods for integrated circuit having memory and non-memory circuits by accumulating bits of a particular logic state
CN1501712A (zh) * 2002-11-12 2004-06-02 北京中视联数字系统有限公司 一种实现图文混合显示的方法
US20100124272A1 (en) * 2008-11-19 2010-05-20 Gene Fein Coded pulse data transmission using a look-up table
US8410959B2 (en) * 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data
US8885704B2 (en) * 2010-10-01 2014-11-11 Qualcomm Incorporated Coding prediction modes in video coding
UA109312C2 (uk) * 2011-03-04 2015-08-10 Імпульсно-кодова модуляція з квантуванням при кодуванні відеоінформації
US9237344B2 (en) * 2012-03-22 2016-01-12 Qualcomm Incorporated Deriving context for last position coding for video coding
US9654777B2 (en) * 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
WO2015006169A1 (en) * 2013-07-08 2015-01-15 Sony Corporation Improvement for palette coding mode
US9558567B2 (en) 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
CN104301737B (zh) * 2013-07-15 2017-11-17 华为技术有限公司 目标图像块的解码方法和编码方法以及解码器和编码器
GB2521828A (en) 2013-12-23 2015-07-08 Sony Corp Data encoding and decoding
KR102494913B1 (ko) * 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
KR101982829B1 (ko) 2014-05-23 2019-05-28 에이치에프아이 이노베이션 인크. 팔레트 테이블 예측 및 시그널링을 위한 방법과 장치
WO2015194185A1 (en) * 2014-06-20 2015-12-23 Sharp Kabushiki Kaisha Efficient palette coding for screen content codings

Also Published As

Publication number Publication date
EP3251355A1 (en) 2017-12-06
EP3251355B1 (en) 2021-02-24
CN107211139A (zh) 2017-09-26
KR102218511B1 (ko) 2021-02-19
AU2016211272B2 (en) 2019-11-21
WO2016123513A1 (en) 2016-08-04
TW201633782A (zh) 2016-09-16
KR20170108965A (ko) 2017-09-27
EA201791496A1 (ru) 2017-11-30
JP6710691B2 (ja) 2020-06-17
US20160227247A1 (en) 2016-08-04
TN2017000297A1 (en) 2019-01-16
CN107211139B (zh) 2020-06-16
EA038545B1 (ru) 2021-09-13
US10425659B2 (en) 2019-09-24
TWI689195B (zh) 2020-03-21
JP2018507623A (ja) 2018-03-15
BR112017016337A2 (pt) 2018-03-27
AU2016211272A1 (en) 2017-07-13

Similar Documents

Publication Publication Date Title
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
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
ES2874552T3 (es) Diseño de codificación y descodificación en modo de paleta
CA3007664C (en) Multi-type-tree framework for video coding
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
ES2832607T3 (es) Intrapredicción y codificación intramodo
ES2854699T3 (es) Intrapredicción y codificación intramodo
ES2770664T3 (es) Restricción en el tamaño de bloque de paleta en la codificación de vídeo
ES2777218T3 (es) Inhabilitación de ocultación de datos de signo en codificación de vídeo
ES2898663T3 (es) Perfil, capa, nivel para la 0-ésima capa de salida establecida en la codificación de vídeo
US9558567B2 (en) Palette prediction in palette-based video coding
US9900617B2 (en) Single color palette mode in video coding
EP3005698B1 (en) Residual differential pulse code modulation (dpcm) extensions and harmonization with transform skip, rotation, and scans
KR101825262B1 (ko) B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한
KR20200139163A (ko) 각도 모드들로 연장된 포지션 종속 인트라 예측 결합
US20140301475A1 (en) Determining palette indices in palette-based video coding
OA18377A (en) Coding escape pixels for palette coding.