ES2637490T3 - Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes - Google Patents

Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes Download PDF

Info

Publication number
ES2637490T3
ES2637490T3 ES13718475.0T ES13718475T ES2637490T3 ES 2637490 T3 ES2637490 T3 ES 2637490T3 ES 13718475 T ES13718475 T ES 13718475T ES 2637490 T3 ES2637490 T3 ES 2637490T3
Authority
ES
Spain
Prior art keywords
context
pattern
block
contexts
significance
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
ES13718475.0T
Other languages
English (en)
Inventor
Joel Sole Rojals
Rajan Laxman Joshi
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2637490T3 publication Critical patent/ES2637490T3/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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/18Methods 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 set of transform coefficients
    • 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/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

Un procedimiento para decodificar datos de vídeo, comprendiendo el procedimiento: recibir (1502, 1602), en un flujo de bits, elementos sintácticos de significancia que indican si cada coeficiente de transformada correspondiente de coeficientes de transformada de un subbloque actual de un bloque es un coeficiente de transformada distinto de cero; seleccionar (1504, 1604) un patrón de contextos, que incluye valores de contextos que corresponden a los coeficientes de transformada situados en posiciones respectivas del subbloque, a partir de una pluralidad de patrones de contextos, en el que el patrón de contextos seleccionado identifica contextos para dos o más tipos de barrido del subbloque actual, en el que un tipo de barrido es un proceso de lectura de elementos de una matriz bidimensional para obtener una matriz unidimensional; asignar (1506, 1606) valores de contextos del patrón de contextos seleccionado a los elementos sintácticos de significancia de los coeficientes de transformada para el subbloque actual basándose en posiciones de los valores de contextos en el patrón de contextos seleccionado y posiciones de los coeficientes de transformada correspondientes a elementos sintácticos significativos; y decodificar mediante codificación aritmética binaria adaptativa según el contexto (CABAC) (1508, 1608) los elementos sintácticos de significancia de los coeficientes de transformada del subbloque actual mediante unos valores de contextos asignados respectivos.

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Grupos de coeficientes y codificacion de coeficientes para barridos de coeficientes CAMPO TECNICO
La presente divulgacion se refiere a la codificacion de video y, de forma mas particular, a tecnicas para codificar elementos sintacticos en la codificacion de video.
ANTECEDENTES
Las capacidades de video digital pueden incorporarse a una amplia gama de dispositivos, incluidos televisores digitales, sistemas de radiodifusion digital directa, sistemas de radiodifusion inalambrica, asistentes digitales personales (PDA), ordenadores portatiles o de escritorio, ordenadores de tableta, lectores de libros electronicos, camaras digitales, dispositivos de grabacion digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos celulares o de radio por satelite, los denominados "telefonos inteligentes", dispositivos de videoconferencia, dispositivos de emision de video en continuo y similares. Los dispositivos de video digital implementan tecnicas de compresion de video definidas de acuerdo con las normas de codificacion de video. Los dispositivos de video digital pueden transmitir, recibir, codificar, decodificar y/o almacenar informacion de video digital mas eficazmente, implementando dichas tecnicas de compresion de video. Entre las normas de codificacion de video se 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 (tambien conocida como ISO/IEC MPEG-4 AVC), incluidas sus ampliaciones de codificacion de video escalable (SVC) y de codificacion de video multivista (MVC). Ademas, la codificacion de video de alta eficiencia (HEVC) es una norma de codificacion de video que esta en proceso de elaboracion por el Equipo de Colaboracion Conjunta en Codificacion de Video (JCT-VC) del Grupo de Expertos en Codificacion de Video (VCEG) de ITU-T y el Grupo de Expertos en Imagenes en Movimiento (MPEG) de ISO/IEC.
Las tecnicas de compresion de video llevan a cabo la prediccion espacial (intraimagen) y/o la prediccion temporal (interimagen) para reducir o eliminar la redundancia intrinseca en las secuencias de video. Para la codificacion de video basada en bloques, un segmento de video (por ejemplo, una trama de video o una parte de una trama de video) puede dividirse en bloques de video, que tambien pueden denominarse bloques de arbol, unidades de codificacion (CU) y/o nodos de codificacion. Los bloques de video de un segmento intracodificado (I) de una imagen se codifican mediante prediccion espacial con respecto a unas muestras de referencia de unos bloques contiguos de la misma imagen. Los bloques de video de un segmento intercodificado (P o B) de una imagen pueden utilizar prediccion espacial con respecto a unas muestras de referencia de unos bloques vecinos de la misma imagen, o prediccion temporal con respecto a unas muestras de referencia de otras imagenes de referencia. Las imagenes pueden denominarse tramas, y las imagenes de referencia pueden denominarse tramas de referencia.
La prediccion espacial o temporal dan como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de pixeles 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 que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de codificacion intra y los datos residuales. Para una mayor compresion, los datos residuales pueden transformarse desde el dominio del pixel a un dominio de transformada, dando como resultado unos coeficientes de transformada residual, que posteriormente se pueden cuantificar. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden leerse mediante barrido con el fin de generar un vector unidimensional de coeficientes de transformada, y puede aplicarse codificacion de entropia para lograr aun mas compresion.
El documento US 2012/0082233 A1 de Sze et al. Divulga un procedimiento y un aparato para codificar un codigo de bits mediante simplificacion de dependencia de contexto para reducir los barridos dependientes. El procedimiento incluye recuperar al menos una matriz de 2 dimensiones de coeficientes de transformada, transformar la al menos una matriz de 2 dimensiones del mapa de significancia de los coeficientes de transformada en un barrido de coeficientes de 1 dimension y determinar al menos uno de entre una direccion de barrido y un tipo de unidad de codificacion y un tipo de segmento asignados al coeficiente de transformada, seleccionar vecinos basandose en al menos uno de entre una direccion de barrido y un tipo de unidad de codificacion y un tipo de segmento, calcular un indice de contexto basandose en los valores de los vecinos seleccionados para seleccion de contexto y realizar una codificacion aritmetica para generar un bit codificado mediante el indice de contexto y la binarizacion calculados.
RESUMEN
En general, esta divulgacion describe tecnicas para codificar y decodificar datos que representan la significancia de los coeficientes de transformada, tales como los indicadores de coeficiente de significancia y los indicadores de grupos de coeficientes, en la codificacion de coeficientes de transformada. Se describen varias tecnicas para determinar un contexto que se va a utilizar para realizar la codificacion CABAC (codificacion aritmetica binaria
5
10
15
20
25
30
35
40
45
50
55
60
65
adaptativa segun el contexto) de los elementos sintacticos asociados con los coeficientes de transformada.
Por ejemplo, en algunas tecnicas, un codificador de video y un decodificador de video seleccionan un patron de contextos de una misma pluralidad de patrones de contextos para un tipo de barrido de un barrido horizontal, un barrido vertical y un barrido diagonal. En otras palabras, independientemente de si un subbloque se lee mediante barrido vertical, horizontal o diagonal, el codificador de video y el decodificador de video pueden seleccionar el patron de contextos a partir de los mismos patrones de contextos para los tres tipos de barrido. El codificador de video y el decodificador de video utilizan los contextos del patron de contextos seleccionado para realizar la codificacion CABAC o la decodificacion CABAC, respectivamente, de los elementos sintacticos de significancia de un bloque de transformada.
En otro ejemplo, en algunas tecnicas, un codificador de video y un decodificador de video pueden seleccionar un patron de contextos. En algunos ejemplos, el codificador de video y el decodificador de video utilizan el patron de contextos seleccionado para dos o mas tipos de barrido del subbloque. Por ejemplo, si el subbloque se lee mediante barrido horizontal, el codificador de video y el decodificador de video utilizan el patron de contextos seleccionado y si el subbloque se lee mediante barrido vertical, el codificador de video y el decodificador de video utilizan el patron de contextos seleccionado.
En un ejemplo, la divulgacion describe un procedimiento para decodificar datos de video. El procedimiento comprende recibir, en un flujo de bits, elementos sintacticos de significancia para coeficientes de transformada de un subbloque actual de un bloque, seleccionar un patron de contextos a partir de una pluralidad de patrones de contextos bidimensionales para una pluralidad de tipos de barrido para los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual, en el que la pluralidad de patrones de contextos bidimensionales es la misma para cada uno de la pluralidad de tipos de barrido, y en el que cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas subbloques vecinos, asignar contextos a cada uno de los elementos sintacticos de significancia de los coeficientes de transformada basandoseen el patron de contextos seleccionado y decodificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados.
En otro ejemplo, la divulgacion describe un dispositivo para decodificar datos de video, comprendiendo el dispositivo un decodificador de video configurado para recibir, en un flujo de bits, elementos sintacticos de significancia para coeficientes de transformada de un subbloque actual de un bloque, seleccionar un patron de contextos de una pluralidad de patrones de contextos bidimensionales para una pluralidad de tipos de barrido para los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual, en el que la pluralidad de patrones de contextos bidimensionales es la misma para cada uno de la pluralidad de tipos de barrido, y en el que cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas subbloques vecinos, asignar contextos a cada uno de los elementos sintacticos de significancia de los coeficientes de transformada basandoseen el patron de contextos seleccionado, y decodificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados.
En otro ejemplo, la divulgacion describe unos medios de almacenamiento legibles por ordenador que tienen instrucciones almacenadas que, al ejecutarse, hacen que uno o mas procesadores de un dispositivo para decodificar datos de video reciban, en un flujo de bits, elementos sintacticos de significancia para coeficientes de transformada de un subbloque de un bloque, seleccionen un patron de contextos de una pluralidad de patrones de contextos bidimensionales para una pluralidad de tipos de barrido para los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual, en el que la pluralidad de patrones de contextos bidimensionales es la misma para cada uno de la pluralidad de tipos de barrido, y en el que cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas subbloques vecinos, asignen contextos a cada uno de los elementos sintacticos de significancia de los coeficientes de transformada basandose en el patron de contextos seleccionado y decodifiquen mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados.
En otro ejemplo, la divulgacion describe un procedimiento para codificar datos de video. El procedimiento comprende generar elementos sintacticos de significancia para coeficientes de transformada de un subbloque actual de un bloque, seleccionar un patron de contextos de una pluralidad de patrones de contextos bidimensionales para una pluralidad de tipos de barrido para los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual, en el que la pluralidad de patrones de contextos bidimensionales es la misma para cada uno de la pluralidad de tipos de barrido, y en el que cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas subbloques vecinos, asignar contextos a cada uno de los elementos sintacticos de significancia de los coeficientes de transformada basandose en el patron de contextos seleccionado, codificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados, y facilitar los elementos sintacticos de significancia
5
10
15
20
25
30
35
40
45
50
55
60
65
codificados.
En otro ejemplo, la divulgacion describe un dispositivo para codificar datos de video, comprendiendo el dispositivo un codificador de video configurado para generar elementos sintacticos de significancia para coeficientes de transformada de un subbloque actual de un bloque, seleccionar un patron de contextos a partir de una pluralidad de patrones de contextos para una pluralidad de tipos de barrido para los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual, en el que la pluralidad de patrones de contextos bidimensionales es la misma para cada uno de la pluralidad de tipos de barrido, y en el que cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas subbloques, asignar contextos a cada uno de los elementos sintacticos de significancia de los coeficientes de transformada basandoseen el patron de contextos seleccionado, codificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados, y facilitar los elementos sintacticos de significancia codificados.
En otro ejemplo, la divulgacion describe un dispositivo para codificar datos de video, comprendiendo el dispositivo medios para generar elementos sintacticos de significancia para coeficientes de transformada de un subbloque actual de un bloque, medios para seleccionar un patron de contextos a partir de una pluralidad de patrones de contextos bidimensionales para una pluralidad de tipos de barrido para los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual, en el que la pluralidad de patrones de contextos bidimensionales es la misma para cada uno de la pluralidad de tipos de barrido y en el que cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas subbloques vecinos, medios para asignar contextos a cada uno de los elementos sintacticos de significancia de los coeficientes de transformada basandoseen el patron de contextos seleccionado, medios para codificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados, y medios para facilitar los elementos sintacticos de significancia codificados.
En otro ejemplo, la divulgacion describe un procedimiento para decodificar datos de video. El procedimiento comprende recibir, en un flujo de bits, elementos sintacticos de significancia de coeficientes de transformada para un subbloque actual de un bloque, seleccionar un patron de contextos, en el que el patron de contextos identifica contextos para dos o mas tipos de barrido del subbloque actual, asignar contextos a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en el patron de contextos seleccionado y decodificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados.
En otro ejemplo, la divulgacion describe un dispositivo para decodificar datos de video, comprendiendo el dispositivo un decodificador de video configurado para recibir, en un flujo de bits, elementos sintacticos de significancia de coeficientes de transformada para un subbloque actual de un bloque, seleccionar un patron de contextos, en el que el patron de contextos identifica contextos para dos o mas tipos de barrido del subbloque actual, asignar contextos a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en el patron de contextos seleccionado y decodificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados.
En otro ejemplo, la divulgacion describe unos medios de almacenamiento legibles por ordenador que tienen instrucciones almacenadas que, al ejecutarse, hacen que uno o mas procesadores de un dispositivo para decodificar datos de video reciban, en un flujo de bits, elementos sintacticos de significancia de coeficientes de transformada para un subbloque de un bloque, seleccionen un patron de contextos, en el que el patron de contextos identifica contextos para dos o mas tipos de barrido del subbloque actual, asignen contextos a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en el patron de contextos seleccionado, y decodifiquen mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados.
En otro ejemplo, la divulgacion describe un procedimiento para codificar datos de video. El procedimiento comprende generar elementos sintacticos de significancia de coeficientes de transformada para un subbloque actual de un bloque, seleccionar un patron de contextos, en el que el patron de contextos identifica contextos para dos o mas tipos de barrido del subbloque actual, asignar contextos a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en el patron de contextos seleccionado, codificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados, y facilitar los elementos sintacticos de significancia codificados.
En otro ejemplo, la divulgacion describe un dispositivo para codificar datos de video, comprendiendo el dispositivo
5
10
15
20
25
30
35
40
45
50
55
60
65
un codificador de video configurado para generar elementos sintacticos de significancia de coeficientes de transformada para un subbloque actual de un bloque, seleccionar un patron de contextos, en el que el patron de contextos identifica contextos para dos o mas tipos de barrido del subbloque actual, asignar contextos a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en el patron de contextos seleccionado, codificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados, y facilitar los elementos sintacticos de significancia codificados.
En otro ejemplo, la divulgacion describe un dispositivo para codificar datos de video, comprendiendo el dispositivo medios para generar elementos sintacticos de significancia de coeficientes de transformada para un subbloque actual de un bloque, medios para seleccionar un patron de contextos, en el que el patron de contextos identifica contextos para dos o mas tipos de barrido del subbloque actual, medios para asignar contextos a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en el patron de contextos seleccionado, medios para codificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual basandose en los contextos asignados, y medios para facilitar los elementos sintacticos de significancia codificados.
Los detalles de uno o mas ejemplos se exponen en los dibujos adjuntos y en la siguiente descripcion. Otras caracteristicas, objetos y ventajas resultaran evidentes a partir de la descripcion y los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCION DE LOS DIBUJOS
La FIG. 1 es un diagrama conceptual que ilustra un ejemplo de grupos de coeficientes y barridos para un bloque de video.
Las FIGS. 2A-2B son diagramas conceptuales que ilustran ejemplos de grupos de coeficientes y barridos para un bloque de video.
Las FIGS. 3A-3B son diagramas conceptuales que ilustran ejemplos de grupos de coeficientes y barridos para un bloque de video.
La FlG. 4 es un diagrama conceptual que ilustra una relacion entre los coeficientes de transformada de un bloque de video y un mapa de significancia asociado con el bloque de video.
Las FIGS. 5A-5D son diagramas conceptuales que ilustran un ejemplo de patrones para la asignacion de contexto para los coeficientes de un subbloque.
La FIG. 6 es un diagrama de bloques que ilustra un ejemplo de sistema de codificacion y decodificacion de video que puede utilizar las tecnicas de prediccion inter descritas en esta divulgacion.
La FIG. 7 es un diagrama de bloques que ilustra un ejemplo de codificador de video que puede implementar las tecnicas de prediccion inter descritas en esta divulgacion.
La FIG. 8 es un diagrama de bloques que ilustra un ejemplo de codificador de entropia que puede implementar tecnicas para realizar la codificacion de entropia de unos elementos sintacticos predictivos de acuerdo con esta divulgacion.
Las FIGS. 9A-9D son diagramas conceptuales que ilustran ejemplos de patrones para la asignacion de contexto para los coeficientes de un subbloque.
La FIG. 10 es un diagrama conceptual que ilustra un ejemplo de patron para la asignacion de contexto para los coeficientes de un subbloque.
La FIG. 11 es un diagrama de flujo que ilustra la codificacion de elementos sintacticos predictivos de acuerdo con las tecnicas de esta divulgacion.
FIG. 12 es un diagrama de flujo que ilustra la codificacion de elementos sintacticos predictivos de acuerdo con las tecnicas de esta divulgacion.
La FIG. 13 es un diagrama de bloques que ilustra un ejemplo de decodificador de video que puede implementar las tecnicas de prediccion inter descritas en esta divulgacion.
La FIG. 14 es un diagrama de bloques que ilustra un ejemplo de codificador de entropia que puede implementar tecnicas para decodificar elementos sintacticos predictivos de acuerdo con esta divulgacion.
La FIG. 15 es un diagrama de flujo que ilustra la decodificacion de elementos sintacticos predictivos de acuerdo con las tecnicas de esta divulgacion.
La FIG. 16 es un diagrama de flujo que ilustra la decodificacion de elementos sintacticos predictivos de acuerdo con las tecnicas de esta divulgacion.
DESCRIPCION DETALLADA
Un codificador de video disenado de acuerdo con algunos ejemplos, tal como el propuesto en el borrador de trabajo 7 (WD7) de la norma de codificacion de video de alta eficiencia (HEVC), denominado en el presente documento HEVC WD7 y disponible en
http://phenix.itsudparis.eu /jct/doc_end_user/documents/9_Geneva/wgll/JCTVC-I1003- v5.zip, puede requerir un acceso de datos para los grupos de coeficientes no cuadrados diferente al de un grupo de coeficientes de subbloque 4x4. Esto puede imponer una complejidad de hardware y software adicional durante la implementacion del codificador de video. La complejidad adicional de hardware y software puede reducirse si se eliminan los grupos de coeficientes no cuadrados y se leen mediante barrido los coeficientes de subbloque 4x4 de
5
10
15
20
25
30
35
40
45
50
55
60
65
acuerdo con uno de un tipo de barrido diagonal, vertical u horizontal. Sin embargo, esta modificacion puede reducir la eficiencia de codificacion cuando las obtenciones de contexto definidas de acuerdo con HEVC WD7 se utilizan para asignar contextos a elementos sintacticos que indican si un subbloque incluye coeficientes significativos. Por lo tanto, esta divulgacion describe una tecnica para asignar contextos para elementos sintacticos que indican si un subbloque incluye coeficientes significativos que pueden proporcionar una eficiencia de codificacion mejorada.
Por ejemplo, en algunas de estas otras tecnicas (es decir, aquellas que no estan necesariamente de acuerdo con las tecnicas descritas en esta divulgacion), se utilizan patrones de contextos para un subconjunto de los tamanos posibles para unidades de transformada (TU o bloques de transformada) para la codificacion de elementos sintacticos que indican la significancia de los coeficientes de transformada de las unidades de transformada (conocidos como elementos sintacticos de significancia). Ademas, estas otras tecnicas utilizaban los patrones de contextos para tipos de barrido limitados. En consecuencia, se desperdician recursos computacionales al tener que determinar el tamano de la TU para poder determinar si se pueden utilizar patrones de contextos.
En las tecnicas descritas en esta divulgacion, se utilizan los mismos patrones de contextos para una pluralidad de tipos de barrido (por ejemplo, un barrido horizontal, un barrido vertical y un barrido diagonal) para una variedad de TU de diferentes tamanos. Por ejemplo, un codificador de video o un decodificador de video pueden seleccionar un patron de contextos a partir de la misma pluralidad de patrones de contextos para un subbloque 4x4 de una TU 8x8, independientemente del tipo de barrido para el subbloque 4x4 (por ejemplo, independientemente de si el subbloque 4x4 se lee mediante barrido horizontal, se lee mediante barrido vertical o se lee mediante barrido diagonal). Como se describe con mas detalle, cada uno de la pluralidad de patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada significativo (por ejemplo, algun coeficiente de transformada distinto de cero) en uno o mas subbloques vecinos. Como tambien se describe en mayor detalle, esta divulgacion describe caracteristicas de la pluralidad de patrones de contextos a partir de los cuales el codificador de video o decodificador de video selecciona el patron de contexto. De esta manera, pueden obtenerse eficiencias computacionales, puesto que el codificador de video y el decodificador de video pueden utilizar los mismos patrones de contextos para determinar contextos para unos elementos sintacticos de significancia para una pluralidad de tipos de barrido (por ejemplo, un barrido horizontal, un barrido vertical y un barrido diagonal) para los elementos sintacticos de significancia del subbloque, incluidos un subbloque 4x4 de un bloque 8x8 (es decir, una TU 8x8).
En los ejemplos anteriores, los patrones de contextos pueden ser patrones de contextos bidimensionales. Sin embargo, los aspectos de esta divulgacion no estan limitados a lo anterior. En algunos ejemplos, el codificador de video y el decodificador de video seleccionan un patron de contextos (por ejemplo, uno que se almacena como un patron de contextos unidimensional). Por ejemplo, algunos patrones de contextos pueden definirse como patrones de contextos bidimensionales. Tal vez seria posible precalcular un patron de contextos unidimensional a partir del patron de contextos bidimensional. El precalculo puede agilizar el proceso de codificacion y decodificacion. Por ejemplo, los coeficientes de transformada de un bloque bidimensional pueden convertirse en un bloque unidimensional. Con los patrones unidimensionales precalculados, pueden obtenerse eficiencias de codificacion y decodificacion si se utiliza un patron unidimensional para codificar o decodificar los elementos sintacticos de significancia, debido a que los coeficientes de transformada se convierten en un bloque unidimensional, en comparacion con la utilizacion del patron de contextos bidimensional en un bloque unidimensional. Debe entenderse que no se requiere precalcular el patron de contextos unidimensional a partir del patron de contextos bidimensional en cada ejemplo, y que eso no debe considerarse como una forma limitada de determinar el patron de contextos unidimensional.
Puede haber varias maneras en las que se puede calcular el patron de contextos unidimensional. En un ejemplo se lee un patron de contextos bidimensional mediante barrido diagonal, barrido horizontal y barrido vertical para generar tres patrones de contextos unidimensionales (por ejemplo, uno para cada tipo de barrido). En las tecnicas descritas en esta divulgacion, los patrones de contextos bidimensionales pueden comprender caracteristicas que reducen el numero total de patrones de contextos unidimensionales que se generan.
Por ejemplo, si hay cuatro patrones de contextos bidimensionales cada uno de los cuales se lee mediante barrido horizontal, vertical y diagonal para generar patrones de contextos unidimensionales, entonces habria un total de 12 patrones de contextos unidimensionales. En algunos ejemplos, los cuatro patrones de contextos bidimensionales pueden incluir contextos dispuestos de tal manera que dos barridos diferentes dan como resultado el mismo patron de contextos unidimensional.
Por ejemplo, uno de los patrones de contextos bidimensionales puede incluir contextos que si se leen mediante barrido horizontal o vertical dan como resultado el mismo patron de contextos unidimensional. En otro ejemplo, uno de los patrones de contextos bidimensionales puede incluir contextos que cuando se leen mediante barrido horizontal dan como resultado un patron de contextos unidimensional que es el mismo vector unidimensional que resultaria si se leyera mediante barrido vertical otro de los patrones de contextos bidimensionales . En otro ejemplo, uno de los patrones de contextos bidimensionales puede incluir contextos que cuando se leen mediante barrido horizontal, vertical y diagonal dan como resultado el mismo patron de contextos unidimensional.
De esta manera, puede haber superposicion en los patrones de contextos unidimensionales resultantes del diferente
5
10
15
20
25
30
35
40
45
50
55
60
65
barrido de los patrones de contexto, lo que reduce el numero total de patrones de contextos unidimensionales que es necesario almacenar. Esto permite utilizar un patron de contextos para dos o mas tipos de barrido del subbloque.
Por ejemplo, tal como se ha descrito anteriormente, uno de los patrones de contextos bidimensionales incluye contextos que cuando se leen mediante barrido horizontal, vertical y diagonal dan como resultado el mismo patron de contextos unidimensional. Por consiguiente, para este patron de contextos solo se almacena un patron de contextos unidimensional, porque el patron de contextos unidimensional es el mismo para los tres tipos de barridos de patrones de contexto.
En otro ejemplo, uno de los patrones de contextos bidimensionales incluye contextos que cuando se leen mediante barrido horizontal o vertical dan como resultado el mismo patron de contextos unidimensional. En este caso, se almacena el patron de contextos unidimensional para el barrido diagonal y se almacena el patron de contextos unidimensional para el barrido horizontal o el barrido vertical, pero no ambos, porque el patron de contextos unidimensional que resulta del barrido horizontal y vertical es el mismo. En estos ejemplos, estos patrones de contextos unidimensionales calculados a partir de los patrones de contextos bidimensionales pueden precalcularse y almacenarse, lo que puede agilizar los procesos de codificacion y decodificacion.
Ademas, en algunos ejemplos, el patron de contextos unidimensional no tiene necesariamente que calcularse a partir de un patron de contextos bidimensional. Mas bien, el patron de contextos unidimensional puede preseleccionarse y almacenarse como un patron de contextos unidimensional. Incluso en estos ejemplos, el patron de contextos unidimensional puede identificar contextos para dos o mas tipos de barrido del subbloque actual.
Los dispositivos de video digital implementan tecnicas de compresion de video para codificar y decodificar informacion de video digital con mas eficacia. Las tecnicas de compresion de video pueden definirse de acuerdo con una norma de codificacion de video, tal como la norma HEVC actualmente en elaboracion por el JCT-VC. Los trabajos de normalizacion HEVC se basan en un modelo de dispositivo de codificacion de video denominado modelo de prueba HEVC (HM). El HM supone mejoras en las capacidades de los dispositivos de codificacion de video con respecto a los dispositivos de codificacion de video disponibles durante la elaboracion de normas de codificacion de video anteriores, por ejemplo, la ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificacion de prediccion intra, la norma HEVC proporciona hasta treinta y cinco modos de codificacion mediante prediccion intra. Ademas, como parte de los trabajos de normalizacion HEVC, el JCT-VC ha definido condiciones de prueba que pueden utilizarse para evaluar como las modificaciones individuales a los borradores de la norma HEVC pueden afectar al rendimiento general de codificacion. Uno de los criterios utilizados para evaluar el rendimiento de la codificacion es la denominada velocidad en baudios.
Un borrador de trabajo (WD) reciente de la norma HEVC, denominado “Borrador de trabajo HEVC 7 ” o “WD7”, se describe en el documento JCTVC-I1003_d4, de Bross et al., "High efficiency video coding (HEVC) text specification draft 7, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SGl6 WP3 and ISO/IEC JTC1/SC29/WG11, 9th Meeting: Ginebra, Suiza, abril-mayo de 2012. Ademas, otro borrador de trabajo reciente de la norma HEVC, el Borrador 9 (WD9), se describe en el documento HCTVC-J1003_d7, de Bross, et al., "High Efficiency Video Coding (HEVC) Text Specification Draft 9," Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 11th Meeting: Shanghai, CN, octubre de 2012. La ultima version del WD9 se encuentra en
http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v29.zip.
Aunque las tecnicas de esta divulgacion se describen con respecto a la norma ITU-T H.264 y la proxima norma HEVC, las tecnicas de esta divulgacion son aplicables, en general, a cualquier norma de codificacion de video. La codificacion, de acuerdo con algunos de los aspectos propuestos actualmente de la norma HEVC en proceso de elaboracion, se describira en esta solicitud con fines ilustrativos. Sin embargo, las tecnicas descritas en esta divulgacion pueden ser tambien utiles y aplicarse a otros procesos de codificacion de video, tales como los que se definen de acuerdo con la norma H.264 u otra norma, o procesos de codificacion de video patentados.
Una secuencia de video incluye tipicamente una serie de tramas de video, tambien denominadas imagenes. Un grupo de imagenes (GOP) comprende en general una serie de una o mas de las tramas de video. Un GOP puede incluir datos sintacticos en una cabecera del GOP, en una cabecera de una o mas de las imagenes o en otras ubicaciones, que describen un numero de imagenes incluidas en el GOP. Cada trama puede incluir una pluralidad de segmentos. Cada segmento de una imagen puede incluir datos sintacticos de segmento que describen un modo de codificacion para el segmento respectivo. Cada segmento puede incluir una pluralidad de bloques de video o unidades de codificacion. Los bloques de video pueden tener tamanos fijos o variables y pueden diferir en tamano de acuerdo con una norma de codificacion especificada.
Los bloques de video pueden codificarse aplicando tecnicas de prediccion espacial (intratrama) y/o prediccion temporal (intertrama) para reducir o eliminar la redundancia intrinseca en las secuencias de video. Una prediccion espacial puede denominarse "modo intra" (modo I), y una prediccion temporal puede denominarse "modo inter" (modo P o modo B). Las tecnicas de prediccion generan un bloque predictivo de datos de video, que tambien puede denominarse bloque de muestras de referencia. Un bloque de datos de video original que se va a codificar se compara con el bloque predictivo. La diferencia entre el bloque de video original y el bloque predictivo puede
5
10
15
20
25
30
35
40
45
50
55
60
65
denominarse datos residuales. Los datos residuales son tipicamente una matriz de la diferencia entre los valores de pixeles de un bloque predictivo y el bloque original de datos de video.
Se puede aplicar una transformada, por ejemplo, una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, una transformada entera, una transformada de wavelet, u otro tipo de transformada, a los datos residuales durante el proceso de codificacion para generar un conjunto correspondiente de coeficientes de transformada. Por lo tanto, el bloque original de video puede reconstruirse aplicando una transformada inversa a los coeficientes de transformada y anadiendo los datos residuales al bloque predictivo. Los coeficientes de transformada tambien pueden cuantificarse. La cuantificacion se refiere en general a un proceso en el que unos coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos utilizados para representar los coeficientes, proporcionando compresion adicional. Es decir, los valores de los coeficientes de transformada pueden representarse como una cadena de bits de acuerdo con una profundidad de bits definida. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificacion, donde m es menor que n. En algunos casos, la cuantificacion puede tener como resultado que los coeficientes de transformada de bajo valor se representen como cero. Los coeficientes de transformada cuantificados pueden denominarse niveles de coeficientes de transformada.
Despues de la cuantificacion, los coeficientes de transformada cuantificados pueden someterse a codificacion de entropia de acuerdo con una metodologia de codificacion de entropia, tal como, por ejemplo, codificacion de longitud variable adaptativa segun el contenido (CAVLC), codificacion aritmetica binaria adaptativa segun el contexto (CABAC) o codificacion de entropia por division de intervalos de probabilidad (PIPE). Tambien puede llevarse a cabo la codificacion de entropia de elementos sintacticos, tales como un elemento sintactico que define un modo de prediccion. Para realizar la CAVLC, un codificador de video puede seleccionar un codigo de longitud variable para un simbolo que se va a transmitir. Las palabras de codigo en la VLC pueden construirse de forma que los codigos relativamente mas cortos correspondan a simbolos mas probables, mientras que los codigos mas largos correspondan a simbolos menos probables. Para realizar la CABAC, un codificador de video puede asignar un contexto de un modelo de contextos a un simbolo que se va a transmitir.
Para algunas tecnicas de codificacion de entropia se puede utilizar un orden de barrido predefinido para leer mediante barrido los coeficientes de transformada cuantificados a fin de generar un vector en serie de coeficientes de transformada cuantificados que se puede someter a codificacion de entropia. Por tanto, de acuerdo con la codificacion de video predictiva, los valores residuales que comprenden valores de diferencias de pixeles se pueden transformar en coeficientes de transformada, cuantificar y leer mediante barrido para generar coeficientes de transformada en serie para la codificacion de entropia.
Para la codificacion de video, por ejemplo, una trama de video se puede dividir en uno o mas segmentos, donde un segmento incluye un numero entero consecutivo de unidades de codificacion. Una unidad de codificacion (CU) en general se refiere a una zona de imagen rectangular que sirve de unidad basica a la cual se aplican diversas herramientas de codificacion para la compresion de video. En general, las tecnicas de esta divulgacion se refieren a la transformacion, cuantificacion, lectura mediante barrido y codificacion de entropia de los datos de una CU. Una CU es cuadrada tipicamente y puede considerarse similar al denominado "macrobloque" que se describe en otras normas de codificacion de video, tales como, por ejemplo, la ITU-T H.264. Una CU puede considerarse una matriz de valores de muestra de video. Los valores de muestra de video tambien pueden denominarse elementos de imagen, pixeles o pels. Una CU habitualmente tiene un componente de luminancia, denominado Y, y dos componentes de croma, denominados U y V. Los dos componentes de croma tambien pueden denominarse componentes Cb y Cr, respectivamente. El tamano de una CU puede definirse de acuerdo con un numero de muestras horizontales y verticales. Por lo tanto, una CU puede describirse como una CU NxN o NxM. En esta divulgacion, "NxN" y "N por N" pueden utilizarse indistintamente para hacer referencia a las dimensiones de pixeles de un bloque de video en terminos de las dimensiones vertical y horizontal, por ejemplo, 16x16 pixeles o 16 por 16 pixeles. En general, un bloque 16x16 tendra 16 pixeles en una direccion vertical (y = 16) y 16 pixeles en la direccion horizontal (x = 16). Asimismo, un bloque NxN presenta en general N pixeles en una direccion vertical y N pixeles en una direccion horizontal, donde N representa un valor entero no negativo. Los pixeles de un bloque pueden estar dispuestos en filas y columnas. Ademas, los bloques no tienen que presentar necesariamente el mismo numero de pixeles en la direccion horizontal y en la direccion vertical. Por ejemplo, los bloques pueden comprender NxM pixeles, donde M no es necesariamente igual a N.
Para lograr una mejor eficiencia de codificacion, una CU puede tener tamanos variables dependiendo del contenido de video. De acuerdo con la HEVC, los datos sintacticos de un flujo de bits pueden definir la unidad de codificacion mas grande (LCU), que es la CU mas grande para una trama o una imagen en terminos del numero de muestras. Tipicamente, una LCU incluye muestras de luma 64x64, pero el tamano de una LCU puede variar dependiendo de la aplicacion de codificacion. Las LCU tambien pueden denominarse "unidades de arbol de codificacion". Las CU de otras dimensiones pueden generarse dividiendo recursivamente una LCU en varias sub-CU. La division de las LCU en sub-CU se puede realizar mediante una estructura de arbol cuaternario conocido como "arbol cuaternario residual" (RQT). Por tanto, las LCU tambien pueden denominarse bloques de arbol. De acuerdo con la division de arbol cuaternario, un nodo raiz del arbol cuaternario, tal como una LCU, puede dividirse en cuatro nodos mas pequenos, y cada nodo hijo puede a su vez dividirse en otros cuatro nodos mas pequenos. Los datos sintacticos
5
10
15
20
25
30
35
40
45
50
55
60
65
para un flujo de bits pueden definir un numero maximo de veces en que puede dividirse una LCU, que se denomina profundidad de CU. Por consiguiente, un flujo de bits tambien puede definir una unidad que es la unidad de codificacion mas pequena (SCU). Tipicamente, una SCU incluye muestras de luma 8x8. Por tanto, en un ejemplo, pueden generarse cuatro CU 32x32 dividiendo una LCU 64x64 en cuatro sub-CU, y cada una de las CU 32x32 puede dividirse ademas en dieciseis CU 8x8.
Una CU puede incluir una o mas unidades de prediccion (PU) asociadas y/o unidades de transformada (TU). En general, una PU incluye datos que se utilizan para generar un bloque predictivo de datos de video para una CU. Las PU tambien pueden denominarse "divisiones de prediccion". Los datos sintacticos asociados a una CU pueden describir la division de una CU en una o mas PU. Una TU puede tener una forma cuadrada o no cuadrada. Los datos de tipo incluidos en una PU pueden diferir dependiendo de si la CU esta codificada en modo de salto o directo, codificada en modo de prediccion intra o codificada en modo de prediccion inter. Por ejemplo, cuando la CU va a codificarse en modo intra, una PU puede incluir datos que describen un modo de prediccion intra y cuando la CU va a codificarse en modo inter, una PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolucion para el vector de movimiento (por ejemplo, una precision de un cuarto de pixel o una precision de un octavo de pixel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imagenes de referencia para el vector de movimiento. Despues de la prediccion mediante las PU de una CU, un codificador de video puede calcular los datos residuales para una CU.
El HM admite la prediccion en diversos tamanos de PU. Suponiendo que el tamano de una CU particular sea 2Nx2N, el HM admite la prediccion intra en tamanos de PU de 2Nx2N o NxN y la prediccion inter en tamanos de PU simetricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM tambien admite la division asimetrica para la prediccion inter en tamanos de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la division asimetrica, una direccion de una CU no esta dividida, mientras que la otra direccion esta dividida en 25 % y 75 %. La parte de la CU correspondiente a la division de 25 % esta indicada por una “n” seguida de una indicacion “arriba”, “abajo”, “izquierda” o “derecha”. Asi, por ejemplo, “2NxnU” se refiere a una CU 2Nx2N que esta dividida horizontalmente con una PU 2Nx0,5N encima y una PU 2Nx1,5N debajo.
Como se ha descrito anteriormente, puede aplicarse una transformada a unos datos residuales para transformar los datos residuales de un dominio de pixel en un dominio de transformada. La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamano de las TU tipicamente se basa en el tamano de las PU de una CU dada, aunque puede que no siempre sea asi. El tamano de una TU puede ser igual al tamano de una CU, o una CU puede dividirse en una pluralidad de TU. Las TU presentan tipicamente el mismo tamano o un tamano mas pequeno que las PU. Los datos sintacticos asociados a una CU tambien pueden describir la division de la CU en una o mas TU de acuerdo con un arbol cuaternario.
En general, se utiliza una TU en el proceso de transformar datos residuales en coeficientes de transformada. Una TU puede tener forma cuadrada o no cuadrada. Por ejemplo, un bloque de 8x8 valores residuales puede transformarse en un conjunto de 8x8 coeficientes de transformada. Este conjunto de coeficientes de transformada se puede denominar mas generalmente como bloque de transformada. Por ejemplo, se puede aplicar una transformada a los valores residuales asociados con la matriz de muestras 16x16 o puede aplicarse una transformada a cada una de las cuatro matrices de muestras 8x8. Las TU mas grandes en general proporcionan mas compresion con un efecto pixelado mas perceptible en una imagen reconstruida, mientras que las TU mas pequenas proporcionan en general menos compresion con menos efecto pixelado perceptible. La seleccion de tamanos de TU puede basarse en un analisis de optimizacion velocidad-distorsion. Los tamanos de TU disponibles pueden incluir TU 32x32, 16x16 y 8x8. Debe observarse que esta divulgacion utiliza tipicamente el termino “bloque de video” para referirse a un nodo de codificacion de una CU. En algunos casos especificos, esta divulgacion tambien puede utilizar el termino “bloque de video” para referirse a un bloque de arbol, es decir, una LCU o una CU, que incluye un nodo de codificacion y unas PU y TU.
Conceptualmente, un bloque de transformada o TU puede ser una matriz bidimensional (2D) de coeficientes de transformada. Como se ha descrito anteriormente, un codificador de video puede realizar una operacion de cuantificacion en un bloque de transformada. Puede utilizarse un orden de barrido predefinido para leer mediante barrido los coeficientes de transformada cuantificados a fin de generar un vector en serie de coeficientes de transformada cuantificados. El vector en serie de coeficientes de transformada cuantificados puede entonces someterse a codificacion de entropia para proporcionar compresion adicional.
En algunos ejemplos, para TU 16x16 y 32x32, se utiliza un barrido de subbloque 4x4 a fin de generar un vector en serie de coeficientes de transformada cuantificados. Por ejemplo, los subbloques se leen mediante barrido en la direccion inversa, desde la parte superior derecha hasta la parte inferior izquierda Dentro de un subbloque, los coeficientes de transformada tambien se leen mediante barrido en la direccion inversa, desde la parte inferior derecha hasta la parte superior izquierda. Este tipo de barrido puede denominarse barrido diagonal de subbloque 4x4. En algunos ejemplos, las TU 8x8 tambien pueden utilizar el barrido diagonal de subbloque 4x4 como uno de los posibles barridos. La FIG. 1 es un diagrama conceptual que ilustra un ejemplo de grupos de coeficientes y barridos
5
10
15
20
25
30
35
40
45
50
55
60
65
para un bloque de video. La FIG.1 ilustra un bloque de video 8x8 dividido en cuatro subbloques 4x4, donde se realiza un barrido diagonal en cada uno de los subbloques. Un subbloque tambien puede denominarse grupo de coeficientes. En la FIG. 1, cada grupo de coeficientes se identifica y separa mediante lineas interiores mas gruesas. Como se ilustra en la FIG. 1, hay cuatro grupos de coeficientes y cada grupo de coeficientes incluye 16 coeficientes. Los barridos realizados dentro de los subbloques de la FIG. 1 se muestran mediante las flechas de direccion.
Ademas del barrido diagonal de subbloque 4x4, los barridos de coeficientes dependientes del modo permiten barridos horizontales y verticales no cuadrados para algunos modos de prediccion intra 8x8. Para los barridos horizontales y verticales no cuadrados de una TU 8x8, los grupos de coeficientes se definen como rectangulos 8x2 para el barrido horizontal no cuadrado (es decir, 16 coeficientes consecutivos en el orden de barrido). De manera similar, los grupos de coeficientes se definen como rectangulos 2x8 para el barrido vertical no cuadrado. Las FIGS. 2A-2B ilustran grupos de coeficientes no cuadrados con barridos horizontales y verticales de una TU 8x8, respectivamente. En las FIGS. 2A-2B, cada grupo de coeficientes se identifica y separa mediante lineas interiores mas gruesas. Como se ilustra en las FIG. 2A-2B, hay cuatro grupos de coeficientes y cada grupo de coeficientes incluye 16 coeficientes. En la FIG. 2A, los subbloques se leen mediante barrido de derecha a izquierda. Como se ilustra en la FIG. 2B, los subbloques se leen mediante barrido de abajo arriba. Los barridos que se realizan dentro de los subbloques de las FIGS. 2A-2B se muestran mediante las flechas de direccion. Debe observarse que un codificador de video disenado de acuerdo con la norma HEVC WD7 puede requerir un acceso de datos para los grupos de coeficientes no cuadrados diferente al de los grupos de coeficientes de subbloque 4x4 habituales. Esto puede imponer una complejidad de hardware y software adicional durante la implementacion del codificador de video.
Por tanto, ademas del barrido diagonal de subbloque 4x4 y los barridos horizontal y vertical no cuadrados, se han propuesto tambien barridos horizontales y verticales de subbloque para los subbloques 4x4 de una TU 8x8 como alternativa a los barridos horizontales y verticales no cuadrados. Se describen ejemplos de barridos horizontales y verticales de subbloque en las publicaciones: (1) Rosewarne, C., Maeda, "M. Non-CE11: Harmonisation of 8x8 TU residual scan" JCT-VC Contribution JCTVC-H0145;(2) Yu, Y., Panusopone, K., Lou, J., Wang, L. "Adaptive Scan for Large Blocks for HEVC; JCT-VC Contribution JCTVCF569; y (3) Solicitud de patente de Estados Unidos n.° 13/551.458, presentada el 17 de julio de 2012, cada una de las cuales se incorpora al presente documento a titulo de referencia. Dos ejemplos de barridos horizontales y verticales de subbloque 4x4 que pueden utilizarse para una TU 8x8 se ilustran en las FIGS. 3A-3B. En las FIGS. 3A-3B, cada grupo de coeficientes se identifica y separa mediante lineas interiores mas gruesas. De forma similar al ejemplo mostrado en la FIG. 1, en las FIGS. 3A-3B hay cuatro grupos de coeficientes 4x4 que se leen mediante barrido en la direccion inversa, desde la parte superior derecha hasta la parte inferior izquierda. Los barridos que se realizan dentro de los subbloques se ilustran mediante flechas de direccion.
Debe tenerse en cuenta que mientras se utiliza el barrido horizontal de subbloque 4x4 y el barrido vertical de subbloque 4x4 como alternativas a los barridos horizontales y verticales no cuadrados, de acuerdo con la propuesta JCTVC-H0145, la utilizacion del conjunto del barrido diagonal de subbloque 4x4, el barrido horizontal de subbloque 4x4 y el barrido vertical de subbloque 4x4 como barridos posibles de una TU 8x8 dio como resultado una perdida de rendimiento de la velocidad en baudios del 0,3 % para la configuracion intra en comparacion con la utilizacion de un conjunto del barrido diagonal de subbloque 4x4, el barrido horizontal rectangular 8x2 y el barrido vertical rectangular 2x8 como barridos posibles para una TU 8x8. Es decir, la sustitucion de los barridos ilustrados en las FIGS. 2A-2B por los barridos ilustrados en las FIGS. 3A-3B disminuyo el rendimiento de codificacion en un 0.3 % en algunos casos de prueba.
En los ejemplos de codificacion de video, cada subbloque se codifica mediante cinco pases de codificacion, a saber: (1) un pase de significancia, (2) un pase de mayor que uno, (3) un pase de mayor que dos, (4) un pase de signo y (5) un pase de nivel de coeficiente restante. La codificacion de significancia se refiere a la generacion de elementos sintacticos para indicar si alguno de los coeficientes de un subbloque tiene un valor de uno o superior. Es decir, un coeficiente con un valor de uno o superior se considera significativo. La codificacion de la significancia incluye dos partes. Para la primera parte de la codificacion de significancia, se codifica o deduce un elemento sintactico para cada grupo de coeficientes (es decir, un subbloque 4x4) que indica si hay algun coeficiente distinto de cero en el subbloque. Un ejemplo de dicho elemento sintactico se denomina indicador de grupo de coeficientes (CGF). En HEVC WD7, el CGF puede representarse mediante el elemento sintactico significant_coeff_group_flag. En HEVC WD9, el nombre del elemento sintactico del indicador de grupo de coeficientes se ha cambiado de significant_coeff_group_flag a coded_sub_block_flag (que tambien puede denominarse CSBF, ya que los grupos de coeficientes son subbloques 4x4). Esta divulgacion se refiere a un indicador de grupo de coeficientes como CGF, que puede corresponder a cualquiera de los elementos sintacticos significant_coeff_group_flag o coded_sub_block_flag.
Para la segunda parte de la codificacion significativa, si el CGF es 1 (es decir, si hay coeficientes distintos de cero en el subbloque), entonces se generan los elementos sintacticos para cada coeficiente de transformada del grupo de coeficientes, que indican si el coeficiente de transformada es significativo o no (es decir, un valor de uno o superior). Los ejemplos de dichos elementos sintacticos se denominan elementos sintacticos de significancia, ejemplos de los cuales son los indicadores de coeficientes significativos. En HEVC WD7 y WD9, los indicadores de coeficientes
5
10
15
20
25
30
35
40
45
50
55
60
65
significativos estan representados por el elemento sintactico significant_coefficient_flag.
En otras palabras, para codificar la significancia de los coeficientes, se codifican dos tipos de elementos sintacticos. Un primer elemento sintactico (por ejemplo, CGF) se codifica para cada grupo de codificacion (es decir, un subbloque) que indica si hay coeficientes distintos de cero en el grupo de codificacion. Si el primer elemento sintactico indica que hay al menos un coeficiente distinto de cero en el grupo de codificacion, se codifica un segundo elemento sintactico (por ejemplo, un elemento sintactico de significancia o significant_coefficient_flag) para cada coeficiente del grupo de codificacion que indica si un coeficiente es cero o un coeficiente distinto de cero.
Un pase de mayor que uno genera elementos sintacticos para indicar si el valor absoluto de un coeficiente significativo es mayor que uno. En un ejemplo, un elemento sintactico denominado coeff_abs_level_greater1_flag (abreviado "grIFlag") proporciona una indicacion sobre si un coeficiente significativo tiene un valor absoluto mayor que uno. De manera similar, el pase de mayor que dos genera elementos sintacticos para indicar si el valor absoluto de un coeficiente mayor que uno es mayor que dos. En un ejemplo, un elemento sintactico denominado coeff_abs_level_greater2_flag (abreviado "gr2Flag") proporciona una indicacion sobre si un coeficiente mayor que uno tiene un valor absoluto mayor que dos.
Un pase de signo genera elementos sintacticos para indicar la informacion de signo para los coeficientes significativos. En un ejemplo, un elemento sintactico denominado coeff_sign_flag (abreviado "signFlag") puede indicar la informacion de signo para un coeficiente significativo. Por ejemplo, un valor de 0 para signFlag puede indicar un signo positivo, mientras que un valor de 1 puede indicar un signo negativo. Un pase de nivel de coeficiente restante genera elementos sintacticos que indican el valor absoluto restante de un nivel de coeficiente de transformada (por ejemplo, el valor restante). En un ejemplo, un elemento sintactico denominado coeff_abs_level_remain (abreviado "levelRem") puede proporcionar esta indicacion. El elemento sintactico levelRem no puede senalarse a menos que gr2Flag este presente para cualquier coeficiente dado, por ejemplo, aunque dicha limitacion no siempre es necesaria. En un ejemplo, un coeficiente con un valor level puede codificarse como (abs(level)-x), donde el valor de x depende de la presencia de gr1 Flag y gr2Flag. Por ejemplo, x puede ser igual a 3 si gr2Flag esta presente. En algunos ejemplos, el valor level se puede codificar como (abs(level) - 3) para cualquier coeficiente para el cual haya un resto. Debe observarse que el sistema de cinco pases es solo un ejemplo de tecnica que se puede utilizar para codificar el coeficiente de transformada y que las tecnicas descritas en el presente documento pueden ser igualmente aplicables a otras tecnicas.
Asimismo, aparte de los elementos sintacticos descritos anteriormente, puede indicarse una posicion de un ultimo coeficiente significativo de una TU en el flujo de bits. La posicion del ultimo coeficiente significativo en la TU depende de un orden de barrido asociado a la TU. El orden de barrido para el proposito de identificar un ultimo coeficiente significativo puede ser cualquiera de los ordenes de barrido descritos anteriormente u otro orden de barrido predeterminado. En HEVC WD7, la posicion del ultimo coeficiente significativo de un bloque se indica especificando un valor de coordenada x y un valor de coordenada y. El valor de la coordenada x puede indicarse mediante los elementos sintacticos last_significant_coeff_x_prefix y last_significant_coeff_x_suffix. El valor de coordenadas y puede indicarse mediante los elementos sintacticos last_significant_coeff_y_prefix y last_significant_coeff_y_suffix.
De esta manera, los elementos sintacticos descritos anteriormente se pueden utilizar para senalar un denominado mapa de significancia de coeficientes de transformada, donde un mapa de significancia ilustra la posicion de los coeficientes significativos con una TU. La FIG. 4 es un diagrama conceptual que ilustra una relacion entre los coeficientes de transformada de un bloque de transformada y un mapa de significancia asociado con el mapa de transformada. Como se ilustra en la FIG. 4, el mapa de significancia incluye un "1" para indicar cada aparicion de un valor de coeficiente significativo, es decir, un valor mayor que cero, en el bloque de transformada. Ademas, en este ejemplo, el valor del CFG es "1" para indicar que hay al menos un coeficiente distinto de cero en el grupo de codificacion (es decir, el subbloque).
Por ejemplo, el subbloque de la izquierda, en la FIG. 4, ilustra ejemplos de coeficientes de transformada (por ejemplo, coeficientes de transformada cuantificados). Como se ilustra, hay al menos un coeficiente distinto de cero en el subbloque, por lo tanto el CFG es 1. Ademas, el mapa de significancia situado a la derecha en la FIG. 4 incluye el elemento sintactico de significancia (por ejemplo, el indicador de coeficiente significativo) para cada coeficiente de transformada del subbloque. Por ejemplo, el valor 1 del indicador de coeficiente significativo para todos los coeficientes de transformada correspondientes indica que el valor de estos coeficientes de transformada no es cero (es decir, un coeficiente de transformada distinto de cero) y el valor 0 para todos los coeficientes de transformada correspondientes indica que el valor de estos coeficientes de transformada es cero.
En HEVC, los elementos sintacticos relacionados con los coeficientes de transformada cuantificados, como los significant_coeff_group_flag y significant_coefficient_flag descritos anteriormente y otros elementos sintacticos pueden someterse a codificacion de entropia mediante CABAC (codificacion aritmetica binaria adaptativa segun el contexto). Para aplicar la codificacion CABAC a un elemento sintactico, la binarizacion se puede aplicar a un elemento sintactico a fin de formar una serie de uno o mas bits, que se denominan bins. Ademas, un contexto de codificacion puede estar asociado con un bin del elemento sintactico. El contexto de codificacion puede identificar
5
10
15
20
25
30
35
40
45
50
55
60
65
probabilidades de codificacion de bins que tienen valores particulares. Por ejemplo, un contexto de codificacion puede indicar una probabilidad de 0,7 de codificar un bin de valor 0 (que representa un ejemplo de "sfmbolo mas probable" en este caso) y una probabilidad de 0,3 de codificar un bin de valor 1. Despues de identificar el contexto de codificacion, se puede codificar el bin aritmeticamente basandose en el contexto. En algunos casos, los contextos asociados con un elemento sintactico particular o sus bins pueden depender de otros elementos sintacticos o parametros de codificacion.
Por ejemplo, la obtencion del contexto del CGF depende del orden de barrido del correspondiente grupo de coeficientes. Por ejemplo, para un grupo de coeficientes lefdos mediante barrido diagonal de subbloque 4x4 (por ejemplo, en los casos de las TU 16x16 y 32x32 y algunas TU 8x8), el contexto del CGF (es decir, el contexto del elemento sintactico significant_coeff_group_flag ) depende del CGF del subbloque situado a la derecha (CGFr) y debajo (CGFb) del grupo de coeficientes. Para los barridos horizontales y verticales no cuadrados ilustrados en la FIG. 2A-2B (por ejemplo, en ese caso de una TU 8x8), el contexto del CGF del grupo de coeficientes depende solo del CGF del grupo de coeficientes codificados previamente. Para el barrido horizontal, el grupo de coeficientes codificados previamente se refiere al grupo de coeficientes codificados situado debajo del grupo de coeficientes. Para el barrido vertical, el grupo de coeficientes anterior se refiere al grupo de coeficientes situado a la derecha del grupo de coeficientes.
Debe tenerse en cuenta que, debido a que en HEVC WD7 la obtencion del contexto de un CGF es diferente para el barrido diagonal de subbloque 4x4 (es decir, depende de CGFr y CGFb) y los barridos horizontal y vertical no cuadrados (es decir, depende solo del CGF anterior), se requiere una ruta logica diferente para la obtencion del contexto del CGF para el grupo de coeficientes de subbloque diagonal 4x4 y la obtencion del contexto del CGF para los barridos horizontal y vertical no cuadrados, lo que tambien puede imponer complejidad de hardware y software.
En HEVC WD7, los contextos asignados al elemento sintactico significant_coefficient_flag dependen de (1) la posicion del coeficiente de transformada dentro del subbloque 4x4, (2) los CGF del subbloque situado a la derecha (CGFr) y debajo (CGFB) del subbloque actual y (3) la presencia o no del coeficiente DC en el subbloque. La publicacion de Kumakura, T., Fukushima, S. "Non-CE3: Simplified context derivation for significant map" JCT-VC Contribution JCTVC-I0296, que se incorpora en su totalidad al presente documento a tftulo de referencia, proporciona un ejemplo en el que se asignan contextos a los coeficientes de un subbloque 4x4, dependiendo de los valores de CGFr y CGFb y la posicion de un coeficiente de un subbloque.
Las FIGS. 5A-5D ilustran cuatro patrones diferentes para asignaciones de contexto de indicadores de coeficiente significativo de un subbloque 4x4 dependientes de cGfr y CGFB. Cabe senalar que aunque en las FIGS. 5A-5D la numeracion del contexto comienza con 0, esto tiene una finalidad ilustrativa y no refleja los numeros de contexto reales utilizados en HEVC WD7, sino solo una numeracion relativa al contexto. Como se ilustra en las FIG. 5A a 5D, cada patron de contextos incluye 16 valores de contexto, donde cada valor de contexto corresponde al coeficiente situado en la posicion respectiva. Ademas, como se ilustra en las FIGS. 5A a 5D, un patron de contextos se determina basandose en valores de CGFr y CGFb. De esta manera, los patrones de las FIGS. 5A a 5D ilustran un ejemplo en el que se asignan contextos a indicadores de coeficientes significativos basandoseen la posicion del coeficiente de transformada en el subbloque 4x4 y los valores de CGFr y CGFb. Cabe senalar que las asignaciones de contexto ilustradas en las FIGS. 5A-5D no son optimas para los barridos horizontales y verticales de subbloque ilustrados en las FIGS. 3A-3B basados en la localizacion probable de los coeficientes significativos dentro de un vector generado mediante los barridos.
Ademas, en un ejemplo, los valores de contextos de un patron de contextos se pueden modificar basandose en si el subbloque correspondiente incluye o no el coeficiente DC. El coeficiente DC puede ser el primer coeficiente de la transformada y puede indicar en general la cantidad media de energfa de todo el bloque, por ejemplo. Para los coeficientes de transformada luma, si un subbloque 4x4 no contiene un coeficiente DC, puede aplicarse un desplazamiento de contexto. En algunos ejemplos, se aplica un desplazamiento de contexto de 3. En un ejemplo, si un subbloque 4x4 no contiene ningun coeficiente DC, y una asignacion de contexto obtenida a partir de un patron de contextos es 2, el contexto real utilizado puede ser 5. En otras palabras, el proceso de obtencion del contexto puede ser exactamente el mismo en ambos casos (es decir, se selecciona un patron a partir de un conjunto de patrones basandose en los valores de CGFr y CGFb), pero se utilizan diferentes conjuntos de contextos para subbloques DC y no DC. Es decir, los bloques DC y no DC no comparten los mismos contextos.
Esta divulgacion utiliza el termino "subbloque DC" para referirse a un subbloque de un bloque (por ejemplo, una TU) que incluye un coeficiente DC del bloque. Por ejemplo, suponiendo que el coeficiente DC de una TU es un coeficiente situado en el extremo superior izquierdo, un subbloque situado en el extremo superior izquierdo de la TU que incluye el coeficiente DC se puede denominar subbloque DC. Ademas, en un ejemplo, para los coeficientes de transformada de croma, la determinacion de desplazamiento de contexto basada en la presencia o no del coeficiente DC en el subbloque 4x4 no se aplica. Es decir, los contextos se comparten para subbloques DC y subbloques no DC para coeficientes de transformada de croma. Por tanto, en algunos casos solo se utilizan tres contextos para los coeficientes de transformada asociados con los componentes de croma. Ademas, en algunos casos, un coeficiente DC siempre puede utilizar un contexto separado, que se comparte para todos los tamanos de TU. Ademas, en HEVC WD7, la obtencion de contexto de mapa de significancia para una TU 8x8 utiliza una tabla 8x8 escalada para
5
10
15
20
25
30
35
40
45
50
55
60
65
la asignacion de contexto y, asi pues, la codificacion de mapa de significancia para una TU 8x8 no se unifica con la obtencion de contexto de mapa de significancia para las TU 16x16 y 32x32.
Esta divulgacion describe varias tecnicas para codificar los elementos sintacticos asociados a los coeficientes de transformada incluidos en un bloque de transformada, tales como el elemento sintactico de indicador de grupo de codificacion (es decir, significant_coeff_group_flag o coded_sub_block_flag) y los elementos sintacticos de coeficiente significativo (es decir, significant_coefficient_flag). En particular, esta divulgacion describe tecnicas en las que los ordenes de barrido en las FIGS. 3A-3B pueden utilizarse como alternativa a los grupos de coeficientes no cuadrados ilustrados en las FIGS. 2A-2B. Ademas, esta divulgacion describe tecnicas de obtencion de contexto para los elementos sintacticos asociados con coeficientes de transformada, en las que las tecnicas se basan en las caracteristicas de los barridos de subbloque ilustrados en las FIGS. 3A-3B. En un ejemplo, las tecnicas de obtencion de contexto pueden mitigar la perdida de rendimiento de velocidad en baudios, como se ha descrito anteriormente, cuando se utilizan los barridos ilustrados en las FIGS. 3A-3B en lugar de los barridos ilustrados en las FIGS. 2A-2B.
La FIG. 6 es un diagrama de bloques que ilustra un ejemplo de sistema de codificacion y decodificacion de video 10 que puede configurarse para asignar contextos mediante las tecnicas descritas en esta divulgacion. Como se muestra en la FIG. 6, el sistema 10 incluye un dispositivo de origen 12 que genera datos de video codificado que un dispositivo de destino 14 va a decodificar en un momento posterior. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluidos ordenadores de sobremesa, ordenadores plegables (es decir, portatiles), ordenadores de tableta, decodificadores, equipos telefonicos de mano tales como los denominados telefonos “inteligentes”, los denominados paneles “inteligentes”, televisores, camaras, dispositivos de visualizacion, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmision de video en continuo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicacion inalambrica. No obstante, las tecnicas de esta divulgacion no estan limitadas necesariamente a las aplicaciones o los entornos inalambricos. Las tecnicas pueden aplicarse a la codificacion de video, como apoyo a cualquiera de entre una diversidad de aplicaciones de multimedios, tales como radiodifusiones de television a traves del aire, transmisiones de television por cable, transmisiones de television por satelite, transmisiones de video en continuo, por ejemplo, por medio de Internet, codificacion de video digital para almacenamiento en un medio de almacenamiento de datos, decodificacion de video digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede estar configurado para admitir la transmision de video unidireccional o bidireccional a fin de ofrecer aplicaciones tales como la emision de video en continuo, la reproduccion de video, la radiodifusion de video y/o la videotelefonia.
En el ejemplo de la FIG. 6, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/demodulador (modem) y/o un transmisor. En el dispositivo de origen 12, la fuente de video 18 puede incluir una fuente tal como un dispositivo de captacion de video, por ejemplo, una videocamara, un archivo de video que contiene video captado previamente, una interfaz de entrada de video para recibir video desde un proveedor de contenidos de video y/o un sistema de graficos de ordenador para generar datos de graficos de ordenador como el video de origen, o una combinacion de dichas fuentes. En un ejemplo, si la fuente de video 18 es una videocamara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados telefonos con camara o videotelefonos. Sin embargo, las tecnicas descritas en esta divulgacion pueden ser aplicables a la codificacion de video en general y pueden aplicarse a aplicaciones inalambricas y/o cableadas. El video captado, precaptado o generado por ordenador puede ser codificado por el codificador de video 12. Los datos de video codificado pueden transmitirse directamente al dispositivo de destino 14 a traves de la interfaz de salida 22 del dispositivo de origen 20 por medio del enlace 16. Los datos de video codificado pueden almacenarse, de forma adicional o alternativa, en el dispositivo de almacenamiento 32 para su posterior acceso por el dispositivo de destino 14 u otros dispositivos, con fines de decodificacion y/o reproduccion.
El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de transportar los datos de video codificado desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicacion para permitir al dispositivo de origen 12 transmitir datos de video codificado directamente al dispositivo de destino 14 en tiempo real. Los datos de video codificado pueden modularse de acuerdo con una norma de comunicacion, tal como un protocolo de comunicacion inalambrica, y transmitirse al dispositivo de destino 14. El medio de comunicacion puede comprender cualquier medio de comunicacion inalambrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o mas lineas de transmision fisica. El medio de comunicacion puede formar parte de una red basada en paquetes, tal como una red de area local, una red de area extensa o una red global, tal como Internet. El medio de comunicacion puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion desde el dispositivo de origen 12 al dispositivo de destino 14.
El dispositivo de almacenamiento 32 puede incluir cualquiera de entre una diversidad de medios de almacenamiento de datos de acceso distribuido o local, tales como una unidad de disco fijo, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volatil o no volatil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de video codificado. En un ejemplo adicional, el dispositivo de almacenamiento 32 puede corresponder a un servidor
5
10
15
20
25
30
35
40
45
50
55
60
65
de archivos o a otro dispositivo de almacenamiento intermedio que pueda retener el video codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de video almacenados desde el dispositivo de almacenamiento 32 a traves de transmision en continuo o descarga. Un servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de video codificado y transmitir esos datos de video codificado al dispositivo de destino 14. Entre los ejemplos de servidores de archivos se incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, unos dispositivos de almacenamiento conectados a la red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de video codificado a traves de cualquier conexion de datos estandar, incluida una conexion a Internet. Esta puede incluir un canal inalambrico (por ejemplo, una conexion wifi), una conexion por cable (por ejemplo, DSL, cable modem, etc.), o una combinacion de ambos que sea adecuada para acceder a datos de video codificado almacenados en un servidor de archivos.
En el ejemplo de la FIG. 6, el dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de video 30 y un dispositivo de visualizacion 34. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un modem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de video codificado por el enlace 16 o desde el dispositivo de almacenamiento 32. Los datos de video codificado transmitidos por el enlace 16, o proporcionados en el dispositivo de almacenamiento 32, pueden incluir una diversidad de elementos sintacticos generados por el codificador de video 20, para su uso por un decodificador de video, tal como el decodificador de video 30, en la decodificacion de los datos de video. Dichos elementos sintacticos pueden incluirse con los datos de video codificado transmitidos en un medio de comunicacion, almacenarse en un medio de almacenamiento o almacenarse en un servidor de archivos.
El dispositivo de visualizacion 34 puede estar integrado en, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualizacion integrado y tambien puede estar configurado para interconectarse con un dispositivo de visualizacion externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualizacion. El dispositivo de visualizacion 34 visualiza los datos de video decodificado ante un usuario, y puede comprender cualquiera de entre una variedad de dispositivos de visualizacion, tales como una pantalla de cristal liquido (LCD), una pantalla de plasma, una pantalla de diodos organicos emisores de luz (OLED) u otro tipo de dispositivo de visualizacion.
El codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con una norma de compresion de video, tal como la norma HEVC que actualmente se halla en fase de elaboracion, como se ha indicado anteriormente, y en general pueden ajustarse al modelo de prueba HEVC (HM). De forma alternativa, el codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, o ampliaciones de dichas normas. Sin embargo, las tecnicas de esta divulgacion no estan limitadas a ninguna norma de codificacion particular. Ademas, el codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con una norma de compresion de video que se modifica para incorporar las tecnicas descritas en el presente documento.
Aunque no se muestra en la FIG. 6, en algunos aspectos, el codificador de video 20 y el decodificador de video 30 pueden estar integrados, cada uno de ellos, en un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para gestionar la codificacion tanto de audio como de video en un flujo de datos comun o en flujos de datos diferentes. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador de video 20 y el decodificador de video 30 pueden implementarse como cualquiera de entre una variedad de circuitos de codificadores adecuados, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especificos de la aplicacion (ASIC), matrices de puertas programables in situ (FPGA), logica discreta, software, hardware, firmware o cualquier combinacion de estos. Cuando las tecnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en unos medios legibles por ordenador no transitorios adecuados, y ejecutar las instrucciones en hardware, mediante uno o mas procesadores, para realizar las tecnicas de esta divulgacion. Tanto el codificador de video 20 como el decodificador de video 30 pueden estar incluidos en uno o mas codificadores o decodificadores, donde cualquiera de ambos puede estar integrado como parte de un codificador/decodificador (CODEC) combinado en un dispositivo respectivo.
La FIG. 7 es un diagrama de bloques que ilustra un ejemplo de codificador de video 20 que puede implementar las tecnicas descritas en esta divulgacion. En el ejemplo de la FIG. 8, el codificador de video 20 incluye una unidad de seleccion de modo 35, una unidad de procesamiento de prediccion 41, una memoria de imagenes de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de procesamiento de cuantificacion 54 y una unidad de codificacion de entropia 56. La unidad de procesamiento de prediccion 41 incluye una unidad de estimacion de movimiento 42, una unidad de compensacion de movimiento 44 y un modulo de prediccion intra 46. Para la reconstruccion de bloques de video, el codificador de video 20 incluye ademas una unidad de procesamiento de cuantificacion inversa 58, un modulo de transformada inversa 60 y un sumador 62. Tambien puede incluirse un filtro de eliminacion de bloques (no mostrado en la FIG. 7) para filtrar limites de bloque a fin de eliminar distorsiones de efecto pixelado del video reconstruido. Si se desea, el filtro de eliminacion de bloques filtrara tipicamente la salida
5
10
15
20
25
30
35
40
45
50
55
60
65
del sumador 62. Tambien pueden utilizarse filtros de bucle adicionales (en el bucle o tras el bucle), ademas del filtro de eliminacion de bloques. Debe observarse que la unidad de procesamiento de prediccion 41 y la unidad de procesamiento de transformada 52 no deben confundirse con las PU y las TU descritas anteriormente.
Como se muestra en la FIG. 7, el codificador de video 20 recibe datos de video, y la unidad de seleccion de modo 35 divide los datos en bloques de video. Esta division tambien puede incluir tambien la division en segmentos, mosaicos u otras unidades mayores, asi como la division en bloques de video, por ejemplo, de acuerdo con una estructura de arbol cuaternario de LCU y CU. El codificador de video 20 ilustra en general los componentes que codifican bloques de video de un segmento de video que se va a codificar. Un segmento puede dividirse en varios bloques de video (y, posiblemente, en conjuntos de bloques de video denominados mosaicos). La unidad de procesamiento de prediccion 41 puede seleccionar uno de una pluralidad de posibles modos de codificacion, tal como uno de una pluralidad de modos de codificacion intra o uno de una pluralidad de modos de codificacion inter, para el bloque de video actual, basandose en resultados de errores (por ejemplo, la velocidad de codificacion y el nivel de distorsion). La unidad de procesamiento de prediccion 41 puede proporcionar el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia.
La unidad de prediccion intra 46 de la unidad de procesamiento de prediccion 41 puede realizar la codificacion de prediccion intra del bloque de video actual en relacion con uno o mas bloques vecinos de la misma trama o segmento que el bloque que va a codificarse, para proporcionar compresion espacial. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 de la unidad de procesamiento de prediccion 41 realizan la codificacion de prediccion inter del bloque de video actual en relacion con uno o mas bloques predictivos de una o mas imagenes de referencia, para proporcionar compresion temporal.
La unidad de estimacion de movimiento 42 puede estar configurada para determinar el modo de prediccion inter para un segmento de video de acuerdo con un patron predeterminado para una secuencia de video. El patron predeterminado puede designar segmentos de video de la secuencia como segmentos P o segmentos B. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimacion de movimiento, realizada por la unidad de estimacion de movimiento 42, es el proceso de generacion de vectores de movimiento que estiman el movimiento de los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video dentro de una trama o imagen de video actual en relacion con un bloque predictivo de una imagen de referencia.
Un bloque predictivo es un bloque que se averigua que se corresponde estrechamente con la PU del bloque de video que se va a codificar en terminos de diferencia de pixeles, lo cual puede determinarse mediante una suma de una diferencia absoluta (SAD), una suma de diferencia al cuadrado (SSD) u otras metricas de diferencia. En algunos ejemplos, el codificador de video 20 puede calcular valores para posiciones de pixel subentero de imagenes de referencia almacenadas en la memoria de imagenes de referencia 64. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de pixel, posiciones de un octavo de pixel u otras posiciones de pixel fraccionario de la imagen de referencia. Por lo tanto, la unidad de estimacion de movimiento 42 puede realizar una busqueda de movimiento en relacion con las posiciones de pixel completo y las posiciones de pixel fraccionario, y facilitar un vector de movimiento con una precision de pixel fraccionario.
La unidad de estimacion de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video de un segmento sometido a codificacion inter, comparando la posicion de la PU con la posicion de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse a partir de una primera lista de imagenes de referencia (Lista 0) o una segunda lista de imagenes de referencia (Lista 1), cada una de las cuales identifica una o mas imagenes de referencia almacenadas en la memoria de imagenes de referencia 64. La unidad de estimacion de movimiento 42 envia el vector de movimiento calculado a la unidad de codificacion de entropia 56 y a la unidad de compensacion de movimiento 44.
La compensacion de movimiento, realizada por la unidad de compensacion de movimiento 44, puede implicar obtener o generar el bloque predictivo basandose en el vector de movimiento determinado mediante estimacion de movimiento, realizando posiblemente interpolaciones hasta la precision de subpixel. Tras recibir el vector de movimiento para la PU del bloque de video actual, la unidad de compensacion de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imagenes de referencia. El codificador de video 20 forma un bloque de video residual restando los valores de pixeles del bloque predictivo a los valores de pixeles del bloque de video actual que se esta codificando, y generando valores de diferencia de pixel. Los valores de diferencia de pixel forman datos residuales para el bloque y pueden incluir componentes de diferencia de luma y croma. El sumador 50 representa el componente o los componentes que realizan esta operacion de sustraccion. La unidad de compensacion de movimiento 44 tambien puede generar elementos sintacticos asociados a los bloques de video y al segmento de video para su uso por el decodificador de video 30 en la decodificacion de los bloques de video del segmento de video.
La unidad de prediccion intra 46 puede realizar la prediccion intra de un bloque actual, como alternativa a la
5
10
15
20
25
30
35
40
45
50
55
60
65
prediccion inter llevada a cabo por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de prediccion intra 46 puede determinar un modo de prediccion intra que se va a utilizar para codificar un bloque actual. En algunos ejemplos, la unidad de prediccion intra 46 puede codificar un bloque actual mediante varios modos de prediccion intra, por ejemplo, durante diferentes pases de codificacion, y la unidad de prediccion intra 46 (o la unidad de seleccion de modo 35, en algunos ejemplos) puede seleccionar un modo adecuado de prediccion intra que se va a utilizar a partir de los modos probados. Por ejemplo, la unidad de prediccion intra 46 puede calcular valores de velocidad-distorsion mediante un analisis de velocidad-distorsion para los diversos modos de prediccion intra probados, y seleccionar el modo de prediccion intra que tenga las mejores caracteristicas de velocidad-distorsion entre los modos probados. El analisis de velocidad-distorsion determina en general una cantidad de distorsion (o error) entre un bloque codificado y un bloque original no codificado que se codifico para generar el bloque codificado, asi como una velocidad de bits (es decir, un numero de bits) utilizada para generar el bloque codificado. La unidad de prediccion intra 46 puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar que modo de prediccion intra presenta el mejor valor de velocidad-distorsion para el bloque.
En cualquier caso, tras seleccionar un modo de prediccion intra para un bloque, la unidad de prediccion intra 46 puede proporcionar informacion que indica el modo de prediccion intra seleccionado para el bloque a la unidad de codificacion de entropia 56. La unidad de codificacion de entropia 56 puede codificar la informacion que indica el modo de prediccion intra seleccionado de acuerdo con las tecnicas de entropia descritas en el presente documento. El codificador de video 20 puede incluir datos de configuracion en el flujo de bits transmitido, que pueden incluir una pluralidad de tablas de indices de modos de prediccion intra y una pluralidad de tablas de indices de modos de prediccion intra modificados (tambien denominadas tablas de correlacion de palabras de codigo), definiciones de contextos de codificacion para varios bloques e indicaciones del modo de prediccion intra mas probable, una tabla de indices de modos de prediccion intra y una tabla de indices de modos de prediccion intra modificados que se van a utilizar para cada uno de los contextos.
Despues de que la unidad de procesamiento de prediccion 41 genere el bloque predictivo para el bloque de video actual, ya sea mediante la prediccion inter o la prediccion intra, el codificador de video 20 forma un bloque de video residual restando el bloque predictivo del bloque de video actual. Los datos de video residuales del bloque residual pueden incluirse en una o mas TU y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de video residuales en coeficientes de transformada residuales mediante una transformada, tal como una transformada de coseno discreta (DCT) o una transformada similar desde un punto de vista conceptual. La unidad de procesamiento de transformada 52 puede convertir los datos de video residuales de un dominio de pixel a un dominio de transformada, tal como un dominio de frecuencia. En algunos casos, la unidad de procesamiento de transformada 52 puede aplicar una transformada bidimensional (2D, en la direccion horizontal y vertical) a los datos residuales de las TU. En algunos ejemplos, la unidad de procesamiento de transformada 52 puede aplicar en cambio una transformada 1D horizontal, una transformada 1D vertical o ninguna transformada a los datos residuales de cada una de las TU.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de procesamiento de cuantificacion 54. La unidad de procesamiento de cuantificacion 54 cuantifica los coeficientes de transformada para reducir mas la velocidad de bits. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos de los coeficientes o a todos. El grado de cuantificacion puede modificarse ajustando un parametro de cuantificacion. En algunos ejemplos, la unidad de procesamiento de cuantificacion 54 puede llevar a cabo entonces un barrido de la matriz, incluidos los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificacion de entropia 56 puede llevar a cabo el barrido.
Como se ha descrito anteriormente, el barrido realizado en un bloque de transformada puede basarse en el tamano del bloque de transformada. La unidad de proceso de cuantificacion 54 y/o la unidad de codificacion de entropia 56 pueden leer mediante barrido bloques de transformada 8x8, 16x16 y 32x32 mediante cualquier combinacion de los barridos de subbloque descritos anteriormente con respecto a la FIG. 1, las FIGS. 2A-2B y las FIGS. 3A-3B. En un ejemplo, unos bloques de transformada 32x32 y unos bloques de transformada 16x16 pueden leerse mediante el barrido diagonal de subbloque 4x4 descrito anteriormente con respecto a la FIG. 1, y unos bloques de transformada 8x8 pueden leerse mediante los barridos de subbloque 4x4 descritos anteriormente con respecto a la FIG. 1 y las FIGS. 3A-3B. Cuando esta disponible mas de un barrido para un bloque de transformada, la unidad de codificacion de entropia 56 puede seleccionar un barrido basandose en un parametro de codificacion asociado con el bloque de transformada, tal como un modo de prediccion asociado con una unidad de prediccion correspondiente al bloque de transformada. A continuacion se proporcionan mas detalles con respecto a la unidad de codificacion de entropia 56, en relacion con la FIG. 8.
La unidad de procesamiento de cuantificacion inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantificacion inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de pixel, para su posterior uso como bloque de referencia de una imagen de referencia. La unidad de compensacion de movimiento 44 puede calcular un bloque de referencia anadiendo el bloque residual a un bloque predictivo de una de las imagenes de referencia de una de las listas de imagenes de referencia. La unidad de compensacion de movimiento 44 tambien puede aplicar uno o mas filtros de interpolacion al bloque residual
5
10
15
20
25
30
35
40
45
50
55
60
65
reconstruido para calcular valores de pixel subentero y utilizarlos en la estimacion de movimiento. El sumador 62 anade el bloque residual reconstruido al bloque predictivo con compensacion de movimiento generado por la unidad de compensacion de movimiento 44 para generar un bloque de referencia para su almacenamiento en la memoria de imagenes de referencia 64. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden utilizar el bloque de referencia como bloque de referencia para realizar la prediccion inter de un bloque en una trama o imagen de video subsiguiente.
Tras la cuantificacion, la unidad de codificacion de entropia 56 realiza la codificacion de entropia de los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificacion de entropia 56 puede realizar una codificacion de longitud variable adaptativa segun el contexto (CAVLC), una codificacion aritmetica binaria adaptativa segun el contexto (CABAC), una codificacion aritmetica binaria adaptativa segun el contexto basada en la sintaxis (SBAC), una codificacion de entropia por division de intervalos de probabilidad (PIPE) u otros procedimientos o tecnicas de codificacion de entropia. Tras la codificacion de entropia realizada por la unidad de codificacion de entropia 56, el flujo de bits codificado puede transmitirse al decodificador de video 30, o archivarse para su posterior transmision o recuperacion por el decodificador de video 30. La unidad de codificacion de entropia 56 tambien puede realizar la codificacion de entropia de los vectores de movimiento y los otros elementos sintacticos para el segmento de video actual que se esta codificando. La unidad de codificacion de entropia 56 puede realizar la codificacion de entropia de elementos sintacticos tales como los elementos sintacticos significant_coeff_group_flag, significant_coefficient_flag, coeff_abs_level_remain, coeff_abs_level_greater1_flag,
coeff_abs_level_greater2_flag y coeff_sign_flag, descritos anteriormente mediante CABAC.
La FIG. 8 es un diagrama de bloques que ilustra un ejemplo de unidad de codificacion de entropia 56 que puede implementar las tecnicas descritas en esta divulgacion. La unidad de codificacion de entropia 56 ilustrada en la FIG. 8 puede ser un codificador CABAC. El ejemplo de unidad de codificacion de entropia 56 puede incluir una unidad de binarizacion 502, una unidad de codificacion aritmetica 510, que incluye un motor de codificacion de derivacion 504, un motor de codificacion convencional 508 y una unidad de modelizacion de contextos 506.
La unidad de codificacion de entropia 56 puede recibir uno o mas elementos sintacticos, tales como cualquiera de los elementos sintacticos significant_coeff_group_flag o coded_sub_block_flag descritos anteriormente y los elementos sintacticos significant_coefficient_flag, coeff_abs_level_greater1_flag,
coeff_abs_level_greater2_flag, coeff_sign_flag y coeff_abs_level_remain. La unidad de binarizacion 502 recibe un elemento sintactico y genera una cadena de bins (es decir, una cadena binaria). La unidad de binarizacion 502 puede utilizar, por ejemplo, una cualquiera o una combinacion de las siguientes tecnicas para generar una cadena de bins: codificacion de longitud fija, codificacion unaria, codificacion unaria truncada, codificacion de Rice truncada, codificacion de Golomb, codificacion de Golomb exponencial y codificacion de Golomb-Rice. Ademas, en algunos casos, la unidad de binarizacion 502 puede recibir un elemento sintactico, tal como una cadena binaria, y simplemente transferir los valores de bin. En un ejemplo, la unidad de binarizacion 502 recibe el elemento sintactico significant_coeff_group_flag y genera una cadena de bins.
La unidad de codificacion aritmetica 510 esta configurada para recibir una cadena de bins desde la unidad de binarizacion 502 y aplicar una codificacion aritmetica a la cadena de bins. Como se muestra en la FIG. 8, la unidad de codificacion aritmetica 510 puede recibir valores de bin desde una ruta de derivacion o la ruta de codificacion convencional. Los valores de bin que siguen la ruta de derivacion pueden identificarse como valores de bin codificados por derivacion, y los valores de bin que siguen la ruta de codificacion convencional pueden identificarse como valores de bin codificados mediante CABAC. En consonancia con el proceso CABAC descrito anteriormente, en caso de que la unidad de codificacion aritmetica 510 reciba valores de bin desde una ruta de derivacion, el motor de codificacion de derivacion 504 podra aplicar una codificacion aritmetica a los valores de bin sin utilizar un contexto adaptativo asignado a un valor de bin. En un ejemplo, el motor de codificacion de derivacion 504 puede suponer las mismas probabilidades para los posibles valores de un bin.
En caso de que la unidad de codificacion aritmetica 510 reciba valores de bin a traves de la ruta convencional, la unidad de modelizacion de contexto 506 podra proporcionar una variable de contexto (por ejemplo, un estado de contexto), de manera que el motor de codificacion convencional 508 podra llevar a cabo una codificacion aritmetica basandose en las asignaciones de contexto proporcionadas por la unidad de modelizacion de contextos 506. Las asignaciones de contexto pueden definirse de acuerdo con una norma de codificacion de video, tal como la futura norma HEVC. Ademas, en un ejemplo, la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropia 56 pueden configurarse para asignar contextos a bins de los elementos sintacticos significant_coefr_group_flag y significant_coefficient_flag basandose en las tecnicas descritas en el presente documento. Las tecnicas pueden incorporarse a la norma HEVC u otra norma de codificacion de video. Los modelos de contexto pueden almacenarse en memoria. La unidad de modelizacion de contextos 506 puede incluir una serie de tablas indexadas y/o utilizar funciones de correlacion para determinar un contexto y una variable de contexto para un bin particular. Tras codificar un valor de bin, el motor de codificacion convencional 508 puede actualizar un contexto basandose en los valores de bin reales.
Como se ha descrito anteriormente, las asignaciones de contexto ilustradas en las FIGS. 5A-5D no son optimas para los barridos horizontales o verticales de subbloque 4x4 ilustrados en las FIGS. 3A-3B. Por ejemplo, los patrones
5
10
15
20
25
30
35
40
45
50
55
60
65
ilustrados en la FIG. 5A y la FIG. 5D tienen zonas de asignacion de contexto divididas a lo largo de una linea diagonal. Estas zonas no se corresponden con la ubicacion esperada de los coeficientes significativos cuando se aplica un barrido horizontal o vertical de subbloque 4x4. Ademas, la primera fila de un barrido horizontal de subbloque 4x4 tiene una probabilidad de ser significativa mucho mayor que la segunda fila. De manera similar, la primera columna de un barrido vertical de subbloque 4x4 tiene una probabilidad de ser significativa mucho mayor que una segunda columna. Por lo tanto, los patrones de contextos ilustrados en las FIGS. 5A a 5D pueden modificarse para proporcionar asignaciones de contexto mas optimas para indicadores de coeficientes significativos que se han leido mediante un barrido horizontal de subbloque 4x4 o un barrido vertical de subbloque 4x4. Por lo tanto, ademas de realizar la codificacion aritmetica basada en las asignaciones de contexto definidas de acuerdo con la norma HEVC WD7, el motor de codificacion convencional 508 puede configurarse para realizar la codificacion aritmetica basada en contextos obtenidos de acuerdo con las tecnicas divulgadas en el presente documento.
Las FIGS. 9A-9D ilustran patrones de contextos que se basan en posiciones esperadas de coeficientes significativos con respecto a un barrido horizontal de subbloque 4x4 o un barrido vertical de subbloque 4x4. Cabe senalar que aunque en las FIGS. 9A-9D, asi como con los patrones de contextos ilustrados en las FIGS. 5A-5D, la numeracion del contexto comienza en 0, esto tiene una finalidad ilustrativa y no refleja los numeros de contexto reales, sino solo la numeracion de contexto relativa. Las FIGS. 9A a 9D ilustran cuatro patrones diferentes que pueden utilizarse para asignaciones de contexto de indicadores de coeficientes significativos de un subbloque 4x4 dependiendo del CGFR y el CGFb, donde CGFr se refiere al indicador de grupo de contexto para el grupo de codificacion derecho (es decir, subbloque derecho ), y CGFb se refiere al indicador de grupo de contexto para el grupo de codificacion inferior (es decir, el subbloque inferior). De nuevo, el elemento sintactico de indicador de grupo de contexto indica si cualquiera de los coeficientes de transformada de un grupo de codificacion es distinto de cero.
De acuerdo con las tecnicas descritas en esta divulgacion, el codificador de video 20 selecciona un patron de contextos para codificar elementos sintacticos de significancia, y el decodificador de video 30 selecciona un patron de contextos para decodificar elementos sintacticos de significancia. Las FIGS. 9A a 9D ilustran ejemplos de una pluralidad de patrones de contextos bidimensionales a partir de los cuales el codificador de video 20 y el decodificador de video 30 pueden seleccionar un patron de contextos para codificar y decodificar. En algunos ejemplos, el codificador de video 20 y el decodificador de video 30 pueden seleccionar un patron de contextos a partir de los mismos patrones de contextos (por ejemplo, los ilustrados en las FIGS. 9A-9D) para una pluralidad de tipos de barrido. Por ejemplo, para un barrido horizontal, el codificador de video 20 y el decodificador de video 30 pueden seleccionar entre los mismos patrones de contextos. Para un barrido vertical, el codificador de video 20 y el decodificador de video 30 pueden seleccionar entre los mismos patrones de contextos que los del barrido horizontal. Para un barrido diagonal, el codificador de video 20 y el decodificador de video 30 pueden seleccionar entre los mismos patrones de contextos que los del barrido horizontal y el barrido vertical.
En general, se puede decir que los patrones de contextos ilustrados en las Figuras 9A-9D tienen un comportamiento de asignacion diagonal menor y un comportamiento de asignacion de fila en fila/columna en columna mayor en comparacion con los patrones respectivos ilustrados en las FIGS. 5A-5D. La unidad de codificacion de entropia 56 puede estar configurada para asignar contextos a los elementos sintacticos significant_coefficient_flag basandose en los patrones de contextos ilustrados en las FIGS. 9A-9D.
Como se ilustra en las FIGS. 9A-9D, cada patron de contextos incluye 16 valores de contexto, donde cada valor de contexto corresponde al coeficiente situado en la posicion respectiva. Cabe senalar que el patron de contextos de la FIG. 9D (es decir, para CGFb = 1, CGFr = 1) es uniforme para todas las posiciones (es decir, contexto = 2). La FIG. 9D se puede contrastar con la FIG. 5D, donde el patron de contextos no es uniforme. Ademas, los patrones de contextos para CGFb = 0, CGFr = 1, ilustrados en la FIG. 9B, y CGFb = 1, CGFr = 0, ilustrados en la FIG. 9C, dan mas importancia a la primera fila y columna, respectivamente, que los patrones de contextos ilustrados en la FIG. 5B y la FIG. 5C. Ademas, el patron de contextos para CGFB = 0, CGFR = 0, ilustrado en la FIG. 9A, tiene una forma mas cuadrada y da mas importancia al coeficiente de la parte superior izquierda en comparacion con el patron de contextos ilustrado en la FIG. 5A.
En un ejemplo, la unidad de codificacion de entropia 56 puede estar configurada para asignar contextos a los elementos sintacticos significant_coefficient_flag basandose en los patrones de contextos ilustrados en las FIGS. 9A-9D para los barridos horizontal y vertical de subbloque 4x4, y asignar contextos a los elementos sintacticos significant_coefficient_flag basandose en los patrones de contextos ilustrados en las FIGS. 5A-5D para el barrido diagonal de subbloque 4x4. En otro ejemplo, con el fin de limitar el numero total de patrones de contextos, la unidad de codificacion de entropia 56 puede estar configurada para asignar contextos a los elementos sintacticos significant_coefficient_flag basandose en los patrones de contextos ilustrados en las FIGS. 9A-9D para todos los barridos diagonales, horizontales y verticales de subbloque 4x4.
Ademas, pueden utilizarse combinaciones de los patrones de contextos ilustrados en las FIGS. 5A-5D y 9A-9D para asignar contextos para los elementos sintacticos significant_coefficient_flag. Por ejemplo, los barridos horizontales de subbloque 4x4 pueden utilizar los patrones de contextos ilustrados en la FIG. 5A, la FIG. 9B, la FIG. 5C y la FIG. 9D para valores respectivos de CGFb y CBFr. En este ejemplo, el barrido horizontal de subbloque 4x4 no utiliza ningun patron con caracteristicas verticales (es decir, el patron ilustrado en la FIG. 9C). Esto puede mejorar la
5
10
15
20
25
30
35
40
45
50
55
60
65
codificacion, porque las estadisticas de un barrido horizontal no suelen coincidir con la distribucion ilustrada en la FIG. 9C. En otro ejemplo, para el barrido horizontal de subbloque 4x4, en lugar de utilizar el patron ilustrado en la FIG. 9C para el caso donde (CGFb = 1, CBFr = 0), se puede utilizar el patron ilustrado en la FIG. 9D tanto para el caso (CGF b = 1, CBF r = 0) como el caso (CGFb = 1, CBFr = 1). En este ejemplo, se comparte un patron para diferentes configuraciones de CGF para un barrido dado. Dicho uso compartido de patron tambien se puede aplicar a los otros tipos de barrido.
Como se ha descrito anteriormente, en un ejemplo, la unidad de procesamiento de cuantificacion 54 y/o la unidad de codificacion de entropia 56 pueden leer bloques de transformada 32x32 y bloques de transformada 16x16 mediante el barrido diagonal de subbloque 4x4 descrito anteriormente con respecto a la FIG. 1, y los bloques de transformada 8x8 pueden leerse mediante los barridos de subbloque 4x4 descritos anteriormente con respecto a la FIG. 1 y las FIGS. 3A y 3B. En un ejemplo, la unidad de codificacion de entropia 56 puede configurarse para asignar contextos a los elementos sintacticos significant_coefficient_flag para bloques de transformada 32x32 y 16x16 basandoseen los patrones de contextos utilizados para asignar contexto a los elementos sintacticos significant_coefficient_flag basandoseen los patrones de contextos utilizados para los bloques de transformada 8x8 .
En un ejemplo, la unidad de codificacion de entropia 56 puede utilizar los patrones de contextos ilustrados en las FIGS. 9A-9D para obtener contextos para cada uno de los bloques de transformada 32x32, 16x16 y 8x8. En otro ejemplo, la unidad de codificacion de entropia 56 puede utilizar el conjunto de patrones de contextos, tales como los ilustrados en las FIGS. 5A-5B, para obtener contextos para bloques de transformada 32x32, 16x16 y 8x8 cuando se aplica el barrido diagonal de subbloque 4x4, y utilizar un conjunto diferente de patrones de contextos, tales como los ilustrados en las FIGS. 9A-9D, para obtener los contextos para un bloque de transformada 8x8 cuando se aplica el barrido horizontal o el barrido vertical de subbloque 4x4. En este ejemplo, la obtencion de contextos puede compartirse para TU de tamanos variables y puede depender del tipo de barrido.
Ademas, en relacion con el caso de obtencion y asignacion de contextos a subbloques DC y no DC, aunque la obtencion de contextos puede compartirse para cada uno de los bloques de transformada 32x32, 16x16 y 8x8, los contextos reales pueden diferir para cada tamano de bloque de transformada. Por ejemplo, cada uno de los contextos reales utilizados para bloques de transformada 32x32, 16x16 y 8x8 puede basarse en los patrones de contextos ilustrados en las FIGS. 5A-5B, pero puede aplicarse un desplazamiento a cada uno de los patrones de contextos basandose en el tamano de la TU. En este ejemplo, cada uno de los bloques de transformada 32x32, 16x16 y 8x8 compartiria una obtencion de contexto, pero no contextos reales. En otro ejemplo, la obtencion de contextos puede ser igual para todos los subbloques independientemente del tamano de las TU o el tipo de barrido (por ejemplo, los patrones ilustrados en las FIGS. 9A-9D puede utilizarse para todos los casos), pero puede haber tres conjuntos de contextos reales, un conjunto de contextos para las TU grandes (16x16 y 32x32), un conjunto de contextos para la TU 8x8 con barrido diagonal y un conjunto de contextos para la TU 8x8 cuando se utiliza el barrido horizontal o vertical. Los conjuntos pueden definirse aplicando diferentes desplazamientos a un conjunto de patrones de contextos. De este modo, la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropia 56 pueden estar configuradas para asignar contextos a significant_coefficient_flag mediante una obtencion de contextos unificada para todos los ordenes de barrido.
Como se describio anteriormente, se puede asignar un conjunto de contextos a significant_coefficient_flag para el subbloque de DC diferente al de los subbloques no DC. Es decir, pueden aplicarse desplazamientos a los patrones de contextos al determinar los contextos reales. La razon de esto es que las estadisticas para el subbloque DC son tipicamente muy diferentes a las estadisticas para los subbloques no DC cuando se utiliza un barrido diagonal de subbloque 4x4. Sin embargo, cuando los subbloques se leen mediante un barrido horizontal o vertical de subbloque 4x4, las estadisticas para el subbloque DC y un subbloque no DC pueden ser similares. Por ejemplo, para una TU 8x8 que utiliza un barrido horizontal de subbloque, el subbloque situado a la derecha del subbloque DC puede tener estadisticas que son mas similares al subbloque DC que a los otros subbloques no-DC. De manera similar, para el barrido vertical, el subbloque situado debajo del subbloque DC puede tener estadisticas que son mas similares al subbloque DC que a los otros subbloques no DC.
Con el fin de compensar el hecho de que uno de los subbloques no DC pueda tener estadisticas que sean similares al subbloque DC, la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropia 56 pueden estar configuradas para utilizar un primer conjunto de contextos para el subbloque DC y un subbloque no-DC adyacente, y pueden utilizar un segundo conjunto de contextos para asignar contextos para los otros subbloques no DC. Por ejemplo, cuando se utiliza un barrido horizontal de subbloque 4x4 para una TU 8x8, la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropia 56 pueden estar configuradas para utilizar un primer conjunto de contextos a fin de asignar contextos a la primera fila de subbloques, y un segundo conjunto de contextos a fin de asignar contextos a la segunda fila de los subbloques. Por ejemplo, la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropia 56 pueden estar configuradas para utilizar los patrones de contextos ilustrados en las FIGS. 5A-5D y los patrones de contextos ilustrados en las FIGS. 9A-9D para la segunda fila. Ademas, pueden seguir aplicandose desplazamientos para los subbloques no DC, de manera que el subbloque DC pueda tener todavia un conjunto de contextos unico. De manera similar, para un tipo de barrido vertical de subbloque, los patrones de contextos pueden asignarse por columnas. Ademas, este concepto se puede ampliar a TU mas grandes con mas de dos columnas o filas. La tecnica de obtener y asignar un contexto basandose en la fila
5
10
15
20
25
30
35
40
45
50
55
60
65
o columna del subbloque puede aplicarse a las TU de todos los tamanos. De este modo, la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropfa 56 pueden configurarse para asignar contextos a significant_coefficient_flag basandose en un tipo de barrido de subbloque y la ubicacion de un subbloque dentro de un bloque de transformada.
Como se ha descrito anteriormente, las FIGS. 9A-9D ilustran ejemplos de patrones de contextos que el codificador de vfdeo 20 selecciona para determinar los contextos para codificar elementos sintacticos de significancia de coeficientes de transformada de un subbloque de un bloque de transformada. En algunos ejemplos, para una pluralidad de tipos de barrido de un subbloque (es decir, dependiendo de si el subbloque va a leerse mediante barrido horizontal, vertical o diagonal), el codificador de vfdeo 20 puede seleccionar el patron de contextos entre los patrones de contextos ilustrados en las FIGS. 9A-9D. En otras palabras, los patrones de contextos a partir de los cuales el codificador de vfdeo 20 puede seleccionar un patron de contextos puede ser los mismos para una pluralidad de tipos de barrido (por ejemplo, un barrido horizontal, un barrido vertical y un barrido diagonal).
Ademas, como se ilustra en las FIGS. 9A-9D, cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas subbloques vecinos. Por ejemplo, el uno o mas subbloques vecinos incluyen un primer subbloque vecino y un segundo subbloque vecino. En algunos ejemplos, cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en el primer subbloque vecino (por ejemplo, un subbloque inferior que se halla debajo del subbloque actual), y la inclusion o no de algun coeficiente de transformada distinto de cero en el segundo subbloque vecino (por ejemplo, un subbloque derecho que se halla a la derecha del subbloque actual). Como se ha descrito anteriormente, el CGFb indica si un subbloque inferior incluye algun coeficiente de transformada distinto de cero y el CGFr indica si un subbloque derecho incluye algun coeficiente de transformada distinto de cero.
El codificador de vfdeo 20 puede seleccionar uno de los patrones de contextos ilustrados en las FIGS. 9A-9D basandose en diversos factores, como se describe a continuacion. En cualquier caso, el codificador de vfdeo 20 puede asignar contextos a cada uno de los elementos sintacticos de significancia de los coeficientes de transformada basandose en el patron de contextos seleccionado.
Por ejemplo, si el codificador de vfdeo 20 selecciona el patron de contextos asociado a la condicion sobre la no inclusion de ningun coeficiente de transformada distinto de cero en el primer subbloque vecino y la inclusion de al menos un coeficiente de transformada distinto de cero en el segundo subbloque vecino (es decir, CGFb es igual a 0 y CGFr es igual a 1), entonces el codificador de vfdeo 20 puede asignar un contexto a una primera fila de los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual que es diferente de los contextos para otras filas de los elementos de significancia de los coeficientes de transformada para el subbloque actual. Por ejemplo, si CGFb es igual a 0 y CGFr es igual a 1, la FIG 9B ilustra que a la primera fila del bloque de transformada se le asigna el contexto de 2 (o 5 suponiendo un desplazamiento de 3) para codificar los elementos sintacticos de significancia de la primera fila del subbloque, que es diferente al contexto para cualquier otra fila del subbloque.
El decodificador de vfdeo 30 puede funcionar de una manera sustancialmente similar. Por ejemplo, si el decodificador de vfdeo 30 selecciona el patron de contextos ilustrado en la FIG. 9B (por ejemplo, la condicion de que CGFb es igual a 0 y CGFr es igual a 1), entonces el decodificador de vfdeo 30 asigna contextos a los elementos sintacticos de significancia de un subbloque de un bloque de transformada, tal como corresponda. Por ejemplo, de forma similar al codificador de vfdeo 20, el decodificador de vfdeo 30 asigna un contexto a una primera fila de los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual, que es diferente de los contextos para otras filas de los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual.
En otro ejemplo, si el codificador de vfdeo 20 selecciona el patron de contextos asociado a la condicion sobre la inclusion de al menos un coeficiente de transformada distinto de cero en el primer subbloque y la no inclusion de ningun coeficiente de transformada distinto de cero en el segundo subbloque vecino (es decir, CGFb es igual a 1 y CGFr es igual a 0), entonces el codificador de vfdeo 20 puede asignar un contexto a una primera columna de los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual, que es diferente de los contextos para otras columnas de los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual. Por ejemplo, si CGFb es igual a 1 y CGFr es igual a 0, la FIG 9C ilustra que a la primera columna del bloque de transformada se le asigna el contexto de 2 (o 5 suponiendo un desplazamiento de 3) para codificar los elementos sintacticos de significancia de la primera columna del subbloque, que es diferente del contexto para cualquier otra columna del subbloque.
El decodificador de vfdeo 30 puede funcionar de una manera sustancialmente similar. Por ejemplo, si el decodificador de vfdeo 30 selecciona el patron de contextos ilustrado en la FIG. 9C (por ejemplo, la condicion de que CGFb es igual a 1 y CGFr es igual a 0), entonces el decodificador de vfdeo 30 asigna contextos a los elementos sintacticos de significancia de un subbloque de un bloque de transformada, tal como corresponda. Por ejemplo, de forma similar al codificador de vfdeo 20, el decodificador de vfdeo 30 asigna un contexto a una primera columna de
5
10
15
20
25
30
35
40
45
50
55
60
65
los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual, que es diferente de los contextos para otras columnas de los elementos de significancia de los coeficientes de transformada para el subbloque actual.
En otro ejemplo, si el codificador de video 20 selecciona el patron de contextos asociado a la condicion sobre la inclusion de al menos un coeficiente de transformada distinto de cero en el primer subbloque vecino y la inclusion de al menos un coeficiente de transformada distinto de cero en el segundo subbloque vecino (es decir, CGFb es igual a
1 y CGFr es igual a 1), entonces el codificador de video 20 puede asignar un mismo contexto a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual. Por ejemplo, si CGFb es igual a 1 y CGFr es igual a 1, la FIG 9D ilustra que todos los contextos son iguales para el elemento sintactico de significancia (es decir, 2).
El decodificador de video 30 puede funcionar de una manera sustancialmente similar. Por ejemplo, si el decodificador de video 30 selecciona el patron de contextos ilustrado en la FIG. 9D (por ejemplo, la condicion de que CGFb es igual a 1 y CGFr es igual a 1), entonces el decodificador de video 30 asigna contextos a los elementos sintacticos de significancia de un subbloque de un bloque de transformada, tal como corresponda. Por ejemplo, de forma similar al codificador de video 20, el decodificador de video 30 asigna un mismo contexto a los elementos de significancia de los coeficientes de transformada para el subbloque actual.
Si CGFb es igual a 0 y CGFr es igual a 0, el codificador de video 20 puede seleccionar el patron de contextos ilustrado en la FIG. 9A, y asignar contextos a los elementos sintacticos de significancia de un subbloque de un bloque de transformada, tal como corresponda. El decodificador de video 30 puede funcionar de una manera sustancialmente similar si CGFb es igual a 0 y CGFr es igual a 0.
Ademas, los patrones de contextos ilustrados en las FIGS. 9A-9D pueden incluir caracteristicas adicionales a las descritas anteriormente. Por ejemplo, una de las caracteristicas del patron de contextos (por ejemplo, cuando CGFb es igual a 0 y CGFr es igual a 0) es que el patron de contextos incluye contextos que, si se leen mediante barrido horizontal o vertical, dan como resultado un mismo vector unidimensional.
Por ejemplo, si el patron de contextos ilustrado en la FIG. 9A se lee mediante barrido horizontal desde la parte inferior derecha hasta la parte superior izquierda, el vector unidimensional resultante es: [0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 2]. Si el patron de contextos ilustrado en la FIG. 9A se lee mediante barrido vertical desde la parte inferior derecha hasta la parte superior izquierda, el vector unidimensional resultante es: [0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 2]. Como puede observarse, estos dos vectores unidimensionales son iguales.
En otro ejemplo de las caracteristicas de los patrones de contextos, dos de los patrones de contextos son transposiciones entre si de tal manera que un barrido horizontal de uno de los patrones de contextos y un barrido vertical de otro de los patrones de contextos dan como resultado el mismo vector unidimensional. Por ejemplo, un barrido horizontal del patron de contextos ilustrado en la FIG. 9B desde la parte inferior derecha hasta la parte superior izquierda da como resultado el vector unidimensional: [0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2]. Una barrido vertical del patron de contextos ilustrado en la FIG. 9C desde la parte inferior derecha hasta la parte superior izquierda da como resultado el vector unidimensional: [0 0 0 0 0 0 0 0 1 1 1 2 2 2 2]. Como puede observarse, estos dos vectores unidimensionales son iguales.
En otro ejemplo de las caracteristicas de los patrones de contextos, uno de los patrones de contextos incluye contextos que si se leen mediante barrido horizontal, vertical y diagonal dan como resultado el mismo vector unidimensional. Por ejemplo, un barrido horizontal, un barrido vertical o un barrido diagonal de los contextos del patron de contextos ilustrado en la FIG. 9D dan como resultado el mismo vector unidimensional: [2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2].
Como se ha descrito anteriormente, el codificador de video 20 selecciona uno de los patrones de contextos ilustrados en las FIGS. 9A-9D basandose en diversos factores. Por ejemplo, el codificador de video 20 selecciona el patron de contextos basandose en el CGF de los subbloques inferior y derecho. Sin embargo, tambien puede haber factores adicionales. Por ejemplo, el codificador de video 20 puede seleccionar el patron de contextos basandose en un tipo de barrido. Si el tipo de barrido es un barrido horizontal del subbloque, entonces el codificador de video 20 puede seleccionar el patron de contextos ilustrado en la FIG. 9B. Si el tipo de barrido es un barrido vertical del subbloque, entonces el codificador de video 20 puede seleccionar el patron de contextos ilustrado en la FIG. 9C. El decodificador de video 30 puede funcionar de manera similar.
En algunos ejemplos, como los descritos anteriormente, el codificador de video 20 puede excluir patrones de contextos de los patrones de contextos que el codificador de video 20 evalua para determinar que patron de contextos va a seleccionar. Por ejemplo, si el tipo de barrido del subbloque es horizontal, entonces el codificador de video 20 puede determinar que el patron de contextos ilustrado en la FIG. 9C no puede seleccionarse como el patron de contextos incluso si el CGFb es igual a 1 y el CGFr es igual a 0. En este caso, el codificador de video 20 puede seleccionar el patron de contextos ilustrado en la FIG. 9D. Por ejemplo, si el tipo de barrido del subbloque es horizontal, entonces el codificador de video 20 puede excluir el patron de contextos ilustrado en la FIG. 9C. A partir
5
10
15
20
25
30
35
40
45
50
55
60
de los patrones de contextos restantes, el codificador de video 20 puede seleccionar el patron de contextos ilustrado en la FIG. 9D. En este caso, puede compartirse un patron de contextos para diferentes valores de CGFB y CGFR. Por ejemplo, para el barrido horizontal, el codificador de video 20 puede seleccionar el patron de contextos ilustrado en la FIG. 9D si CGFb es igual a 0 y CGFr es igual a 1 o si CGFb es igual a 1 y CGFr es igual a 1.
Para un tipo de barrido vertical, el codificador de video 20 puede funcionar de manera similar, excepto porque el codificador de video 20 puede excluir el patron de contextos ilustrado en la FIG. 9B incluso si CGFB es igual a 0 y CGFr es igual a 1. En este ejemplo, el codificador de video 20 selecciona el patron de contextos de la pluralidad restante de patrones de contextos. El decodificador de video 30 funciona de una manera similar.
Por ejemplo, el codificador de video 20 y el decodificador de video 30 determinan el tipo de barrido del subbloque actual y determinan al menos un patron de contextos de la pluralidad de patrones de contextos que no pueden seleccionarse como patron de contextos basandose en el tipo de barrido determinado del subbloque actual. El codificador de video 20 y el decodificador de video 30 seleccionan el patron de contextos basandose en la pluralidad de patrones de contextos y excluyendo el por lo menos un patron de contextos determinado. En algunos ejemplos, el codificador de video 20 y el decodificador de video 30 seleccionan el patron de contextos basandose en la pluralidad de patrones de contextos y excluyendo el por lo menos un patron de contextos determinado, independientemente de si el subbloque vecino inferior incluye algun coeficiente de transformada distinto de cero y si el subbloque vecino derecho incluye algun coeficiente de transformada distinto de cero.
En las FIGS. 5A-5D y las FIGS. 9A-9D, los patrones de contextos se ilustran y definen como bloques 2D. Sin embargo, en algunas implementaciones practicas, un codificador de video, tal como el codificador de video 20, podria representar un bloque 2D como un vector 1D de acuerdo con el tipo de barrido de subbloque seleccionado, y almacenar el vector 1D para agilizar el proceso de asignacion de contexto. En esta situacion, incluso si se utiliza el mismo patron de contextos 2D para asignar contextos para subbloques que utilizaron diferentes tipos de barrido de subbloque, se pueden obtener diferentes vectores 1D basandose en el tipo de barrido de subbloque seleccionado. Por ejemplo, el vector 1D del patron de contextos ilustrado en la FIG. 9C, leido mediante barrido horizontal, tendria la siguiente representacion de vector 1D:
Scan Pattern = [ 2 10021002100210 0]
mientras que el patron de contextos ilustrado en la FIG. 9C, leido mediante barrido vertical, tendria la siguiente representacion de vector 1D:
Sc.an_Pattern = [2 2 2 211110000000 0]
En este caso, si un codificador de video, tal como el codificador de video 20, almacena patrones de contextos como vectores 1D (es decir, patrones de contextos unidimensionales), puede haber varios vectores para cada patron de contextos. Una manera de superar el almacenamiento de varios vectores 1D diferentes para cada patron de contextos es definiendo los patrones de contextos directamente como vectores 1D (es decir, patrones de contextos unidimensionales) y utilizando el mismo vector para dos o mas tipos de barrido de subbloque. Por ejemplo, los patrones de contextos con un valor constante (es decir, todo 2) proporcionan el mismo barrido 10D independientemente del tipo de barrido. En este ejemplo, un vector 1D puede especificar un mismo contexto (por ejemplo, 2) o todos los elementos sintacticos de significancia. El vector 1D puede representarse como sigue:
Scan Pattern = [222222222222222 2]
En otro ejemplo, el patron de contextos unidimensional define un primer contexto para un primer elemento sintactico de significancia en un orden de barrido, define un segundo contexto para un segundo y un tercer elementos sintacticos de significancia en el orden de barrido y define un tercer contexto para el resto elementos sintacticos de significancia en el orden de barrido. Por ejemplo, un vector 1D puede especificar un contexto de 2 para el primer indicador de coeficiente significativo, especificar un contexto de 1 para la segunda y tercera asignaciones y especificar un contexto de 0 para las asignaciones restantes, y puede representarse como sigue:
Scan Pattern = [2 1 1 000000000000 0]
Otro patron de contextos posible es Scan_Pattern = [100000000000000 0]. En este ejemplo, el patron de contextos define un primer contexto (por ejemplo, 1) para un primer elemento sintactico de significancia en un orden de barrido y define un segundo contexto (por ejemplo, 0) para los elementos sintacticos de significancia restantes en el orden de barrido. La FIG. 10 es un diagrama conceptual que ilustra un ejemplo de patron para la asignacion de contexto para los coeficientes de un subbloque. El patron de barrido resultante para el patron de contextos ilustrado en la FIG. 10 es el mismo para los barridos diagonal, horizontal y vertical de subbloque 4x4 como se ha definido anteriormente.
5
10
15
20
25
30
35
40
45
50
55
60
65
La unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropfa 56 pueden configurarse para almacenar patrones de contextos como vectores 1D (es decir, patrones de contextos unidimensionales). En un ejemplo, puede utilizarse el mismo patron de barrido almacenado para asignar contextos a significant_coefficient_flag para una pluralidad de tipos de barrido de subbloque, tales como los barridos diagonal, horizontal y vertical de subbloque 4x4.
En algunos ejemplos, los patrones de contextos unidimensionales pueden precalcularse a partir de patrones de contextos bidimensionales tales como los ilustrados en las FIGS. 9A-9D. Por ejemplo, los patrones de contextos ilustrados en las figuras 9A-9D pueden leerse mediante barrido horizontal, vertical y diagonal para generar los patrones de contextos unidimensionales. Por consiguiente, en este ejemplo puede haber hasta 12 patrones de contextos unidimensionales. Sin embargo, las caracteristicas de los patrones de contextos ilustrados en las FIGS. 9A-9D pueden ser tales que se precalculan y almacenan menos de 12 patrones de contextos unidimensionales.
Por ejemplo, como se ha descrito anteriormente, el barrido horizontal y el barrido vertical del patron de contextos ilustrado en la FIG. 9A da como resultado el mismo vector unidimensional. Por consiguiente, el barrido horizontal, vertical y diagonal del patron de contextos ilustrado en la FIG. 9A da como resultado dos patrones de contextos unidimensionales unicos, en lugar de tres.
Tambien, para los patrones de contextos ilustrados en las FIGS. 9B y 9C, puede haber para uno de ellos tres patrones de contextos unidimensionales unicos (es decir, uno para cada tipo de barrido). Sin embargo, para el otro, puede haber solo dos patrones de contextos unidimensionales unicos. Esto se debe a que el barrido horizontal del patron de contextos ilustrado en la FIG. 9B y el barrido vertical del patron de contextos ilustrado en la FIG. 9C da como resultado el mismo patron de contextos unidimensional. Por consiguiente, hay un total de cinco patrones de contextos unidimensionales unicos entre los patrones de contextos ilustrados en las FIGS. 9B y 9C. En otras palabras, el uno de la pluralidad de patrones de contextos unidimensionales se calcula previamente a partir del patron de contextos ilustrado en la FIG. 9B (por ejemplo, un primer patron de contextos bidimensional). El primer patron de contextos bidimensional incluye contextos que, si se leen mediante barrido horizontal, dan como resultado un mismo patron de contextos unidimensional que cuando se lee mediante barrido vertical un segundo patron de contextos bidimensional. Un ejemplo del segundo patron de contextos bidimensional, cuando el primer patron bidimensional se ilustra en la FIG. 9B, es el patron de contextos bidimensional ilustrado en la FIG. 9C.
Para el patron de contextos ilustrado en la FIG. 9D, solo hay un unico patron de contextos unidimensional (es decir, los barridos diagonales, horizontales y verticales dan como resultado el mismo patron de contextos unidimensional). Por ejemplo, cuando se utiliza el patron de contextos ilustrado en la FIG. 9D para precalcular un patron unidimensional, el patron unidimensional resultante (tanto si se ha leido mediante barrido vertical, horizontal o diagonal) da como resultado un patron de contextos que define un mismo contexto (por ejemplo, 2) para todos los elementos sintacticos de los coeficientes de transformada de un subbloque. Por lo tanto, las caracteristicas de los patrones de contextos ilustrados en las FIGS. 9A-9D dan como resultado un total de ocho patrones de contextos unidimensionales (es decir, dos de la FIG. 9A, cinco de las FIGS. 9B y 9C y uno de la FIG. 9D), que es una cantidad menor que los 12 patrones de contextos unidimensionales que se hubieran necesitado almacenar si los patrones de contextos no comprendieran las caracteristicas de los patrones de contextos ilustrados en las FIGS. 9A-9D.
Como se ha descrito anteriormente, ademas de asignar contextos a los elementos sintacticos significant_coefficient_flag, en un ejemplo la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropfa 56 pueden estar configuradas para asignar contextos a significant_coeff_group_flag. Como se describe anteriormente, en HEVC WD7 la obtencion del contexto de significant_coeff_group_flag depende del orden de barrido (es decir, si se aplica un barrido diagonal 4x4, horizontal no cuadrado o vertical). En el caso en el que los barridos no cuadrados se sustituyen por los barridos ilustrados en las FIGS. 3A-3B, la obtencion del contexto de significant_coeff_group_flag puede modificarse a partir de la obtencion de contexto descrita en HEVC WD7. En un ejemplo, la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropfa 56 pueden estar configuradas para asignar contextos a significant_coeff_group_flag mediante la misma obtencion de contexto para todos los subbloques, independientemente del tipo de barrido y el tamano de las TU asociadas con el subbloque Sin embargo, en un ejemplo, el contexto real asignado a significant_coeff_group_flag puede diferir en funcion de si un subbloque se lee mediante barrido diagonal, horizontal y vertical de subbloque 4x4. En un ejemplo, se puede utilizar un primer conjunto de contextos para asignar el contexto a significant_coeff_group_flag cuando se aplica el barrido diagonal 4x4 y se puede utilizar un segundo conjunto de contextos para asignar contextos a significant_coeff_group_flag cuando se aplican los barridos horizontal o vertical de subbloque 4x4. En un ejemplo, el segundo conjunto de contextos puede obtenerse anadiendo un desplazamiento al primer conjunto de contextos.
Por lo tanto, hay varias tecnicas que la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropfa 56 utilizan para asignar contextos a los elementos sintacticos significant_coeff_group_flag y significant_coefflcient_flag. La unidad de codificacion de entropfa 56 puede estar configurada para asignar contextos a los elementos sintacticos significant_coeff_group_flag y significant_coefficient_flag mediante cualquier combinacion de las tecnicas descritas anteriormente.
La FIG. 11 es un diagrama de flujo que ilustra un ejemplo de codificacion de datos de video de acuerdo con las
5
10
15
20
25
30
35
40
45
50
55
60
65
tecnicas de esta divulgacion. Aunque el proceso de la FIG. 11 se describe a continuacion como si se llevara a cabo en general mediante el codificador de vfdeo 20, el proceso puede llevarse a cabo mediante cualquier combinacion formada por el codificador de vfdeo 20, la unidad codificacion de entropfa 56 y/o la unidad de modelizacion de contextos 506.
Como se ilustra en la FIG. 11, el codificador de vfdeo 20 genera elementos sintacticos de significancia para los coeficientes de transformada de un subbloque actual de un bloque (1102). El elemento sintactico de significancia (por ejemplo, indicador de coeficiente de significancia) de un coeficiente de transformada indica si el valor del coeficiente de transformada es cero (es decir, un coeficiente de transformada cero) o distinto de cero (es decir, un coeficiente de transformada distinto de cero). En algunos ejemplos, el subbloque es un subbloque 4x4, y el bloque es un bloque de transformada 8x8.
El codificador de vfdeo 20 selecciona un patron de contextos de una misma pluralidad de patrones de contextos bidimensionales para una pluralidad de tipos de barrido (por ejemplo, un barrido horizontal, un barrido vertical y un barrido diagonal) para los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual (1104). Los ejemplos de patrones de contextos incluyen los patrones de contextos ilustrados en las FIGS. 9A- 9D. En las tecnicas descritas en esta divulgacion, el codificador de vfdeo 20 puede seleccionar a partir de la misma pluralidad de patrones de contextos bidimensionales si el subbloque se lee mediante barrido horizontal, vertical o diagonal. En otras palabras, cuando el tipo de barrido es horizontal o vertical, el codificador de vfdeo 20 selecciona entre la misma pluralidad de patrones de contextos bidimensionales a partir de la cual selecciona el codificador de vfdeo 20 si el tipo de barrido es diagonal.
Ademas, como se ha descrito anteriormente, cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas subbloques vecinos. Por ejemplo, el uno o mas subbloques vecinos incluyen un primer subbloque vecino y un segundo subbloque vecino, y cada uno de los patrones de contextos puede estar asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en el primer subbloque vecino y la inclusion o no de algun coeficiente de transformada distinto de cero en el segundo subbloque vecino (es decir, cada contexto esta asociado a una condicion de si el valor de CGFb y CGFr es 1 o 0).
El codificador de vfdeo 20 asigna contextos a cada uno de los elementos sintacticos de significancia del coeficiente de transformada basandose en el patron de contextos seleccionado (1106). Por ejemplo, como se ha descrito anteriormente, si el codificador de vfdeo 20 selecciona el patron de contextos asociado a la condicion de que CGFb es igual a 0 y CGFR es igual a 1 (es decir, el subbloque inferior no incluye ningun coeficiente de transformada distinto de cero y el bloque derecho incluye al menos un coeficiente de transformada distinto de cero), entonces el codificador de vfdeo 20 asigna un contexto (por ejemplo, contexto 2 o 5 con desplazamiento de 3) a una primera fila de los elementos sintacticos de significancia del subbloque, que es diferente del contexto para las otras filas.
Si el codificador de vfdeo 20 selecciona el patron de contextos asociado a la condicion de que CGFb es igual a 1 y CGFr es igual a 0 (es decir, el subbloque inferior incluye al menos un coeficiente de transformada distinto de cero y el bloque derecho no incluye ningun coeficiente de transformada distinto de cero), entonces el codificador de vfdeo 20 asigna un contexto (por ejemplo, el contexto 2 o 5 con desplazamiento de 3) a una columna de los elementos sintacticos de significancia del subbloque, que es diferente del contexto para las otras columnas. Si el codificador de vfdeo 20 selecciona el patron de contextos asociado a la condicion de que CGFb es igual a 1 y CGFr es igual a 1 (es decir, el subbloque inferior incluye al menos un coeficiente de transformada distinto de cero y el bloque derecho incluye al menos un coeficiente de transformada distinto de cero), entonces el codificador de vfdeo 20 asigna un mismo contexto (por ejemplo, el contexto 2 o 5 con el desplazamiento de 3) a los elementos sintacticos de significancia del subbloque actual.
El codificador de vfdeo 20 codifica mediante CABAC los elementos sintacticos de significancia basandose en los contextos asignados (1108). El codificador de vfdeo 20 facilita los elementos sintacticos de significancia codificados como parte del flujo de bits codificado (1110).
La FIG. 12 es un diagrama de flujo que ilustra un ejemplo de codificacion de datos de vfdeo de acuerdo con las tecnicas de esta divulgacion. Aunque el proceso de la FIG. 12 se describe a continuacion como si se llevara a cabo en general mediante el codificador de vfdeo 20, el proceso puede llevarse a cabo mediante cualquier combinacion formada por el codificador de vfdeo 20, la unidad codificacion de entropfa 56 y/o la unidad de modelizacion de contextos 506.
Como se ilustra en la FIG. 12, el codificador de vfdeo 20 genera elementos sintacticos de significancia para los coeficientes de transformada de un subbloque actual de un bloque (1202). El elemento sintactico de significancia (por ejemplo, indicador de coeficiente de significancia) de un coeficiente de transformada indica si el valor del coeficiente de transformada es cero (es decir, un coeficiente de transformada cero) o distinto de cero (es decir, un coeficiente de transformada distinto de cero). En algunos ejemplos, el subbloque es un subbloque 4x4, y el bloque es un bloque de transformada 8x8.
5
10
15
20
25
30
35
40
45
50
55
60
65
El codificador de video 20 selecciona un patron de contextos (por ejemplo, uno que se almacena como patron de contextos unidimensional,1204). En algunos ejemplos, el patron de contextos identifica contextos para dos o mas tipos de barrido del subbloque actual. Por ejemplo, el patron de contextos seleccionado es para un tipo de barrido entre un barrido horizontal, un barrido vertical y un barrido diagonal.
En un ejemplo, el patron de contextos seleccionado define un primer contexto para un primer elemento sintactico de significancia en un orden de barrido, define un segundo contexto para un segundo y un tercer elementos sintacticos de significancia en el orden de barrido y define un tercer contexto para los elementos sintacticos de significancia restantes en el orden de barrido. En otro ejemplo, el patron de contextos seleccionado define un primer contexto para un primer elemento sintactico de significancia en un orden de barrido y define un segundo contexto para los elementos sintacticos de significancia restantes en el orden de barrido. En otro ejemplo, el patron de contextos seleccionado define un mismo contexto para todos los elementos sintacticos de significancia.
En algunos ejemplos, el patron de contextos seleccionado se selecciona a partir de una pluralidad de patrones de contextos que se almacenan como patrones de contextos unidimensionales. Por ejemplo, la pluralidad de patrones de contextos se precalculan y almacenan a partir de los patrones de contextos bidimensionales ilustrados en las FIGS. 9A-9D. En un ejemplo, uno de la pluralidad de patrones de contextos se precalcula a partir de un patron de contextos bidimensional que incluye contextos que, si se leen mediante barrido horizontal o vertical, dan como resultado un mismo patron de contextos unidimensional. Un ejemplo de dicho patron de contextos bidimensional es el patron de contextos ilustrado en la Fig. 9A. En otro ejemplo, uno de la pluralidad de patrones de contextos se precalcula a partir de un patron de contextos bidimensional que incluye contextos que, si se leen mediante barrido horizontal, vertical o diagonal, dan todos como resultado el mismo patron de contextos unidimensional. Un ejemplo de dicho patron de contextos bidimensional es el patron de contextos ilustrado en la FIG. 9D.
En otro ejemplo, uno de la pluralidad de patrones de contextos se precalcula a partir de un primer patron de contextos bidimensional que incluye contextos que, si se leen mediante barrido horizontal, dan como resultado un mismo patron de contextos unidimensional que, cuando se lee mediante barrido vertical, un segundo patron de contextos bidimensional. Un ejemplo del primer patron de contextos bidimensional es el patron de contextos ilustrado en la FIG. 9B. Un ejemplo del segundo patron de contextos bidimensional es el patron de contextos ilustrado en la FIG. 9C.
El codificador de video 20 asigna contextos a elementos sintacticos de significancia basandose en el contexto seleccionado (1206). El codificador de video 20 codifica mediante CABAC los elementos sintacticos de significancia basandose en los contextos asignados (1208). El codificador de video 20 facilita los elementos sintacticos de significancia codificados como parte del flujo de bits codificado (1210).
La FIG. 13 es un diagrama de bloques que ilustra un ejemplo de decodificador de video 30 que puede implementar las tecnicas descritas en esta divulgacion. En el ejemplo de la FIG. 13, el decodificador de video 30 incluye una unidad de decodificacion de entropia 80, una unidad de procesamiento de prediccion 81, una unidad de procesamiento de cuantificacion inversa 86, una unidad de procesamiento de transformada inversa 88, un sumador 90 y una memoria de imagenes de referencia 92. La unidad de procesamiento de prediccion 81 incluye la unidad de compensacion de movimiento 82 y el modulo de prediccion intra 84. En algunos ejemplos, el decodificador de video 30 puede realizar un pase de decodificacion que en general es reciproco al pase de codificacion descrito con respecto al codificador de video 20 de la FIG. 7.
Durante el proceso de decodificacion, el decodificador de video 30 recibe un flujo de bits de video codificado que representa bloques de video de un segmento de video codificado y elementos sintacticos asociados, desde el codificador de video 20. La unidad de decodificacion de entropia 80 del decodificador de video 30 realiza la decodificacion de entropia del flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintacticos. La unidad de decodificacion de entropia 80 envia los vectores de movimiento y otros elementos sintacticos al modulo de prediccion 81. El decodificador de video 30 puede recibir los elementos sintacticos en el nivel del segmento de video y/o el nivel del bloque de video.
La FIG. 14 es un diagrama de bloques que ilustra un ejemplo de unidad de decodificacion de entropia 70 que puede implementar las tecnicas descritas en esta divulgacion. La unidad de decodificacion de entropia 70 recibe un flujo de bits sometido a codificacion de entropia y decodifica los elementos sintacticos del flujo de bits. Los elementos sintacticos pueden incluir los elementos sintacticossignificant_coeff_group_flag, significant_coefficient_flag, coeff_abs_level_remain, coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag y coeff_sign_flag, descritos anteriormente. El ejemplo de unidad de decodificacion de entropia 70 de la FIG. 14 incluye una unidad de decodificacion aritmetica 702, que puede incluir un motor de decodificacion de derivacion 704 y un motor de decodificacion convencional 706. El ejemplo de unidad de decodificacion de entropia 70 incluye ademas una unidad de modelizacion de contextos 708 y una unidad de binarizacion inversa 710. El ejemplo de unidad de decodificacion de entropia 70 puede llevar a cabo las funciones reciprocas a las del ejemplo de unidad de codificacion de entropia 56 descritas con respecto a la FIG. 8. De esta manera, la unidad de decodificacion de entropia 70 puede llevar a cabo la decodificacion de entropia basandose en las tecnicas descritas en el presente documento.
5
10
15
20
25
30
35
40
45
50
55
60
65
La unidad de decodificacion aritmetica 702 recibe un flujo de bits codificado. Como se muestra en la FIG. 14, la unidad de decodificacion aritmetica 702 puede procesar valores de bin codificados de acuerdo con una ruta de derivacion o la ruta de codificacion convencional. Una indicacion sobre si un valor de bin codificado deberia procesarse de acuerdo con una ruta de derivacion o una ruta convencional puede senalizarse en el flujo de bits con sintaxis de nivel superior. En consonancia con el proceso CABAC descrito anteriormente, en caso de que la unidad de decodificacion aritmetica 702 reciba valores de bin desde una ruta de derivacion, el motor de decodificacion de derivacion 704 puede llevar a cabo una codificacion aritmetica de los valores de bin, sin utilizar un contexto asignado a un valor de bin. En un ejemplo, el motor de decodificacion de derivacion 704 puede suponer las mismas probabilidades para los posibles valores de un bin.
En caso de que la unidad de decodificacion aritmetica 702 reciba valores de bin a traves de la ruta convencional, la unidad de modelizacion de contextos 708 puede proporcionar una variable de contexto, de manera que el motor de decodificacion convencional 706 pueda llevar a cabo una codificacion aritmetica basandose en las asignaciones de contexto proporcionadas por la unidad de modelizacion de contextos 708. Las asignaciones de contexto pueden definirse segun una norma de codificacion de video, tal como la HEVC. Los modelos de contexto pueden almacenarse en memoria. La unidad de modelizacion de contextos 708 puede incluir una serie de tablas indexadas y/o utilizar funciones de correlacion para determinar un contexto y una parte de variable de contexto de un flujo de bits codificado. Ademas, en un ejemplo, la unidad de modelizacion de contextos 506 y/o la unidad de codificacion de entropia 56 pueden configurarse para asignar contextos a bins de los elementos sintacticos significant_coefr_group_flag y significant_coefficient_flag basandose en las tecnicas descritas en el presente documento. Tras decodificar un valor de bin, el motor de codificacion convencional 706 puede actualizar un contexto basandose en los valores de bin decodificados. Ademas, la unidad de binarizacion inversa 710 puede llevar a cabo una binarizacion inversa en un valor de bin y utilizar una funcion de correspondencia de bins para determinar si un valor de bin es valido. La unidad de binarizacion inversa 710 tambien puede actualizar la unidad de modelizacion de contextos basandose en la determinacion de correspondencia. Por tanto, la unidad de binarizacion inversa 710 facilita elementos sintacticos de acuerdo con una tecnica de decodificacion adaptativa segun el contexto.
Cuando el segmento de video se codifica como un segmento intracodificado (I), el modulo de prediccion intra 84 del modulo de prediccion 81 puede generar datos de prediccion para un bloque de video del segmento de video actual, basandose en un modo de prediccion intra senalizado y datos de bloques decodificados previamente de la trama o imagen actual. Cuando la trama de video se codifica como un segmento intercodificado (es decir, B o P), la unidad de compensacion de movimiento 82 del modulo de prediccion 81 genera bloques predictivos para un bloque de video del segmento de video actual, basandose en los vectores de movimiento y otros elementos sintacticos recibidos desde la unidad de decodificacion de entropia 80. Los bloques predictivos pueden generarse a partir de una de las imagenes de referencia de una de las listas de imagenes de referencia. El decodificador de video 30 puede crear las listas de tramas de referencia, la Lista 0 y la Lista 1, mediante tecnicas de construccion predeterminadas, basandose en las imagenes de referencia almacenadas en la memoria de imagenes de referencia 92.
La unidad de compensacion de movimiento 82 determina informacion de prediccion para un bloque de video del segmento de video actual, analizando los vectores de movimiento y otros elementos sintacticos, y utiliza la informacion de prediccion para generar los bloques predictivos para el bloque de video actual que se esta decodificando. Por ejemplo, la unidad de compensacion de movimiento 82 utiliza algunos de los elementos sintacticos recibidos para determinar un modo de prediccion (por ejemplo, prediccion intra o prediccion inter) utilizado para codificar los bloques de video del segmento de video, un tipo de segmento de prediccion inter (por ejemplo, segmento B o segmento P), informacion de construccion para una o mas de las listas de imagenes de referencia para el segmento, vectores de movimiento para cada bloque de video intercodificado del segmento, el estado de prediccion inter para cada bloque de video intercodificado del segmento y otra informacion para decodificar los bloques de video del segmento de video actual.
La unidad de compensacion de movimiento 82 tambien puede llevar a cabo una interpolacion basandose en filtros de interpolacion. La unidad de compensacion de movimiento 82 puede utilizar filtros de interpolacion como los utilizados por el codificador de video 20 durante la codificacion de los bloques de video, para calcular valores interpolados para pixeles subenteros de bloques de referencia. En este caso, la unidad de compensacion de movimiento 82 puede determinar los filtros de interpolacion utilizados por el codificador de video 20 a partir de los elementos sintacticos recibidos, y utilizar los filtros de interpolacion para generar bloques predictivos.
La unidad de procesamiento de cuantificacion inversa 86 realiza la cuantificacion inversa, es decir, descuantifica, los coeficientes de transformada cuantificados, proporcionados en el flujo de bits y decodificados por la unidad de decodificacion de entropia 80. El proceso de cuantificacion inversa puede incluir la utilizacion de un parametro de cuantificacion calculado por el codificador de video 20 para cada bloque de video del segmento de video, a fin de determinar un grado de cuantificacion y, asimismo, un grado de cuantificacion inversa que deberia aplicarse. La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo una DCT inversa, una transformada entera inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada, con el fin de generar bloques residuales en el dominio del pixel.
5
10
15
20
25
30
35
40
45
50
55
60
65
En algunos casos, la unidad de procesamiento de transformada inversa 88 puede aplicar una transformada inversa bidimensional (2D, tanto en la direccion horizontal como la vertical) a los coeficientes. De acuerdo con las tecnicas de esta divulgacion, la unidad de procesamiento de transformada inversa 88 puede aplicar, en cambio, una transformada inversa 1D horizontal, una transformada inversa 1D vertical o ninguna transformada a los datos residuales de cada una de las TU. El tipo de transformada aplicada a los datos residuales en el codificador de video 20 puede senalizarse al decodificador de video 30 para aplicar un tipo apropiado de transformada inversa a los coeficientes de transformada.
Despues de que la unidad de compensacion de movimiento 82 genere el bloque predictivo para el bloque de video actual basandose en los vectores de movimiento y otros elementos sintacticos, el decodificador de video 30 forma un bloque de video decodificado sumando los bloques residuales de la unidad de procesamiento de transformada inversa 88 a los correspondientes bloques predictivos generados por la unidad de compensacion de movimiento 82. El sumador 90 representa el componente o los componentes que llevan a cabo esta operacion de suma. Si se desea, tambien puede aplicarse un filtro de eliminacion de bloques para filtrar los bloques decodificados con el fin de eliminar distorsiones de efecto pixelado. Tambien pueden utilizarse otros filtros de bucle (ya sea en el bucle de codificacion o despues del bucle de codificacion) para suavizar las transiciones de pixeles o mejorar de otro modo la calidad del video. Los bloques de video decodificados de una trama o imagen dada se almacenan, a continuacion, en la memoria de imagenes de referencia 92, que almacena imagenes de referencia utilizadas para una subsiguiente compensacion de movimiento. La memoria de imagenes de referencia 92 almacena tambien video decodificado para su presentacion posterior en un dispositivo de visualizacion, tal como el dispositivo de visualizacion 34 de la FIG. 6.
La FIG. 15 es un diagrama de flujo que ilustra un ejemplo de decodificacion de datos de video de acuerdo con las tecnicas de esta divulgacion. Aunque el proceso de la FIG. 15 se describe a continuacion como si se llevara a cabo en general mediante el decodificador de video 30, el proceso puede llevarse a cabo mediante cualquier combinacion del decodificador de video 30, la unidad de decodificacion de entropia 56 y/o la unidad de modelizacion de contextos 708.
Como se ilustra en la FIG. 15, el decodificador de video 30 recibe, en un flujo de bits sometido a codificacion de entropia, elementos sintacticos de significancia de coeficientes de transformada para un subbloque actual de un bloque (1502). El subbloque puede ser un subbloque 4x4, y el bloque puede ser un bloque de transformada 8x8. De forma similar al codificador de video 20 (por ejemplo, el bloque 1104 de la FIG. 11), el decodificador de video 30 selecciona un patron de contextos a partir de una misma pluralidad de patrones de contextos de patrones de contextos bidimensionales para una pluralidad de tipos de barrido (por ejemplo, un barrido horizontal, un barrido vertical y un barrido diagonal) para los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual (1504). En este ejemplo, cada uno de los patrones de contextos esta asociado a una condicion sobre la inclusion o no de algun coeficiente de transformada distinto de cero en uno o mas bloques vecinos (por ejemplo, un primer subbloque vecino y un segundo bloque vecino).
El decodificador de video 30, de una manera similar a la descrita anteriormente con respecto al codificador de video 20 (por ejemplo, el bloque 1106 de la FIG. 11), asigna contextos a cada uno de los elementos sintacticos de significancia de los coeficientes de transformada basandose en el patron de contextos seleccionado (1506). Por ejemplo, si se selecciona el patron de contextos asociado a la condicion de que CGFb es igual a 0 y CGFr es igual a 1, entonces el decodificador de video 30 asigna un contexto a una primera fila, que es diferente de los contextos para las otras filas. Si se selecciona el patron de contextos asociado a la condicion de que CGFb es igual a 1 y CGFr es igual a 0, entonces el decodificador de video 30 asigna un contexto a una primera columna, que es diferente de los contextos para las otras columnas. Si se selecciona el patron de contextos asociado a la condicion de que CGFb es igual a 1 y CGFr es igual a 1, entonces el decodificador de video 30 asigna un mismo contexto a los elementos sintacticos de significancia. El decodificador de video 30 decodifica mediante CABAC los elementos sintacticos de significancia basandose en los contextos asignados (1508).
La FIG. 16 es un diagrama de flujo que ilustra un ejemplo de decodificacion de datos de video de acuerdo con las tecnicas de esta divulgacion. Aunque el proceso de la FIG. 16 se describe a continuacion como si se llevara a cabo en general mediante el decodificador de video 30, el proceso puede llevarse a cabo mediante cualquier combinacion del decodificador de video 30, la unidad de decodificacion de entropia 70 y/o la unidad de modelizacion de contextos 708.
Como se ilustra en la FIG. 16, el decodificador de video 30 recibe, en un flujo de bits sometido a codificacion de entropia, elementos sintacticos de significancia de coeficientes de transformada para un subbloque actual de un bloque (1602). El subbloque puede ser un subbloque 4x4, y el bloque puede ser un bloque de transformada 8x8. De forma similar al codificador de video 20 (por ejemplo, el bloque 1204 de la FIG. 12), el decodificador de video 30 selecciona un patron de contextos (por ejemplo, uno que se almacena como un patron de contextos unidimensional, 1604). El patron de contextos puede ser para dos o mas tipos de barrido (por ejemplo, los tipos de barrido horizontal, diagonal y vertical).
En un ejemplo, tal como se ha descrito anteriormente, el patron de contextos seleccionado define un primer contexto
5
10
15
20
25
30
35
40
45
50
55
60
65
para un primer elemento sintactico de significancia en un orden de barrido, define un segundo contexto para un segundo y un tercer elementos sintacticos de significancia en el orden de barrido y define un tercer contexto para los elementos sintacticos de significancia restantes en el orden de barrido. En otro ejemplo, tal como se ha descrito anteriormente, el patron de contextos seleccionado define un primer contexto para un primer elemento sintactico de significancia en un orden de barrido y define un segundo contexto para los elementos sintacticos de significancia restantes en el orden de barrido. En otro ejemplo, el patron de contextos seleccionado define un mismo contexto para todos los elementos sintacticos de significancia.
En algunos ejemplos, el patron de contextos seleccionado se selecciona a partir de una pluralidad de patrones de contextos que se almacenan como patrones de contextos unidimensionales. Por ejemplo, la pluralidad de patrones de contextos se precalculan y almacenan a partir de los patrones de contextos bidimensionales ilustrados en las FIGS. 9A-9D. En un ejemplo, uno de la pluralidad de patrones de contextos se precalcula a partir de un patron de contextos bidimensional que incluye contextos que, si se leen mediante barrido horizontal o vertical, dan como resultado un mismo patron de contextos unidimensional. Un ejemplo de dicho patron de contextos bidimensional es el patron de contextos ilustrado en la Fig. 9A. En otro ejemplo, uno de la pluralidad de patrones de contextos se precalcula a partir de un patron de contextos bidimensional que incluye contextos que, si se leen mediante barrido horizontal, vertical o diagonal, dan todos como resultado el mismo patron de contextos unidimensional. Un ejemplo de dicho patron de contextos bidimensional es el patron de contextos ilustrado en la Fig. 9D.
En otro ejemplo, uno de la pluralidad de patrones de contextos se precalcula a partir de un primer patron de contextos bidimensional que incluye contextos que, si se leen mediante barrido horizontal, dan como resultado un mismo patron de contextos unidimensional que, cuando se lee mediante barrido vertical, un segundo patron de contextos bidimensional. Un ejemplo del primer patron de contextos bidimensional es el patron de contextos ilustrado en la FIG. 9B. Un ejemplo del segundo patron de contextos bidimensional es el patron de contextos ilustrado en la FIG. 9C.
El decodificador de video 30 asigna contextos a elementos sintacticos de significancia basandoseen el contexto seleccionado (1606). El decodificador de video 30 decodifica mediante CABAC los elementos sintacticos de significancia basandose en los contextos asignados (1608).
En uno o mas ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinacion de estos. Si se implementan en software, las funciones pueden almacenarse como una o mas instrucciones o codigo en un medio legible por ordenador, o transmitirse a traves de este, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como unos medios de almacenamiento de datos o unos medios de comunicacion que incluyen cualquier medio que facilite la transferencia de un programa informatico desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicacion. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) unos medios de almacenamiento tangibles y legibles por ordenador que sean no transitorios, o (2) un medio de comunicacion tal como una senal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para implementar las tecnicas descritas en esta divulgacion. Un producto de programa informatico puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de manera limitativa, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico u otros dispositivos de almacenamiento magnetico, memoria flash o cualquier otro medio que pueda utilizarse para almacenar el codigo de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Ademas, cualquier conexion puede denominarse de forma correcta "medio legible por ordenador". Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota mediante un cable coaxial, un cable de fibra optica, un par trenzado, una linea de abonado digital (DSL) o tecnologias inalambricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologias inalambricas tales como infrarrojos, radio y microondas se incluyen en la definicion de medio. Sin embargo, deberia entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, senales u otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. Los discos, en el presente documento, incluyen un disco compacto (CD), un disco laser, un disco optico, un disco versatil digital (DVD), un disco flexible y un disco Blu-ray, de los cuales los discos flexibles normalmente reproducen los datos magneticamente, mientras que los otros discos reproducen opticamente los datos mediante laser. Las combinaciones de los anteriores tambien deberian incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores de proposito general, circuitos integrados especificos de la aplicacion (ASIC), matrices logicas programables in situ (FPGA) u otros circuitos logicos integrados o discretos equivalentes. Por consiguiente, el termino "procesador" en el presente documento puede referirse a cualquier estructura anterior o a cualquier otra estructura adecuada para la implementacion de las tecnicas descritas en el presente documento.
Ademas, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de modulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un codec combinado. Ademas, las tecnicas podrian implementarse por completo en uno o mas circuitos o elementos logicos.
5 Las tecnicas de esta divulgacion se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyen un telefono inalambrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En esta divulgacion se describen varios componentes, modulos o unidades para enfatizar aspectos funcionales de dispositivos configurados para realizar las tecnicas divulgadas, pero su realizacion mediante diferentes unidades de hardware no es necesaria. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse 10 en una unidad de hardware de codec o proporcionarse por medio de un grupo de unidades de hardware interoperativas, que incluyen uno o mas procesadores como los descritos anteriormente, conjuntamente con software y/o firmware adecuados.
Se han descrito diversos ejemplos. Estos y otros ejemplos estan dentro del alcance de las siguientes 15 reivindicaciones.

Claims (12)

1.
5
10
15
20
2.
25
30
35
40
3.
45 4.
50
5.
55
6.
60 7.
REIVINDICACIONES
Un procedimiento para decodificar datos de video, comprendiendo el procedimiento:
recibir (1502, 1602), en un flujo de bits, elementos sintacticos de significancia que indican si cada coeficiente de transformada correspondiente de coeficientes de transformada de un subbloque actual de un bloque es un coeficiente de transformada distinto de cero;
seleccionar (1504, 1604) un patron de contextos, que incluye valores de contextos que corresponden a los coeficientes de transformada situados en posiciones respectivas del subbloque, a partir de una pluralidad de patrones de contextos, en el que el patron de contextos seleccionado identifica contextos para dos o mas tipos de barrido del subbloque actual, en el que un tipo de barrido es un proceso de lectura de elementos de una matriz bidimensional para obtener una matriz unidimensional; asignar (1506, 1606) valores de contextos del patron de contextos seleccionado a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en posiciones de los valores de contextos en el patron de contextos seleccionado y posiciones de los coeficientes de transformada correspondientes a elementos sintacticos significativos; y decodificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) (1508, 1608) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual mediante unos valores de contextos asignados respectivos.
Un procedimiento para codificar datos de video, comprendiendo el procedimiento:
generar (1102, 1202) elementos sintacticos de significancia que indican si cada coeficiente de transformada correspondiente de unos coeficientes de transformada de un subbloque actual de un bloque es un coeficiente de transformada distinto de cero;
seleccionar (1104, 1204) un patron de contextos, que incluye valores de contextos que corresponden a los coeficientes de transformada situados en posiciones respectivas del subbloque, a partir de una pluralidad de patrones de contextos, en el que el patron de contextos seleccionado identifica contextos para dos o mas tipos de barrido del subbloque actual, en el que un tipo de barrido es un proceso de lectura de elementos de una matriz bidimensional para obtener una matriz unidimensional; asignar (1106, 1206) valores de contextos del patron de contextos seleccionado a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en unas posiciones de los valores de contextos en el patron de contextos seleccionado y unas posiciones de los coeficientes de transformada correspondientes a unos elementos sintacticos significativos; codificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) (1108, 1208) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual mediante valores de contextos asignados respectivos; y
facilitar (1110, 1210) los elementos sintacticos de significancia codif icados.
El procedimiento de la reivindicacion 1, en el que seleccionar el patron de contextos comprende seleccionar el patron de contextos para un tipo de barrido entre un barrido horizontal, un barrido vertical y un barrido diagonal.
El procedimiento de la reivindicacion 1 o la reivindicacion 2, en el que seleccionar el patron de contextos comprende seleccionar el patron de contextos que define un primer contexto para un primer elemento sintactico de significancia en un orden de barrido, define un segundo contexto para un segundo y un tercer elemento sintacticos de significancia en el orden de barrido y define un tercer contexto para unos elementos sintacticos de significancia restantes en el orden de barrido.
El procedimiento de la reivindicacion 1 o la reivindicacion 2, en el que seleccionar el patron de contextos comprende seleccionar el patron de contextos que define un primer contexto para un primer elemento sintactico de significancia en un orden de barrido, y define un segundo contexto para unos elementos sintacticos de significancia restantes en el orden de barrido.
El procedimiento de la reivindicacion 1 o la reivindicacion 2, en el que seleccionar el patron de contextos comprende seleccionar el patron de contextos que define un mismo contexto para todos los elementos sintacticos de significancia.
El procedimiento de la reivindicacion 1 o la reivindicacion 2, en el que el subbloque actual comprende un subbloque 4x4, y el bloque comprende un bloque 8x8.
El procedimiento de la reivindicacion 1 o la reivindicacion 2, en el que seleccionar el patron de contextos comprende seleccionar (1204, 1604) el patron de contextos a partir de una pluralidad de patrones de contextos que se almacenan cada uno como patrones de contextos unidimensionales.
5
10
15
20
25
30
35
40
45
50
55
9. El procedimiento de la reivindicacion 8, en el que uno de la pluralidad de patrones de contextos se precalcula a partir de un patron de contextos bidimensional, y en el que el patron de contextos bidimensional comprende contextos que si se leen mediante barrido horizontal o vertical dan como resultado un mismo patron de contextos unidimensional.
10. El procedimiento de la reivindicacion 8, en el que uno de la pluralidad de patrones de contextos se precalcula a partir de un patron de contextos bidimensional, y en el que el patron de contextos bidimensional comprende contextos que si se leen mediante barrido diagonal, horizontal y vertical dan como resultado un mismo patron de contextos unidimensional.
11. El procedimiento de la reivindicacion 8, en el que uno de la pluralidad de patrones de contextos se precalcula a partir de un primer patron de contextos bidimensional, y en el que el primer patron de contextos bidimensional comprende contextos que si se leen mediante barrido horizontal dan como resultado un mismo patron de contextos unidimensional que cuando se lee mediante barrido vertical un segundo patron de contextos bidimensional.
12. Un dispositivo para decodificar datos de video, comprendiendo el dispositivo:
medios para recibir, en un flujo de bits, elementos sintacticos de significancia que indican si cada coeficiente de transformada correspondiente de unos coeficientes de transformada de un subbloque actual de un bloque es un coeficiente de transformada distinto de cero;
medios para seleccionar un patron de contextos, que incluye valores de contextos que corresponden a los coeficientes de transformada situados en posiciones respectivas del subbloque, a partir de una pluralidad de patrones de contextos, en el que el patron de contextos seleccionado identifica contextos para dos o mas tipos de barrido del subbloque actual, en el que un tipo de barrido es un proceso de lectura de elementos de una matriz bidimensional para obtener una matriz unidimensional;
medios para asignar valores de contextos del patron de contextos seleccionado a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en unas posiciones de los valores de contextos en el patron de contextos seleccionado y unas posiciones de los coeficientes de transformada correspondientes a unos elementos sintacticos significativos; y medios para decodificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual mediante unos valores de contextos asignados respectivos.
13. Un dispositivo para codificar datos de video, comprendiendo el dispositivo:
medios para generar elementos sintacticos de significancia que indican si cada coeficiente de transformada correspondiente de unos coeficientes de transformada de un subbloque actual de un bloque es un coeficiente de transformada distinto de cero;
medios para seleccionar un patron de contextos, que incluye valores de contextos que corresponden a los coeficientes de transformada situados en posiciones respectivas del subbloque, a partir de una pluralidad de patrones de contextos, en el que el patron de contextos seleccionado identifica contextos para dos o mas tipos de barrido del subbloque actual, en el que un tipo de barrido es un proceso de lectura de elementos de una matriz bidimensional para obtener una matriz unidimensional;
medios para asignar valores de contextos del patron de contextos seleccionado a los elementos sintacticos de significancia de los coeficientes de transformada para el subbloque actual basandose en unas posiciones de los valores de contexto en el patron de contextos seleccionado y unas posiciones de los coeficientes de transformada correspondientes a unos elementos sintacticos significativos; medios para codificar mediante codificacion aritmetica binaria adaptativa segun el contexto (CABAC) los elementos sintacticos de significancia de los coeficientes de transformada del subbloque actual mediante unos valores de contexto asignados respectivos; y medios para facilitar los elementos sintacticos de significancia codificados.
14. El dispositivo de la reivindicacion 12 o la reivindicacion 13 que comprende medios para llevar a cabo un procedimiento de acuerdo con cualquiera de las reivindicaciones 3 a 11.
15. Un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo que cuando se ejecutan hacen que uno o mas procesadores de un dispositivo lleven a cabo un procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 11.
ES13718475.0T 2012-04-16 2013-04-15 Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes Active ES2637490T3 (es)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261625039P 2012-04-16 2012-04-16
US201261625039P 2012-04-16
US201261667382P 2012-07-02 2012-07-02
US201261667382P 2012-07-02
US201313834006 2013-03-15
US13/834,006 US9621921B2 (en) 2012-04-16 2013-03-15 Coefficient groups and coefficient coding for coefficient scans
PCT/US2013/036646 WO2013158566A1 (en) 2012-04-16 2013-04-15 Coefficient groups and coefficient coding for coefficient scans

Publications (1)

Publication Number Publication Date
ES2637490T3 true ES2637490T3 (es) 2017-10-13

Family

ID=49325050

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13718475.0T Active ES2637490T3 (es) 2012-04-16 2013-04-15 Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes

Country Status (19)

Country Link
US (3) US9124872B2 (es)
EP (3) EP2839584A1 (es)
JP (4) JP2015516767A (es)
KR (3) KR102115049B1 (es)
CN (3) CN104247421B (es)
AR (1) AR091338A1 (es)
AU (2) AU2013249532A1 (es)
CA (2) CA2868533A1 (es)
DK (1) DK2839645T3 (es)
ES (1) ES2637490T3 (es)
HK (2) HK1201103A1 (es)
IL (2) IL234705A0 (es)
PH (2) PH12014502144A1 (es)
RU (2) RU2014145852A (es)
SG (2) SG11201405867WA (es)
SI (1) SI2839645T1 (es)
TW (2) TW201352004A (es)
WO (3) WO2013158566A1 (es)
ZA (2) ZA201407860B (es)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100436574C (zh) 2001-09-06 2008-11-26 基因描绘系统有限公司 复制细胞的快速检测
PL3306939T3 (pl) * 2011-06-28 2020-11-02 Samsung Electronics Co., Ltd. Sposób i urządzenie do kodowania wideo, odpowiedni sposób do dekodowania wideo, wideo z towarzyszącym dekodowaniem arytmetycznym oraz sygnalizowanie dwuwymiarowego ostatniego znaczącego współczynnika
US8891630B2 (en) * 2011-10-24 2014-11-18 Blackberry Limited Significance map encoding and decoding using partition set based context assignment
TWI613907B (zh) * 2011-11-08 2018-02-01 三星電子股份有限公司 用於解碼視訊的方法
AU2012200319B2 (en) * 2012-01-19 2015-11-26 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit
US9124872B2 (en) 2012-04-16 2015-09-01 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
AU2013268588B2 (en) 2012-06-01 2017-03-02 Sharp Kabushiki Kaisha Arithmetic decoding device, image decoding device, arithmetic encoding device, and image encoding device
WO2014138633A2 (en) * 2013-03-08 2014-09-12 Board Of Regents, The University Of Texas System Systems and methods for digital media compression and recompression
US9813737B2 (en) * 2013-09-19 2017-11-07 Blackberry Limited Transposing a block of transform coefficients, based upon an intra-prediction mode
KR102333000B1 (ko) * 2015-01-15 2021-12-01 한국전자통신연구원 고속 변환 계수 부호화 방법 및 장치
US10334248B2 (en) 2015-05-29 2019-06-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
CA2988451C (en) 2015-06-23 2021-01-19 Mediatek Singapore Pte. Ltd. Method and apparatus for transform coefficient coding of non-square blocks
US10123044B2 (en) * 2015-07-16 2018-11-06 Mediatek Inc. Partial decoding circuit of video encoder/decoder for dealing with inverse second transform and partial encoding circuit of video encoder for dealing with second transform
US10784901B2 (en) 2015-11-12 2020-09-22 Qualcomm Incorporated Puncturing for structured low density parity check (LDPC) codes
JP6728375B2 (ja) 2016-02-12 2020-07-22 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 走査順序選択のための方法および装置
CN108605132B (zh) 2016-02-12 2020-12-15 华为技术有限公司 选择扫描顺序的方法和装置
US11043966B2 (en) 2016-05-11 2021-06-22 Qualcomm Incorporated Methods and apparatus for efficiently generating multiple lifted low-density parity-check (LDPC) codes
US10454499B2 (en) 2016-05-12 2019-10-22 Qualcomm Incorporated Enhanced puncturing and low-density parity-check (LDPC) code structure
US10469104B2 (en) 2016-06-14 2019-11-05 Qualcomm Incorporated Methods and apparatus for compactly describing lifted low-density parity-check (LDPC) codes
EP3264763A1 (en) * 2016-06-29 2018-01-03 Thomson Licensing Method and apparatus for improved significance flag coding using simple local predictor
US10972733B2 (en) 2016-07-15 2021-04-06 Qualcomm Incorporated Look-up table for enhanced multiple transform
CN109804627B (zh) * 2016-08-11 2023-07-25 Lx 半导体科技有限公司 图像编码/解码方法和设备
CN117412035A (zh) 2016-08-31 2024-01-16 株式会社Kt 用于处理视频信号的方法和设备
US11729390B2 (en) * 2017-04-13 2023-08-15 Lg Electronics Inc. Image encoding/decoding method and device therefor
CN107071494B (zh) * 2017-05-09 2019-10-11 珠海市杰理科技股份有限公司 视频图像帧的二进制语法元素的生成方法和系统
CN108881909A (zh) * 2017-05-09 2018-11-23 富士通株式会社 扫描顺序生成方法和扫描顺序生成设备
US10630974B2 (en) * 2017-05-30 2020-04-21 Google Llc Coding of intra-prediction modes
US10312939B2 (en) 2017-06-10 2019-06-04 Qualcomm Incorporated Communication techniques involving pairwise orthogonality of adjacent rows in LPDC code
US12476733B2 (en) 2017-06-19 2025-11-18 Qualcomm Incorporated Communication techniques with self-decodable redundancy versions (RVs) using systematic codes
EP3649755B1 (en) 2017-07-07 2023-09-20 QUALCOMM Incorporated Communication techniques applying low-density parity-check code base graph selection
US11805256B2 (en) * 2017-07-31 2023-10-31 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium storing bitstream
US10523968B2 (en) 2017-09-18 2019-12-31 Google Llc Coding of last significant coefficient flags
WO2019078693A1 (ko) * 2017-10-20 2019-04-25 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법
KR102628530B1 (ko) * 2017-10-20 2024-01-24 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법
EP3490253A1 (en) * 2017-11-23 2019-05-29 Thomson Licensing Encoding and decoding methods and corresponding devices
US12355996B2 (en) 2017-11-23 2025-07-08 Interdigital Vc Holdings, Inc. Encoding and decoding methods and corresponding devices
CN116132674A (zh) * 2017-12-13 2023-05-16 三星电子株式会社 视频解码方法及其装置以及视频编码方法及其装置
CN116132694A (zh) * 2018-01-02 2023-05-16 三星电子株式会社 视频解码方法、视频编码方法及计算机可读记录介质
WO2019199838A1 (en) * 2018-04-12 2019-10-17 Futurewei Technologies, Inc. Reducing context switching for coding transform coefficients
EP3562156A1 (en) * 2018-04-27 2019-10-30 InterDigital VC Holdings, Inc. Method and apparatus for adaptive context modeling in video encoding and decoding
US11381822B2 (en) 2018-09-21 2022-07-05 Interdigital Vc Holdings, Inc. Scalar quantizer decision scheme for dependent scalar quantization
CN113170132B (zh) * 2018-09-24 2024-07-26 弗劳恩霍夫应用研究促进协会 使用或适用于与依赖标量量化的组合的变换系数的有效编码
WO2020094052A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Side information signaling for inter prediction with geometric partitioning
US11463712B2 (en) * 2018-11-21 2022-10-04 Interdigital Vc Holdings, Inc. Residual coding with reduced usage of local neighborhood
US11102513B2 (en) * 2018-12-06 2021-08-24 Tencent America LLC One-level transform split and adaptive sub-block transform
WO2020139182A1 (en) * 2018-12-28 2020-07-02 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for selecting transform selection in an encoder and decoder
WO2020140862A1 (en) 2018-12-30 2020-07-09 Beijing Bytedance Network Technology Co., Ltd. Conditional application of inter prediction with geometric partitioning in video processing
CN113170139B (zh) * 2019-01-10 2023-12-05 北京字节跳动网络技术有限公司 上下文自适应二进制算数编码的简化上下文建模
US11202100B2 (en) 2019-03-11 2021-12-14 Qualcomm Incorporated Coefficient coding for transform skip mode
EP4391536A3 (en) * 2019-03-21 2024-08-14 Samsung Electronics Co., Ltd. Method and device for encoding video having block size set for each block shape, and method and device for decoding video
EP3939251A4 (en) * 2019-04-19 2022-05-04 ByteDance Inc. CONTEXT CODING FOR TRANSFORMATION JUMP MODE
CN113906753B (zh) 2019-04-24 2023-12-01 字节跳动有限公司 编解码视频的量化残差差分脉冲编解码调制表示的约束
KR102707777B1 (ko) 2019-05-01 2024-09-20 바이트댄스 아이엔씨 양자화된 잔차 차동 펄스 코드 변조 코딩을 사용하는 인트라 코딩된 비디오
CN117615130A (zh) 2019-05-02 2024-02-27 字节跳动有限公司 基于编解码树结构类型的编解码模式
CN113785568B (zh) 2019-05-02 2024-03-08 字节跳动有限公司 变换跳过模式下的信令通知
US11032572B2 (en) * 2019-05-17 2021-06-08 Qualcomm Incorporated Low-frequency non-separable transform signaling based on zero-out patterns for video coding
US11695960B2 (en) 2019-06-14 2023-07-04 Qualcomm Incorporated Transform and last significant coefficient position signaling for low-frequency non-separable transform in video coding
KR20220050907A (ko) * 2019-08-31 2022-04-25 엘지전자 주식회사 영상 코딩 시스템에서 레지듀얼 데이터 코딩에 대한 영상 디코딩 방법 및 그 장치
AU2020382581C1 (en) * 2019-11-11 2024-10-24 Nokia Technologies Oy Transformation-based image coding method and device therefor
CN113038140B (zh) * 2019-12-24 2024-05-28 扬智电子科技(成都)有限公司 上下文适应性二进制算术编码的视频解码方法与其视频解码装置
US11785219B2 (en) * 2020-04-13 2023-10-10 Qualcomm Incorporated Coefficient coding for support of different color formats in video coding
CN112995671B (zh) * 2021-02-21 2022-10-28 腾讯科技(深圳)有限公司 视频编解码方法、装置、计算机可读介质及电子设备
US12581092B2 (en) 2022-03-03 2026-03-17 Qualcomm Incorporated Temporal initialization points for context-based arithmetic coding

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195389B1 (en) 1998-04-16 2001-02-27 Scientific-Atlanta, Inc. Motion estimation system and methods
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
CN1589023A (zh) * 2004-08-06 2005-03-02 联合信源数字音视频技术(北京)有限公司 一种基于上下文的多码表变长编解码方法及编解码装置
US20090123066A1 (en) * 2005-07-22 2009-05-14 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method, image decoding method, image encoding program, image decoding program, computer readable recording medium having image encoding program recorded therein,
US20080123947A1 (en) 2005-07-22 2008-05-29 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method, image decoding method, image encoding program, image decoding program, computer readable recording medium having image encoding program recorded therein
EP1982428A2 (en) 2005-08-31 2008-10-22 Micronas USA, Inc. Macroblock neighborhood address calculation
US8306112B2 (en) 2005-09-20 2012-11-06 Mitsubishi Electric Corporation Image encoding method and image decoding method, image encoder and image decoder, and image encoded bit stream and recording medium
BRPI0611668B1 (pt) 2005-09-20 2019-06-18 Mitsubishi Electric Corporation Decodificador de imagem, e, método de decodificação de imagem
FR2895602B1 (fr) 2005-12-22 2008-03-07 Assistance Tech Et Etude De Ma Dispositif et procede d'encodage de type cabac
US8848789B2 (en) * 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
US7554468B2 (en) * 2006-08-25 2009-06-30 Sony Computer Entertainment Inc, Entropy decoding methods and apparatus using most probable and least probable signal cases
US7460725B2 (en) * 2006-11-09 2008-12-02 Calista Technologies, Inc. System and method for effectively encoding and decoding electronic information
KR101356733B1 (ko) * 2007-03-07 2014-02-05 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
CN101415121B (zh) 2007-10-15 2010-09-29 华为技术有限公司 一种自适应的帧预测的方法及装置
JP4875024B2 (ja) 2008-05-09 2012-02-15 株式会社東芝 画像情報伝送装置
KR20090129926A (ko) * 2008-06-13 2009-12-17 삼성전자주식회사 영상 부호화 방법 및 그 장치, 영상 복호화 방법 및 그 장치
EP2319244A1 (en) 2008-08-19 2011-05-11 Thomson Licensing Cabac/avc compliant watermarking of syntax elements in compressed video
JP5492206B2 (ja) * 2009-07-27 2014-05-14 株式会社東芝 画像符号化方法および画像復号方法、ならびに、画像符号化装置および画像復号装置
US20120044987A1 (en) 2009-12-31 2012-02-23 Broadcom Corporation Entropy coder supporting selective employment of syntax and context adaptation
PL2559166T3 (pl) 2010-04-13 2018-04-30 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Koder i dekoder dzielący interwał prawdopodobieństwa
KR102417196B1 (ko) * 2010-04-13 2022-07-05 지이 비디오 컴프레션, 엘엘씨 유효성 맵 및 변환 계수 블록의 코딩
CN102884792B (zh) 2010-05-12 2016-08-17 汤姆森许可贸易公司 用于统一显著图编码的方法和设备
US9661338B2 (en) * 2010-07-09 2017-05-23 Qualcomm Incorporated Coding syntax elements for adaptive scans of transform coefficients for video coding
US9154801B2 (en) 2010-09-30 2015-10-06 Texas Instruments Incorporated Method and apparatus for diagonal scan and simplified coding of transform coefficients
US20120082235A1 (en) 2010-10-05 2012-04-05 General Instrument Corporation Coding and decoding utilizing context model selection with adaptive scan pattern
US9042440B2 (en) 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US20130343454A1 (en) * 2011-01-07 2013-12-26 Agency For Science, Technology And Research Method and an apparatus for coding an image
US10075706B2 (en) 2011-01-19 2018-09-11 Sun Patent Trust Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
US20120207400A1 (en) 2011-02-10 2012-08-16 Hisao Sasai Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
US8953690B2 (en) 2011-02-16 2015-02-10 Google Technology Holdings LLC Method and system for processing video data
US10142637B2 (en) 2011-03-08 2018-11-27 Texas Instruments Incorporated Method and apparatus for parallelizing context selection in video processing
AU2012268951B2 (en) 2011-06-16 2015-07-30 Dolby Video Compression, Llc Context initialization in entropy coding
WO2013003777A1 (en) 2011-06-29 2013-01-03 General Instrument Corporation Methods and system for using a scan coding pattern during intra coding
US9756360B2 (en) 2011-07-19 2017-09-05 Qualcomm Incorporated Coefficient scanning in video coding
LT2773109T (lt) 2011-10-31 2017-01-10 Samsung Electronics Co., Ltd. Kontekstinio modelio entropijos, skirtos transformacijos kodavimui ir dekodavimui, nustatymo būdas ir prietaisas
CN103339937B (zh) * 2011-12-21 2017-07-25 太阳专利托管公司 图像编码方法、图像编码装置、图像解码方法、图像解码装置以及图像编解码装置
US9756353B2 (en) 2012-01-09 2017-09-05 Dolby Laboratories Licensing Corporation Hybrid reference picture reconstruction method for single and multiple layered video coding systems
AU2012365727B2 (en) 2012-01-13 2015-11-05 Hfi Innovation Inc. Method and apparatus for unification of coefficient scan of 8x8 transform units in HEVC
US8581753B2 (en) 2012-01-19 2013-11-12 Sharp Laboratories Of America, Inc. Lossless coding technique for CABAC in HEVC
US20130188736A1 (en) 2012-01-19 2013-07-25 Sharp Laboratories Of America, Inc. High throughput significance map processing for cabac in hevc
US8552890B2 (en) * 2012-01-19 2013-10-08 Sharp Laboratories Of America, Inc. Lossless coding with different parameter selection technique for CABAC in HEVC
CN104956674B (zh) * 2012-01-20 2019-02-15 谷歌技术控股有限责任公司 用于最末重要系数位置编解码中的上下文减少的设备和方法
US9036710B2 (en) 2012-03-08 2015-05-19 Blackberry Limited Unified transform coefficient encoding and decoding
US9124872B2 (en) 2012-04-16 2015-09-01 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
JPWO2013190990A1 (ja) * 2012-06-22 2016-05-26 シャープ株式会社 算術復号装置、算術符号化装置、画像復号装置、および画像符号化装置

Also Published As

Publication number Publication date
JP6542400B2 (ja) 2019-07-10
HK1201103A1 (en) 2015-08-21
ZA201407860B (en) 2016-09-28
WO2013158566A1 (en) 2013-10-24
SG11201405867WA (en) 2014-11-27
ZA201407895B (en) 2016-05-25
CA2869305A1 (en) 2013-10-24
JP2018110405A (ja) 2018-07-12
CN104247421B (zh) 2018-01-19
RU2014145852A (ru) 2016-06-10
WO2013158563A1 (en) 2013-10-24
TW201349867A (zh) 2013-12-01
IL234708A0 (en) 2014-11-30
US9124872B2 (en) 2015-09-01
WO2013158566A9 (en) 2014-11-27
US20130272378A1 (en) 2013-10-17
EP2839584A1 (en) 2015-02-25
KR20150003327A (ko) 2015-01-08
DK2839645T3 (en) 2017-08-21
AR091338A1 (es) 2015-01-28
AU2013249532A1 (en) 2014-10-23
SI2839645T1 (sl) 2017-11-30
CA2868533A1 (en) 2013-10-24
AU2013249427A1 (en) 2014-10-30
CN104221289A (zh) 2014-12-17
EP2839645A1 (en) 2015-02-25
JP2015516768A (ja) 2015-06-11
JP2015513291A (ja) 2015-04-30
KR20150003319A (ko) 2015-01-08
SG11201405856XA (en) 2015-06-29
JP6525865B2 (ja) 2019-06-05
EP2839646A1 (en) 2015-02-25
CN104247420A (zh) 2014-12-24
WO2013158642A1 (en) 2013-10-24
TW201352004A (zh) 2013-12-16
JP2015516767A (ja) 2015-06-11
PH12014502144A1 (en) 2014-12-01
RU2014145851A (ru) 2016-06-10
EP2839645B1 (en) 2017-05-17
US20130272423A1 (en) 2013-10-17
US20130272379A1 (en) 2013-10-17
PH12014502156A1 (en) 2014-12-10
HK1201661A1 (en) 2015-09-04
KR20150003320A (ko) 2015-01-08
CN104247421A (zh) 2014-12-24
KR102115049B1 (ko) 2020-05-25
IL234705A0 (en) 2014-11-30
US9621921B2 (en) 2017-04-11

Similar Documents

Publication Publication Date Title
ES2637490T3 (es) Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes
ES2717679T3 (es) Codificación progresiva de una posición de último coeficiente significativo
ES2608595T3 (es) Mejora del rendimiento para la codificación del nivel de coeficientes de la CABAC
ES2810253T3 (es) Reposicionamiento de bloques residuales de predicción en codificación de vídeo
ES2611349T3 (es) Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo
ES2698552T3 (es) Reducción del número de contextos para codificación aritmética binaria adaptativa al contexto
ES2715838T3 (es) Matrices de cuantización de señalización para la codificación de vídeo
ES2705746T3 (es) Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto
ES2715555T3 (es) Predicción residual de componentes cruzadas adaptativa
ES2677100T3 (es) Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video
CN103636208B (zh) 在视频译码中用于非正方形块的上下文自适应熵译码
ES2750124T3 (es) Elementos sintácticos de señalización para coeficientes de transformada para subconjuntos de una unidad de codificación a nivel de hoja
ES2688359T3 (es) Filtro de desplazamiento de banda central adaptativo para codificación de vídeo
ES2633947T3 (es) Predicción de paletas en la codificación de vídeo basada en paleta
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
CA2840618C (en) Derivation of the position in scan order of the last significant transform coefficient in video coding
KR101825793B1 (ko) 컨텍스트 적응 멀티-레벨 유의도 코딩을 위한 컨텍스트 도출
ES2616486T3 (es) Obtención de contexto para la codificación de última posición para la codificación de vídeo
WO2013109914A1 (en) Coding of coefficients in video coding
RU2575418C2 (ru) Фильтр адаптивного смещения центральной полосы для видеокодирования
HK1197951A (en) Context optimization for last significant coefficient position coding