ES2963135T3 - Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo - Google Patents
Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo Download PDFInfo
- Publication number
- ES2963135T3 ES2963135T3 ES21190476T ES21190476T ES2963135T3 ES 2963135 T3 ES2963135 T3 ES 2963135T3 ES 21190476 T ES21190476 T ES 21190476T ES 21190476 T ES21190476 T ES 21190476T ES 2963135 T3 ES2963135 T3 ES 2963135T3
- Authority
- ES
- Spain
- Prior art keywords
- scan order
- block
- coordinates
- coordinate
- significant coefficient
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 297
- 230000003044 adaptive effect Effects 0.000 claims description 23
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 95
- 238000013139 quantization Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 20
- 239000013598 vector Substances 0.000 description 20
- 230000006835 compression Effects 0.000 description 14
- 238000007906 compression Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 230000009467 reduction Effects 0.000 description 6
- 230000002123 temporal effect Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
- H03M7/4012—Binary arithmetic codes
- H03M7/4018—Context adapative binary arithmetic codes [CABAC]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6035—Handling of unkown probabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Computing Systems (AREA)
Abstract
En un ejemplo, se divulga un aparato para codificar coeficientes asociados con un bloque de datos de video durante un proceso de codificación de video, en donde el aparato incluye un codificador de video configurado para codificar coordenadas x e y que indican una posición de un último no nulo. coeficiente dentro del bloque de acuerdo con un orden de escaneo asociado con el bloque cuando el orden de escaneo comprende un primer orden de escaneo, y código de coordenadas x e y intercambiadas que indican la posición del último coeficiente distinto de cero dentro del bloque de acuerdo con el escaneo orden cuando la orden de exploración comprende una segunda orden de exploración, en el que la segunda orden de exploración es diferente de la primera orden de exploración. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo
Campo técnico
Esta divulgación se refiere a la codificación de vídeo y, más particularmente, a la codificación de información de sintaxis relacionada con coeficientes de un bloque de vídeo.
Antecedentes
Las capacidades de vídeo digital pueden incorporarse en una amplia gama de dispositivos, que incluyen televisiones digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de sobremesa, ordenadores de tipo tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos celulares o por satélite, los así denominados "teléfonos inteligentes", dispositivos de teleconferencia de vídeo, dispositivos de transmisión por secuencias de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, H.263 de ITU-T, H.264 de ITU-T/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo y extensiones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital de manera más eficiente implementando tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan una predicción espacial (intra imagen) y/o temporal (inter imagen) para reducir o retirar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un segmento de vídeo (es decir, una trama de vídeo o una porción de una trama de vídeo) puede subdividirse en bloques de vídeo, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un segmento intra codificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un segmento inter codificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse tramas y las imágenes de referencia pueden denominarse tramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que va a codificarse. Los datos residuales representan diferencias de píxel entre el bloque original que va a codificarse y el bloque predictivo. Un bloque inter codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forma el bloque predictivo, e indicando los datos residuales la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra codificado se codifica de acuerdo con un modo de intra codificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio de los píxeles a un dominio de la transformada, dando como resultado coeficientes de transformada residuales, que pueden cuantificarse a continuación. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes de transformada, y puede aplicarse codificación por entropía para conseguir incluso más compresión. Davies (BBC) T y col.: "Suggestion for a Test Model", 1. Reunión de JCT-VC; 15-4-2010 - 23-4-2010; Dresde; (Joint Collaborative Team on Video Coding of ISO/IEC JTC1/SC29/WG11 y SG16 de ITU-T); URL: http://wftp3.itu.int/av-arch/jctvc-site/, n.° JCTVC-A033, 7 de mayo de 2010 (07-05-2010), describe un método para mejorar la eficiencia de codificación.
Sumario
La presente invención se define en las reivindicaciones adjuntas. Se definen realizaciones ventajosas de la presente invención por las reivindicaciones dependientes. Puede hallarse una divulgación habilitante, por ejemplo, con referencia a la descripción de las figuras 9 a 11. Los ejemplos restantes han de entenderse como ejemplos útiles para entender la invención.
Esta divulgación describe técnicas para codificar coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo, incluyendo técnicas para codificar información que identifica una posición de un último coeficiente no nulo, o un último coeficiente "significativo" dentro del bloque de acuerdo con un orden de exploración asociado al bloque, es decir, información de posición de último coeficiente significativo para el bloque. Las técnicas de esta divulgación pueden mejorar la eficiencia para la codificación de información de posición de último coeficiente significativo para bloques de datos de vídeo usados para codificar los bloques codificando información de posición de último coeficiente significativo para un bloque particular basándose en información que identifica el orden de exploración asociado al bloque, es decir, información de orden de exploración para el bloque. En otras palabras, las técnicas pueden mejorar la compresión de la información de posición de último coeficiente significativo para los bloques cuando se codifica la información. Las técnicas de esta divulgación también pueden permitir que los sistemas de codificación tengan menos complejidad en relación con otros sistemas cuando codifican la información de posición de último coeficiente significativo para los bloques, codificando información de posición de último coeficiente significativo para un bloque particular usando estadísticas comunes cuando uno de una pluralidad de los órdenes de exploración se usa para codificar el bloque.
En un ejemplo, la eficiencia de codificación puede mejorarse, y la complejidad de sistema de codificación puede reducirse, codificando coordenadas x e y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificando coordenadas x e y "permutadas" o intercambiadas que indican la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración.
En este ejemplo, el primer y el segundo órdenes de exploración pueden ser simétricos uno con respecto a otro (o al menos parcialmente simétricos). Debido a la simetría entre el primer y el segundo órdenes de exploración, la probabilidad de que la coordenada x comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada y comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. De forma similar, la probabilidad de que la coordenada y comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada x comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. En otras palabras, cada una de las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración puede tener la misma o similar probabilidad de comprender un valor dado que las coordenadas x e y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. En ese sentido, las coordenadas x e y y las coordenadas x e y intercambiadas pueden codificarse usando estadísticas comunes para fines de codificación por entropía adaptativa al contexto, lo que puede dar como resultado usar sistemas de codificación que tienen menos complejidad en relación con otros sistemas. Además, las estadísticas comunes pueden actualizarse basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, lo que puede dar como resultado que las estadísticas sean más precisas que estadísticas similares actualizadas usando otras técnicas y, por lo tanto, una codificación de las coordenadas respectivas de una forma más eficiente.
En otro ejemplo, la eficiencia de codificación puede mejorarse codificando información de posición de último coeficiente significativo para un bloque de datos de vídeo de forma incremental, en la medida necesaria, lo que puede dar como resultado codificar la información de una forma más eficiente. Además, en los casos en los que es necesario codificar la información en su totalidad, la eficiencia de codificación puede mejorarse codificando la información usando una codificación por entropía adaptativa al contexto, de tal modo que las estadísticas usadas para codificar la información se seleccionan basándose al menos en parte en un orden de exploración asociado al bloque. Codificar la información de esta forma puede dar como resultado usar estadísticas más precisas que cuando se usan otros métodos y, una vez más, codificar la información de posición de último coeficiente significativo para el bloque de una forma más eficiente.
Las técnicas de esta divulgación pueden usarse con cualquier metodología de codificación por entropía adaptativa al contexto, incluyendo CABAC, codificación por entropía de subdivisión de intervalo de probabilidad (PIPE), u otra metodología de codificación por entropía adaptativa al contexto. CABAC se describe en esta divulgación para fines de ilustración, pero sin limitación en cuanto a las técnicas ampliamente descritas en esta divulgación. Asimismo, las técnicas pueden aplicarse a la codificación de otros tipos de datos en general, por ejemplo, además de datos de vídeo.
En consecuencia, las técnicas de esta divulgación pueden posibilitar usar métodos de codificación más eficientes en relación con otros métodos, y usar sistemas de codificación que tienen menos complejidad en relación con otros sistemas, cuando se codifica información de posición de último coeficiente significativo para uno o más bloques de datos de vídeo. De esta forma, puede haber un ahorro relativo de bits para un flujo de bits codificado que incluye la información, y una reducción relativa de la complejidad para un sistema usado para codificar la información, cuando se usan las técnicas de esta divulgación.
En un ejemplo, un método para codificar coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo incluye codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro del bloque de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
En otro ejemplo, un aparato para codificar coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo incluye un codificador de vídeo configurado para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro del bloque de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
En otro ejemplo, un dispositivo para codificar coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo incluye unos medios para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro del bloque de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y unos medios para codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
Las técnicas descritas en esta divulgación pueden implementarse en hardware, software, firmware o combinaciones de los mismos. Si se implementa en hardware, puede materializarse un aparato como un circuito integrado, un procesador, lógica discreta o cualquier combinación de los mismos. Si se implementa en software, el software puede ejecutarse en uno o más procesadores, tales como un microprocesador, un circuito integrado específico de la aplicación (ASIC), una matriz de puertas programable en campo (FPGA) o un procesador de señales digitales (DSP). El software que ejecuta las técnicas puede almacenarse inicialmente en un medio legible por ordenador tangible y cargarse y ejecutarse en el procesador.
En consecuencia, esta divulgación también contempla un medio legible por ordenador que comprende instrucciones que, cuando se ejecutan, hacen que un procesador codifique coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo, en donde las instrucciones hacen que el procesador codifique coordenadas x e y que indican una posición de un último coeficiente no nulo dentro del bloque de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la descripción posterior. Otras características, objetos y ventajas serán evidentes a partir de la descripción y los dibujos, y a partir de las reivindicaciones.
Breve descripción de los dibujos
La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y descodificación de vídeo que puede implementar técnicas para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo que puede implementar técnicas para descodificar de forma eficiente información de posición de último coeficiente significativo codificada basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación.
Las figuras 4A-4C son diagramas conceptuales que ilustran un ejemplo de un bloque de datos de vídeo, e información de posición de coeficiente significativo e información de posición de último coeficiente significativo correspondientes.
Las figuras 5A-5C son diagramas conceptuales que ilustran ejemplos de bloques de datos de vídeo explorados usando un orden de exploración en zigzag, un orden de exploración horizontal y un orden de exploración vertical. Las figuras 6A-6C son diagramas conceptuales que ilustran ejemplos de bloques de datos de vídeo para los cuales se codifica información de posición de último coeficiente significativo basándose en información de orden de exploración, consistente con las técnicas de esta divulgación.
La figura 7 es un diagrama de flujo que ilustra un ejemplo de un método para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación.
La figura 8 es un diagrama de flujo que ilustra un ejemplo de un método para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación.
La figura 9 es un diagrama de flujo que ilustra un ejemplo de un método para descodificar de forma eficiente información de posición de último coeficiente significativo codificada basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación.
La figura 10 es un diagrama de flujo que ilustra otro ejemplo de un método para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación.
La figura 11 es un diagrama de flujo que ilustra otro ejemplo de un método para descodificar de forma eficiente información de posición de último coeficiente significativo codificada basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación.
Descripción detallada
Esta divulgación describe técnicas para codificar coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo, incluyendo técnicas para codificar información que identifica una posición de un último coeficiente no nulo, o un último coeficiente "significativo" dentro del bloque de acuerdo con un orden de exploración asociado al bloque, es decir, información de posición de último coeficiente significativo para el bloque. Las técnicas de esta divulgación pueden mejorar la eficiencia para la codificación de información de posición de último coeficiente significativo para bloques de datos de vídeo usados para codificar los bloques codificando información de posición de último coeficiente significativo para un bloque particular basándose en información que identifica el orden de exploración asociado al bloque, es decir, información de orden de exploración para el bloque. En otras palabras, las técnicas pueden mejorar la compresión de la información de posición de último coeficiente significativo para los bloques cuando se codifica la información. Las técnicas de esta divulgación también pueden posibilitar usar sistemas de codificación que tienen menos complejidad en relación con otros sistemas cuando codifican la información de posición de último coeficiente significativo para los bloques, codificando información de posición de último coeficiente significativo para un bloque particular usando estadísticas comunes cuando uno de una pluralidad de los órdenes de exploración se usa para codificar el bloque.
En esta divulgación, el término "codificación" se refiere a una codificación que tiene lugar en el codificador o a una descodificación que tiene lugar en el descodificador. De forma similar, el término "codificador" se refiere a un codificador, un descodificador o un codificador/descodificador combinado ("CÓDEC"). Los términos codificador, descodificador y CÓDEC se refieren, todos ellos, a máquinas específicas diseñadas para la codificación (codificación y/o descodificación) de datos de vídeo consistente con esta divulgación.
En general, las pruebas empíricas realizadas en el desarrollo de estas técnicas han demostrado una correlación entre la información de posición de último coeficiente significativo y la información de orden de exploración para un bloque de datos de vídeo. Por ejemplo, una posición de un último coeficiente significativo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque, es decir, el orden de exploración usado para codificar el bloque, puede depender del orden de exploración. En otras palabras, las estadísticas que indican una probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración pueden variar dependiendo de qué orden de exploración se usa para codificar el bloque. En consecuencia, codificar la información de posición de último coeficiente significativo para el bloque usando una codificación por entropía adaptativa al contexto, de tal modo que las estadísticas usadas para codificar la información se seleccionan basándose al menos en parte en la información de orden de exploración para el bloque, puede producir estadísticas más precisas y, por lo tanto, puede dar como resultado una codificación más eficiente de la información de posición de último coeficiente significativo.
Adicionalmente, de acuerdo con la invención reivindicada, la información de posición de último coeficiente significativo para un bloque de datos de vídeo se codifica usando coordenadas x e y que indican la posición de último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración asociado al bloque. En estos casos, las estadísticas descritas anteriormente indican una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.). Debido a que algunos órdenes de exploración, por ejemplo, un primer orden de exploración y un segundo orden de exploración, pueden ser simétricos (o al menos parcialmente simétricos) uno con respecto a otro, la probabilidad de que una coordenada x comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración es igual o similar a la probabilidad de que una coordenada y comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. De forma similar, la probabilidad de que una coordenada y comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración es igual o similar a la probabilidad de que una coordenada x comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. Es decir, cada una de las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración tiene la misma o similar probabilidad de comprender un valor dado que las coordenadas x e y "permutadas" o intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. En ese sentido, las coordenadas x e y y las coordenadas x e y intercambiadas se codifican usando estadísticas comunes.
En consecuencia, codificar las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración, y codificar las coordenadas x e y intercambiadas cuando el orden de exploración comprende el segundo orden de exploración usando las estadísticas comunes, puede dar como resultado una complejidad de sistema de codificación reducida. Además, la actualización de las estadísticas comunes basándose en las coordenadas x e y y las coordenadas x e y intercambiadas también pueden dar estadísticas más precisas, lo que puede dar como resultado, una vez más, una codificación más eficiente de la información de posición de último coeficiente significativo.
Como un ejemplo, las técnicas de esta divulgación pueden mejorar la eficiencia de codificación y reducir la complejidad de sistema de codificación codificando coordenadas x e y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificando coordenadas x e y intercambiadas que indican la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración.
En este ejemplo, las coordenadas x e y y las coordenadas x e y intercambiadas pueden codificarse usando estadísticas comunes para fines de codificación por entropía adaptativa al contexto, lo que puede dar como resultado usar sistemas de codificación que tienen menos complejidad en relación con otros sistemas, por ejemplo, sistemas que incluyen estadísticas separadas para cada orden de exploración que pueden usarse dentro de los sistemas para codificar bloques de datos de vídeo. Además, las estadísticas comunes pueden actualizarse basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, lo que puede dar como resultado que las estadísticas sean más precisas que estadísticas similares actualizadas usando otras técnicas, por ejemplo, estadísticas actualizadas para un orden de exploración particular que puede usarse dentro de un sistema para codificar bloques de datos de vídeo. Como resultado, las coordenadas x e y y las coordenadas x e y intercambiadas, es decir, la información de posición de último coeficiente significativo para el bloque, pueden codificarse de una forma más eficiente que información similar codificada usando otros métodos.
Como otro ejemplo, las técnicas de esta divulgación pueden mejorar la eficiencia de codificación codificando información de posición de último coeficiente significativo para un bloque de datos de vídeo de forma incremental, en la medida necesaria. Como resultado, la información de posición de último coeficiente significativo puede codificarse usando menos información que cuando se usan otras técnicas, por ejemplo, codificando siempre la información de posición de último coeficiente significativo para el bloque en su totalidad. Además, en los casos en los que es necesario codificar la información de posición de último coeficiente significativo en su totalidad, la eficiencia de codificación puede mejorarse codificando la información usando una codificación por entropía adaptativa al contexto, de tal modo que las estadísticas usadas para codificar la información se seleccionan basándose al menos en parte en información de orden de exploración para el bloque. Codificar la información de posición de último coeficiente significativo de esta forma puede dar como resultado usar estadísticas más precisas que cuando se usan otros métodos, por ejemplo, seleccionando las estadísticas sin considerar la información de orden de exploración para el bloque y, una vez más, codificar la información de posición de último coeficiente significativo de una forma más eficiente.
En los ejemplos descritos anteriormente, para codificar información de posición de último coeficiente significativo para un bloque de datos de vídeo usando estadísticas, la información puede codificarse mediante un proceso de codificación aritmética binaria adaptativa al contexto (CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basándose en uno o más contextos. En otros ejemplos, otros procesos de codificación por entropía adaptativa al contexto, tales como codificación de longitud variable adaptativa al contexto (CAVLC), codificación por entropía de subdivisión de intervalo de probabilidad (PIPE) y otros procesos de codificación por entropía adaptativa al contexto, también pueden usar las técnicas de esta divulgación. CABAC se describe en esta divulgación para fines de ilustración, pero sin limitación en cuanto a las técnicas ampliamente descritas en esta divulgación. Asimismo, las técnicas pueden aplicarse a la codificación de otros tipos de datos en general, por ejemplo, además de datos de vídeo.
Codificar información de posición de último coeficiente significativo para uno o más bloques de datos de vídeo de la forma descrita anteriormente puede posibilitar usar métodos de codificación más eficientes en relación con otros métodos y usar sistemas de codificación que tienen menos complejidad en relación con otros sistemas. De esta forma, puede haber un ahorro relativo de bits para un flujo de bits codificado que incluye la información, y una reducción relativa de la complejidad para un sistema usado para codificar la información, cuando se usan las técnicas de esta divulgación.
La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y descodificación de vídeo 10 que puede implementar técnicas para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que transmite vídeo codificado a un dispositivo de destino 14 a través de un canal de comunicación 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender dispositivos de comunicación inalámbrica, tales como teléfonos inalámbricos, unos así denominados radioteléfonos celulares o por satélite, o cualquier dispositivo inalámbrico que pueda comunicar información de vídeo a través de un canal de comunicación 16, caso en el cual el canal de comunicación 16 es inalámbrico.
Sin embargo, las técnicas de esta divulgación, que se refieren a codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, no están necesariamente limitadas a ajustes o aplicaciones inalámbricas. Estas técnicas pueden aplicarse en general a cualquier escenario en el que se realice codificación o descodificación, incluyendo radiodifusiones de televisión aéreas, transmisiones de televisión por cable, transmisiones de televisión por satélite, emisión de transmisiones de vídeo por Internet, vídeo digital codificado que se codifica en un medio de almacenamiento o recuperado y descodificado desde un medio de almacenamiento u otros escenarios. En consecuencia, no se requiere el canal de comunicación 16 y las técnicas de esta divulgación pueden aplicarse a ajustes en los que se aplica codificación o en donde se aplica descodificación, por ejemplo, sin comunicación de datos entre dispositivos de codificación y descodificación.
En el ejemplo de la figura 1, el dispositivo de origen 12 incluye un origen de vídeo 18, un codificador de vídeo 20, un modulador/desmodulador (módem) 22 y un transmisor 24. El dispositivo de destino 14 incluye un receptor 26, un módem 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. De acuerdo con esta divulgación, el codificador de vídeo 20 del dispositivo de origen 12 y/o el descodificador de vídeo 30 del dispositivo de destino 14 pueden configurarse para aplicar las técnicas para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde un origen de vídeo 18 externo, tal como una cámara externa. De forma similar, el dispositivo de destino 14 puede interconectar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema 10 ilustrado de la figura 1 es simplemente un ejemplo. Las técnicas para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo pueden realizarse mediante cualquier dispositivo de codificación y/o descodificación de vídeo digital. Aunque las técnicas de esta divulgación son realizadas, en general, por un dispositivo de codificación de vídeo, las técnicas pueden ser realizadas por un codificador/descodificador de vídeo, denominado habitualmente "CÓDEC". Además, las técnicas de esta divulgación pueden realizarse también por un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de codificación en los que el dispositivo de origen 12 genera datos de vídeo codificados para transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden operar de una manera sustancialmente simétrica de tal modo que cada uno de los dispositivos 12, 14 incluye componentes de codificación y descodificación de vídeo. Por lo tanto, el sistema 10 puede soportar transmisión unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para envío por flujo continuo de vídeo, reproducción de vídeo, radiodifusión de vídeo o telefonía de vídeo.
El origen de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo previamente capturado y/o una alimentación de vídeo desde un proveedor de contenido de vídeo. Como una alternativa adicional, el origen de vídeo 18 puede generar datos basados en gráficos informáticos como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar unos así denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo, en general, y pueden aplicarse a aplicaciones inalámbricas y/o alámbricas. En cada caso, el vídeo capturado, precapturado o generado por ordenador puede codificarse por el codificador de vídeo 20. La información de vídeo codificada puede ser modulada entonces por el módem 22 de acuerdo con una norma de comunicación, y puede transmitirse al dispositivo de destino 14 a través del transmisor 24. El módem 22 puede incluir diversos mezcladores, filtros, amplificadores u otros componentes diseñados para la modulación de señales. El transmisor 24 puede incluir circuitos diseñados para transmitir datos, incluyendo amplificadores, filtros y una o más antenas.
El receptor 26 del dispositivo de destino 14 recibe información a través del canal 16, y el módem 28 desmodula la información. De nuevo, el proceso de codificación de vídeo descrito anteriormente puede implementar una o más de las técnicas descritas en el presente documento para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo. La información comunicada a través del canal 16 puede incluir información de sintaxis definida por el codificador de vídeo 20, que también es usada por el descodificador de vídeo 30, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques de datos de vídeo (por ejemplo, macrobloques o unidades de codificación), por ejemplo, información de posición de último coeficiente significativo y/o información de orden de exploración para los bloques, y otra información. El dispositivo de visualización 32 presenta visualmente los datos de vídeo descodificados a un usuario, y puede comprender cualquiera de una diversidad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo de emisión de luz orgánico (OLED) u otro tipo de dispositivo de visualización.
En el ejemplo de la figura 1, el canal de comunicación 16 puede comprender cualquier medio de comunicación inalámbrico o por cable, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas, o cualquier combinación de medios inalámbricos y cableados. El canal de comunicación 16 puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como internet. El canal de comunicación 16 representa en general cualquier medio de comunicación adecuado, o un conjunto de diferentes medios de comunicación, para transmitir datos de vídeo del dispositivo de origen 12 al dispositivo de destino 14, incluyendo cualquier combinación adecuada de medios cableados o inalámbricos. El canal de comunicación 16 puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14. En otros ejemplos, los dispositivos de codificación o descodificación pueden implementar técnicas de esta divulgación sin ninguna comunicación entre tales dispositivos. Por ejemplo, un dispositivo de codificación puede codificar y almacenar un flujo de bits codificado consistente con las técnicas de esta divulgación. Como alternativa, de acuerdo con la invención reivindicada, un dispositivo de descodificación recibe o recupera un flujo de bits codificado, y descodifica el flujo de bits consistente con las técnicas de esta divulgación.
El codificador de vídeo 20 y el descodificador de vídeo 30 pueden operar de acuerdo con una norma de compresión de vídeo, tal como la norma H.264 de ITU-T, denominada como alternativa MPEG-4, parte 10, Codificación de Vídeo Avanzada (AVC). Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos incluyen MPEG-2, H.263 de ITU-T y la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo. En general, las técnicas de esta divulgación se describen con respecto a HEVC, pero debería entenderse que estas técnicas también pueden usarse junto con otras normas de codificación de vídeo. Aunque no se muestra en la figura 1, en algunos aspectos, cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 puede integrarse con un codificador y descodificador de audio, y puede incluir unidades MUX-DEMUX apropiadas y otro hardware y software, para manejar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, las unidades MUX-DEMUX pueden ser de conformidad con el protocolo multiplexor H.223 de la ITU u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
Cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 puede implementarse como cualquiera de una diversidad de circuitería de codificador o de descodificador adecuada, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 puede incluirse en uno o más codificadores o descodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/descodificador combinado (CÓDEC) en una cámara, ordenador, dispositivo móvil, dispositivo de abonado, dispositivo de radiodifusión, descodificador de salón o servidor respectivo, o similares.
Una secuencia de vídeo incluye habitualmente una serie de tramas de vídeo. Un grupo de imágenes (GOP) comprende en general una serie de una o más tramas de vídeo. Un GOP puede incluir datos de sintaxis en un encabezado del GOP, un encabezado de una o más tramas del GOP, o en cualquier otra parte, que describe un número de tramas incluidas en el GOP. Cada trama puede incluir datos de sintaxis de trama que describen un modo de codificación para la trama respectiva. Un codificador de vídeo, por ejemplo, el codificador de vídeo 20, opera habitualmente sobre bloques de vídeo dentro de tramas de vídeo individuales para codificar los datos de vídeo. De acuerdo con la norma H.264de ITU-T, un bloque de vídeo puede corresponder a un macrobloque o a una subdivisión de un macrobloque. De acuerdo con otras normas, por ejemplo, HEVC descrita con mayor detalle a continuación, un bloque de vídeo puede corresponder a una unidad de codificación (por ejemplo, la unidad de codificación más grande), o a una subdivisión de una unidad de codificación. Los bloques de vídeo pueden tener tamaños fijos o variables, y pueden diferir en tamaño de acuerdo con una norma de codificación especificada. Cada trama de vídeo puede incluir una pluralidad de segmentos, es decir, porciones de la trama de vídeo. Cada segmento puede incluir una pluralidad de bloques de vídeo, que pueden disponerse en subdivisiones, también denominadas subbloques.
Dependiendo de la norma de codificación especificada, los bloques de vídeo pueden subdividirse en diversos tamaños de subbloque "N x N", tales como 16 x 16, 8 x 8, 4 x 4, 2 x 2, y así sucesivamente. En esta divulgación, "N x N" y "N por N" pueden usarse de manera intercambiable para referirse a las dimensiones de píxeles del bloque en términos de dimensiones verticales y horizontales, por ejemplo, 16 x 16 píxeles o 16 por 16 píxeles. En general, un bloque de 16 x 16 tendrá dieciséis píxeles en una dirección vertical (y = 16) y dieciséis píxeles en una dirección horizontal (x = 16). De forma similar, un bloque N x N tiene en general N píxeles en una dirección vertical y N píxeles en una dirección horizontal, en donde N representa un valor entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, los bloques no necesariamente tienen que tener el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender N x M píxeles, en donde M no es necesariamente igual a N. Como un ejemplo, en la norma H.264 de ITU-T, los bloques que tienen un tamaño de 16 por 16 píxeles pueden denominarse macrobloques, y los bloques que tienen menos de 16 por 16 píxeles pueden denominarse subdivisiones de un macrobloque de 16 por 16. En otras normas, por ejemplo, HEVC, los bloques pueden definirse de forma más general con respecto a su tamaño, por ejemplo, como unidades de codificación y subdivisiones de los mismos, teniendo cada uno un tamaño variable, en lugar de fijo.
Los bloques de vídeo pueden comprender bloques de datos de píxeles en el dominio de los píxeles, o bloques de coeficientes de transformada en el dominio de la transformada, por ejemplo, después de la aplicación de una transformada, tal como una transformada de coseno discreta (DCT), una transformada de números enteros, una transformada de ondícula o una transformada conceptualmente similar a datos residuales para un bloque de vídeo dado, en donde los datos residuales representan diferencias de píxeles entre datos de vídeo para el bloque y datos predictivos generados para el bloque. En algunos casos, los bloques de vídeo pueden comprender bloques de coeficientes de transformada cuantificados en el dominio de la transformada en donde, después de la aplicación de una transformada a datos residuales para un bloque de vídeo dado, también se cuantifican los coeficientes de transformada resultantes.
La subdivisión de bloques sirve para un fin importante en las técnicas de codificación de vídeo basadas en bloques. Usar bloques más pequeños para codificar datos de vídeo puede dar como resultado una mejor predicción de los datos para ubicaciones de una trama de vídeo que incluyen niveles altos de detalle, y puede reducir el error resultante (es decir, la desviación de los datos de predicción con respecto a los datos de vídeo de origen), representados como datos residuales. Aunque potencialmente se reducen los datos residuales, tales técnicas pueden, sin embargo, requerir información de sintaxis adicional para indicar cómo se subdividen los bloques más pequeños en relación con una trama de vídeo, y pueden dar como resultado una tasa de bits de vídeo codificado aumentada. En consecuencia, en algunas técnicas, la subdivisión de bloques puede depender de equilibrar la reducción deseable en datos residuales frente al aumento resultante en la tasa de bits de los datos de vídeo codificados debido a la información de sintaxis adicional.
En general, los bloques y las diversas subdivisiones de los mismos (es decir, subbloques) pueden considerarse bloques de vídeo. Además, puede considerarse que un segmento es una pluralidad de bloques de vídeo (por ejemplo, macrobloques, o unidades de codificación), y/o subbloques (divisiones de macrobloques, o subunidades de codificación). Cada segmento puede ser una unidad descodificable independientemente de una trama de vídeo. Como alternativa, las propias tramas pueden ser unidades descodificables, u otras porciones de una trama pueden definirse como unidades descodificables. Además, un GOP, también denominado secuencia, puede definirse como una unidad descodificable.
Actualmente se están realizando esfuerzos para desarrollar una nueva norma de codificación de vídeo, denominada actualmente Codificación de Vídeo de Alta Eficiencia (HEVC). La norma de HEVC emergente también puede denominarse H.265. Los esfuerzos de normalización se basan en un modelo de un dispositivo de codificación de vídeo denominado modelo de prueba de HEVC (HM). El HM supone varias capacidades de dispositivos de codificación de vídeo frente a dispositivos de acuerdo con, por ejemplo, H.264/AVC de lTU-T. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intra predicción, HM proporciona hasta treinta y cinco modos de codificación de intra predicción, por ejemplo, basándose en el tamaño de un bloque que se está codificando por intra predicción.
HM se refiere a un bloque de datos de vídeo como una unidad de codificación (CU). Una CU puede referirse a una región de imagen rectangular que sirve como una unidad básica a la que se aplican diversas herramientas de codificación para la compresión. En H.264, esta también puede denominarse macrobloque. Los datos de sintaxis dentro de un flujo de bits pueden definir la unidad de codificación más grande (LCU), que es la CU más grande en términos del número de píxeles. En general, una CU tiene un fin similar a un macrobloque de H.264, excepto por el hecho de que una CU no tiene una distinción de tamaño. Por lo tanto, una CU puede subdividirse o "partirse" en sub CU.
Una LCU puede asociarse a una estructura de datos de árbol cuaternario que indica cómo se subdivide la LCU. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU de una LCU, en donde un nodo raíz corresponde a la LCU, y otros nodos corresponden a las CU de la LCU. Si una CU dada se divide en cuatro sub-CU, el nodo en el árbol cuaternario correspondiente a la CU dividida incluye cuatro nodos secundarios, cada uno de los cuales corresponde a una de las sub-CU. Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar información de sintaxis para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división para la CU, que indica si la CU correspondiente al nodo se divide en cuatro sub-CU. La información de sintaxis para una CU dada puede definirse de manera recursiva, y puede depender de si la CU se divide en las sub-CU.
Una CU que no se divide (es decir, una CU correspondiente a un nodo terminal, o nodo "hoja" en un árbol cuaternario dado) puede incluir una o más unidades de predicción (PU). En general, una PU representa la totalidad o una porción de la C<u>correspondiente e incluye datos para recuperar una muestra de referencia para la PU para los fines de realizar una predicción para la CU. Por ejemplo, cuando la CU se codifica en intra modo, la PU puede incluir datos que describen un modo de intra predicción para el PU. Como otro ejemplo, cuando la CU se codifica en inter modo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, una precisión de un cuarto de píxel o una precisión de un octavo de píxel), una trama de referencia a la que apunta el vector de movimiento y/o una lista de referencia (por ejemplo, la lista 0 o la lista 1) para el vector de movimiento. Los datos para la CU que definen las una o más PU de la CU también pueden describir, por ejemplo, la subdivisión de la CU en las una o más PU. Los modos de subdivisión pueden diferir entre si la CU no se codifica, se codifica en modo de intra predicción o se codifica en modo de inter predicción.
Una CU que tiene una o más PU puede incluir también una o más unidades de transformada (TU). Después de la predicción para una CU usando una o más PU, como se ha descrito anteriormente, un codificador de vídeo puede calcular uno o más bloques residuales para las porciones respectivas de la CU correspondientes a una o más PU. Los bloques residuales pueden representar una diferencia de píxeles entre los datos de vídeo para la CU y los datos predichos para las una o más PU. Un conjunto de valores residuales puede transformarse, explorarse y cuantificarse para definir un conjunto de coeficientes de transformada cuantificados. Una TU puede definir una estructura de datos de subdivisión que indica información de subdivisión para los coeficientes de transformada que es sustancialmente similar a la estructura de datos de árbol cuaternario descrita anteriormente con referencia a una CU. Una TU no está necesariamente limitada al tamaño de una PU. Por lo tanto, las TU pueden ser más grandes o más pequeñas que unas PU correspondientes para la misma CU. En algunos ejemplos, el tamaño máximo de una TU puede corresponder al tamaño de la CU correspondiente. En un ejemplo, las muestras residuales correspondientes una CU pueden subdividirse en unidades más pequeñas usando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). En este caso, los nodos hoja del RQT pueden denominarse TU, para los cuales pueden transformarse y cuantificarse las muestras residuales correspondientes.
Siguiendo la codificación intra predictiva o inter predictiva para producir datos predictivos y datos residuales, y siguiendo cualquier transformada (tal como la transformada de números enteros de 4 x 4 u 8 x 8 usada en H.264/AVC o una transformada de coseno discreta DCT) para producir coeficientes de transformada, puede realizarse la cuantificación de coeficientes de transformada. La cuantificación se refiere, en general, a un proceso en el que se cuantifican los coeficientes de transformada para reducir posiblemente la cantidad de datos usados para representar los coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes. Por ejemplo, un valor denbits puede redondearse hasta un valor dembits durante la cuantificación, en dondenes mayor que m.
Después de la cuantificación, puede realizarse la codificación por entropía de los datos cuantificados (es decir, coeficientes de transformada cuantificados). La codificación por entropía puede ajustarse a las técnicas de esta divulgación con respecto a codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, y también puede usar otras técnicas de codificación por entropía, tales como codificación de longitud variable adaptativa al contexto (CAVLC), CABAC, PIPE u otra metodología de codificación por entropía. Por ejemplo, valores de coeficientes, representados como magnitudes y signos correspondientes (por ejemplo, "+1" o "-1") para los coeficientes de transformada cuantificados pueden codificarse usando las técnicas de codificación por entropía.
Debería hacerse notar que la predicción, la transformada y la cuantificación descritas anteriormente pueden realizarse para cualquier bloque de datos de vídeo, por ejemplo, a una PU y/o TU de una CU, o a un macrobloque, dependiendo de la norma de codificación especificada. En consecuencia, las técnicas de esta divulgación, en relación con codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, pueden aplicarse a cualquier bloque de datos de vídeo, por ejemplo, a cualquier bloque de coeficientes de transformada cuantificados, incluyendo un macrobloque, o una TU de una CU. Además, un bloque de datos de vídeo (por ejemplo, un macrobloque o una TU de una CU) puede incluir cada uno de un componente de luminancia (Y), un primer componente de crominancia (U) y un segundo componente de crominancia (V) de los datos de vídeo correspondientes. En ese sentido, las técnicas de esta divulgación pueden realizarse para cada uno de los componentes Y, U y V de un bloque de datos de vídeo dado.
Para codificar bloques de datos de vídeo como se ha descrito anteriormente, también puede generarse y codificarse información con respecto a la posición de coeficientes significativos dentro de un bloque dado. Subsiguientemente, pueden codificarse los valores de los coeficientes significativos, como se ha descrito anteriormente. En H.264/AVC y en la norma de HEVC emergente, cuando se usa un proceso de codificación por entropía adaptativa al contexto, por ejemplo, un proceso de CABAC, puede codificarse la posición de coeficientes significativos dentro de un bloque de datos de vídeo antes de codificar los valores de los coeficientes significativos. El proceso de codificación de la posición de todos los coeficientes significativos dentro del bloque puede denominarse codificación de mapa de importancia (SM). Las figuras 4A-4C, descritas con mayor detalle a continuación, son diagramas conceptuales que ilustran un ejemplo de un bloque de 4 x 4 de coeficientes de transformada cuantificados y datos de SM correspondientes.
Un procedimiento de codificación de SM habitual puede describirse como sigue. Para un bloque de datos de vídeo dado, puede codificarse un SM solo si hay al menos un coeficiente significativo dentro del bloque. La presencia de coeficientes significativos dentro de un bloque de datos de vídeo dado puede indicarse en un patrón de bloque codificado (por ejemplo, usando el elemento de sintaxis "coded_block_pattern" o CBP), que es un valor binario codificado para un conjunto de bloques (tal como bloques luminancia y crominancia) asociados a un área de píxeles en los datos de vídeo. Cada bit en el CBP se denomina indicador de bloque codificado (por ejemplo, correspondiente al elemento de sintaxis "coded_block_flag") y se usa para indicar si existe al menos un coeficiente significativo dentro de su bloque correspondiente. En otras palabras, un indicador de bloque codificado es un símbolo de un bit que indica si hay coeficientes significativos dentro de un único bloque de coeficientes de transformada, y un CBP es un conjunto de indicadores de bloque codificados para un conjunto de bloques de datos de vídeo relacionados.
Si un indicador de bloque codificado indica que no existen coeficientes significativos dentro del bloque correspondiente (por ejemplo, el indicador es igual a "0"), no puede codificarse más información para el bloque. Sin embargo, si un indicador de bloque codificado indica que existe al menos un coeficiente significativo dentro del bloque correspondiente (por ejemplo, el indicador es igual a "1"), puede codificarse un SM para el bloque siguiendo un orden de exploración de coeficientes asociado al bloque. El orden de exploración puede definir el orden en el que la importancia de cada coeficiente dentro del bloque se codifica como parte de la codificación de SM. En otras palabras, la exploración puede serializar el bloque bidimensional de coeficientes para dar una representación unidimensional para determinar la importancia de los coeficientes. Pueden usarse diferentes órdenes de exploración (por ejemplo, en zigzag, horizontal y vertical). Las figuras 5A-5C, que también se describen con mayor detalle a continuación, ilustran ejemplos de algunos de los diversos órdenes de exploración que pueden usarse para bloques de 8 x 8 de datos de vídeo. Sin embargo, las técnicas de esta divulgación también pueden aplicarse con respecto a una amplia diversidad de otros órdenes de exploración, incluyendo orden de exploración diagonal, órdenes de exploración que sean combinaciones de exploraciones en zigzag, horizontal, vertical y/o diagonal, así como órdenes de exploración que sean parcialmente en zigzag, parcialmente horizontal, parcialmente vertical y/o parcialmente diagonal. Además, las técnicas de esta divulgación también pueden considerar un orden de exploración que sea por sí mismo adaptativo basándose en estadísticas asociadas a bloques de datos de vídeo codificados previamente (por ejemplo, bloques que tienen el mismo tamaño de bloque o modo de codificación que el bloque actual que se está codificando). Por ejemplo, un orden de exploración adaptativo podría ser el orden de exploración asociado al bloque, en algunos casos.
Dado un indicador de bloque codificado que indica que existe al menos un coeficiente significativo dentro de un bloque dado, y un orden de exploración para el bloque, un SM para el bloque puede codificarse como sigue. El bloque bidimensional de coeficientes de transformada cuantificados puede asignarse primero a una matriz unidimensional usando el orden de exploración. Para cada coeficiente en el conjunto, siguiendo el orden de exploración, puede codificarse un indicador de coeficiente significativo de un bit (por ejemplo, correspondiente al elemento de sintaxis "significant_coeff_flag"). Es decir, a cada posición en la matriz se le puede asignar un valor binario, que puede establecerse a "1" si el coeficiente correspondiente es significativo, y establecerse a "0" si no es significativo (es decir, nulo). Si un indicador de coeficiente significativo dado es igual a "1", que indica que el coeficiente correspondiente es significativo, también puede codificarse un indicador de último coeficiente significativo de un bit adicional (por ejemplo, correspondiente al elemento de sintaxis "last_significant_coeff_flag"), que puede indicar si el coeficiente correspondiente es el último coeficiente significativo dentro de la matriz (es decir, dentro del bloque dado el orden de exploración). Específicamente, cada indicador de último coeficiente significativo puede establecerse a "1" si el coeficiente correspondiente es el último coeficiente significativo dentro de la matriz, y establecerse a "0" de lo contrario. Si se alcanza la última posición de la matriz de esta forma, y el proceso de codificación de SM no se terminó con un indicador de último coeficiente significativo igual a "1", entonces puede deducirse que el último coeficiente en la matriz (y, por lo tanto, el bloque dado el orden de exploración) es significativo, y no puede codificarse ningún indicador de último coeficiente significativo para la última posición de la matriz.
Las figuras 4B-4C son diagramas conceptuales que ilustran ejemplos de conjuntos de indicadores de coeficiente significativo e indicadores de último coeficiente significativo, respectivamente, correspondientes a datos de SM para el bloque representado en la figura 4A, presentado de forma de mapa, en lugar de en forma de matriz. Debería hacerse notar que los indicadores de coeficiente significativo y los indicadores de último coeficiente significativo, como se ha descrito anteriormente, pueden establecerse a valores distintos (por ejemplo, un indicador de coeficiente significativo puede establecerse a "0" si el coeficiente correspondiente es significativo y "1" si no es significativo, y un indicador de último coeficiente significativo puede establecerse a "0" si el coeficiente correspondiente es el último coeficiente significativo, y "1" si no es el último coeficiente significativo) en otros ejemplos.
Después de codificar el SM, como se ha descrito anteriormente, también puede codificarse el valor de cada coeficiente significativo (es decir, la magnitud y el signo de cada coeficiente significativo, por ejemplo, indicado por los elementos de sintaxis "coeff_abs_level_minus1" y "coeff_sign_flag", respectivamente) en el bloque.
De acuerdo con algunas técnicas, puede usarse un orden de exploración fijo para codificar bloques de datos de vídeo, como se ha descrito anteriormente, por ejemplo, el orden de exploración en zigzag. De acuerdo con otras técnicas, pueden usarse múltiples órdenes de exploración para codificar los bloques. En algunos ejemplos, puede usarse una "exploración de coeficientes adaptativa" (ACS), en donde el orden de exploración se adapta a lo largo del tiempo, y el orden de exploración adaptado actualmente se usa para codificar un bloque particular de coeficientes en cualquier momento dado. En aún otras técnicas, el codificador de vídeo 20 puede someter a prueba varios órdenes de exploración basándose en una o más métricas de eficiencia de compresión y seleccionar el mejor orden de exploración para codificar los bloques. Adicionalmente, el codificador de vídeo 20 puede indicar el orden de exploración al descodificador de vídeo 30 codificando un índice de ACS, que puede representar uno cualquiera de los varios órdenes de exploración (por ejemplo, usando índices 0 para zigzag, 1 para órdenes de exploración horizontal, y 2 para vertical).
De acuerdo con algunas técnicas, el codificador de vídeo 20 puede codificar el índice de ACS solo cuando el último coeficiente significativo no se ubica en la primera posición en el orden de exploración (correspondiente a la posición superior izquierda dentro del bloque comúnmente denominada posición de "CC"). El codificador de vídeo 20 puede codificar el índice de ACS de esta forma debido a que el descodificador de vídeo 30 no necesita una indicación del orden de exploración usado por el codificador de vídeo 20 en el caso de que el último (y único) coeficiente significativo dentro del bloque se ubique en la posición de CC, debido a que todos los órdenes de exploración posibles pueden empezar con la posición de CC, como se muestra en las figuras 5 y 6, que también se describen con mayor detalle a continuación.
En el caso de que el último coeficiente significativo dentro del bloque no se ubique en la posición de CC, el codificador de vídeo 20 puede codificar el índice de ACS de la siguiente forma. El codificador de vídeo 20 puede codificar una primera señal (por ejemplo, "bin1") que indica si el orden de exploración es el orden de exploración en zigzag (por ejemplo, binl ="0") ono (por ejemplo, binl = "1"). En el caso de que el orden de exploración no sea el orden de exploración en zigzag, el codificador de vídeo 20 puede codificar una segunda señal (por ejemplo, "bin2") que indique si el orden de exploración es el orden de exploración horizontal (por ejemplo "bin2 = "0") o el orden de exploración vertical (por ejemplo, bin2 = "1"). De forma similar, el descodificador de vídeo 30 puede recibir y descodificar la primera señal y la segunda señal para determinar el índice de ACS. En consecuencia, en lugar de codificar siempre el índice de ACS, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar el índice de ACS solo cuando el último coeficiente significativo no se ubica en la posición de CC.
Como se ha descrito previamente, de acuerdo con las técnicas de esta divulgación, la información de posición de último coeficiente significativo para un bloque particular de datos de vídeo puede codificarse usando coordenadas x e y que indican una posición de un último coeficiente significativo dentro del bloque de acuerdo con un orden de exploración asociado al bloque. En algunos ejemplos, la coordenada x puede corresponder a un número de columna de la posición dentro del bloque, y la coordenada y puede corresponder a un número de fila de la posición dentro del bloque. Por ejemplo, los números de fila y columna pueden ser en relación con números de fila y columna correspondientes a una posición de referencia, u "origen", dentro del bloque, por ejemplo, la posición de Cc . En ese sentido, de acuerdo con estas técnicas, la información de posición de último coeficiente significativo para un bloque de datos de vídeo no puede codificarse usando la codificación de SM, como se ha descrito previamente, sino más bien codificando explícitamente coordenadas x e y de la posición de último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración asociado al bloque. De acuerdo con tales técnicas, las coordenadas x e y pueden codificarse independientemente de los datos de SM restantes (es decir, indicadores de coeficiente significativo, o información de posición de coeficiente significativo) para el bloque. Por ejemplo, las coordenadas x e y pueden codificarse antes de codificar la información de posición de coeficiente significativo para el bloque.
En algunos ejemplos consistentes con las técnicas de esta divulgación, para codificar las coordenadas x e y, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar adicionalmente estadísticas que indican una probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración. En particular, las estadísticas pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar una probabilidad de que cada una de las coordenadas x e y que se han descrito previamente comprendan un valor dado. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar las estadísticas, y codificar las coordenadas x e y basándose en las estadísticas, por ejemplo, usando una codificación por entropía adaptativa al contexto. En algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar las estadísticas usando información de posición de último coeficiente significativo para bloques de datos de vídeo previamente codificados, por ejemplo, valores de coordenadas x e y para los bloques codificados previamente. En otros ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden actualizar las estadísticas basándose en las coordenadas x e y para reflejar la probabilidad de que las coordenadas respectivas comprendan valores particulares. Como se descrito previamente, las estadísticas pueden variar dependiendo de qué orden de exploración se usa para codificar el bloque.
Como un ejemplo consistente con las técnicas de esta divulgación, para codificar las coordenadas x e y basándose en las estadísticas, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye la aplicación de un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y y el orden de exploración. En este ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden usar el orden de exploración para seleccionar el modelo de contexto particular que incluye las estadísticas. Es decir, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden seleccionar estadísticas singulares para codificar las coordenadas x e y cuando se usa un orden de exploración particular para codificar el bloque.
Además, en los casos en los que una coordenada (por ejemplo, la coordenada y) se codifica después de otra coordenada (por ejemplo, la coordenada x), el codificador de vídeo 20 y/o el descodificador 30 pueden codificar la coordenada usando un valor de la otra coordenada previamente codificada como un contexto. Es decir, puede usarse un valor de una previamente codificada de las coordenadas x e y para seleccionar adicionalmente estadísticas dentro del modelo de contexto que indiquen una probabilidad de que la otra coordenada actualmente codificada comprenda un valor dado. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden entonces usar las estadísticas seleccionadas para codificar las coordenadas x e y, realizando el proceso de codificación por entropía adaptativa al contexto.
Como otro ejemplo consistente con la invención reivindicada, las coordenadas x e y se representan cada una usando una palabra de código unaria que comprende una secuencia de uno o más bits, o "bins". En otras palabras, se "binarizan" las coordenadas x e y. En ese sentido, para codificar las coordenadas x e y basándose en las estadísticas, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar cada bin de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, incluyen estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo,"0" o"1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código. En algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar las estimaciones de probabilidad usando valores de los bins correspondientes para bloques de datos de vídeo codificados previamente, por ejemplo, bins de palabras de código correspondientes a coordenadas x e y para los bloques codificados previamente, por ejemplo, como parte de la determinación de las estadísticas basándose en la información de posición de último coeficiente significativo para los bloques codificados previamente, como se ha descrito previamente. En otros ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 también pueden actualizar las estimaciones de probabilidad usando el valor de cada bin, por ejemplo, como parte de la actualización de las estadísticas basándose en las coordenadas x e y, como también se ha descrito previamente. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden usar las estimaciones de probabilidad para codificar cada bin realizando el proceso de codificación por entropía adaptativa al contexto.
Un inconveniente de las técnicas descritas anteriormente es que, cuando se codifica la información de posición de último coeficiente significativo para un bloque de datos de vídeo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden usar estadísticas diferentes dependiendo del orden de exploración usado por el codificador de vídeo 20 y/o el descodificador de vídeo 30 para codificar el bloque. En otras palabras, cada uno del codificador de vídeo 20 y/o el descodificador de vídeo 30 puede determinar y mantener (por ejemplo, actualizar) una pluralidad de conjuntos de estadísticas para codificar la información de posición de último coeficiente significativo para bloques de datos de vídeo cuando una pluralidad de órdenes de exploración se usa para codificar los bloques. En algunos casos, los conjuntos de estadísticas determinados y mantenidos para órdenes de exploración que son simétricos uno con respecto a otro pueden incluir la misma información, o información similar, como se ha descrito previamente. En estos casos, la determinación y el mantenimiento de los conjuntos de estadísticas puede dar como resultado un uso ineficiente de los recursos del sistema de codificación y una complejidad de sistema de codificación innecesaria.
Otro inconveniente de las técnicas descritas anteriormente es que, cuando el codificador de vídeo 20 y/o el descodificador de vídeo 30 codifican la información de posición de coeficiente significativo para bloques de datos de vídeo usando estadísticas comunes, independientemente de los órdenes de exploración usados para codificar los bloques, las estadísticas pueden no ser tan precisas como las estadísticas que se determinan y que se mantienen (por ejemplo, que se actualizan) de forma individual para cada orden de exploración. Es decir, las estadísticas comunes pueden indicar probabilidades de posiciones dentro de un bloque de datos de vídeo correspondientes a una posición de un último coeficiente significativo dentro del bloque de acuerdo con un orden de exploración asociado al bloque de una forma menos precisa que las estadísticas determinadas y mantenidas de forma individual para el orden de exploración particular usado para codificar el bloque. En estos casos, codificar la información de posición de último coeficiente significativo usando las estadísticas comunes puede dar como resultado una eficiencia de codificación reducida.
Todavía otro inconveniente de las técnicas descritas anteriormente es que, en algunos casos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar un bloque de datos de vídeo usando uno de una pluralidad de órdenes de exploración que se originan en una posición común dentro del bloque, por ejemplo, la posición de CC. En estos casos, cuando una posición de un último coeficiente significativo dentro del bloque de acuerdo con un orden de exploración asociado al bloque corresponde a la posición común, no hay otros coeficientes significativos dentro del bloque más allá del coeficiente ubicado en la posición común. En consecuencia, el codificador de vídeo 20 y/o el descodificador de vídeo 30 no necesitan codificar la posición del último coeficiente significativo dentro del bloque. En otras palabras, codificar la información de posición de último coeficiente significativo para el bloque en su totalidad, por ejemplo, representada usando coordenadas x e y como se ha descrito previamente, puede no ser necesaria en este caso, debido a que esto puede dar como resultado una eficiencia de codificación reducida.
Adicionalmente, en el ejemplo anterior, cuando la posición de último coeficiente significativo dentro del bloque no corresponde a la posición común, y la información de posición de último coeficiente significativo para el bloque debe codificarse en su totalidad, la información, en algunos casos, puede codificarse usando estadísticas que no son precisas, por ejemplo, estadísticas que no aprovechan la correlación descrita previamente entre la información de posición de último coeficiente significativo y la información de orden de exploración para el bloque que, una vez más, puede dar como resultado una eficiencia de codificación reducida.
En consecuencia, esta divulgación describe técnicas que pueden posibilitar codificar la información de posición de último coeficiente significativo para un bloque de datos de vídeo de una forma más eficiente en relación con otras técnicas, y usar sistemas de codificación que tienen menos complejidad con relación a otros sistemas. Como un ejemplo, la información de posición de último coeficiente significativo puede codificarse usando sistemas de codificación que tienen menos complejidad en relación con otros sistemas codificando la información usando estadísticas comunes cuando se usa uno de una pluralidad de órdenes de exploración para codificar el bloque, por ejemplo, codificando coordenadas x e y y coordenadas x e y intercambiadas que indican la información, dependiendo del orden de exploración usado para codificar el bloque. De acuerdo con este ejemplo, la información de posición de último coeficiente significativo también puede codificarse de una forma más eficiente actualizando las estadísticas comunes basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, lo que puede dar como resultado que las estadísticas sean más precisas. Como otro ejemplo, la información de posición de último coeficiente significativo puede codificarse de una forma más eficiente codificando la información de forma incremental, en la medida necesaria y, cuando se codifica la información en su totalidad, hacer esto basándose en el orden de exploración, por ejemplo, usando el orden de exploración como un contexto.
En algunos ejemplos, el codificador de vídeo 20 del dispositivo de origen 12 puede configurarse para codificar ciertos bloques de datos de vídeo (por ejemplo, uno o más macrobloques, o TU de una CU), y el descodificador de vídeo 30 del dispositivo de destino 14 puede configurarse para recibir datos de vídeo codificados desde el codificador de vídeo 20, por ejemplo, desde el módem 28 y el receptor 26. De acuerdo con las técnicas de esta divulgación, como un ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse para codificar coordenadas x e y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse adicionalmente para codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración. Por ejemplo, el segundo orden de exploración puede ser diferente del primer orden de exploración.
En este ejemplo, el primer orden de exploración y el segundo orden de exploración pueden ser simétricos uno con respecto a otro (o al menos parcialmente simétricos). Por ejemplo, el primer orden de exploración puede ser un orden de exploración horizontal y el segundo orden de exploración puede ser un orden de exploración vertical, en donde el orden de exploración horizontal y el orden de exploración vertical se originan en una posición común dentro del bloque. Por ejemplo, la posición común puede ser la posición de CC, como se ha descrito previamente.
De acuerdo con la invención reivindicada, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas, el codificador de vídeo 20 y/o el descodificador de vídeo 30 están configurados adicionalmente para determinar estadísticas que indican una probabilidad de que cada una de las coordenadas x e y comprenda un valor dado, en donde codificar las coordenadas x e y y las coordenadas x e y intercambiadas comprende codificar basándose en las estadísticas. Por ejemplo, la probabilidad de que la coordenada x comprenda un valor dado puede usarse para codificar la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado puede usarse para codificar la coordenada y y la coordenada x intercambiada. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse adicionalmente para actualizar las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas. Por ejemplo, la probabilidad de que la coordenada x comprenda un valor dado puede actualizarse usando la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado puede actualizarse usando la coordenada y la coordenada x intercambiadas.
Como un ejemplo, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse para realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye el codificador de vídeo 20 y/o el descodificador de vídeo 30 aplicando un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y, las coordenadas x e y intercambiadas, y el orden de exploración.
Debería hacerse notar que, en algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse adicionalmente para codificar las coordenadas x e y cuando el orden de exploración comprende un tercer orden de exploración. Por ejemplo, el tercer orden de exploración puede ser diferente del primer orden de exploración y el segundo orden de exploración. Como un ejemplo, el tercer orden de exploración puede ser un orden de exploración en zigzag, o un orden de exploración diagonal, en donde el orden de exploración en zigzag o diagonal también se origina en la posición común dentro del bloque, por ejemplo, la posición de CC.
En este ejemplo, en algunos casos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse adicionalmente para codificar información que identifica el orden de exploración, es decir, la información de orden de exploración para el bloque. Adicionalmente, en algunos casos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse adicionalmente para codificar información que identifica posiciones de otros coeficientes significativos dentro del bloque, es decir, la información de posición de coeficiente significativo para el bloque.
Como otro ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse para codificar coordenadas x e y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo de acuerdo con un orden de exploración asociado al bloque. Por ejemplo, el orden de exploración puede ser uno de una pluralidad de órdenes de exploración, en donde cada uno de la pluralidad de órdenes de exploración se origina en una posición común dentro del bloque, por ejemplo, la posición de CC.
En este ejemplo, para codificar las coordenadas x e y, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse para codificar información que indica si la coordenada x corresponde a la posición común, codificar información que indica si la coordenada y corresponde a la posición común y, en el caso de que la coordenada x no corresponda a la posición común, y la coordenada y no corresponda a la posición común, codificar información que identifica el orden de exploración. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse adicionalmente para, en el caso de que la coordenada x no corresponda a la posición común, codificar la coordenada x basándose en el orden de exploración y, en el caso de que la coordenada y no corresponda a la posición común, codificar la coordenada y basándose en el orden de exploración.
En este ejemplo, para codificar la coordenada x y la coordenada y basándose en el orden de exploración, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden configurarse para realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye el codificador de vídeo 20 y/o el descodificador de vídeo 30 aplicando un modelo de contexto basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir el orden de exploración.
En cualquier caso, después de codificar la información de posición de último coeficiente significativo y, en algunos casos, la información de orden de exploración y la información de posición de coeficiente significativo, es decir, los datos de SM, para el bloque de la forma descrita anteriormente, el codificador de vídeo 20 y/o el descodificador de vídeo 30 también pueden codificar el valor de cada coeficiente significativo (por ejemplo, la magnitud y el signo de cada coeficiente significativo, indicado por los elementos de sintaxis "coeff_absjevel_minus1" y "coeff_sign_flag", respectivamente) dentro del bloque.
En consecuencia, las técnicas de esta divulgación pueden posibilitar que el codificador de vídeo 20 y/o el descodificador de vídeo 30 codifiquen la información de posición de último coeficiente significativo para el bloque de una forma más eficiente que cuando se usan otros métodos, y pueden posibilitar que el codificador de vídeo 20 y/o el descodificador de vídeo 30 tengan menos complejidad en relación con otros sistemas. De esta forma, puede haber un ahorro de bits relativo para un flujo de bits codificado que incluye la información de posición de último coeficiente significativo, y una reducción relativa de la complejidad para el codificador de vídeo 20 y/o el descodificador de vídeo 30 usados para codificar la información, cuando se usan las técnicas de esta divulgación.
Cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 puede implementarse como cualquiera de una diversidad de circuitería de codificador y de descodificador adecuada, según sea aplicable, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA), circuitería de lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 puede incluirse en uno o más codificadores o descodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/descodificador de vídeo combinado (CÓDEC). Un aparato que incluye el codificador 20 de vídeo y/o el descodificador 30 de vídeo puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo 20 que puede implementar técnicas para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación. El codificador de vídeo 20 puede realizar intra codificación e inter codificación de bloques dentro de tramas de vídeo, incluyendo macrobloques, C<u>y subdivisiones o sub-subdivisiones de los mismos. La intra codificación depende de la predicción espacial para reducir o retirar la redundancia espacial en el vídeo dentro de una trama de vídeo dada. La inter codificación se basa en la predicción temporal para reducir o retirar la redundancia temporal en el vídeo dentro de tramas adyacentes de una secuencia de vídeo. El intra modo (el modo I) puede referirse a cualquiera de los distintos modos basándose en compresión espaciales, y los inter modos, tales como predicción unidireccional (el modo P) o predicción bidireccional (el modo B), pueden referirse a cualquiera de varios modos de compresión basándose en el tiempo.
Como se muestra en la figura 2, el codificador de vídeo 20 recibe un bloque actual de datos de vídeo dentro de una trama de vídeo que va a codificarse. En el ejemplo de la figura 2, el codificador de vídeo 20 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, la memoria 64, un sumador 50, un módulo de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. Para la reconstrucción del bloque de vídeo, el codificador de vídeo 20 también incluye la unidad de cuantificación inversa 58, el módulo de transformada inversa 60 y el sumador 62. Un filtro de desbloqueo (no mostrado en la figura 2) también puede incluirse para filtrar límites de bloque para retirar los artefactos de bloqueo del vídeo reconstruido. Si se desea, el filtro de desbloqueo filtraría habitualmente la salida del sumador 62.
Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o segmento de vídeo que va a codificarse. La trama o segmento puede dividirse en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden realizar una codificación inter predictiva de un bloque de vídeo recibido dado en relación con uno o más bloques en una o más tramas de referencia para proporcionar una compresión temporal. El módulo de intra predicción 46 puede realizar una codificación intra predictiva de un bloque de vídeo recibido dado en relación con uno o más bloques vecinos en la misma trama o segmento que el bloque que va a codificarse para proporcionar una compresión espacial.
La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, es decir, un modo o múltiples modos de intra o inter codificación, basándose en los resultados de codificación (por ejemplo, tasa de codificación y nivel de distorsión resultantes) y basándose en un tipo de trama o segmento para la trama o segmento que incluye el bloque recibido dado que se está codificando, y proporciona el bloque intra o inter codificado resultante al sumador 50 para generar datos de bloques residuales y al sumador 62 para reconstruir el bloque codificado para usarse en una trama de referencia o segmento de referencia. En general, la intra predicción implica la predicción de un bloque actual en relación con bloques vecinos previamente codificados, mientras que la inter predicción implica estimación de movimiento y compensación de movimiento para predecir temporalmente el bloque actual.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 representan los elementos de inter predicción del codificador de vídeo 20. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero, se ilustran de manera separada para fines conceptuales. La estimación de movimiento es el proceso de generar vectores de movimiento, que estiman el movimiento de los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un bloque predictivo dentro de una trama de referencia predictiva (u otra unidad codificada) en relación con el bloque actual que se codifica dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se halla que coincide estrechamente al bloque que va a codificarse, en términos de diferencia de píxel, que puede determinarse por una suma de diferencia absoluta (SAD), suma de diferencia de cuadrados (SSD) u otras métricas de diferencia. Un vector de movimiento también puede indicar el desplazamiento de una subdivisión de un bloque. La compensación de movimiento puede implicar obtener o generar el bloque predictivo basándose en el vector de movimiento determinado por la estimación de movimiento. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar funcionalmente integradas, en algunos ejemplos.
La unidad de estimación de movimiento 42 puede calcular un vector de movimiento para un bloque de vídeo de una trama inter codificada comparando el bloque de vídeo con bloques de vídeo de una trama de referencia en la memoria 64. La unidad de compensación de movimiento 44 también puede interpolar píxeles subenteros de la trama de referencia, por ejemplo, una trama I o una trama P, para los fines de esta comparación. La norma H.264 de ITU, como un ejemplo, describe dos listas: una lista 0, que incluye tramas de referencia que tienen un orden de visualización anterior al que se está codificando, y una lista 1, que incluye tramas de referencia que tienen un orden de visualización posteriormente a la trama actual que se está codificando. Por lo tanto, los datos almacenados en la memoria 64 pueden organizarse de acuerdo con estas listas.
La unidad de estimación de movimiento 42 puede comparar bloques de una o más tramas de referencia desde la memoria 64 a un bloque que va a codificarse de una trama actual, por ejemplo, una trama P o una trama B. Cuando las tramas de referencia en la memoria 64 incluyen valores para píxeles subenteros, un vector de movimiento calculado por la unidad de estimación de movimiento 42 puede referirse a una ubicación de píxeles subenteros de una trama de referencia. La unidad de estimación de movimiento 42 y/o la unidad de compensación de movimiento 44 también pueden configurarse para calcular valores para posiciones de píxeles subenteros de tramas de referencia almacenadas en la memoria 64 si no se almacenan valores para posiciones de píxeles subenteros en la memoria 64. La unidad de estimación de movimiento 42 puede enviar el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44. El bloque de tramas de referencia identificado por un vector de movimiento puede denominarse bloque inter predictivo, o, de forma más general, bloque predictivo. La unidad de compensación de movimiento 44 puede calcular datos de predicción basándose en el bloque predictivo.
El módulo de intra predicción 46 puede intra predecir un bloque actual, como una alternativa a la inter predicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, el módulo de intra predicción 46 puede determinar un modo de intra predicción para usar para codificar un bloque actual. En algunos ejemplos, el módulo de intra predicción 46 puede codificar un bloque actual usando diversos modos de intra predicción, por ejemplo, durante pasadas de codificación separadas y el módulo de intra predicción 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intra predicción apropiado para usar a partir de los modos sometidos a prueba. Por ejemplo, el módulo de intra predicción 46 puede calcular valores de tasa-distorsión usando un análisis de tasa-distorsión para los diversos modos de intra predicción sometidos a prueba, y seleccionar el modo de intra predicción que tiene las mejores características de tasa-distorsión entre los modos sometidos a prueba. El análisis de tasa-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado, que se codificó para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) usada para producir el bloque codificado. El módulo de intra predicción 46 puede calcular relaciones a partir de las distorsiones y tasas para los diversos bloques codificados para determinar cuál modo de intra predicción muestra el mejor valor de tasadistorsión para el bloque.
Después de predecir un bloque actual, por ejemplo, usando intra predicción o inter predicción, el codificador de vídeo 20 puede formar un bloque de vídeo residual restando los datos de predicción calculados por la unidad de compensación de movimiento 44 o el módulo de intra predicción 46 del bloque de vídeo original que se codifica. El sumador 50 representa el componente o componentes que pueden realizar esta operación de resta. El módulo de transformada 52 puede aplicar una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residual. El módulo de transformada 52 puede realizar otras transformadas, tales como las definidas por la norma H.264, que son conceptualmente similares a DCT. Podrían usarse también transformadas de ondícula, transformadas de números enteros, transformadas de subbanda u otros tipos de transformadas. En cualquier caso, el módulo de transformada 52 puede aplicar la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residual. La transformada puede convertir la información residual de un dominio de los píxeles a un dominio de la transformada, tal como un dominio de la frecuencia. La unidad de cuantificación 54 puede cuantificar los coeficientes de transformada residuales para reducir adicionalmente la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación.
Después de la cuantificación, la unidad de codificación por entropía 56 puede codificar por entropía los coeficientes de transformada cuantificados, que pueden incluir CAVLC, CABAC, PIPE u otra técnica de codificación por entropía. A continuación de la codificación por entropía por la unidad de codificación por entropía 56, el vídeo codificado puede transmitirse a otro dispositivo o archivarse para su posterior transmisión o recuperación.
En algunos casos, la unidad de codificación por entropía 56 u otra unidad del codificador de vídeo 20 puede configurarse para realizar otras funciones de codificación, además de coeficientes de transformada cuantificados de codificación por entropía como se ha descrito anteriormente. Por ejemplo, la unidad de codificación por entropía 56 puede construir información de cabecera para el bloque (por ejemplo, macrobloque, CU o LCU), o una trama de vídeo que contiene el bloque, con elementos de sintaxis apropiados para la transmisión en el flujo de bits de vídeo codificado. De acuerdo con algunas normas de codificación, tales elementos de sintaxis pueden incluir información de posición de último coeficiente significativo para el bloque (por ejemplo, para un macrobloque, o una TU de una CU), como se ha descrito previamente. Como también se ha descrito previamente, la información de posición de último coeficiente significativo puede consumir un porcentaje elevado de la tasa de bits de vídeo comprimido global si se codifica de forma ineficiente. En ese sentido, esta divulgación describe técnicas que pueden posibilitar codificar la información de posición de último coeficiente significativo para el bloque de una forma más eficiente que cuando se usan otros métodos. Además, esta divulgación describe usar sistemas de codificación que tienen menos complejidad en relación con otros sistemas cuando se codifica la información de posición de último coeficiente significativo para el bloque.
En algunos ejemplos, la unidad de codificación por entropía 56 del codificador de vídeo 20 puede configurarse para codificar ciertos bloques de datos de vídeo (por ejemplo, uno o más macrobloques, o una TU de una CU). De acuerdo con las técnicas de esta divulgación, como un ejemplo, la unidad de codificación por entropía 56 puede configurarse para codificar para codificar coordenadas x e y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración. La unidad de codificación por entropía 56 puede configurarse adicionalmente para codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración. Por ejemplo, el segundo orden de exploración puede ser diferente del primer orden de exploración.
En este ejemplo, el primer orden de exploración y el segundo orden de exploración pueden ser simétricos uno con respecto a otro (o al menos parcialmente simétricos). Por ejemplo, el primer orden de exploración puede ser un orden de exploración horizontal y el segundo orden de exploración puede ser un orden de exploración vertical, en donde los órdenes de exploración horizontal y vertical se originan en una posición común dentro del bloque, la posición de CC.
Específicamente, el primer orden de exploración y el segundo orden de exploración pueden ser, cada uno, un orden de exploración que puede ser usado por la unidad de codificación por entropía 56 para codificar el bloque. Por ejemplo, el primer y el segundo órdenes de exploración pueden ser órdenes de exploración usados por el codificador de vídeo 20 para codificar bloques de datos de vídeo, y por descodificador de vídeo 30 para descodificar los bloques, dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el descodificador de vídeo 30. En algunos ejemplos, el primer y el segundo órdenes de exploración pueden ser solo algunos de los órdenes de exploración usados dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo órdenes de exploración pueden ser los únicos órdenes de exploración usados dentro del sistema 10 para codificar los bloques.
Además, las coordenadas x e y intercambiadas también corresponden a la información de posición de último coeficiente significativo para el bloque, pero son procesadas adicionalmente, es decir, son intercambiadas, por la unidad de codificación por entropía 56 para posibilitar codificar la información de una forma más eficiente que cuando se usan otras técnicas, como se ha descrito previamente. Específicamente, las coordenadas x e y intercambiadas pueden posibilitar usar estadísticas comunes para codificar las coordenadas x e y y las coordenadas x e y intercambiadas que indican la información de posición de último coeficiente significativo para el bloque, como también se ha descrito previamente.
En este ejemplo, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas, la unidad de codificación por entropía 56 puede configurarse adicionalmente para determinar estadísticas que indican una probabilidad de que cada una de las coordenadas x e y comprenda un valor dado, en donde codificar las coordenadas x e y y las coordenadas x e y intercambiadas comprende codificar basándose en las estadísticas. Por ejemplo, la probabilidad de que la coordenada x comprenda un valor dado puede usarse para codificar la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado puede usarse para codificar la coordenada y y la coordenada x intercambiada.
En general, las estadísticas pueden indicar una probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración. En particular, las estadísticas pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.).
Como se ha descrito previamente, debido a que el primer y el segundo órdenes de exploración pueden ser simétricos (o al menos parcialmente simétricos) uno con respecto a otro, la probabilidad de que la coordenada x comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada y comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. De forma similar, la probabilidad de que la coordenada y comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada x comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. Es decir, cada una de las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración puede tener la misma o similar probabilidad de comprender un valor dado que las coordenadas x e y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. En ese sentido, las estadísticas pueden indicar adicionalmente la probabilidad de que cada una de las coordenadas x e y intercambiadas comprenda un valor dado. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estadísticas usando información de posición de último coeficiente significativo para bloques codificados previamente de datos de vídeo, por ejemplo, valores de coordenadas x e y y coordenadas x e y intercambiadas para los bloques codificados previamente.
La unidad de codificación por entropía 56 puede configurarse adicionalmente para actualizar las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, de tal modo que la probabilidad de que la coordenada x comprenda un valor dado se actualiza usando la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado se actualiza usando la coordenada y la coordenada x intercambiadas. Por ejemplo, las estadísticas actualizadas pueden usarse para codificar información de posición de último coeficiente significativo para bloques codificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
Como un ejemplo, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, la unidad de codificación por entropía 56 puede configurarse para realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye una unidad de codificación por entropía 56 que aplica un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y, las coordenadas x e y intercambiadas, y el orden de exploración. Como se ha mencionado previamente, además de CABAC, las técnicas descritas de intercambio de las coordenadas x e y para fines de codificación también pueden usarse en otras técnicas de codificación por entropía adaptativa al contexto, tales como CAVLC, PIPE u otras técnicas de codificación por entropía adaptativa al contexto.
En este ejemplo, la unidad de codificación por entropía 56 puede usar el orden de exploración, por ejemplo, el orden de exploración horizontal o vertical, para seleccionar el modelo de contexto particular que incluye las estadísticas. Es decir, la unidad de codificación por entropía 56 puede seleccionar las mismas estadísticas para codificar las coordenadas x e y cuando se usa el primer orden de exploración para codificar el bloque, y para codificar las coordenadas x e y intercambiadas cuando se usa el segundo orden de exploración para codificar el bloque. Además, en los casos en los que una coordenada (por ejemplo, la coordenada y) se codifica después de otra coordenada (por ejemplo, la coordenada x), la unidad de codificación por entropía 56 puede codificar la coordenada usando un valor de la otra coordenada codificada previamente como un contexto. Es decir, puede usarse un valor de una de las coordenadas x e y previamente codificadas o las coordenadas x e y intercambiadas, dependiendo del orden de exploración usado para codificar el bloque, para seleccionar estadísticas adicionales dentro del modelo de contexto que indican una probabilidad de que la otra coordenada actualmente codificada comprenda un valor dado. La unidad de codificación por entropía 56 puede usar entonces las estadísticas seleccionadas para codificar las coordenadas x e y y las coordenadas x e y intercambiadas realizando el proceso de codificación por entropía adaptativa al contexto.
Como también se ha descrito previamente, en este ejemplo, las coordenadas x e y y las coordenadas x e y intercambiadas pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins, es decir, "binarizada". En ese sentido, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, la unidad de codificación por entropía 56 puede codificar cada bin de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad usando valores de los bins correspondientes para bloques de datos de vídeo codificados previamente, por ejemplo, bins de palabras de código correspondientes a coordenadas x e y y coordenadas x e y intercambiadas para los bloques codificados previamente, por ejemplo, como parte de la determinación de las estadísticas basándose en la información de posición de último coeficiente significativo para los bloques codificados previamente, como se ha descrito previamente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad usando el valor de cada bin, por ejemplo, como parte de la actualización de las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, como también se ha descrito previamente. La unidad de codificación por entropía 56 puede usar las estimaciones de probabilidad para codificar cada bin realizando el proceso de codificación por entropía adaptativa al contexto.
Como otro ejemplo, en algunos casos, diferentes valores de un bin de una palabra de código unaria para una coordenada (por ejemplo, x) pueden dar como resultado diferentes estimaciones de probabilidad para un bin correspondiente de una palabra de código unaria para la otra coordenada (por ejemplo, y). En ese sentido, cuando se codifica un bin de una palabra clave unaria para una coordenada usando estimaciones de probabilidad correspondientes al bin, como se ha descrito anteriormente, usando estimaciones de probabilidad que incluyen información sobre un valor de un bin, por ejemplo, un bin correspondiente, de una palabra de código unaria para la otra coordenada puede dar como resultado que las estimaciones de probabilidad sean precisas y, por lo tanto, puede posibilitar una codificación eficiente. Por ejemplo, el bin de la palabra de código unaria para la otra coordenada puede ser un bin que corresponde al bin de la palabra de código unaria para una coordenada, por ejemplo, los bins pueden estar ubicados en las mismas o similares posiciones de bin dentro de sus palabras de código respectivas. Codificar las coordenadas x e y y las coordenadas x e y intercambiadas (o las coordenadas x e y que indican información de posición de último coeficiente significativo para un bloque de datos de vídeo, en general) de esta forma "intercalada" usando bins previamente codificados como contextos puede permitir usar información mutua de las coordenadas x e y respectivas, lo que puede permitir codificar las coordenadas de una forma más eficiente.
En otros ejemplos, la unidad de codificación por entropía 56 puede configurarse para codificar las coordenadas x e y y las coordenadas x e y intercambiadas de una forma intercalada, en general. En algunos ejemplos, la unidad de codificación por entropía 56 puede configurarse para codificar bins individuales de las palabras de código para las coordenadas x e y respectivas de una forma intercalada. En otros ejemplos, la unidad de codificación por entropía 56 puede configurarse para codificar grupos de bins de las palabras de código de una forma intercalada. Por ejemplo, algunos bins de una palabra de código para cada una de las coordenadas x e y pueden codificarse usando un primer modo de codificación (por ejemplo, un modo de codificación regular), mientras que los bins restantes de la palabra de código pueden codificarse usando un segundo modo de codificación (por ejemplo, un modo de codificación de derivación). En ese sentido, la unidad de codificación por entropía 56 puede configurarse para codificar uno o más bins de la palabra de código correspondiente a una de las coordenadas codificadas usando el primer modo de codificación (por ejemplo, regular) antes de codificar uno o más bins de la palabra de código correspondiente al otro código de coordenadas usando el primer modo de codificación, seguido por codificar uno o más bins de la palabra de código correspondiente a la coordenada codificada usando el segundo modo de codificación (por ejemplo, de derivación) antes de codificar uno o más bins de la palabra de código correspondiente a la otra coordenada codificada usando el segundo modo de codificación. En otros ejemplos, la unidad de codificación por entropía 56 puede configurarse para codificar los bins de las palabras de código codificadas usando el segundo modo de codificación conjuntamente.
En consecuencia, separar la codificación de los bins de la palabra de código para cada una de las coordenadas x e y de la forma descrita anteriormente puede permitir agrupar bins codificados usando un modo de codificación particular (por ejemplo, modo de derivación), lo que puede mejorar la capacidad de proceso de codificación.
En otras palabras, en los casos en los que cada una de las coordenadas x e y y las coordenadas x e y intercambiadas comprenden una secuencia de uno o más bins, la unidad de codificación por entropía 56 puede configurarse para codificar las coordenadas x e y y las coordenadas x e y intercambiadas realizando el proceso de codificación por entropía adaptativa al contexto que incluye aplicar el modelo de contexto que incluye las estadísticas basándose en una de las coordenadas x e y y las coordenadas x e y intercambiadas. La unidad de codificación por entropía 56 puede configurarse para codificar las coordenadas x e y respectivas codificando al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada. Además, la unidad de codificación por entropía 56 puede configurarse para codificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
En consecuencia, para codificar la información de posición de último coeficiente significativo, la unidad de codificación por entropía 56 puede configurarse para codificar las coordenadas x e y y las coordenadas x e y intercambiadas, de una forma intercalada, usando bins previamente codificados como contextos. Es decir, la unidad de codificación por entropía 56 puede configurarse para codificar cada bin de una palabra de código unaria para una coordenada dada realizando un proceso de codificación por entropía adaptativa al contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del bin dentro de la palabra de código unaria, como se ha descrito previamente, y un valor de uno o más bins previamente codificados de una palabra de código unaria para la otra coordenada. Adicionalmente, la unidad de codificación por entropía 56 puede configurarse para codificar las coordenadas x e y y las coordenadas x e y intercambiadas de una forma intercalada, en general.
Debería hacerse notar que, en otros ejemplos consistentes con las técnicas de esta divulgación, pueden usarse otros tipos de palabras de código, por ejemplo, palabras de código unarias truncadas, palabras de código de Golomb exponencial, palabras de código concatenados, así como combinaciones de diversas técnicas de codificación.
Debería hacerse notar también que, en algunos ejemplos, la unidad de codificación por entropía 56 puede configurarse adicionalmente para codificar las coordenadas x e y cuando el orden de exploración comprende un tercer orden de exploración. Por ejemplo, el tercer orden de exploración puede ser diferente del primer orden de exploración y el segundo orden de exploración. Como un ejemplo, el tercer orden de exploración puede ser un orden de exploración en zigzag, o un orden de exploración diagonal, en donde el orden de exploración en zigzag o diagonal también se origina en la posición común dentro del bloque, por ejemplo, la posición de CC.
En este ejemplo, la unidad de codificación por entropía 56 puede configurarse adicionalmente para codificar información que identifica el orden de exploración, es decir, la información de orden de exploración para el bloque. Como alternativa, como se ha descrito previamente, la unidad de codificación por entropía 56 puede omitir la codificación de la información de orden de exploración para el bloque cuando la unidad de codificación por entropía 56 usa un orden de exploración adaptativa para codificar el bloque. Adicionalmente, en algunos casos, la unidad de codificación por entropía 56 puede configurarse adicionalmente para codificar información que identifica posiciones de todos los otros coeficientes significativos dentro del bloque, es decir, la información de posición de coeficiente significativo para el bloque.
Por ejemplo, la información de posición de coeficiente significativo para el bloque puede representarse usando una secuencia de indicadores de coeficiente significativo, como se ha descrito previamente. Como también se ha descrito previamente, la información de posición de coeficiente significativo puede codificarse codificando cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del indicador dentro del bloque de acuerdo con el orden de exploración.
El modelo de contexto puede incluir estimaciones de probabilidad que indican una probabilidad de que cada indicador comprenda un valor dado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad usando los valores de los indicadores de coeficiente significativo correspondientes para los bloques de datos de vídeo codificados previamente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad usando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor dado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden usarse para codificar información de posición de coeficiente significativo para bloques codificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
Como otro ejemplo, la unidad de codificación por entropía 56 puede configurarse para codificar coordenadas x e y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo de acuerdo con un orden de exploración asociado al bloque. Por ejemplo, el orden de exploración puede ser uno de una pluralidad de órdenes de exploración, en donde cada uno de la pluralidad de órdenes de exploración se origina en una posición común dentro del bloque, por ejemplo, la posición de CC.
En este ejemplo, para codificar las coordenadas x e y, la unidad de codificación por entropía 56 puede configurarse para codificar información que indica si la coordenada x corresponde a la posición común, codificar información que indica si la coordenada y corresponde a la posición común y, en el caso de que la coordenada x no corresponda a la posición común, y la coordenada y no corresponda a la posición común, codificar información que identifica el orden de exploración. La unidad de codificación por entropía 56 puede configurarse adicionalmente para, en el caso de que la coordenada x no corresponda a la posición común, codificar la coordenada x basándose en el orden de exploración y, en el caso de que la coordenada y no corresponda a la posición común, codificar la coordenada y basándose en el orden de exploración.
En este ejemplo, para codificar la coordenada x y la coordenada y basándose en el orden de exploración, la unidad de codificación por entropía 56 puede configurarse para realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye la unidad de codificación por entropía 56 aplicando un modelo de contexto basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir el orden de exploración.
Adicionalmente, como un ejemplo, la unidad de codificación por entropía 56 puede configurarse para codificar una coordenada (por ejemplo, la coordenada y) después de otra coordenada (por ejemplo, la coordenada x), en donde la unidad de codificación por entropía 56 puede configurarse para codificar una coordenada usando un valor de la otra coordenada previamente codificada como un contexto. Como otro ejemplo, en donde cada una de las coordenadas x e y comprende una secuencia de uno o más bins, la unidad de codificación por entropía 56 puede configurarse para codificar al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basándose al menos en parte en un valor de al menos un bin, por ejemplo, un bin correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de codificación por entropía 56 puede configurarse para codificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
En cualquier caso, después de codificar la información de posición de último coeficiente significativo y, en algunos casos, la información de orden de exploración y la información de posición de coeficiente significativo, es decir, los datos de SM, para el bloque de la forma descrita anteriormente, la unidad de codificación por entropía 56 puede codificar también el valor de cada coeficiente significativo (por ejemplo, la magnitud y el signo de cada coeficiente significativo, indicado por los elementos de sintaxis "coeff_abs_level_minus1" y "coeff_sign_flag", respectivamente) dentro del bloque.
En consecuencia, las técnicas de esta divulgación pueden posibilitar que la unidad de codificación por entropía 56 codifique la información de posición de último coeficiente significativo para el bloque de una forma más eficiente que cuando se usan otros métodos, y puede posibilitar que la unidad de codificación por entropía 56 tenga menos complejidad en relación con otros sistemas. De esta forma, puede haber un ahorro de bits relativo para un flujo de bits codificado que incluye la información de posición de último coeficiente significativo, y una reducción relativa de la complejidad para la unidad de codificación por entropía 56 usada para codificar la información, cuando se usan las técnicas de esta divulgación.
El módulo de cuantificación inversa 58 y el módulo de transformada inversa 60 aplican una cuantificación inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de los píxeles, por ejemplo, para su uso posterior como un bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria 64. La unidad de compensación de movimiento 44 puede aplicar también uno o más filtros de interpolación al bloque residual objetivo para calcular valores de píxel subenteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual objetivo al bloque de predicción de movimiento compensado producido por la unidad de compensación de movimiento 44 para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria 64. El bloque de vídeo reconstruido puede usarse por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para inter codificar un bloque en una trama de vídeo subsiguiente.
De esta forma, el codificador de vídeo 20 representa un ejemplo de un codificador de vídeo configurado para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo 30 que implementa técnicas para descodificar de forma eficiente información de posición de último coeficiente significativo codificada basándose en información de orden de exploración para un bloque de datos de vídeo consistente con la invención reivindicada. En el ejemplo de la figura 3, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 70, la unidad de compensación de movimiento 72, el módulo de intra predicción 74, el módulo de cuantificación inversa 76, el módulo de transformada inversa 78, la memoria 82 y el sumador 80. El descodificador de vídeo 30 puede realizar, en algunos ejemplos, una pasada de descodificación recíproca en general a la pasada de codificación descrita con respecto al codificador de vídeo 20 (la figura 2). La unidad de compensación de movimiento 72 puede generar datos de predicción basándose en vectores de movimiento recibidos desde la unidad de descodificación por entropía 70.
En algunos ejemplos, el descodificador de vídeo 30 está configurado para recibir datos codificados de vídeo (por ejemplo, uno o más macrobloques, o TU de una CU) del codificador de vídeo 20. De acuerdo con las técnicas de esta divulgación, como un ejemplo, la unidad de descodificación por entropía 70 está configurada para descodificar para codificar coordenadas x e y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración. La unidad de descodificación por entropía 70 está configurada adicionalmente para descodificar coordenadas x e y intercambiadas que indican la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración. El segundo orden de exploración es diferente del primer orden de exploración.
En este ejemplo, el primer orden de exploración y el segundo orden de exploración pueden ser simétricos uno con respecto a otro (o al menos parcialmente simétricos). Por ejemplo, el primer orden de exploración puede ser un orden de exploración horizontal y el segundo orden de exploración puede ser un orden de exploración vertical, en donde el orden de exploración horizontal y el orden de exploración vertical se originan en una posición común dentro del bloque, la posición de CC.
Específicamente, el primer orden de exploración y el segundo orden de exploración son un orden de exploración que es usado por la unidad de descodificación por entropía 70 para descodificar el bloque. Por ejemplo, el primer y el segundo órdenes de exploración son órdenes de exploración usados por el codificador de vídeo 20 para codificar bloques de datos de vídeo, y por descodificador de vídeo 30 para descodificar los bloques, dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el descodificador de vídeo 30. En algunos ejemplos, el primer y el segundo órdenes de exploración pueden ser solo algunos de los órdenes de exploración usados dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo órdenes de exploración pueden ser los únicos órdenes de exploración usados dentro del sistema 10 para codificar los bloques.
Además, las coordenadas x e y intercambiadas también corresponden a la información de posición de último coeficiente significativo para el bloque, pero son procesadas adicionalmente, es decir, son intercambiadas, por la unidad de descodificación por entropía 70 para posibilitar descodificar la información de una forma más eficiente que cuando se usan otras técnicas, como se ha descrito previamente. Específicamente, las coordenadas x e y intercambiadas posibilitan usar estadísticas comunes para descodificar las coordenadas x e y y las coordenadas x e y intercambiadas que indican la información de posición de último coeficiente significativo para el bloque, como también se ha descrito previamente.
En este ejemplo, para descodificar las coordenadas x e y y las coordenadas x e y intercambiadas, la unidad de descodificación por entropía 70 está configurada adicionalmente para determinar estadísticas que indican una probabilidad de que cada una de las coordenadas x e y comprenda un valor dado, en donde descodificar las coordenadas x e y y las coordenadas x e y intercambiadas comprende descodificar basándose en las estadísticas. La probabilidad de que la coordenada x comprenda un valor dado puede usarse para descodificar la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado puede usarse para descodificar la coordenada y y la coordenada x intercambiada.
En general, las estadísticas pueden indicar una probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración. En particular, las estadísticas indican una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.).
Como se ha descrito previamente, debido a que el primer y el segundo órdenes de exploración pueden ser simétricos (o al menos parcialmente simétricos) uno con respecto a otro, la probabilidad de que la coordenada x comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada y comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. De forma similar, la probabilidad de que la coordenada y comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada x comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. Es decir, cada una de las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración puede tener la misma o similar probabilidad de comprender un valor dado que las coordenadas x e y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. En ese sentido, las estadísticas pueden indicar adicionalmente la probabilidad de que cada una de las coordenadas x e y intercambiadas comprenda un valor dado. En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estadísticas usando información de posición de último coeficiente significativo para bloques descodificados previamente de datos de vídeo, por ejemplo, valores de coordenadas x e y y coordenadas x e y intercambiadas para los bloques descodificados previamente.
La unidad de descodificación por entropía 70 puede configurarse adicionalmente para actualizar las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas. Por ejemplo, la probabilidad de que la coordenada x comprenda un valor dado puede actualizarse usando la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado puede actualizarse usando la coordenada y la coordenada x intercambiadas. Por ejemplo, las estadísticas actualizadas pueden usarse para descodificar información de posición de último coeficiente significativo para bloques descodificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
De acuerdo con la invención reivindicada, para descodificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, la unidad de descodificación por entropía 70 está configurada para realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye una unidad de descodificación por entropía 70 que aplica un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y, las coordenadas x e y intercambiadas, y el orden de exploración. Como se ha mencionado previamente, además de CABAC, las técnicas descritas de intercambio de las coordenadas x e y para fines de codificación también pueden usarse en otras técnicas de codificación adaptativa al contexto, tales como CAVLC, PIPE u otras técnicas adaptativas al contexto.
En este ejemplo, la unidad de descodificación por entropía 70 puede usar el orden de exploración, por ejemplo, el orden de exploración horizontal o vertical, para seleccionar el modelo de contexto particular que incluye las estadísticas. Es decir, la unidad de descodificación por entropía 70 puede seleccionar las mismas estadísticas para descodificar las coordenadas x e y cuando se usa el primer orden de exploración para descodificar el bloque, y para descodificar las coordenadas x e y intercambiadas cuando se usa el segundo orden de exploración para descodificar el bloque. Además, en los casos en los que una coordenada (por ejemplo, la coordenada y) se descodifica después de otra coordenada (por ejemplo, la coordenada x), la unidad de descodificación por entropía 70 puede descodificar la coordenada usando un valor de la otra coordenada descodificada previamente como un contexto. Es decir, puede usarse un valor de una de las coordenadas x e y previamente descodificadas o las coordenadas x e y intercambiadas, dependiendo del orden de exploración usado para descodificar el bloque, para seleccionar estadísticas adicionales dentro del modelo de contexto que indican una probabilidad de que la otra coordenada actualmente descodificada comprenda un valor dado. La unidad de descodificación por entropía 70 puede usar entonces las estadísticas seleccionadas para descodificar las coordenadas x e y y las coordenadas x e y intercambiadas realizando el proceso de codificación por entropía adaptativa al contexto.
Como también se ha descrito previamente, de acuerdo con la invención reivindicada, las coordenadas x e y y las coordenadas x e y intercambiadas se representan cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins, es decir, "binarizada". En ese sentido, para descodificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, la unidad de descodificación por entropía 70 descodifica cada bin de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, incluyen estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estimaciones de probabilidad usando valores de los bins correspondientes para bloques de datos de vídeo descodificados previamente, por ejemplo, bins de palabras de código correspondientes a coordenadas x e y y coordenadas x e y intercambiadas para los bloques descodificados previamente, por ejemplo, como parte de la determinación de las estadísticas basándose en la información de posición de último coeficiente significativo para los bloques descodificados previamente, como se ha descrito previamente. En otros ejemplos, la unidad de descodificación por entropía 70 también puede actualizar las estimaciones de probabilidad usando el valor de cada bin, por ejemplo, como parte de la actualización de las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, como también se ha descrito previamente. La unidad de descodificación por entropía 70 usa las estimaciones de probabilidad para descodificar cada bin realizando el proceso de codificación por entropía adaptativa al contexto.
Como otro ejemplo, en algunos casos, diferentes valores de un bin de una palabra de código unaria para una coordenada (por ejemplo, x) pueden dar como resultado diferentes estimaciones de probabilidad para un bin correspondiente de una palabra de código unaria para la otra coordenada (por ejemplo, y). En ese sentido, cuando se descodifica un bin de una palabra clave unaria para una coordenada usando estimaciones de probabilidad correspondientes al bin, como se ha descrito anteriormente, usando estimaciones de probabilidad que incluyen información sobre un valor de un bin, por ejemplo, un bin correspondiente, de una palabra de código unaria para la otra coordenada puede dar como resultado que las estimaciones de probabilidad sean precisas y, por lo tanto, puede posibilitar una descodificación eficiente. Por ejemplo, el bin de la palabra de código unaria para la otra coordenada puede ser un bin que corresponde al bin de la palabra de código unaria para una coordenada, por ejemplo, los bins pueden estar ubicados en las mismas o similares posiciones de bin dentro de sus palabras de código respectivas.
Descodificar las coordenadas x e y y las coordenadas x e y intercambiadas (o las coordenadas x e y que indican información de posición de último coeficiente significativo para un bloque de datos de vídeo, en general) de esta forma "intercalada" usando bins previamente descodificados como contextos puede permitir usar información mutua de las coordenadas x e y respectivas, lo que puede permitir descodificar las coordenadas de una forma más eficiente.
En otros ejemplos, la unidad de descodificación por entropía 70 puede configurarse para descodificar las coordenadas x e y y las coordenadas x e y intercambiadas de una forma intercalada, en general. En algunos ejemplos, la unidad de descodificación por entropía 70 puede configurarse para descodificar bins individuales de las palabras de código para las coordenadas x e y respectivas de una forma intercalada. En otros ejemplos, la unidad de descodificación por entropía 70 puede configurarse para descodificar grupos de bins de las palabras de código de una forma intercalada. Por ejemplo, algunos bins de una palabra de código para cada una de las coordenadas x e y pueden descodificarse usando un primer modo de codificación (por ejemplo, un modo de codificación regular), mientras que los bins restantes de la palabra de código pueden descodificarse usando un segundo modo de codificación (por ejemplo, un modo de codificación de derivación). En ese sentido, la unidad de descodificación por entropía 70 puede configurarse para descodificar uno o más bins de la palabra de código correspondiente a una de las coordenadas codificadas usando el primer modo de codificación (por ejemplo, regular) antes de descodificar uno o más bins de la palabra de código correspondiente al otro código de coordenadas usando el primer modo de codificación, seguido por descodificar uno o más bins de la palabra de código correspondiente a la coordenada codificada usando el segundo modo de codificación (por ejemplo, de derivación) antes de descodificar uno o más bins de la palabra de código correspondiente a la otra coordenada codificada usando el segundo modo de codificación. En otros ejemplos, la unidad de descodificación por entropía 70 puede configurarse para descodificar los bins de las palabras de código codificadas usando el segundo modo de codificación conjuntamente.
En consecuencia, separar la descodificación de los bins de la palabra de código para cada una de las coordenadas x e y de la forma descrita anteriormente puede permitir agrupar bins descodificados usando un modo de descodificación particular (por ejemplo, modo de derivación) conjuntamente, lo que también puede mejorar la eficiencia de codificación.
En otras palabras, en los casos en los que cada una de las coordenadas x e y y las coordenadas x e y intercambiadas comprenden una secuencia de uno o más bins, la unidad de descodificación por entropía 70 puede configurarse para descodificar las coordenadas x e y y las coordenadas x e y intercambiadas realizando el proceso de codificación por entropía adaptativa al contexto que incluye aplicar el modelo de contexto que incluye las estadísticas basándose en una de las coordenadas x e y y las coordenadas x e y intercambiadas. La unidad de descodificación por entropía 70 puede configurarse para descodificar las coordenadas x e y respectivas descodificando al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada. Además, la unidad de descodificación por entropía 70 puede configurarse para descodificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
En consecuencia, para descodificar la información de posición de último coeficiente significativo, la unidad de descodificación por entropía 70 puede configurarse para descodificar las coordenadas x e y y las coordenadas x e y intercambiadas, de una forma intercalada, usando bins previamente descodificados como contextos. Es decir, la unidad de descodificación por entropía 70 puede configurarse para descodificar cada bin de una palabra de código unaria para una coordenada dada realizando un proceso de codificación por entropía adaptativa al contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del bin dentro de la palabra de código unaria, como se ha descrito previamente, y un valor de uno o más bins previamente descodificados de una palabra de código unaria para la otra coordenada. Adicionalmente, la unidad de codificación por entropía 56 puede configurarse para codificar las coordenadas x e y y las coordenadas x e y intercambiadas de una forma intercalada, en general.
Debería hacerse notar que, en otros ejemplos consistentes con las técnicas de esta divulgación, pueden usarse otros tipos de palabras de código, por ejemplo, palabras de código unarias truncadas, palabras de código de Golomb exponencial, palabras de código concatenados, así como combinaciones de diversas técnicas de codificación.
Debería hacerse notar también que, en algunos ejemplos, la unidad de descodificación por entropía 70 puede configurarse adicionalmente para descodificar las coordenadas x e y cuando el orden de exploración comprende un tercer orden de exploración. Por ejemplo, el tercer orden de exploración puede ser diferente del primer orden de exploración y el segundo orden de exploración. Como un ejemplo, el tercer orden de exploración puede ser un orden de exploración en zigzag, o un orden de exploración diagonal, en donde el orden de exploración en zigzag o diagonal también se origina en la posición común dentro del bloque, por ejemplo, la posición de CC.
En este ejemplo, en algunos casos, la unidad de descodificación por entropía 70 puede configurarse adicionalmente para descodificar información que identifica el orden de exploración, es decir, la información de orden de exploración para el bloque. Como alternativa, como se ha descrito previamente, la unidad de descodificación por entropía 70 puede omitir la descodificación de la información de orden de exploración para el bloque cuando la unidad de descodificación por entropía 70 usa un orden de exploración adaptativa para descodificar el bloque. Adicionalmente, de acuerdo con la invención reivindicada, la unidad de descodificación por entropía 70 está configurada adicionalmente para descodificar información que identifica posiciones de otros coeficientes significativos dentro del bloque, es decir, la información de posición de coeficiente significativo para el bloque.
Por ejemplo, la información de posición de coeficiente significativo para el bloque puede representarse usando una secuencia de indicadores de coeficiente significativo, como se ha descrito previamente. Como también se ha descrito previamente, la información de posición de coeficiente significativo puede descodificarse descodificando cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del indicador dentro del bloque de acuerdo con el orden de exploración.
De nuevo, el modelo de contexto puede incluir estimaciones de probabilidad que indican una probabilidad de que cada indicador comprenda un valor dado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estimaciones de probabilidad usando los valores de los indicadores de coeficiente significativo correspondientes para los bloques de datos de vídeo descodificados previamente. En otros ejemplos, la unidad de descodificación por entropía 70 también puede actualizar las estimaciones de probabilidad usando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor dado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden usarse para descodificar información de posición de coeficiente significativo para bloques descodificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
Como otro ejemplo, la unidad de descodificación por entropía 70 puede configurarse para descodificar coordenadas x e y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo de acuerdo con un orden de exploración asociado al bloque. Por ejemplo, el orden de exploración puede ser uno de una pluralidad de órdenes de exploración, en donde cada uno de la pluralidad de órdenes de exploración se origina en una posición común dentro del bloque, por ejemplo, la posición de Cc .
En este ejemplo, para descodificar las coordenadas x e y, la unidad de descodificación por entropía 70 puede configurarse para descodificar información que indica si la coordenada x corresponde a la posición común, descodificar información que indica si la coordenada y corresponde a la posición común y, en el caso de que la coordenada x no corresponda a la posición común, y la coordenada y no corresponda a la posición común, codificar información que identifica el orden de exploración. La unidad de descodificación por entropía 70 puede configurarse adicionalmente para, en el caso de que la coordenada x no corresponda a la posición común, descodificar la coordenada x basándose en el orden de exploración y, en el caso de que la coordenada y no corresponda a la posición común, descodificar la coordenada y basándose en el orden de exploración.
En este ejemplo, para descodificar la coordenada x y la coordenada y basándose en el orden de exploración, la unidad de descodificación por entropía 70 puede configurarse para realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye la unidad de descodificación por entropía 70 aplicando un modelo de contexto basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir el orden de exploración.
Adicionalmente, como un ejemplo, la unidad de descodificación por entropía 70 puede configurarse para descodificar una coordenada (por ejemplo, la coordenada y) después de otra coordenada (por ejemplo, la coordenada x), en donde la unidad de descodificación por entropía 70 puede configurarse para descodificar una coordenada usando un valor de la otra coordenada previamente descodificada como un contexto. Como otro ejemplo, en donde cada una de las coordenadas x e y comprende una secuencia de uno o más bins, la unidad de descodificación por entropía 70 puede configurarse para descodificar al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basándose al menos en parte en un valor de al menos un bin, por ejemplo, un bin correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de descodificación por entropía 70 puede configurarse para descodificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
En cualquier caso, después de descodificar la información de posición de último coeficiente significativo y, en algunos casos, la información de orden de exploración y la información de posición de coeficiente significativo, es decir, los datos de SM, para el bloque de la forma descrita anteriormente, la unidad de descodificación por entropía 70 puede descodificar también el valor de cada coeficiente significativo (por ejemplo, la magnitud y el signo de cada coeficiente significativo, indicado por los elementos de sintaxis "coeff_abs_level_minus1" y "coeff_sign_flag", respectivamente) dentro del bloque.
En consecuencia, las técnicas de esta divulgación pueden posibilitar que la unidad de descodificación por entropía 70 descodifique la información de posición de último coeficiente significativo para el bloque de una forma más eficiente que cuando se usan otros métodos, y puede posibilitar que la unidad de descodificación por entropía 70 tenga menos complejidad en relación con otros sistemas. De esta forma, puede haber un ahorro de bits relativo para un flujo de bits codificado que incluye la información de posición de último coeficiente significativo, y una reducción relativa de la complejidad para la unidad de descodificación por entropía 70 usada para descodificar la información, cuando se usan las técnicas de esta divulgación.
La unidad de compensación de movimiento 72 puede usar vectores de movimiento recibidos en el flujo de bits para identificar un bloque de predicción en tramas de referencia en la memoria 82. El módulo de intra predicción 74 puede usar modos de intra predicción recibidos en el flujo de bits para formar un bloque de predicción a partir de bloques espacialmente adyacentes.
El módulo de intra predicción 74 puede usar una indicación de un modo de intra predicción para el bloque codificado para intra predecir el bloque codificado, por ejemplo, usando píxeles de bloques vecinos descodificados previamente. Para ejemplos en los que el bloque se codifica en modo de inter predicción, la unidad de compensación de movimiento 72 puede recibir información que define un vector de movimiento, para recuperar datos de predicción compensados por movimiento para el bloque codificado. En cualquier caso, la unidad de compensación de movimiento 72 o el módulo de intra predicción 74 pueden proporcionar información que define un bloque de predicción para el sumador 80.
La unidad de cuantificación inversa 76 cuantifica inversamente, es decir, descuantifica, los coeficientes de bloque cuantificados proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 70. El proceso de cuantificación inversa puede incluir un proceso convencional, por ejemplo, como se define mediante la norma de descodificación H.264 o como se realiza mediante el modelo de prueba de HEVC. El proceso de cuantificación inversa también puede incluir el uso de un parámetro de cuantificación QPy calculado por el codificador de vídeo 20 para cada bloque para determinar un grado de cuantificación y, de forma similar, un grado de cuantificación inversa que debería aplicarse.
El módulo de transformada inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de números enteros inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de los píxeles. La unidad de compensación de movimiento 72 produce bloques compensados por movimiento, posiblemente realizando una interpolación basándose en filtros de interpolación. Los identificadores para los filtros de interpolación que van a usarse para la estimación de movimiento con precisión de subpíxeles pueden incluirse en los elementos de sintaxis. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como se usan por el codificador de vídeo 20 durante la codificación del bloque de vídeo para calcular valores interpolados para píxeles subenteros de un bloque de referencia. La unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 de acuerdo con la información de sintaxis recibida y usar los filtros de interpolación para producir bloques predictivos.
La unidad de compensación de movimiento 72 usa parte de la información de sintaxis para el bloque codificado para determinar los tamaños de los bloques usados para codificar trama(s) de la secuencia de vídeo codificada, información de subdivisión que describe cómo se subdivide cada bloque de una trama o segmento de la secuencia de vídeo codificada, modos que indican cómo se codifica cada subdivisión, una o más tramas de referencia (y listas de tramas de referencia) para cada subdivisión o bloque inter codificado, y otra información para descodificar la secuencia de vídeo codificada. El módulo de intra predicción 74 también puede usar la información de sintaxis para el bloque codificado para intra predecir el bloque codificado, por ejemplo, usando píxeles de bloques vecinos, descodificados previamente, como se ha descrito previamente.
El sumador 80 suma los bloques residuales con los bloques de predicción correspondientes generados por la unidad de compensación de movimiento 72 o el módulo de intra predicción 74 para formar bloques descodificados. Si se desea, puede aplicarse también un filtro de desbloqueo para filtrar los bloques descodificados para retirar artefactos de bloqueo. Los bloques de vídeo descodificados se almacenan entonces en la memoria 82, que proporciona bloques de referencia para la compensación de movimiento subsiguiente y también produce vídeo descodificado para su presentación en un dispositivo de visualización (tal como el dispositivo de visualización 32 de la figura 1).
De esta forma, el descodificador de vídeo 30 representa un ejemplo de un codificador de vídeo configurado para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
Las figuras 4A-4C son diagramas conceptuales que ilustran un ejemplo de un bloque de datos de vídeo, e información de posición de coeficiente significativo e información de posición de último coeficiente significativo correspondientes. Como se muestra en la figura 4A, un bloque de datos de vídeo, por ejemplo, un macrobloque, o una TU de una CU, puede incluir coeficientes de transformada cuantificados. Por ejemplo, como se muestra en la figura 4A, el bloque 400 puede incluir coeficientes de transformada cuantificados generados usando técnicas de predicción, de transformada y de cuantificación descritas previamente. Supóngase, para este ejemplo, que el bloque 400 tiene un tamaño de 2N x 2N, en donde N es igual a dos. En consecuencia, el bloque 400 tiene un tamaño de 4 x 4 e incluye dieciséis coeficientes de transformada cuantificados, como también se muestra en la figura 4A. Supóngase adicionalmente que el orden de exploración asociado al bloque 400 es el orden de exploración en zigzag, como se muestra en la figura 5A descrita con mayor detalle a continuación.
En este ejemplo, un último coeficiente significativo dentro del bloque 400 de acuerdo con el orden de exploración en zigzag es un coeficiente de transformada cuantificado igual a "1", ubicado en la posición 406 dentro del bloque 400. En otros ejemplos, como se ha descrito anteriormente, un bloque puede tener un tamaño que sea más pequeño o más grande que el tamaño del bloque 400, y puede incluir más o menos coeficientes de transformada cuantificados que el bloque 400. En otros ejemplos más, el orden de exploración asociado al bloque 400 puede ser un orden de exploración diferente, por ejemplo, un orden de exploración horizontal, un orden de exploración vertical, un orden de exploración diagonal u otro orden de exploración.
La figura 4B ilustra un ejemplo de datos de indicadores de coeficiente significativo, es decir, indicadores de coeficiente significativo representados en forma de mapa o de bloque, como se ha descrito previamente. En el ejemplo de la figura 4B, el bloque 402 puede corresponder al bloque 400 representado en la figura 4A. En otras palabras, los indicadores de coeficiente significativo del bloque 402 pueden corresponder a los coeficientes de transformada cuantificados del bloque 400. Como se muestra en la figura 4B, los indicadores de coeficiente significativo del bloque 402 que son iguales a "1" corresponden a coeficientes significativos del bloque 400. De forma similar, los indicadores de coeficiente significativo del bloque 402 que son iguales a "0" corresponden a coeficientes nulos o no significativos del bloque 400.
En este ejemplo, un indicador de coeficiente significativo del bloque 402 correspondiente al último coeficiente significativo dentro del bloque 400 de acuerdo con el orden de exploración en zigzag es un indicador de coeficiente significativo igual a "1", ubicado en la posición 408 dentro del bloque 402. En otros ejemplos, los valores de los indicadores de coeficiente significativo usados para indicar coeficientes significativos o no significativos pueden variar (por ejemplo, indicadores de coeficiente significativo iguales a "0" pueden corresponder a coeficientes significativos, e indicadores de coeficiente significativo iguales a "1" pueden corresponder a coeficientes no significativos).
La figura 4C ilustra un ejemplo de datos de indicadores de último coeficiente significativo, es decir, indicadores de último coeficiente significativo representados en forma de mapa o de bloque, como también se ha descrito previamente. En el ejemplo de la figura 4C, el bloque 404 puede corresponder al bloque 400 y al bloque 402 representados en la figura 4A y en la figura 4B, respectivamente. En otras palabras, los indicadores de último coeficiente significativo del bloque 404 pueden corresponder a los coeficientes de transformada cuantificados del bloque 400, y a los indicadores de coeficiente significativo del bloque 402.
Como se muestra en la figura 4C, el indicador de último coeficiente significativo del bloque 404 que es igual a "1", ubicado en la posición 410 dentro del bloque 404, corresponde a un último coeficiente significativo del bloque 400, y al último de los indicadores de coeficiente significativo del bloque 402 que son iguales a "1", de acuerdo con el orden de exploración en zigzag. De forma similar, los indicadores de último de coeficiente significativo del bloque 404 que son iguales a "0" (es decir, todos los indicadores de último coeficiente significativo restantes) corresponden a coeficientes nulos o no significativos del bloque 400, y a todos los indicadores de coeficiente significativo del bloque 402 que son iguales a "1" aparte del último de tales indicadores de coeficiente significativo de acuerdo con el orden de exploración en zigzag.
Los valores de los indicadores de último coeficiente significativo usados para indicar un último coeficiente significativo de acuerdo con un orden de exploración pueden variar (por ejemplo, un indicador de último coeficiente significativo igual a "0" puede corresponder a un último coeficiente significativo de acuerdo con el orden de exploración, y los indicadores de coeficiente significativo igual a "1" pueden corresponder a todos los coeficientes restantes). En cualquier caso, los indicadores de coeficiente significativo del bloque 402, y los indicadores de último coeficiente significativo del bloque 404, pueden denominarse colectivamente datos de SM para el bloque 400.
Como se ha descrito anteriormente, la información de posición de coeficiente significativo para un bloque de datos de vídeo puede indicarse serializando indicadores de coeficiente significativo para el bloque a partir de una representación en bloque bidimensional, como se representa en el bloque 402 mostrado en la figura 4B, para dar una matriz unidimensional, usando un orden de exploración asociado al bloque. En el ejemplo de los bloques 400-402 mostrados en las figuras 4A-4B, suponiendo de nuevo el orden de exploración en zigzag, la información de posición de coeficiente significativo para el bloque 400 puede indicarse serializando los indicadores de coeficiente significativo del bloque 402 para dar una matriz unidimensional. Es decir, la información de posición de coeficiente significativo para el bloque 400 puede indicarse generando una secuencia de indicadores de coeficiente significativo del bloque 402 de acuerdo con el orden de exploración en zigzag.
En este ejemplo, la secuencia generada puede corresponder a un valor "111111", que representa los primeros 6 indicadores de coeficiente significativo del bloque 402 de acuerdo con el orden de exploración en zigzag. Debería hacerse notar que la secuencia generada puede contener indicadores de coeficiente significativo correspondientes a un rango de posiciones de bloque dentro del bloque 400, empezando desde una primera posición del bloque en el orden de exploración en zigzag (es decir, la posición de CC) y terminando con una posición de bloque correspondiente al último coeficiente significativo del bloque 400 de acuerdo con el orden de exploración en zigzag (es decir, correspondiente al indicador de último coeficiente significativo igual a "1" del bloque 404).
Como también se ha descrito anteriormente, la información de posición de último coeficiente significativo para el bloque puede indicarse serializando indicadores de último coeficiente significativo para el bloque a partir de una representación en bloque bidimensional, como se representa en el bloque 404 mostrado en la figura 4C, para dar una matriz unidimensional, usando un orden de exploración asociado al bloque. En el ejemplo de los bloques 400-404 mostrados en las figuras 4A-4C, suponiendo de nuevo el orden de exploración en zigzag, la información de posición de último coeficiente significativo para el bloque 400 puede indicarse serializando los indicadores de último coeficiente significativo del bloque 404 para dar una matriz unidimensional. Es decir, la información de posición de último coeficiente significativo para el bloque 400 puede indicarse generando una secuencia de indicadores de último coeficiente significativo del bloque 404 de acuerdo con el orden de exploración en zigzag. En este ejemplo, la secuencia generada puede corresponder a un valor "000001", que representa los primeros 6 indicadores de último coeficiente significativo del bloque 404 de acuerdo con el orden de exploración en zigzag.
Una vez más, debería hacerse notar que la secuencia generada puede contener indicadores de último coeficiente significativo correspondientes a un rango de posiciones de bloque dentro del bloque 400, empezando desde la primera posición del bloque en el orden de exploración en zigzag, y terminando con la posición de bloque correspondiente al último coeficiente significativo del bloque 400 de acuerdo con el orden de exploración en zigzag (es decir, correspondiente al indicador de último coeficiente significativo igual a "1" del bloque 404). En consecuencia, en este ejemplo, no se incluye en la secuencia ningún indicador de último coeficiente significativo a continuación del indicador de último coeficiente significativo igual a "1" de acuerdo con el orden de exploración en zigzag. En términos generales, los indicadores de último coeficiente significativo después de un indicador de último coeficiente significativo igual a "1" de acuerdo con un orden de exploración asociado a un bloque de datos de vídeo pueden no ser necesarios para indicar información de posición de último coeficiente significativo para el bloque. En ese sentido, en algunos ejemplos, estos indicadores se omiten de la secuencia generada de los indicadores de último coeficiente significativo usados para indicar la información.
También debería hacerse notar que, como se ha descrito anteriormente, si el último coeficiente significativo se ubica dentro de una última posición de bloque de acuerdo con el orden de exploración (por ejemplo, la posición del bloque inferior derecha), la secuencia generada puede no incluir un indicador de último coeficiente significativo correspondiente a la última posición del bloque, debido a que puede deducirse que la posición contiene el último coeficiente significativo para el bloque. En consecuencia, en este ejemplo, la secuencia generada puede corresponder a un valor "000000000000000", en donde el indicador de último coeficiente significativo correspondiente a la última posición del bloque no se incluye en la secuencia, y se deduce que es igual a "1".
Las figuras 5A-5C son diagramas conceptuales que ilustran ejemplos de bloques de datos de vídeo explorados usando un orden de exploración en zigzag, un orden de exploración horizontal y un orden de exploración vertical, respectivamente. Como se muestra en las figuras 5A-5C, un bloque de 8 x 8 de datos de vídeo, por ejemplo, un macrobloque, o una TU de una CU, puede incluir sesenta y cuatro coeficientes de transformada cuantificados en unas posiciones de bloque correspondientes, indicadas con círculos. Por ejemplo, los bloques 500-504 pueden incluir cada uno sesenta y cuatro coeficientes de transformada cuantificados generados usando las técnicas de predicción, de transformada y de cuantificación descritas previamente, de nuevo, en donde cada posición del bloque correspondiente se ha indicado con un círculo. Supóngase, para este ejemplo, que los bloques 500-504 tienen un tamaño de 2N x 2N, en donde N es igual a cuatro. En consecuencia, los bloques 500-504 tienen un tamaño de 8 x 8.
Como se muestra en la figura 5A, el orden de exploración asociado al bloque 500 es el orden de exploración en zigzag. El orden de exploración en zigzag explora coeficientes de transformada cuantificados del bloque 500 de una forma en diagonal, como se indica mediante las flechas en la figura 5A. De forma similar, como se muestra en las figuras 5B y 5C, los órdenes de exploración asociados a los bloques 502 y 504 son el orden de exploración horizontal y el orden de exploración vertical, respectivamente. El orden de exploración horizontal explora los coeficientes de transformada cuantificados del bloque 502 de una forma línea a línea horizontal, o "de exploración por filas", mientras que el orden de exploración vertical explora los coeficientes de transformada cuantificados del bloque 504 de una forma línea a línea vertical, o "de exploración por filas rotada", también como se indica mediante las flechas en las figuras 5B y 5C.
En otros ejemplos, como se ha descrito anteriormente, un bloque puede tener un tamaño que sea más pequeño o más grande que el tamaño de los bloques 500-504, y puede incluir más o menos coeficientes de transformada cuantificados y posiciones de bloque correspondientes. En estos ejemplos, un orden de exploración asociado al bloque puede explorar los coeficientes de transformada cuantificados del bloque de una forma substancialmente similar a la mostrada en los ejemplos de bloques de 8 x 8500-504 de las figuras 5A-5C, por ejemplo, puede explorarse un bloque de 4 x 4, o un bloque de 16 x 16, siguiendo cualquiera de los órdenes de exploración descritos previamente.
Como se ha descrito previamente, las técnicas de esta divulgación también pueden aplicarse con respecto a una amplia diversidad de otros órdenes de exploración, incluyendo orden de exploración diagonal, órdenes de exploración que sean combinaciones de exploraciones en zigzag, horizontal, vertical y/o diagonal, así como órdenes de exploración que sean parcialmente en zigzag, parcialmente horizontal, parcialmente vertical y/o parcialmente diagonal. Además, las técnicas de esta divulgación también pueden considerar un orden de exploración que sea por sí mismo adaptativo basándose en estadísticas asociadas a bloques de datos de vídeo codificados previamente (por ejemplo, bloques que tienen el mismo tamaño de bloque o modo de codificación que el bloque actual que se está codificando). Por ejemplo, un orden de exploración adaptativo podría ser el orden de exploración asociado a un bloque de datos de vídeo, en algunos casos.
Las figuras 6A-6C son diagramas conceptuales que ilustran ejemplos de bloques de datos de vídeo para los cuales se codifica información de posición de último coeficiente significativo basándose en información de orden de exploración, consistente con las técnicas de esta divulgación. Como se muestra en la figura 6A, el bloque 600 puede incluir dieciséis posiciones de bloque ordenadas de 0 a 15 de acuerdo con el orden de exploración horizontal, como se indica mediante las flechas, y como se ha descrito anteriormente con referencia a la figura 5B. Cada una de las dieciséis posiciones de bloque puede contener un coeficiente de transformada cuantificado, como se ha descrito anteriormente con referencia a la figura 4A. Como también se muestra en la figura 6A, una tercera posición dentro del bloque 600 de acuerdo con el orden de exploración horizontal, correspondiente a la posición "2", puede denominarse posición 606. En este ejemplo, la posición 606 puede representarse usando las coordenadas x e y (2, 0), en donde la coordenada x es igual a "2", la coordenada y es igual a "0" y una posición de referencia, u "origen", correspondiente a las coordenadas x e y (0, 0), se ubica en la esquina superior izquierda del bloque 600, es decir, la posición de CC, como se ha descrito anteriormente. Supóngase para este ejemplo que la posición 606 corresponde a una posición de un último coeficiente significativo dentro del bloque 600 de acuerdo con el orden de exploración horizontal.
Supóngase adicionalmente que, para el bloque 600, existen estadísticas que indican una probabilidad de una posición dada dentro del bloque 600 correspondiente a la posición del último coeficiente significativo dentro del bloque 600 de acuerdo con el orden de exploración horizontal. En particular, las estadísticas pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración horizontal, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar una probabilidad de que cada una de las coordenadas x e y (2, 0) que se han descrito previamente comprendan un valor dado.
Además, en algunos ejemplos, las coordenadas x e y pueden codificarse basándose en las estadísticas, por ejemplo, realizando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y y el orden de exploración. En este ejemplo, el orden de exploración, por ejemplo, el orden de exploración horizontal, puede usarse para seleccionar el modelo de contexto particular que incluye las estadísticas. Adicionalmente, en los casos en los que una coordenada (por ejemplo, la coordenada y) se codifica después de otra coordenada (por ejemplo, la coordenada x), la coordenada puede codificarse usando un valor de la otra coordenada previamente codificada como un contexto. Es decir, puede usarse un valor de una previamente codificada de las coordenadas x e y para seleccionar adicionalmente estadísticas dentro del modelo de contexto que indiquen una probabilidad de que la otra coordenada actualmente codificada comprenda un valor dado.
Adicionalmente, en algunos ejemplos, las coordenadas x e y pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins, es decir, "binarizada". En ese sentido, para codificar las coordenadas x e y basándose en las estadísticas, cada bin de una palabra de código correspondiente a una determinada coordenada puede codificarse realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código.
Como se muestra adicionalmente en la figura 6B, el bloque 602 también puede incluir dieciséis posiciones de bloque, una vez más ordenadas de 0 a 15, aunque, en este caso, de acuerdo con un orden de exploración vertical, como se indica mediante las flechas, y como se ha descrito anteriormente con referencia a la figura 5C. Cada una de las dieciséis posiciones de bloque puede contener un coeficiente de transformada cuantificado, como se ha descrito anteriormente con referencia a la figura 4A. Como también se muestra en la figura 6B, una tercera posición dentro del bloque 602 de acuerdo con el orden de exploración vertical, correspondiente a la posición "2", puede denominarse posición 608. En este ejemplo, la posición 608 puede representarse usando las coordenadas x e y (0, 2), en donde la coordenada x es igual a "0", la coordenada y es igual a "2" y una posición de referencia, u "origen", correspondiente a las coordenadas x e y (0, 0), se ubica una vez más en la esquina superior izquierda del bloque 602, es decir, la posición de CC, como se ha descrito anteriormente. Supóngase para este ejemplo que la posición 608 corresponde una vez más a una posición de un último coeficiente significativo dentro del bloque 602 de acuerdo con el orden de exploración vertical.
En los ejemplos de las figuras 6A-6B, el orden de exploración horizontal del bloque 600 puede ser simétrico con respecto al orden de exploración vertical del bloque 602, de tal modo que la probabilidad de que la coordenada x, "2", de la posición del último coeficiente significativo dentro del bloque 600 de acuerdo con el orden de exploración horizontal comprenda un valor dado puede ser igual o similar a la probabilidad de que la coordenada y, "2", de la posición del último coeficiente significativo dentro del bloque 602 de acuerdo con el orden de exploración vertical comprenda el mismo valor, y viceversa. De forma similar, la probabilidad de que la coordenada y, "0", de la posición del último coeficiente significativo dentro del bloque 600 de acuerdo con el orden de exploración horizontal comprenda un valor dado puede ser igual o similar a la probabilidad de que la coordenada x, "0", de la posición del último coeficiente significativo dentro del bloque 602 de acuerdo con el orden de exploración vertical comprenda el mismo valor, y viceversa. Es decir, las coordenadas x e y (2, 0) de la posición 606 dentro del bloque 600 pueden tener cada una la misma o similar probabilidad de comprender un valor dado que las coordenadas x e y (0, 2) intercambiadas de la posición 608 dentro del bloque 602, respectivamente. Como se indica mediante la flecha de trazo discontinuo en la figura 6B, las coordenadas x e y intercambiadas (0, 2) de la posición 608 dentro del bloque 602 pueden corresponder a la posición 610 dentro del bloque 602, que puede representarse usando las coordenadas x e y (2, 0).
En ese sentido, de acuerdo con las técnicas de esta divulgación, las estadísticas comunes que indican la probabilidad de una posición dada dentro del bloque 600 correspondiente a la posición del último coeficiente significativo dentro del bloque 600 de acuerdo con el orden de exploración horizontal pueden usarse para codificar las coordenadas x e y (2, 0) de la posición 606 dentro del bloque 600, así como las coordenadas x e y intercambiadas (0, 2) de la posición 608 dentro del bloque 602, como se ha descrito previamente.
Como se muestra adicionalmente en la figura 6C, el bloque 604 también puede incluir dieciséis posiciones de bloque, una vez más ordenadas de 0 a 15, aunque, en este caso, de acuerdo con un orden de exploración en zigzag, como se indica mediante las flechas, y como se ha descrito anteriormente con referencia a la figura 5A. Cada una de las dieciséis posiciones de bloque puede contener un coeficiente de transformada cuantificado, como se ha descrito anteriormente con referencia a la figura 4A. Como también se muestra en la figura 6C, una tercera posición dentro del bloque 604 de acuerdo con el orden de exploración en zigzag, correspondiente a la posición "2", puede denominarse posición 612. En este ejemplo, la posición 612 puede representarse usando las coordenadas x e y (0, 1), en donde la coordenada x es igual a "0", la coordenada y es igual a "1" y una posición de referencia, u "origen", correspondiente a las coordenadas x e y (0, 0), se ubica una vez más en la esquina superior izquierda del bloque 604, es decir, la posición de CC, como se ha descrito anteriormente. Supóngase para este ejemplo que la posición 612 corresponde una vez más a una posición de un último coeficiente significativo dentro del bloque 604 de acuerdo con el orden de exploración en zigzag.
En el ejemplo de la figura 6C, el orden de exploración en zigzag del bloque 604 puede no ser simétrico con respecto a los órdenes de exploración horizontal o vertical de los bloques 600 y 602, respectivamente. En ese sentido, la identidad o similitud de probabilidades descrita anteriormente puede no existir entre las coordenadas x e y correspondientes a la posición del último coeficiente significativo dentro del bloque 600 o el bloque 602, y las coordenadas x e y correspondientes a la posición del último coeficiente significativo dentro del bloque 604. Sin embargo, las coordenadas x e y correspondientes a la posición del último coeficiente significativo dentro de los bloques 604 pueden codificarse usando las estadísticas comunes descritas anteriormente con referencia a los ejemplos de las figuras 6A-6B. Por ejemplo, aunque usar las estadísticas comunes para codificar las coordenadas x e y puede no reflejar de forma precisa la probabilidad de que las coordenadas respectivas comprendan valores particulares, codificar las coordenadas de esta forma puede mejorar la eficiencia de codificación usando las estadísticas comunes, en lugar de estadísticas separadas, reduciendo de ese modo potencialmente la complejidad de sistema, como se ha descrito previamente.
La figura 7 es un diagrama de flujo que ilustra un ejemplo de un método para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación. Las técnicas de la figura 7 pueden realizarse, en general, mediante cualquier unidad de procesamiento o procesador, ya se implemente en hardware, software, firmware o una combinación de los mismos y, cuando se implementa en software o firmware, puede proporcionarse hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 7 se describen con respecto al codificador de vídeo 20 (las figuras 1 y 2) y/o al descodificador de vídeo 30 (las figuras 1 y 3), aunque debería entenderse que pueden configurarse otros dispositivos para realizar técnicas similares. Además, las etapas ilustradas en la figura 7 pueden realizarse en un orden diferente o en paralelo, y pueden añadirse etapas adicionales y omitirse ciertas etapas, sin apartarse de las técnicas de esta divulgación.
Inicialmente, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar si un orden de exploración asociado a un bloque de datos de vídeo es un primer orden de exploración o un segundo orden de exploración (700). Por ejemplo, el bloque puede ser un macrobloque, o una TU de una CU, como se ha descrito previamente. Además, el primer orden de exploración y el segundo orden de exploración pueden ser simétricos uno con respecto a otro (o al menos parcialmente simétricos). Por ejemplo, el primer orden de exploración puede ser un orden de exploración horizontal y el segundo orden de exploración puede ser un orden de exploración vertical, en donde el orden de exploración horizontal y el orden de exploración vertical se originan en una posición común dentro del bloque, la posición de CC, como también se ha descrito previamente.
Específicamente, el primer orden de exploración y el segundo orden de exploración pueden ser, cada uno, un orden de exploración que puede ser usado por el codificador de vídeo 20 y/o el descodificador de vídeo 30 para codificar el bloque. Por ejemplo, el primer y el segundo órdenes de exploración pueden ser órdenes de exploración usados por el codificador de vídeo 20 para codificar bloques de datos de vídeo, y por descodificador de vídeo 30 para descodificar los bloques, dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el descodificador de vídeo 30. En algunos ejemplos, el primer y el segundo órdenes de exploración pueden ser solo algunos de los órdenes de exploración usados dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo órdenes de exploración pueden ser los únicos órdenes de exploración usados dentro del sistema 10 para codificar los bloques. De esta forma, el método de ejemplo de la figura 7 puede ser aplicable a cualquier sistema de codificación que use una pluralidad de órdenes de exploración para codificar bloques de datos de vídeo.
El codificador de vídeo 20 puede realizar la determinación si el orden de exploración es el primer orden de exploración o el segundo orden de exploración directamente, por ejemplo, como parte de la codificación del bloque. El descodificador de vídeo 30 puede hacer esta determinación descodificando información de orden de exploración para el bloque. Por ejemplo, el codificador de vídeo 20 puede codificar la información de orden de exploración como se describe con mayor detalle en el método de ejemplo de la figura 8, y el descodificador de vídeo 30 puede descodificar la información, como también se describe con mayor detalle en el método de ejemplo de la figura 9.
En el caso de que el orden de exploración sea el primer orden de exploración (702), el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar adicionalmente coordenadas x e y que indican una posición de un último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración (704), es decir, la información de posición de último coeficiente significativo para el bloque. Sin embargo, en el caso de que el orden de exploración sea el segundo orden de exploración (702), el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden, en su lugar, codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración (706). En este ejemplo, las coordenadas x e y intercambiadas también corresponden a la información de posición de último coeficiente significativo para el bloque, pero son procesadas adicionalmente, es decir, son intercambiadas, por el codificador de vídeo 20 y/o el descodificador de vídeo 30 para posibilitar codificar la información de una forma más eficiente que cuando se usan otras técnicas, como se ha descrito previamente. Específicamente, las coordenadas x e y intercambiadas pueden posibilitar usar estadísticas comunes para codificar las coordenadas x e y y las coordenadas x e y intercambiadas que indican la información de posición de último coeficiente significativo para el bloque, como también se ha descrito previamente. En cualquier caso, la información de posición de último coeficiente significativo para el bloque, ya se represente usando las coordenadas x e y, o las coordenadas x e y intercambiadas, puede codificarse en el caso del codificador de vídeo 20, y descodificarse en el caso de descodificador de vídeo 30.
Para codificar las coordenadas x e y y las coordenadas x e y intercambiadas, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar adicionalmente estadísticas que indican una probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración. En particular, las estadísticas pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar una probabilidad de que cada una de las coordenadas x e y que se han descrito previamente comprendan un valor dado.
Debido a que el primer y el segundo órdenes de exploración pueden ser simétricos (o al menos parcialmente simétricos) uno con respecto a otro, la probabilidad de que la coordenada x comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada y comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. De forma similar, la probabilidad de que la coordenada y comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada x comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. Es decir, cada una de las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración puede tener la misma o similar probabilidad de comprender un valor dado que las coordenadas x e y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. En ese sentido, las estadísticas pueden indicar adicionalmente la probabilidad de que cada una de las coordenadas x e y intercambiadas comprenda un valor dado. En algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar las estadísticas usando información de posición de último coeficiente significativo para bloques de datos de vídeo previamente codificados, por ejemplo, valores de coordenadas x e y y coordenadas x e y intercambiadas para los bloques codificados previamente.
En este ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas de tal modo que la probabilidad de que la coordenada x comprenda un valor dado se usa para codificar la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado se usa para codificar la coordenada y y la coordenada x intercambiada. Además, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden actualizar las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas para reflejar la probabilidad de que las coordenadas respectivas comprendan valores particulares. En este ejemplo, la probabilidad de que la coordenada x comprenda un valor dado puede actualizarse usando la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado puede actualizarse usando la coordenada y la coordenada x intercambiadas. Por ejemplo, las estadísticas actualizadas pueden usarse para codificar información de posición de último coeficiente significativo para bloques codificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
En algunos ejemplos, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y, las coordenadas x e y intercambiadas, y el orden de exploración. En este ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden usar el orden de exploración, por ejemplo, el orden de exploración horizontal o vertical, para seleccionar el modelo de contexto particular que incluye las estadísticas. Es decir, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden seleccionar las mismas estadísticas para codificar las coordenadas x e y cuando se usa el primer orden de exploración para codificar el bloque, y para codificar las coordenadas x e y intercambiadas cuando se usa el segundo orden de exploración para codificar el bloque.
Además, en los casos en los que una coordenada (por ejemplo, la coordenada y) se codifica después de otra coordenada (por ejemplo, la coordenada x), el codificador de vídeo 20 y/o el descodificador 30 pueden codificar la coordenada usando un valor de la otra coordenada previamente codificada como un contexto. Es decir, puede usarse un valor de una de las coordenadas x e y previamente codificadas o las coordenadas x e y intercambiadas, dependiendo del orden de exploración usado para codificar el bloque, para seleccionar estadísticas adicionales dentro del modelo de contexto que indican una probabilidad de que la otra coordenada actualmente codificada comprenda un valor dado. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden usar entonces las estadísticas seleccionadas para codificar las coordenadas x e y y las coordenadas x e y intercambiadas realizando el proceso de codificación por entropía adaptativa al contexto.
En este ejemplo, las coordenadas x e y y las coordenadas x e y intercambiadas pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bits, o bins, es decir, binarizada. En ese sentido, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar cada bin de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código. En algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar las estimaciones de probabilidad usando valores de los bins correspondientes para bloques de datos de vídeo codificados previamente, por ejemplo, bins de palabras de código correspondientes a coordenadas x e y y coordenadas x e y intercambiadas para los bloques codificados previamente, por ejemplo, como parte de la determinación de las estadísticas basándose en la información de posición de último coeficiente significativo para los bloques codificados previamente, como se ha descrito previamente. En otros ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 también pueden actualizar las estimaciones de probabilidad usando el valor de cada bin, por ejemplo, como parte de la actualización de las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, como también se ha descrito previamente. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden usar las estimaciones de probabilidad para codificar cada bin realizando el proceso de codificación por entropía adaptativa al contexto.
Como otro ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar las coordenadas x e y y las coordenadas x e y intercambiadas codificando al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas desde el modelo de contexto basándose al menos en parte en un valor de al menos un bin, por ejemplo, un bin correspondiente, de la secuencia correspondiente a la otra coordenada. Además, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
Por último, en algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de acuerdo con el orden de exploración (708), es decir, la información de posición de coeficiente significativo para el bloque. Por ejemplo, la información de posición de coeficiente significativo para el bloque puede representarse usando una secuencia de indicadores de coeficiente significativo, como se ha descrito previamente. Como también se ha descrito previamente, la información de posición de coeficiente significativo puede codificarse codificando cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del indicador dentro del bloque de acuerdo con el orden de exploración.
En este ejemplo, el modelo de contexto puede incluir estimaciones de probabilidad que indican una probabilidad de que cada indicador comprenda un valor dado (por ejemplo, "0" o "1"). En algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar las estimaciones de probabilidad usando los valores de los indicadores de coeficiente significativo correspondientes para los bloques de datos de vídeo codificados previamente. En otros ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 también pueden actualizar las estimaciones de probabilidad usando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor dado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden usarse para codificar información de posición de coeficiente significativo para bloques codificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
De esta forma, el método de la figura 7 representa un ejemplo de un método para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
La figura 8 es un diagrama de flujo que ilustra un ejemplo de un método para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación. Las técnicas de la figura 8 pueden realizarse, en general, mediante cualquier unidad de procesamiento o procesador, ya se implemente en hardware, software, firmware o una combinación de los mismos y, cuando se implementa en software o firmware, puede proporcionarse hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 8 se describen con respecto a la unidad de codificación por entropía 56 (la figura 2), aunque debería entenderse que pueden configurarse otros dispositivos para realizar técnicas similares. Además, las etapas ilustradas en la figura 8 pueden realizarse en un orden diferente o en paralelo, y pueden añadirse etapas adicionales y omitirse ciertas etapas, sin apartarse de las técnicas de esta divulgación.
Inicialmente, la unidad de codificación por entropía 56 puede recibir un bloque de datos de vídeo (800). Por ejemplo, el bloque puede ser un macrobloque, o una TU de una CU, como se ha descrito previamente. La unidad de codificación por entropía 56 puede determinar adicionalmente coordenadas x e y que indican una posición de un último coeficiente significativo dentro del bloque de acuerdo con un orden de exploración asociado al bloque (802), es decir, la información de posición de último coeficiente significativo para el bloque. Por ejemplo, el orden de exploración puede ser un orden de exploración usado por la unidad de codificación por entropía 56 para codificar el bloque, y puede ser uno de una pluralidad de órdenes de exploración que se originan en una posición común dentro del bloque, como se ha descrito previamente. Como también se ha descrito previamente, la posición común puede corresponder a la posición de Cc . Además, las coordenadas x e y pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins.
La unidad de codificación por entropía 56 puede determinar adicionalmente si el orden de exploración es un primer orden de exploración o un segundo orden de exploración (804). Por ejemplo, el primer y el segundo órdenes de exploración pueden ser órdenes de exploración que pueden ser usados por la unidad de codificación por entropía 56 para codificar bloques de datos de vídeo dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el descodificador de vídeo 30, como se ha descrito previamente. En algunos ejemplos, el primer y el segundo órdenes de exploración pueden ser solo algunos de los órdenes de exploración que pueden usarse dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo órdenes de exploración pueden ser los únicos órdenes de exploración usados dentro del sistema 10 para codificar los bloques. Como se ha descrito previamente, el primer y el segundo órdenes de exploración pueden ser simétricos uno con respecto a otro (o al menos parcialmente simétricos). Por ejemplo, el primer orden de exploración puede ser el orden de exploración horizontal, y el segundo orden de exploración puede ser el orden de exploración vertical. La unidad de codificación por entropía 56 puede realizar la determinación si el orden de exploración es el primer orden de exploración o el segundo orden de exploración directamente, por ejemplo, como parte de la codificación del bloque.
En el caso de que el orden de exploración es el primer orden de exploración (806), la unidad de codificación por entropía 56 puede codificar adicionalmente las coordenadas x e y (808). Sin embargo, en el caso de en el orden exploración es el segundo orden de exploración (806), la unidad de codificación por entropía 56 puede, en su lugar, intercambiar las coordenadas x e y y codificar las coordenadas x e y intercambiadas (810). Como se ha descrito previamente, las coordenadas x e y intercambiadas también corresponden a la información de posición de último coeficiente significativo para el bloque, pero son procesadas adicionalmente, es decir, son intercambiadas, por la unidad de codificación por entropía 56 para posibilitar codificar la información de una forma más eficiente que cuando se usan otras técnicas. Específicamente, las coordenadas x e y intercambiadas pueden posibilitar usar estadísticas comunes para codificar las coordenadas x e y y las coordenadas x e y intercambiadas que indican la información de posición de último coeficiente significativo para el bloque, como también se ha descrito previamente. En cualquier caso, la unidad de codificación por entropía 56 puede codificar la información de posición de último coeficiente significativo para el bloque, ya se represente como las coordenadas x e y o como las coordenadas x e y intercambiadas.
Para codificar las coordenadas x e y y las coordenadas x e y intercambiadas, la unidad de codificación por entropía 56 puede determinar adicionalmente estadísticas que indican una probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración. En particular, las estadísticas pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar una probabilidad de que cada una de las coordenadas x e y que se han descrito previamente comprendan un valor dado.
Debido a que el primer y el segundo órdenes de exploración pueden ser simétricos (o al menos parcialmente simétricos) uno con respecto a otro, la probabilidad de que la coordenada x comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada y comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. De forma similar, la probabilidad de que la coordenada y comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada x comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. Es decir, cada una de las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración puede tener la misma o similar probabilidad de comprender un valor dado que las coordenadas x e y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. En ese sentido, las estadísticas pueden indicar adicionalmente la probabilidad de que cada una de las coordenadas x e y intercambiadas comprenda un valor dado. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estadísticas usando información de posición de último coeficiente significativo para bloques codificados previamente de datos de vídeo, por ejemplo, valores de coordenadas x e y y coordenadas x e y intercambiadas para los bloques codificados previamente.
En este ejemplo, la unidad de codificación por entropía 56 puede codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas. Por ejemplo, la unidad de codificación por entropía 56 puede codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas de tal modo que la probabilidad de que la coordenada x comprenda un valor dado se usa para codificar la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado se usa para codificar la coordenada y y la coordenada x intercambiada. Además, la unidad de codificación por entropía 56 puede actualizar las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas para reflejar la probabilidad de que las coordenadas respectivas comprendan valores particulares. En este ejemplo, la probabilidad de que la coordenada x comprenda un valor dado puede actualizarse usando la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado puede actualizarse usando la coordenada y la coordenada x intercambiadas. Por ejemplo, las estadísticas actualizadas pueden usarse para codificar información de posición de último coeficiente significativo para bloques codificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
En algunos ejemplos, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, la unidad de codificación por entropía 56 puede realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y, las coordenadas x e y intercambiadas, y el orden de exploración. En este ejemplo, la unidad de codificación por entropía 56 puede usar el orden de exploración, por ejemplo, el orden de exploración horizontal o vertical, para seleccionar el modelo de contexto particular que incluye las estadísticas. Es decir, la unidad de codificación por entropía 56 puede seleccionar las mismas estadísticas para codificar las coordenadas x e y cuando se usa el primer orden de exploración para codificar el bloque, y para codificar las coordenadas x e y intercambiadas cuando se usa el segundo orden de exploración para codificar el bloque.
Además, en los casos en los que una coordenada (por ejemplo, la coordenada y) se codifica después de otra coordenada (por ejemplo, la coordenada x), la unidad de codificación por entropía 56 puede codificar la coordenada usando un valor de la otra coordenada codificada previamente como un contexto. Es decir, puede usarse un valor de una de las coordenadas x e y previamente codificadas o las coordenadas x e y intercambiadas, dependiendo del orden de exploración usado para codificar el bloque, para seleccionar estadísticas adicionales dentro del modelo de contexto que indican una probabilidad de que la otra coordenada actualmente codificada comprenda un valor dado. La unidad de codificación por entropía 56 puede usar entonces las estadísticas seleccionadas para codificar las coordenadas x e y y las coordenadas x e y intercambiadas realizando el proceso de codificación por entropía adaptativa al contexto.
En este ejemplo, las coordenadas x e y y las coordenadas x e y intercambiadas pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins, es decir, binarizada. En ese sentido, para codificar las coordenadas x e y y las coordenadas x e y intercambiadas basándose en las estadísticas, la unidad de codificación por entropía 56 puede codificar cada bin de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad usando valores de los bins correspondientes para bloques de datos de vídeo codificados previamente, por ejemplo, bins de palabras de código correspondientes a coordenadas x e y y coordenadas x e y intercambiadas para los bloques codificados previamente, por ejemplo, como parte de la determinación de las estadísticas basándose en la información de posición de último coeficiente significativo para los bloques codificados previamente, como se ha descrito previamente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad usando el valor de cada bin, por ejemplo, como parte de la actualización de las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, como también se ha descrito previamente. La unidad de codificación por entropía 56 puede usar las estimaciones de probabilidad para codificar cada bin realizando el proceso de codificación por entropía adaptativa al contexto.
Como se ha descrito previamente, como otro ejemplo, la unidad de codificación por entropía 56 puede codificar las coordenadas x e y y las coordenadas x e y intercambiadas codificando al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas desde el modelo de contexto basándose al menos en parte en un valor de al menos un bin, por ejemplo, un bin correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de codificación por entropía 56 puede codificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
En cualquier caso, la unidad de codificación por entropía 56 puede codificar adicionalmente información que identifica el orden de exploración (812), es decir, la información de orden de exploración para el bloque. En algunos ejemplos, en donde el orden de exploración incluye uno de los dos órdenes de exploración usados dentro del sistema 10 para codificar bloques de datos de vídeo, la unidad de codificación por entropía 56 puede codificar la información de orden de exploración usando un único bin. Por ejemplo, la unidad de codificación por entropía 56 puede codificar el único bin para indicar si el orden de exploración es un primer orden de exploración (por ejemplo, bin = "0") o un segundo orden de exploración (bin = "1"). En otros ejemplos, en donde el orden de exploración incluye uno de los tres órdenes de exploración que puede usar el sistema 10 para codificar bloques de datos de vídeo, la unidad de codificación por entropía 56 puede codificar la información de orden de exploración usando entre uno y dos bins. Por ejemplo, la unidad de codificación por entropía 56 puede codificar un primer bin para indicar si el orden de exploración es un primer orden de exploración (por ejemplo, bin1 = "0" si el orden de exploración es el primer orden de exploración, y bin1 = "1" de lo contrario). En el caso de que el primer bin indique que el orden de exploración no es el primer orden de exploración, la unidad de codificación por entropía 56 puede codificar un segundo bin para indicar si el orden de exploración es un segundo orden de exploración (por ejemplo, bin2 = "0"), o un tercer orden de exploración (por ejemplo, bin2 = "1"). En otros ejemplos, pueden usarse otros métodos para codificar la información de orden de exploración para el bloque, incluyendo usar otros valores de bins. En algunos ejemplos, la unidad de codificación por entropía 56 puede señalizar cada bin directamente en el flujo de bits. En otros ejemplos, la unidad de codificación por entropía 56 puede codificar adicionalmente cada bin usando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) de una forma similar a como se ha descrito anteriormente con referencia a bins de codificación de una palabra de código correspondiente a una de las coordenadas x e y y las coordenadas x e y intercambiadas. Como alternativa, como se ha descrito previamente, la unidad de codificación por entropía 56 puede omitir la codificación de la información de orden de exploración para el bloque cuando la unidad de codificación por entropía 56 usa un orden de exploración adaptativa para codificar el bloque.
En algunos ejemplos, la unidad de codificación por entropía 56 puede codificar adicionalmente información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de acuerdo con el orden de exploración (814), es decir, la información de posición de coeficiente significativo para el bloque. Como se ha descrito previamente, por ejemplo, la información de posición de coeficiente significativo para el bloque puede representarse usando una secuencia de indicadores de coeficiente significativo. Como también se ha descrito previamente, la información de posición de coeficiente significativo puede codificarse codificando cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del indicador dentro del bloque de acuerdo con el orden de exploración.
El modelo de contexto puede incluir estimaciones de probabilidad que indican una probabilidad de que cada indicador comprenda un valor dado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad usando los valores de los indicadores de coeficiente significativo correspondientes para los bloques de datos de vídeo codificados previamente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad usando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor dado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden usarse para codificar información de posición de coeficiente significativo para bloques codificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
Por último, la unidad de codificación por entropía 56 puede parar de codificar la información de posición de último coeficiente significativo basándose en la información de orden de exploración para el bloque (816). Por ejemplo, la unidad de codificación por entropía 56 puede proceder a otras tareas de codificación, por ejemplo, codificación de otros elementos de sintaxis para el bloque, o un bloque subsiguiente, como se ha descrito anteriormente.
De esta forma, el método de la figura 8 representa un ejemplo de un método para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
La figura 9 es un diagrama de flujo que ilustra un ejemplo de un método para descodificar de forma eficiente información de posición de último coeficiente significativo codificada basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación. Las técnicas de la figura 9 pueden realizarse, en general, mediante cualquier unidad de procesamiento o procesador, ya se implemente en hardware, software, firmware o una combinación de los mismos y, cuando se implementa en software o firmware, puede proporcionarse hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 9 se describen con respecto a la unidad de descodificación por entropía 70 (la figura 3), aunque debería entenderse que pueden configurarse otros dispositivos para realizar técnicas similares. Además, las etapas ilustradas en la figura 9 pueden realizarse en un orden diferente o en paralelo, y pueden añadirse etapas adicionales y omitirse ciertas etapas, sin apartarse de las técnicas de esta divulgación.
Inicialmente, la unidad de descodificación por entropía 70 puede recibir datos de importancia codificados para un bloque de datos de vídeo (900). Por ejemplo, el bloque puede ser un macrobloque, o una TU de una CU, como se ha descrito previamente. La unidad de descodificación por entropía 70 puede descodificar adicionalmente los datos de importancia para determinar coordenadas que indican una posición de un último coeficiente significativo dentro del bloque de acuerdo con un orden de exploración asociado al bloque (902), es decir, la información de posición de último coeficiente significativo para el bloque. El orden de exploración puede ser un orden de exploración usado por una unidad de codificación por entropía, por ejemplo, la unidad de codificación por entropía 56 de la figura 2, para codificar el bloque, y puede ser uno de una pluralidad de órdenes de exploración que se originan en una posición común dentro del bloque, como se ha descrito previamente. Como también se ha descrito previamente, la posición común puede corresponder a la posición de CC. Además, las coordenadas determinadas pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins.
Como se ha descrito anteriormente con referencia al ejemplo de la figura 8, las coordenadas determinadas pueden corresponder a coordenadas x e y o coordenadas x e y intercambiadas que indican la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, dependiendo del orden de exploración. Por ejemplo, las coordenadas pueden corresponder a las coordenadas x e y cuando el orden de exploración comprende un primer orden de exploración, y a las coordenadas x e y intercambiadas cuando el orden de exploración comprende un segundo orden de exploración. Las coordenadas x e y y las coordenadas x e y intercambiadas corresponden a la información de posición de último coeficiente significativo para el bloque, pero las coordenadas x e y intercambiadas se procesan adicionalmente, es decir, se intercambian, para posibilitar codificar la información de una forma más eficiente que cuando se usan otras técnicas. Específicamente, las coordenadas x e y intercambiadas pueden posibilitar usar estadísticas comunes para codificar las coordenadas x e y y las coordenadas x e y intercambiadas que indican la información de posición de último coeficiente significativo para el bloque, como también se ha descrito previamente.
En cualquier caso, de forma similar a la descrita previamente con referencia al ejemplo de la unidad de codificación por entropía 56 de la figura 8, para descodificar los datos de importancia para determinar las coordenadas, la unidad de descodificación por entropía 70 puede determinar adicionalmente estadísticas que indican una probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración. En particular, las estadísticas pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, cuando el orden de exploración comprende el primer orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar una probabilidad de que cada una de las coordenadas x e y que se han descrito previamente comprendan un valor dado.
Debido a que el primer y el segundo órdenes de exploración pueden ser simétricos (o al menos parcialmente simétricos) uno con respecto a otro, la probabilidad de que la coordenada x comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada y comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. De forma similar, la probabilidad de que la coordenada y comprenda un valor dado cuando el orden de exploración comprende el primer orden de exploración puede ser igual o similar a la probabilidad de que la coordenada x comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. Es decir, cada una de las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración puede tener la misma o similar probabilidad de comprender un valor dado que las coordenadas x e y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. En ese sentido, las estadísticas pueden indicar adicionalmente la probabilidad de que cada una de las coordenadas x e y intercambiadas comprenda un valor dado. En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estadísticas usando información de posición de último coeficiente significativo para bloques descodificados previamente de datos de vídeo, por ejemplo, valores de coordenadas x e y y coordenadas x e y intercambiadas para los bloques descodificados previamente.
En este ejemplo, la unidad de descodificación por entropía 70 puede descodificar los datos de importancia para determinar las coordenadas, es decir, las coordenadas x e y, o las coordenadas x e y intercambiadas, basándose en las estadísticas. Por ejemplo, la unidad de descodificación por entropía 70 puede descodificar los datos de importancia para determinar las coordenadas x e y, o las coordenadas x e y intercambiadas basándose en las estadísticas de tal modo que la probabilidad de que la coordenada x comprenda un valor dado se usa para descodificar los datos de importancia para determinar la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado se usa para descodificar los datos de importancia para determinar la coordenada y la coordenada x intercambiada. Además, la unidad de descodificación por entropía 70 puede actualizar las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas para reflejar la probabilidad de que las coordenadas respectivas comprendan valores particulares. En este ejemplo, la probabilidad de que la coordenada x comprenda un valor dado puede actualizarse usando la coordenada x y la coordenada y intercambiada, y la probabilidad de que la coordenada y comprenda un valor dado puede actualizarse usando la coordenada y la coordenada x intercambiadas. Por ejemplo, las estadísticas actualizadas pueden usarse para descodificar datos de importancia para determinar información de posición de coeficiente significativo para bloques descodificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
En algunos ejemplos, para descodificar los datos de importancia para determinar las coordenadas x e y o las coordenadas x e y intercambiadas basándose en las estadísticas, la unidad de descodificación por entropía 70 puede realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y, las coordenadas x e y intercambiadas, y el orden de exploración. En este ejemplo, la unidad de descodificación por entropía 70 puede usar el orden de exploración, por ejemplo, el orden de exploración horizontal o vertical, para seleccionar el modelo de contexto particular que incluye las estadísticas. Es decir, la unidad de descodificación por entropía 70 puede seleccionar las mismas estadísticas para descodificar los datos de importancia para determinar las coordenadas x e y cuando se usa el primer orden de exploración para descodificar el bloque, y para determinar las coordenadas x e y intercambiadas cuando se usa el segundo orden de exploración para descodificar el bloque.
Las coordenadas x e y y las coordenadas x e y intercambiadas pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins, es decir, binarizada. En ese sentido, para descodificar los datos de importancia para determinar las coordenadas x e y o las coordenadas x e y intercambiadas basándose en las estadísticas, la unidad de descodificación por entropía 70 puede descodificar los datos de importancia para determinar cada bin de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estimaciones de probabilidad usando valores de los bins correspondientes para bloques de datos de vídeo descodificados previamente, por ejemplo, bins de palabras de código correspondientes a coordenadas x e y y coordenadas x e y intercambiadas para los bloques descodificados previamente, por ejemplo, como parte de la determinación de las estadísticas basándose en la información de posición de último coeficiente significativo para los bloques descodificados previamente, como se ha descrito previamente. En otros ejemplos, la unidad de descodificación por entropía 70 también puede actualizar las estimaciones de probabilidad usando el valor de cada bin, por ejemplo, como parte de la actualización de las estadísticas basándose en las coordenadas x e y y las coordenadas x e y intercambiadas, como también se ha descrito previamente. La unidad de descodificación por entropía 70 puede usar las estimaciones de probabilidad para descodificar los datos de importancia cada bin realizando el proceso de codificación por entropía adaptativa al contexto.
Como se ha descrito previamente, como otro ejemplo, la unidad de descodificación por entropía 70 puede descodificar las coordenadas x e y y las coordenadas x e y intercambiadas descodificando al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas desde el modelo de contexto basándose al menos en parte en un valor de al menos un bin, por ejemplo, un bin correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de descodificación por entropía 70 puede descodificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
La unidad de descodificación por entropía 70 puede recibir adicionalmente datos de orden de exploración codificados para el bloque (904). La unidad de descodificación por entropía 70 puede descodificar adicionalmente los datos de orden de exploración para determinar información que identifica el orden de exploración (906), es decir, la información de orden de exploración para el bloque. Como alternativa, como se ha descrito previamente, la unidad de descodificación por entropía 70 puede no recibir y descodificar los datos de orden de exploración codificados para el bloque cuando la unidad de descodificación por entropía 70 usa un orden de exploración adaptativa para descodificar el bloque. En cualquier caso, la unidad de codificación por entropía 70 puede determinar adicionalmente si el orden de exploración es un primer orden de exploración o un segundo orden de exploración (908). Por ejemplo, el primer y el segundo órdenes de exploración pueden ser órdenes de exploración que pueden ser usados por la unidad de descodificación por entropía 70 para descodificar bloques de datos de vídeo dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el descodificador de vídeo 30, como se ha descrito previamente. El primer y el segundo órdenes de exploración pueden ser solo algunos de los órdenes de exploración que pueden usarse dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo órdenes de exploración pueden ser los únicos órdenes de exploración usados dentro del sistema 10 para codificar los bloques.
En algunos casos, el primer y el segundo órdenes de exploración pueden ser simétricos uno con respecto a otro (o al menos parcialmente simétricos). Por ejemplo, el primer orden de exploración puede ser un orden de exploración horizontal, y el segundo orden de exploración puede ser un orden de exploración vertical. La unidad de descodificación por entropía 70 puede determinar si el orden de exploración es el primer orden de exploración o el segundo orden de exploración usando la información de orden de exploración determinada para el bloque.
En el caso de que el orden de exploración sea el primer orden de exploración (910), la unidad de descodificación por entropía 70 puede continuar descodificando el bloque usando las coordenadas x e y determinadas. En algunos ejemplos, la unidad de descodificación por entropía 70 puede recibir adicionalmente datos de importancia codificados restantes para el bloque (914). La unidad de descodificación por entropía 70 puede descodificar adicionalmente los datos de importancia restantes para determinar información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de acuerdo con el orden de exploración (916), es decir, la información de posición de coeficiente significativo para el bloque. Como se ha descrito previamente, por ejemplo, la información de posición de coeficiente significativo para el bloque puede representarse usando una secuencia de indicadores de coeficiente significativo. Como también se ha descrito previamente, los datos de importancia restantes pueden descodificarse para determinar la información de posición de coeficiente significativo descodificando los datos de importancia restantes para determinar cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del indicador dentro del bloque de acuerdo con el orden de exploración.
El modelo de contexto puede incluir estimaciones de probabilidad que indican una probabilidad de que cada indicador comprenda un valor dado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estimaciones de probabilidad usando los valores de los indicadores de coeficiente significativo correspondientes para los bloques de datos de vídeo descodificados previamente. En otros ejemplos, la unidad de descodificación por entropía 70 también puede actualizar las estimaciones de probabilidad usando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor dado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden usarse para descodificar datos de importancia restantes para determinar información de posición de coeficiente significativo para bloques descodificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
Sin embargo, en el caso de que el orden de exploración sea el segundo orden de exploración (910), la unidad de descodificación por entropía 70 puede intercambiar las coordenadas x e y determinadas (912) y continuar descodificando el bloque usando las coordenadas x e y intercambiadas de forma similar a como se ha descrito anteriormente con referencia a las etapas (914) y (916). Como se ha descrito previamente, las coordenadas x e y y las coordenadas x e y intercambiadas corresponden a la información de posición de último coeficiente significativo para el bloque, pero las coordenadas x e y intercambiadas se procesan adicionalmente para posibilitar codificar la información de una forma más eficiente que cuando se usan otras técnicas.
Por último, la unidad de descodificación por entropía 70 puede parar de descodificar la información de posición de último coeficiente significativo basándose en la información de orden de exploración para el bloque (918). Por ejemplo, la unidad de descodificación por entropía 70 puede proceder a otras tareas de codificación, por ejemplo, descodificación de otros elementos de sintaxis para el bloque, o un bloque subsiguiente, como se ha descrito anteriormente.
De esta forma, el método de la figura 9 representa un ejemplo de un método para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
La figura 10 es un diagrama de flujo que ilustra otro ejemplo de un método para codificar de forma eficiente información de posición de último coeficiente significativo basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación. Las técnicas de la figura 10 pueden realizarse, en general, mediante cualquier unidad de procesamiento o procesador, ya se implemente en hardware, software, firmware o una combinación de los mismos y, cuando se implementa en software o firmware, puede proporcionarse hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 10 se describen con respecto a la unidad de codificación por entropía 56 (la figura 2), aunque debería entenderse que pueden configurarse otros dispositivos para realizar técnicas similares. Además, las etapas ilustradas en la figura 10 pueden realizarse en un orden diferente o en paralelo, y pueden añadirse etapas adicionales y omitirse ciertas etapas, sin apartarse de las técnicas de esta divulgación.
Inicialmente, la unidad de codificación por entropía 56 puede recibir un bloque de datos de vídeo (1000). Por ejemplo, el bloque puede ser un macrobloque, o una TU de una C<u>, como se ha descrito previamente. La unidad de codificación por entropía 56 puede determinar adicionalmente coordenadas x e y que indican una posición de un último coeficiente significativo dentro del bloque de acuerdo con un orden de exploración asociado al bloque (1002), es decir, la información de posición de último coeficiente significativo para el bloque. Por ejemplo, el orden de exploración puede ser un orden de exploración usado por la unidad de codificación por entropía 56, para codificar el bloque, y puede ser uno de una pluralidad de órdenes de exploración usados para codificar bloques de datos de vídeo dentro del sistema de codificación 10 correspondiente que comprende el codificador de vídeo 20 y el descodificador de vídeo 30. Por ejemplo, cada uno de la pluralidad de órdenes de exploración puede originarse en una posición común dentro del bloque, por ejemplo, la posición de CC. Además, como también se ha descrito previamente, las coordenadas x e y pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins.
La unidad de codificación por entropía 56 puede determinar adicionalmente si cada una de las coordenadas x e y corresponde a una posición común dentro del bloque (1004). La posición común puede corresponder a la posición de CC. La unidad de codificación por entropía 56 puede realizar la determinación anterior directamente, por ejemplo, como parte de la determinación de las coordenadas x e y, como se ha descrito anteriormente.
La unidad de codificación por entropía 56 puede codificar adicionalmente una indicación de si la coordenada x corresponde a la posición común (1006). De forma similar, la unidad de codificación por entropía 56 puede codificar adicionalmente una indicación de si la coordenada y corresponde a la posición común (1008). La unidad de codificación por entropía 56 puede codificar cada indicación usando un único bin. Por ejemplo, la unidad de codificación por entropía 56 puede codificar un primer bin que indica si la coordenada x corresponde a la posición común (por ejemplo, bin1 = "1") u otra cosa (bin1 = "0"), y un segundo bin que indica si la coordenada y corresponde a la posición común (por ejemplo, bin2 = "1") u otra cosa (bin2 = "0"). En algunos ejemplos, la unidad de codificación por entropía 56 puede señalizar cada bin directamente en el flujo de bits. En otros ejemplos, la unidad de codificación por entropía 56 puede codificar adicionalmente cada bin usando un proceso de codificación por entropía adaptativa al contexto de una forma similar a la descrita anteriormente con referencia a las figuras 7-9, por ejemplo, realizando un proceso de CABAC que incluye aplicar un modelo de contexto basándose en un contexto.
En el caso de que cada una de las coordenadas x e y corresponda a la posición común (1010), la unidad de codificación por entropía 56 puede parar de codificar la información de posición de último coeficiente significativo basándose en la información de orden de exploración para el bloque (1024). En otras palabras, en los casos en los que cada una de las coordenadas x e y corresponde a la posición común, no existen coeficientes significativos adicionales más allá del último (y único) coeficiente significativo dentro del bloque de acuerdo con el orden de exploración dentro del bloque. En tales casos, la unidad de codificación por entropía 56 no necesita codificar ninguna información adicional de posición de coeficiente significativo, o ninguna información de orden de exploración o información de posición de coeficiente significativo, para el bloque. En tales casos, la unidad de codificación por entropía 56 puede proceder a otras tareas de codificación, por ejemplo, codificación de otros elementos de sintaxis para el bloque, o un bloque subsiguiente.
En el caso de que cada una de las coordenadas x e y no corresponda a la posición común (1010), la unidad de codificación por entropía 56 puede codificar adicionalmente información que identifica el orden de exploración (1012), es decir, la información de orden de exploración para el bloque. En algunos ejemplos, en donde el orden de exploración incluye uno de los dos órdenes de exploración usados dentro del sistema 10 para codificar bloques de datos de vídeo, la unidad de codificación por entropía 56 puede codificar la información de orden de exploración usando un único bin. Por ejemplo, la unidad de codificación por entropía 56 puede codificar el único bin para indicar si el orden de exploración es un primer orden de exploración (por ejemplo, bin = "0") o un segundo orden de exploración (bin = "1"). En otros ejemplos, en donde el orden de exploración incluye uno de los tres órdenes de exploración que puede usar el sistema 10 para codificar bloques de datos de vídeo, la unidad de codificación por entropía 56 puede codificar la información de orden de exploración usando entre uno y dos bins. Por ejemplo, la unidad de codificación por entropía 56 puede codificar un primer bin para indicar si el orden de exploración es un primer orden de exploración (por ejemplo, bin1 = "0" si el orden de exploración es el primer orden de exploración, y bin1 = "1" de lo contrario). En el caso de que el primer bin indique que el orden de exploración no es el primer orden de exploración, la unidad de codificación por entropía 56 puede codificar un segundo bin para indicar si el orden de exploración es un segundo orden de exploración (por ejemplo, bin2 = "0"), o un tercer orden de exploración (por ejemplo, bin2 = "1"). En otros ejemplos, pueden usarse otros métodos para codificar la información de orden de exploración para el bloque, incluyendo usar otros valores de bins. En algunos ejemplos, la unidad de codificación por entropía 56 puede señalizar cada bin directamente en el flujo de bits. En otros ejemplos, la unidad de codificación por entropía 56 puede codificar adicionalmente cada bin usando un proceso de codificación por entropía adaptativa al contexto de una forma similar a la descrita anteriormente con referencia a las figuras 7-9, por ejemplo, realizando un proceso de CABAC que incluye aplicar un modelo de contexto basándose en un contexto. Como alternativa, como se ha descrito previamente, la unidad de codificación por entropía 56 puede no codificar la información de orden de exploración para el bloque cuando la unidad de codificación por entropía 56 usa un orden de exploración adaptativa para codificar el bloque.
En cualquier caso, en el caso de que la coordenada x no corresponda a la posición común (1014), la unidad de codificación por entropía 56 puede codificar adicionalmente la coordenada x basándose en el orden de exploración (1016). De forma similar, en el caso de que la coordenada y no corresponda a la posición común (1018), la unidad de codificación por entropía 56 puede codificar adicionalmente la coordenada y basándose en el orden de exploración (1020). Para codificar las coordenadas x e y, la unidad de codificación por entropía 56 puede determinar adicionalmente estadísticas que indican una probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración. En particular, las estadísticas pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar una probabilidad de que cada una de las coordenadas x e y que se han descrito previamente comprendan un valor dado. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estadísticas usando información de posición de último coeficiente significativo para bloques codificados previamente de datos de vídeo, por ejemplo, valores de coordenadas x e y para los bloques codificados previamente.
En algunos ejemplos, las estadísticas pueden variar dependiendo del orden de exploración. En particular, la probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración puede variar dependiendo del orden de exploración. Es decir, diferentes órdenes de exploración pueden dar como resultado diferentes estadísticas para la información de posición de último coeficiente significativo para el bloque. En ese sentido, cuando se codifica la información de posición de último coeficiente significativo para el bloque basándose en las estadísticas, elegir las estadísticas basándose al menos en parte en el orden de exploración puede dar como resultado usar estadísticas precisas y, por lo tanto, puede posibilitar una codificación eficiente. Por lo tanto, la unidad de codificación por entropía 56 puede codificar las coordenadas x e y basándose en las estadísticas, en donde la unidad de codificación por entropía 56 selecciona las estadísticas basándose al menos en parte en el orden de exploración. En consecuencia, la unidad de codificación por entropía 56 puede codificar las coordenadas x e y basándose en el orden de exploración. Además, la unidad de codificación por entropía 56 puede actualizar las estadísticas basándose en las coordenadas x e y para reflejar la probabilidad de que las coordenadas respectivas comprendan valores particulares. Por ejemplo, las estadísticas actualizadas pueden usarse para codificar información de posición de último coeficiente significativo para bloques codificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
En algunos ejemplos, para codificar las coordenadas x e y basándose en las estadísticas, la unidad de codificación por entropía 56 puede realizar un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y y el orden de exploración. En este ejemplo, la unidad de codificación por entropía 56 puede usar el orden de exploración para seleccionar el modelo de contexto particular que incluye las estadísticas. De esta forma, la unidad de codificación por entropía 56 puede codificar las coordenadas x e y basándose en el orden de exploración. Además, en los casos en los que una coordenada (por ejemplo, la coordenada y) se codifica después de otra coordenada (por ejemplo, la coordenada x), la unidad de codificación por entropía 56 puede codificar la coordenada usando un valor de la otra coordenada codificada previamente como un contexto. Es decir, puede usarse un valor de una previamente codificada de las coordenadas x e y para seleccionar adicionalmente estadísticas dentro del modelo de contexto que indiquen una probabilidad de que la otra coordenada actualmente codificada comprenda un valor dado. La unidad de codificación por entropía 56 puede usar entonces las estadísticas seleccionadas para codificar las coordenadas x e y realizando el proceso de codificación por entropía adaptativa al contexto.
En este ejemplo, las coordenadas x e y pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins, es decir, binarizada. En ese sentido, para codificar las coordenadas x e y basándose en las estadísticas, la unidad de codificación por entropía 56 puede codificar cada bin de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad usando valores de los bins correspondientes para bloques de datos de vídeo codificados previamente, por ejemplo, bins de palabras de código correspondientes a coordenadas x e y para los bloques codificados previamente, por ejemplo, como parte de la determinación de las estadísticas basándose en la información de posición de último coeficiente significativo para los bloques codificados previamente, como se ha descrito previamente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad usando el valor de cada bin, por ejemplo, como parte de la actualización de las estadísticas basándose en las coordenadas x e y, como también se ha descrito previamente. La unidad de codificación por entropía 56 puede usar las estimaciones de probabilidad para codificar cada bin realizando el proceso de codificación por entropía adaptativa al contexto.
Como se ha descrito previamente, como otro ejemplo, la unidad de codificación por entropía 56 puede codificar las coordenadas x e y codificando al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas desde el modelo de contexto basándose al menos en parte en un valor de al menos un bin, por ejemplo, un bin correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de codificación por entropía 56 puede codificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
En algunos ejemplos, antes de codificar cada coordenada, la unidad de codificación por entropía 56 puede restar un valor "1" de cada coordenada para permitir que las coordenadas se codifiquen de una forma más eficiente que cuando se usan otros métodos. Por ejemplo, la unidad de codificación por entropía 56 puede restar el valor "1" de cada coordenada antes de codificar la coordenada para reducir la cantidad de información usada para codificar las coordenadas. De forma similar, una unidad de descodificación por entropía, por ejemplo, una unidad de descodificación por entropía 70 descrita con mayor detalle en el ejemplo de la figura 11, puede añadir un valor "1" a cada coordenada después de descodificar la coordenada, para determinar la coordenada.
En algunos ejemplos, la unidad de codificación por entropía 56 puede codificar adicionalmente información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de acuerdo con el orden de exploración (1022), es decir, la información de posición de coeficiente significativo para el bloque. Como se ha descrito previamente, la información de posición de coeficiente significativo para el bloque puede representarse usando una secuencia de indicadores de coeficiente significativo. Como también se ha descrito previamente, la información de posición de coeficiente significativo puede codificarse codificando cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del indicador dentro del bloque de acuerdo con el orden de exploración.
En este ejemplo, el modelo de contexto puede incluir estimaciones de probabilidad que indican una probabilidad de que cada indicador comprenda un valor dado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad usando los valores de los indicadores de coeficiente significativo correspondientes para los bloques de datos de vídeo codificados previamente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad usando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor dado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden usarse para codificar información de posición de coeficiente significativo para bloques codificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
Por último, la unidad de codificación por entropía 56 puede parar de codificar la información de posición de último coeficiente significativo basándose en la información de orden de exploración para el bloque (1024). Por ejemplo, la unidad de codificación por entropía 56 puede proceder a otras tareas de codificación, por ejemplo, codificación de otros elementos de sintaxis para el bloque, o un bloque subsiguiente, como se ha descrito previamente.
De esta forma, el método de la figura 10 representa un ejemplo de un método para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
La figura 11 es un diagrama de flujo que ilustra otro ejemplo de un método para descodificar de forma eficiente información de posición de último coeficiente significativo codificada basándose en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta divulgación. Las técnicas de la figura 11 pueden realizarse, en general, mediante cualquier unidad de procesamiento o procesador, ya se implemente en hardware, software, firmware o una combinación de los mismos y, cuando se implementa en software o firmware, puede proporcionarse hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 11 se describen con respecto a la unidad de descodificación por entropía 70 (la figura 3), aunque debería entenderse que pueden configurarse otros dispositivos para realizar técnicas similares. Además, las etapas ilustradas en la figura 11 pueden realizarse en un orden diferente o en paralelo, y pueden añadirse etapas adicionales y omitirse ciertas etapas, sin apartarse de las técnicas de esta divulgación.
Inicialmente, la unidad de descodificación por entropía 70 puede recibir una primera señal para un bloque de datos de vídeo (1100). El bloque puede ser un macrobloque, o una TU de una CU, como se ha descrito previamente. La unidad de descodificación por entropía 70 puede descodificar adicionalmente la primera señal para determinar una indicación de si una coordenada x que indica una posición de un último coeficiente significativo dentro del bloque de acuerdo con un orden de exploración asociado al bloque corresponde a una posición común (1102). De forma similar, la unidad de descodificación por entropía 70 puede recibir adicionalmente una segunda señal para el bloque (1104). La unidad de descodificación por entropía 70 puede descodificar adicionalmente la segunda señal para determinar una indicación de si una coordenada y que indica la posición de último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración corresponde a la posición común (1106).
Por ejemplo, el orden de exploración puede ser un orden de exploración usado por una unidad de codificación por entropía, por ejemplo, la unidad de codificación por entropía 56, para codificar el bloque, y puede ser uno de una pluralidad de órdenes de exploración usados para codificar bloques de datos de vídeo en el sistema de codificación 10 correspondiente que comprende el codificador de vídeo 20 y el descodificador de vídeo 30. Por ejemplo, cada uno de la pluralidad de órdenes de exploración puede originarse en la posición común, como se ha descrito previamente. La posición común puede corresponder a la posición de CC.
Además, cada indicación puede comprender un único bin. Por ejemplo, la unidad de descodificación por entropía 70 puede descodificar la primera señal para determinar un primer bin que indica si la coordenada x corresponde a la posición común (por ejemplo, bin1 = "1") u otra cosa (bin1 = "0"), y descodificar la segunda señal para determinar un segundo bin que indica si la coordenada y corresponde a la posición común (por ejemplo, bin2 = "1") u otra cosa (bin2 = "0"). En algunos ejemplos, la unidad de descodificación por entropía 70 puede recibir cada bin directamente en el flujo de bits. Es decir, la primera señal y la segunda señal pueden comprender el primer bin y el segundo bin, respectivamente. En otros ejemplos, la unidad de descodificación por entropía 70 puede descodificar el primera y la segunda señales para determinar los bins respectivos usando un proceso de codificación por entropía adaptativa al contexto de una forma similar a la descrita anteriormente con referencia a las figuras 7-9, por ejemplo, realizando un proceso de CABAC que incluye aplicar un modelo de contexto basándose en un contexto.
En el caso de que cada una de las coordenadas x e y corresponda a la posición común (1108), la unidad de descodificación por entropía 70 puede parar de descodificar la información de posición de último coeficiente significativo codificada basándose en la información de orden de exploración para el bloque (1130). En otras palabras, en los casos en los que cada una de las coordenadas x e y corresponde a la posición común, no existen coeficientes significativos adicionales más allá del último (y único) coeficiente significativo dentro del bloque de acuerdo con el orden de exploración dentro del bloque. En tales casos, la unidad de descodificación por entropía 70 no necesita descodificar ninguna información adicional de posición de coeficiente significativo, o ninguna información de orden de exploración o información de posición de coeficiente significativo, para el bloque. Por ejemplo, en tales casos, la unidad de descodificación por entropía 70 puede proceder a otras tareas de codificación, por ejemplo, descodificación de otros elementos de sintaxis para el bloque, o un bloque subsiguiente.
En el caso de que cada una de las coordenadas x e y no corresponda a la posición común (1108), la unidad de descodificación por entropía 70 puede recibir adicionalmente datos de orden de exploración codificados para el bloque (1110). La unidad de descodificación por entropía 70 puede descodificar adicionalmente los datos de orden de exploración para determinar información que identifica el orden de exploración (1112), es decir, la información de orden de exploración para el bloque. En algunos ejemplos, en donde el orden de exploración incluye uno de los dos órdenes de exploración usados dentro del sistema 10 para codificar bloques de datos de vídeo, la unidad de descodificación por entropía 70 puede descodificar los datos de orden de exploración para determinar un único bin. Por ejemplo, el único bin puede indicar si el orden de exploración es un primer orden de exploración (por ejemplo, bin = "0") o un segundo orden de exploración (bin = "1"). En otros ejemplos, en donde el orden de exploración incluye uno de las tres órdenes de exploración que pueden usarse dentro del sistema 10 para codificar bloques de datos de vídeo, la unidad de descodificación por entropía 70 puede descodificar los datos de orden de exploración para determinar entre uno y dos bins. Por ejemplo, la unidad de descodificación por entropía 70 puede determinar un primer bin que indica si el orden de exploración es un primer orden de exploración (por ejemplo, bin1 = "0" si el orden de exploración es el primer orden de exploración, y bin1 = "1" de lo contrario). En el caso de que el primer bin indique que el orden de exploración no es el primer orden de exploración, la unidad de descodificación por entropía 70 puede determinar un segundo bin que indica si el orden de exploración es un segundo orden de exploración (por ejemplo, bin2 = "0"), o un tercer orden de exploración (por ejemplo, bin2 = "1"). En otros ejemplos, pueden usarse otros métodos para determinar la información de orden de exploración para el bloque, incluyendo usar otros valores de bins. En algunos ejemplos, la unidad de descodificación por entropía 70 puede recibir cada bin directamente en el flujo de bits. Es decir, los datos de orden de exploración pueden comprender los uno o más bins. En otros ejemplos, la unidad de descodificación por entropía 70 puede descodificar los datos de orden de exploración para determinar cada bin usando un proceso de codificación por entropía adaptativa al contexto de una forma similar a la descrita anteriormente con referencia a las figuras 7-9, por ejemplo, realizando un proceso de CABAC que incluye aplicar un modelo de contexto basándose en un contexto. Como alternativa, como se ha descrito previamente, la unidad de descodificación por entropía 70 puede no recibir y descodificar los datos de orden de exploración codificados para el bloque cuando la unidad de descodificación por entropía 70 usa un orden de exploración adaptativa para descodificar el bloque.
En cualquier caso, en el caso de que la coordenada x no corresponda a la posición común (1114), la unidad de descodificación por entropía 70 puede recibir adicionalmente la coordenada x codificada (1116) y descodificar la coordenada x basándose en el orden de exploración (1118). De forma similar, en el caso de que la coordenada y no corresponda a la posición común (1120), la unidad de descodificación por entropía 70 puede recibir adicionalmente la coordenada y codificada (1122) y descodificar la coordenada y basándose en el orden de exploración (1124). Como se ha descrito previamente, para descodificar las coordenadas x e y codificadas, la unidad de descodificación por entropía 70 puede determinar adicionalmente estadísticas que indican una probabilidad de una posición dada dentro del bloque correspondiente a la posición de último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, de una forma substancialmente similar a la descrita previamente con referencia a la unidad de codificación por entropía 56. Las estadísticas pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada x o una coordenada y, correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración, comprenda un valor dado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar una probabilidad de que cada una de las coordenadas x e y que se han descrito previamente comprendan un valor dado. En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estadísticas usando información de posición de último coeficiente significativo para bloques descodificados previamente de datos de vídeo, por ejemplo, valores de coordenadas x e y para los bloques descodificados previamente.
En algunos ejemplos, las estadísticas pueden variar dependiendo del orden de exploración. En particular, la probabilidad de una posición dada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración puede variar dependiendo del orden de exploración. Es decir, diferentes órdenes de exploración pueden dar como resultado diferentes estadísticas para la información de posición de último coeficiente significativo para el bloque. En ese sentido, cuando se descodifica la información de posición de último coeficiente significativo codificada para el bloque basándose en las estadísticas, elegir las estadísticas basándose al menos en parte en el orden de exploración puede dar como resultado usar estadísticas precisas y, por lo tanto, puede posibilitar una descodificación eficiente. En ese sentido, la unidad de descodificación por entropía 70 puede descodificar las coordenadas x e y codificadas basándose en las estadísticas, en donde la unidad de descodificación por entropía 70 selecciona las estadísticas basándose al menos en parte en el orden de exploración. En consecuencia, la unidad de descodificación por entropía 70 puede descodificar las coordenadas x e y codificadas basándose en el orden de exploración. Además, la unidad de descodificación por entropía 70 puede actualizar las estadísticas basándose en las coordenadas x e y para reflejar la probabilidad de que las coordenadas respectivas comprendan valores particulares. Por ejemplo, las estadísticas actualizadas pueden usarse para descodificar información de posición de último coeficiente significativo codificada para bloques descodificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
En algunos ejemplos, para descodificar las coordenadas x e y codificadas basándose en las estadísticas, la unidad de descodificación por entropía 70 puede realizar un proceso de descodificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basándose en al menos un contexto. Por ejemplo, el al menos un contexto puede incluir una de las coordenadas x e y y el orden de exploración. En este ejemplo, la unidad de descodificación por entropía 70 puede usar el orden de exploración para seleccionar el modelo de contexto particular que incluye las estadísticas. De esta forma, la unidad de descodificación por entropía 70 puede descodificar las coordenadas x e y codificadas basándose en el orden de exploración. Además, en los casos en los que una coordenada codificada (por ejemplo, la coordenada y) se descodifica después de otra coordenada codificada (por ejemplo, la coordenada x), la unidad de descodificación por entropía 70 puede descodificar la coordenada usando un valor de la otra coordenada descodificada previamente como un contexto. Es decir, puede usarse un valor de una previamente descodificada de las coordenadas x e y para seleccionar adicionalmente estadísticas dentro del modelo de contexto que indiquen una probabilidad de que la otra coordenada actualmente descodificada comprenda un valor dado. La unidad de descodificación por entropía 70 puede usar entonces las estadísticas seleccionadas para descodificar las coordenadas x e y codificadas realizando el proceso de codificación por entropía adaptativa al contexto.
Las coordenadas x e y pueden representarse cada una usando una palabra de código unaria que comprende una secuencia de uno o más bins, es decir, binarizada. En ese sentido, para descodificar las coordenadas x e y codificadas basándose en las estadísticas, la unidad de descodificación por entropía 70 puede descodificar cada bin de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptativa al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de que la coordenada comprenda un valor dado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada bin de la palabra de código correspondiente a la coordenada comprenda un valor dado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada bin de la palabra de código, dependiendo de la posición del bin respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estimaciones de probabilidad usando valores de los bins correspondientes para bloques de datos de vídeo descodificados previamente, por ejemplo, bins de palabras de código correspondientes a coordenadas x e y para los bloques descodificados previamente, por ejemplo, como parte de la determinación de las estadísticas basándose en la información de posición de último coeficiente significativo para los bloques descodificados previamente, como se ha descrito previamente. En otros ejemplos, la unidad de descodificación por entropía 70 también puede actualizar las estimaciones de probabilidad usando el valor de cada bin, por ejemplo, como parte de la actualización de las estadísticas basándose en las coordenadas x e y, como también se ha descrito previamente. La unidad de descodificación por entropía 70 puede usar las estimaciones de probabilidad para descodificar cada bin realizando el proceso de codificación por entropía adaptativa al contexto.
Como se ha descrito previamente, como otro ejemplo, la unidad de descodificación por entropía 70 puede descodificar las coordenadas x e y descodificando al menos un bin de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas desde el modelo de contexto basándose al menos en parte en un valor de al menos un bin, por ejemplo, un bin correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de descodificación por entropía 70 puede descodificar los uno o más bins de la secuencia correspondiente a una de las coordenadas y los uno o más bins de la secuencia correspondiente a la otra coordenada de una forma intercalada.
Tras descodificar cada coordenada, la unidad de descodificación por entropía 70 puede añadir un valor "1" a cada coordenada para permitir que las coordenadas se codifiquen de una forma más eficiente que cuando se usan otros métodos. Por ejemplo, como también se ha descrito previamente, una unidad de codificación por entropía, por ejemplo, la unidad de codificación por entropía 56, puede codificar las coordenadas x e y restando primero el valor "1" de cada coordenada para reducir la cantidad de información usada para codificar las coordenadas. En ese sentido, la unidad de descodificación por entropía 70 puede añadir el valor "1" a cada coordenada después de descodificar la coordenada, para determinar la coordenada.
En algunos ejemplos, la unidad de descodificación por entropía 70 puede recibir adicionalmente datos de importancia codificados para el bloque (1126). En estos ejemplos, la unidad de descodificación por entropía 70 puede descodificar los datos de importancia para determinar información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de acuerdo con el orden de exploración (1128), es decir, la información de posición de coeficiente significativo para el bloque. Como se ha descrito previamente, la información de posición de coeficiente significativo para el bloque puede representarse usando una secuencia de indicadores de coeficiente significativo. Como también se ha descrito previamente, la información de posición de coeficiente significativo puede descodificarse descodificando cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptativa al contexto (por ejemplo, un proceso de CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en donde el al menos un contexto puede incluir una posición del indicador dentro del bloque de acuerdo con el orden de exploración.
En este ejemplo, el modelo de contexto puede incluir estimaciones de probabilidad que indican una probabilidad de que cada indicador comprenda un valor dado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de descodificación por entropía 70 puede determinar las estimaciones de probabilidad usando los valores de los indicadores de coeficiente significativo correspondientes para los bloques de datos de vídeo descodificados previamente. En otros ejemplos, la unidad de descodificación por entropía 70 también puede actualizar las estimaciones de probabilidad usando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor dado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden usarse para descodificar información de posición de coeficiente significativo codificada para bloques descodificados subsiguientemente de datos de vídeo de la forma descrita anteriormente.
Por último, la unidad de descodificación por entropía 70 puede parar de descodificar la información de posición de último coeficiente significativo codificada basándose en la información de orden de exploración para el bloque (1130). Por ejemplo, la unidad de descodificación por entropía 70 puede proceder a otras tareas de codificación, por ejemplo, descodificación de otros elementos de sintaxis para el bloque, o un bloque subsiguiente, como se ha descrito previamente.
De esta forma, el método de la figura 11 representa un ejemplo de un método para codificar coordenadas x e y que indican una posición de un último coeficiente no nulo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente no nulo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en donde el segundo orden de exploración es diferente del primer orden de exploración.
Por lo tanto, de acuerdo con las técnicas de esta divulgación, un flujo de bits codificado puede comprender información de posición de último coeficiente significativo para un bloque de datos de vídeo, es decir, para coeficientes asociados al bloque. En particular, el codificador de vídeo 20 puede codificar coordenadas x e y que indican una posición de un último coeficiente significativo dentro del bloque de acuerdo con un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificar coordenadas x e y intercambiadas que indican la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración. Por ejemplo, el segundo orden de exploración puede ser diferente del primer orden de exploración. El descodificador de vídeo 30 puede, a su vez, descodificar la información de posición de último coeficiente significativo para el bloque. En particular, el descodificador de vídeo 30 puede descodificar las coordenadas x e y cuando el orden de exploración comprende el primer orden de exploración, y descodificar las coordenadas x e y intercambiadas cuando el orden de exploración comprende el segundo orden de exploración.
En consecuencia, esta divulgación también contempla un medio legible por ordenador que comprende una estructura de datos almacenada en el mismo que incluye un flujo de bits codificado. El flujo de bits codificado almacenado en el medio legible por ordenador puede comprender datos de vídeo codificados usando un formato específico e información codificada que identifica una posición de un último coeficiente significativo dentro de un bloque de datos de vídeo de acuerdo con un orden de exploración asociado al bloque, representada usando coordenadas x e y. El orden específico en el que las coordenadas x e y se codifican dentro del flujo de bits depende de si el orden de exploración asociado al bloque comprende un primer orden de exploración o un segundo orden de exploración. Más específicamente, si el orden de exploración comprende el primer orden de exploración, el flujo de bits puede incluir la información de posición de último coeficiente significativo para el bloque codificado usando coordenadas x e y. En este caso, la información de posición de último coeficiente significativo para el bloque puede descodificarse, y las coordenadas x e y resultantes pueden usarse directamente para descodificar el bloque. Como alternativa, si el orden de exploración comprende el segundo orden de exploración, entonces el flujo de bits puede incluir la información de posición de último coeficiente significativo para el bloque codificado usando coordenadas x e y intercambiadas. En este caso, puede descodificarse la información de posición de último coeficiente significativo, en donde las coordenadas x e y intercambiadas se intercambian adicionalmente, y las coordenadas x e y resultantes pueden usarse para descodificar el bloque.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través de, como una o más instrucciones o código, un medio legible por ordenador, y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que son no transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no como limitación, tal medio de almacenamiento legible por ordenador puede comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y que puede accederse por un ordenador. Asimismo, cualquier conexión se denomina apropiadamente medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea digital de abonado (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que medios de almacenamiento legibles por ordenador y medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en su lugar, se refieren a medios de almacenamiento tangibles no transitorios. Disco magnético y disco óptico, como se usan en el presente documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, en donde los discos magnéticos normalmente reproducen datos magnéticamente, mientras que los discos ópticos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior deberían incluirse también dentro del alcance de medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices de lógica programables en campo (FPGA) u otra circuitería integrada o de lógica discreta equivalente. En consecuencia, el término "procesador", como se usa en el presente documento, puede hacer referencia a cualquiera de la estructura anterior o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software especializados configurados para codificar y descodificar, o incorporarse en un códec combinado. Asimismo, las técnicas podrían implementarse totalmente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, incluyendo un microteléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos o unidades en esta divulgación para destacar aspectos funcionales de dispositivos configurados para materializar las técnicas divulgadas, pero no requieren necesariamente su materialización por diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware inter operativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.
Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.
Claims (10)
1. Un aparato, que comprende:
al menos un procesador;
una memoria que incluye un código de programa informático, configurados la memoria y el código de programa informático para, trabajando con el procesador, hacer que el aparato realice al menos lo siguiente:
recibir un flujo de bits de datos de vídeo;
descodificar por entropía, a partir del flujo de bits, coordenadas x e y que indican una posición horizontal y una posición vertical, respectivamente, de un último coeficiente no nulo de una pluralidad de coeficientes de un bloque de datos de vídeo de acuerdo con uno de un primer orden de exploración o un segundo orden de exploración usado para codificar el bloque, siendo el segundo orden de exploración diferente del primer orden de exploración;
en circunstancias en donde los coeficientes del bloque de datos de vídeo se exploran en el primer orden de exploración:
intercambiar las coordenadas x e y descodificadas por entropía para obtener coordenadas x e y intercambiadas;
descodificar, a partir del flujo de bits, información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de datos de vídeo de acuerdo con el primer orden de exploración y basándose en las coordenadas x e y intercambiadas; y
descodificar, a partir del flujo de bits, los coeficientes del bloque de datos de vídeo basándose en la información descodificada;
en circunstancias en donde los coeficientes del bloque de datos de vídeo se exploran en el segundo orden de exploración:
descodificar, a partir del flujo de bits, información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de datos de vídeo de acuerdo con el segundo orden de exploración y basándose en las coordenadas x e y descodificadas por entropía; y
descodificar, a partir del flujo de bits, los coeficientes del bloque de datos de vídeo basándose en la información descodificada;
generar un bloque residual para el bloque de datos de vídeo basándose, al menos en parte, en los coeficientes descodificados del bloque de datos de vídeo; y
reconstruir el bloque de datos de vídeo basándose, al menos en parte, en el bloque residual generado, en donde la coordenada x y la coordenada y intercambiada, y la coordenada y y la coordenada x intercambiada, respectivamente, se descodifican usando una codificación por entropía adaptativa al contexto con estadísticas comunes que se basan en al menos un contexto, indicando las estadísticas comunes una probabilidad de que cada bin de las coordenadas x e y comprenda un valor dado, actualizándose las estadísticas comunes basándose en los bins de la coordenada x y la coordenada y intercambiada, y basándose en los bins de la coordenada y y la coordenada x intercambiada, respectivamente; y
en donde la probabilidad de que cada bin de la coordenada x e y comprenda un valor dado cuando se explora en el segundo orden de exploración es igual o similar a la probabilidad de que cada bin de la coordenada x e y intercambiada, respectivamente, comprenda el valor dado cuando los coeficientes se exploran en el primer orden de exploración.
2. El aparato de la reivindicación 1, en donde el primer orden de exploración y el segundo orden de exploración son simétricos uno con respecto a otro.
3. El aparato de la reivindicación 1 o 2, en donde el primer orden de exploración comprende un orden de exploración horizontal y el segundo orden de exploración comprende un orden de exploración vertical, y en donde el orden de exploración horizontal y el orden de exploración vertical se originan en una posición común dentro del bloque.
4. El aparato de cualquiera de las reivindicaciones 1-3, en donde descodificar por entropía cada una de las coordenadas x e y y las coordenadas x e y intercambiadas comprende descodificar por entropía una secuencia de uno o más bins, en donde las estadísticas asociadas con los uno o más bins indican las probabilidades de que cada uno de los bins tenga un valor dado.
5. Un método que comprende:
recibir un flujo de bits de datos de vídeo;
descodificar por entropía, a partir del flujo de bits, coordenadas x e y que indican una posición horizontal y una posición vertical, respectivamente, de un último coeficiente no nulo de una pluralidad de coeficientes de un bloque de datos de vídeo de acuerdo con uno de un primer orden de exploración o un segundo orden de exploración usado para codificar el bloque, siendo el segundo orden de exploración diferente del primer orden de exploración; en circunstancias en donde los coeficientes del bloque de datos de vídeo se exploran en el primer orden de exploración:
intercambiar las coordenadas x e y descodificadas por entropía para obtener coordenadas x e y intercambiadas; descodificar, a partir del flujo de bits, información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de datos de vídeo de acuerdo con el primer orden de exploración y basándose en las coordenadas x e y intercambiadas; y
descodificar, a partir del flujo de bits, los coeficientes del bloque de datos de vídeo basándose en la información descodificada;
en circunstancias en donde los coeficientes del bloque de datos de vídeo se exploran en el segundo orden de exploración:
descodificar, a partir del flujo de bits, información que indica posiciones de todos los otros coeficientes significativos dentro del bloque de datos de vídeo de acuerdo con el segundo orden de exploración y basándose en las coordenadas x e y descodificadas por entropía; y
descodificar, a partir del flujo de bits, los coeficientes del bloque de datos de vídeo basándose en la información descodificada;
generar un bloque residual para el bloque de datos de vídeo basándose, al menos en parte, en los coeficientes descodificados del bloque de datos de vídeo; y
reconstruir el bloque de datos de vídeo basándose, al menos en parte, en el bloque residual generado, en donde la coordenada x y la coordenada y intercambiada, y la coordenada y y la coordenada x intercambiada, respectivamente, se descodifican usando una codificación por entropía adaptativa al contexto con estadísticas comunes que se basan en al menos un contexto, indicando las estadísticas comunes una probabilidad de que cada bin de las coordenadas x e y comprenda un valor dado, actualizándose las estadísticas comunes basándose en los bins de la coordenada x y la coordenada y intercambiada, y basándose en los bins de la coordenada y y la coordenada x intercambiada, respectivamente; y
en donde la probabilidad de que cada bin de la coordenada x e y comprenda un valor dado cuando se explora en el segundo orden de exploración es igual o similar a la probabilidad de que cada bin de la coordenada x e y intercambiada, respectivamente, comprenda el valor dado cuando los coeficientes se exploran en el primer orden de exploración.
6. El método de la reivindicación 5, en donde el primer orden de exploración y el segundo orden de exploración son simétricos uno con respecto a otro.
7. El método de la reivindicación 5 o 6, en donde el primer orden de exploración comprende un orden de exploración horizontal y el segundo orden de exploración comprende un orden de exploración vertical, y en donde el orden de exploración horizontal y el orden de exploración vertical se originan en una posición común dentro del bloque.
8. El método de cualquiera de las reivindicaciones 5-7, que comprende además descodificar información que identifica el orden de exploración.
9. El método de cualquiera de las reivindicaciones 5-8, en donde descodificar por entropía cada una de las coordenadas x e y y las coordenadas x e y intercambiadas comprende descodificar por entropía una secuencia de uno o más bins, en donde las estadísticas asociadas con los uno o más bins indican las probabilidades de que cada uno de los bins tenga un valor dado.
10. Un medio legible por ordenador que comprende instrucciones que, cuando se ejecutan, realizan el método de cualquiera de las reivindicaciones 5-9.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41974010P | 2010-12-03 | 2010-12-03 | |
US201061426426P | 2010-12-22 | 2010-12-22 | |
US201061426360P | 2010-12-22 | 2010-12-22 | |
US201061426372P | 2010-12-22 | 2010-12-22 | |
US13/303,015 US9042440B2 (en) | 2010-12-03 | 2011-11-22 | Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2963135T3 true ES2963135T3 (es) | 2024-03-25 |
Family
ID=46162210
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES11802210.2T Active ES2673939T3 (es) | 2010-12-03 | 2011-11-30 | Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo en base a un orden de exploración para el bloque en codificación de vídeo |
ES21190476T Active ES2963135T3 (es) | 2010-12-03 | 2011-11-30 | Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES11802210.2T Active ES2673939T3 (es) | 2010-12-03 | 2011-11-30 | Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo en base a un orden de exploración para el bloque en codificación de vídeo |
Country Status (16)
Country | Link |
---|---|
US (2) | US9042440B2 (es) |
EP (4) | EP3361641B1 (es) |
JP (1) | JP5746363B2 (es) |
KR (1) | KR101523452B1 (es) |
CN (1) | CN103238323B (es) |
AU (1) | AU2011336601B2 (es) |
BR (1) | BR112013013650B1 (es) |
CA (1) | CA2818436C (es) |
ES (2) | ES2673939T3 (es) |
HK (1) | HK1185488A1 (es) |
IL (1) | IL226209A (es) |
MY (1) | MY161436A (es) |
RU (1) | RU2541226C2 (es) |
SG (1) | SG190691A1 (es) |
WO (1) | WO2012075193A1 (es) |
ZA (1) | ZA201304933B (es) |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10091529B2 (en) | 2010-07-09 | 2018-10-02 | Samsung Electronics Co., Ltd. | Method and apparatus for entropy encoding/decoding a transform coefficient |
PL3104616T3 (pl) | 2010-07-09 | 2017-10-31 | Samsung Electronics Co Ltd | Urządzenie do entropijnego dekodowania współczynników przekształcenia |
US9497472B2 (en) | 2010-11-16 | 2016-11-15 | Qualcomm Incorporated | Parallel context calculation in video coding |
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 |
US8755620B2 (en) | 2011-01-12 | 2014-06-17 | Panasonic Corporation | Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus for performing arithmetic coding and/or arithmetic decoding |
US8687904B2 (en) * | 2011-01-14 | 2014-04-01 | Panasonic Corporation | Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus which include arithmetic coding or arithmetic decoding |
US9106913B2 (en) | 2011-03-08 | 2015-08-11 | Qualcomm Incorporated | Coding of transform coefficients for video coding |
US10397577B2 (en) | 2011-03-08 | 2019-08-27 | Velos Media, Llc | Inverse scan order for significance map coding of transform coefficients in video coding |
CA2832086C (en) * | 2011-04-15 | 2018-10-23 | Blackberry Limited | Methods and devices for coding and decoding the position of the last significant coefficient |
ES2711671T3 (es) | 2011-06-28 | 2019-05-06 | Samsung Electronics Co Ltd | Procedimiento de decodificación de vídeo usando decodificación |
US9167253B2 (en) | 2011-06-28 | 2015-10-20 | Qualcomm Incorporated | Derivation of the position in scan order of the last significant transform coefficient in video coding |
CN106101727B (zh) | 2011-08-04 | 2019-10-08 | 寰发股份有限公司 | 基于上下文自适应二进制算术编码的方法及装置 |
US9888261B2 (en) * | 2011-11-08 | 2018-02-06 | Samsung Electronics Co., Ltd. | Method and device for arithmetic coding of video, and method and device for arithmetic decoding of video |
MX355319B (es) | 2011-11-08 | 2018-04-16 | Kt Corp | Método y aparato para exploración de coeficientes con base en el modo de división de la unidad de predicción. |
US9654139B2 (en) * | 2012-01-19 | 2017-05-16 | Huawei Technologies Co., Ltd. | High throughput binarization (HTB) method for CABAC in HEVC |
US10616581B2 (en) | 2012-01-19 | 2020-04-07 | Huawei Technologies Co., Ltd. | Modified coding for a transform skipped block for CABAC in HEVC |
US9743116B2 (en) | 2012-01-19 | 2017-08-22 | Huawei Technologies Co., Ltd. | High throughput coding 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 |
US9860527B2 (en) | 2012-01-19 | 2018-01-02 | Huawei Technologies Co., Ltd. | High throughput residual coding for a transform skipped block for CABAC in HEVC |
US9237344B2 (en) * | 2012-03-22 | 2016-01-12 | Qualcomm Incorporated | Deriving context for last position coding for video coding |
US9756327B2 (en) | 2012-04-03 | 2017-09-05 | Qualcomm Incorporated | Quantization matrix and deblocking filter adjustments for video coding |
KR20130112374A (ko) * | 2012-04-04 | 2013-10-14 | 한국전자통신연구원 | 고속 인트라 예측을 위한 영상 부호화 방법 및 장치 |
EP3637621B1 (en) | 2012-04-15 | 2023-06-07 | Samsung Electronics Co., Ltd. | Video decoding method using parameter update for de-binarization of entropy coded transformation coefficient, encoding apparatus using same for binarization |
US9621921B2 (en) | 2012-04-16 | 2017-04-11 | Qualcomm Incorporated | Coefficient groups and coefficient coding for coefficient scans |
WO2013175736A1 (ja) * | 2012-05-25 | 2013-11-28 | パナソニック株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置 |
AU2013264361B2 (en) | 2012-05-25 | 2017-01-05 | Sun Patent Trust | Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding/decoding device |
CA2841112C (en) | 2012-05-25 | 2019-09-17 | Panasonic Corporation | Moving picture coding and decoding using context adaptive binary arithmetic coding with fixed probability for some sample adaptive offset parameters |
WO2013183232A1 (ja) | 2012-06-04 | 2013-12-12 | パナソニック株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置 |
WO2014053518A1 (en) * | 2012-10-01 | 2014-04-10 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Scalable video coding using subblock-based coding of transform coefficient blocks in the enhancement layer |
EP2941000B1 (en) * | 2012-12-27 | 2020-11-04 | NEC Corporation | Video coding device, video coding method, and video coding program |
WO2014199551A1 (ja) * | 2013-06-11 | 2014-12-18 | 日本電気株式会社 | 映像符号化装置、映像符号化方法および映像符号化プログラム |
US9445132B2 (en) * | 2013-09-09 | 2016-09-13 | Qualcomm Incorporated | Two level last significant coefficient (LSC) position coding |
US9215464B2 (en) * | 2013-09-19 | 2015-12-15 | Blackberry Limited | Coding position data for the last non-zero transform coefficient in a coefficient group |
CN104853196B (zh) * | 2014-02-18 | 2018-10-19 | 华为技术有限公司 | 编解码方法和装置 |
US10404988B2 (en) * | 2014-03-16 | 2019-09-03 | Vid Scale, Inc. | Method and apparatus for the signaling of lossless video coding |
JP6341756B2 (ja) * | 2014-05-26 | 2018-06-13 | キヤノン株式会社 | 画像処理装置、画像処理装置の制御方法 |
US10531102B2 (en) | 2015-09-10 | 2020-01-07 | Samsung Electronics Co., Ltd. | Encoding device, decoding device, and encoding and decoding method thereof |
CN106657961B (zh) * | 2015-10-30 | 2020-01-10 | 微软技术许可有限责任公司 | 立体视频的混合数字-模拟编码 |
RU2606370C1 (ru) * | 2015-12-03 | 2017-01-10 | Общество с ограниченной ответственностью "РОБОСИВИ" (ООО "РОБОСИВИ") | Способ сегментирования лазерных сканов и система для его осуществления |
US10602192B2 (en) * | 2016-02-04 | 2020-03-24 | Mediatek Inc. | Methods and apparatuses for performing entropy encoding and entropy decoding with size determination of at least one bitstream portion |
EP3270594A1 (en) * | 2016-07-15 | 2018-01-17 | Thomson Licensing | Method and apparatus for advanced cabac context adaptation for last coefficient coding |
EP4236321A3 (en) | 2016-08-31 | 2023-09-13 | KT Corporation | Method and device for processing video signal |
US10735023B2 (en) | 2017-02-24 | 2020-08-04 | Texas Instruments Incorporated | Matrix compression accelerator system and method |
US10817587B2 (en) | 2017-02-28 | 2020-10-27 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
US10810281B2 (en) | 2017-02-24 | 2020-10-20 | Texas Instruments Incorporated | Outer product multipler system and method |
US11086967B2 (en) | 2017-03-01 | 2021-08-10 | Texas Instruments Incorporated | Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA) |
US10523968B2 (en) | 2017-09-18 | 2019-12-31 | Google Llc | Coding of last significant coefficient flags |
WO2019199838A1 (en) * | 2018-04-12 | 2019-10-17 | Futurewei Technologies, Inc. | Reducing context switching for coding transform coefficients |
US11128866B2 (en) | 2018-10-18 | 2021-09-21 | Qualcomm Incorporated | Scans and last coefficient position coding for zero-out transforms |
RU2767513C1 (ru) | 2018-12-28 | 2022-03-17 | Телефонактиеболагет Лм Эрикссон (Пабл) | Способ и оборудование для проведения выбора преобразования в кодере и декодере |
WO2020149594A1 (ko) * | 2019-01-15 | 2020-07-23 | 엘지전자 주식회사 | 영상 코딩 시스템에서 고주파 제로잉을 기반으로 레지듀얼 정보를 코딩하는 영상 디코딩 방법 및 그 장치 |
CN117278752A (zh) | 2019-03-12 | 2023-12-22 | Lg 电子株式会社 | 基于变换的图像编译方法及其装置 |
WO2020242260A1 (ko) * | 2019-05-31 | 2020-12-03 | 한국전자통신연구원 | 전역적 문맥을 이용하는 기계 학습 기반의 이미지 압축을 위한 방법 및 장치 |
WO2021010680A1 (ko) * | 2019-07-12 | 2021-01-21 | 엘지전자 주식회사 | 변환에 기반한 영상 코딩 방법 및 그 장치 |
CN112449192B (zh) * | 2019-08-27 | 2022-09-16 | 杭州海康威视数字技术股份有限公司 | 解码方法、编码方法及装置 |
US11785219B2 (en) | 2020-04-13 | 2023-10-10 | Qualcomm Incorporated | Coefficient coding for support of different color formats in video coding |
WO2024096895A1 (en) * | 2022-11-02 | 2024-05-10 | Google Llc | Wavefront scan order for transform coefficient coding |
Family Cites Families (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1679903A (en) | 1928-01-12 | 1928-08-07 | Chase Appliance Corp | Anticreeping device for railway rails |
US5295203A (en) | 1992-03-26 | 1994-03-15 | General Instrument Corporation | Method and apparatus for vector coding of video transform coefficients |
JPH06205388A (ja) | 1992-12-28 | 1994-07-22 | Canon Inc | 画像符号化装置 |
EP0607484B1 (en) | 1993-01-20 | 1998-09-09 | Samsung Electronics Co. Ltd. | Method and device for encoding and decoding image data |
EP1802136A3 (en) | 1995-03-15 | 2008-11-12 | Kabushiki Kaisha Toshiba | Moving picture coding and/or decoding systems |
US5838825A (en) | 1996-01-17 | 1998-11-17 | Matsushita Electric Industrial Co., Ltd. | Apparatus for decompressing image data which has been compressed using a linear transform |
US5818877A (en) | 1996-03-14 | 1998-10-06 | The Regents Of The University Of California | Method for reducing storage requirements for grouped data values |
US6301304B1 (en) | 1998-06-17 | 2001-10-09 | Lsi Logic Corporation | Architecture and method for inverse quantization of discrete cosine transform coefficients in MPEG decoders |
US6553147B2 (en) | 1998-10-05 | 2003-04-22 | Sarnoff Corporation | Apparatus and method for data partitioning to improving error resilience |
EP1041826A1 (en) | 1999-04-01 | 2000-10-04 | Lucent Technologies Inc. | Apparatus for coding data and apparatus for decoding block transform coefficients |
US6775414B1 (en) * | 1999-11-19 | 2004-08-10 | Ati International Srl | Variable-length code decoder |
US6680974B1 (en) | 1999-12-02 | 2004-01-20 | Lucent Technologies Inc. | Methods and apparatus for context selection of block transform coefficients |
US6650707B2 (en) * | 2001-03-02 | 2003-11-18 | Industrial Technology Research Institute | Transcoding apparatus and method |
US20020122483A1 (en) * | 2001-03-02 | 2002-09-05 | Matsushita Electric Industrial Co., Ltd. | Encoding circuit and method |
EP1391121B1 (en) | 2001-03-23 | 2012-08-15 | Nokia Corporation | Variable length coding |
US6856701B2 (en) | 2001-09-14 | 2005-02-15 | Nokia Corporation | Method and system for context-based adaptive binary arithmetic coding |
WO2003043346A1 (en) * | 2001-11-16 | 2003-05-22 | Ntt Docomo, Inc. | Image encoding method, image decoding method, image encoder, image decode, program, computer data signal, and image transmission system |
US7190840B2 (en) | 2002-01-07 | 2007-03-13 | Hewlett-Packard Development Company, L.P. | Transform coefficient compression using multiple scans |
JP3866580B2 (ja) | 2002-01-30 | 2007-01-10 | 日本電信電話株式会社 | 画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラム及びそれらのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7099387B2 (en) | 2002-03-22 | 2006-08-29 | Realnetorks, Inc. | Context-adaptive VLC video transform coefficients encoding/decoding methods and apparatuses |
JP4090862B2 (ja) | 2002-04-26 | 2008-05-28 | 松下電器産業株式会社 | 可変長符号化方法および可変長復号化方法 |
PT1467491E (pt) | 2002-05-02 | 2007-03-30 | Fraunhofer Ges Forschung | Codificação aritmética de coeficientes de transformação |
US7376280B2 (en) | 2002-07-14 | 2008-05-20 | Apple Inc | Video encoding and decoding |
US7483575B2 (en) | 2002-10-25 | 2009-01-27 | Sony Corporation | Picture encoding apparatus and method, program and recording medium |
US6646578B1 (en) | 2002-11-22 | 2003-11-11 | Ub Video Inc. | Context adaptive variable length decoding system and method |
US20050036549A1 (en) | 2003-08-12 | 2005-02-17 | Yong He | Method and apparatus for selection of scanning mode in dual pass encoding |
US7688894B2 (en) | 2003-09-07 | 2010-03-30 | Microsoft Corporation | Scan patterns for interlaced video content |
US7379608B2 (en) | 2003-12-04 | 2008-05-27 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. | Arithmetic coding for transforming video and picture data units |
US7599435B2 (en) | 2004-01-30 | 2009-10-06 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Video frame encoding and decoding |
US7522774B2 (en) | 2004-03-10 | 2009-04-21 | Sindhara Supermedia, Inc. | Methods and apparatuses for compressing digital image data |
US20060078049A1 (en) | 2004-10-13 | 2006-04-13 | Nokia Corporation | Method and system for entropy coding/decoding of a video bit stream for fine granularity scalability |
NO322043B1 (no) | 2004-12-30 | 2006-08-07 | Tandberg Telecom As | Fremgangsmate for forenklet entropikoding |
US8311119B2 (en) * | 2004-12-31 | 2012-11-13 | Microsoft Corporation | Adaptive coefficient scan order |
US7609904B2 (en) | 2005-01-12 | 2009-10-27 | Nec Laboratories America, Inc. | Transform coding system and method |
JP2006211304A (ja) | 2005-01-28 | 2006-08-10 | Matsushita Electric Ind Co Ltd | 映像符号化装置、映像復号化装置、映像符号化方法、映像復号化方法、映像符号化プログラムおよび映像復号化プログラム |
US20060227865A1 (en) | 2005-03-29 | 2006-10-12 | Bhaskar Sherigar | Unified architecture for inverse scanning for plurality of scanning scheme |
EP1768415A1 (en) | 2005-09-27 | 2007-03-28 | Matsushita Electric Industrial Co., Ltd. | Adaptive scan order of DCT coefficients and its signaling |
US8599925B2 (en) | 2005-08-12 | 2013-12-03 | Microsoft Corporation | Efficient coding and decoding of transform blocks |
US20070071331A1 (en) | 2005-09-24 | 2007-03-29 | Xiteng Liu | Image compression by economical quaternary reaching method |
WO2007043583A1 (ja) | 2005-10-11 | 2007-04-19 | Matsushita Electric Industrial Co., Ltd. | 画像符号化装置、画像復号化装置及びこれらの方法 |
EP1958453B1 (en) | 2005-11-30 | 2017-08-09 | Koninklijke Philips N.V. | Encoding method and apparatus applying coefficient reordering |
KR100867995B1 (ko) | 2006-01-07 | 2008-11-10 | 한국전자통신연구원 | 동영상 데이터 인코딩/디코딩 방법 및 그 장치 |
US7884742B2 (en) | 2006-06-08 | 2011-02-08 | Nvidia Corporation | System and method for efficient compression of digital data |
US8275045B2 (en) | 2006-07-12 | 2012-09-25 | Qualcomm Incorporated | Video compression using adaptive variable length codes |
US8942292B2 (en) | 2006-10-13 | 2015-01-27 | Qualcomm Incorporated | Efficient significant coefficients coding in scalable video codecs |
US7369066B1 (en) | 2006-12-21 | 2008-05-06 | Lsi Logic Corporation | Efficient 8×8 CABAC residual block transcode system |
US8098735B2 (en) | 2006-12-21 | 2012-01-17 | Lsi Corporation | Efficient 8×8 CABAC residual block decode |
EP2109993B1 (de) | 2006-12-27 | 2012-08-01 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes |
BRPI0720806B1 (pt) | 2007-01-18 | 2023-03-28 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Corrente de dados de vídeo de qualidade escalonável |
KR101356733B1 (ko) | 2007-03-07 | 2014-02-05 | 삼성전자주식회사 | 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치 |
WO2008111511A1 (ja) | 2007-03-14 | 2008-09-18 | Nippon Telegraph And Telephone Corporation | 符号量推定方法、装置、そのプログラムおよび記録媒体 |
US7885473B2 (en) | 2007-04-26 | 2011-02-08 | Texas Instruments Incorporated | Method of CABAC coefficient magnitude and sign decoding suitable for use on VLIW data processors |
US7813567B2 (en) | 2007-04-26 | 2010-10-12 | Texas Instruments Incorporated | Method of CABAC significance MAP decoding suitable for use on VLIW data processors |
US8428133B2 (en) | 2007-06-15 | 2013-04-23 | Qualcomm Incorporated | Adaptive coding of video block prediction mode |
US8571104B2 (en) | 2007-06-15 | 2013-10-29 | Qualcomm, Incorporated | Adaptive coefficient scanning in video coding |
US7535387B1 (en) | 2007-09-10 | 2009-05-19 | Xilinx, Inc. | Methods and systems for implementing context adaptive binary arithmetic coding |
US8204327B2 (en) | 2007-10-01 | 2012-06-19 | Cisco Technology, Inc. | Context adaptive hybrid variable length coding |
KR101394153B1 (ko) | 2007-12-11 | 2014-05-16 | 삼성전자주식회사 | 양자화 방법 및 장치, 역양자화 방법 및 장치 |
US8891615B2 (en) | 2008-01-08 | 2014-11-18 | Qualcomm Incorporated | Quantization based on rate-distortion modeling for CABAC coders |
US8977064B2 (en) | 2008-02-13 | 2015-03-10 | Qualcomm Incorporated | Rotational transcoding for JPEG or other coding standards |
KR101375668B1 (ko) | 2008-03-17 | 2014-03-18 | 삼성전자주식회사 | 변환 계수의 부호화, 복호화 방법 및 장치 |
US8179974B2 (en) | 2008-05-02 | 2012-05-15 | Microsoft Corporation | Multi-level representation of reordered transform coefficients |
EP2154894A1 (en) * | 2008-08-15 | 2010-02-17 | Thomson Licensing | Video coding with coding of the locations of significant coefficients in a block of coefficients |
US7932843B2 (en) | 2008-10-17 | 2011-04-26 | Texas Instruments Incorporated | Parallel CABAC decoding for video decompression |
EP2182732A1 (en) | 2008-10-28 | 2010-05-05 | Panasonic Corporation | Switching between scans in image coding |
CA2745314A1 (en) | 2008-12-03 | 2010-06-10 | Nokia Corporation | Switching between dct coefficient coding modes |
US8004431B2 (en) | 2008-12-09 | 2011-08-23 | Qualcomm Incorporated | Fast parsing of variable-to-fixed-length codes |
WO2010070897A1 (ja) | 2008-12-16 | 2010-06-24 | パナソニック株式会社 | 動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、プログラム、及び集積回路 |
KR20110106402A (ko) | 2009-01-27 | 2011-09-28 | 톰슨 라이센싱 | 비디오 인코딩 및 디코딩에서 변환 선택을 위한 방법 및 장치 |
JP5004986B2 (ja) | 2009-03-19 | 2012-08-22 | キヤノン株式会社 | スキャン変換装置及び画像符号化装置、並びにそれらの制御方法 |
JP5302769B2 (ja) | 2009-05-14 | 2013-10-02 | キヤノン株式会社 | スキャン変換装置及び画像符号化装置及びそれらの制御方法 |
WO2010143853A2 (ko) | 2009-06-07 | 2010-12-16 | 엘지전자 주식회사 | 비디오 신호의 디코딩 방법 및 장치 |
KR20100136890A (ko) | 2009-06-19 | 2010-12-29 | 삼성전자주식회사 | 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법 |
WO2011002914A1 (en) | 2009-06-30 | 2011-01-06 | Massachusetts Institute Of Technology | System and method for providing high throughput entropy coding using syntax element partitioning |
US8218645B2 (en) | 2009-07-17 | 2012-07-10 | Nec Corporation | Method and apparatus for encoding and decoding by wavelet transform |
US8619866B2 (en) | 2009-10-02 | 2013-12-31 | Texas Instruments Incorporated | Reducing memory bandwidth for processing digital image data |
US8477845B2 (en) | 2009-10-16 | 2013-07-02 | Futurewei Technologies, Inc. | Predictive adaptive scan ordering for video coding |
KR101457894B1 (ko) | 2009-10-28 | 2014-11-05 | 삼성전자주식회사 | 영상 부호화 방법 및 장치, 복호화 방법 및 장치 |
KR20110045949A (ko) | 2009-10-28 | 2011-05-04 | 삼성전자주식회사 | 회전 변환을 이용한 영상 부호화, 복호화 방법 및 장치 |
TW201119407A (en) | 2009-11-19 | 2011-06-01 | Thomson Licensing | Method for coding and method for reconstruction of a block of an image |
WO2011087908A1 (en) | 2010-01-15 | 2011-07-21 | Thomson Licensing | Video coding using compressive sensing |
US8588536B2 (en) | 2010-02-22 | 2013-11-19 | Texas Instruments Incorporated | Guaranteed-rate tiled image data compression |
US20110243220A1 (en) | 2010-04-05 | 2011-10-06 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding image and method and apparatus for decoding image using adaptive coefficient scan order |
DK3435674T3 (da) | 2010-04-13 | 2023-08-21 | Ge Video Compression Llc | Kodning af signifikanskort og transformationskoefficientblokke |
PL3104616T3 (pl) | 2010-07-09 | 2017-10-31 | Samsung Electronics Co Ltd | Urządzenie do entropijnego dekodowania współczynników przekształcenia |
US9215470B2 (en) | 2010-07-09 | 2015-12-15 | Qualcomm Incorporated | Signaling selected directional transform for video coding |
US20120027081A1 (en) | 2010-07-30 | 2012-02-02 | Cisco Technology Inc. | Method, system, and computer readable medium for implementing run-level coding |
US9154801B2 (en) | 2010-09-30 | 2015-10-06 | Texas Instruments Incorporated | Method and apparatus for diagonal scan and simplified coding of transform coefficients |
US8976861B2 (en) | 2010-12-03 | 2015-03-10 | Qualcomm Incorporated | Separately coding the position of a last significant coefficient of a video block in video coding |
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 |
US20120163472A1 (en) | 2010-12-22 | 2012-06-28 | Qualcomm Incorporated | Efficiently coding scanning order information for a video 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 |
SG191869A1 (en) | 2011-01-07 | 2013-08-30 | Agency Science Tech & Res | Method and an apparatus for coding an image |
US8687904B2 (en) * | 2011-01-14 | 2014-04-01 | Panasonic Corporation | Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus which include arithmetic coding or arithmetic decoding |
US8891617B2 (en) | 2011-01-18 | 2014-11-18 | Google Inc. | Method and system for processing video data |
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 |
US8861599B2 (en) * | 2011-03-08 | 2014-10-14 | Sony Corporation | Context reduction for last transform position coding |
US10397577B2 (en) | 2011-03-08 | 2019-08-27 | Velos Media, Llc | Inverse scan order for significance map coding of transform coefficients in video coding |
US9106913B2 (en) | 2011-03-08 | 2015-08-11 | Qualcomm Incorporated | Coding of transform coefficients for video coding |
US8861593B2 (en) | 2011-03-15 | 2014-10-14 | Sony Corporation | Context adaptation within video coding modules |
US8446301B2 (en) | 2011-04-15 | 2013-05-21 | Research In Motion Limited | Methods and devices for coding and decoding the position of the last significant coefficient |
US9167253B2 (en) | 2011-06-28 | 2015-10-20 | Qualcomm Incorporated | Derivation of the position in scan order of the last significant transform coefficient in video coding |
EP4391545A3 (en) | 2012-01-20 | 2024-10-02 | GE Video Compression, LLC | Transform coefficient coding |
-
2011
- 2011-11-22 US US13/303,015 patent/US9042440B2/en active Active
- 2011-11-30 CA CA2818436A patent/CA2818436C/en active Active
- 2011-11-30 BR BR112013013650-2A patent/BR112013013650B1/pt active IP Right Grant
- 2011-11-30 AU AU2011336601A patent/AU2011336601B2/en active Active
- 2011-11-30 MY MYPI2013001659A patent/MY161436A/en unknown
- 2011-11-30 WO PCT/US2011/062715 patent/WO2012075193A1/en active Application Filing
- 2011-11-30 SG SG2013035324A patent/SG190691A1/en unknown
- 2011-11-30 CN CN201180057872.6A patent/CN103238323B/zh active Active
- 2011-11-30 ES ES11802210.2T patent/ES2673939T3/es active Active
- 2011-11-30 JP JP2013542151A patent/JP5746363B2/ja active Active
- 2011-11-30 RU RU2013130251/08A patent/RU2541226C2/ru active
- 2011-11-30 EP EP18165549.9A patent/EP3361641B1/en active Active
- 2011-11-30 EP EP11802210.2A patent/EP2647204B1/en active Active
- 2011-11-30 ES ES21190476T patent/ES2963135T3/es active Active
- 2011-11-30 EP EP21190476.8A patent/EP3926833B1/en active Active
- 2011-11-30 EP EP20172383.0A patent/EP3709519B8/en active Active
- 2011-11-30 KR KR1020137017304A patent/KR101523452B1/ko active IP Right Grant
-
2013
- 2013-05-07 IL IL226209A patent/IL226209A/en active IP Right Grant
- 2013-07-02 ZA ZA2013/04933A patent/ZA201304933B/en unknown
- 2013-11-18 HK HK13112890.1A patent/HK1185488A1/zh unknown
-
2014
- 2014-07-31 US US14/448,936 patent/US9055290B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2963135T3 (es) | Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo | |
ES2864623T3 (es) | Codificación de parámetros de cuantificación (QP) en codificación de video | |
ES2908241T3 (es) | Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable | |
ES2973247T3 (es) | Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo | |
ES2841424T3 (es) | Diseño unificado para esquemas de división de imágenes | |
ES2844549T3 (es) | Inicialización del parámetro de Rice para la codificación de niveles de coeficiente en un proceso de codificación de vídeo | |
AU2011336589B2 (en) | Separately coding the position of a last significant coefficient of a video block in video coding | |
CA2867764C (en) | Grouping bypass coded syntax elements in video coding | |
EP2656608B1 (en) | Using a most probable scanning order to efficiently code scanning order information for a video block in video coding | |
US20130272390A1 (en) | Uniform granularity for quantization matrix in video coding | |
US20120163448A1 (en) | Coding the position of a last significant coefficient of a video block in video coding | |
JP2015533061A (ja) | コンテキスト適応型、マルチレベル有意性コーディングに関するコンテキスト導出 | |
WO2012088331A1 (en) | Efficiently coding scanning order information for a video block in video coding |