ES2673939T3 - 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 - Google Patents
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 Download PDFInfo
- Publication number
- ES2673939T3 ES2673939T3 ES11802210.2T ES11802210T ES2673939T3 ES 2673939 T3 ES2673939 T3 ES 2673939T3 ES 11802210 T ES11802210 T ES 11802210T ES 2673939 T3 ES2673939 T3 ES 2673939T3
- Authority
- ES
- Spain
- Prior art keywords
- coordinate
- block
- coordinates
- scan order
- probability
- 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
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
Procedimiento de codificación de coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo, comprendiendo el procedimiento: realizar una codificación por entropía adaptable al contexto de coordenadas -x e -y que indican una posición horizontal y una posición vertical, respectivamente, de un último coeficiente distinto de cero dentro del bloque de acuerdo con un orden de exploración asociado al bloque, en el que la realización de codificación por entropía adaptable al contexto incluye utilizar estadísticas que están basadas en por lo menos un contexto, y en el que las estadísticas indican una probabilidad de que cada una de las coordenadas -x e -y comprenda un valor determinado cuando los coeficientes de los bloques de datos de vídeo son explorados en un primer orden de exploración, siendo la probabilidad de que las coordenadas -x e -y comprendan un valor determinado igual o similar a las probabilidades de que las coordenadas -x e -y intercambiadas comprendan un valor determinado cuando los coeficientes son explorados en un segundo orden de exploración diferente del primer orden de exploración; en el que los coeficientes del bloque de datos de vídeo se exploran en el primer orden de exploración como parte de la realización de la codificación por entropía adaptable al contexto de las coordenadas -x e -y, codificando la coordenada -x y la coordenada -y utilizando las estadísticas de manera que la coordenada -x se codifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado y la coordenada -y se codifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado; y, en el que los coeficientes del bloque de datos de vídeo se exploran en el segundo orden de exploración, intercambiando las coordenadas -x e -y, y como parte de la realización de codificación por entropía adaptable al contexto de las coordenadas -x e -y, codificando la coordenada -x intercambiada y la coordenada -y intercambiada utilizando las estadísticas de manera que la coordenada -x intercambiada se codifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado y la coordenada -y intercambiada se codifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado.
Description
5
10
15
20
25
30
35
40
45
50
55
60
DESCRIPCION
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.
Esta solicitud reivindica el beneficio de la solicitud provisional americana n° 61/419.740, presentada el 3 de diciembre de 2010, la solicitud provisional americana n° 61/426.426, presentada el 22 de diciembre de 2010, la solicitud provisional americana n° 61/426.360, presentada el 22 de diciembre de 2010, y la solicitud provisional americana n° 61/426.372, presentada el 22 de diciembre de 2010.
CAMPO TÉCNICO
Esta descripción se refiere a 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, incluyendo televisores digitales, sistemas de transmisión digital directa, sistemas de transmisión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, tabletas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos móviles o de radio satélite, los denominados "teléfonos inteligentes", dispositivos de teleconferencia de vídeo, dispositivos de transmisión 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 los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU- T H.264/MPEG-4, Parte 10, codificación avanzada de vídeo (AVC), el estándar de codificación de vídeo de alta eficiencia (HEVC) actualmente en desarrollo, y extensiones de dichos estándares. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar 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-imágenes) y/o una predicción temporal (entre-imágenes) para reducir o eliminar redundancia inherente en secuencias de vídeo. Para codificación de vídeo basada en bloques, un segmento de vídeo (es decir, una trama de vídeo o una parte de una trama de vídeo) puede dividirse 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 una parte intra-codificada (I) de una parte de una imagen se codifican utilizando una predicción espacial respecto a unas muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en una parte inter-codificada (P o B) de una imagen pueden utilizar una predicción espacial respecto a muestras de referencia en bloques vecinos en la misma imagen o una predicción temporal 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 a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original a codificar 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 forman 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 intra-codificador y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformada, dando como resultado coeficientes de transformación residuales, que luego pueden cuantificarse. Los coeficientes de transformación cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes de transformación, y puede aplicarse una codificación por entropía para lograr una compresión aún mayor.
El siguiente documento ilustra las técnicas del estado de la técnica que se ha descrito anteriormente: DAVIEST y otros (BBC): "Suggestion for a Test Model", 1. JCT-VC MEETING; 15-4-2010 -23-4-2010; DRESDEN; (JOINT COLLABORATIVE TEAM ON VIDEO CODING OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG16); URL:
HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVCSITE/, no. JCTVC-A033, 7 May 2010 (), XP030007526, ISSN: 0000-0049.
HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVCSITE/, no. JCTVC-A033, 7 May 2010 (), XP030007526, ISSN: 0000-0049.
DESCRIPCIÓN
Esta descripció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 diferente de cero, 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 del último coeficiente significativo para el bloque. Las técnicas de esta descripción pueden mejorar la eficiencia para la codificación de información de posición del último coeficiente significativo para bloques de datos de vídeo utilizados para codificar los bloques codificando la
5
10
15
20
25
30
35
40
45
50
55
60
información de posición del último coeficiente significativo para un bloque particular en base a 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 del último coeficiente significativo para los bloques cuando se codifica la información. Las técnicas de esta descripción también pueden permitir que los sistemas de codificación tengan menos complejidad respecto a otros sistemas, cuando codifican información de posición del último coeficiente significativo para los bloques, codificando la información de posición del último coeficiente significativo para un bloque particular utilizando estadísticas comunes cuando uno de una pluralidad de órdenes de exploración se utiliza para codificar el bloque.
En un ejemplo, la eficiencia de codificación puede mejorarse, y la complejidad del sistema de codificación puede reducirse, codificando las 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 orden de exploración pueden ser simétricos entre sí (o por lo menos parcialmente simétricos). Debido a la simetría entre el primer y el segundo orden de exploración, la probabilidad de que la coordenada -x comprenda un valor determinado 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 manera similar, la probabilidad de que la coordenada -y comprenda un valor determinado 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 exploración orden, y viceversa. En otras palabras, las coordenadas -x e -y cuando el orden de exploración comprende el primer orden de exploración pueden tener la misma o similar probabilidad de comprender un valor determinado como las coordenadas intercambiadas -x e -y, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. Como tal, las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas pueden codificarse utilizando estadísticas comunes para fines de codificación por entropía adaptable al contexto, lo que puede resultar en el uso de sistemas de codificación que tienen menos complejidad respecto a otros sistemas. Además, las estadísticas comunes pueden actualizarse en base a las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas, lo que puede hacer que las estadísticas sean más precisas que las estadísticas similares actualizadas utilizando otras técnicas y, por lo tanto, en una codificación de las coordenadas respectivas de una manera más eficiente.
En otro ejemplo, la eficacia de la codificación puede mejorarse codificando información de posición del último coeficiente significativo para un bloque de datos de vídeo de una manera incremental, en la medida necesaria, lo que puede resultar en una codificación de la información de una manera más eficiente. Además, en casos en que es necesario codificar la información en su totalidad, la eficiencia de codificación puede mejorarse codificando la información utilizando codificación por entropía adaptable al contexto, de modo que las estadísticas utilizadas para codificar la información se seleccionen en base por lo menos parcialmente en un orden de exploración asociado al bloque. Codificando la información de esta manera puede resultar en un uso de estadísticas más preciso que cuando se utilizan otros procedimientos, y, una vez más, en una codificación de información de posición del último coeficiente significativo para el bloque de manera más eficiente.
Las técnicas de esta descripción pueden utilizarse con cualquier metodología de codificación por entropía adaptable al contexto, incluyendo CABAC, codificación por entropía de división de intervalo de probabilidad (PIPE), u otra metodología de codificación por entropía adaptable al contexto. CABAC se describe en esta descripción para fines de ilustración, pero sin limitación en cuanto a las técnicas ampliamente descritas en esta descripción. También, 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.
Por consiguiente, las técnicas de esta descripción pueden permitir el uso de procedimientos de codificación más eficaces respecto a otros procedimientos, y el uso de sistemas de codificación que tienen menos complejidad respecto a otros sistemas, cuando se codifica información de posición del último coeficiente significativo para uno o más bloques de datos de vídeo. De esta manera, puede haber un ahorro relativo de bits para una secuencia de bits codificada que incluye la información, y una reducción relativa de la complejidad para un sistema utilizado para codificar la información, si se utilizan las técnicas de esta descripción.
En un ejemplo, un procedimiento de codificación de 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 distinto de cero 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 codificación de coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero dentro del bloque según el orden de
5
10
15
20
25
30
35
40
45
50
55
60
exploración cuando el orden de exploración comprende un segundo orden de exploración, en el que 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 distinto de cero 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 distinto de cero 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 el que 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 medios para codificar coordenadas -x e -y que indican una posición de un último coeficiente distinto de cero 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 medios para codificar las coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero 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 el que el segundo orden de exploración es diferente del primer orden de exploración.
Las técnicas descritas en esta descripción pueden implementarse en hardware, software, firmware o combinaciones de los mismos. Si se implementa en hardware, puede realizarse 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, tal como un microprocesador, un circuito integrado para aplicaciones específicas (ASIC), una matriz de puertas programable en campo (FPGA) o un procesador de señal digital (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.
Por consiguiente, esta descripció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, donde las instrucciones hacen que el procesador codifique coordenadas x- e y- que indican una posición de un último coeficiente distinto de cero 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 codifique coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero dentro del bloque según el orden de exploración cuando el orden de exploración comprende un segundo orden de exploración, en el que el segundo orden de exploración es diferente del primer orden de exploración.
Los detalles de uno o más ejemplos se explican en los dibujos adjuntos y la siguiente descripción. Otras características, objetos y ventajas serán claras a partir de la descripción y los dibujos, y a partir de las reivindicaciones. La invención se define en las reivindicaciones adjuntas.
BREVE DESCRIPCIÓN DE DIBUJOS
La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y decodificación de vídeo que puede implementar técnicas para codificar eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripció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 eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar técnicas para decodificar de manera eficiente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción.
Las figuras 4A-4C son diagramas conceptuales que ilustran un ejemplo de un bloque de datos de vídeo e información correspondiente de posición de coeficientes significativos e información de posición del último coeficiente significativo.
Las figuras 5A-5C son diagramas conceptuales que ilustran ejemplos de bloques de datos de vídeo explorados utilizando un orden de exploración en zigzag, un orden de exploración horizontal y un orden de exploración vertical.
5
10
15
20
25
30
35
40
45
50
55
60
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 del último coeficiente significativo en base a información de orden de exploración, consistente con las técnicas de esta descripción.
La figura 7 es un diagrama de flujo que ilustra un ejemplo de un procedimiento para codificar eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción.
La figura 8 es un diagrama de flujo que ilustra un ejemplo de un procedimiento para codificar eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción.
La figura 9 es un diagrama de flujo que ilustra un ejemplo de un procedimiento para decodificar de manera eficiente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción.
La figura 10 es un diagrama de flujo que ilustra otro ejemplo de un procedimiento para codificar eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción.
La figura 11 es un diagrama de flujo que ilustra otro ejemplo de un procedimiento para decodificar de manera eficiente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción.
DESCRIPCIÓN DETALLADA
Esta descripción presenta 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 distinto de cero, 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 del último coeficiente significativo para el bloque. Las técnicas de esta descripción pueden mejorar la eficiencia para codificar información de posición del último coeficiente significativo para bloques de datos de vídeo utilizados para codificar los bloques codificando información de posición del último coeficiente significativo para un bloque particular en base a 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 del último coeficiente significativo para los bloques cuando se codifica la información. Las técnicas de esta descripción también pueden permitir el uso de sistemas de codificación que tienen menos complejidad en comparación con otros sistemas cuando codifican información de posición del último coeficiente significativo para los bloques, codificando información de posición del último coeficiente significativo para un bloque particular utilizando estadísticas comunes cuando uno de una pluralidad de los órdenes de exploración se utiliza para codificar el bloque.
En esta descripción, el término "codificación" se refiere a una codificación que se produce en el codificador o a una decodificación que se produce en el decodificador. De manera similar, el término "codificador" se refiere a un codificador, un decodificador o un codificador/decodificador combinado ("CODEC"). Los términos codificador, decodificador y CODEC se refieren todos a máquinas específicas diseñadas para la codificación (codificación y/o decodificación) de datos de vídeo consistentes con esta descripción.
En general, las pruebas empíricas realizadas en el desarrollo de estas técnicas han demostrado una correlación entre información de posición del último coeficiente significativo e información del 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 según un orden de exploración asociado al bloque, es decir, el orden de exploración utilizado 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 determinada 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 utilice para codificar el bloque. Por consiguiente, codificando información de posición del último coeficiente significativo para el bloque utilizando codificación por entropía adaptable al contexto, de modo que las estadísticas utilizadas para codificar la información se seleccionen en base por lo menos en parte en la información de orden de exploración para el bloque, puede producir estadísticas más precisas, y así puede dar como resultado una codificación más eficiente de información de posición del último coeficiente significativo
Adicionalmente, de acuerdo con las técnicas de esta descripción, la información de posición del último coeficiente significativo para un bloque de datos de vídeo puede codificarse utilizando coordenadas -x e -y que indican la
5
10
15
20
25
30
35
40
45
50
55
60
posición del ú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 pueden indicar una probabilidad de que una coordenada, por ejemplo, una coordenada -x o una coordenada -y, que corresponde a la posición del último coeficiente significativo dentro del bloque según el orden de exploración, comprenda un valor determinado (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 por lo menos parcialmente simétricos) entre sí, la probabilidad de que una coordenada -x comprenda un valor determinado cuando el orden de exploración comprende el primer orden de exploración pueda ser 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 manera similar, la probabilidad de que una coordenada -y comprenda un valor determinado cuando el orden de exploración comprende el primer orden de exploración puede ser 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, las coordenadas -x e -y cuando el orden de exploración comprende el primer orden de exploración pueden tener la misma o similar probabilidad de comprender un valor determinado como coordenadas -x e -y "permutadas" o intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. Como tal, las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas pueden codificarse utilizando estadísticas comunes.
En consecuencia, codificando las coordenadas -x e -y cuando el orden de exploración comprende el primer orden de exploración y codificando las coordenadas -x e -y intercambiadas cuando el orden de exploración comprende el segundo orden de exploración utilizando las estadísticas comunes puede dar como resultado una complejidad reducida del sistema de codificación. Además, la actualización de las estadísticas comunes basadas 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 información de posición del último coeficiente significativo.
Como ejemplo, las técnicas de esta descripción pueden mejorar la eficacia de codificación y reducir la complejidad del 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 la codificación de 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 utilizando estadísticas comunes para fines de codificación por entropía adaptable al contexto, lo que puede resultar en el uso de 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 utilizarse dentro de los sistemas para codificar bloques de datos de vídeo. Además, las estadísticas comunes pueden actualizarse en función de las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas, lo que puede hacer que las estadísticas sean más precisas que las estadísticas similares actualizadas con otras técnicas, por ejemplo, estadísticas actualizadas para un orden de exploración particular que puede utilizarse 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 del último coeficiente significativo para el bloque, pueden codificarse de manera más eficiente que la información similar codificada utilizando otros procedimientos.
Como otro ejemplo, las técnicas de esta descripción pueden mejorar la eficacia de la codificación codificando información de posición del último coeficiente significativo para un bloque de datos de vídeo de manera incremental, en la medida necesaria. Como resultado, la información de posición del último coeficiente significativo puede codificarse utilizando menos información que cuando se utilizan otras técnicas, por ejemplo, codificando siempre información de posición del último coeficiente significativo para el bloque en su totalidad. Además, en casos en que sea necesario codificar información de posición del último coeficiente significativo en su totalidad, la eficiencia de codificación puede mejorarse codificando la información utilizando codificación por entropía adaptable al contexto, de modo que las estadísticas utilizadas para codificar la información se seleccionen por lo menos en parte sobre información de orden de exploración para el bloque. Codificando la información de posición del último coeficiente significativo de esta manera puede resultar en el uso de estadísticas más precisas que cuando se utilizan otros procedimientos, por ejemplo, seleccionando las estadísticas sin considerar la información de orden de exploración para el bloque y, una vez más, en la codificación de la información de posición del último coeficiente significativo de manera más eficiente.
En los ejemplos descritos anteriormente, para codificar información de posición del último coeficiente significativo para un bloque de datos de vídeo utilizando estadísticas, la información puede codificarse mediante un proceso de codificación aritmética binaria adaptable al contexto (CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basadas en uno o más contextos. En otros ejemplos, otros procesos de codificación por entropía
5
10
15
20
25
30
35
40
45
50
55
60
adaptable al contexto, tales como codificación de longitud variable adaptable al contexto (CAVLC), codificación por entropía de división de intervalo de probabilidad (PIPE) y otros procesos de codificación por entropía adaptable al contexto, también pueden utilizar las técnicas de esta descripción. La CABAC se describe en esta descripción para fines de ilustración, pero sin limitación en cuanto a las técnicas ampliamente descritas en esta descripción. También, 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.
La codificación de información de posición del último coeficiente significativo para uno o más bloques de datos de vídeo de la manera descrita anteriormente puede permitir el uso de procedimientos de codificación más eficientes respecto a otros procedimientos y el uso de sistemas de codificación que tienen menos complejidad respecto a otros sistemas. De esta manera, puede haber un ahorro relativo de bits para una secuencia de bits codificada que incluya la información, y una reducción relativa de la complejidad para un sistema utilizado para codificar la información, cuando se utilizan las técnicas de esta descripción.
La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y decodificación de vídeo 10 que puede implementar técnicas para codificar eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción. Tal como se muestra en la figura 1, el sistema 10 incluye un dispositivo fuente 12 que transmite vídeo codificado a un dispositivo de destino 14 a través de un canal de comunicación 16. El dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos. En algunos casos, el dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender dispositivos de comunicación inalámbrica, tales como teléfonos inalámbricos, denominados radioteléfonos móviles 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, en cuyo caso el canal de comunicación 16 es inalámbrico.
Sin embargo, las técnicas de esta descripción, que se refieren a codificar eficazmente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, no están necesariamente limitadas a aplicaciones o configuraciones inalámbricas. Estas técnicas pueden aplicarse generalmente a cualquier escenario donde se realice codificación o decodificación, incluyendo transmisiones de televisión por aire, 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 esté codificado en un medio de almacenamiento o recuperado y decodificado desde un medio de almacenamiento u otros escenarios. Por consiguiente, el canal de comunicación 16 no se requiere y las técnicas de esta descripción pueden aplicarse a configuraciones en las que se aplica codificación o en las que se aplica decodificación, por ejemplo, sin comunicación de datos entre dispositivos de codificación y decodificación.
En el ejemplo de la figura 1, el dispositivo fuente 12 incluye una fuente de vídeo 18, un codificador de vídeo 20, un modulador/demodulador (módem) 22 y un transmisor 24. El dispositivo de destino 14 incluye un receptor 26, un módem 28, un decodificador de vídeo 30 y un dispositivo de visualización 32. De acuerdo con esta descripción, el codificador de vídeo 20 del dispositivo fuente 12 y/o el decodificador de vídeo 30 del dispositivo de destino 14 puede(n) configurarse para aplicar las técnicas para codificar eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo. En otros ejemplos, un dispositivo fuente y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo fuente 12 puede recibir datos de vídeo desde una fuente de vídeo externa 18, tal como una cámara externa. Asimismo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema ilustrado 10 de la figura 1 es sólo un ejemplo. Las técnicas para codificar eficientemente información de posición del último coeficiente significativo en base a 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 decodificación de vídeo digital. Aunque generalmente las técnicas de esta descripción se realizan mediante un dispositivo de codificación de vídeo, las técnicas también pueden realizarse mediante un codificador/decodificador de vídeo, típicamente denominado "CODEC". Además, las técnicas de esta descripción también pueden realizarse a través de un pre-procesador de vídeo El dispositivo fuente 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de codificación en los cuales el dispositivo fuente 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera substancialmente simétrica de modo que cada uno de los dispositivos 12, 14 incluya componentes de codificación y decodificación de vídeo. Por lo tanto, el sistema 10 puede soportar transmisión de vídeo unidireccional o bidireccional entre dispositivos de vídeo 12, 14, por ejemplo, para transmisión de vídeo, reproducción de vídeo, emisión de vídeo o vídeo telefonía.
La fuente de vídeo 18 del dispositivo fuente 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contenga vídeo previamente capturado, y/o una transmisión de vídeo
5
10
15
20
25
30
35
40
45
50
55
60
desde un proveedor de contenido de vídeo. Como alternativa adicional, la fuente de vídeo 18 puede generar datos basados en gráficos por ordenador como vídeo fuente, o una combinación de vídeo en vivo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo fuente 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o vídeo teléfonos. Tal como se ha mencionado anteriormente, sin embargo, las técnicas descritas en esta descripción pueden ser aplicables a la codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o por cable. En cada caso, el vídeo capturado, previamente capturado o generado por ordenador puede ser codificado 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 un estándar de comunicación, y transmitida 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 la señal. 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 sobre el 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 aquí para codificar eficientemente información de posición del último coeficiente significativo en base a 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 utiliza el decodificador 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 del ú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 muestra los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una variedad 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 diodos emisores de luz orgánicos (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 por cable. 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 generalmente representa cualquier medio de comunicación adecuado, o un conjunto de diferentes medios de comunicación, para transmitir datos de vídeo del dispositivo fuente 12 al dispositivo de destino 14, incluyendo cualquier combinación adecuada de medios por cable o inalámbricos. El canal de comunicación 16 puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación del dispositivo fuente 12 al dispositivo de destino 14. En otros ejemplos, los dispositivos de codificación o decodificación pueden implementar técnicas de esta descripción sin ninguna comunicación entre tales dispositivos. Por ejemplo, un dispositivo de codificación puede codificar y almacenar una secuencia de bits codificada coherente con las técnicas de esta descripción. Alternativamente, un dispositivo de decodificación puede recibir o recuperar una secuencia de bits codificada, y decodificar la secuencia de bits coherente con las técnicas de esta descripción.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con un estándar de compresión de vídeo, tal como el estándar ITU-T H.264, alternativamente denominado MPEG-4, parte 10, Codificación Avanzada de Vídeo (AVC). Las técnicas de esta descripción, sin embargo, no están limitadas a ningún estándar de codificación particular. Otros ejemplos incluyen MPEG-2, ITU-T H.263 y el estándar de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo. En general, las técnicas de esta descripción se describen con relación a HEVC, pero debe entenderse que estas técnicas también pueden utilizarse junto con otros estándares de codificación de vídeo. Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden integrarse con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas u otro hardware y software para manejar la codificación de audio y vídeo en un flujo de datos común o flujos de datos separados. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexor ITU H.223 u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse como cualquiera de una variedad de circuitos de codificador y decodificador adecuados, tal como uno o más microprocesadores, procesadores de señal digital (DSPs), circuitos integrados para aplicaciones específicas (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. El codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar incluidos cada uno en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CODEC) en una cámara, ordenador, dispositivo móvil, dispositivo de abonado, dispositivo de difusión, decodificador, servidor respectivo o similar.
5
10
15
20
25
30
35
40
45
50
55
60
Una secuencia de vídeo típicamente incluye una serie de tramas de vídeo. Un grupo de imágenes (GOP) generalmente comprende una serie de una o más tramas de vídeo. Un GOP puede incluir datos de sintaxis en una cabecera del GOP, una cabecera de una o más tramas del GOP, o en otros lugares, que describa una serie 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, normalmente opera en bloques de vídeo dentro de tramas de vídeo individuales para codificar los datos de vídeo. De acuerdo con el estándar ITU-T H.264, un bloque de vídeo puede corresponder a un macrobloque o una división de un macrobloque. De acuerdo con otros estándares, por ejemplo, HEVC descrito con mayor detalle a continuación, un bloque de vídeo puede corresponder a una unidad de codificación (por ejemplo, una unidad de codificación más grande), o a una divisió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 un estándar de codificación específico. Cada trama de vídeo puede incluir una pluralidad de segmentos, es decir, partes de la trama de vídeo. Cada segmento puede incluir una pluralidad de bloques de vídeo, que pueden estar dispuestos en divisiones, también denominadas sub-bloques.
Dependiendo del estándar de codificación especificado, los bloques de vídeo pueden dividirse en varios tamaños de sub-bloque "N*N", tal como 16*16, 8*8, 4*4, 2*2, etc. En esta descripción, "N*N" y "N por N" pueden utilizarse indistintamente para referirse a las dimensiones en píxeles del bloque en términos de dimensiones verticales y horizontales, por ejemplo, 16*16 píxeles o 16 por 16 píxeles. En general, un bloque de 16*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). Del mismo modo, un bloque N*N generalmente tiene N píxeles en una dirección vertical y N píxeles en una dirección horizontal, 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 tienen por qué tener necesariamente 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*M píxeles, donde M no es necesariamente igual a N. Como ejemplo, en el estándar ITU-T H.264, 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 divisiones de un macrobloque de 16 por 16. En otros estándares, por ejemplo, HEVC, los bloques pueden definirse de manera más general respecto a su tamaño, por ejemplo, como unidades de codificación y divisiones 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 píxeles, o bloques de coeficientes de transformación en el dominio de transformada, por ejemplo, después de la aplicación de una transformada, tal como una transformada de coseno discreta (DCT), una transformación de enteros, una transformada wavelet o una transformada conceptualmente similar a datos residuales para un bloque de vídeo determinado, en la que los datos residuales representan las diferencias de píxeles entre los datos de vídeo para el bloque y los datos predictivos generados para el bloque. En algunos casos, los bloques de vídeo pueden comprender bloques de coeficientes de transformación cuantificados en el dominio de transformada donde, después de la aplicación de una transformación a datos residuales para un bloque de vídeo dado, los coeficientes de transformación resultantes también se cuantifican.
La división de bloques cumple una función importante en las técnicas de codificación de vídeo basadas en bloques. Utilizar bloques más pequeños para codificar datos de vídeo puede resultar en una mejor predicción de los datos para ubicaciones de una trama de vídeo que incluyen altos niveles de detalle, y puede reducir el error resultante (es decir, desviación de los datos de predicción de los datos de vídeo fuente), representados como datos residuales. Mientras que potencialmente se reducen los datos residuales, tales técnicas pueden, sin embargo, requerir información de sintaxis adicional para indicar cómo se dividen los bloques más pequeños en relación a una trama de vídeo, y pueden dar como resultado una mayor tasa de bits de vídeo codificado. Por consiguiente, en algunas técnicas, la división de bloques puede depender del equilibrio de la reducción deseable en datos residuales con el aumento resultante en 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 divisiones de los mismos (es decir, sub-bloques) pueden considerarse bloques de vídeo. Además, puede considerarse que una parte es una pluralidad de bloques de vídeo (por ejemplo, macrobloques, o unidades de codificación), y/o sub-bloques (divisiones de macrobloques, o unidades de subcodificación). Cada parte puede ser una unidad decodificable independientemente de una trama de vídeo. Alternativamente, las propias tramas pueden ser unidades decodificables, u otras partes de una trama pueden definirse como unidades decodificables. Además, un GOP, también denominado secuencia, puede definirse como una unidad decodificable.
Actualmente se están realizando esfuerzos para desarrollar un nuevo estándar de codificación de vídeo, actualmente denominado codificación de vídeo de alta eficiencia (HEVC). El emergente estándar HEVC también puede denominarse H.265. Los esfuerzos de estandarización se basan en un modelo de un dispositivo de codificación de vídeo denominado modelo de prueba HEVC (HM). El HM supone varias capacidades de dispositivos de codificación de vídeo sobre dispositivos de acuerdo con, por ejemplo, lTU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación intra-predicción, HM proporciona hasta treinta y cinco modos
5
10
15
20
25
30
35
40
45
50
55
60
de codificación intra-predicción, por ejemplo, en base al tamaño de un bloque que esté siendo codificado en 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 de unidad básica a la cual se aplican diversas herramientas de codificación para la compresión. En H.264, también puede denominarse macrobloque. Los datos de sintaxis dentro de una secuencia de bits pueden definir una unidad de codificación (LCU) más grande, que es una CU más grande en términos de número de píxeles. En general, una CU tiene un propósito similar a un macrobloque de H.264, excepto que una CU no tiene una distinción de tamaño. Por lo tanto, una UC puede ser dividida, o "partida" en sub-CUs.
Una LCU puede asociarse a una estructura de datos de árbol cuaternario que indica cómo se divide la LCU. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU de una LCU, donde un nodo raíz corresponde a la LCU, y otros nodos corresponden a las CUs de la LCU. Si una CU determinada se divide en cuatro sub-CUs, 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-CUs. 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 está dividida en cuatro sub-CUs. Puede definir recursivamente información de sintaxis para una CU determinada, y puede depender de si la CU se está dividida en sub-CUs.
Una CU que no está dividida (es decir, una CU correspondiente a un nodo terminal, o "hoja" en un árbol cuaternario determinado) puede incluir una o más unidades de predicción (PUs). En general, una pU representa la totalidad o una parte de la CU correspondiente e incluye datos para recuperar una muestra de referencia para la PU a los efectos de realizar la predicción para la CU. Por ejemplo, cuando la CU está codificada 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 está codificada 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, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una trama de referencia al cual apunta el vector de movimiento, y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento. Los datos para la CU que definen una o más PUs de la CU también pueden describir, por ejemplo, la división de la CU en la una o más PUs. Los modos de división pueden diferir entre si la CU no está codificada, codificada en modo intra-predicción o codificada en modo de inter-predicción.
Una CU que tiene una o más PUs también puede incluir una o más unidades de transformación (TUs). Después de la predicción para una CU utilizando una o más PUs, tal como se ha descrito anteriormente, un codificador de vídeo puede calcular uno o más bloques residuales para las respectivas partes de la CU que corresponden a una o más PUs. Los bloques residuales pueden representar una diferencia de píxeles entre los datos de vídeo para la CU y los datos predichos para la una o más PUs. Un conjunto de valores residuales puede transformarse, explorarse y cuantificarse para definir un conjunto de coeficientes de transformación cuantificados. Una TU puede definir una estructura de datos de división que indica información de división para los coeficientes de transformación que es sustancialmente similar a la estructura de datos de árbol cuaternario descrito anteriormente con referencia a una CU. Una TU no está necesariamente limitada al tamaño de una PU. Por lo tanto, las TUs pueden ser más grandes o más pequeñas que las PUs 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 a una CU pueden subdividirse en unidades más pequeñas utilizando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). En este caso, los nodos hoja del RQT pueden denominarse TUs, para los cuales las muestras residuales correspondientes pueden transformarse y cuantificarse.
Después de la codificación intra-predictiva o inter-predictiva para producir datos predictivos y residuales, y después de cualquier transformación (como la transformada entera de 4*4 u 8*8 utilizada en H.264/AVC o una transformada de coseno discreta DCT) para producir coeficientes de transformación, puede realizarse la cuantificación de los coeficientes de transformación. La cuantificación generalmente se refiere a un proceso en el que los coeficientes de transformación se cuantifican para posiblemente reducir la cantidad de datos utilizados para representar los coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos o todos los coeficientes. Por ejemplo, un valor de n bits puede redondearse a un valor de m bits durante la cuantificación, donde n es 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 transformación cuantificados). La codificación por entropía puede ajustarse a las técnicas de esta descripción respecto a codificar eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, y también puede utilizar otras técnicas de codificación por entropía, tales como codificación de longitud variable adaptable al contexto (CAVLC), CABAC, PIPE
5
10
15
20
25
30
35
40
45
50
55
60
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 transformación cuantificados pueden codificarse utilizando las técnicas de codificación por entropía.
Debe observarse que la predicción, transformación y 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 del estándar de codificación especificado. Por consiguiente, las técnicas de esta descripción, relativas a codificar eficazmente información de posición del último coeficiente significativo en base a 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 transformación 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) del correspondiente dato de vídeo. Como tal, las técnicas de esta descripción pueden realizarse para cada uno de los componentes Y, U y V de un bloque de datos de vídeo determinado.
Para codificar bloques de datos de vídeo tal como se ha descrito anteriormente, también puede generarse y codificarse información respecto a la posición de coeficientes significativos dentro de un bloque determinado. Posteriormente, pueden codificarse los valores de los coeficientes significativos, tal como se ha descrito anteriormente. En H.264/AVC y el emergente estándar HEVC, cuando se utiliza un proceso de codificación por entropía adaptable al contexto, por ejemplo, un proceso 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, que se describen en mayor detalle a continuación, son diagramas conceptuales que ilustran un ejemplo de un bloque de 4*4 de coeficientes de transformación cuantificados y datos SM correspondientes.
Un procedimiento típico de codificación de SM puede describirse de la siguiente manera. Para un bloque de datos de vídeo determinado, puede codificarse un SM sólo si hay por lo menos un coeficiente significativo dentro del bloque. La presencia de coeficientes significativos dentro de un bloque de datos de vídeo determinado puede indicarse en un patrón de bloque codificado (por ejemplo, utilizando 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 utiliza para indicar si existe por lo 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 transformación, 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 por lo 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 coeficiente asociado al bloque. El orden de exploración puede definir el orden en que la importancia de cada coeficiente dentro del bloque se codifica como parte de la codificación SM. En otras palabras, la exploración puede serializar el bloque bidimensional de coeficientes a una representación unidimensional para determinar la importancia de los coeficientes. Pueden utilizarse diferentes órdenes de exploración (por ejemplo, zigzag, horizontal y vertical). Las figuras 5A-5C, que también se describen con mayor detalle a continuación, ilustran ejemplos de algunas de las diversas órdenes de exploración que pueden utilizarse para bloques de 8*8 de datos de vídeo. Sin embargo, las técnicas descritas también pueden aplicarse respecto a una amplia variedad 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 descripción también pueden considerar un orden de exploración que sea por sí mismo adaptativo en base a estadísticas asociadas a bloques de datos de vídeo previamente codificados (por ejemplo, bloques que tengan el mismo tamaño de bloque o modo de codificación que el bloque actual que está siendo codificado). 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 por lo menos un coeficiente significativo dentro de un bloque determinado, y un orden de exploración para el bloque, puede codificarse un SM para el bloque de la siguiente manera. El bloque bidimensional de coeficientes de transformación cuantificados puede asignarse primero a una matriz unidimensional utilizando 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,
5
10
15
20
25
30
35
40
45
50
55
60
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 en "1" si el coeficiente correspondiente es significativo, y establecerse en "0" si no es significativo (es decir, cero). Si un indicador de coeficiente significativo determinado 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 correspondiente coeficiente 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 en "1" si el coeficiente correspondiente es el último coeficiente significativo dentro de la matriz, y establecerse en "0" en caso contrario. Si llega a la última posición de la matriz de esta manera, y el proceso de codificación SM no finalizó con un indicador de último coeficiente significativo igual a "1", entonces el último coeficiente en la matriz (y, por lo tanto, el bloque dado el orden de exploración) puede deducirse que 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 coeficientes significativos e indicadores de último coeficiente significativo, respectivamente, correspondientes a datos de SM para el bloque representado en la figura 4A, presentado en mapa, en lugar de forma de matriz. Cabe señalar que los indicadores de coeficiente significativo y los indicadores de último coeficiente significativo, tal como se ha descrito anteriormente, pueden establecerse en valores distintos (por ejemplo, un indicador de coeficiente significativo puede establecerse en "0" si el coeficiente correspondiente es significativo y "1" si no es significativo, y un indicador de último coeficiente significativo puede establecerse en "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, tal 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 utilizarse un orden de exploración fijo para codificar bloques de datos de vídeo, tal como se ha descrito anteriormente, por ejemplo, el orden de exploración en zigzag. De acuerdo con otras técnicas, pueden utilizarse múltiples órdenes de exploración para codificar los bloques. En algunos ejemplos, puede utilizarse "exploración de coeficiente adaptativa" (ACS), en la que el orden de exploración se adapta en el tiempo, y el orden de exploración adaptado actualmente se utiliza para codificar un bloque particular de coeficientes en cualquier momento dado. Todavía en otras técnicas, el codificador de vídeo 20 puede analizar varias órdenes de exploración en base a una o más métricas de eficiencia de compresión y seleccionar el mejor orden de exploración para codificar los bloques. Además, el codificador de vídeo 20 puede indicar el orden de exploración al decodificador de vídeo 30 codificando un índice de ACS, que puede representar cualquiera de los distintos órdenes de exploración (por ejemplo, utilizando í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 ACS sólo cuando el último coeficiente significativo no está situado 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 "DC"). El codificador de vídeo 20 puede codificar el índice ACS de esta manera dado que el decodificador de vídeo 30 no necesita una indicación del orden de exploración utilizado por el codificador de vídeo 20 en el caso de que el último (y único) coeficiente significativo dentro del bloque esté situado en la posición DC, ya que todas las órdenes de exploración posibles pueden comenzar con la posición DC, tal 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 esté situado en la posición DC, el codificador de vídeo 20 puede codificar el índice ACS de la siguiente manera. 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, bin1 = "0") o no (por ejemplo, bin1 = "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 manera similar, el decodificador de vídeo 30 puede recibir y decodificar la primera señal y la segunda señal para determinar el índice ACS. Por consiguiente, en lugar de codificar siempre el índice ACS, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar el índice ACS sólo cuando el último coeficiente significativo no está situado en la posición DC.
Tal como se ha descrito anteriormente, de acuerdo con las técnicas de esta descripción, la información de posición del último coeficiente significativo para un bloque particular de datos de vídeo puede codificarse utilizando 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
5
10
15
20
25
30
35
40
45
50
55
60
la posición dentro del bloque. Por ejemplo, los números de fila y columna pueden ser relativos a números de fila y columna correspondientes a una posición de referencia, u "origen", dentro del bloque, por ejemplo, la posición DC. Como tal, de acuerdo con estas técnicas, la información de posición del último coeficiente significativo para un bloque de datos de vídeo no puede codificarse utilizando la codificación SM, tal como se ha descrito anteriormente, sino más bien codificando explícitamente las coordenadas -x e -y de la posición del ú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 del coeficiente significativo para el bloque.
En algunos ejemplos consistentes con las técnicas de esta descripción, para codificar las coordenadas -x e -y, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar, además, estadísticas que indican una probabilidad de una posición determinada 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, que corresponde a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración comprenda un valor determinado (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 anteriormente comprendan un valor determinado. El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar las estadísticas, y codificar las coordenadas -x e -y en base a las estadísticas, por ejemplo, utilizando codificación por entropía adaptable al contexto. En algunos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar las estadísticas utilizando información de posición del ú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 decodificador de vídeo 30 pueden actualizar las estadísticas en base a las coordenadas -x e -y para reflejar la probabilidad de que las coordenadas respectivas comprendan valores particulares. Tal como se descrito anteriormente, las estadísticas pueden variar dependiendo de qué orden de exploración se utilice para codificar el bloque.
Como ejemplo consistente con las técnicas de esta descripción, para codificar las coordenadas -x e -y en base a las estadísticas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye la aplicación de un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo 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 decodificador de vídeo 30 pueden utilizar 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 decodificador de vídeo 30 pueden seleccionar estadísticas únicas para codificar las coordenadas -x e -y cuando se utiliza un orden de exploración particular para codificar el bloque.
Además, en casos en los que una coordenada (por ejemplo, coordenada -y) se codifica después de otra coordenada (por ejemplo, coordenada -x), el codificador de vídeo 20 y/o el decodificador 30 pueden codificar la coordenada utilizando un valor de la otra coordenada previamente codificada como contexto. Es decir, puede utilizarse un valor de una de las coordenadas -x e -y previamente codificado para seleccionar adicionalmente estadísticas dentro del modelo de contexto que indiquen una probabilidad de que la otra coordenada actualmente codificada comprenda un valor determinado. El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden entonces utilizar las estadísticas seleccionadas para codificar las coordenadas -x e -y, realizando el proceso de codificación por entropía adaptable al contexto.
Como otro ejemplo consistente con las técnicas de esta descripción, las coordenadas -x e -y pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más bits, o "contenedores". En otras palabras, las coordenadas -x e -y pueden "convertirse en binarias". Como tal, para codificar las coordenadas -x e -y en base a las estadísticas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar cada contenedor de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptable 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 determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0" o "1 "). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor respectivo dentro de la palabra de código. En algunos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar las estimaciones de probabilidad utilizando valores de los correspondientes contenedores para bloques de datos de vídeo previamente codificados, por ejemplo, contenedores de palabras de código correspondientes a coordenadas -x e -y para los bloques codificados
5
10
15
20
25
30
35
40
45
50
55
60
previamente, por ejemplo, como parte de la determinación de las estadísticas en base a la información de posición del último coeficiente significativo para los bloques codificados previamente, tal como se ha descrito anteriormente. En otros ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 también pueden actualizar las estimaciones de probabilidad utilizando el valor de cada contenedor, por ejemplo, como parte de la actualización de las estadísticas basadas en las coordenadas -x e -y, tal como también se ha descrito anteriormente. El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden utilizar las estimaciones de probabilidad para codificar cada contenedor realizando el proceso de codificación por entropía adaptable al contexto.
Un inconveniente de las técnicas descritas anteriormente es que, al codificar la información de posición del último coeficiente significativo para un bloque de datos de vídeo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden utilizar estadísticas diferentes dependiendo del orden de exploración utilizado por el codificador de vídeo 20 y/o decodificador de vídeo 30 para codificar el bloque. En otras palabras, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar y mantener (por ejemplo, actualizar) una pluralidad de conjuntos de estadísticas para codificar la información de posición del último coeficiente significativo para bloques de datos de vídeo cuando una pluralidad de órdenes de exploración se utiliza para codificar los bloques. En algunos casos, los conjuntos de estadísticas determinados y mantenidos para órdenes de exploración que son simétricos entre sí pueden incluir la misma información, o información similar, tal como se ha descrito anteriormente. En estos casos, la determinación y el mantenimiento de los conjuntos de estadísticas puede dar como resultado un uso ineficaz de los recursos del sistema de codificación y una complejidad innecesaria del sistema de codificación.
Otro inconveniente de las técnicas descritas anteriormente es que cuando el codificador de vídeo 20 y/o el decodificador de vídeo 30 codifican la información de posición del coeficiente significativo para bloques de datos de vídeo utilizando estadísticas comunes, independientemente de los órdenes de exploración utilizados para codificar los bloques, las estadísticas pueden no ser tan precisas como las estadísticas que se determinan y mantienen (por ejemplo, actualizan) individualmente 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 con menor precisión que las estadísticas determinadas y mantenidas individualmente para el orden de exploración particular utilizado para codificar el bloque. En estos casos, la codificación de la información de posición del último coeficiente significativo utilizando 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 decodificador de vídeo 30 pueden codificar un bloque de datos de vídeo utilizando 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 DC. En estos casos, cuando una posición de un último coeficiente significativo dentro del bloque según 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 decodificador de vídeo 30 no necesitan codificar la posición del último coeficiente significativo dentro del bloque. En otras palabras, la codificación de la información de posición del último coeficiente significativo para el bloque en su totalidad, por ejemplo, representada utilizando las coordenadas -x e -y tal como se ha descrito anteriormente, puede no ser necesaria en este caso, ya que esto puede dar como resultado una eficiencia de codificación reducida.
Además, en el ejemplo anterior, cuando la posición del último coeficiente significativo dentro del bloque no corresponde a la posición común, y la información de posición del último coeficiente significativo para el bloque debe codificarse en su totalidad, la información, en algunos casos, puede codificarse utilizando estadísticas que no son precisas, por ejemplo, estadísticas que no aprovechan la correlación descrita anteriormente entre la información de posición del ú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.
Por consiguiente, esta descripción describe técnicas que pueden permitir codificar la información de posición del último coeficiente significativo para un bloque de datos de vídeo de manera más eficiente respecto a otras técnicas, y utilizar sistemas de codificación que tienen menos complejidad con relación a otros sistemas. Como ejemplo, la información de posición del último coeficiente significativo puede codificarse utilizando sistemas de codificación que tienen menos complejidad respecto a otros sistemas codificando la información utilizando estadísticas comunes cuando se utiliza uno de una pluralidad de órdenes de exploración para codificar el bloque, por ejemplo, codificando las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas que indican la información, dependiendo del orden de exploración utilizado para codificar el bloque. De acuerdo con este ejemplo, la información de posición del último coeficiente significativo también puede codificarse de manera más eficiente actualizando las estadísticas comunes en base a 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 del último coeficiente significativo puede codificarse de una manera más eficiente codificando la información de manera incremental, en la medida
5
10
15
20
25
30
35
40
45
50
55
60
necesaria, y, cuando se codifica la información en su totalidad, haciéndolo en función del orden de exploración, por ejemplo, utilizando el orden de exploración como contexto.
En algunos ejemplos, el codificador de vídeo 20 del dispositivo fuente 12 puede configurarse para codificar ciertos bloques de datos de vídeo (por ejemplo, uno o más macrobloques, o TUs de una CU), y el decodificador 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 descripción, como ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para codificar las 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 decodificador de vídeo 30 pueden configurarse adicionalmente para codificar las 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 (o por lo menos parcialmente simétricos) entre sí. 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, 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 DC, tal como se ha descrito anteriormente.
En este ejemplo, para codificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse adicionalmente para determinar estadísticas que indican una probabilidad de que cada una de las coordenadas -x e -y comprenda un valor determinado, en el que la codificación de las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas comprende codificación basada en las estadísticas. Por ejemplo, la probabilidad de que la coordenada -x comprenda un valor determinado puede utilizarse para codificar la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado puede utilizarse para codificar la coordenada -y y la coordenada -x intercambiada. El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse adicionalmente para actualizar las estadísticas basadas 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 determinado puede actualizarse utilizando la coordenada - x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado puede actualizarse utilizando la coordenada -y la coordenada -x intercambiadas.
Como ejemplo, para codificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas basadas en las estadísticas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye el codificador de vídeo 20 y/o el decodificador de vídeo 30 aplicando un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir una de las coordenadas -x e -y, las coordenadas -x e -y intercambiadas, y el orden de exploración.
Debe observarse que, en algunos ejemplos, el codificador de vídeo 20 y/o el decodificador 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 ejemplo, el tercer orden de exploración puede ser un orden de exploración en zigzag, o un orden de exploración diagonal, 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 DC.
En este ejemplo, en algunos casos, el codificador de vídeo 20 y/o el decodificador 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 decodificador de vídeo 30 pueden configurarse adicionalmente para codificar información que identifica las posiciones de otros coeficientes significativos dentro del bloque, es decir, la información de posición del coeficiente significativo para el bloque.
Como otro ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para codificar las coordenadas -x e -y que indican una posición de un último coeficiente significativo dentro de un bloque particular de datos de vídeo según 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, 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 DC.
5
10
15
20
25
30
35
40
45
50
55
60
En este ejemplo, para codificar las coordenadas -x e -y, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para codificar información que indica si la coordenada -x corresponde a la posición común, información de código que indica si la coordenada -y corresponde a la posición común y, en 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, información del código que identifica el orden de exploración. El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse adicionalmente para que, en el caso de que la coordenada -x no corresponda a la posición común, codifique la coordenada -x en función del orden de exploración y, en el caso de la coordenada -y no corresponda a la posición común, codifique la coordenada -y en función del orden de exploración.
En este ejemplo, para codificar la coordenada -x y la coordenada -y en base al orden de exploración, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye un codificador de vídeo 20 y/o un decodificador de vídeo 30 que aplica un modelo de contexto basado en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir el orden de exploración.
En cualquier caso, después de codificar información de posición del ú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 SM, para el bloque de la manera descrita anteriormente, el codificador de vídeo 20 y/o el decodificador 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_abs_level_minus1" y "coeff_sign_flag", respectivamente) dentro del bloque.
Por consiguiente, las técnicas de esta descripción pueden permitir que el codificador de vídeo 20 y/o el decodificador de vídeo 30 codifiquen información de posición del último coeficiente significativo para el bloque de manera más eficiente que cuando se utilizan otros procedimientos, y pueden habilitar el codificador de vídeo 20 y/o el decodificador de vídeo 30 para que tengan menos complejidad respecto a otros sistemas. De esta manera, puede haber un ahorro de bits relativo para una secuencia de bits codificada incluyendo información de posición del último coeficiente significativo, y una reducción relativa de la complejidad para el codificador de vídeo 20 y/o el decodificador de vídeo 30 utilizado para codificar la información, cuando se utilizan las técnicas de esta descripción.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse como cualquiera de una variedad de circuitos codificadores o decodificadores adecuados, según corresponda, tales como uno o más microprocesadores, procesadores de señal digital (DSP), circuitos integrados para aplicaciones específicas (ASIC), matrices de puertas programables en campo (FPGA), circuitos lógicos discretos, software, hardware, firmware o cualquier combinación de los mismos. El codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar incluidos cada uno en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador de vídeo combinado (CODEC). Un aparato que incluye el codificador de vídeo 20 y/o el decodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrico, tal como un teléfono móvil.
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 eficientemente información de posición del último coeficiente significativo en base a la información de orden de exploración para un bloque de datos de vídeo consistente con las técnicas de esta descripció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, CUs y divisiones o subdivisiones de los mismos. La intra-codificación depende de la predicción espacial para reducir o eliminar redundancia espacial en vídeo dentro de una trama de vídeo determinado. La inter-codificación se basa en la predicción temporal para reducir o eliminar redundancia temporal en vídeo dentro de tramas adyacentes de una secuencia de vídeo. El modo intra-modo (modo I) puede referirse a cualquiera de los distintos modos basados en compresión espaciales, y los inter-modos, tales como predicción unidireccional (modo P) o predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresión basados en el tiempo.
Tal 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 a codificar. 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 transformación 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 una unidad de cuantificación inversa 58, un módulo de transformación inversa 60 y un sumador 62. También puede incluirse un filtro de desbloqueo (no mostrado en la figura 2) para filtrar límites del bloque para eliminar el efecto de pixelado del vídeo reconstruido. Si se desea, el filtro de desbloqueo típicamente filtraría 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 para ser codificado. El trama o segmento puede dividirse en varios bloques de vídeo. La unidad de estimación de movimiento
5
10
15
20
25
30
35
40
45
50
55
60
42 y la unidad de compensación de movimiento 44 pueden realizar la codificación inter-predictiva de un bloque de vídeo recibido dado con relación a uno o más bloques en uno o más tramas de referencia para proporcionar 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 determinado respecto a uno o más bloques vecinos en el mismo trama o segmento como 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, en función de los resultados de codificación (por ejemplo, velocidad de codificación y nivel de distorsión resultantes) y en base a un tipo de trama o segmento para el trama o segmento que incluye el bloque recibido determinado que se está codificado, 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 utilizarse en una trama de referencia o segmento de referencia. En general, la intra-predicción implica la predicción de un bloque actual respecto a bloques vecinos previamente codificados, mientras que la interpredicció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 por separado 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) respecto al bloque actual que se codifica dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que coincide estrechamente con el bloque a codificar, en términos de diferencia de píxeles, el cual puede determinarse por una suma de diferencia absoluta (SAD), una suma de diferencia cuadrada (SSD) u otras métricas de diferencia. Un vector de movimiento también puede indicar el desplazamiento de una división de un bloque. La compensación de movimiento puede implicar obtener o generar el bloque predictivo en función del 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 integrarse funcionalmente, 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 sub-enteros de la trama de referencia, por ejemplo, una trama I o una trama P, para fines de esta comparación. El estándar ITU H.264, como ejemplo, describe dos listas: lista 0, que incluye tramas de referencia que tienen un orden de visualización anterior al que se está codificando, y lista 1, que incluye tramas de referencia que tienen un orden de visualización posterior a la actual trama que se está codificado. 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 de la memoria 64 a un bloque que va a codificarse de una trama actual, por ejemplo, una trama P o una trama B. Si las tramas de referencia en la memoria 64 incluyen valores para píxeles sub-enteros, un vector de movimiento calculado por la unidad de estimación de movimiento 42 puede referirse a una ubicación de píxeles sub-enteros 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 sub-enteros de tramas de referencia almacenadas en la memoria 64 si no se almacenan valores para posiciones de píxeles sub-enteros 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 manera más general, bloque predictivo. La unidad de compensación de movimiento 44 puede calcular datos de predicción basados en el bloque predictivo.
El módulo de intra-predicción 46 puede intra-predecir un bloque actual, como 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, tal como se ha descrito anteriormente. En particular, el módulo de intra-predicción 46 puede determinar un modo de intra- predicción para utilizarse para codificar un bloque actual. En algunos ejemplos, el módulo de intra-predicción 46 puede codificar un bloque actual utilizando varios modos de intra-predicción, por ejemplo, durante pasadas de codificación separadas, y el módulo de intra-predicción 46 (o unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intra-predicción apropiado para utilizarse desde los modos probados. Por ejemplo, el módulo de intra-predicción 46 puede calcular valores de distorsión de velocidad utilizando un análisis de distorsión de velocidad para los diversos modos de intra-predicción probados, y seleccionar el modo de intra-predicción que tiene las mejores características de distorsión de velocidad entre los modos probados. El análisis de distorsión de velocidad generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque
5
10
15
20
25
30
35
40
45
50
55
60
original no codificado que se codificó para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) utilizada para producir el bloque codificado. El módulo de intra-predicción 46 puede calcular relaciones a partir de las distorsiones y velocidades para los diversos bloques codificados para determinar qué modo de intra-predicción presenta el mejor valor de distorsión de velocidad para el bloque.
Después de predecir un bloque actual, por ejemplo, utilizando 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 puede(n) realizar esta operación de resta. El módulo de transformación 52 puede aplicar una transformada, tal como una transformada de coseno discreta (DCT) o una transformación conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformación residuales. El módulo de transformación 52 puede realizar otras transformadas, tales como las definidas por el estándar H.264, que son conceptualmente similares a DCT. También pueden utilizarse transformadas de wavelet, transformadas de enteros, transformadas de sub-banda u otros tipos de transformadas. En cualquier caso, el módulo de transformación 52 puede aplicar la transformada al bloque residual, produciendo un bloque de coeficientes de transformación residuales. La transformada puede convertir la información residual de un dominio de píxeles a un dominio de transformada, tal como un dominio de frecuencia. La unidad de cuantificación 54 puede cuantificar los coeficientes de transformación residuales para reducir todavía más la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos 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 transformación cuantificados, que pueden incluir CAVLC, CABAC, PIPE u otra técnica de codificación por entropía. Tras 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 transformación cuantificados de codificación por entropía tal 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 la secuencia de bits de vídeo codificada. De acuerdo con algunos estándares de codificación, dichos elementos de sintaxis pueden incluir información de posición del último coeficiente significativo para el bloque (por ejemplo, para un macrobloque, o una TU de una CU), tal como se ha descrito anteriormente. Tal como también se ha descrito anteriormente, la información de posición del último coeficiente significativo puede consumir un porcentaje elevado de la tasa de bits de vídeo comprimido global si se codifica de manera ineficiente. Como tal, esta descripción describe técnicas que pueden permitir codificar la información de posición del último coeficiente significativo para el bloque de manera más eficiente que si se utilizan otros procedimientos. Además, esta descripción describe el uso de sistemas de codificación que tienen menos complejidad respecto a otros sistemas cuando se codifica la información de posición del ú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 descripción, como 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 cuando el orden de exploración comprende un primer orden de exploración. La unidad de codificación por entropía 56 puede estar configurada, además, 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 (o por lo menos parcialmente simétricos) entre sí. 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, donde los órdenes de exploración horizontal y vertical se originan en una posición común dentro del bloque, por ejemplo, la posición DC.
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 utilizado por la unidad de codificación por entropía 56 para codificar el bloque. Por ejemplo, el primer y el segundo orden de exploración pueden ser órdenes de exploración utilizados por el codificador de vídeo 20 para codificar bloques de datos de vídeo, y por decodificador de vídeo 30 para decodificar los bloques, dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el decodificador
5
10
15
20
25
30
35
40
45
50
55
60
de vídeo 30. En algunos ejemplos, el primer y el segundo orden de exploración pueden ser sólo algunos de los órdenes de exploración utilizados dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo orden de exploración pueden ser los únicos órdenes de exploración utilizados dentro del sistema 10 para codificar los bloques.
Además, las coordenadas -x e -y intercambiadas también corresponden a información de posición del último coeficiente significativo para el bloque, pero se procesan adicionalmente, es decir, se intercambian, por la unidad de codificación por entropía 56 para permitir codificar la información de una manera más eficiente que cuando se utilizan otras técnicas, tal como se ha descrito anteriormente. Específicamente, las coordenadas -x e -y intercambiadas pueden permitir el uso de estadísticas comunes para codificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas que indican información de posición del último coeficiente significativo para el bloque, tal como también se ha descrito anteriormente.
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 cada una de las coordenadas -x e -y comprendan un valor determinado, en el que la codificación de las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas comprende la codificación basada en las estadísticas. Por ejemplo, la probabilidad de que la coordenada -x comprenda un valor determinado puede utilizarse para codificar la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado puede utilizarse para codificar la coordenada -y y la coordenada -x intercambiada.
Generalmente, las estadísticas pueden indicar una probabilidad de una posición determinada 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 determinado (por ejemplo, "0", "1", "2", etc.).
Tal como se ha descrito anteriormente, debido a que el primer y el segundo orden de exploración pueden ser simétricos (o por lo menos parcialmente simétricos) entre sí, la probabilidad de que la coordenada -x comprenda un valor determinado 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 manera similar, la probabilidad de que la coordenada - y comprenda un valor determinado 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, las coordenadas -x e -y cuando el orden de exploración comprende el primer orden de exploración pueden tener la misma o similar probabilidad de que comprendan un valor determinado que las coordenadas -x e -y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. Como tal, las estadísticas pueden indicar, además, la probabilidad de que cada una de las coordenadas -x e -y intercambiadas comprenda un valor determinado. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estadísticas utilizando información de posición del ú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 previamente codificados.
La unidad de codificación por entropía 56 puede configurarse adicionalmente para actualizar las estadísticas basadas en las coordenadas -x e -y y las coordenadas -x e -y intercambiadas, de modo que la probabilidad de que la coordenada -x comprenda un valor determinado se actualiza utilizando la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado se actualiza utilizando la coordenada -y y la coordenada -x intercambiada. Por ejemplo, las estadísticas actualizadas pueden utilizarse para codificar información de posición del último coeficiente significativo para bloques codificados posteriormente de datos de vídeo de la manera que se ha descrito anteriormente.
Como ejemplo, para codificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas en base a las estadísticas, la unidad de codificación por entropía 56 puede configurarse para realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye una unidad de codificación por entropía 56 que aplica un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir una de las coordenadas -x e -y, las coordenadas intercambiadas - x e -y, y el orden de exploración. Tal como se ha mencionado anteriormente, además de CABAC, las técnicas descritas de intercambio de las coordenadas -x e -y para fines de codificación también pueden utilizarse en otras técnicas de codificación por entropía adaptable al contexto, tales como CAVLC, PIPE u otras técnicas de codificación por entropía adaptable al contexto.
5
10
15
20
25
30
35
40
45
50
55
60
En este ejemplo, la unidad de codificación por entropía 56 puede utilizar 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 utiliza el primer orden de exploración para codificar el bloque, y para codificar las coordenadas -x e -y intercambiadas cuando se utiliza el segundo orden de exploración para codificar el bloque. Además, en casos en los que una coordenada (por ejemplo, coordenada -y) se codifica después de otra coordenada (por ejemplo, coordenada -x), la unidad de codificación por entropía 56 puede codificar la coordenada utilizando un valor de la otra coordenada previamente codificada como contexto. Es decir, puede utilizarse 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 utilizado 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 determinado. La unidad de codificación por entropía 56 puede utilizar entonces las estadísticas seleccionadas para codificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas llevando a cabo el proceso de codificación por entropía adaptable al contexto.
Tal como también se ha descrito anteriormente, en este ejemplo, las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más contenedores, es decir, "binarizada". Como tal, para codificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas en base a las estadísticas, la unidad de codificación por entropía 56 puede codificar cada contenedor de una palabra de código correspondiente a una determinada coordenada realizando el proceso de codificación por entropía adaptable 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 determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0 o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor 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 utilizando valores de los correspondientes contenedores para bloques de datos de vídeo previamente codificados, por ejemplo, contenedores de palabras codificadas correspondientes a coordenadas -x e -y y coordenadas -x e -y intercambiadas para los bloques previamente codificados, por ejemplo, como parte de la determinación de las estadísticas basadas en información de posición del último coeficiente significativo para los bloques previamente codificados, tal como se ha descrito anteriormente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada contenedor, por ejemplo, como parte de la actualización de las estadísticas basadas en las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas, tal como se ha descrito también anteriormente. La unidad de codificación por entropía 56 puede utilizar las estimaciones de probabilidad para codificar cada contenedor realizando el proceso de codificación por entropía adaptable al contexto.
Como otro ejemplo, en algunos casos, diferentes valores de un contenedor de una palabra de código unaria para una coordenada (por ejemplo, -x) pueden dar como resultado diferentes estimaciones de probabilidad para un contenedor correspondiente de una palabra de código unaria para la otra coordenada (por ejemplo, -y). Como tal, cuando se codifica un contenedor de una palabra de código unaria para una coordenada utilizando estimaciones de probabilidad correspondientes al contenedor, tal como se ha descrito anteriormente, utilizando estimaciones de probabilidad que incluyen información sobre un valor de un contenedor, por ejemplo, un contenedor 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 permitir una codificación eficiente. Por ejemplo, el contenedor de la palabra de código unaria para la otra coordenada puede ser un contenedor que corresponda al contenedor de la palabra de código unaria para una coordenada, por ejemplo, los contenedores pueden encontrarse situados en posiciones de contenedor iguales o similares dentro de sus respectivas palabras de código.
La codificación de 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 del último coeficiente significativo para un bloque de datos de vídeo, generalmente) de esta manera "intercalada" utilizando contenedores previamente codificados como contextos puede permitir el uso de información mutua de las coordenadas -x e -y respectivas, lo que puede permitir codificar las coordenadas de una manera 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 manera intercalada, generalmente. En algunos ejemplos, la unidad de codificación por entropía 56 puede configurarse para codificar contenedores individuales de las palabras de código para las respectivas coordenadas -x e -y de una manera intercalada. En otros ejemplos, la unidad de codificación por entropía 56 puede configurarse para codificar grupos de contenedores de las palabras de código de manera intercalada. Por ejemplo, algunos contenedores de una palabra de código para cada una de las coordenadas -x e -y pueden codificarse utilizando un primer modo de codificación (por ejemplo, un modo de codificación regular), mientras que el resto de los contenedores de la palabra de código pueden codificarse
5
10
15
20
25
30
35
40
45
50
55
60
utilizando un segundo modo de codificación (por ejemplo, un modo de codificación de derivación). Como tal, la unidad de codificación por entropía 56 puede configurarse para codificar uno o más contenedores de la palabra de código correspondiente a una de las coordenadas codificadas utilizando el primer modo de codificación (por ejemplo, regular) antes de codificar uno o más contenedores de la palabra de código correspondiente al otro código de coordenadas utilizando el primer modo de codificación, seguido de codificación de uno o más contenedores de la palabra de código correspondiente a la coordenada codificada utilizando el segundo modo de codificación (por ejemplo, de derivación) antes de codificar uno o más contenedores de la palabra de código correspondiente a la otra coordenada codificada utilizando el segundo modo de codificación. En otros ejemplos, la unidad de codificación por entropía 56 puede configurarse para codificar los contenedores de las palabras de código codificadas utilizando el segundo modo de codificación conjuntamente.
Por consiguiente, separar la codificación de los contenedores de la palabra de código para cada una de las coordenadas -x e -y de la manera descrita anteriormente puede permitir agrupar contenedores decodificados utilizando un modo de codificación particular (por ejemplo, modo de derivación), lo que puede mejorar el rendimiento de la codificación.
En otras palabras, en 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 contenedores, 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 adaptable al contexto que incluye aplicar el modelo de contexto que incluye las estadísticas basadas 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 por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basadas por lo menos en parte en un valor de por lo menos un contenedor de la secuencia correspondiente a la otra coordenada. Además, la unidad de codificación por entropía 56 puede configurarse para codificar uno o más contenedores de la secuencia correspondiente a una de las coordenadas y uno o más contenedores de la secuencia correspondiente a la otra coordenada de manera intercalada.
En consecuencia, para codificar información de posición del ú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 manera intercalada, utilizando contenedores previamente codificados como contextos. Es decir, la unidad de codificación por entropía 56 puede configurarse para codificar cada contenedor de una palabra de código unaria para una coordenada determinada realizando un proceso de codificación por entropía adaptable al contexto que incluye aplicar un modelo de contexto basado en por lo menos un contexto, donde por lo menos un contexto puede incluir una posición del contenedor dentro de la palabra de código unaria, tal como se ha descrito anteriormente, y un valor de uno o más contenedores 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 manera intercalada, generalmente.
Debe observarse que, en otros ejemplos consistentes con las técnicas de esta descripción, pueden utilizarse 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.
Debe observarse 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 ejemplo, el tercer orden de exploración puede ser un orden de exploración en zigzag, o un orden de exploración diagonal, 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 DC.
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. Alternativamente, tal como se ha descrito anteriormente, 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 utiliza un orden de exploración adaptativa para codificar el bloque. Además, 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 demás coeficientes significativos dentro del bloque, es decir, la información de posición del coeficiente significativo para el bloque.
Por ejemplo, la información de posición del coeficiente significativo para el bloque puede representarse utilizando una secuencia de indicadores de coeficientes significativos, tal como se ha descrito anteriormente. Tal como también se ha descrito anteriormente, 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
5
10
15
20
25
30
35
40
45
50
55
60
adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto basado en por lo menos un contexto, donde por lo 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 determinado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad utilizando los valores de los correspondientes indicadores de coeficientes significativos para los bloques de datos de vídeo previamente codificados. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor determinado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden utilizarse para codificar información de posición de coeficiente significativo para bloques codificados posteriormente de datos de vídeo de la manera 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, 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 DC.
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 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, decodificar información que identifique el orden de exploración. La unidad de codificación por entropía 56 puede configurarse, además, para que, en caso de que la coordenada -x no corresponda a la posición común, codifique la coordenada -x en base al orden de exploración y, en caso de que la coordenada -y no corresponda a la posición común, codifique la coordenada -y en función del orden de exploración.
En este ejemplo, para decodificar la coordenada -x y la coordenada -y en base al 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 adaptable al contexto (por ejemplo, un proceso CABAC) que incluye la unidad de codificación por entropía 56 aplicando un modelo de contexto basado en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir el orden de exploración.
Adicionalmente, como ejemplo, la unidad de codificación por entropía 56 puede configurarse para decodificar una coordenada (por ejemplo, coordenada -y) después de otra coordenada (por ejemplo, coordenada -x), en el que la unidad de codificación por entropía 56 puede configurarse para decodificar una coordenada utilizando un valor de la otra coordenada previamente codificada como contexto. Como otro ejemplo, donde cada una de las coordenadas -x e -y comprende una secuencia de uno o más contenedores, la unidad de codificación por entropía 56 puede configurarse para decodificar por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basado por lo menos en parte en un valor de por lo menos un contenedor, por ejemplo, un contenedor correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de codificación por entropía 56 puede configurarse para codificar uno o más contenedores de la secuencia correspondiente a una de las coordenadas y uno o más contenedores de la secuencia correspondiente a la otra coordenada de manera intercalada.
En cualquier caso, después de codificar información de posición del ú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 SM, para el bloque de la manera 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.
Por consiguiente, las técnicas de esta descripción pueden permitir que la unidad de codificación por entropía 56 codifique la información de posición del último coeficiente significativo para el bloque más eficientemente que cuando se utilizan otros procedimientos, y pueden permitir que la unidad de codificación por entropía 56 tenga menos complejidad respecto a otros sistemas. De esta manera, puede haber un ahorro de bits relativo para una secuencia de bits codificada que incluye la información de posición del último coeficiente significativo, y una reducción relativa de la complejidad para la unidad de codificación por entropía 56 utilizada para codificar la información, cuando se utilizan las técnicas de esta descripción.
5
10
15
20
25
30
35
40
45
50
55
60
La unidad de cuantificación inversa 58 y el módulo de transformación inversa 60 aplican una cuantificación inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de 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 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles sub-enteros para utilizar en la estimación de movimiento. El sumador 62 agrega el bloque residual reconstruido 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 el almacenamiento en la memoria 64. El bloque de vídeo reconstruido puede ser utilizado 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 posterior.
De esta manera, 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 distinto de cero 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 para codificar coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero 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 el que la segunda el orden de exploración es diferente al primer orden de exploración.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo 30 que puede implementar técnicas para decodificar de manera eficiente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo consistente con las técnicas de esta descripción. En el ejemplo de la figura 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 70, una unidad de compensación de movimiento 72, un módulo de predicción 74, una unidad de cuantificación inversa 76, una unidad de transformación inversa 78, una memoria 82 y un sumador 80. El decodificador de vídeo 30, en algunos ejemplos, puede realizar una pasada de decodificación generalmente recíproca al pase de codificación descrito respecto al codificador de vídeo 20 (figura 2). La unidad de compensación de movimiento 72 puede generar datos de predicción en base a vectores de movimiento recibidos desde la unidad de decodificación por entropía 70.
En algunos ejemplos, el decodificador de vídeo 30 puede configurarse para recibir datos codificados de vídeo (por ejemplo, uno o más macrobloques, o TUs de una CU) del codificador de vídeo 20. De acuerdo con las técnicas de esta descripción, como un ejemplo, la unidad de decodificación por entropía 70 puede configurarse para decodificar las 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 asociada. con el bloque cuando el orden de exploración comprende un primer orden de exploración. La unidad de decodificación por entropía 70 puede configurarse adicionalmente para decodificar 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 al 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 entre sí (o por lo 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, donde el orden de exploración horizontal y la exploración vertical se originan en una posición común dentro del bloque, por ejemplo, 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 utilizado por la unidad de decodificación por entropía 70 para decodificar el bloque. Por ejemplo, el primer y el segundo orden de exploración pueden ser órdenes de exploración utilizados por el codificador de vídeo 20 para codificar bloques de datos de vídeo, y por el decodificador de vídeo 30 para decodificar los bloques, dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el decodificador de vídeo 30. En algunos ejemplos, el primer y el segundo orden de exploración pueden ser sólo algunos de los órdenes de exploración utilizados dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo orden de exploración puede ser los únicos órdenes de exploración utilizados dentro del sistema 10 para codificar los bloques.
Además, las coordenadas -x e -y intercambiadas también corresponden a información de posición del último coeficiente significativo para el bloque, pero se procesan adicionalmente, es decir, se intercambian, por la unidad de decodificación por entropía 70 para permitir la decodificación de la información más eficientemente que cuando se usan otras técnicas. tal como se ha descrito anteriormente. Específicamente, las coordenadas -x e -y intercambiadas pueden permitir el uso de estadísticas comunes para decodificar las coordenadas -x e -y y las coordenadas -x e -y
5
10
15
20
25
30
35
40
45
50
55
60
intercambiadas que indican información de posición del último coeficiente significativo para el bloque, como también se ha descrito anteriormente.
En este ejemplo, para decodificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas, la unidad de decodificación por entropía 70 puede configurarse adicionalmente para determinar estadísticas que indican una probabilidad de cada una de las coordenadas -x e -y comprendan un valor determinado, en el que la decodificación de las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas comprenden la decodificación basada en las estadísticas. Por ejemplo, la probabilidad de que la coordenada -x comprenda un valor determinado puede utilizarse para decodificar la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado puede utilizarse para decodificar la y- coordinar y la coordenada -x intercambiada.
Generalmente, las estadísticas pueden indicar una probabilidad de una posición determinada dentro del bloque que corresponde 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 exploración orden, comprenda un valor determinado (por ejemplo, "0", "1", "2", etc.).
Tal como se ha descrito anteriormente, debido a que el primer y el segundo orden de exploración pueden ser simétricos entre sí (o por lo menos parcialmente simétricos), la probabilidad de que la coordenada -x comprenda un valor determinado cuando el orden de exploración comprende el primer orden de exploración puede ser la 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 manera similar, la probabilidad de que la coordenada - y comprenda un valor determinado 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 comprenda la segunda exploración orden, y viceversa Es decir, las coordenadas -x e -y cuando el orden de exploración comprende el primer orden de exploración pueden tener la misma o similar probabilidad de comprender un valor determinado como las coordenadas -x e -y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. Como tales, las estadísticas pueden indicar, además, la probabilidad de que cada una de las coordenadas -x e -y intercambiadas comprenda un valor determinado. En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estadísticas utilizando información de posición del último coeficiente significativo para bloques previamente decodificados de datos de vídeo, por ejemplo, valores de coordenadas -x e -y y coordenadas -x e -y intercambiadas para los bloques decodificados previamente.
La unidad de decodificación por entropía 70 puede configurarse adicionalmente para actualizar las estadísticas basadas 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 determinado puede actualizarse utilizando la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado puede actualizarse utilizando la coordenada -y la coordenada -x intercambiada. Por ejemplo, las estadísticas actualizadas pueden utilizarse para decodificar información de posición del último coeficiente significativo para bloques de datos de vídeo decodificados posteriormente de la manera descrita anteriormente.
Como ejemplo, para decodificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas basadas en las estadísticas, la unidad de decodificación por entropía 70 puede configurarse para realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso de CABAC) que incluye una unidad de decodificación por entropía 70 que aplica un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir una de las coordenadas -x e -y, las coordenadas intercambiadas -x e -y, y el orden de exploración. Como se ha mencionado anteriormente, además de CABAC, las técnicas descritas para intercambiar las coordenadas -x e -y con fines de codificación también pueden utilizarse en otras técnicas de codificación adaptable al contexto, tales como CAVLC, PIPE u otras técnicas adaptables al contexto.
En este ejemplo, la unidad de decodificación por entropía 70 puede utilizar 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 decodificación por entropía 70 puede seleccionar las mismas estadísticas para decodificar las coordenadas -x e -y cuando utiliza el primer orden de exploración para decodificar el bloque, y para decodificar las coordenadas -x e -y intercambiadas cuando utiliza el segundo orden de exploración para decodificar el bloque. Además, en casos en que una coordenada (por ejemplo, coordenada -y) se decodifica después de otra coordenada (por ejemplo, coordenada -x), la unidad de decodificación por entropía 70 puede decodificar la coordenada utilizando un valor de la otra coordenada decodificada previamente como contexto. Es decir, un valor de una de las coordenadas -x e -y previamente decodificadas o las coordenadas -x e -y intercambiadas, dependiendo
5
10
15
20
25
30
35
40
45
50
55
60
del orden de exploración utilizada para decodificar el bloque, puede utilizarse para seleccionar estadísticas adicionales dentro del modelo de contexto que indican una probabilidad de que la otra coordenada actualmente decodificada comprenda un valor determinado. La unidad de decodificación por entropía 70 puede entonces utilizar las estadísticas seleccionadas para decodificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas llevando a cabo el proceso de codificación por entropía adaptable al contexto.
Tal como también se ha descrito anteriormente, en este ejemplo, las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más contenedores, es decir, "binarizada". Como tal, para decodificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas basadas en las estadísticas, la unidad de decodificación por entropía 70 puede decodificar cada contenedor de una palabra codificada correspondiente a una coordenada particular mediante la realización del proceso de codificación por entropía adaptable 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 determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estimaciones de probabilidad utilizando valores de compartimientos correspondientes para bloques decodificados previamente de datos de vídeo, por ejemplo, contenedores de palabras de código correspondientes a coordenadas -x e -y e intercambiando coordenadas -x e -y para el anterior bloques decodificados, por ejemplo, como parte de la determinación de las estadísticas basadas en información de posición del último coeficiente significativo para los bloques decodificados previamente, tal como se ha descrito anteriormente. En otros ejemplos, la unidad de decodificación por entropía 70 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada contenedor, por ejemplo, como parte de la actualización de las estadísticas basadas en las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas, como también descrito anteriormente. La unidad de decodificación por entropía 70 puede utilizar las estimaciones de probabilidad para decodificar cada contenedor realizando el proceso de codificación por entropía adaptable al contexto.
Como otro ejemplo, en algunos casos, diferentes valores de un contenedor de una palabra de código unaria para una coordenada (por ejemplo, x-) pueden dar como resultado diferentes estimaciones de probabilidad para un contenedor correspondiente de una palabra de código unaria para la otra coordenada (por ejemplo, -y). Como tal, al decodificar un contenedor de una palabra clave unaria para una coordenada utilizando estimaciones de probabilidad correspondientes al contenedor, tal como se ha descrito anteriormente, utilizando estimaciones de probabilidad que incluyen información sobre un valor de un contenedor, por ejemplo, un contenedor correspondiente, de una palabra de código unaria la otra coordenada puede dar como resultado que las estimaciones de probabilidad sean precisas y, por lo tanto, puede permitir una decodificación eficiente. Por ejemplo, el contenedor de la palabra de código unaria para la otra coordenada puede ser un contenedor que corresponda al contenedor de la palabra de código unaria para una coordenada, por ejemplo, los contenedores pueden estar ubicados en la misma posición de contenedor o similar dentro de sus respectivas palabras de código.
La decodificación de 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 del último coeficiente significativo para un bloque de datos de vídeo, en general) de esta manera "intercalada" utilizando contenedores previamente decodificados como contextos puede permitir el uso de información mutua de las coordenadas -x e -y respectivas, lo que puede permitir decodificar las coordenadas de una manera más eficiente.
En otros ejemplos, la unidad de decodificación por entropía 70 puede configurarse para decodificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas de una manera intercalada, generalmente. En algunos ejemplos, la unidad de decodificación por entropía 70 puede configurarse para decodificar contenedores individuales de las palabras de código para las coordenadas -x e -y respectivas de una manera intercalada. En otros ejemplos, la unidad de decodificación por entropía 70 puede configurarse para decodificar grupos de contenedores de palabras de código de manera intercalada. Por ejemplo, algunos contenedores de una palabra de código para cada una de las coordenadas -x e -y pueden decodificarse utilizando un primer modo de codificación (por ejemplo, un modo de codificación regular), mientras que el resto de contenedores de la palabra de código pueden decodificarse utilizando un segundo modo de codificación (por ejemplo, un modo de codificación de derivación). Como tal, la unidad de decodificación por entropía 70 puede configurarse para decodificar uno o más contenedores de la palabra de código correspondiente a una de las coordenadas codificadas utilizando el primer modo de codificación (por ejemplo, regular) antes de decodificar uno o más contenedores de la palabra de código correspondiente al otro codificado de coordenadas utilizando el primer modo de codificación, seguido de decodificación de uno o más contenedores de la palabra de código correspondiente a la codificación de una de las coordenadas utilizando el segundo modo de codificación (por ejemplo, derivación) antes de decodificar uno o más contenedores de la palabra de código correspondiente a la otra codificación codificada utilizando el segundo modo de codificación. En otros ejemplos, la
5
10
15
20
25
30
35
40
45
50
55
60
unidad de decodificación por entropía 70 puede configurarse para decodificar los contenedores de las palabras de código codificadas utilizando el segundo modo de codificación conjuntamente.
Por consiguiente, separar la decodificación de los contenedores de la palabra clave para cada una de las coordenadas -x e -y de la manera descrita anteriormente puede permitir agrupar contenedores decodificados utilizando un modo de codificación particular (por ejemplo, modo de derivación) conjuntamente, lo que también puede mejorar la eficacia de la codificación.
En otras palabras, en los casos en que cada una de las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas comprenden una secuencia de uno o más contenedores, la unidad de decodificación por entropía 70 puede configurarse para decodificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas realizando el proceso de codificación por entropía adaptable al contexto que incluye aplicar el modelo de contexto que incluye las estadísticas basadas en una de las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas. La unidad de decodificación por entropía 70 puede configurarse para decodificar las coordenadas -x e -y respectivas decodificando por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basadas, por lo menos en parte, en un valor de por lo menos un contenedor de la secuencia correspondiente a la otra coordenada. Además, la unidad de decodificación por entropía 70 puede configurarse para decodificar el uno o más contenedores de la secuencia correspondiente a una de las coordenadas y uno o más contenedores de la secuencia correspondiente a la otra coordenada de una manera intercalada.
Por consiguiente, para decodificar información de posición del último coeficiente significativo, la unidad de decodificación por entropía 70 puede configurarse para decodificar las coordenadas -x e -y, y las coordenadas -x e - y intercambiadas, de manera intercalada, utilizando contenedores decodificados previamente como contextos. Es decir, la unidad de decodificación por entropía 70 puede configurarse para decodificar cada contenedor de una palabra de código unaria para una coordenada determinada realizando un proceso de codificación por entropía adaptable al contexto que incluye aplicar un modelo de contexto basado en por lo menos un contexto, donde por lo menos un contexto puede incluir una posición del contenedor dentro de la palabra de código unaria, tal como se ha descrito anteriormente, y un valor de uno o más contenedores previamente decodificados 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 manera intercalada, generalmente.
Debe observarse que, en otros ejemplos consistentes con las técnicas de esta descripción, pueden utilizarse otros tipos de palabras de código, por ejemplo, palabras de código unaria truncadas, palabras de código de Golomb exponencial, palabras de código concatenados, así como combinaciones de diversas técnicas de codificación.
También debe observarse que, en algunos ejemplos, la unidad de decodificación por entropía 70 puede configurarse adicionalmente para decodificar 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 ejemplo, el tercer orden de exploración puede ser un orden de exploración en zigzag, o un orden de exploración diagonal, 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 DC.
En este ejemplo, en algunos casos, la unidad de decodificación por entropía 70 puede configurarse adicionalmente para decodificar información que identifica el orden de exploración, es decir, la información de orden de exploración para el bloque. Alternativamente, tal como se ha descrito anteriormente, la unidad de decodificación por entropía 70 puede omitir la decodificación de la información de orden de exploración para el bloque cuando la unidad de decodificación por entropía 70 utiliza un orden de exploración adaptativa para decodificar el bloque. Además, en algunos casos, la unidad de decodificación por entropía 70 puede configurarse adicionalmente para decodificar información que identifica las posiciones de otros coeficientes significativos dentro del bloque, es decir, la información de la posición del coeficiente significativo para el bloque.
Por ejemplo, la información de posición del coeficiente significativo para el bloque puede representarse utilizando una secuencia de indicadores de coeficientes significativos, tal como se ha descrito anteriormente. Tal como también se ha descrito anteriormente, la información de posición de coeficiente significativo puede decodificarse decodificando cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto basado en por lo menos un contexto, donde por lo 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 determinado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estimaciones de probabilidad utilizando valores de indicadores
5
10
15
20
25
30
35
40
45
50
55
60
de coeficientes significativos correspondientes para bloques de datos de vídeo decodificados previamente. En otros ejemplos, la unidad de decodificación por entropía 70 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor determinado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden utilizarse para decodificar información de posición de coeficiente significativo para bloques de datos de vídeo decodificados posteriormente de la manera descrita anteriormente.
Como otro ejemplo, la unidad de decodificación por entropía 70 puede configurarse para decodificar 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 asociada al bloque. Por ejemplo, el orden de exploración puede ser uno de una pluralidad de órdenes de exploración, 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 DC.
En este ejemplo, para decodificar las coordenadas -x e -y, la unidad de decodificación por entropía 70 puede configurarse para decodificar información que indica si la coordenada -x corresponde a la posición común, decodificar información que indica si la coordenada -y corresponde a la posición común y, en caso en que la coordenada -x no se corresponda con la posición común, y la coordenada -y no se corresponda con la posición común, decodificar información que identifica el orden de exploración. La unidad de decodificación por entropía 70 puede configurarse, además, para que, en caso de que la coordenada -x no corresponda a la posición común, decodificar la coordenada -x en función del orden de exploración y, en caso de que la coordenada -y no corresponda a la posición común, decodificar la coordenada -y en función del orden de exploración.
En este ejemplo, para decodificar la coordenada -x y la coordenada -y en base al orden de exploración, la unidad de decodificación por entropía 70 puede configurarse para realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye la unidad de decodificación por entropía 70 que aplica un modelo de contexto basado en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir el orden de exploración.
Adicionalmente, como ejemplo, la unidad de decodificación por entropía 70 puede configurarse para decodificar una coordenada (por ejemplo, coordenada -y) después de otra coordenada (por ejemplo, coordenada -x), en el que la unidad de decodificación por entropía 70 puede configurarse para decodificar una coordenada utilizando un valor de la otra coordenada previamente decodificada como contexto. Como otro ejemplo, donde cada una de las coordenadas -x e -y comprende una secuencia de uno o más contenedores, la unidad de decodificación por entropía 70 puede configurarse para decodificar por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basadas por lo menos en parte en un valor de por lo menos un contenedor, por ejemplo, un contenedor correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de decodificación por entropía 70 puede configurarse para decodificar uno o más contenedores de la secuencia correspondiente a una de las coordenadas y uno o más contenedores de la secuencia correspondiente a la otra coordenada de manera intercalada.
En cualquier caso, después de decodificar información de posición del ú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 manera descrita anteriormente, la unidad de decodificación por entropía 70 puede también decodificar 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.
Por consiguiente, las técnicas de esta descripción pueden permitir que la unidad de decodificación por entropía 70 decodifique la información de posición del último coeficiente significativo para el bloque más eficientemente que cuando se utilizan otros procedimientos, y puede permitir que la unidad de decodificación por entropía 70 tenga menos complejidad respecto a otros sistemas. De esta manera, puede haber un ahorro de bits relativo para una secuencia de bits codificada que incluye la información de posición del último coeficiente significativo, y una reducción relativa de la complejidad para la unidad de decodificación por entropía 70 utilizada para decodificar la información, cuando se utilizan las técnicas de esta descripción.
La unidad de compensación de movimiento 72 puede utilizar vectores de movimiento recibidos en la secuencia de bits para identificar un bloque de predicción en las tramas de referencia en la memoria 82. El módulo de intra- predicción 74 puede utilizar modos de intra-predicción recibidos en la secuencia de bits para formar un bloque de predicción a partir de bloques espacialmente adyacentes.
El módulo de intra-predicción 74 puede utilizar una indicación de un modo de intra-predicción para que el bloque codificado pueda predecir el bloque codificado, por ejemplo, utilizando píxeles de bloques vecinos decodificados previamente. Para ejemplos en los que el bloque está codificado en modo de inter-predicción, la unidad de
5
10
15
20
25
30
35
40
45
50
55
60
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 de manera inversa, es decir, descuantiza, los coeficientes de bloques cuantificados proporcionados en la secuencia de bits y decodificados por la unidad de decodificación por entropía 70. El proceso de cuantificación inversa puede incluir un proceso convencional, por ejemplo, tal como se define mediante el estándar de decodificación H.264 o tal como se realiza mediante el modelo de prueba 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, del mismo modo, un grado de cuantificación inversa que debería aplicarse.
El módulo de transformación inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa, o un proceso de transformación inversa conceptualmente similar, a los coeficientes de transformación para producir bloques residuales en el dominio de píxeles. La unidad de compensación de movimiento 72 produce bloques compensados por movimiento, posiblemente realizando una interpolación basada en filtros de interpolación. Los identificadores para filtros de interpolación que se utilizarán para la estimación de movimiento con precisión sub-píxel pueden incluirse en los elementos de sintaxis. La unidad de compensación de movimiento 72 puede utilizar filtros de interpolación como los utilizados por el codificador de vídeo 20 durante la codificación del bloque de vídeo para calcular los valores interpolados para los píxeles de subniveles de un bloque de referencia. La unidad de compensación de movimiento 72 puede determinar los filtros de interpolación utilizados por el codificador de vídeo 20 de acuerdo con la información de sintaxis recibida y utilizar los filtros de interpolación para producir bloques predictivos.
La unidad de compensación de movimiento 72 utiliza parte de la información de sintaxis para el bloque codificado para determinar los tamaños de los bloques utilizados para codificar trama(s) de la secuencia de vídeo codificada, información de división que describe cómo se divide cada bloque de una trama o segmento de la secuencia de vídeo codificada, modos que indican cómo se codifica cada división, uno o más tramas de referencia (y listas de tramas de referencia) para cada bloque o división inter-codificados, y otra información para decodificar la secuencia de vídeo codificada. El módulo de intra-predicción 74 también puede utilizar la información de sintaxis para el bloque codificado para predecir el bloque codificado, por ejemplo, utilizando píxeles de bloques vecinos, decodificados previamente, tal como se ha descrito anteriormente.
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 decodificados. Si se desea, también puede aplicarse un filtro de desbloqueo para filtrar los bloques decodificados para eliminar efectos de pixelado. Los bloques de vídeo decodificados se almacenan entonces en la memoria 82, que proporciona bloques de referencia para la posterior compensación de movimiento y también produce vídeo decodificado para su presentación en un dispositivo de visualización (tal como el dispositivo de visualización 32 de la figura 1).
De esta manera, el decodificador 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 distinto de cero 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 para codificar coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero 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 el que 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 y la correspondiente información de posición de coeficientes significativos e información de posición del último coeficiente significativo. Tal 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 transformación cuantificados. Por ejemplo, tal como se muestra en la figura 4A, el bloque 400 puede incluir coeficientes de transformación cuantificados generados utilizando técnicas de predicción, transformación y cuantificación descritas previamente. Supóngase, para este ejemplo, que el bloque 400 tiene un tamaño de 2N*2N, donde N es igual a dos. Por consiguiente, el bloque 400 tiene un tamaño de 4x4 e incluye dieciséis coeficientes de transformación cuantificados, tal como también se muestra en la figura 4A. Supóngase, además, que el orden de exploración asociado al bloque 400 es el orden de exploración en zigzag, tal como se muestra en la figura 5A que se describe en mayor detalle a continuación.
En este ejemplo, un último coeficiente significativo dentro del bloque 400 según el orden de exploración en zigzag es un coeficiente de transformación cuantificado igual a "1", ubicado en la posición 406 dentro del bloque 400. En otros ejemplos, tal como se ha descrito anteriormente, un bloque puede tener un tamaño que sea más pequeño o más
5
10
15
20
25
30
35
40
45
50
55
60
grande que el tamaño del bloque 400, y puede incluir más o menos coeficientes de transformación cuantificados que el bloque 400. Todavía en otros ejemplos, 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 coeficientes significativos, es decir, indicadores de coeficientes significativos representados en forma de mapa o de bloque, tal como se ha descrito anteriormente. 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 coeficientes significativos del bloque 402 pueden corresponder a los coeficientes de transformación cuantificados del bloque 400. Tal como se muestra en la figura 4B, los indicadores de coeficientes significativos del bloque 402 que son iguales a "1" corresponden a coeficientes significativos del bloque 400. De manera similar, los indicadores de coeficientes significativos del bloque 402 que son iguales a "0" corresponden a cero, o coeficientes 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 según 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 coeficientes significativos utilizados para indicar coeficientes significativos o no significativos pueden variar (por ejemplo, indicadores de coeficientes significativos iguales a "0" pueden corresponder a coeficientes significativos, e indicadores de coeficientes significativos 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, tal como se ha descrito también anteriormente. 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 figura 4B, respectivamente. En otras palabras, los indicadores de último coeficiente significativo del bloque 404 pueden corresponder a los coeficientes de transformación cuantificados del bloque 400, y a los indicadores de coeficientes significativos del bloque 402.
Tal 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 coeficientes significativos del bloque 402 que son iguales a "1", de acuerdo con el orden de exploración en zigzag. De manera 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) corresponden a cero, o los coeficientes no significativos del bloque 400, y a todos los indicadores de coeficientes significativos del bloque 402 que son iguales a "1" aparte del último de dichos indicadores de coeficientes significativos de acuerdo con el orden de exploración en zigzag.
Los valores de los indicadores de último coeficiente significativos utilizados para indicar un último coeficiente significativo según 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 según 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 coeficientes significativos del bloque 402, y los indicadores de último coeficiente significativos del bloque 404, pueden denominarse colectivamente como datos SM para el bloque 400.
Tal como se ha descrito anteriormente, la información de posición del coeficiente significativo para un bloque de datos de vídeo puede indicarse serializando indicadores de coeficientes significativos para el bloque a partir de una representación en bloque bidimensional, tal como se representa en el bloque 402 mostrado en la figura 4B, en una matriz unidimensional, utilizando un orden de exploración asociado al bloque. En el ejemplo de los bloques 400-402 mostrados en las figuras 4A-4B, suponiendo nuevamente el orden de exploración en zigzag, la información de posición del coeficiente significativo para el bloque 400 puede indicarse serializando los indicadores de coeficientes significativos del bloque 402 en una matriz unidimensional. Es decir, la información de posición del coeficiente significativo para el bloque 400 puede indicarse generando una secuencia de indicadores de coeficientes significativos del bloque 402 según 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 coeficientes significativos del bloque 402 de acuerdo con el orden de exploración en zigzag. Debe observarse que la secuencia generada puede contener indicadores de coeficientes significativos correspondientes a un rango de posiciones de bloque dentro del bloque 400, comenzando desde una primera posición del bloque en el orden de exploración en zigzag (es decir, la posición DC) y terminando con una posición de bloque correspondiente al último coeficiente significativo del bloque 400 según el orden de exploración en zigzag (es decir, correspondiente al indicador de último coeficiente significativo igual a "1" del bloque 404).
5
10
15
20
25
30
35
40
45
50
55
60
Tal como también se ha descrito anteriormente, la información de posición del último coeficiente significativo para el bloque puede indicarse serializando indicadores de último coeficiente significativos para el bloque a partir de una representación en bloque bidimensional, tal como se representa en el bloque 404 mostrado en la figura 4C, en una matriz unidimensional, utilizando 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 del último coeficiente significativo para el bloque 400 puede indicarse serializando los indicadores de último coeficiente significativos del bloque 404 en una matriz unidimensional. Es decir, la información de posición del último coeficiente significativo para el bloque 400 puede indicarse generando una secuencia de indicadores de último coeficiente significativos 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 significativos del bloque 404 de acuerdo con el orden de exploración en zigzag.
Una vez más, debe observarse que la secuencia generada puede contener indicadores de último coeficiente significativo correspondiente a un rango de posiciones del bloque dentro del bloque 400, comenzando desde la primera posición del bloque en el orden de exploración en zigzag, y terminando con la posición del bloque correspondiente al último coeficiente significativo del bloque 400 según 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 incluyen en la secuencia indicadores de último coeficiente significativo después 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 del último coeficiente significativo para el bloque. Como tal, en algunos ejemplos, estos indicadores se omiten de la secuencia generada de los indicadores de último coeficiente significativo utilizados para indicar la información.
También debe observarse que, tal como se ha descrito anteriormente, si el último coeficiente significativo se encuentra situado 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, ya que puede inferirse que la posición contiene el último coeficiente significativo para el bloque. Por consiguiente, en este ejemplo, la secuencia generada puede corresponder a un valor "000000000000000", en el que el indicador de último coeficiente significativo correspondiente a la última posición del bloque no está incluido 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 utilizando un orden de exploración en zigzag, un orden de exploración horizontal y un orden de exploración vertical, respectivamente. Tal como se muestra en las figuras 5A-5C, un bloque de 8*8 de datos de vídeo, por ejemplo, un macrobloque, o una TU de una CU, puede incluir sesenta y cuatro coeficientes de transformación cuantificados en correspondientes posiciones de bloque, indicadas con círculos. Por ejemplo, los bloques 500-504 pueden incluir cada uno sesenta y cuatro coeficientes de transformación cuantificados generados utilizando las técnicas de predicción, transformación y cuantificación descritas anteriormente, de nuevo, en las que 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*2N, donde N es igual a cuatro. En consecuencia, los bloques 500-504 tienen un tamaño de 8*8.
Tal 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 transformación cuantificados del bloque 500 de una manera en diagonal, tal como se indica por las flechas en la figura 5A. De manera similar, tal 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 transformación cuantificados del bloque 502 línea a línea horizontal, o de manera "rasterizada", mientras que el orden de exploración vertical explora los coeficientes de transformación cuantificados del bloque 504 línea a línea vertical, o de manera "rasterizada girada", también tal como se indica mediante las flechas en las figuras 5B y 5C.
En otros ejemplos, tal 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 transformación cuantificados y posiciones de bloque correspondientes. En estos ejemplos, un orden de exploración asociado al bloque puede explorar los coeficientes de transformación cuantificados del bloque de una manera substancialmente similar a la mostrada en los ejemplos de bloques de 8*8 500-504 de las figuras 5A-5C, por ejemplo, puede explorarse un bloque de 4*4, o un bloque de 16*16, siguiendo cualquiera de los órdenes de exploración descritos anteriormente.
Tal como se ha descrito anteriormente, las técnicas de esta descripción también pueden aplicarse respecto a una amplia variedad de otros órdenes de exploración, incluyendo un orden de exploración diagonal, órdenes de
5
10
15
20
25
30
35
40
45
50
55
60
exploración que sean combinaciones de exploración en zigzag, horizontal, vertical y/o diagonal, así como también órdenes de exploración que sean parcialmente en zigzag, parcialmente horizontal, parcialmente vertical y/o parcialmente diagonal. Además, las técnicas de esta descripción también pueden considerar un orden de exploración que sea adaptativo en sí mismo en base a estadísticas asociadas a bloques de datos de vídeo previamente codificados (por ejemplo, bloques que tengan el mismo tamaño de bloque o modo de codificación que el bloque actual que está siendo codificado). 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 del último coeficiente significativo en base a información de orden de exploración, consistente con las técnicas de esta descripción. Tal como se muestra en la figura 6A, el bloque 600 puede incluir dieciséis posiciones de bloque ordenadas de 0 a 15 según el orden de exploración horizontal, tal 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 transformación cuantificado, tal como se ha descrito anteriormente con referencia a la figura 4A. Tal 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 utilizando las coordenadas -x e -y (2,0), 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 encuentra en la esquina superior izquierda del bloque 600, es decir, la posición de DC, tal 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, además, que, para el bloque 600, existen estadísticas que indican una probabilidad de una posición determinada 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, que corresponde a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración horizontal comprenda un valor determinado (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) descritas anteriormente comprenda un valor determinado.
Además, en algunos ejemplos, las coordenadas -x e -y pueden codificarse en base a las estadísticas, por ejemplo, realizando un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo 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 utilizarse para seleccionar el modelo de contexto particular que incluye las estadísticas. Además, en casos donde una coordenada (por ejemplo, coordenada -y) se codifica después de otra coordenada (por ejemplo, coordenada -x), la coordenada puede codificarse utilizando un valor de la otra coordenada previamente codificada como contexto. Es decir, puede utilizarse un valor de una de las coordenadas -x e -y previamente codificadas para seleccionar más estadísticas dentro del modelo de contexto que indiquen una probabilidad de que la otra coordenada actualmente que comprenda un valor determinado.
Adicionalmente, en algunos ejemplos, las coordenadas -x e -y pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más contenedores, es decir, "binarizada". Como tal, para codificar las coordenadas -x e -y en función de las estadísticas, cada contenedor de una palabra de código correspondiente a una determinada coordenada puede codificarse realizando el proceso de codificación por entropía adaptable 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 determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor respectivo dentro de la palabra de código.
Tal 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, tal como se indica por las flechas, y tal 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 transformación cuantificado, tal como se ha descrito anteriormente con referencia a la figura 4A. Tal 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 utilizando las coordenadas - x e -y (0,2), donde la coordenada -x es igual a "0", la coordenada -y es igual a "2" y una posición de referencia, u
5
10
15
20
25
30
35
40
45
50
55
60
"origen”, correspondiente a las coordenadas -x e -y (0, 0), se encuentra situada una vez más en la esquina superior izquierda del bloque 602, es decir, la posición DC, tal 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 según 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 respecto al orden de exploración vertical del bloque 602, de modo que la probabilidad de que la coordenada -x, "2", de la posición del último coeficiente significativo dentro del bloque 600 según el orden de exploración horizontal comprenda un valor determinado 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 según el orden de exploración vertical comprenda el mismo valor, y viceversa. De manera 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 determinado 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 según 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 que comprendan un valor determinado como las coordenadas -x e -y (0,2) intercambiadas de la posición 608 dentro del bloque 602, respectivamente. Tal como se indica por la flecha discontinua 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 utilizando las coordenadas - x e -y (2,0).
Como tal, de acuerdo con las técnicas de esta descripción, las estadísticas comunes que indican la probabilidad de una posición determinada 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 utilizarse 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, tal como se ha descrito anteriormente.
Tal 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, tal como se indica mediante las flechas, y tal 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 transformación cuantificado, tal como se ha descrito anteriormente con referencia a la figura 4A. Tal 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 utilizando coordenadas -x e -y (0,1), 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), está situada una vez más en la esquina superior izquierda del bloque 604, es decir, la posición DC, tal como se ha descrito anteriormente. Supóngase para este ejemplo que la posición 612, una vez más, corresponde 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 respecto a los órdenes de exploración horizontal o vertical de los bloques 600 y 602, respectivamente. Como tal, la identidad o similitud de probabilidades que se ha descrito anteriormente puede no existir entre las coordenadas -x e -y que corresponden 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 que corresponden a la posición del último coeficiente significativo dentro de los bloques 604 pueden codificarse utilizando las estadísticas comunes descritas anteriormente con referencia a los ejemplos de las figuras 6A-6B. Por ejemplo, aunque utilizar las estadísticas comunes para codificar las coordenadas -x e -y puede no reflejar con precisión la probabilidad de que las coordenadas respectivas comprendan valores particulares, la codificación de las coordenadas de esta manera puede mejorar la eficiencia de codificación utilizando las estadísticas comunes, en lugar de estadísticas separadas, reduciendo potencialmente la complejidad del sistema, tal como se ha descrito anteriormente.
La figura 7 es un diagrama de flujo que ilustra un ejemplo de un procedimiento para codificar de manera eficiente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción. Las técnicas de la figura 7 generalmente pueden realizarse a través de cualquier unidad de procesamiento o procesador, ya sea implementada en hardware, software, firmware o una combinación de los mismos y, si se implementa en software o firmware, puede proporcionarse el hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 7 se describen respecto al codificador de vídeo 20 (figuras 1 y 2) y/o al decodificador de vídeo 30 (figuras 1 y 3), aunque debe entenderse que pueden configurarse otros dispositivos para realizar técnicas similares. Además, las etapas ilustradas en la figura 7 pueden llevarse a cabo en un orden diferente
5
10
15
20
25
30
35
40
45
50
55
60
o en paralelo, y pueden añadirse etapas adicionales y omitirse ciertas etapas, sin apartarse de las técnicas de esta descripción.
Inicialmente, el codificador de vídeo 20 y/o el decodificador 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, tal como se ha descrito anteriormente. Además, el primer orden de exploración y el segundo orden de exploración pueden ser simétricos (o por lo menos parcialmente simétricos) entre sí. 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 el que 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 DC tal como también se ha descrito anteriormente.
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 utilizado por el codificador de vídeo 20 y/o el decodificador de vídeo 30 para codificar el bloque. Por ejemplo, el primer y el segundo orden de exploración pueden ser órdenes de exploración utilizados por el codificador de vídeo 20 para codificar bloques de datos de vídeo, y por el decodificador de vídeo 30 para decodificar los bloques, dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el decodificador de vídeo 30. En algunos ejemplos, el primer y el segundo orden de exploración pueden ser sólo algunos de los órdenes de exploración utilizados dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo orden de exploración pueden ser los únicos órdenes de exploración utilizados dentro del sistema 10 para codificar los bloques. De esta manera, el procedimiento de ejemplo de la figura 7 puede ser aplicable a cualquier sistema de codificación que utilice 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 decodificador de vídeo 30 puede hacer esta determinación decodificando la 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 tal como se describe con mayor detalle en el procedimiento de ejemplo de la figura 8, y el decodificador de vídeo 30 puede decodificar la información, tal como también se describe con mayor detalle en el procedimiento 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 decodificador de vídeo 30 puede(n) codificar, además, 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, información de posición del ú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 decodificador de vídeo 30 pueden codificar las 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 información de posición del último coeficiente significativo para el bloque, pero se procesan adicionalmente, es decir, se intercambian, por el codificador de vídeo 20 y/o el decodificador de vídeo 30 para permitir codificar la información más de manera eficiente que cuando se utilizan otras técnicas, tal como se ha descrito anteriormente. Específicamente, las coordenadas -x e -y intercambiadas pueden permitir el uso de 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 del último coeficiente significativo para el bloque, tal como también se ha descrito anteriormente. En cualquier caso, la información de posición del último coeficiente significativo para el bloque, ya sea representada utilizando las coordenadas -x e -y, o las coordenadas -x e -y intercambiadas, puede codificarse en el caso del codificador de vídeo 20, y decodificarse en el caso de decodificador 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 decodificador de vídeo 30 pueden determinar, además, estadísticas que indican una probabilidad de una posición determinada 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 determinado (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 anteriormente comprenda un valor determinado.
Debido a que el primer y el segundo orden de exploración pueden ser simétricos (o por lo menos parcialmente simétricos) entre sí, la probabilidad de que la coordenada -x comprenda un valor determinado cuando el orden de exploración comprende el primer orden de exploración es igual o similar a la probabilidad de que la coordenada -y
5
10
15
20
25
30
35
40
45
50
55
60
comprenda el mismo valor cuando el orden de exploración comprende el segundo orden de exploración, y viceversa. De manera similar, la probabilidad de que la coordenada -y comprenda un valor determinado 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, las coordenadas -x e -y, cuando el orden de exploración comprende el primer orden de exploración, pueden tener cada una la misma o similar probabilidad de comprender un valor determinado como las coordenadas -x e -y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. Como tal, las estadísticas pueden indicar, además, la probabilidad de que cada una de las coordenadas -x e -y intercambiadas comprenda un valor determinado. En algunos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar las estadísticas utilizando información de posición del ú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 decodificador de vídeo 30 pueden codificar las coordenadas -x e - y, y las coordenadas -x e -y intercambiadas en base a las estadísticas. Por ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas en base a las estadísticas de manera que la probabilidad de que la coordenada -x comprenda un valor determinado se utiliza para codificar la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado se utiliza para codificar la coordenada -y y la coordenada -x intercambiada. Además, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden actualizar las estadísticas basadas 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 determinado puede actualizarse utilizando la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado puede actualizarse utilizando la coordenada -y y la coordenada -x intercambiada. Por ejemplo, las estadísticas actualizadas pueden utilizarse para codificar información de posición del último coeficiente significativo para bloques de datos de vídeo codificados posteriormente de la manera descrita anteriormente.
En algunos ejemplos, para codificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas basadas en las estadísticas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye la aplicación de un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir una de las coordenadas -x e -y, las coordenadas intercambiadas -x e -y, y el orden de exploración. En este ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden utilizar 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 decodificador de vídeo 30 pueden seleccionar las mismas estadísticas para codificar las coordenadas -x e -y al utilizar el primer orden de exploración para codificar el bloque y para codificar las coordenadas -x e -y intercambiadas cuando se utiliza el segundo orden de exploración para codificar el bloque.
Además, en casos donde una coordenada (por ejemplo, coordenada -y) se codifica después de otra coordenada (por ejemplo, coordenada -x), el codificador de vídeo 20 y/o el decodificador 30 pueden codificar la coordenada utilizando un valor de la otra coordenada previamente codificada como contexto Es decir, un valor de una de las coordenadas -x e -y previamente codificadas o las coordenadas -x e -y intercambiadas, según el orden de exploración utilizado para codificar el bloque, puede utilizarse para seleccionar estadísticas adicionales dentro del modelo de contexto que indican una probabilidad de que la otra coordenada actualmente codificada comprenda un valor determinado. El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden utilizar entonces las estadísticas seleccionadas para codificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas llevando a cabo el proceso de codificación por entropía adaptable al contexto.
En este ejemplo, las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más bits, o contenedores, es decir, binarizada. Como tal, para codificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas en base a las estadísticas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar cada contenedor de una palabra de código correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptable 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 determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor respectivo dentro de la palabra de código. En algunos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar las estimaciones de probabilidad utilizando los valores de contenedores correspondientes para bloques de datos de vídeo previamente codificados, por ejemplo, contenedores
5
10
15
20
25
30
35
40
45
50
55
60
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 basadas en información de posición del último coeficiente significativo para los bloques codificados previamente, tal como se ha descrito anteriormente. En otros ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 también pueden actualizar las estimaciones de probabilidad utilizando el valor de cada contenedor, por ejemplo, como parte de la actualización de las estadísticas basadas en las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas, tal como también se ha descrito anteriormente. El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden utilizar las estimaciones de probabilidad para codificar cada contenedor realizando el proceso de codificación por entropía adaptable al contexto.
Como otro ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas codificando por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas desde el modelo de contexto basado por lo menos en parte en un valor de por lo menos un contenedor, por ejemplo, un contenedor correspondiente, de la secuencia correspondiente a la otra coordenada. Además, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar uno o más contenedores de la secuencia correspondiente a una de las coordenadas y uno o más contenedores de la secuencia correspondiente a la otra coordenada de manera intercalada.
Finalmente, en algunos ejemplos, el codificador de vídeo 20 y/o el decodificador 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 del coeficiente significativo para el bloque puede representarse utilizando una secuencia de indicadores de coeficientes significativos, tal como se ha descrito anteriormente. Tal como también se ha descrito anteriormente, 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 adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto basado en por lo menos un contexto, donde por lo 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 determinado (por ejemplo, "0" o "1"). En algunos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar las estimaciones de probabilidad utilizando valores de indicadores de coeficientes significativos correspondientes para bloques de datos de vídeo previamente codificados. En otros ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 también pueden actualizar las estimaciones de probabilidad utilizando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor determinado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden utilizarse para codificar información de posición de coeficiente significativo para bloques de datos de vídeo codificados posteriormente de la manera descrita anteriormente.
De esta manera, el procedimiento de la figura 7 representa un ejemplo de un procedimiento de codificación de coordenadas -x e -y que indican una posición de un último coeficiente distinto de cero dentro de un bloque de datos de vídeo según un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración y codificación de las coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero 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 el que 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 procedimiento para codificar eficientemente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción. Las técnicas de la figura 8 generalmente puede realizarse a través de cualquier unidad de procesamiento o procesador, ya sea implementado en hardware, software, firmware o una combinación de los mismos, y cuando se implementa en software o firmware, puede proporcionar el hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 8 se describen respecto a la unidad de codificación por entropía 56 (figura 2), aunque debe 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 descripció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, tal como se ha descrito anteriormente. La unidad de codificación por entropía 56 puede determinar, además, coordenadas -x e -y que indican una posición de un último coeficiente significativo dentro del bloque según un orden de exploración asociado al bloque (802), es decir, la información de posición del último coeficiente significativo para el bloque. Por ejemplo, el orden de exploración
5
10
15
20
25
30
35
40
45
50
55
60
puede ser un orden de exploración utilizado 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, tal como se ha descrito anteriormente. Tal como también se ha descrito anteriormente, la posición común puede corresponder a la posición DC. Además, las coordenadas -x e -y pueden representarse cada una utilizando una palabra de código unaria que comprenda una secuencia de uno o más contenedores.
La unidad de codificación por entropía 56 puede determinar, además, 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 orden de exploración pueden ser órdenes de exploración que pueden ser utilizados 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 decodificador de vídeo 30, tal como se ha descrito anteriormente. En algunos ejemplos, el primer y el segundo orden de exploración pueden ser sólo algunos de los órdenes de exploración que pueden utilizarse dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo orden de exploración pueden ser los únicos órdenes de exploración utilizados dentro del sistema 10 para codificar los bloques. Tal como se ha descrito anteriormente, el primer y el segundo orden de exploración pueden ser simétricos (o por lo menos parcialmente simétricos) entre sí. 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 determinar 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 en 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 intercambiar las coordenadas -x e -y, y codificar las coordenadas -x e -y intercambiadas (810). Tal como se ha descrito anteriormente, las coordenadas -x e -y intercambiadas también corresponden a la información de posición del último coeficiente significativo para el bloque, pero se procesan adicionalmente, es decir, se intercambian, por la unidad de codificación por entropía 56 para permitir codificar la información más eficientemente que cuando se utilizan otras técnicas. Específicamente, las coordenadas -x e -y intercambiadas pueden permitir el uso de 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 del último coeficiente significativo para el bloque, tal como también se ha descrito anteriormente. En cualquier caso, la unidad de codificación por entropía 56 puede codificar la información de posición del último coeficiente significativo para el bloque, ya sea representada como las coordenadas -x e -y, o 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, además, estadísticas que indican una probabilidad de una posición determinada 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 la 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 determinado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar la probabilidad de cada una de las coordenadas -x e -y que se han descrito anteriormente comprenda un valor determinado.
Debido a que el primer y el segundo orden de exploración pueden ser simétricos (o por lo menos parcialmente simétricos) entre sí, la probabilidad de que la coordenada -x comprenda un valor determinado cuando el orden de exploración comprende el primer orden de exploración es 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 manera similar, la probabilidad de que la coordenada -y comprenda un valor determinado 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, las coordenadas -x e -y cuando el orden de exploración comprende el primer orden de exploración pueden tener la misma o similar probabilidad de que comprendan un valor determinado como las coordenadas -x e -y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. Como tales, las estadísticas pueden indicar, además, la probabilidad de que cada una de las coordenadas -x e -y intercambiadas comprenda un valor determinado. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estadísticas utilizando la información de posición del ú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 previamente codificados.
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 en base a 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 en base a las estadísticas de
5
10
15
20
25
30
35
40
45
50
55
60
manera que la probabilidad de que la coordenada -x comprenda un valor determinado se utiliza para codificar la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado se utiliza 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 basadas 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 determinado puede actualizarse utilizando la coordenada -x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado puede actualizarse utilizando la coordenada -y y la coordenada -x intercambiada. Por ejemplo, las estadísticas actualizadas pueden utilizarse para codificar la información de posición del último coeficiente significativo para bloques codificados posteriormente de datos de vídeo de la manera descrita anteriormente.
En algunos ejemplos, para codificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas basadas en las estadísticas, la unidad de codificación por entropía 56 puede llevar a cabo un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir una de las coordenadas -x e -y, las coordenadas intercambiadas -x e -y, y el orden de exploración. En este ejemplo, la unidad de codificación por entropía 56 puede utilizar 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 utiliza el primer orden de exploración para codificar el bloque, y para codificar las coordenadas -x e -y intercambiadas cuando utiliza el segundo orden de exploración para codificar el bloque.
Además, en casos en los que una coordenada (por ejemplo, coordenada -y) se codifica después de otra coordenada (por ejemplo, coordenada -x), la unidad de codificación por entropía 56 puede codificar la coordenada utilizando un valor de la otra coordenada previamente codificada como contexto. Es decir, puede utilizarse 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 utilizado 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 determinado. La unidad de codificación por entropía 56 puede entonces utilizar las estadísticas seleccionadas para codificar las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas llevando a cabo el proceso de codificación por entropía adaptable al contexto.
En este ejemplo, las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más contenedores, es decir, binarizada. Como tal, para codificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas en base a las estadísticas, la unidad de codificación por entropía 56 puede codificar cada contenedor de una palabra de código correspondiente a una determinada coordenada realizando el proceso de codificación por entropía adaptable al contexto. En este ejemplo, las estadísticas incluidas en el modelo de contexto, que indican una probabilidad de la coordenada comprenda un valor determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de codificación de entropía 56 puede determinar las estimaciones de probabilidad utilizando valores de los correspondientes contenedores para bloques codificados previamente de datos de vídeo, por ejemplo, contenedores de palabras codificadas correspondientes a coordenadas -x e -y y coordenadas -x e -y intercambiadas para los bloques previamente codificados, por ejemplo, como parte de la determinación de las estadísticas basadas en la información de posición del último coeficiente significativo para los bloques previamente codificados, tal como se ha descrito anteriormente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada contenedor, por ejemplo, como parte de la actualización de las estadísticas basadas en las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas, tal como también descrito anteriormente. La unidad de codificación por entropía 56 puede utilizar las estimaciones de probabilidad para codificar cada contenedor realizando el proceso de codificación por entropía adaptable al contexto.
Tal como se ha descrito anteriormente, 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 por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basado por lo menos en parte en un valor de por lo menos un contenedor, por ejemplo, un contenedor correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de codificación por entropía 56 puede codificar el uno o más contenedores de la secuencia correspondiente a una de las coordenadas y al uno o más contenedores de la secuencia correspondiente a la otra coordenada de manera intercalada.
5
10
15
20
25
30
35
40
45
50
55
60
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, información de orden de exploración para el bloque. En algunos ejemplos, cuando el orden de exploración incluye uno de los dos órdenes de exploración utilizados 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 utilizando un único contenedor. Por ejemplo, la unidad de codificación por entropía 56 puede codificar el único contenedor 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, cuando el orden de exploración incluye uno de los tres órdenes de exploración que puede utilizar 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 utilizando entre uno y dos intervalos. Por ejemplo, la unidad de codificación por entropía 56 puede codificar un primer contenedor 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"). En el caso de que el primer contenedor indique que el orden de exploración no es el primero, la unidad de codificación por entropía 56 puede codificar uno segundo contenedor 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 utilizar otros procedimientos de codificación de la información de orden de exploración para el bloque, incluido el uso de otros valores de contenedores. En algunos ejemplos, la unidad de codificación por entropía 56 puede señalizar cada contenedor directamente en la secuencia de bits. En otros ejemplos, la unidad de codificación por entropía 56 puede codificar adicionalmente cada intervalo utilizando un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) de una manera similar a como se ha descrito anteriormente con referencia a los intervalos 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. Alternativamente, tal como se ha descrito anteriormente, 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 utiliza 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 las 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 del coeficiente significativo para el bloque. Tal como se ha descrito anteriormente, por ejemplo, la información de posición del coeficiente significativo para el bloque puede representar utilizando una secuencia de indicadores de coeficientes significativos. Tal como también se ha descrito anteriormente, 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 adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto basado en por lo menos un contexto, donde por lo 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 determinado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad utilizando los valores de los correspondientes indicadores de coeficientes significativos para los bloques de datos de vídeo previamente codificados. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor determinado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden utilizarse para codificar información de posición de coeficiente significativo para bloques codificados posteriormente de datos de vídeo de la manera descrita anteriormente.
Finalmente, la unidad de codificación por entropía 56 puede detener la codificación de la información de posición del último coeficiente significativo en base a la información de orden de exploración para el bloque (816). Por ejemplo, la unidad de codificación por entropía 56 puede seguir con otras tareas de codificación, por ejemplo, la codificación de otros elementos de sintaxis para el bloque, o un bloque siguiente, tal como se ha descrito anteriormente.
De esta manera, el procedimiento de la figura 8 representa un ejemplo de un procedimiento de codificación de coordenadas -x e -y que indican una posición de un último coeficiente distinto de cero dentro de un bloque de datos de vídeo según un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración, y codificación de coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero 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 el que 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 procedimiento para decodificar de manera eficiente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción. Las técnicas de la figura 9 generalmente pueden realizarse a través de cualquier unidad de procesamiento o procesador, ya sea implementada en hardware,
5
10
15
20
25
30
35
40
45
50
55
60
software, firmware o una combinación de los mismos y, si se implementa en software o firmware, puede proporcionarse el hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 9 se describen respecto a la unidad de decodificación por entropía 70 (figura 3), aunque debe 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 descripción.
Inicialmente, la unidad de decodificació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, tal como se ha descrito anteriormente. La unidad de decodificación por entropía 70 puede decodificar 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 del último coeficiente significativo para el bloque. El orden de exploración puede ser un orden de exploración utilizado 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, tal como se ha descrito anteriormente. Tal como también se ha descrito anteriormente, la posición común puede corresponder a la posición DC. Además, las coordenadas determinadas pueden representarse cada una utilizando una palabra de código unaria que comprenda una secuencia de uno o más intervalos.
Tal como se ha descrito anteriormente con referencia al ejemplo de la figura 8, las coordenadas determinadas pueden corresponder a las coordenadas -x e -y, o las 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 del último coeficiente significativo para el bloque, pero las coordenadas -x e -y intercambiadas se procesan adicionalmente, es decir, se intercambian, para permitir la codificación de la información de manera más eficiente que cuando se utilizan otras técnicas. Específicamente, las coordenadas -x e -y intercambiadas pueden permitir el uso de 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 del último coeficiente significativo para el bloque, tal como también se ha descrito anteriormente.
En cualquier caso, de manera similar a la descrita anteriormente con referencia al ejemplo de la unidad de codificación por entropía 56 de la figura 8, para decodificar los datos de importancia para determinar las coordenadas, la unidad de decodificación por entropía 70 puede determinar, además, estadísticas que indican una probabilidad de una posición determinada 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 determinado (por ejemplo, "0", "1", "2", etc.). En otras palabras, las estadísticas pueden indicar una probabilidad de cada una de las coordenadas -x e -y que se han descrito anteriormente comprenda un valor determinado.
Debido a que el primer y el segundo orden de exploración pueden ser simétricos (o por lo menos parcialmente simétricos) entre sí, la probabilidad de que la coordenada -x comprenda un valor determinado cuando el orden de exploración comprende el primer orden de exploración es 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 manera similar, la probabilidad de que la coordenada -y comprenda un valor determinado 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, las coordenadas -x e -y cuando el orden de exploración comprende el primer orden de exploración pueden tener la misma o similar probabilidad de que comprenda un valor determinado que las coordenadas -x e -y intercambiadas, respectivamente, cuando el orden de exploración comprende el segundo orden de exploración. Como tales, las estadísticas pueden indicar, además, la probabilidad de que cada una de las coordenadas -x e -y intercambiadas comprenda un valor determinado. En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estadísticas utilizando la información de posición del último coeficiente significativo para bloques previamente decodificados de datos de vídeo, por ejemplo, valores de coordenadas -x e -y y coordenadas -x e -y intercambiadas para los bloques decodificados previamente.
En este ejemplo, la unidad de decodificación por entropía 70 puede decodificar los datos de importancia para determinar las coordenadas, es decir, las coordenadas -x e -y, o las coordenadas -x e -y intercambiadas, basadas en
5
10
15
20
25
30
35
40
45
50
55
60
las estadísticas. Por ejemplo, la unidad de decodificación por entropía 70 puede decodificar los datos de importancia para determinar las coordenadas -x e -y, o las coordenadas -x e -y intercambiadas en base a las estadísticas de manera que la probabilidad de que la coordenada -x comprenda un valor determinado se utiliza para decodificar 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 determinado se utiliza para decodificar los datos de importancia para determinar la coordenada -y la coordenada -x intercambiada. Además, la unidad de decodificación por entropía 70 puede actualizar las estadísticas basadas 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 determinado puede actualizarse utilizando la coordenada - x y la coordenada -y intercambiada, y la probabilidad de que la coordenada -y comprenda un valor determinado puede actualizarse utilizando la coordenada -y y la coordenada -x intercambiada. Por ejemplo, las estadísticas actualizadas pueden utilizarse para decodificar datos de importancia para determinar la información de posición del coeficiente significativo para bloques de datos de vídeo decodificados posteriormente de la manera descrita anteriormente.
En algunos ejemplos, para decodificar los datos de importancia para determinar las coordenadas -x e -y, o las coordenadas -x e -y intercambiadas en base a las estadísticas, la unidad de decodificación por entropía 70 puede realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso de CABAC) que incluye la aplicación de un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir una de las coordenadas -x e -y, las coordenadas intercambiadas -x e -y, y el orden de exploración. En este ejemplo, la unidad de decodificación por entropía 70 puede utilizar 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 decodificación por entropía 70 puede seleccionar las mismas estadísticas para decodificar los datos de importancia para determinar las coordenadas -x e -y cuando utiliza el primer orden de exploración para decodificar el bloque, y para determinar las coordenadas -x e -y intercambiadas cuando se utiliza el segundo orden de exploración para decodificar el bloque.
Las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más intervalos, es decir, binarizada. Como tal, para decodificar los datos de importancia para determinar las coordenadas -x e -y, o las coordenadas -x e -y intercambiadas en base a las estadísticas, la unidad de decodificación por entropía 70 puede decodificar los datos de importancia para determinar cada contenedor de una palabra de código correspondiente a una coordenada particular al realizar el proceso de codificación por entropía adaptable 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 determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estimaciones de probabilidad utilizando valores de compartimientos correspondientes para bloques decodificados previamente de datos de vídeo, por ejemplo, contenedores de palabras de código correspondientes a coordenadas -x e -y e intercambiando coordenadas -x e -y para los bloques decodificados previamente, por ejemplo, como parte de la determinación de las estadísticas basadas en la información de posición del último coeficiente significativo para los bloques decodificados previamente, tal como se ha descrito anteriormente. En otros ejemplos, la unidad de decodificación por entropía 70 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada intervalo, por ejemplo, como parte de la actualización de las estadísticas basadas en las coordenadas -x e -y, y las coordenadas -x e -y intercambiadas, tal como también se ha descrito anteriormente. La unidad de decodificación por entropía 70 puede utilizar las estimaciones de probabilidad para decodificar los datos de significación para determinar cada intervalo realizando el proceso de codificación por entropía adaptable al contexto.
Tal como se ha descrito anteriormente, como otro ejemplo, la unidad de decodificación por entropía 70 puede decodificar las coordenadas -x e -y y las coordenadas -x e -y intercambiadas decodificando por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basadas por lo menos en parte en un valor de por lo menos un contenedor, por ejemplo, un contenedor correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de decodificación por entropía 70 puede decodificar uno o más contenedores de la secuencia correspondiente a una de las coordenadas y uno o más contenedores de la secuencia correspondiente a la otra coordenada de manera intercalada.
La unidad de decodificación por entropía 70 puede recibir, además, datos codificados de orden de exploración para el bloque (904). La unidad de decodificación por entropía 70 puede decodificar 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. Alternativamente, tal como se ha descrito anteriormente, la unidad de decodificación por entropía 70 puede no recibir y decodificar los datos de orden de exploración codificados para el
5
10
15
20
25
30
35
40
45
50
55
60
bloque cuando la unidad de decodificación por entropía 70 utiliza un orden de exploración adaptativa para decodificar el bloque. En cualquier caso y, la unidad de decodificación por entropía 70 puede determinar, además, 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 orden de exploración pueden ser órdenes de exploración que pueden ser utilizados por la unidad de decodificación por entropía 70 para decodificar bloques de datos de vídeo dentro del sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el decodificador de vídeo 30, tal como se ha descrito anteriormente. El primer y el segundo orden de exploración pueden ser sólo algunos de los órdenes de exploración que pueden utilizarse dentro del sistema 10 para codificar los bloques. En otros ejemplos, el primer y el segundo orden de exploración pueden los únicos órdenes de exploración utilizados dentro del sistema 10 para codificar los bloques. En algunos casos, el primer y el segundo orden de exploración pueden ser simétricos (o por lo menos parcialmente simétricos) entre sí. 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 decodificació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 utilizando 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 decodificación por entropía 70 puede continuar para decodificar el bloque utilizando las coordenadas -x e -y determinadas. En algunos ejemplos, la unidad de decodificación por entropía 70 puede recibir, además, datos de importancia codificados restantes para el bloque (914). La unidad de decodificación por entropía 70 puede decodificar adicionalmente los datos de importancia restantes para determinar información que indica las 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. Tal como se ha descrito anteriormente, por ejemplo, la información de posición del coeficiente significativo para el bloque puede representarse utilizando una secuencia de indicadores de coeficiente significativo. Tal como también se ha descrito anteriormente, los datos de importancia restantes pueden decodificarse para determinar la información de posición de coeficiente significativo decodificando los datos de importancia restantes para determinar cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto basado en por lo menos un contexto, en el que el por lo 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 determinado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estimaciones de probabilidad utilizando valores de indicadores de coeficientes significativos correspondientes para bloques de datos de vídeo decodificados previamente. En otros ejemplos, la unidad de decodificación por entropía 70 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor determinado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden utilizarse para decodificar los datos de importancia restantes para determinar la información de la posición del coeficiente significativo para bloques de datos de vídeo decodificados posteriormente de la manera 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 decodificación por entropía 70 puede intercambiar las coordenadas -x e -y determinadas (912) y continuar decodificando el bloque utilizando las coordenadas -x e -y intercambiadas de manera similar a como se ha descrito anteriormente con referencia a las etapas (914) y (916). Tal como se ha descrito anteriormente, las coordenadas -x e -y y las coordenadas -x e -y intercambiadas corresponden a la información de posición del último coeficiente significativo para el bloque, pero las coordenadas -x e -y intercambiadas se procesan adicionalmente para permitir la codificación de la información de una manera más eficiente que cuando se utilizan otras técnicas.
Finalmente, la unidad de decodificación por entropía 70 puede detener la decodificación de la información de posición del último coeficiente significativo basada en la información de orden de exploración para el bloque (918). Por ejemplo, la unidad de decodificación por entropía 70 puede proceder a otras tareas de codificación, por ejemplo, decodificación de otros elementos de sintaxis para el bloque, o un bloque siguiente, tal como se ha descrito anteriormente.
De esta manera, el procedimiento de la figura 9 representa un ejemplo de un procedimiento de codificación de coordenadas -x e -y que indican una posición de un último coeficiente distinto de cero 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 de codificación de coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero 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 el que el segundo orden de exploración es diferente del primer orden de exploración.
5
10
15
20
25
30
35
40
45
50
55
60
La figura 10 es un diagrama de flujo que ilustra otro ejemplo de un procedimiento para codificar eficientemente información de posición del último coeficiente significativo basada en información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción. Las técnicas de la figura 10 pueden realizarse, en general, por cualquier unidad de procesamiento o procesador, ya sea implementada en hardware, software, firmware o una combinación de los mismos y, si implementa en software o firmware, puede proporcionarse el hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 10 se describen respecto a la unidad de codificación por entropía 56 (figura 2), aunque debe 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 descripció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 CU, tal como se ha descrito anteriormente. La unidad de codificación por entropía 56 puede determinar, además, coordenadas -x e -y que indican una posición de un último coeficiente significativo dentro del bloque según un orden de exploración asociado al bloque (1002), es decir, la información de posición del último coeficiente significativo para el bloque. Por ejemplo, el orden de exploración puede ser un orden de exploración utilizado 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 utilizados 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 decodificador 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 DC. Además, tal como también se ha descrito anteriormente, las coordenadas -x e -y pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más intervalos.
La unidad de codificación por entropía 56 puede determinar, además, si las coordenadas -x e -y corresponden a una posición común dentro del bloque (1004). La posición común puede corresponder a la posición DC. 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, tal 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 manera 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 utilizando un único contenedor. Por ejemplo, la unidad de codificación por entropía 56 puede codificar un primer contenedor que indica si la coordenada -x corresponde a la posición común (por ejemplo, bin1 = "1") o no (bin1 = "0"), y un segundo contenedor que indica si la coordenada -y corresponde a la posición común (por ejemplo, bin2 = "1") o no (bin2 = "0"). En algunos ejemplos, la unidad de codificación por entropía 56 puede señalizar cada contenedor directamente en la secuencia de bits. En otros ejemplos, la unidad de codificación por entropía 56 puede codificar adicionalmente cada intervalo utilizando un proceso de codificación por entropía adaptable al contexto de una manera similar a la descrita anteriormente con referencia a las figuras 7-9, por ejemplo, realizando un proceso CABAC que incluye aplicar un modelo de contexto basado en un contexto.
En el caso de que las coordenadas -x e -y correspondan a la posición común (1010), la unidad de codificación por entropía 56 puede detener la codificación de la información de posición del último coeficiente significativo en base a la información de orden de exploración para el bloque (1024). En otras palabras, en los casos en que las coordenadas -x e -y corresponden a la posición común, no existen coeficientes significativos adicionales más allá del último (y único) coeficiente significativo dentro del bloque según 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 seguir con otras tareas de codificación, por ejemplo, la codificación de otros elementos de sintaxis para el bloque, o un bloque siguiente.
En el caso de que las coordenadas -x e -y no correspondan cada una 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, cuando el orden de exploración incluye uno de los dos órdenes de exploración utilizados 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 utilizando un único contenedor. Por ejemplo, la unidad de codificación por entropía 56 puede codificar el único contenedor 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, cuando el orden de exploración incluye uno de los tres órdenes de exploración que puede utilizar 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 utilizando entre uno y dos contenedores. Por ejemplo, la unidad de codificación por entropía 56 puede codificar un primer contenedor para
5
10
15
20
25
30
35
40
45
50
55
60
indicar si el orden de exploración es un primer orden de exploración (por ejemplo, binl = "0" si el orden de exploración es el primer orden de exploración, y bin1 = "1" de otro modo). En el caso en que el primer contenedor 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 contenedor 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 utilizarse otros procedimientos de codificación de la información de orden de exploración para el bloque, incluido el uso de otros valores de contenedores. En algunos ejemplos, la unidad de codificación por entropía 56 puede señalar cada contenedor directamente en la secuencia de bits. En otros ejemplos, la unidad de codificación por entropía 56 puede codificar adicionalmente cada intervalo utilizando un proceso de codificación por entropía adaptable al contexto de manera similar a como se ha descrito anteriormente con referencia a las figuras 7-9, por ejemplo, realizando un proceso CABAC que incluye aplicar un modelo de contexto basado en un contexto. Alternativamente, tal como se ha descrito anteriormente, 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 utiliza un orden de exploración adaptativa para codificar el bloque.
En cualquier caso, en el caso de que la coordenada -x no se corresponda con la posición común (1014), la unidad de codificación por entropía 56 puede codificar adicionalmente la coordenada -x en función del orden de exploración (1016). De manera similar, en el caso en 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 en función del orden de exploración (1020). Para codificar las coordenadas -x e -y, la unidad de codificación por entropía 56 puede determinar, además, estadísticas que indican una probabilidad de una posición determinada 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 determinado (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 anteriormente comprendan un valor determinado. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estadísticas utilizando información de posición del último coeficiente significativo para bloques de datos de vídeo previamente codificados, por ejemplo, valores de coordenadas -x e -y para los bloques previamente codificados.
En algunos ejemplos, las estadísticas pueden variar según el orden de exploración. En particular, la probabilidad de que una posición determinada dentro del bloque corresponda 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 del último coeficiente significativo para el bloque. Como tal, al codificar la información de posición del último coeficiente significativo para el bloque en base a las estadísticas, elegir las estadísticas basadas por lo menos en parte en el orden de exploración puede dar como resultado el uso de estadísticas precisas y, por lo tanto, puede habilitar la codificación eficiente. Por lo tanto, la unidad de codificación por entropía 56 puede codificar las coordenadas -x e -y en base a las estadísticas, en el que la unidad de codificación por entropía 56 selecciona las estadísticas basadas por lo 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 en función del orden de exploración. Además, la unidad de codificación por entropía 56 puede actualizar las estadísticas basadas 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 utilizarse para codificar la información de posición del último coeficiente significativo para bloques codificados posteriormente de datos de vídeo de la manera descrita anteriormente.
En algunos ejemplos, para codificar las coordenadas -x e -y en función de las estadísticas, la unidad de codificación por entropía 56 puede realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basadas en por lo menos un contexto. Por ejemplo, el por lo 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 utilizar el orden de exploración para seleccionar el modelo de contexto particular que incluye las estadísticas. De esta manera, la unidad de codificación por entropía 56 puede codificar las coordenadas -x e -y en función del orden de exploración. Además, en casos donde una coordenada (por ejemplo, coordenada -y) se codifica después de otra coordenada (por ejemplo, coordenada -x), la unidad de codificación por entropía 56 puede codificar la coordenada utilizando un valor de la otra coordenada previamente codificada como contexto. Es decir, puede utilizarse un valor de una de las coordenadas -x e -y previamente codificadas para seleccionar más estadísticas dentro del modelo de contexto que indiquen una probabilidad de que la otra coordenada actualmente codificada comprenda un valor determinado. La unidad de codificación por entropía 56 puede utilizar entonces las estadísticas seleccionadas para codificar las coordenadas -x e -y llevando a cabo el proceso de codificación por entropía adaptable al contexto.
5
10
15
20
25
30
35
40
45
50
55
60
En este ejemplo, las coordenadas -x e -y pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más intervalos, es decir, binarizada. Como tal, para codificar las coordenadas -x e -y en función de las estadísticas, la unidad de codificación por entropía 56 puede codificar cada contenedor de una palabra de código correspondiente a una determinada coordenada realizando el proceso de codificación por entropía adaptable 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 determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor 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 utilizando valores de contenedores correspondientes para bloques codificados previamente de datos de vídeo, por ejemplo, contenedores de palabras de código correspondientes a coordenadas -x e -y para los bloques previamente codificados, por ejemplo, como parte de la determinación de las estadísticas basadas en la información de posición del último coeficiente significativo para los bloques previamente codificados, tal como se ha descrito anteriormente. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada intervalo, por ejemplo, como parte de la actualización de las estadísticas basadas en las coordenadas -x e -y, tal como también se ha descrito anteriormente. La unidad de codificación por entropía 56 puede utilizar las estimaciones de probabilidad para codificar cada intervalo realizando el proceso de codificación por entropía adaptable al contexto.
Tal como se ha descrito anteriormente, como otro ejemplo, la unidad de codificación por entropía 56 puede codificar las coordenadas -x e -y mediante la codificación de por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basadas por lo menos en parte en un valor de por lo menos un contenedor, por ejemplo, un contenedor correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de codificación por entropía 56 puede codificar el uno o más contenedores de la secuencia correspondiente a una de las coordenadas y el uno o más contenedores de la secuencia correspondiente a la otra coordenada de manera 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 manera más eficiente que cuando se utilizan otros procedimientos. 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 utilizada para codificar las coordenadas. De manera similar, una unidad de decodificación por entropía, por ejemplo, una unidad de decodificació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 decodificar 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 las posiciones de todos los otros coeficientes significativos dentro del bloque según el orden de exploración (1022), es decir, la información de posición del coeficiente significativo para el bloque. Tal como se ha descrito anteriormente, la información de posición del coeficiente significativo para el bloque puede representarse utilizando una secuencia de indicadores de coeficientes significativos. Tal como se ha descrito también anteriormente, 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 adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto basado en por lo menos un contexto, donde por lo 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 determinado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar las estimaciones de probabilidad utilizando los valores de los correspondientes indicadores de coeficientes significativos para los bloques de datos de vídeo previamente codificados. En otros ejemplos, la unidad de codificación por entropía 56 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor determinado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden utilizarse para codificar información de posición de coeficiente significativo para bloques codificados posteriormente de datos de vídeo de la manera descrita anteriormente.
Finalmente, la unidad de codificación por entropía 56 puede detener la codificación de la información de posición del último coeficiente significativo en función de la información de orden de exploración para el bloque (1024). Por ejemplo, la unidad de codificación por entropía 56 puede continuar con otras tareas de codificación, por ejemplo, la codificación de otros elementos de sintaxis para el bloque, o un bloque siguiente, tal como se ha descrito anteriormente.
5
10
15
20
25
30
35
40
45
50
55
60
De esta manera, el procedimiento de la figura 10 representa un ejemplo de un procedimiento de codificación de coordenadas -x e -y que indican una posición de un último coeficiente distinto de cero dentro de un bloque de datos de vídeo según un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración y de codificación de las coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero 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 el que 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 procedimiento para decodificar de manera eficiente información de posición del último coeficiente significativo en base a información de orden de exploración para un bloque de datos de vídeo, consistente con las técnicas de esta descripción. Las técnicas de la figura 11 pueden realizarse generalmente a través de cualquier unidad de procesamiento o procesador, ya sea implementada en hardware, software, firmware o una combinación de los mismos y, si se implementa en software o firmware, puede proporcionarse el hardware correspondiente para ejecutar instrucciones para el software o firmware. Para fines de ejemplo, las técnicas de la figura 11 se describen respecto a la unidad de decodificación por entropía 70 (figura 3), aunque debe 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 descripción.
Inicialmente, la unidad de decodificació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, tal como se ha descrito anteriormente. La unidad de decodificación por entropía 70 puede decodificar 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 según un orden de exploración asociado al bloque corresponde a una posición común (1102). De manera similar, la unidad de decodificación por entropía 70 puede recibir, además, una segunda señal para el bloque (1104). La unidad de decodificación por entropía 70 puede decodificar adicionalmente la segunda señal para determinar una indicación de si una coordenada -y que indica la posición del ú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 utilizado 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 utilizadas para codificar bloques de datos de vídeo en un sistema de codificación correspondiente 10 que comprende el codificador de vídeo 20 y el decodificador de vídeo 30. Por ejemplo, cada uno de la pluralidad de órdenes de exploración puede originarse en la posición común, tal como se ha descrito anteriormente. La posición común puede corresponder a la posición DC.
Además, cada indicación puede comprender un único contenedor. Por ejemplo, la unidad de decodificación por entropía 70 puede decodificar la primera señal para determinar un primer contenedor que indica si la coordenada -x corresponde a la posición común (por ejemplo, bin1 = "1") o de lo contrario (bin1 = "0"), y decodificar la segunda señal para determinar un segundo contenedor que indique si la coordenada -y corresponde a la posición común (por ejemplo, bin2 = "1") o de lo contrario (bin2 = "0"). En algunos ejemplos, la unidad de decodificación por entropía 70 puede recibir cada contenedor directamente en la secuencia de bits. Es decir, la primera señal y la segunda señal pueden comprender el primer contenedor y el segundo contenedor, respectivamente. En otros ejemplos, la unidad de decodificación por entropía 70 puede decodificar el primera y la segunda señal para determinar los respectivos contenedores utilizando un proceso de codificación por entropía adaptable al contexto de manera similar a la descrita anteriormente con referencia a las figuras 7-9, por ejemplo, realizando un proceso CABAC que incluye aplicar un modelo de contexto basado en un contexto.
En el caso de que cada una de las coordenadas -x e -y correspondan a la posición común (1108), la unidad de decodificación por entropía 70 puede detener la decodificación de la información de posición del último coeficiente significativo basada en la información de orden de exploración para el bloque (1130). En otras palabras, en los casos en que las coordenadas -x e -y corresponden a la posición común, no existen coeficientes significativos adicionales más allá del último (y único) coeficiente significativo dentro del bloque según el orden de exploración dentro del bloque. En tales casos, la unidad de decodificación por entropía 70 no necesita decodificar 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 decodificación por entropía 70 puede continuar con otras tareas de codificación, por ejemplo, decodificación de otros elementos de sintaxis para el bloque, o un bloque siguiente.
En el caso de que las coordenadas -x e -y no correspondan cada una a la posición común (1108), la unidad de decodificación por entropía 70 puede recibir, además, datos codificados de orden de exploración para el bloque (1110). La unidad de decodificación por entropía 70 puede decodificar 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
5
10
15
20
25
30
35
40
45
50
55
60
orden de exploración para el bloque. En algunos ejemplos, cuando el orden de exploración incluye uno de los dos órdenes de exploración utilizados dentro del sistema 10 para codificar bloques de datos de vídeo, la unidad de decodificación por entropía 70 puede decodificar los datos de orden de exploración para determinar un único contenedor. Por ejemplo, el único contenedor 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, cuando el orden de exploración incluye uno de las tres órdenes de exploración que pueden utilizarse dentro del sistema 10 para codificar bloques de datos de vídeo, la unidad de decodificación por entropía 70 puede decodificar los datos de orden de exploración para determinar entre uno y dos contenedores. Por ejemplo, la unidad de decodificación por entropía 70 puede determinar un primer contenedor que indique 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"). En el caso de que el primer contenedor indique que el orden de exploración no es el primero, la unidad de decodificación por entropía 70 puede determinar un segundo contenedor que indique 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 utilizarse otros procedimientos para determinar la información de orden de exploración para el bloque, incluyendo el uso de otros valores de contenedores. En algunos ejemplos, la unidad de decodificación por entropía 70 puede recibir cada contenedor directamente en la secuencia de bits. Es decir, los datos de orden de exploración pueden comprender uno o más contenedores. En otros ejemplos, la unidad de decodificación por entropía 70 puede decodificar los datos de orden de exploración para determinar cada contenedor utilizando un proceso de codificación por entropía adaptable al contexto de manera similar a como se ha descrito anteriormente con referencia a las figuras 7-9, por ejemplo, realizando un proceso CABAC que incluye aplicar un modelo de contexto basado en un contexto. Alternativamente, tal como se ha descrito anteriormente, la unidad de decodificación por entropía 70 puede no recibir y decodificar los datos de orden de exploración codificados para el bloque cuando la unidad de decodificación por entropía 70 utiliza un orden de exploración adaptativa para decodificar 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 decodificación por entropía 70 puede recibir adicionalmente la coordenada -x codificada (1116) y decodificar la coordenada -x en función del orden de exploración (1118). De manera similar, en el caso de que la coordenada -y no corresponda a la posición común (1120), la unidad de decodificación por entropía 70 puede recibir adicionalmente la coordenada -y codificada (1122) y decodificar la coordenada -y en función del orden de exploración (1124). Tal como se ha descrito anteriormente, para decodificar las coordenadas -x e -y codificadas, la unidad de decodificación por entropía 70 puede determinar, además, estadísticas que indican una probabilidad de una posición determinada dentro del bloque correspondiente a la posición del último coeficiente significativo dentro del bloque según el orden de exploración, de una manera substancialmente similar a la descrita anteriormente 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 -y, que corresponde a la posición del último coeficiente significativo dentro del bloque de acuerdo con el orden de exploración comprenda un valor determinado (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 anteriormente comprenda un valor determinado. En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estadísticas utilizando la información de posición del último coeficiente significativo para bloques de datos de vídeo previamente decodificados, por ejemplo, valores de coordenadas -x e -y para los bloques decodificados previamente.
En algunos ejemplos, las estadísticas pueden variar según el orden de exploración. En particular, la probabilidad de que una posición determinada dentro del bloque corresponda 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 del último coeficiente significativo para el bloque. Como tal, cuando se decodifica la información de posición del último coeficiente significativo para el bloque en base a las estadísticas, elegir las estadísticas basadas por lo menos en parte en el orden de exploración puede dar como resultado el uso de estadísticas precisas y, por lo tanto, permitir una decodificación eficiente. Como tal, la unidad de decodificación por entropía 70 puede decodificar las coordenadas -x e -y codificadas en base a las estadísticas, donde la unidad de decodificación por entropía 70 selecciona las estadísticas basadas por lo menos en parte en el orden de exploración. En consecuencia, la unidad de decodificación por entropía 70 puede decodificar las coordenadas -x e -y codificadas en base al orden de exploración. Además, la unidad de decodificación por entropía 70 puede actualizar las estadísticas basadas 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 utilizarse para decodificar la información de posición del último coeficiente significativo para bloques de datos de vídeo decodificados posteriormente de la manera descrita anteriormente.
En algunos ejemplos, para decodificar las coordenadas -x e -y codificadas en base a las estadísticas, la unidad de decodificación por entropía 70 puede realizar un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto que incluye las estadísticas basadas en por
5
10
15
20
25
30
35
40
45
50
55
60
lo menos un contexto. Por ejemplo, el por lo menos un contexto puede incluir una de las coordenadas -x e -y y el orden de exploración. En este ejemplo, la unidad de decodificación por entropía 70 puede utilizar el orden de exploración para seleccionar el modelo de contexto particular que incluye las estadísticas. De esta manera, la unidad de decodificación por entropía 70 puede decodificar las coordenadas -x e -y codificadas en base al orden de exploración. Además, en casos en los que una coordenada codificada (por ejemplo, coordenada -y) se decodifica después de otra coordenada codificada (por ejemplo, coordenada -x), la unidad de decodificación por entropía 70 puede decodificar la coordenada utilizando un valor de la otra coordenada decodificada previamente como contexto. Es decir, puede utilizarse un valor de una de las coordenadas -x e -y previamente decodificadas para seleccionar adicionalmente estadísticas dentro del modelo de contexto que indiquen una probabilidad de que la otra coordenada actualmente decodificada comprenda un valor determinado. La unidad de decodificación por entropía 70 puede entonces utilizar las estadísticas seleccionadas para decodificar las coordenadas -x e -y codificadas mediante la realización del proceso de codificación por entropía adaptable al contexto.
Las coordenadas -x e -y pueden representarse cada una utilizando una palabra de código unaria que comprende una secuencia de uno o más contenedores, es decir, binarizada. Como tal, para decodificar las coordenadas -x e -y codificadas en base a las estadísticas, la unidad de decodificación por entropía 70 puede decodificar cada contenedor de una palabra codificada correspondiente a una coordenada particular realizando el proceso de codificación por entropía adaptable 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 determinado, pueden incluir estimaciones de probabilidad que indican una probabilidad de que cada contenedor de la palabra de código correspondiente a la coordenada comprenda un valor determinado (por ejemplo, "0" o "1"). Además, las estadísticas pueden incluir diferentes estimaciones de probabilidad para cada contenedor de la palabra de código, dependiendo de la posición del contenedor respectivo dentro de la palabra de código. En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estimaciones de probabilidad utilizando valores de contenedores correspondientes para bloques decodificados previamente de datos de vídeo, por ejemplo, contenedores de palabras de código correspondientes a coordenadas -x e -y para los bloques decodificados previamente, por ejemplo, como parte de la determinación de las estadísticas basadas en la información de posición del último coeficiente significativo para los bloques previamente decodificados, tal como se ha descrito anteriormente. En otros ejemplos, la unidad de decodificación por entropía 70 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada contenedor, por ejemplo, como parte de la actualización de las estadísticas basadas en las coordenadas -x e -y, tal como también se ha descrito anteriormente. La unidad de decodificación por entropía 70 puede utilizar las estimaciones de probabilidad para decodificar cada contenedor realizando el proceso de codificación por entropía adaptable al contexto.
Tal como se ha descrito anteriormente, como otro ejemplo, la unidad de decodificación por entropía 70 puede decodificar las coordenadas -x e -y mediante la decodificación de por lo menos un contenedor de la secuencia correspondiente a una de las coordenadas seleccionando las estadísticas del modelo de contexto basadas por lo menos en parte en un valor de por lo menos un contenedor, por ejemplo, un contenedor correspondiente, de la secuencia correspondiente a la otra coordenada. Además, la unidad de decodificación por entropía 70 puede decodificar uno o más contenedores de la secuencia correspondiente a una de las coordenadas y uno o más contenedores de la secuencia correspondiente a la otra coordenada de manera intercalada.
Al decodificar cada coordenada, la unidad de decodificación por entropía 70 puede añadir un valor "1" a cada coordenada para permitir que las coordenadas se codifiquen más eficazmente que cuando se utilizan otros procedimientos. Por ejemplo, tal como también se ha descrito anteriormente, 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 utilizada para codificar las coordenadas. Como tal, la unidad de decodificación por entropía 70 puede añadir el valor "1" a cada coordenada después de decodificar la coordenada, para determinar la coordenada.
En algunos ejemplos, la unidad de decodificación por entropía 70 puede recibir adicionalmente datos codificados de importancia para el bloque (1126). En estos ejemplos, la unidad de decodificación por entropía 70 puede decodificar los datos de importancia para determinar información que indica las 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 del coeficiente significativo para el bloque. Tal como se ha descrito anteriormente, la información de posición del coeficiente significativo para el bloque puede representarse utilizando una secuencia de indicadores de coeficientes significativos. Tal como también se ha descrito anteriormente, la información de posición de coeficiente significativo puede decodificarse decodificando cada indicador de coeficiente significativo de la secuencia realizando un proceso de codificación por entropía adaptable al contexto (por ejemplo, un proceso CABAC) que incluye aplicar un modelo de contexto basado en por lo menos un contexto, donde por lo menos un contexto puede incluir una posición del indicador dentro del bloque de acuerdo con el orden de exploración.
5
10
15
20
25
30
35
40
45
50
55
60
En este ejemplo, el modelo de contexto puede incluir estimaciones de probabilidad que indican una probabilidad de que cada indicador comprenda un valor determinado (por ejemplo, "0" o "1"). En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar las estimaciones de probabilidad utilizando valores de indicadores de coeficientes significativos correspondientes para bloques de datos de vídeo decodificados previamente. En otros ejemplos, la unidad de decodificación por entropía 70 también puede actualizar las estimaciones de probabilidad utilizando el valor de cada indicador para reflejar la probabilidad de que el indicador comprenda un valor determinado. Por ejemplo, las estimaciones de probabilidad actualizadas pueden utilizarse para decodificar la información codificada de la posición del coeficiente significativo para bloques de datos de vídeo decodificados posteriormente de la manera descrita anteriormente.
Finalmente, la unidad de decodificación por entropía 70 puede detener la decodificación de la información de posición del último coeficiente significativo en base a la información de orden de exploración para el bloque (1130). Por ejemplo, la unidad de decodificación por entropía 70 puede continuar con otras tareas de codificación, por ejemplo, decodificación de otros elementos de sintaxis para el bloque, o un bloque siguiente, tal como se ha descrito anteriormente.
De esta manera, el procedimiento de la figura 11 representa un ejemplo de un procedimiento de codificación de coordenadas -x e -y que indican una posición de un último coeficiente distinto de cero dentro de un bloque de datos de vídeo según un orden de exploración asociado al bloque cuando el orden de exploración comprende un primer orden de exploración y de codificación de coordenadas -x e -y intercambiadas que indican la posición del último coeficiente distinto de cero 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 el que 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 descripción, una secuencia de bits codificada puede comprender información de posición del ú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 codifica coordenadas -x e -y intercambiadas que indican la posición del último coeficiente significativo dentro del bloque según 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 decodificador de vídeo 30 puede, a su vez, decodificar la información de posición del último coeficiente significativo para el bloque. En particular, el decodificador de vídeo 30 puede decodificar las coordenadas -x e -y cuando el orden de exploración comprende el primer orden de exploración, y decodificar las coordenadas -x e -y intercambiadas cuando el orden de exploración comprende el segundo orden de exploración.
Por consiguiente, esta descripción también contempla un medio legible por ordenador que comprende una estructura de datos almacenados en el mismo que incluye una secuencia de bits codificada. La secuencia de bits codificada almacenada en el medio legible por ordenador puede comprender datos de vídeo codificados utilizando 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 según un orden de exploración asociado al bloque, representada utilizando coordenadas -x e -y. El orden específico en el que las coordenadas -x e -y están codificadas dentro de la secuencia 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, la secuencia de bits puede incluir la información de posición del último coeficiente significativo para el bloque codificado utilizando las coordenadas -x e -y. En este caso, la información de posición del último coeficiente significativo para el bloque puede decodificarse, y las coordenadas -x e -y resultantes pueden utilizarse directamente para decodificar el bloque. Alternativamente, si el orden de exploración comprende el segundo orden de exploración, entonces la secuencia de bits puede incluir la información de posición del último coeficiente significativo para el bloque codificado utilizando coordenadas -x e -y intercambiadas. En este caso, puede decodificarse la información de posición del último coeficiente significativo, en la que las coordenadas -x e -y intercambiadas se intercambian adicionalmente, y las coordenadas -x e -y resultantes pueden utilizarse para decodificar 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 implementa en software, las funciones pueden almacenarse o transmitirse, como una o más instrucciones o códigos, en un medio legible por ordenador y ejecutarse a través de 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 incluyendo cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder (1) medios de almacenamiento legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación, tal como una señal o una onda portadora. Los medios de
5
10
15
20
25
30
35
40
almacenamiento de datos pueden ser cualquier medio disponible al que pueda accederse mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta descripción. Un producto de programa de ordenador puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender rAm, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda utilizarse para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y pueda accederse al mismo desde un ordenador. Además, cualquier conexión se denomina adecuadamente medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota utilizando un cable coaxial, cable de fibra óptica, par trenzado, línea digital de abonado (DSL) o tecnologías inalámbricas tales como infrarrojo, 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 quedan incluidos en la definición de medio. Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que van dirigidos a medios de almacenamiento tangibles no transitorios. El término disco, tal como se utiliza aquí, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete y disco Blu-ray, donde los discos normalmente reproducen datos magnéticamente y ópticamente con láser. Dentro del alcance de los medios legibles por ordenador también deben incluirse combinaciones de lo anterior.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, por ejemplo, uno o más procesadores de señal digital (DSP), microprocesadores de uso general, circuitos integrados para aplicaciones específicas (ASIC), matrices de puertas programables en campo (FPGA), u otros circuitos integrados o lógicos discretos equivalentes. En consecuencia, el término "procesador", tal como se utiliza aquí, puede referirse a cualquiera de la estructura anterior o cualquier otra estructura adecuada para la implementación de las técnicas descritas aquí. Además, en algunos aspectos, la funcionalidad descrita aquí puede ir dentro de módulos de hardware y/o software dedicados configurados para codificación y decodificación, o incorporados en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta descripción pueden implementarse en una amplia variedad de dispositivos o aparatos, incluyendo un auricular inalámbrico, un circuito integrado (IC) o un conjunto de circuitos integrados (por ejemplo, un conjunto de chips). En esta descripción se describen diversos componentes, módulos o unidades para enfatizar los aspectos funcionales de dispositivos configurados para realizar las técnicas descritas, pero no requieren necesariamente la realización a través de diferentes unidades de hardware. Por el contrario, tal como se ha descrito anteriormente, pueden combinarse varias unidades en una unidad de hardware de códec o proporcionarse mediante un conjunto de unidades de hardware interoperativas, incluyendo uno o más procesadores tal como se ha descrito anteriormente, junto con el software y/o firmware adecuados.
Se han descrito varios ejemplos. Éstos y otros ejemplos se encuentran dentro del alcance de las siguientes reivindicaciones.
Claims (13)
- 51015202530354045505560REIVINDICACIONES1. Procedimiento de codificación de coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo, comprendiendo el procedimiento:realizar una codificación por entropía adaptable al contexto de coordenadas -x e -y que indican una posición horizontal y una posición vertical, respectivamente, de un último coeficiente distinto de cero dentro del bloque de acuerdo con un orden de exploración asociado al bloque, en el que la realización de codificación por entropía adaptable al contexto incluye utilizar estadísticas que están basadas en por lo menos un contexto, y en el que las estadísticas indican una probabilidad de que cada una de las coordenadas -x e -y comprenda un valor determinado cuando los coeficientes de los bloques de datos de vídeo son explorados en un primer orden de exploración, siendo la probabilidad de que las coordenadas -x e -y comprendan un valor determinado igual o similar a las probabilidades de que las coordenadas -x e -y intercambiadas comprendan un valor determinado cuando los coeficientes son explorados en un segundo orden de exploración diferente del primer orden de exploración;en el que los coeficientes del bloque de datos de vídeo se exploran en el primer orden de exploración como parte de la realización de la codificación por entropía adaptable al contexto de las coordenadas -x e -y, codificando la coordenada -x y la coordenada -y utilizando las estadísticas de manera que la coordenada -x se codifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado y la coordenada -y se codifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado; y,en el que los coeficientes del bloque de datos de vídeo se exploran en el segundo orden de exploración, intercambiando las coordenadas -x e -y, y como parte de la realización de codificación por entropía adaptable al contexto de las coordenadas -x e -y, codificando la coordenada -x intercambiada y la coordenada -y intercambiada utilizando las estadísticas de manera que la coordenada -x intercambiada se codifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado y la coordenada -y intercambiada se codifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado.
- 2. Procedimiento de codificación de coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo, comprendiendo el procedimiento:realizar una codificación por entropía adaptable al contexto de coordenadas -x e -y que indican una posición horizontal y una posición vertical, respectivamente, de un último coeficiente distinto de cero dentro del bloque de acuerdo con un orden de exploración asociado al bloque, en el que la realización de codificación por entropía adaptable al contexto incluye utilizar estadísticas que están basadas en por lo menos un contexto, y en el que las estadísticas indican una probabilidad de que cada una de las coordenadas -x e -y comprenda un valor determinado cuando los coeficientes del bloque de datos de vídeo son explorados en un primer orden de exploración, siendo la probabilidad de que las coordenadas -x e -y comprendan un valor determinado igual o similar a las probabilidades de que las coordenadas -x e -y intercambiadas comprendan un valor determinado cuando los coeficientes son explorados en un segundo orden de exploración diferente del primer orden de exploración;en el que los coeficientes del bloque de datos de vídeo se exploran en el primer orden de exploración, como parte de la realización de la codificación por entropía adaptable al contexto de las coordenadas -x e -y, decodificando la coordenada -x y la coordenada -y utilizando las estadísticas de manera que la coordenada -x se decodifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado y la coordenada -y se decodifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado; y,en el que los coeficientes del bloque de datos de vídeo se exploran en el segundo orden de exploración, intercambiando las coordenadas -x e -y, y como parte de la realización de codificación por entropía adaptable al contexto de las coordenadas -x e -y, decodificando la coordenada -x intercambiada y la coordenada -y intercambiada utilizando las estadísticas de manera que la coordenada -x intercambiada se decodifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado y la coordenada -y intercambiada se decodifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado.
- 3. Procedimiento de acuerdo con la reivindicación 1 o la reivindicación 2, en el que el primer orden de exploración y el segundo orden de exploración son simétricos entre sí.
- 4. Procedimiento de acuerdo con la reivindicación 1 o la reivindicación 2, en el que 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 el que el orden de exploración horizontal y el orden de exploración vertical se originan en una posición común dentro del bloque.
- 5. Procedimiento de acuerdo con la reivindicación 1 o la reivindicación 2, que comprende, además:codificar/decodificar información que identifica el orden de exploración.
- 6. Procedimiento de acuerdo con la reivindicación 1, que comprende, además:codificar valores de coeficientes distintos de cero asociados al bloque de datos de vídeo basados en los respectivos de las coordenadas -x e -y y las coordenadas -x e -y intercambiadas; yenviar los valores codificados de los coeficientes distintos de cero en una secuencia de bits.51015202530354045505560
- 7. Procedimiento de acuerdo con la reivindicación 2, caracterizado por el hecho de que comprende, además:recibir valores codificados de coeficientes distintos de cero asociados al bloque de datos de vídeo en una secuencia de bits; ydecodificar los valores codificados de coeficientes distintos de cero basados en los respectivos de las coordenadas -x e -y y las coordenadas -x e -y intercambiadas.
- 8. Procedimiento de acuerdo con la reivindicación 1 o la reivindicación 2, en el que codificar/decodificar cada una de las coordenadas -x e -y y las coordenadas -x e -y intercambiadas comprende codificar/decodificar una secuencia de uno o más contenedores, en el que las estadísticas indican probabilidades de que cada uno de los contenedores tengan un valor determinado.
- 9. Dispositivo para codificar coeficientes asociados a un bloque de datos de vídeo durante un proceso de codificación de vídeo, comprendiendo el dispositivo:medios para realizar una codificación por entropía adaptable al contexto de las coordenadas -x e -y que indican una posición horizontal y una posición vertical, respectivamente, de un último coeficiente distinto de cero dentro del bloque de acuerdo con un orden de exploración asociado al bloque, en el que la realización de codificación por entropía adaptable al contexto incluye utilizar estadísticas que están basadas en por lo menos un contexto, y en el que las estadísticas indican una probabilidad de que cada una de las coordenadas -x e -y comprenda un valor determinado cuando los coeficientes de los bloques de datos de vídeo son explorados en un primer orden de exploración, siendo la probabilidad de que las coordenadas -x e -y comprendan un valor determinado igual o similar a las probabilidades de que las coordenadas -x e -y intercambiadas comprendan un valor determinado cuando los coeficientes son explorados en un segundo orden de exploración diferente del primer orden de exploración;medios para codificar los coeficientes en los que:en el que los coeficientes del bloque de datos de vídeo se exploran en el primer orden de exploración, como parte de la realización de la codificación por entropía adaptable al contexto de las coordenadas -x e -y, codificando la coordenada -x y la coordenada -y utilizando las estadísticas de manera que la coordenada -x se codifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado y la coordenada -y se codifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado; y,en el que los coeficientes del bloque de datos de vídeo se exploran en el segundo orden de exploración, intercambiando las coordenadas -x e -y, y como parte de la realización de codificación por entropía adaptable al contexto de las coordenadas -x e -y, codificando la coordenada -x intercambiada y la coordenada -y intercambiada utilizando las estadísticas de manera que la coordenada -x intercambiada se codifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado y la coordenada -y intercambiada se codifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado.
- 10. Dispositivo para decodificar coeficientes asociados a un bloque de datos de vídeo durante un proceso de decodificación de vídeo, comprendiendo el dispositivo:medios para realizar una codificación por entropía adaptable al contexto de las coordenadas -x e -y que indican una posición horizontal y una posición vertical, respectivamente, de un último coeficiente distinto de cero dentro del bloque de acuerdo con un orden de exploración asociado al bloque, en el que la realización de codificación por entropía adaptable al contexto incluye utilizar estadísticas que están basadas en por lo menos un contexto, y en el que las estadísticas indican una probabilidad de que cada una de las coordenadas -x e -y comprenda un valor determinado cuando los coeficientes de los bloques de datos de vídeo son explorados en un primer orden de exploración, siendo la probabilidad de que las coordenadas -x e -y comprendan un valor determinado igual o similar a las probabilidades de que las coordenadas -x e -y intercambiadas comprendan un valor determinado cuando los coeficientes son explorados en un segundo orden de exploración diferente del primer orden de exploración;medios para decodificar los coeficientes en los que:en el que los coeficientes del bloque de datos de vídeo se exploran en el primer orden de exploración, decodificando, como parte de la realización de la codificación por entropía adaptable al contexto las coordenadas -x e -y, la coordenada -x y la coordenada -y utilizando las estadísticas de manera que la coordenada -x se decodifica en base a la probabilidad de que la coordenada -x comprenda un valor determinado y la coordenada -y se decodifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado; y,en el que los coeficientes del bloque de datos de vídeo se exploran en el segundo orden de exploración, decodificando, como parte de la realización de la codificación por entropía adaptable al contexto las coordenadas -x e -y, la coordenada -x y la coordenada -y intercambiadas utilizando las estadísticas de manera que la coordenada -x intercambiada se decodifica en base a la probabilidad de que la coordenada -y comprenda un valor determinado y la coordenada -y intercambiada se decodifica en base a la probabilidad de que la coordenada x comprenda un valor determinado.
- 11. Dispositivo de acuerdo con la reivindicación 9, que comprende, además:1015medios para codificar valores de coeficientes distintos de cero asociados al bloque de datos de vídeo basados en los respectivos de las coordenadas -x e -y y las coordenadas -x e -y intercambiadas; ymedios para enviar los valores codificados de los coeficientes distintos de cero en una secuencia debits.
- 12. Dispositivo de acuerdo con la reivindicación 10, que comprende, además:medios para recibir valores codificados de coeficientes distintos de cero asociados al bloque de datos de vídeo en una secuencia de bits; y medios para decodificar los valores codificados de coeficientes distintos de cero basados en los respectivos de las coordenadas -x e -y y las coordenadas -x e -y intercambiadas.
- 13. 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 el que las instrucciones hacen que el procesador lleve a cabo el procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 10.
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41974010P | 2010-12-03 | 2010-12-03 | |
US419740P | 2010-12-03 | ||
US201061426426P | 2010-12-22 | 2010-12-22 | |
US201061426372P | 2010-12-22 | 2010-12-22 | |
US201061426360P | 2010-12-22 | 2010-12-22 | |
US201061426426P | 2010-12-22 | ||
US201061426360P | 2010-12-22 | ||
US201061426372P | 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 |
US201113303015 | 2011-11-22 | ||
PCT/US2011/062715 WO2012075193A1 (en) | 2010-12-03 | 2011-11-30 | 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 |
---|---|
ES2673939T3 true ES2673939T3 (es) | 2018-06-26 |
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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
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 |
Country Status (16)
Country | Link |
---|---|
US (2) | US9042440B2 (es) |
EP (4) | EP2647204B1 (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 |
---|---|---|---|---|
SI3101901T1 (sl) * | 2010-07-09 | 2017-10-30 | Samsung Electronics Co.,Ltd. | Postopek entropijskega dekodiranja trasformnih koeficientov |
US10091529B2 (en) | 2010-07-09 | 2018-10-02 | Samsung Electronics Co., Ltd. | Method and apparatus for entropy encoding/decoding a transform coefficient |
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 |
US10499059B2 (en) | 2011-03-08 | 2019-12-03 | Velos Media, Llc | Coding of transform coefficients for video coding |
WO2012139192A2 (en) * | 2011-04-15 | 2012-10-18 | Research In Motion Limited | Methods and devices for coding and decoding the position of the last significant coefficient |
SI2728866T1 (sl) * | 2011-06-28 | 2019-03-29 | Samsung Electronics Co., Ltd. | Postopek dekodiranja videa z uporabo aritmetičnega dekodiranja |
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 |
EP2740272A4 (en) * | 2011-08-04 | 2015-04-08 | Mediatek Inc | METHOD AND DEVICE FOR RECORDING BINARIZATION OF SYNTAX ELEMENTS IN CABAC |
CN107493474B (zh) | 2011-11-08 | 2021-01-12 | 株式会社Kt | 利用解码装置对视频信号进行解码的方法 |
CN108235015A (zh) * | 2011-11-08 | 2018-06-29 | 三星电子株式会社 | 用于对视频进行解码的设备 |
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 |
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 |
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 | 한국전자통신연구원 | 고속 인트라 예측을 위한 영상 부호화 방법 및 장치 |
CN104869423B (zh) | 2012-04-15 | 2017-09-08 | 三星电子株式会社 | 变换系数等级的熵编码装置和熵解码装置 |
US9124872B2 (en) | 2012-04-16 | 2015-09-01 | Qualcomm Incorporated | Coefficient groups and coefficient coding for coefficient scans |
WO2013175736A1 (ja) * | 2012-05-25 | 2013-11-28 | パナソニック株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置 |
MX2013014976A (es) | 2012-05-25 | 2014-04-02 | Panasonic Corp | Metodo de codificacion de imagenes, aparato de codificacion de imagenes, metodo de decodificacion de imagenes, aparato de decodificacion de imagenes y aparato de codificacion y decodificacion de imagenes. |
BR112014000369B1 (pt) | 2012-05-25 | 2023-04-25 | Sun Patent Trust | Método de decodificação de imagem em movimento, aparelho de decodificação de imagem em movimento, método de codificação de imagem em movimento e aparelho de codificação de imagem em movimento |
AU2013273044B2 (en) | 2012-06-04 | 2016-09-15 | Sun Patent Trust | Video image encoding method, video image encoding device, video image decoding method, and video image decoding device |
KR102445274B1 (ko) * | 2012-10-01 | 2022-09-20 | 지이 비디오 컴프레션, 엘엘씨 | 향상 레이어에서 변환 계수 블록들의 서브블록-기반 코딩을 이용한 스케일러블 비디오 코딩 |
EP2941000B1 (en) | 2012-12-27 | 2020-11-04 | NEC Corporation | Video coding device, video coding method, and video coding program |
US10045033B2 (en) | 2013-06-11 | 2018-08-07 | Nec Corporation | Video coding device, video coding method, and video coding program |
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 | 华为技术有限公司 | 编解码方法和装置 |
WO2015142556A2 (en) * | 2014-03-16 | 2015-09-24 | Vid Scale, Inc. | Method and apparatus for the signaling of lossless video coding |
JP6341756B2 (ja) * | 2014-05-26 | 2018-06-13 | キヤノン株式会社 | 画像処理装置、画像処理装置の制御方法 |
KR20180040515A (ko) | 2015-09-10 | 2018-04-20 | 삼성전자주식회사 | 부호화 장치, 복호화 장치, 그 부호화 및 복호화 방법 |
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 |
CN117412037A (zh) | 2016-08-31 | 2024-01-16 | 株式会社Kt | 用于处理视频信号的方法和设备 |
US10810281B2 (en) | 2017-02-24 | 2020-10-20 | Texas Instruments Incorporated | Outer product multipler system and method |
US10817587B2 (en) | 2017-02-28 | 2020-10-27 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
US10735023B2 (en) | 2017-02-24 | 2020-08-04 | Texas Instruments Incorporated | Matrix compression accelerator 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 |
WO2020139182A1 (en) | 2018-12-28 | 2020-07-02 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for selecting transform selection in an encoder and decoder |
WO2020149594A1 (ko) * | 2019-01-15 | 2020-07-23 | 엘지전자 주식회사 | 영상 코딩 시스템에서 고주파 제로잉을 기반으로 레지듀얼 정보를 코딩하는 영상 디코딩 방법 및 그 장치 |
KR102456938B1 (ko) | 2019-03-12 | 2022-10-20 | 엘지전자 주식회사 | 변환에 기반한 영상 코딩 방법 및 그 장치 |
US20220277491A1 (en) * | 2019-05-31 | 2022-09-01 | Electronics And Telecommunications Research Institute | Method and device for machine learning-based image compression using global context |
KR20220024500A (ko) * | 2019-07-12 | 2022-03-03 | 엘지전자 주식회사 | 변환에 기반한 영상 코딩 방법 및 그 장치 |
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 |
EP1802141A2 (en) | 1995-03-15 | 2007-06-27 | 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 |
US20020122483A1 (en) * | 2001-03-02 | 2002-09-05 | Matsushita Electric Industrial Co., Ltd. | Encoding circuit and method |
US6650707B2 (en) * | 2001-03-02 | 2003-11-18 | Industrial Technology Research Institute | Transcoding apparatus 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 | 松下電器産業株式会社 | 可変長符号化方法および可変長復号化方法 |
ES2277174T3 (es) | 2002-05-02 | 2007-07-01 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Codificacion aritmetica de coeficientes de transformacion. |
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. | 画像符号化装置、画像復号化装置及びこれらの方法 |
US8200033B2 (en) | 2005-11-30 | 2012-06-12 | Koninklijke Philips Electronics 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 |
US8098735B2 (en) | 2006-12-21 | 2012-01-17 | Lsi Corporation | Efficient 8×8 CABAC residual block decode |
US7369066B1 (en) | 2006-12-21 | 2008-05-06 | Lsi Logic Corporation | Efficient 8×8 CABAC residual block transcode system |
EP2131596B1 (de) | 2006-12-27 | 2012-08-01 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung und Verfahren zum Kodieren eines Transformationskoeffizientenblockes |
PL2123052T3 (pl) | 2007-01-18 | 2011-05-31 | Fraunhofer Ges Forschung | Strumień danych wideo o skalowalnej jakości |
KR101356733B1 (ko) | 2007-03-07 | 2014-02-05 | 삼성전자주식회사 | 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치 |
US9455739B2 (en) | 2007-03-14 | 2016-09-27 | Nippon Telegraph And Telephone Corporation | Code amount estimating method and apparatus, and program and storage medium therefor |
US7813567B2 (en) | 2007-04-26 | 2010-10-12 | Texas Instruments Incorporated | Method of CABAC significance MAP decoding suitable for use on VLIW data processors |
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 |
US8571104B2 (en) | 2007-06-15 | 2013-10-29 | Qualcomm, Incorporated | Adaptive coefficient scanning in video coding |
US8488668B2 (en) | 2007-06-15 | 2013-07-16 | Qualcomm Incorporated | Adaptive coefficient scanning for 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 |
RU2487473C2 (ru) | 2008-12-03 | 2013-07-10 | Нокиа Корпорейшн | Переключение между режимами кодирования коэффициентов дискретного косинусного преобразования |
US8004431B2 (en) | 2008-12-09 | 2011-08-23 | Qualcomm Incorporated | Fast parsing of variable-to-fixed-length codes |
US20110249755A1 (en) | 2008-12-16 | 2011-10-13 | Youji Shibahara | Moving image coding method, moving image decoding method, moving image coding apparatus, moving image decoding apparatus, program, and integrated circuit |
KR101834825B1 (ko) | 2009-01-27 | 2018-03-06 | 톰슨 라이센싱 | 비디오 인코딩 및 디코딩에서 변환 선택을 위한 방법 및 장치 |
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 |
WO2011007478A1 (ja) | 2009-07-17 | 2011-01-20 | 日本電気株式会社 | ウェーブレット変換符号化/復号方法および装置 |
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 |
KR20110045949A (ko) | 2009-10-28 | 2011-05-04 | 삼성전자주식회사 | 회전 변환을 이용한 영상 부호화, 복호화 방법 및 장치 |
KR101457894B1 (ko) | 2009-10-28 | 2014-11-05 | 삼성전자주식회사 | 영상 부호화 방법 및 장치, 복호화 방법 및 장치 |
TW201119407A (en) | 2009-11-19 | 2011-06-01 | Thomson Licensing | Method for coding and method for reconstruction of a block of an image |
US20120288003A1 (en) | 2010-01-15 | 2012-11-15 | Thomson Licensing Llc | 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 |
CN114143553A (zh) | 2010-04-13 | 2022-03-04 | Ge视频压缩有限责任公司 | 显著性图和变换系数块的编码 |
US9661338B2 (en) | 2010-07-09 | 2017-05-23 | Qualcomm Incorporated | Coding syntax elements for adaptive scans of transform coefficients for video coding |
SI3101901T1 (sl) | 2010-07-09 | 2017-10-30 | Samsung Electronics Co.,Ltd. | Postopek entropijskega dekodiranja trasformnih koeficientov |
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 |
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 |
US20120163472A1 (en) | 2010-12-22 | 2012-06-28 | Qualcomm Incorporated | Efficiently coding scanning order information for a video block in video coding |
WO2012093969A1 (en) | 2011-01-07 | 2012-07-12 | Agency For Science, Technology And Research | 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 |
US10499059B2 (en) | 2011-03-08 | 2019-12-03 | Velos Media, Llc | Coding of transform coefficients for video coding |
US9106913B2 (en) | 2011-03-08 | 2015-08-11 | Qualcomm Incorporated | Coding of transform coefficients for video coding |
US8861599B2 (en) * | 2011-03-08 | 2014-10-14 | Sony Corporation | Context reduction for last transform position 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 |
CN107302364B (zh) | 2012-01-20 | 2021-01-19 | Ge视频压缩有限责任公司 | 从数据流解码具有变换系数级别的多个变换系数的装置 |
-
2011
- 2011-11-22 US US13/303,015 patent/US9042440B2/en active Active
- 2011-11-30 EP EP11802210.2A patent/EP2647204B1/en active Active
- 2011-11-30 RU RU2013130251/08A patent/RU2541226C2/ru active
- 2011-11-30 AU AU2011336601A patent/AU2011336601B2/en active Active
- 2011-11-30 JP JP2013542151A patent/JP5746363B2/ja active Active
- 2011-11-30 ES ES11802210.2T patent/ES2673939T3/es active Active
- 2011-11-30 ES ES21190476T patent/ES2963135T3/es active Active
- 2011-11-30 EP EP20172383.0A patent/EP3709519B8/en active Active
- 2011-11-30 CN CN201180057872.6A patent/CN103238323B/zh active Active
- 2011-11-30 CA CA2818436A patent/CA2818436C/en active Active
- 2011-11-30 SG SG2013035324A patent/SG190691A1/en unknown
- 2011-11-30 EP EP21190476.8A patent/EP3926833B1/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 KR KR1020137017304A patent/KR101523452B1/ko active IP Right Grant
- 2011-11-30 EP EP18165549.9A patent/EP3361641B1/en active Active
- 2011-11-30 BR BR112013013650-2A patent/BR112013013650B1/pt 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 |
---|---|---|
ES2673939T3 (es) | 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 | |
ES2705898T3 (es) | Cifrado de manera independiente de la posición del último coeficiente significativo de un bloque de vídeo en cifrado de vídeo | |
ES2657546T3 (es) | Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo | |
ES2611349T3 (es) | Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo | |
ES2761301T3 (es) | Coeficientes de codificación por entropía usando un modelo de contexto conjunto | |
ES2763443T3 (es) | Codificación de vídeo en modo intra | |
ES2864623T3 (es) | Codificación de parámetros de cuantificación (QP) en codificación de video | |
ES2633947T3 (es) | Predicción de paletas en la codificación de vídeo basada en paleta | |
ES2841424T3 (es) | Diseño unificado para esquemas de división de imágenes | |
ES2700523T3 (es) | Optimización de contexto para la codificación de la posición del último coeficiente significativo | |
ES2546678T3 (es) | Codificación de vídeo usando resolución adaptativa de vectores de movimiento | |
ES2561609T3 (es) | Agrupación de elementos sintácticos codificados por circunvalación en la codificación de vídeo | |
ES2908241T3 (es) | Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable | |
US20120163448A1 (en) | Coding the position of a last significant coefficient of a video block in video coding | |
ES2616486T3 (es) | Obtención de contexto para la codificación de última posición para la codificación de vídeo | |
ES2842082T3 (es) | Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa | |
WO2012088331A1 (en) | Efficiently coding scanning order information for a video block in video coding |