ES2728529T3 - Mapas de significancia multinivel para codificación y decodificación - Google Patents
Mapas de significancia multinivel para codificación y decodificación Download PDFInfo
- Publication number
- ES2728529T3 ES2728529T3 ES14200316T ES14200316T ES2728529T3 ES 2728529 T3 ES2728529 T3 ES 2728529T3 ES 14200316 T ES14200316 T ES 14200316T ES 14200316 T ES14200316 T ES 14200316T ES 2728529 T3 ES2728529 T3 ES 2728529T3
- Authority
- ES
- Spain
- Prior art keywords
- significance
- group
- coefficient
- indicator
- indicators
- 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
- 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/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/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/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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- 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
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
-
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- 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/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/192—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
-
- 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/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- 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/46—Embedding additional information in the video signal during the compression process
-
- 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/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- 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/18—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 a set of transform coefficients
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Procedimiento para utilizarse en un decodificador de una secuencia de bits de datos codificados para determinar un valor de un indicador de coeficiente de significancia correspondiente a un coeficiente de transformación de un bloque entre uno o más bloques no superpuestos dentro de una unidad de transformación, siendo el indicador de coeficiente de significancia un elemento de un grupo de indicadores de coeficientes de significancia correspondientes al bloque, presentando el grupo un indicador de grupo de coeficientes de significancia que es uno, si es cierta una de una primera condición de que cualquier elemento del grupo de indicadores de coeficientes de significancia es distinto de cero y una segunda condición de que el grupo de indicadores de coeficientes de significancia contiene el indicador de coeficiente de significancia para un coeficiente DC, o cero en caso contrario, en el que los indicadores de coeficientes de significancia dentro de un grupo de los indicadores de coeficientes de significancia se exploran en orden de exploración inverso, comprendiendo el procedimiento - deducir que el valor del indicador de coeficiente de significancia es cero si el valor del indicador de grupo de coeficientes de significancia es cero; - deducir que el valor del indicador del último coeficiente de significancia restante en el grupo es uno si son ciertas todas las siguientes condiciones: - el valor del indicador del grupo de coeficientes de significancia es uno, - el grupo no es el grupo que contiene el indicador de coeficiente de significancia para el coeficiente DC, y - se ha determinado previamente que todos los otros indicadores de coeficientes de significancia en el grupo son cero; y - decodificar el valor del indicador de coeficiente de significancia a partir de la secuencia de bits en caso contrario.
Description
DESCRIPCIÓN
Mapas de significancia multinivel para codificación y decodificación
CAMPO
La presente solicitud se refiere, en general, a compresión de datos y, en particular, a procedimientos y dispositivos para codificar y decodificar vídeo utilizando mapas de significancia multinivel.
ESTADO DE LA TÉCNICA
La compresión de datos se produce en una serie de contextos. Se utiliza muy comúnmente en comunicaciones y redes de ordenadores para almacenar, transmitir, y reproducir información de manera eficiente. Encuentra particular aplicación en la codificación de imágenes, audio y vídeo. El vídeo presenta un desafío importante para la compresión de datos debido a la gran cantidad de datos requeridos para cada trama de vídeo y la velocidad a la cual a menudo debe producirse la codificación y la decodificación. El estado de la técnica actual para la codificación de vídeo es el estándar de codificación de vídeo ITU-T H.264/AVC. Éste define una serie de perfiles distintos para diferentes aplicaciones, incluyendo el perfil principal, el perfil de línea de base y otros. Actualmente se está desarrollando un estándar de codificación de vídeo de próxima generación a través de una iniciativa conjunta de MPEG-ITU: Codificación de Vídeo de Alta Eficiencia (HeVc ).
Hay una serie de estándares para codificar/decodificar imágenes y vídeos, incluyendo H.264, que utilizan procesos de codificación basados en bloques. En estos procesos, la imagen o la trama se divide en bloques, generalmente 4x4 u 8x8, y los bloques se transforman espectralmente en coeficientes, se cuantifican, y se codifican por entropía. En muchos casos, los datos que se transforman no son los datos de píxeles reales, sino que son datos residuales después de una operación de predicción. Las predicciones pueden ser intra-trama, es decir bloque a bloque dentro de la trama/imagen, o inter-trama, es decir entre tramas (también denominado predicción de movimiento). Se espera que HEVC (también denominado H.265) tenga estas características.
Cuando se transforman espectralmente datos residuales, muchos de estos estándares prescriben el uso de una transformada de coseno discreta (DCT) o alguna variante sobre la misma. Los coeficientes DCT resultantes se cuantifican después utilizando un cuantificador para producir coeficientes de dominio de transformación cuantificados, o índices.
El bloque o matriz de coeficientes del dominio de transformación cuantificados (a veces denominado "unidad de transformación") se codifica por entropía utilizando un modelo de contexto particular. En H.264/AVC y en el trabajo de desarrollo actual para HEVC, los coeficientes de transformación cuantificados se codifican mediante (a) la codificación de una última posición de coeficiente de significancia que indica la posición del último coeficiente no cero en el bloque, (b) la codificación de un mapa de significancia que indica las posiciones en el bloque (distintas de la última posición del coeficiente de significancia) que contienen coeficientes distintos de cero, (c) la codificación de las magnitudes de los coeficientes distintos de cero, y (d) la codificación de los signos de los coeficientes distintos de cero. Esta codificación de los coeficientes de transformación cuantificados a menudo ocupa el 30-80% de los datos codificados en la secuencia de bits.
Las unidades de transformación son típicamente NxN. Los tamaños comunes incluyen 4x4, 8x8, 16x16 y 32x32, aunque son posibles otros tamaños. La codificación por entropía de los símbolos en el mapa de significancia se basa en un modelo de contexto. En el caso de un bloque luma o croma 4x4 o una unidad de transformación (UT), se asocia un contexto separado a cada posición de coeficiente en la UT. Es decir, el codificador y el decodificador siguen un total de 30 contextos separados (excluyendo las posiciones de la esquina inferior derecha) para UTs luma y croma 4x4. Las UTs 8x8 se dividen (conceptualmente para asociación de contexto) en bloques 2x2, de manera que un contexto distinto se asocia a cada bloque 2x2 en la UT 8x8. En consecuencia, el codificador y el decodificador siguen un total de 16 16 = 32 contextos para las UTs 8x8 luma y croma. Esto significa que el codificador y el decodificador realizan un seguimiento de 62 contextos diferentes durante la codificación y decodificación del mapa de significancia. Si se tienen en cuenta UTs 16x16 y UTs 32x32, el número total de contextos distintos implicados es de 88. Entre los 26 contextos adicionales, 13 son para UTs luma y 13 son para UTs croma. La asignación de los 13 contextos a las posiciones de coeficientes en una Ut 16x16 o 32x32 es la siguiente. Sea (r, c) una posición en la UTs, donde 0 <= r, c <= 15 si la UT es de tamaño 16x16, y 0 <= r, c <= 31 si la UT es de tamaño 32x32. Después, se asignan 3 contextos distintos a las tres posiciones (0, 0), (0, 1), (1, 0) en la esquina superior izquierda, incluyendo la posición DC (0, 0); se asignan 5 contextos distintos a las posiciones en la región {(r, c): 2 <= r c <5}; y los últimos 5 contextos distintos se asignan a todas las posiciones restantes. Excepto por los primeros 3 contextos para (0, 0), (0, 10) y (1, 0), la derivación del contexto para una posición en la región {(r, c): 2 <= r c <5} depende de su contiguo inferior derecho. Sea s (r, c) el indicador (flag) de significancia de un coeficiente en la posición (r, c), es decir, s (r, c) = 1 si el coeficiente no es cero y s (r, c) = 1 en caso contrario. El contexto para la
posición (r, c) es igual a min(s(r 1, c)+s(r, c 1)+s (r+2, c)+s(r, c+2)+s(r+1, c+1), 4), donde min(a, b) devuelve el valor más pequeño entre a y b. El contexto de una posición (r, c) en la región restante {(r, c): r+c> = 5} se deriva de manera similar.
Los contextos para los mapas de significancia 4x4 y 8x8 vienen determinados por la posición del bit. Los contextos para los mapas de significancia de 16x16 y 32x32 vienen determinados principalmente por los valores de los bits contiguos. La determinación del contexto para los mapas de significancia de 16x16 y 32x32 es bastante informáticamente intensa, ya que en la mayoría de los casos el procesador determina el contexto mirando los valores de indicadores de significancia adyacentes, lo que implica costosas operaciones de acceso a la memoria. El documento US2011/096834 A1 se refiere a procedimientos y aparatos para codificar y decodificar un bloque residual. El procedimiento para codificar el bloque residual incluye: generar un bloque de predicción de un bloque actual; generar un bloque residual en base a una diferencia entre el bloque de predicción y el bloque actual; generar un bloque residual de transformación transformando el bloque residual en un dominio de frecuencia; dividir el bloque residual de transformación en unidades de banda de frecuencia; y codificar indicadores de coeficientes efectivos que indican unidades de banda de frecuencia, de las unidades de banda de frecuencia, en las que existen coeficientes de transformación efectivos distintos de cero. El documento US 20011/096834 A1 no describe a) explorar en orden inverso los coeficientes de transformación efectivos y b) deducir el último coeficiente de transformación efectivo para que sea uno para una unidad de banda de frecuencia i) distinto del que comprende el coeficiente DC, ii) para el cual el correspondiente indicador de coeficiente efectivos es uno y iii) si se determinó que todos los coeficientes de transformación efectivos restantes en la banda eran cero.
DESCRIPCIÓN RESUMIDA
De acuerdo con la presente invención, se propone un procedimiento para utilizarse en un decodificador de una secuencia de bits de datos codificados de acuerdo con la reivindicación 1, un codificador correspondiente de acuerdo con la reivindicación 11 y un medio legible por un procesador de acuerdo con la reivindicación 12. La presente invención se define en aquellas reivindicaciones independientes. Las reivindicaciones dependientes se refieren a realizaciones de ejemplo preferidas. El resto de realizaciones se entienden como ejemplos que no describen partes de la presente invención.
La presente memoria se refiere a procedimientos y codificadores/decodificadores para codificar y decodificar mapas de significancia con codificación o decodificación adaptable al contexto (context-adaptative). El codificador y el decodificador utilizan mapas de significancia multinivel. En por lo menos un caso, los mapas multinivel se utilizan con unidades de transformación más grandes, tales como las UTs de 16x16 y 32x32.
En un aspecto, la presente solicitud describe un procedimiento para reconstruir indicadores de coeficientes de significancia para una unidad de transformación a partir de una secuencia de bits de datos codificados. El procedimiento incluye reconstruir indicadores de grupos de coeficientes de significancia, en el que cada indicador de grupos de coeficientes de significancia corresponde a un grupo respectivo de indicadores de coeficientes de significancia; y, reconstruir cada indicador de coeficiente de significancia decodificando el indicador de coeficiente de significancia de la secuencia de bits si ese indicador de coeficiente de significancia se encuentra en un grupo que tiene un indicador de grupo de coeficientes de significancia correspondiente que es distinto de cero, y establecer el indicador de coeficiente de significancia a cero, si ese indicador de coeficiente de significancia se encuentra en un grupo que tiene el indicador de grupo de coeficientes de significancia correspondiente que es cero.
En otro aspecto de ejemplo, la presente solicitud describe un procedimiento para codificar indicadores de coeficientes de significancia para una unidad de transformación. El procedimiento incluye codificar indicadores de grupos de coeficientes de significancia, en el que cada indicador de grupos de coeficientes de significancia corresponde a un grupo respectivo de indicadores de coeficientes de significancia, y en el que el indicador de grupo de coeficientes de significancia se establece a cero para indicar que ese grupo correspondiente no contiene indicadores de coeficientes de significancia distintos de cero; y, para cada uno de los indicadores de coeficientes de significancia, codificar el indicador de coeficiente de significancia si ese indicador de coeficiente de significancia se encuentra en uno de los grupos para los cuales su indicador de grupo de coeficientes de significancia correspondiente es distinto de cero, y no codificar el indicador de coeficiente de significancia si ese indicador de coeficiente de significancia se encuentra en uno de los grupos para los cuales el indicador de grupo de coeficientes de significancia correspondiente es cero.
En un aspecto de ejemplo, la reconstrucción de los indicadores de coeficientes de significancia se realiza en un orden prescrito, tal como un orden de exploración hacia delante o hacia atrás. En otro aspecto, la reconstrucción de los indicadores del grupo de coeficientes de significancia se realiza en un orden prescrito, que puede ser el mismo orden prescrito que el utilizado con la reconstrucción de los indicadores de coeficientes de significancia, tal como un orden de exploración directa o inversa.
En un aspecto, un indicador de grupo de coeficientes de significancia se establece a cero si todos los indicadores de coeficientes de significancia en el grupo correspondiente son cero. En otro aspecto, un indicador de grupo de coeficientes de significancia es distinto de cero si por lo menos un indicador de coeficiente de significancia en el grupo correspondiente no es cero. En otro aspecto, un caso especial puede resultar en que un indicador de grupo de coeficientes de significancia sea distinto de cero, incluso si todos los indicadores de coeficientes de significancia del grupo correspondiente son cero, en cuyo caso el decodificador decodificará todos los indicadores de coeficientes de significancia de valor cero para ese grupo correspondiente de la secuencia de bits.
En otro aspecto adicional, la presente solicitud describe un procedimiento para reconstruir indicadores de coeficientes de significancia para una unidad de transformación a partir de una secuencia de bits de datos codificados. El procedimiento incluye decodificar indicadores de grupos de coeficientes de significancia de la secuencia de bits, en el que cada indicador del grupo de coeficientes de significancia corresponde a un grupo respectivo de indicadores de coeficientes de significancia, y en el que cada indicador de grupo de coeficientes de significancia es cero si ese grupo correspondiente no contiene indicadores de coeficientes de significancia distintos de cero; y, para cada indicador de grupo de coeficientes de significancia, decodificar indicadores de coeficientes de significancia para ese grupo correspondiente de indicadores de coeficientes de significancia a partir de la secuencia de bits si ese indicador de grupo de coeficientes de significancia es distinto de cero y, en caso contrario, establecer a cero todos los indicadores de coeficientes en ese grupo correspondiente de indicadores de coeficientes de significancia.
En otro aspecto de ejemplo, la presente solicitud describe codificadores y decodificadores configurados para implementar tales procedimientos de codificación y decodificación.
En todavía otro aspecto de ejemplo, la presente solicitud describe medios legibles por ordenador no transitorios que almacenan instrucciones de programa ejecutables por ordenador que, cuando se ejecutan, configuran un procesador para realizar los procedimientos descritos de codificación y/o decodificación.
Los expertos en la materia entenderán otros aspectos y características de la presente solicitud a partir de una revisión de la siguiente descripción de ejemplos junto con las figuras que se acompañan.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Se hará referencia ahora, a modo de ejemplo, a los dibujos que se acompañan, y en los cuales:
La figura 1 muestra, en forma de diagrama de bloques, un codificador para codificar vídeo;
La figura 2 muestra, en forma de diagrama de bloques, un decodificador para decodificar vídeo;
La figura 3 muestra una unidad de transformación de ejemplo que contiene coeficientes de dominio de transformación cuantificados;
La figura 4 muestra un ejemplo de mapa de significancia que contiene indicadores de coeficientes de significancia para la unidad de transformación de la figura 3;
La figura 5 muestra un ejemplo de mapa de significancia L1 que contiene indicadores de grupos de coeficientes de significancia para el mapa de significancia de la figura 4;
La figura 6 muestra, en forma de diagrama de flujo, un procedimiento de ejemplo para codificar indicadores de coeficientes de significancia;
La figura 7 muestra, en forma de diagrama de flujo, un procedimiento de ejemplo para reconstruir un mapa de significancia a partir de datos codificados;
La figura 8 muestra, en forma de diagrama de flujo, un proceso de ejemplo para decodificar y reconstruir indicadores de grupos de coeficientes de significancia;
La figura 9 muestra, en forma de diagrama de flujo, un ejemplo de proceso de cuantificación optimizada de la tasa de distorsión para codificación de mapas de significancia multinivel;
La figura 10 muestra el ejemplo del mapa de significancia L0 de la figura 4 después de la aplicación de RDOQ L1;
La figura 11 muestra el mapa de significancia L1 correspondiente al mapa de significancia L0 de la figura 10, después de RDOQ L1;
La figura 12 muestra un diagrama de bloques simplificado de una realización de ejemplo de un codificador; y La figura 13 muestra un diagrama de bloques simplificado de una realización de ejemplo de un decodificador.
Pueden haberse utilizado números de referencia similares en diferentes figuras para denotar componentes similares.
DESCRIPCIÓN DE REALIZACIONES EJEMPLO
En la siguiente descripción, se dan algunos ejemplos con referencia al estándar H.264 para codificación de vídeo y/o el estándar HEVC en desarrollo. Los expertos en la materia entenderán que la presente solicitud no se limita a H.264/AVC o HEVC, sino que puede ser aplicable a otros estándares de codificación/decodificación de vídeo, incluyendo posibles estándares futuros, estándares de codificación de múltiples vistas, estándares de codificación de vídeo escalables, y estándares de codificación de vídeo reconfigurables.
En la siguiente descripción, al referirse a vídeo o imágenes, los términos trama, imagen, segmento (slice), mosaico (tile) y grupo de segmento rectangular pueden utilizarse de manera indistinta. Los expertos en la materia apreciarán que, en el caso del estándar H.264, una trama puede contener uno o más segmentos. También se apreciará que ciertas operaciones de codificación/decodificación se realizan trama a trama, algunas se realizan segmento a segmento, algunas imagen a imagen, algunas mosaico a mosaico, y algunas por grupo de segmento rectangular, según los requisitos particulares o la terminología del estándar de codificación de vídeo o imagen aplicable. En cualquier realización particular, el estándar de codificación de imagen o vídeo aplicable puede determinar si las operaciones descritas a continuación se realizan en relación con tramas y/o segmentos y/o imágenes y/o mosaicos y/o grupos de segmentos rectangulares, según sea el caso. En consecuencia, los expertos en la materia entenderán, a la luz de la presente descripción, si las operaciones o procesos particulares descritos aquí y las referencias particulares a tramas, segmentos, imágenes, mosaicos, grupos de segmentos rectangulares son aplicables a tramas, segmentos, imágenes, mosaicos, grupos de segmentos rectangulares, o algunos o todos aquellos para una realización determinada. Esto también se aplica a unidades de transformación, unidades de codificación, grupos de unidades de codificación, etc., tal como será claro a la luz de la siguiente descripción.
La presente solicitud se refiere a mapas de significancia. Un mapa de significancia es un bloque, matriz o grupo de indicadores que se correlaciona o se corresponde con una unidad de transformación. Cada indicador indica si la posición correspondiente en la unidad de transformación contiene un coeficiente distinto de cero o no. En normas existentes, estos indicadores pueden denominarse indicadores de coeficientes de significancia. En normas existentes, hay un indicador por coeficiente y el indicador es un bit que es cero si el coeficiente correspondiente es cero y se establece en uno si el coeficiente correspondiente es distinto de cero. El término "mapa de significancia", tal como se utiliza aquí, pretende referirse a una matriz o conjunto ordenado de indicadores de coeficientes de significancia para una unidad de transformación, tal como se entenderá a partir de la siguiente descripción.
Se hace referencia ahora a la figura 1, que muestra, en forma de diagrama de bloques, un codificador 10 para codificar vídeo. También se hace referencia a la figura 2, que muestra un diagrama de bloques de un decodificador 50 para decodificar vídeo. Se apreciará que el codificador 10 y el decodificador 50 descritos aquí pueden implementarse en un dispositivo informático específico de la aplicación o de uso general, que contiene uno o más elementos de procesamiento y memoria. Las operaciones realizadas por el codificador 10 o el decodificador 50, según sea el caso, pueden implementarse por medio de un circuito integrado específico de la aplicación, por ejemplo, o por medio de instrucciones de programa almacenadas ejecutables por un procesador de uso general. El dispositivo puede incluir software adicional, que incluye, por ejemplo, un sistema operativo para controlar las funciones básicas del dispositivo. Los expertos en la materia apreciarán la gama de dispositivos y plataformas en los cuales puede implementarse el codificador 10 o el decodificador 50 teniendo en cuenta la siguiente descripción. El codificador 10 recibe una fuente de vídeo 12 y produce una secuencia de bits codificada 14. El decodificador 50 recibe la secuencia de bits codificada 14 y emite una trama de vídeo decodificado 16. El codificador 10 y el decodificador 50 pueden configurarse para funcionar de acuerdo con una serie de normas de compresión de vídeo. Por ejemplo, el codificador 10 y el decodificador 50 pueden ser compatibles con H.264/AVC. En otras realizaciones, el codificador 10 y el decodificador 50 pueden ajustarse a otros estándares de compresión de vídeo, incluyendo evoluciones del estándar H.264/AVC, tal como HEVC.
El codificador 10 incluye un predictor espacial 21, un selector de modo de codificación 20, un procesador de transformación 22, un cuantificador 24, y un codificador de entropía 26. Tal como apreciarán los expertos en la materia, el selector de modo de codificación 20 determina el modo de codificación apropiado para la fuente de vídeo, por ejemplo, si la trama/segmento es de tipo I, P o B, y si las unidades de codificación particulares (por ejemplo,
macrobloques, unidades de codificación, etc.) en la trama/segmento están inter o intra codificadas. El procesador de transformación 22 realiza una transformación sobre en datos de dominio espacial. En particular, el procesador de transformación 22 aplica una transformación basada en bloques para convertir datos de dominio espacial en componentes espectrales. Por ejemplo, en muchas realizaciones se utiliza una transformada de coseno discreta (DCT). Pueden utilizarse en algunos casos otras transformaciones, tales como una transformada de seno discreta u otras. La transformación basada en bloques se realiza en una unidad de codificación, macrobloque o subbloque, dependiendo del tamaño de los macrobloques o unidades de codificación. En el estándar H.264, por ejemplo, un macrobloque típico de 16x16 contiene dieciséis bloques de transformación 4x4 y el proceso DCT se realiza en los bloques 4x4. En algunos casos, los bloques de transformación pueden ser 8x8, lo que significa que hay cuatro bloques de transformación por macrobloque. En otros casos, los bloques de transformación pueden ser de otros tamaños. En algunos casos, un macrobloque de 16x16 puede incluir una combinación no superpuesta de bloques de transformación 4x4 y 8x8.
La aplicación de la transformación basada en bloques a un bloque de datos de píxeles genera un conjunto de coeficientes de dominio de transformación. Un "conjunto" en este contexto es un conjunto ordenado en el que los coeficientes tienen posiciones de coeficientes. En algunos casos, el conjunto de coeficientes de dominio de transformación puede considerarse como un "bloque" o matriz de coeficientes. En la descripción que se da aquí, las frases un "conjunto de coeficientes de dominio de transformación" o un "bloque de coeficientes de dominio de transformación" se utilizan de manera intercambiable y se pretende que indiquen un conjunto ordenado de coeficientes de dominio de transformación.
El conjunto de coeficientes de dominio de transformación se cuantifica mediante el cuantificador 24. Los coeficientes cuantificados y la información asociada son codificados entonces por el codificador de entropía 26.
El bloque o matriz de coeficientes de dominio de transformación cuantificados puede denominarse aquí "unidad de transformación".
Tramas/segmentos intracodificados (es decir, tipo I) se codifican sin referencia a otras tramas/segmentos. En otras palabras, no emplean predicción temporal. Sin embargo, las tramas intracodificadas dependen de la predicción espacial dentro de la trama/segmento, tal como se ilustra en la figura 1 mediante el predictor espacial 21. Es decir, cuando se codifica un bloque particular, los datos en el bloque pueden compararse con los datos de píxeles cercanos dentro de bloques ya codificados para esa trama/segmento. Utilizando un algoritmo de predicción, los datos de origen del bloque pueden convertirse en datos residuales. El procesador de transformación 22 codifica entonces los datos residuales. H.264, por ejemplo, prescribe nueve modos de predicción espacial para bloques de transformación 4x4. En algunas realizaciones, cada uno de los nueve modos puede utilizarse para procesar un bloque de manera independiente, y después se utiliza optimización de la tasa de distorsión para seleccionar el mejor modo.
El estándar H.264 también prescribe el uso de predicción/compensación de movimiento para aprovechar la predicción temporal. En consecuencia, el codificador 10 tiene un bucle de realimentación que incluye un descuantificador 28, un procesador de transformación inversa 30 y un procesador de desbloqueo 32. El procesador de desbloqueo 32 puede incluir un procesador de desbloqueo y un procesador de filtrado. Estos elementos reflejan el proceso de decodificación implementado por el decodificador 50 para reproducir la trama/segmento. para almacenar las tramas reproducidas se utiliza un almacén de tramas 34. De esta manera, la predicción de movimiento se basa en lo que serán las tramas reconstruidas en el decodificador 50 y no en las tramas originales, que pueden diferir de las tramas reconstruidas debido a la compresión con pérdida implicada en la codificación/decodificación. Un predictor de movimiento 36 utiliza las tramas/segmentos almacenados en el almacén de tramas 34 como tramas/segmentos de origen para compararlos con una trama actual con el fin de identificar bloques similares. Por consiguiente, para macrobloques o unidades de codificación a las que se aplica la predicción de movimiento, los "datos de origen" que codifica el procesador de transformación 22 son los datos residuales que salen del proceso de predicción de movimiento. Por ejemplo, éste puede incluir información sobre la trama de referencia, un desplazamiento espacial o un "vector de movimiento" y datos de píxeles residuales que representan las diferencias (si las hay) entre el bloque de referencia y el bloque actual. La información respecto a la trama de referencia y/o el vector de movimiento no puede ser procesada por el procesador de transformación 22 y/o el cuantificador 24, sino que puede suministrarse, en cambio, al codificador de entropía 26 para codificarse como parte de la secuencia de bits junto con los coeficientes cuantificados.
Los expertos en la materia apreciarán los detalles y posibles variaciones para implementar codificadores de vídeo. El decodificador 50 incluye un decodificador de entropía 52, un descuantificador 54, un procesador de transformación inversa 56, un compensador espacial 57, y un procesador de desbloqueo 60. El procesador de desbloqueo 60 puede incluir procesadores de desbloqueo y filtrado. Una memoria intermedia de tramas 58 suministra tramas reconstruidas para que las utilice un compensador de movimiento 62 al aplicar la compensación
de movimiento. El compensador espacial 57 representa la operación de recuperar los datos de vídeo para un bloque intracodificado particular a partir de un bloque previamente decodificado.
El decodificador de entropía 52 recibe y decodifica la secuencia de bits 14 para recuperar los coeficientes cuantificados. También puede recuperarse información secundaria durante el proceso de decodificación de entropía, parte de la cual puede suministrarse al bucle de compensación de movimiento para su uso en la compensación de movimiento, si corresponde. Por ejemplo, el decodificador de entropía 52 puede recuperar vectores de movimiento y/o información de trama de referencia para macrobloques intercodificados.
El descuantificador 54 descuantifica después los coeficientes cuantificados para producir los coeficientes del dominio de transformación, que después son sometidos a una transformación inversa mediante el procesador de transformación inversa 56 para recrear los "datos de vídeo". Se apreciará que, en algunos casos, como en el caso de un macrobloque o una unidad de codificación intra-codificada, los "datos de vídeo" recreados son los datos residuales para utilizarse en compensación espacial respecto a un bloque previamente decodificado dentro de la trama. El compensador espacial 57 genera los datos de vídeo a partir de los datos residuales y los datos de píxeles de un bloque previamente decodificado. En otros casos, tal como macrobloques intercodificados o unidades de codificación, los "datos de vídeo" recreados del procesador de transformación inversa 56 son los datos residuales para utilizarse en la compensación de movimiento respecto a un bloque de referencia de una trama diferente. Tanto la compensación espacial como la de movimiento pueden denominarse aquí "operaciones de predicción".
El compensador de movimiento 62 sitúa un bloque de referencia en la memoria intermedia de tramas 58 especificada para un macrobloque o unidad de codificación intercodificada particular. Esto lo hace en base a la información de trama de referencia y el vector de movimiento especificados para el macrobloque o la unidad de codificación intercodificada. Después suministra los datos de píxeles de bloque de referencia para combinarlos con los datos residuales para llegar a los datos de vídeo reconstruidos para esa unidad de codificación/macrobloque. Puede aplicarse después un proceso de desbloqueo/filtrado a una trama/segmento reconstruido, tal como indica el procesador de desbloqueo 60. Después del desbloqueo/filtrado, la trama/segmento se envía como trama de vídeo decodificado 16, por ejemplo, para la visualización en un dispositivo de visualización. Se entenderá que la máquina de reproducción de vídeo, tal como un ordenador, un decodificador, un reproductor de DVD o Blu-Ray, y/o un dispositivo portátil de mano, puede almacenar tramas decodificadas en una memoria antes de mostrarlas en un dispositivo de salida.
Se espera que los codificadores y decodificadores compatibles con HEVC tengan muchas de estas mismas características o similares.
Codificación de mapa de significancia
Tal como se ha indicado anteriormente, la codificación de entropía de un bloque o conjunto de coeficientes de dominio de transformación cuantificados incluye la codificación del mapa de significancia (por ejemplo, un conjunto de indicadores de coeficientes de significancia) para ese bloque o conjunto de coeficientes de dominio de transformación cuantificados. El mapa de significancia es una correlación binaria del bloque que indica en qué posiciones (distintas de la última posición) aparecen coeficientes distintos de cero. El bloque puede tener ciertas características a las que está asociado. Por ejemplo, puede tratarse de un segmento intracodificado o un segmento intercodificado. Puede tratarse de un bloque luma o un bloque croma. El valor de QP para el segmento puede variar de un segmento a otro. Todos estos factores pueden tener un impacto en la mejor manera en que la entropía codifica el mapa de significancia.
El mapa de significancia se convierte en un vector de acuerdo con el orden de exploración (que puede ser vertical, horizontal, diagonal, en zigzag, o cualquier otro orden de exploración prescrito por el estándar de codificación aplicable). La exploración se realiza normalmente en orden "inverso", es decir comenzando por el último coeficiente de significancia y retrocediendo a través del mapa de significancia en orden de exploración inverso hasta que se alcance el indicador en [0,0]. Cada indicador de coeficiente de significancia se codifica por entropía utilizando el esquema de codificación adaptable al contexto aplicable. Por ejemplo, en muchas aplicaciones puede utilizarse un esquema de codificación aritmética binaria adaptable al contexto (CABAC). Otras implementaciones pueden utilizar otros códecs adaptables al contexto con binarización. Ejemplos incluyen codificación aritmética binaria (BAC), codificación variable a variable (V2V) y codificación de longitud variable a fija (V2F). Con mapas 4x4 y 8x8, se asigna un contexto para cada posición de bit. Al codificar el bit (indicador de coeficiente de significancia) en esa posición de bit, el contexto y el historial del contexto asignado a ese punto determinan la probabilidad estimada de un símbolo menos probable (LPS) (o en algunas implementaciones un símbolo más probable (MPS)).
En codificadores de vídeo existentes, la asignación de contexto está predeterminada tanto para el codificador como para el decodificador. Por ejemplo, con un bloque de luma 4x4, el borrador actual de la norma HEVC prescribe que
cada posición de bit en el mapa de significancia 4x4 tenga un contexto único. Excluyendo la última posición, eso significa que se rastrean 15 contextos para la codificación de mapas de significancia de luma 4x4. Para cada posición de bit, el contexto asignado a esa posición determina la probabilidad estimada asociada a un LPS en esa posición. El valor de bit real se codifica entonces utilizando esa probabilidad estimada. Finalmente, el contexto asignado a esa posición se actualiza en función del valor de bit real. En el decodificador, los datos codificados se decodifican utilizando el mismo modelo de contexto. Se realiza un seguimiento de un contexto para cada posición de bit y se utiliza para determinar la probabilidad estimada de decodificación de datos para recuperar bits para esa posición.
Con los mapas de significancia de 16x16 y 32x32, el contexto para una significancia se basa (en su mayoría) en valores de indicadores de coeficientes de significancia adyacentes. Entre los 13 contextos utilizados para mapas de significancia de 16x16 y 32x32, hay ciertos contextos dedicados a la posición del bit en [0,0] y a posiciones de bit adyacentes, pero la mayoría de los indicadores de coeficientes de significancia toman uno de los cinco contextos que dependen de los valores acumulativos de indicadores de coeficientes de significancia adyacentes. En estos casos, la determinación del contexto correcto para un indicador de coeficiente de significancia depende de determinar y sumar los valores de los indicadores de coeficientes de significancia en posiciones adyacentes (generalmente cinco posiciones, pero podrían ser más o menos en algunos casos). Esto implica múltiples accesos a la memoria, lo que puede ser costoso en los requerimientos de ancho de banda de la memoria. Además, en muchos casos, los mapas de significancia 16x16 y 32x32 contienen una gran cantidad de ceros. En consecuencia, hay un coste sustancial involucrado en la codificación y transmisión de mapas grandes que tienen pocos valores de coeficiente.
De acuerdo con un aspecto de la presente solicitud, el codificador y el decodificador utilizan mapas de significancia multinivel para ciertas unidades de transformación. En los ejemplos que se describen a continuación, los mapas de significancia multinivel se utilizan para unidades de transformación de tamaño 16x16 y 32x32; sin embargo, se entenderá que pueden utilizarse para 8x8 o 64x64 o unidades de transformación de otros tamaños en algunas realizaciones.
Los indicadores de coeficientes de significancia se agrupan. Cada indicador de coeficiente de significancia se encuentra en uno de los grupos. Por simplicidad en muchas realizaciones, los grupos se forman dividiendo (conceptualmente) o fraccionando la estructura de la unidad de transformación en bloques. Por ejemplo, un mapa de 16x16 puede dividirse en bloques de 4x4 que contienen dieciséis de las posiciones de coeficientes. Un mapa de 32x32 puede dividirse en bloques de 8x8 que contienen sesenta y cuatro de las posiciones de coeficientes. Los indicadores de coeficientes de significancia se agrupan, por lo tanto, en base a que se encuentren dentro de estos bloques definidos en la estructura de la matriz.
La figura 3 muestra una unidad de transformación de ejemplo de 16x16 100 (la matriz de coeficientes cuantificados del dominio de transformación). Para fines de indexación, la posición del bit dentro de la unidad de transformación puede especificarse mediante [xC, yC], donde xC = 0, 1, 2, ... 15 e yC = 0, 1, 2, ... 15. Utilizando (por ejemplo) un orden de exploración diagonal, se observará que el último coeficiente de significancia en este ejemplo se encuentra en [12, 10], según se indica por el número de referencia 112.
Se hace referencia también ahora a la figura 4, que muestra un ejemplo de mapa de significancia 102. El mapa de significancia 102 contiene los indicadores de coeficientes de significancia que se generan a partir de la unidad de transformación de ejemplo que se muestran en la figura 4. Se observará que aparece un indicador de coeficiente de significancia en cada posición de bit en el orden de exploración desde [0,0] hasta el último coeficiente de significancia en [12, 10], pero excluyendo éste. El indicador de coeficiente de significancia en cada posición de bit para el cual existe un coeficiente distinto de cero en la unidad de transformación 100 se establece a 1, mientras que cada indicador de coeficiente de significancia en cada posición de bit en el cual existe un coeficiente cero se establece a cero.
El mapa de significancia 102, es decir el conjunto de indicadores de coeficientes de significancia, puede agruparse en función de una división uniforme de la estructura de la unidad de transformación en bloques contiguos en una realización. El tamaño de la unidad de transformación puede determinar el tamaño de los bloques. En el caso de una unidad de transformación 16x16, los bloques pueden ser de 4x4 en algunas realizaciones. Las agrupaciones se ilustran en la figura 4 mediante las líneas que marcan los bloques 4x4. Una unidad de transformación más grande, tal como una unidad de transformación de 32x32, puede tener sus indicadores de coeficientes de significancia agrupados en bloques de 4x4, bloques de 8x8, o bloques contiguos de otro tamaño.
Aunque los ejemplos que se dan aquí utilizan grupos definidos como bloques cuadrados contiguos por simplicidad, la presente solicitud no se limita a grupos cuadrados. Los grupos pueden formarse como bloques rectangulares en algunas realizaciones. Todavía en otras realizaciones, pueden utilizarse otras formas. Por ejemplo, con un orden de
exploración diagonal, puede ser ventajoso utilizar grupos formados a partir de segmentos diagonales de la unidad de transformación, en cuyo caso algunos de los grupos pueden tener una forma en cierto modo trapezoidal.
Puede generarse entonces un mapa de significancia de nivel superior correspondiente a la matriz de grupos. El mapa de significancia de nivel superior es un conjunto ordenado de indicadores de grupos de coeficientes de significancia. Existe un indicador de grupo de coeficientes de significancia para cada grupo que contiene por lo menos un indicador de coeficiente de significancia. El grupo que contiene el último coeficiente de significancia no debe incluirse en el mapa de significancia de nivel superior dado que ya se sabrá que contiene por lo menos un coeficiente distinto de cero, es decir, el último coeficiente de significancia. El mapa de significancia puede denominarse mapa de nivel 0, o L0. El mapa de significancia de nivel superior (es decir, el que contiene los indicadores de grupos de coeficientes de significancia) puede denominarse mapa de nivel 1, o L1.
La figura 5 ilustra el mapa de significancia de nivel superior L1 104 correspondiente al ejemplo del mapa de significancia 102 que se muestra en la figura 4. Cabe observar que el mapa L1 104 contiene un indicador de grupo de coeficientes de significancia para cada grupo que contiene por lo menos un indicador de coeficiente de significancia. Si alguno de los indicadores de coeficientes de significancia dentro del grupo no es cero, entonces el indicador de grupo de coeficientes de significancia se establece en uno. En caso contrario, se establece en cero. La indexación de los grupos puede especificarse por [xCG, yCG], donde en este ejemplo xCG = 0, 1,2, 3 e yCG = 0, 1, 2, 3. El grupo que contiene el último coeficiente de significancia se encuentra en [3, 2]. El grupo en [3, 3] no contiene ningún indicador de coeficiente de significancia, por lo que no está incluido en el mapa L1.
Los indicadores de grupos de coeficientes de significancia pueden convertirse a forma vectorial en un orden de exploración inverso, en algunas realizaciones. El orden de exploración puede ser el mismo que el orden de exploración especificado para su uso con la unidad de transformación en general. En una realización, el indicador de grupo de coeficientes de significancia puede utilizar un orden de exploración predefinido que puede ser diferente del orden de exploración seleccionado para la unidad de transformación. En algunos casos, el mapa L1 puede excluir ciertos grupos tales como el grupo [0, 0] o el último grupo de coeficientes de significancia, que tendrán un valor de indicador supuesto, tal como se describirá más adelante.
Se apreciará que no es necesario derivar directamente el mapa L1 del mapa L0, sino que podría derivarse de la exploración de los coeficientes en la unidad de transformación en el orden de exploración.
Se apreciará también que pueden utilizarse más mapas de nivel superior en algunas realizaciones. Por ejemplo, si la unidad de transformación es una unidad de transformación de 64x64, el mapa L1 puede basarse en dividir la unidad de transformación en 256 grupos de 4x4. Por lo tanto, el mapa L1 sería un mapa de 16x16 que contenga indicadores de grupos L1. Puede generarse un mapa L2 adicional agrupando los indicadores L1 en un conjunto de bloques de 4x4 adicional (cada uno de los cuales correspondería a un grupo de 16x16 coeficientes de la unidad de transformación). Pueden emplearse niveles adicionales de abstracción y/o granularidad en otras realizaciones. Se hace referencia ahora a la figura 6, que muestra, en forma de diagrama de flujo, un proceso de ejemplo 200 para codificar indicadores de coeficientes de significancia. El proceso 200 comienza en la operación 202 con el codificador determinando los indicadores de coeficientes de significancia y los indicadores de grupos de coeficientes de significancia. En una realización, el codificador explora el bloque de transformación en orden de exploración inversa para determinar el último coeficiente de significancia y el conjunto de indicadores de coeficientes de significancia. Los indicadores de grupos de coeficientes de significancia pueden determinarse durante la misma exploración (aunque puede utilizarse una cierta cantidad de memoria intermedia de valor en implementaciones prácticas, ya que el orden de exploración generalmente implica el cruce de múltiples bloques; en algunos casos, la determinación del indicador de grupo de coeficientes de significancia se crea cuando el codificador determina que ha explorado el último coeficiente para ese grupo, por ejemplo, el coeficiente de salida). En algunas implementaciones, el codificador puede realizar una segunda exploración del mapa de significancia L0 o de la unidad de transformación para determinar los indicadores de grupos de coeficientes de significancia.
En la operación 204, para cada indicador de grupo de coeficientes de significancia, el codificador determina el contexto a utilizar y después codifica por entropía ese indicador de grupo de coeficientes de significancia en base a el contexto determinado. Los indicadores de grupos de coeficientes de significancia pueden procesarse en un orden prescrito. En algunas realizaciones, el orden prescrito es el mismo que el orden de exploración (o el orden de exploración inverso) para la unidad de transformación. El número de contextos y su determinación pueden estar estructurados de cualquier manera adecuada. Más adelante, se describe un conjunto de contextos y un procedimiento de ejemplo para determinar los contextos para indicadores de grupos de coeficientes de significancia. Una vez codificado el conjunto de indicadores de grupos de coeficientes de significancia, el codificador codifica los indicadores de coeficientes de significancia. En la operación 206, el codificador (que funciona en orden de
exploración inversa) determina el contexto y codifica cada indicador de coeficiente de significancia si ese indicador de coeficiente de significancia se encuentra en un grupo para el cual el indicador de grupo de coeficientes de significancia se establece en 1. Si el indicador de grupo de coeficientes de significancia correspondiente se establece a cero, entonces cualquiera de los indicadores de coeficientes de significancia en ese grupo no se codifica, es decir, se omiten durante el proceso de codificación por entropía.
En consecuencia, después del proceso 200, el codificador ha producido una secuencia de bits de datos codificados que contiene los indicadores de grupos de coeficientes de significancia codificados y los indicadores de coeficientes de significancia codificados que se encuentran en un grupo que tiene por lo menos un indicador de coeficiente de significancia distinto de cero. La secuencia de bits no incluye ningún indicador de coeficiente de significancia de ningún grupo que no tenga por lo menos un indicador de coeficiente de significancia distinto de cero.
En el decodificador, los indicadores de coeficientes de significancia deben reconstruirse a partir de los datos codificados de la secuencia de bits. Se hace referencia ahora a la figura 7, que muestra, en forma de diagrama de flujo, un proceso de ejemplo 300 para reconstruir indicadores de coeficientes de significancia a partir de una secuencia de bits de datos codificados. La secuencia de bits puede recibirse a través de una conexión de red, es decir transmitirse o leerse desde un medio legible por ordenador, tal como una memoria (por ejemplo, una memoria flash, etc.) o un disco de almacenamiento (por ejemplo, DVD, BluRay®, CD-ROM, etc.). El proceso 302 se aplica en el proceso de reconstrucción de una unidad de transformación en un decodificador. No se muestra la decodificación de la información de cabecera, tanto para la secuencia como para cada segmento o imagen (dependiendo de la sintaxis del estándar de codificación de vídeo en uso).
En la operación 302, se decodifica la posición del último coeficiente de significancia a partir de la secuencia de bits. Esta información puede venir representada en cualquier sintaxis aplicable. Algunas normas establecen que se especifique el último coeficiente de significancia utilizando una notación matricial, por ejemplo, posición basada en xe y- dentro de la unidad de transformación; algunas normas establecen que el último coeficiente de significancia se señalice utilizando un vector de ceros con un 1 en la última posición del coeficiente de significancia, en el que el vector se asigna a la unidad de transformación por el orden de exploración. Puede utilizarse cualquier sintaxis adecuada para especificar el último coeficiente de significancia en la operación 302.
En la operación 304, los indicadores de grupos de coeficientes de significancia se decodifican a partir de la secuencia de bits. Los indicadores de grupos de coeficientes de significancia pueden haber sido codificados por entropía utilizando cualquier esquema de binarización aplicable especificado por el estándar o especificado en la información de cabecera. Por ejemplo, puede utilizarse en algunos casos codificación aritmética binaria adaptada al contexto. Los indicadores de grupos de coeficientes de significancia se decodifican determinando el contexto para cada posición del indicador (posición de bit en el mapa de significancia de nivel superior - por ejemplo, el mapa de significancia L1), y decodificar después el valor del indicador de la secuencia de bits y actualizar el contexto en función del valor del indicador. El tamaño del conjunto de indicadores de grupos de coeficientes de significancia se conoce dado que se conoce el orden de exploración y el último coeficiente de significancia se identificó en la operación 302; se determina, de este modo, el tamaño del mapa de significancia L1. En el caso de grupos con divisiones no uniformes, puede proporcionarse una señalización adecuada de los tamaños y las posiciones del grupo en la sintaxis.
Tal como se ha indicado anteriormente, cada indicador de grupo de coeficientes de significancia corresponde a uno respectivo de los grupos contiguos definidos para la unidad de transformación. Uno o más de los indicadores de coeficientes de significancia se encuentran dentro de cada uno de estos grupos que tienen un indicador de grupo de coeficientes de significancia. En consecuencia, cada indicador de grupo de coeficientes de significancia corresponde a un grupo respectivo de indicadores de coeficientes de significancia.
Después de decodificar el conjunto de indicadores de grupos de coeficientes de significancia, el resto de operaciones para reconstruir el mapa de significancia, es decir el conjunto de indicadores de coeficientes de significancia, se realiza en el orden de exploración prescrito. En el caso de un orden de exploración inversa, el procesamiento comienza a partir del último coeficiente de significancia (pero excluyendo esa última posición del coeficiente de significancia, dado que ya se sabe que contiene un coeficiente distinto de cero). En la operación 305, para cada indicador de coeficiente de significancia, el decodificador determina si su correspondiente indicador de grupo de coeficientes de significancia es cero. Si el indicador correspondiente del grupo de coeficientes de significancia es distinto de cero, entonces se decodifica un indicador del coeficiente de significancia de la secuencia de bits tal como lo indica la operación 306. Es decir, si el indicador de grupo de coeficientes de significancia asociado o correspondiente indica que el grupo puede contener por lo menos un coeficiente distinto de cero, el decodificador decodifica después un indicador de coeficiente de significancia de la secuencia de bits para la posición actual.
Si el indicador de grupo de coeficientes de significancia asociado o correspondiente es un cero, es decir indica que no hay coeficientes distintos de cero en el grupo, el decodificador establece o reconstruye después el indicador de coeficiente de significancia actual como un cero, tal como se indica por la operación 308. No lo decodifica a partir de la secuencia de bits.
En la operación 310, el decodificador determina si ha llegado al final del orden de exploración inversa, es decir el coeficiente en la esquina superior izquierda de la unidad de transformación, por ejemplo [0,0]. Si es así, entonces el proceso 300 termina; si no, entonces el decodificador pasa a la siguiente posición en el orden de exploración inversa en la operación 312 y repite las operaciones 306 y 308 para reconstruir el indicador de coeficiente de significancia para la siguiente posición.
Se apreciará que el orden de exploración generalmente no resulta en una reconstrucción de todos los indicadores de coeficientes de significancia de un grupo antes de pasar al siguiente grupo. Más bien, el orden de exploración (dependiendo del orden de exploración y la geometría del grupo) normalmente explora a través de los límites de los grupos, de manera que el decodificador reconstruye algunos indicadores de un grupo, unos pocos de un grupo adyacente, etc. volviendo a la posición [0,0] en el orden de exploración inversa.
Puede haber casos especiales que se tengan en cuenta en los procesos de codificación y decodificación para ahorrar bits. Por ejemplo, tal como se ha indicado anteriormente, el grupo que contiene el último coeficiente de significancia siempre tendrá un indicador de grupo de coeficientes de significancia que indica un coeficiente distinto de cero, por lo que no es necesario que el indicador de grupo de coeficientes de significancia se codifique ni se transmita al decodificador. El codificador siempre codifica los indicadores de coeficientes de significancia para ese grupo, y el decodificador está configurado para decodificar siempre los indicadores de coeficientes de significancia para ese grupo.
Otro caso especial que puede incluirse en algunas realizaciones es codificar y decodificar siempre el primer grupo. Este grupo contiene el coeficiente DC en [0, 0] en la unidad de transformación. La probabilidad de que este grupo no contenga coeficientes distintos de cero es extremadamente baja. Por consiguiente, en lugar de transmitir un indicador de grupo de coeficientes de significancia para el grupo [0, 0], el codificador puede configurarse para codificar siempre los indicadores de coeficientes de significancia de ese grupo y el decodificador puede configurarse para decodificar siempre los indicadores de coeficientes de significancia de ese grupo.
Todavía otro caso especial que puede implementarse en algunas realizaciones también se basa en la probabilidad. Se ha observado que cuando el grupo a la derecha y el grupo de debajo de un grupo particular contienen coeficientes distintos de cero, la probabilidad de que el grupo particular contenga un coeficiente diferente de cero es muy elevada. Por lo tanto, en algunas realizaciones, el codificador y el decodificador pueden suponer que cualquier grupo que tenga un grupo contiguo a la derecha y un grupo contiguo de debajo que contengan ambos coeficientes distintos de cero, entonces ese grupo tiene un coeficiente distinto de cero. Por lo tanto, respecto a un determinado grupo, si el indicador de grupo de coeficientes de significancia para el grupo de la derecha se establece en 1, y si el indicador de grupo de coeficientes de significancia para el grupo de debajo se establece en 1, entonces el codificador no codifica un indicador de grupo de coeficientes de significancia para el grupo determinado y codifica siempre los indicadores de coeficientes de significancia para el grupo determinado. El decodificador reconoce que los contiguos derechos y de debajo tienen indicadores de grupos de coeficientes de significancia que indican coeficientes distintos de cero, por lo que supondrá automáticamente que el grupo determinado tiene coeficientes distintos de cero y decodificará los indicadores de coeficientes de significancia.
Se hace referencia ahora a la figura 8, que muestra la operación 304 de la figura 7 con detalles adicionales para reflejar una realización de ejemplo para llevar los casos especiales descritos anteriormente. La operación 304 incluye una operación 304-1 en la que el indicador de grupo de coeficientes de significancia para el grupo que contiene el último coeficiente de significancia se establece en 1. La posición del último coeficiente de significancia se decodifica a partir de la secuencia de bits en una operación anterior (no mostrado).
El decodificador se mueve después a través de los grupos en orden de exploración inverso. Tal como se ha indicado en la operación 304-2, el decodificador se mueve al siguiente grupo en el orden de exploración inversa del grupo que contiene el último coeficiente de significancia. Para este grupo, el decodificador evalúa si el indicador de grupo de coeficientes de significancia para el grupo a la derecha y el indicador de grupo de coeficientes de significancia para el grupo de debajo del grupo actual son iguales a 1. Inicialmente, el decodificador no tendrá indicadores a la derecha y de debajo ya que acaba de comenzar, pero más adelante en el orden de exploración (ya sea horizontal, vertical o diagonal), el decodificador a veces puede haber reconstruido los indicadores de los grupos de coeficientes de significancia en estas posiciones en relación con el grupo actual (para los grupos situados en el borde inferior de la unidad de transformación, es posible que el decodificador nunca tenga un indicador para un grupo de debajo). Si esos dos grupos adyacentes se establecen en 1, entonces la probabilidad de que el grupo actual también se establezca en 1 es lo suficientemente elevada como para que tanto el codificador como el decodificador supongan
que se establece en uno. En consecuencia, en la operación 304-6, el decodificador establece el indicador de grupo de coeficientes de significancia en 1 si se cumple la condición de caso especial. En caso contrario, el decodificador pasa a la operación 304-4. En otra realización, este caso especial puede modificarse para basarse en los indicadores de grupos de coeficientes de significancia de otros grupos adyacentes, u otros grupos en conjunto. En la operación 304-4, el decodificador decodifica el indicador de grupo de coeficientes de significancia para el grupo actual de la secuencia de bits. La decodificación incluye determinar el contexto y luego decodificar de acuerdo con el contexto determinado. La decodificación puede basarse en codificación aritmética binaria (BAC), u otros procesos de codificación/decodificación binarizados.
En la operación 304-5, el decodificador determina si éste es el penúltimo grupo en el orden de exploración inversa. En caso contrario, la decodificación todavía no termina, por lo que el decodificador regresa a la operación 340-2 para avanzar al siguiente grupo en el orden de exploración inversa. Si es el penúltimo grupo en el orden de exploración inversa, entonces el decodificador pasa a la operación 304-7 donde la decodificación establece a 1 el indicador de grupo de coeficientes de significancia para el último grupo, es decir, el grupo [0,0]. Esto se basa en el caso especial en el que el codificador y el decodificador siempre suponen que ese grupo en particular tiene por lo menos un coeficiente distinto de cero, por lo que el indicador de grupo de coeficientes de significancia siempre se prestable a 1 para que los indicadores de coeficientes de significancia para ese grupo siempre se codifiquen y decodifiquen. Después de esta operación, el decodificador pasa a la operación 306 o 308 (figura 7).
Se apreciará en el proceso de ejemplo anterior ilustrado en las figuras 7 y 8 la decodificación del mapa de significancia L1 (los indicadores de grupos de coeficientes de significancia) y la decodificación del mapa de significancia L0 (los indicadores de coeficientes de significancia) como proceso de dos etapas en el que el mapa de significancia L1 se decodifica completamente y después se decodifica el mapa de significancia L0. En algunas realizaciones, éste puede ser el caso; sin embargo, en algunas otras realizaciones, los procesos de decodificación pueden estar parcialmente entrelazados. Es decir, la decodificación del mapa L0 puede comenzar antes de decodificar completamente el mapa L1. Se apreciará que, en algunas realizaciones, la decodificación del mapa de significancia L0 puede comenzar tan pronto como se haya reconstruido el primer indicador de grupo de coeficientes de significancia.
En alguna realización, la codificación del mapa de significancia multinivel puede activarse y desactivarse dependiendo, por ejemplo, del tipo de imagen. Por ejemplo, la codificación del mapa de significancia multinivel puede habilitarse para imágenes I y P, pero deshabilitarse para imágenes B.
Modelado de contexto
Para mejorar la eficiencia de la codificación, el motor BAC (u otro motor de codificación/decodificación por entropía) utiliza contextos. La presente solicitud propone utilizar cuatro nuevos contextos para codificar los indicadores de grupos de coeficientes de significancia. Dos contextos son para la codificación/decodificación de luma y dos son para codificación/decodificación de croma.
Supóngase que se utiliza el orden de exploración inversa (pueden utilizarse otras órdenes prescritas en otras implementaciones). La determinación de cuál de los dos contextos se aplica a un indicador de grupo de coeficientes de significancia determinado puede producirse de la siguiente manera. Si el indicador de grupo de coeficientes de significancia para el grupo adyacente a la derecha del grupo actual es cero, y el indicador de grupo de coeficientes de significancia para el grupo adyacente de debajo del grupo actual es cero, entonces el contexto para codificar el indicador de grupos de coeficientes de significancia del grupo actual es 0. En caso contrario, el contexto es 1. Si los indicadores de esos dos grupos contiguos no están disponibles, se supone entonces que los indicadores no disponibles son = 0 para el propósito de la determinación del contexto.
Hay que tener en cuenta que, si se utiliza el orden de exploración hacia delante, el modelo de contexto puede cambiar para utilizar el indicador de grupo de coeficientes de significancia para el grupo contiguo a la izquierda del grupo actual y el indicador de grupo de coeficientes de significancia para el grupo contiguo por encima del grupo actual para determinar el contexto.
El proceso de determinación del contexto también puede incluir casos especiales. Por ejemplo, al grupo superior izquierdo siempre se le puede asignar contexto 1.
Existen otros posibles modelos de contexto y procedimientos para determinar el contexto que pueden utilizarse. A continuación, se dan algunos ejemplos.
Para definir la notación, supóngase que L[i] denota el indicador de significancia del grupo de coeficientes i en el nivel L y que N indica el número de grupos de coeficientes en el nivel L. En general, para un L y un grupo de coeficientes i
dados, se utiliza una función c(*) de i y todos los L[j] disponibles para determinar un contexto C_i para L[i]. El contexto viene dado entonces por:
C_i = c(i, L[0], L[1], ... L[N-1])
donde j! = i. Hay que tener en cuenta que para utilizar L[j] para determinar un contexto para L[i], el propio L[j] debe estar disponible. Por lo tanto, el orden de exploración seleccionado debe garantizar que previamente se haya determinado cualquier L[j] utilizado en c(*).
En una realización similar al modo de determinación de contexto descrito anteriormente, el contexto puede determinarse por:
C_i = c(i, L0[0], L0[1], ... L0[15])
= sum{bj * L0[j]}
donde j = 0, 1, ..., N y j! = i, bj = 1 si el grupo de coeficientes j es el contiguo derecho o inferior del grupo de coeficientes i y bj = 0 en caso contrario. Esta realización particular tiene 3 contextos (6, si se utilizan 3 contextos distintos para croma).
Otra realización de c (*) viene dada por:
C_i = c(i, L0[0], L[1], ... L[N-1])
= sum{bj * L[j]}
donde j = 0, 1, ..., N y j! = i, bj no es cero si el grupo de coeficientes j es cualquier grupo de coeficientes contiguos de i que ya se ha determinado y bj = 0 en caso contrario. En esta realización, los coeficientes de ponderación bj pueden no ser necesariamente constantes.
Otra realización de c(*) ignora los indicadores de grupos de coeficientes de significancia de otros grupos de coeficientes en L y determina el contexto únicamente en base a la posición i del grupo de coeficientes actual. Esto puede expresarse como:
C_i = c(i, L[0], L[1], ..., L[N-1])
= i
Pueden utilizarse otros modelos de contexto y procesos para determinar el contexto con mapas de significancia multinivel.
Cuantificación optimizada de la tasa de distorsión
Algunos procesos de codificación emplean cuantificación optimizada de la tasa de distorsión (rate-distortion optimized quantization, RDOQ), o lo que a veces se denomina "cuantificación suave". La RDOQ es un proceso de determinación de coeficientes de dominio de transformación cuantificados óptimos en base a una expresión de optimización de la tasa de distorsión. Por consiguiente, los coeficientes del dominio de transformación cuantificados que resultan de la RDOQ pueden ser los mismos o no que los coeficientes del dominio de transformación cuantificados que se obtuvieron a través del proceso normal de transformación y cuantificación. En algunos casos, los valores de los coeficientes pueden haber sido modificados por el proceso RDOQ ya que se determinó que la distorsión resultante era menos costosa que el consiguiente ahorro en el coste de transmisión.
El proceso de RDOQ normalmente evalúa cuatro costes en la determinación del componente de la tasa. Los cuatro costes de la tasa incluyen la tasa de última posición, la tasa de significancia (tasa L0), la tasa de coeficiente, y la tasa del parámetro de bloque codificado (CBP). Para implementar mapas de significancia multinivel, puede ser ventajoso modificar la RDOQ para incluir también la tasa de significancia de nivel superior (por ejemplo, tasa L1) en el cálculo de RDOQ.
En una realización, el proceso RDOQ puede modificarse para realizar una RDOQ de dos etapas respecto a los mapas de significancia. En primer lugar, se aplica el proceso de RDOQ para determinar la mejor última posición y valores de coeficiente y, por lo tanto, los indicadores de coeficientes de significancia de L1. En una segunda etapa, con la última posición fijada, puede aplicarse el proceso RDOQ nuevamente respecto a la tasa L1 para determinar si existe una justificación de costes de tasa de distorsión (rate-distortion, RD) para poner a cero cualquier coeficiente. La figura 9 muestra, en forma de diagrama de flujo, un ejemplo del proceso de RDOQ 400 para codificación de mapas de significancia multinivel. El proceso 400 utiliza RDOq para obtener los coeficientes de transformación
cuantificados óptimos y para determinar la posición del último coeficiente de significancia, es decir, una RDOQ L0. El proceso 400 corrige después la última posición y ajusta el coste actual de la RD para tener en cuenta el efecto de los niveles adicionales de mapas de significancia. Después, utiliza un enfoque ambicioso para optimizar todavía más los coeficientes de transformación.
La operación 402 refleja el uso de RDOQ para obtener coeficientes de dominio de transformación cuantificados óptimos, lo que proporciona una última posición de coeficiente de significancia. La operación 402 da como resultado un cierto coste de RD en base a las tasas de transmisión de la última posición, el mapa de significancia correspondiente a los coeficientes óptimos, los valores de coeficiente, y el CBP.
En la operación 404, la última posición significativa es fija. Ese es el último grupo que contendrá un coeficiente distinto de cero, es decir el último indicador de grupo de coeficientes de significancia se fija en 1. El codificador determina después de manera ambiciosa si hay un ahorro de coste poniendo a cero coeficientes en otros grupos. El proceso 400 puede realizarse en orden de exploración inverso en algunas realizaciones, aunque podría procesarse en otro orden.
En la operación 406, comenzando con el penúltimo grupo como grupo actual, el codificador determina si el grupo actual tiene un indicador de grupo de coeficientes de significancia = 1. Si no, entonces el grupo contiene sólo ceros y el codificador pasa al siguiente grupo. Si el indicador de grupos de coeficientes de significancia = 1, entonces el codificador calcula un coste de RD que resultaría si todos los coeficientes en el grupo actual fueran ceros. En la operación 408, el codificador evalúa si el coste de RD recién calculado es mejor que (por ejemplo, menor que) el coste de RD actual. Si es así, entonces, en la operación 410, todos los coeficientes del grupo actual se ponen a cero, y el coste de RD actual se actualiza para reflejar el cambio. En la operación 412, el codificador evalúa si esto se realiza con la RDOQ L1, por ejemplo, si ha llegado al grupo justo antes del grupo [0, 0] (el grupo [0, 0] no se pone a cero si el codificador y el decodificador están configurados para suponer que hay por lo menos un coeficiente distinto de cero en ese grupo, tal como se indica en los casos especiales descritos anteriormente). Si hay otros grupos para evaluar, entonces el proceso 400 continúa en la operación 414, donde el codificador pasa al siguiente grupo (utilizando el orden de exploración inversa en algunas realizaciones).
Se ilustrará ahora a modo de ejemplo el proceso de RDOQ. Se hará referencia nuevamente al ejemplo que se ha dado anteriormente en relación con las figuras 3, 4 y 5. En la figura 3 se muestran los coeficientes de dominio de transformación cuantificados óptimos antes de RDOQ L1, pero después de RDOQ L0. El mapa de significancia L0 correspondiente se muestra en la figura 4 y el mapa de significancia L1 se muestran en la figura 5.
El proceso RDOQ L1 puede resultar, por ejemplo, en un mapa de significancia L0 optimizado 500 mostrado en la figura 10, y el mapa de significancia L1 asociado o correspondiente mostrado en la figura 11.
Se observará que los indicadores de coeficientes de significancia en el último grupo de significancia, es decir, el grupo [3, 2], no ha cambiado. Sin embargo, el grupo [3, 0], el grupo [0, 3], y el grupo [1, 3] se han puesto a cero. Como resultado, los indicadores correspondientes de los grupos de coeficientes de significancia para estos tres grupos también se han puesto a cero, tal como se indica en la figura 11. El resultado es que no es necesario que el codificador codifique estos tres grupos. La distorsión que resulta de poner a cero los pocos coeficientes que se encontraron en esos grupos se ve compensada por el ahorro de coste al reducir el número de bits codificados, según se determina por la evaluación de RDOQ.
En una posible realización, el proceso RDOQ puede extenderse para determinar el tamaño óptimo del grupo de coeficientes para la UT actual. En esta realización, el proceso 400 se repite para varias series, adoptando cada serie un tamaño de grupo de coeficientes diferente y con la operación 410 modificada de modo que los coeficientes de transformación no se establecen realmente a 0. Esencialmente, en cada serie, este proceso RDOQ modificado calcula el coste de la RD para un tamaño de grupo de coeficientes particular. Una vez que se han completado todas las series, la RDOQ selecciona el tamaño del grupo de coeficientes que produce el menor coste de RD y, finalmente, establece cualquier coeficiente de transformación a 0 según sea necesario. El codificador codifica el valor del tamaño óptimo del grupo de coeficientes en la secuencia de bits para que el decodificador pueda obtenerlo y utilizarlo.
Los tamaños de los grupos de coeficientes que se examinan pueden ser en base al tamaño de la unidad de transformación. Por ejemplo, una unidad de transformación de 32x32 puede examinar tamaños de grupo de 8x8, 4x4 y 2x2. Los grupos a examinar pueden ser seleccionables, y el codificador puede indicar (por ejemplo, en la cabecera de la secuencia) qué tamaños de grupo se examinarán para cada tamaño de la unidad de transformación. Supóngase, por ejemplo, que el codificador y el decodificador han acordado que para UTs de 16x16, la RDOQ modificada examinará dos tamaños de grupos de coeficientes diferentes: 2x2 y 4x4, indicados por 1 y 0, respectivamente. Si la RDOQ modificada determina que 2x2 es óptimo, el codificador codifica un contenedor 1 en la
secuencia de bits antes de la signifícant_coeffgroup_flag's. El decodificador decodifica este contenedor antes del significant_coe1fgroup_flag’s y sabe que el tamaño del grupo de coeficientes para la UT actual es 2x2.
Ejemplo de sintaxis
A continuación, se da una sintaxis de ejemplo para implementar mapas de significancia multinivel. Esta sintaxis de ejemplo es sólo una posible implementación.
Los indicadores de grupos de coeficientes de significancia pueden denotarse y definirse como:
significant_coeffgroup_flag [xCG] [yCG]
Este indicador especifica, para la posición del grupo de coeficientes (xCG, yCG) dentro del bloque de transformación actual de 16x16 o 32x32, si el grupo de coeficientes correspondiente en la posición (xCG, yCG) tiene coeficientes distintos de cero tal como sigue:
Si significant_coeffgroup_flag [xCG] [yCG] es igual a 0, el número de coeficientes distintos de cero en el grupo de coeficientes en la posición (xCG, yCG) se establece igual a 0;
En caso contrario (significant_coeffgroup_flag [xCG] [yCG] igual a 1), el número de coeficientes distintos de cero en el grupo de coeficientes en la posición (xCG, yCG) es distinto de cero, excepto en los casos especiales que se definen a continuación.
Los casos especiales se definen de la siguiente manera:
1. El significant_coeffgroup_flag [0] [0] en la primera posición del grupo de coeficientes (0, 0) en el orden de exploración se deduce que es igual a 1.
2. El significant_coeffgroup_flag [xCG] [yCG] en la posición del grupo de coeficientes (xCG, yCG) en el orden de exploración se deduce que es igual a 1 si significant_coeffgroup_flag [xCG] [yCG 1] = 1 y significant_coeffgroup_flag [xCG 1] [yCG] = 1.
Si significant_coeffgroup_flag [xCG] [yCG] no está presente, se deduce que es igual a 0.
En algunas realizaciones, el significant_coeffgroup_flag [xCG] [yCG] no se aplica a bloques de transformación de 4x4 y 8x8.
El siguiente pseudocódigo ilustra un ejemplo de implementación de mapas de significancia multinivel dentro del proceso de decodificación para coeficientes de dominio de transformación cuantificados de reconstrucción (residuos).
Se observará que la primera parte del pseudocódigo incluye la decodificación de la última posición del coeficiente de significancia. Después se determina el número de grupos, si la unidad de transformación es de 16x16 o mayor (tal como se indica por if(log2TrafoSize> 3)).
El pseudocódigo anterior muestra una implementación de ejemplo del proceso de ejemplo 300 descrito anteriormente en relación con la figura 7.
Se hace referencia ahora a la figura 12, que muestra un diagrama de bloques simplificado de una realización de ejemplo de un codificador 900. El codificador 900 incluye un procesador 902, memoria 904, y una aplicación de codificación 906. La aplicación de codificación 906 puede incluir un programa de ordenador o aplicación almacenado en la memoria 904 y que contenga instrucciones para configurar el procesador 902 para realizar operaciones como las descritas aquí. Por ejemplo, la aplicación de codificación 906 puede codificar y generar secuencias de bits codificadas de acuerdo con los procesos de mapas de significancia multinivel descritos aquí. Se entenderá que la aplicación de codificación 906 puede almacenarse en un medio legible por ordenador, tal como un disco compacto, un dispositivo de memoria flash, una memoria de acceso aleatorio, un disco duro, etc.
Se hace referencia ahora también a la figura 13, que muestra un diagrama de bloques simplificado de una realización de ejemplo de un decodificador 1000. El decodificador 1000 incluye un procesador 1002, una memoria 1004, y una aplicación de decodificación 1006. La aplicación de decodificación 1006 puede incluir un programa de ordenador o aplicación almacenado en la memoria 1004 y que contenga instrucciones para configurar el procesador 1002 para realizar operaciones como las descritas aquí. La aplicación de decodificación 1006 puede incluir un decodificador por entropía configurado para reconstruir residuos en base a mapas de significancia multinivel, tal como se describe aquí. Se entenderá que la aplicación de decodificación 1006 puede almacenarse en un medio legible por ordenador, tal como un disco compacto, un dispositivo de memoria flash, una memoria de acceso aleatorio, un disco duro, etc.
Se apreciará que el decodificador y/o el codificador de acuerdo con la presente solicitud pueden implementarse en varios dispositivos informáticos, incluyendo, sin limitación, servidores, ordenadores de uso general adecuadamente programados, dispositivos codificación de audio/vídeo y de reproducción, decodificadores de televisión, equipos de transmisión de televisión y dispositivos móviles. El decodificador o codificador puede implementarse por medio de un software que contenga instrucciones para configurar un procesador para llevar a cabo las funciones descritas en aquí. Las instrucciones del software pueden almacenarse en cualquier memoria legible por ordenador no transitoria adecuada, incluyendo CDs, RAM, ROM, memoria Flash, etc.
Se entenderá que el codificador descrito aquí y el módulo, rutina, proceso, subproceso, u otro componente de software que implementa el procedimiento/proceso descrito para configurar el codificador pueden realizarse utilizando técnicas y lenguajes de programación de ordenador estándar. La presente aplicación no se limita a procesadores particulares, lenguajes informáticos, convenios de programación informática, estructuras de datos, y otros detalles de implementación similares. Los expertos en la materia reconocerán que los procesos descritos pueden implementarse como parte de un código ejecutable por un ordenador almacenado en una memoria volátil o no volátil, como parte de un chip integrado específico de la aplicación (ASIC), etc.
Claims (12)
1. Procedimiento para utilizarse en un decodificador de una secuencia de bits de datos codificados para determinar un valor de un indicador de coeficiente de significancia correspondiente a un coeficiente de transformación de un bloque entre uno o más bloques no superpuestos dentro de una unidad de transformación, siendo el indicador de coeficiente de significancia un elemento de un grupo de indicadores de coeficientes de significancia correspondientes al bloque, presentando el grupo un indicador de grupo de coeficientes de significancia que es uno, si es cierta una de una primera condición de que cualquier elemento del grupo de indicadores de coeficientes de significancia es distinto de cero y una segunda condición de que el grupo de indicadores de coeficientes de significancia contiene el indicador de coeficiente de significancia para un coeficiente DC, o cero en caso contrario, en el que los indicadores de coeficientes de significancia dentro de un grupo de los indicadores de coeficientes de significancia se exploran en orden de exploración inverso,
comprendiendo el procedimiento
- deducir que el valor del indicador de coeficiente de significancia es cero si el valor del indicador de grupo de coeficientes de significancia es cero;
- deducir que el valor del indicador del último coeficiente de significancia restante en el grupo es uno si son ciertas todas las siguientes condiciones:
- el valor del indicador del grupo de coeficientes de significancia es uno,
- el grupo no es el grupo que contiene el indicador de coeficiente de significancia para el coeficiente DC, y
- se ha determinado previamente que todos los otros indicadores de coeficientes de significancia en el grupo son cero; y
- decodificar el valor del indicador de coeficiente de significancia a partir de la secuencia de bits en caso contrario.
2. Procedimiento de acuerdo con la reivindicación 1, que comprende, además:
decodificar el valor del indicador de grupo de coeficientes de significancia a partir de la secuencia de bits, si 1) el bloque es un bloque que no es el primero o el último en un orden de decodificación de bloques de la unidad de transformación y/o 2) por lo menos un indicador de grupo de coeficientes de significancia de dos grupos previamente decodificados con respectivos bloques correspondientes contiguos al bloque tiene un valor de cero.
3. Procedimiento de acuerdo con la reivindicación 2, en el que en 2), los respectivos bloques contiguos al bloque que tiene un valor de cero se encuentran por debajo y a la derecha del bloque actual, y
en el que los grupos de los indicadores de coeficientes de significancia se exploran en orden de exploración inverso.
4. Procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 3, en el que el bloque no es cuadrado.
5. Procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 3, en el que el bloque es cuadrado.
6. Procedimiento de acuerdo con la reivindicación 5, en el que el bloque es de 4x4.
7. Procedimiento de acuerdo con la reivindicación 1, en el que el tamaño de la unidad de transformación es uno de 8x8, 16x16, 32x32 o 64x64.
8. Procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 6, que comprende, además, decodificar el valor del indicador de grupo de coeficientes de significancia a partir de la secuencia de bits incluyendo determinar un contexto para el indicador de grupo de coeficientes de significancia en base a valores de indicadores de grupos de coeficientes de significancia de dos grupos con bloques correspondientes que son contiguos al bloque.
9. Procedimiento de acuerdo con la reivindicación 8, en el que los bloques correspondientes son bloques a la derecha y por debajo del bloque.
10. Procedimiento de acuerdo con la reivindicación 9, en el que se determina que el contexto es un primer contexto cuando los valores de los indicadores de grupos de coeficientes de significancia con bloques correspondientes a la derecha y por debajo del bloque son ambos uno y se determina que el contexto es un segundo contexto en caso contrario.
11. Decodificador para decodificar una secuencia de bits de datos codificados para determinar un valor de un indicador de coeficiente de significancia correspondiente a un coeficiente de transformación de un bloque entre uno
o más bloques no superpuestos dentro de una unidad de transformación, siendo el indicador de coeficiente de significancia un elemento de un grupo de indicadores de coeficientes de significancia correspondientes al bloque, presentando el grupo un indicador de grupo de coeficientes de significancia que es uno, si es cierta una de una primera condición de que cualquier elemento del grupo de indicadores de coeficientes de significancia es distinto de cero y una segunda condición de que el grupo de indicadores de coeficientes de significancia contiene el indicador de coeficiente de significancia para un coeficiente DC, o cero en caso contrario, en el que los indicadores de coeficientes de significancia dentro de un grupo de los indicadores de coeficientes de significancia se exploran en orden de exploración inverso,
comprendiendo el decodificador:
un procesador
una memoria; y
una aplicación de decodificación almacenada en memoria y que contiene instrucciones que, cuando se ejecutan, configuran el procesador para realizar el procedimiento reivindicado en cualquiera de las reivindicaciones 1 a 10.
12. Medio legible por un procesador no transitorio que almacena instrucciones ejecutables por un procesador que, cuando se ejecutan, configura uno o más procesadores para realizar el procedimiento reivindicado en cualquiera de las reivindicaciones 1 a 10.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP11187410.3A EP2590409B1 (en) | 2011-11-01 | 2011-11-01 | Multi-level significance maps for encoding and decoding |
EP14200316.9A EP2876883B1 (en) | 2011-11-01 | 2011-11-01 | Multi-level significance maps for encoding and decoding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2728529T3 true ES2728529T3 (es) | 2019-10-25 |
Family
ID=45033756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES14200316T Active ES2728529T3 (es) | 2011-11-01 | 2011-11-01 | Mapas de significancia multinivel para codificación y decodificación |
Country Status (13)
Country | Link |
---|---|
EP (4) | EP3754989A1 (es) |
JP (1) | JP2013098988A (es) |
KR (1) | KR101407755B1 (es) |
CN (2) | CN105872550B (es) |
AU (1) | AU2012244144B2 (es) |
BR (1) | BR102012027968B1 (es) |
CA (1) | CA2793068C (es) |
ES (1) | ES2728529T3 (es) |
HK (2) | HK1182243A1 (es) |
HU (1) | HUE043461T2 (es) |
PL (1) | PL2876883T3 (es) |
SG (1) | SG189658A1 (es) |
TW (1) | TWI510031B (es) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9253481B2 (en) * | 2012-01-13 | 2016-02-02 | Qualcomm Incorporated | Determining contexts for coding transform coefficient data in video coding |
US9538175B2 (en) * | 2012-09-26 | 2017-01-03 | Qualcomm Incorporated | Context derivation for context-adaptive, multi-level significance coding |
AU2013395426B2 (en) | 2013-07-24 | 2017-11-30 | Microsoft Technology Licensing, Llc | Scanning orders for non-transform coding |
JP2020072277A (ja) * | 2017-03-03 | 2020-05-07 | シャープ株式会社 | 動画像符号化装置及び動画像復号装置 |
AU2019201653A1 (en) * | 2019-03-11 | 2020-10-01 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding a tree of blocks of video samples |
WO2021188571A1 (en) | 2020-03-16 | 2021-09-23 | Beijing Dajia Internet Information Technology Co., Ltd. | Improvements on merge mode with motion vector differences |
US20220239923A1 (en) * | 2021-01-26 | 2022-07-28 | Meta Platforms, Inc. | Dynamically biasing mode selection in video encoding |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3017745B2 (ja) * | 1989-03-14 | 2000-03-13 | ソニー株式会社 | データ伝送方法 |
JP3944225B2 (ja) * | 2002-04-26 | 2007-07-11 | 株式会社エヌ・ティ・ティ・ドコモ | 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法、画像符号化プログラム及び画像復号プログラム |
JP4230188B2 (ja) | 2002-06-06 | 2009-02-25 | パナソニック株式会社 | 可変長符号化方法および可変長復号化方法 |
CA2457988A1 (en) * | 2004-02-18 | 2005-08-18 | Voiceage Corporation | Methods and devices for audio compression based on acelp/tcx coding and multi-rate lattice vector quantization |
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 |
US20070071331A1 (en) * | 2005-09-24 | 2007-03-29 | Xiteng Liu | Image compression by economical quaternary reaching method |
KR101356733B1 (ko) * | 2007-03-07 | 2014-02-05 | 삼성전자주식회사 | 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치 |
TWI341657B (en) * | 2007-04-03 | 2011-05-01 | Nat Univ Tsing Hua | Cabac decoding method |
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 |
KR101457894B1 (ko) * | 2009-10-28 | 2014-11-05 | 삼성전자주식회사 | 영상 부호화 방법 및 장치, 복호화 방법 및 장치 |
US8942282B2 (en) * | 2010-04-12 | 2015-01-27 | Qualcomm Incorporated | Variable length coding of coded block pattern (CBP) in video compression |
-
2011
- 2011-11-01 EP EP20190444.8A patent/EP3754989A1/en active Pending
- 2011-11-01 PL PL14200316T patent/PL2876883T3/pl unknown
- 2011-11-01 EP EP19152375.2A patent/EP3499892B1/en active Active
- 2011-11-01 ES ES14200316T patent/ES2728529T3/es active Active
- 2011-11-01 EP EP14200316.9A patent/EP2876883B1/en active Active
- 2011-11-01 HU HUE14200316A patent/HUE043461T2/hu unknown
- 2011-11-01 EP EP11187410.3A patent/EP2590409B1/en active Active
-
2012
- 2012-10-18 SG SG2012077889A patent/SG189658A1/en unknown
- 2012-10-18 CA CA2793068A patent/CA2793068C/en active Active
- 2012-10-23 AU AU2012244144A patent/AU2012244144B2/en active Active
- 2012-10-29 CN CN201610335065.0A patent/CN105872550B/zh active Active
- 2012-10-29 CN CN201210421030.0A patent/CN103096065B/zh active Active
- 2012-10-31 BR BR102012027968-1A patent/BR102012027968B1/pt active IP Right Grant
- 2012-10-31 JP JP2012239852A patent/JP2013098988A/ja active Pending
- 2012-10-31 KR KR1020120122364A patent/KR101407755B1/ko active IP Right Grant
- 2012-10-31 TW TW101140398A patent/TWI510031B/zh active
-
2013
- 2013-08-08 HK HK13109257.4A patent/HK1182243A1/xx unknown
-
2015
- 2015-11-26 HK HK15111651.0A patent/HK1211155A1/xx unknown
Also Published As
Publication number | Publication date |
---|---|
HK1182243A1 (en) | 2013-11-22 |
CA2793068C (en) | 2016-07-26 |
EP3499892A1 (en) | 2019-06-19 |
PL2876883T3 (pl) | 2019-10-31 |
EP2590409A1 (en) | 2013-05-08 |
SG189658A1 (en) | 2013-05-31 |
AU2012244144A1 (en) | 2013-05-16 |
TWI510031B (zh) | 2015-11-21 |
CA2793068A1 (en) | 2013-05-01 |
BR102012027968B1 (pt) | 2021-12-21 |
CN103096065B (zh) | 2016-06-15 |
CN105872550B (zh) | 2020-03-06 |
EP2876883B1 (en) | 2019-05-01 |
HUE043461T2 (hu) | 2019-08-28 |
EP2590409B1 (en) | 2015-01-07 |
KR20130048180A (ko) | 2013-05-09 |
JP2013098988A (ja) | 2013-05-20 |
CN105872550A (zh) | 2016-08-17 |
KR101407755B1 (ko) | 2014-06-17 |
EP2876883A1 (en) | 2015-05-27 |
TW201328363A (zh) | 2013-07-01 |
BR102012027968A2 (pt) | 2015-09-15 |
EP3499892B1 (en) | 2020-08-12 |
HK1211155A1 (en) | 2016-05-13 |
EP3754989A1 (en) | 2020-12-23 |
CN103096065A (zh) | 2013-05-08 |
AU2012244144B2 (en) | 2015-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10911758B2 (en) | Multi-level significance maps for encoding and decoding | |
ES2728529T3 (es) | Mapas de significancia multinivel para codificación y decodificación | |
ES2776925T3 (es) | Ocultación de múltiples bits de signo dentro de una unidad de transformación | |
KR101538832B1 (ko) | 다중-레벨 유효성 맵 스캐닝 | |
US9253481B2 (en) | Determining contexts for coding transform coefficient data in video coding | |
US20210105477A1 (en) | Image encoding/decoding method and device therefor | |
US10623777B2 (en) | Image encoding method and apparatus, and image decoding method and apparatus | |
BR112019013831A2 (pt) | método de processamento de imagem e aparelho para tal finalidade | |
US20110243220A1 (en) | Method and apparatus for encoding and decoding image and method and apparatus for decoding image using adaptive coefficient scan order | |
ES2972582T3 (es) | Mejora en la partición forzada límite | |
ES2496365T3 (es) | Codificación y descodificación de mapas significativos usando selección de la partición | |
US9172962B2 (en) | Methods and systems for pipelining within binary arithmetic coding and decoding | |
TW201347546A (zh) | 用於內容脈絡集選擇之方法及裝置 | |
ES2875586T3 (es) | Procedimiento de codificación y descodificación de imágenes, dispositivo de codificación y de descodificación y programas informáticos correspondientes | |
CA2800119C (en) | Methods and systems for pipelining within binary arithmetic coding and decoding |