ES2878325T3 - Codificación aritmética binaria con máquinas de estados finitos de estimación de probabilidad parametrizadas - Google Patents

Codificación aritmética binaria con máquinas de estados finitos de estimación de probabilidad parametrizadas Download PDF

Info

Publication number
ES2878325T3
ES2878325T3 ES18716473T ES18716473T ES2878325T3 ES 2878325 T3 ES2878325 T3 ES 2878325T3 ES 18716473 T ES18716473 T ES 18716473T ES 18716473 T ES18716473 T ES 18716473T ES 2878325 T3 ES2878325 T3 ES 2878325T3
Authority
ES
Spain
Prior art keywords
bin
stream
bins
fsm
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES18716473T
Other languages
English (en)
Inventor
Amir Said
Marta Karczewicz
Li Zhang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2878325T3 publication Critical patent/ES2878325T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods 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/192Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods 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/196Methods 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
    • H04N19/198Methods 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 including smoothing of a sequence of encoding parameters, e.g. by averaging, by choice of the maximum, minimum or median value
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

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)
  • Error Detection And Correction (AREA)

Abstract

Un método de descodificación de datos de vídeo, comprendiendo el método: determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits, en donde aplicar la descodificación aritmética binaria comprende: generar un flujo de bins, en donde generar el flujo de bins comprende: para al menos un bin respectivo del flujo de bins: determinar un valor del bin respectivo basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento; determinar uno o más parámetros de máquina de estados finitos (FSM) para un siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, siguiendo el siguiente bin del flujo de bins al bin respectivo en el flujo de bins; y determinar un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo; y desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado; y reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado, caracterizado por que determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada.

Description

DESCRIPCIÓN
Codificación aritmética binaria con máquinas de estados finitos de estimación de probabilidad parametrizadas Esta solicitud reivindica el beneficio de la solicitud de patente provisional de EE. UU. 62/474.919, presentada el 22 de marzo de 2017, y la solicitud de patente provisional de EE. u U. 62/475.609, presentada el 23 de marzo de 2017. Campo técnico
Esta divulgación se refiere a la codificación/descodificación de vídeo, por ejemplo, la codificación de vídeo y la descodificación de vídeo.
Antecedentes
Las capacidades de vídeo digital se pueden incorporar en una amplia gama de dispositivos, que incluyen televisiones digitales, sistemas de difusión directa digital, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de sobremesa, ordenadores de tipo tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos de radio celular o por satélite, denominados "teléfonos inteligentes", dispositivos de teleconferencia de vídeo, dispositivos de envío por flujo continuo de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación/Descodificación Avanzada de Vídeo (AVC), ITU-T H.265, la norma de Codificación/Descodificación de Vídeo de Alta Eficiencia (HEVC) y extensiones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital de manera más eficiente implementando tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo pueden realizar una predicción espacial (intra-imagen) y/o temporal (inter­ imagen) para reducir o retirar la redundancia inherente en las secuencias de vídeo. Para la codificación/descodificación de vídeo basada en bloques, un sector de vídeo (por ejemplo, una trama de vídeo o una porción de una trama de vídeo) se puede subdividir en bloques de vídeo, tales como bloques de árbol de codificación y bloques de codificación. La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que va a codificarse. Los datos residuales representan diferencias de píxel entre el bloque original que va a codificarse y el bloque predictivo. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio de los píxeles a un dominio de la transformada, dando como resultado coeficientes de transformada residuales, que pueden a continuación cuantificarse.
Sumario
En general, esta divulgación describe técnicas relacionadas con la codificación aritmética. Como se describe en el presente documento, las técnicas de esta divulgación pueden mejorar la compresión de datos de vídeo mejorando potencialmente la estimación de probabilidad adaptativa.
En un ejemplo, esta divulgación describe un método de descodificación de datos de vídeo, comprendiendo el método: determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits, en donde aplicar la descodificación aritmética binaria comprende: generar un flujo de bins, en donde generar el flujo de bins comprende: para al menos un bin respectivo del flujo de bins: determinar un valor del bin respectivo basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento; determinar uno o más parámetros de máquina de estados finitos (FSM) para un siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, siguiendo el siguiente bin del flujo de bins al bin respectivo en el flujo de bins, en donde determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada; y determinar un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo; y desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado; y reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado.
En otro ejemplo, esta divulgación describe un método de codificación de datos de vídeo, comprendiendo el método: generar un elemento de sintaxis basándose en los datos de vídeo; determinar un valor de desplazamiento al menos en parte aplicando una codificación aritmética binaria al elemento de sintaxis, en donde aplicar la codificación aritmética binaria comprende: generar un flujo de bins al menos en parte al: binarizar el elemento de sintaxis; para al menos un bin respectivo del flujo de bins: determinar un intervalo para un siguiente bin del flujo de bins basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y un valor del bin respectivo; determinar uno o más parámetros de máquina de estados finitos (FSM) para el siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, en donde determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada; y determinar un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo, en donde el valor de desplazamiento es igual a un valor en el intervalo para un último bin del flujo de bins; y emitir un flujo de bits que comprende el valor de desplazamiento.
En otro ejemplo, esta divulgación describe un aparato para descodificar datos de vídeo, comprendiendo el aparato: uno o más medios de almacenamiento configurados para almacenar datos de vídeo; y uno o más procesadores configurados para: determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits, en donde los uno o más procesadores están configurados de tal manera que, como parte de aplicar la descodificación aritmética binaria, los uno o más procesadores: generan un flujo de bins, en donde, como parte de generar el flujo de bins, los uno o más procesadores: para al menos un bin respectivo del flujo de bins: determinan un valor del bin respectivo basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento; determinan uno o más parámetros de máquina de estados finitos (FSM) para un siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, siguiendo el siguiente bin del flujo de bins al bin respectivo en el flujo de bins, en donde determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada; y determinan un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo; y desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado; y reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado.
En otro ejemplo, esta divulgación describe un aparato para codificar datos de vídeo, comprendiendo el aparato: uno o más medios de almacenamiento configurados para almacenar datos de vídeo; y uno o más circuitos de procesamiento acoplados a los uno o más medios de almacenamiento, los uno o más circuitos de procesamiento configurados para: generar un elemento de sintaxis basándose en los datos de vídeo; determinar un valor de desplazamiento al menos en parte aplicando una codificación aritmética binaria al elemento de sintaxis, en donde los uno o más procesadores están configurados de tal manera que, como parte de aplicar la codificación aritmética binaria, los uno o más procesadores generan un flujo de bins al menos en parte al: binarizar el elemento de sintaxis; y para al menos un bin respectivo del flujo de bins: determinar un intervalo para un siguiente bin del flujo de bins basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y un valor del bin respectivo; determinar uno o más parámetros de máquina de estados finitos (FSM) para el siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, en donde determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada; y determinar un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo, en donde el valor de desplazamiento es igual a un valor en el intervalo para un último bin del flujo de bins; y emitir un flujo de bits que comprende el valor de desplazamiento.
En otro ejemplo, esta divulgación describe un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, hacen que uno o más procesadores: determinen un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits, en donde, como parte de hacer que los uno o más procesadores apliquen la descodificación aritmética binaria, la ejecución de las instrucciones hace que los uno o más procesadores: generen un flujo de bins, en donde, como parte de hacer que los uno o más procesadores generen el flujo de bins, la ejecución de las instrucciones hace que los uno o más procesadores: para al menos un bin respectivo del flujo de bins: determinen un valor del bin respectivo basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento; determinen uno o más parámetros de máquina de estados finitos (FSM) para un siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, siguiendo el siguiente bin del flujo de bins al bin respectivo en el flujo de bins, en donde determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada; y determinen un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo, y desbinaricen el flujo de bins para formar el elemento de sintaxis descodificado; y reconstruyan una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado.
En otro ejemplo, esta divulgación describe un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, hacen que uno o más procesadores: generen un elemento de sintaxis basándose en datos de vídeo; determinen un valor de desplazamiento al menos en parte aplicando una codificación aritmética binaria al elemento de sintaxis, en donde, como parte de hacer que los uno o más procesadores apliquen la codificación aritmética binaria, la ejecución de las instrucciones hace que los uno o más procesadores generen un flujo de bins al menos en parte haciendo que los uno o más procesadores: binaricen el elemento de sintaxis; y para al menos un bin respectivo del flujo de bins: determinen un intervalo para un siguiente bin del flujo de bins basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y un valor del bin respectivo; determinen uno o más parámetros de máquina de estados finitos (FSM) para el siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, en donde determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada; y determinen un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo, en donde el valor de desplazamiento es igual a un valor en el intervalo para un último bin del flujo de bins; y emitan un flujo de bits que comprende el valor de desplazamiento.
Los detalles de uno o más aspectos de la divulgación se exponen en los dibujos adjuntos y en la descripción a continuación. Otras características, objetos y ventajas de las técnicas descritas en esta divulgación serán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
Breve descripción de los dibujos
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y de descodificación de vídeo ilustrativo que puede usar una o más técnicas descritas en esta divulgación.
La figura 2 es un diagrama de bloques que ilustra un codificador de vídeo ilustrativo que puede implementar una o más técnicas descritas en esta divulgación.
La figura 3 es un diagrama de bloques que ilustra un descodificador de vídeo ilustrativo que puede implementar una o más técnicas descritas en esta divulgación.
La figura 4 es un diagrama de bloques de una máquina de estados finitos general ilustrativa.
La figura 5 es un diagrama de bloques ilustrativo para la codificación aritmética binaria basada en contexto que usa muchas máquinas de estados finitos (FSM) para la estimación de probabilidad de bin.
La figura 6 es un diagrama de bloques ilustrativo para la descodificación aritmética binaria basada en contexto que usa muchas FSM para la estimación de probabilidad de bin.
La figura 7 es un diagrama de bloques ilustrativo para la codificación aritmética binaria basada en contexto considerando un único contexto seleccionado.
La figura 8 es un diagrama de bloques ilustrativo para la descodificación aritmética binaria basada en contexto considerando un único contexto seleccionado.
La figura 9 es un diagrama de bloques ilustrativo para la codificación aritmética basada en contexto, de acuerdo con uno o más aspectos de esta divulgación.
La figura 10 es un diagrama de bloques ilustrativo para la descodificación aritmética basada en contexto, de acuerdo con uno o más aspectos de esta divulgación.
La figura 11A es un diagrama de bloques que muestra que los parámetros de FSM se pueden derivar de bloques vecinos (por ejemplo, CTU, CU) en la misma imagen siguiendo un orden de exploración.
La figura 11B es un diagrama de bloques que muestra que los parámetros de FSM usados en bloques de una imagen actual se pueden determinar basándose en información asociada con bloques en una imagen codificada previamente. La figura 12 es un diagrama de bloques de un filtro de estimación de probabilidad ilustrativo.
La figura 13 es un diagrama de bloques de otro filtro de estimación de probabilidad ilustrativo.
La figura 14 ilustra un ejemplo de un filtro de estimación de probabilidad que usa filtros en cascada.
La figura 15 es un diagrama de bloques que ilustra una unidad de codificación por entropía ilustrativa.
La figura 16 es un diagrama de bloques que ilustra una unidad de descodificación por entropía ilustrativa.
La figura 17 es un diagrama de flujo que ilustra un funcionamiento ilustrativo de un codificador de vídeo, de acuerdo con una o más técnicas de esta divulgación.
La figura 18 es un diagrama de flujo que ilustra un funcionamiento ilustrativo de un descodificador de vídeo, de acuerdo con una o más técnicas de esta divulgación.
Descripción detallada
La codificación aritmética se usa frecuentemente en la codificación/descodificación de vídeo para proporcionar compresión de datos. En un proceso de codificación aritmética típico, un codificador de vídeo selecciona un contexto de codificación que está asociado con estimaciones de probabilidad iniciales para un primer símbolo binario y un segundo símbolo binario. El codificador de vídeo usa las estimaciones de probabilidad y un valor de un bin de un flujo de bins para determinar un valor de desplazamiento. Adicionalmente, el codificador de vídeo puede usar una función de actualización de estado basándose en el valor de bin para actualizar las estimaciones de probabilidad. El codificador de vídeo puede usar entonces las estimaciones de probabilidad actualizadas y un siguiente valor de bin del flujo de bins para actualizar el valor de desplazamiento. Este proceso de actualizar las estimaciones de probabilidad y el valor de desplazamiento puede continuar hasta que el codificador de vídeo haya alcanzado un extremo del flujo de bins.
A la inversa, un descodificador de vídeo puede recibir un flujo de bytes que incluye el valor de desplazamiento. El descodificador de vídeo selecciona el mismo contexto de codificación seleccionado por el codificador de vídeo y usa las estimaciones de probabilidad especificadas por el contexto de codificación para determinar un par de subintervalos, cada uno de los cuales corresponde a un valor de bin diferente. Si el valor de desplazamiento está en un primer subintervalo, el descodificador de vídeo descodifica un primer valor de bin. Si el valor de desplazamiento está en un segundo subintervalo, el descodificador de vídeo descodifica un segundo valor de bin. El descodificador de vídeo puede usar entonces la función de actualización de estado para actualizar las estimaciones de probabilidad basándose en el valor de bin descodificado. El descodificador de vídeo usa las estimaciones de probabilidad actualizadas para determinar los subintervalos de nuevo, siendo un extremo inferior del subintervalo inferior actualizado igual al extremo inferior del subintervalo inferior previo si el valor de desplazamiento estaba en el subintervalo inferior previo e igual al extremo inferior del subintervalo superior previo si el desplazamiento estaba en el subintervalo superior previo. El descodificador de vídeo puede continuar este proceso hasta que el descodificador de vídeo haya alcanzado un extremo del flujo de bytes. El descodificador de vídeo puede desbinarizar el flujo de bins resultante para determinar valores de uno o más elementos de sintaxis.
En los procesos de codificación aritmética y de descodificación aritmética descritos anteriormente, el codificador de vídeo y el descodificador de vídeo actualizan las estimaciones de probabilidad usando una función de actualización de estado. El codificador de vídeo y el descodificador de vídeo usan la misma función de actualización de estado para todos los contextos de codificación y cuando se codifican todos los tipos de elementos de sintaxis. Sin embargo, como se describe en esta divulgación, el uso de diferentes funciones de actualización de estado en diferentes situaciones puede dar como resultado una eficiencia de codificación mejorada y reducciones de tasa de bits. Esto, a su vez, puede dar como resultado una calidad de imagen mejorada y/o un consumo de ancho de banda reducido.
En un ejemplo de esta divulgación, un codificador de vídeo genera un elemento de sintaxis basándose en los datos de vídeo y determina un valor de desplazamiento aplicando una codificación aritmética binaria al elemento de sintaxis. Como parte de aplicar la codificación aritmética binaria, el codificador de vídeo genera un flujo de bins binarizando el elemento de sintaxis. Adicionalmente, para al menos un bin respectivo del flujo de bins, el codificador de vídeo determina, basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y un valor del bin respectivo, un intervalo para un siguiente bin del flujo de bins. El codificador de vídeo también determina uno o más parámetros de máquina de estados finitos (FSM) para el siguiente bin del flujo de bins. Los uno o más parámetros de FSM para el siguiente bin controlan cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo. Adicionalmente, el codificador de vídeo puede determinar un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada. La función de actualización de estado parametrizada toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo. En este ejemplo, el valor de desplazamiento es igual a un valor en el intervalo para un último bin del flujo de bins. El codificador de vídeo puede emitir un flujo de bits que comprende el valor de desplazamiento.
En otro ejemplo de esta divulgación, un descodificador de vídeo puede determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits. Como parte de aplicar la descodificación aritmética binaria, el descodificador de vídeo puede generar un flujo de bins. Como parte de generar el flujo de bins, para al menos un bin respectivo del flujo de bins, el descodificador de vídeo puede determinar un valor del bin respectivo. El descodificador de vídeo puede realizar esta determinación basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento. Además, el descodificador de vídeo puede determinar uno o más parámetros de FSM para un siguiente bin del flujo de bins. Los uno o más parámetros de FSM para el siguiente bin controlan cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo. El siguiente bin del flujo de bins sigue al bin respectivo en el flujo de bins. Además, el descodificador de vídeo determina un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada. La función de actualización de estado parametrizada toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo. El descodificador de vídeo puede desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado. Además, el descodificador de vídeo puede reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado.
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y de descodificación de vídeo 10 ilustrativo que puede utilizar técnicas de esta divulgación. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados a descodificar en un tiempo posterior por un dispositivo de destino 14. El dispositivo de origen 12 proporciona los datos de vídeo codificados al dispositivo de destino 14 a través de un medio legible por ordenador 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, que incluyen ordenadores de sobremesa, ordenadores portátiles (es decir, portátiles), ordenadores de tipo tableta, descodificadores de salón, microteléfonos telefónicos tales como los así denominados teléfonos "inteligentes", ordenadores de tipo tableta, televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de envío por flujo continuo de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 se equipan para una comunicación inalámbrica. Por lo tanto, el dispositivo de origen 12 y el dispositivo de destino 14 pueden ser dispositivos de comunicación inalámbrica. Las técnicas descritas en esta divulgación se pueden aplicar a aplicaciones inalámbricas y/o cableadas. El dispositivo de origen 12 es un dispositivo de codificación de vídeo ilustrativo (es decir, un dispositivo para codificar datos de vídeo). El dispositivo de destino 14 es un dispositivo de descodificación de vídeo ilustrativo (es decir, un dispositivo para descodificar datos de vídeo).
El sistema 10 ilustrado de la figura 1 es simplemente un ejemplo. Las técnicas para procesar datos de vídeo pueden ser realizadas por cualquier dispositivo de codificación y/o de descodificación de vídeo digital. En algunos ejemplos, las técnicas pueden ser realizadas por un codificador/descodificador de vídeo, normalmente denominado "CÓDEC". El dispositivo de origen 12 y el dispositivo de destino 14 son ejemplos de tales dispositivos de codificación en los que el dispositivo de origen 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, el dispositivo de origen 12 y el dispositivo de destino 14 funcionan de una manera sustancialmente simétrica de tal manera que cada uno del dispositivo de origen 12 y el dispositivo de destino 14 incluye componentes de codificación y de descodificación de vídeo. Por lo tanto, el sistema 10 puede soportar transmisión unidireccional o bidireccional entre el dispositivo de origen 12 y el dispositivo de destino 14, por ejemplo, para envío por flujo continuo de vídeo, reproducción de vídeo, difusión de vídeo o telefonía de vídeo.
En el ejemplo de la figura 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, unos medios de almacenamiento 19 configurados para almacenar datos de vídeo, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 26, unos medios de almacenamiento 28 configurados para almacenar datos de vídeo codificados, un descodificador de vídeo 30 y un dispositivo de visualización 32. En otros ejemplos, el dispositivo de origen 12 y el dispositivo de destino 14 incluyen otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde una fuente de vídeo externa, tal como una cámara externa. Análogamente, el dispositivo de destino 14 puede interconectar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
La fuente de vídeo 18 es una fuente de datos de vídeo. Los datos de vídeo pueden comprender una serie de imágenes. La fuente de vídeo 18 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo previamente capturado y/o una interfaz de alimentación de vídeo para recibir datos de vídeo desde un proveedor de contenido de vídeo. En algunos ejemplos, la fuente de vídeo 18 genera datos de vídeo basados en gráficos de ordenador, o una combinación de vídeo en vivo, vídeo archivado y vídeo generado por ordenador. Los medios de almacenamiento 19 se pueden configurar para almacenar los datos de vídeo. En cada caso, el vídeo capturado, precapturado o generado por ordenador puede ser codificado por el codificador de vídeo 20.
La interfaz de salida 22 puede emitir la información de vídeo codificada a un medio legible por ordenador 16. La interfaz de salida 22 puede comprender diversos tipos de componentes o dispositivos. Por ejemplo, la interfaz de salida 22 puede comprender un transmisor inalámbrico, un módem, un componente de interconexión de redes cableado (por ejemplo, una tarjeta de Ethernet) u otro componente físico. En los ejemplos en los que la interfaz de salida 22 comprende un transmisor inalámbrico, la interfaz de salida 22 se puede configurar para transmitir datos, tales como datos de vídeo codificados, modulados de acuerdo con una norma de comunicación celular, tal como 4G, LTE de 4G, LTE Avanzada, 5G y similares. En algunos ejemplos en los que la interfaz de salida 22 comprende un transmisor inalámbrico, la interfaz de salida 22 se puede configurar para transmitir datos, tales como datos de vídeo codificados, modulados de acuerdo con otras normas inalámbricas, tales como una especificación de IEEE 802.11, una especificación de IEEE 802.15 (por ejemplo, ZigBee™), una norma de Bluetooth™ y similares. En algunos ejemplos, la circuitería de la interfaz de salida 22 está integrada en la circuitería del codificador de vídeo 20 y/u otros componentes del dispositivo de origen 12. Por ejemplo, el codificador de vídeo 20 y la interfaz de salida 22 pueden ser partes de un sistema en un chip (SoC). El SoC también puede incluir otros componentes, tales como un microprocesador de propósito general, una unidad de procesamiento de gráficos, y así sucesivamente.
El dispositivo de destino 14 puede recibir datos de vídeo codificados a través de un medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo que pueda mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En algunos ejemplos, el medio legible por ordenador 16 comprende un medio de comunicación para posibilitar que el dispositivo de origen 12 transmita datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14. El dispositivo de destino 14 puede comprender uno o más medios de almacenamiento de datos configurados para almacenar datos de vídeo codificados y datos de vídeo descodificados.
En algunos ejemplos, la interfaz de salida 22 puede emitir datos, tales como datos de vídeo codificados, a un dispositivo intermedio, tal como un dispositivo de almacenamiento. De manera similar, la interfaz de entrada 26 del dispositivo de destino 14 puede recibir datos codificados desde el dispositivo intermedio. El dispositivo intermedio puede incluir cualquiera de una diversidad de medios de almacenamiento de datos distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En algunos ejemplos, el dispositivo intermedio corresponde a un servidor de archivos. Los servidores de archivos ilustrativos incluyen servidores web, servidores de FTP, dispositivos de almacenamiento conectados a red (NAS) o unidades de disco locales.
El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos convencional, incluyendo una conexión a Internet. Esta puede incluir, un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.), o una combinación de ambos que es adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados del dispositivo de almacenamiento puede ser una transmisión de envío por flujo continuo, una transmisión de descarga o una combinación de ambas.
El medio legible por ordenador 16 puede incluir medios transitorios, tales como una transmisión de difusión inalámbrica o de red cableada o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, unidad flash, disco compacto, disco de vídeo digital, disco Blu-ray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, a través de una transmisión de red. De manera similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de estampado de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, el medio legible por ordenador 16 puede entenderse que incluye uno o más medios legibles por ordenador de diversas formas en diversos ejemplos.
La interfaz de entrada 26 del dispositivo de destino 14 recibe datos desde el medio legible por ordenador 16. La interfaz de entrada 26 puede comprender diversos tipos de componentes o dispositivos. Por ejemplo, la interfaz de entrada 26 puede comprender un receptor inalámbrico, un módem, un componente de interconexión de redes cableado (por ejemplo, una tarjeta de Ethernet) u otro componente físico. En los ejemplos en los que la interfaz de entrada 26 comprende un receptor inalámbrico, la interfaz de entrada 26 se puede configurar para recibir datos, tales como el flujo de bits, modulados de acuerdo con una norma de comunicación celular, tal como 4G, LTE de 4G, LTE Avanzada, 5G y similares. En algunos ejemplos en los que la interfaz de entrada 26 comprende un receptor inalámbrico, la interfaz de entrada 26 se puede configurar para recibir datos, tales como el flujo de bits, modulados de acuerdo con otras normas inalámbricas, tales como una especificación de IEEE 802.11, una especificación de IEEE 802.15 (por ejemplo, ZigBee™), una norma de Bluetooth™ y similares. En algunos ejemplos, la circuitería de la interfaz de entrada 26 se puede integrar en la circuitería del descodificador de vídeo 30 y/u otros componentes del dispositivo de destino 14. Por ejemplo, el descodificador de vídeo 30 y la interfaz de entrada 26 pueden ser partes de un SoC. El SoC también puede incluir otros componentes, tales como un microprocesador de propósito general, una unidad de procesamiento de gráficos, y así sucesivamente.
Los medios de almacenamiento 28 se pueden configurar para almacenar datos de vídeo codificados, tales como datos de vídeo codificados (por ejemplo, un flujo de bits) recibidos por la interfaz de entrada 26. El dispositivo de visualización 32 visualiza los datos de vídeo descodificados a un usuario. El dispositivo de visualización 32 puede comprender cualquiera de una diversidad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), un visualizador de cristal líquido (LCD), un visualizador de plasma, un visualizador de diodos de emisión de luz orgánicos (OLED) u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y el descodificador de vídeo 30 se pueden implementar, cada uno, como cualquiera de una diversidad de circuitería adecuada, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador combinado (CÓDEC) en un dispositivo respectivo.
En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 codifican y descodifican datos de vídeo de acuerdo con una especificación o norma de codificación/descodificación de vídeo. Por ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar y descodificar datos de vídeo de acuerdo con las normas ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus extensiones de codificación/descodificación de vídeo ajustable a escala (SVC) y codificación/descodificación de vídeo de múltiples vistas (MVC), u otra norma o especificación de codificación/descodificación de vídeo. En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 codifican y descodifican datos de vídeo de acuerdo con la codificación/descodificación de vídeo de alta eficiencia (HEVC), que se conoce como ITU-T H.265, sus extensiones de rango y de codificación de contenido de pantalla, su extensión de codificación/descodificación de vídeo de 3D (3D-HEVC), su extensión de múltiples vistas (MV-HEVC) o su extensión ajustable a escala (SHVC).
Esta divulgación se puede referir generalmente a "señalizar' cierta información, tal como elementos de sintaxis. El término "señalización" se puede referir generalmente a la comunicación de elementos de sintaxis y/u otros datos usados para descodificar los datos de vídeo codificados. Tal comunicación puede tener lugar en tiempo real o casi real. Como alternativa, tal comunicación puede tener lugar durante un lapso de tiempo, tal como podría tener lugar cuando se almacenan elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits en el momento de la codificación, que pueden ser recuperados entonces por un dispositivo de descodificación en cualquier momento después de almacenarse en este medio.
En HEVC y otras especificaciones de codificación/descodificación de vídeo, los datos de vídeo incluyen una serie de imágenes. Las imágenes también se pueden denominar "tramas". Una imagen puede incluir una o más matrices de muestras. Cada matriz de muestras respectiva de una imagen puede comprender una matriz de muestras para una componente de color respectiva. Una imagen puede incluir tres matrices de muestras, denominadas Sl, Scb y Scr. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luma. Scb es una matriz bidimensional de muestras de croma Cb. Scr es una matriz bidimensional de muestras de croma Cr. En otros casos, una imagen puede ser monocroma y solo puede incluir una serie de muestras de luma.
Como parte de codificar datos de vídeo, el codificador de vídeo 20 puede codificar imágenes de los datos de vídeo. En otras palabras, el codificador de vídeo 20 puede generar representaciones codificadas de las imágenes de los datos de vídeo. Una representación codificada de una imagen se puede denominar en el presente documento "imagen codificada".
Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede codificar bloques de la imagen. El codificador de vídeo 20 puede incluir, en un flujo de bits, una representación codificada del bloque de vídeo. En algunos ejemplos, para codificar un bloque de la imagen, el codificador de vídeo 20 realiza una intrapredicción o una interpredicción para generar uno o más bloques predictivos. Adicionalmente, el codificador de vídeo 20 puede generar datos residuales para el bloque. El bloque residual comprende muestras residuales. Cada muestra residual puede indicar una diferencia entre una muestra de uno de los bloques predictivos generados y una muestra correspondiente del bloque. El codificador de vídeo 20 puede aplicar una transformada a bloques de muestras residuales para generar coeficientes de transformada. Además, el codificador de vídeo 20 puede cuantificar los coeficientes de transformada. En algunos ejemplos, el codificador de vídeo 20 puede generar uno o más elementos de sintaxis para representar un coeficiente de transformada. El codificador de vídeo 20 puede codificar por entropía uno o más de los elementos de sintaxis que representan el coeficiente de transformada.
Más específicamente, cuando se codifican datos de vídeo de acuerdo con HEVC u otras especificaciones de codificación/descodificación de vídeo, para generar una representación codificada de una imagen, el codificador de vídeo 20 puede subdividir cada matriz de muestras de la imagen en bloques de árbol de codificación (CTB) y codificar los CTB. Un CTB puede ser un bloque N x N de muestras en una matriz de muestras de una imagen. En el perfil principal de HEVC, el tamaño de un CTB puede variar de 16 x 16 a 64 x 64, aunque técnicamente se pueden soportar tamaños de CTB de 8 x 8.
Una unidad de árbol de codificación (CTU) de una imagen puede comprender uno o más CTB y puede comprender estructuras de sintaxis usadas para codificar las muestras de los uno o más CTB. Por ejemplo, cada CTU puede comprender un CTB de muestras de luma, dos CTB correspondientes de muestras de croma y estructuras de sintaxis usadas para codificar las muestras de los CTB. En imágenes monocromas o imágenes que tienen tres planos de color separados, una CTU puede comprender un único CTB y estructuras de sintaxis usadas para codificar las muestras del CTB. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación más grande" (LCU). En esta divulgación, una "estructura de sintaxis" se puede definir como cero o más elementos de sintaxis presentes juntos en un flujo de bits en un orden especificado. En algunos códecs, una imagen codificada es una representación codificada que contiene todas las CTU de la imagen.
Para codificar una CTU de una imagen, el codificador de vídeo 20 puede subdividir los CTB de la CTU en uno o más bloques de codificación. Un bloque de codificación es un bloque N x N de muestras. En algunos códecs, para codificar una CTU de una imagen, el codificador de vídeo 20 puede realizar de forma recursiva una subdivisión de árbol cuádruple sobre los bloques de árbol de codificación de una CTU para subdividir los CTB en bloques de codificación, de ahí el nombre de "unidades de árbol de codificación". Una unidad de codificación (CU) puede comprender uno o más bloques de codificación y estructuras de sintaxis usadas para codificar muestras de los uno o más bloques de codificación. Por ejemplo, una CU puede comprender un bloque de codificación de muestras de luma y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luma, una matriz de muestras Cb y una matriz de muestras Cr, y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. En imágenes monocromas o imágenes que tienen tres planos de color separados, una CU puede comprender un único bloque de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de codificación.
Además, el codificador de vídeo 20 puede codificar las CU de una imagen de los datos de vídeo. En algunos códecs, como parte de codificar una CU, el codificador de vídeo 20 puede subdividir un bloque de codificación de la CU en uno o más bloques de predicción. Un bloque de predicción es un bloque de muestras rectangular (es decir, cuadrado o no cuadrado) sobre el que se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede comprender uno o más bloques de predicción de una CU y estructuras de sintaxis usadas para predecir los uno o más bloques de predicción. Por ejemplo, una PU puede comprender un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma y estructuras de sintaxis usadas para predecir los bloques de predicción. En imágenes monocromas o imágenes que tienen tres planos de color separados, una PU puede comprender un único bloque de predicción y estructuras de sintaxis usadas para predecir el bloque de predicción.
El codificador de vídeo 20 puede generar un bloque predictivo (por ejemplo, un bloque predictivo de luma, Cb y Cr) para un bloque de predicción (por ejemplo, un bloque de predicción de luma, Cb y Cr) de una PU de una CU. El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar un bloque predictivo. Si el codificador de vídeo 20 usa intrapredicción para generar un bloque predictivo, el codificador de vídeo 20 puede generar el bloque predictivo basándose en muestras descodificadas de la imagen que incluye la CU. Si el codificador de vídeo 20 usa la interpredicción para generar un bloque predictivo de una PU de una imagen actual, el codificador de vídeo 20 puede generar el bloque predictivo de la PU basándose en muestras descodificadas de una imagen de referencia (es decir, una imagen que no sea la imagen actual). En HEVC, el codificador de vídeo 20 genera una estructura de sintaxis de "unidad_de_predicción" dentro de una estructura de sintaxis de "unidad_de_codificación" para las PU intrapredichas, pero no genera una estructura de sintaxis de "unidad de predicción" dentro de una estructura de sintaxis de "unidad de codificación" para las PU intrapredichas. Más bien, en HEVC, los elementos de sintaxis relacionados con las PU intrapredichas se incluyen directamente en la estructura de sintaxis de "unidad de codificación".
El codificador de vídeo 20 puede generar uno o más bloques residuales para la CU. Por ejemplo, el codificador de vídeo 20 puede generar un bloque residual de luma para la CU. Cada muestra en el bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques de luma predictivos de la CU y una muestra correspondiente en el bloque de codificación de luma original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual Cb para la CU. Cada muestra en el bloque residual Cb de una CU puede indicar una diferencia entre una muestra Cb en uno de los bloques Cb predictivos de la CU y una muestra correspondiente en el bloque de codificación Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual Cr para la CU. Cada muestra en el bloque residual Cr de la CU indica una diferencia entre una muestra Cr en uno de los bloques Cr predictivos de la CU y una muestra correspondiente en el bloque de codificación Cr original de la CU.
Además, el codificador de vídeo 20 puede descomponer los bloques residuales de una CU en uno o más bloques de transformada. Por ejemplo, el codificador de vídeo 20 puede usar una subdivisión de árbol cuádruple para descomponer los bloques residuales de una CU en uno o más bloques de transformada. Un bloque de transformada es un bloque de muestras rectangular (por ejemplo, cuadrado o no cuadrado) sobre el que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede comprender uno o más bloques de transformada. Por ejemplo, una TU puede comprender un bloque de transformada de muestras de luma, dos bloques de transformada correspondientes de muestras de croma y estructuras de sintaxis usadas para transformar las muestras de bloque de transformada. Por lo tanto, cada TU de una CU puede tener un bloque de transformada de luma, un bloque de transformada Cb y un bloque de transformada Cr. El bloque de transformada de luma de la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada Cb puede ser un subbloque del bloque residual Cb de la CU. El bloque de transformada Cr puede ser un subbloque del bloque residual Cr de la CU. En imágenes monocromas o imágenes que tienen tres planos de color separados, una TU puede comprender un único bloque de transformada y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada.
El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de una TU para generar un bloque de coeficientes para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. En algunos ejemplos, las una o más transformadas convierten el bloque de transformada de un dominio de píxeles a un dominio de frecuencia. Por lo tanto, en tales ejemplos, un coeficiente de transformada puede ser una cantidad escalar que se considera que está en un dominio de frecuencia. Un nivel de coeficiente de transformada es una cantidad entera que representa un valor asociado con un índice de frecuencia bidimensional particular en un proceso de descodificación antes de ajustar a escala para el cálculo de un valor de coeficiente de transformada.
En algunos ejemplos, el codificador de vídeo 20 omite la aplicación de las transformadas al bloque de transformada. En tales ejemplos, el codificador de vídeo 20 puede tratar valores de muestra residuales de la misma manera que coeficientes de transformada. Por lo tanto, en los ejemplos en los que el codificador de vídeo 20 omite la aplicación de las transformadas, el siguiente análisis de los coeficientes de transformada y los bloques de coeficientes puede ser aplicable a los bloques de transformada de muestras residuales.
Después de generar un bloque de coeficientes, el codificador de vídeo 20 puede cuantificar el bloque de coeficientes para reducir posiblemente la cantidad de datos usados para representar el bloque de coeficientes, proporcionando potencialmente una compresión adicional. La cuantificación generalmente se refiere a un proceso en el que un intervalo de valores se comprime a un único valor. Por ejemplo, la cuantificación se puede realizar dividiendo un valor por una constante y, entonces, redondeando al número entero más cercano. Para cuantificar el bloque de coeficientes, el codificador de vídeo 20 puede cuantificar coeficientes de transformada del bloque de coeficientes. La cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes de transformada. Por ejemplo, un coeficiente de transformada de n bits se puede redondear hacia abajo a un coeficiente de transformada de m bits durante una cuantificación, en donde n es mayor que m. En algunos ejemplos, el codificador de vídeo 20 omite la cuantificación.
El codificador de vídeo 20 puede generar elementos de sintaxis que indican algunos o todos los coeficientes de transformada potencialmente cuantificados. El codificador de vídeo 20 puede codificar por entropía uno o más de los elementos de sintaxis que indican un coeficiente de transformada cuantificado. Por ejemplo, el codificador de vídeo 20 puede realizar una codificación aritmética binaria adaptativa según contexto (CABAC) sobre los elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por lo tanto, un bloque codificado (por ejemplo, una CU codificada) puede incluir los elementos de sintaxis codificados por entropía que indican los coeficientes de transformada cuantificados.
El codificador de vídeo 20 puede emitir un flujo de bits que incluye datos de vídeo codificados. En otras palabras, el codificador de vídeo 20 puede emitir un flujo de bits que incluye una representación codificada de datos de vídeo. La representación codificada de los datos de vídeo puede incluir una representación codificada de imágenes de los datos de vídeo. Por ejemplo, el flujo de bits puede comprender una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo y datos asociados. En algunos ejemplos, una representación de una imagen codificada puede incluir representaciones codificadas de bloques de la imagen.
El descodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Como se ha indicado anteriormente, el flujo de bits puede comprender una representación codificada de datos de vídeo. El descodificador de vídeo 30 puede descodificar el flujo de bits para reconstruir imágenes de los datos de vídeo. Como parte de descodificar el flujo de bits, el descodificador de vídeo 30 puede obtener elementos de sintaxis a partir del flujo de bits. El descodificador de vídeo 30 puede reconstruir imágenes de los datos de vídeo basándose, al menos en parte, en los elementos de sintaxis obtenidos del flujo de bits. El proceso para reconstruir imágenes de los datos de vídeo puede ser generalmente recíproco al proceso realizado por el codificador de vídeo 20 para codificar las imágenes.
Por ejemplo, como parte de descodificar una imagen de los datos de vídeo, el descodificador de vídeo 30 puede usar interpredicción o intrapredicción para generar bloques predictivos. Adicionalmente, el descodificador de vídeo 30 puede determinar los coeficientes de transformada basándose en elementos de sintaxis obtenidos del flujo de bits. En algunos ejemplos, el descodificador de vídeo 30 cuantifica inversamente los coeficientes de transformada determinados. Una cuantificación inversa correlaciona un valor cuantificado con un valor reconstruido. Por ejemplo, el descodificador de vídeo 30 puede cuantificar inversamente un valor determinando el valor multiplicado por un tamaño de escalón de cuantificación. Además, el descodificador de vídeo 30 puede aplicar una transformada inversa sobre los coeficientes de transformada determinados para determinar valores de las muestras residuales. El descodificador de vídeo 30 puede reconstruir un bloque de la imagen basándose en las muestras residuales y muestras correspondientes de los bloques predictivos generados. Por ejemplo, el descodificador de vídeo 30 puede añadir muestras residuales a muestras correspondientes de los bloques predictivos generados para determinar muestras reconstruidas del bloque.
Más específicamente, en HEVC y otras especificaciones de codificación/descodificación de vídeo, el descodificador de vídeo 30 puede usar interpredicción o intrapredicción para generar uno o más bloques predictivos para cada PU de una CU actual. Además, el descodificador de vídeo 30 puede cuantificar inversamente los bloques de coeficientes de las TU de la CU actual. El descodificador de vídeo 30 puede realizar transformadas inversas sobre los bloques de coeficientes para reconstruir bloques de transformada de las TU de la CU actual. El descodificador de vídeo 30 puede reconstruir un bloque de codificación de la CU actual basándose en muestras de los bloques predictivos de las PU de la CU actual y muestras residuales de los bloques de transformada de las TU de la CU actual. En algunos ejemplos, el descodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a muestras descodificadas correspondientes de los bloques de transformada de las TU de la CU actual. Reconstruyendo los bloques de codificación para cada CU de una imagen, el descodificador de vídeo 30 puede reconstruir la imagen.
Un sector de una imagen puede incluir un número entero de bloques de la imagen. Por ejemplo, en HEVC y otras especificaciones de codificación/descodificación de vídeo, un sector de una imagen puede incluir un número entero de CTU de la imagen. Las CTU de un sector se pueden ordenar consecutivamente en un orden de exploración, como un orden de exploración por filas. En HEVC, un sector se define como un número entero de CTU contenidas en un segmento de sector independiente y todos los segmentos de sector dependientes posteriores (de haber alguno) que preceden al siguiente segmento de sector independiente (de haber alguno) dentro de la misma unidad de acceso. Además, en HEVC, un segmento de sector se define como un número entero de CTU ordenadas consecutivamente en la exploración de losas y contenidas en una única unidad de NAL. Una exploración de losas es una ordenación secuencial específica de c Tb que subdividen una imagen en donde los CTB se ordenan consecutivamente en una exploración por filas de CTB en una losa, mientras que las losas en una imagen se ordenan consecutivamente en una exploración por filas de las losas de la imagen. Una losa es una región rectangular de CTB dentro de una columna de losas particular y una fila de losas particular en una imagen.
Como se ha mencionado anteriormente, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden aplicar una codificación y descodificación CABAC a elementos de sintaxis como parte de un esquema de codificación y de compresión de vídeo. Para aplicar una codificación CABAC a un elemento de sintaxis, el codificador de vídeo 20 puede binarizar el elemento de sintaxis para formar una serie de uno o más bits, que se denominan "bins". Además, el codificador de vídeo 20 puede identificar un contexto de codificación. El contexto de codificación puede identificar las probabilidades iniciales de que los bins tengan valores particulares. Por ejemplo, un contexto de codificación puede indicar una probabilidad de 0,7 de codificar un bin de valor 0 y una probabilidad de 0,3 de codificar un bin de valor 1. Después de identificar el contexto de codificación, el codificador de vídeo 20 puede dividir un intervalo en un subintervalo inferior y un subintervalo superior. Uno de los subintervalos puede estar asociado con el valor 0 y el otro subintervalo puede estar asociado con el valor 1. Las anchuras de los subintervalos pueden ser proporcionales a las probabilidades indicadas para los valores asociados por el contexto de codificación identificado. Si un bin del elemento de sintaxis tiene el valor asociado con el subintervalo inferior, el valor codificado puede ser igual al límite inferior del subintervalo inferior. Si el mismo bin del elemento de sintaxis tiene el valor asociado con el subintervalo superior, el valor codificado puede ser igual al límite inferior del subintervalo superior. Para codificar el siguiente bin del elemento de sintaxis, el codificador de vídeo 20 puede repetir estas etapas, siendo el intervalo el subintervalo asociado con el valor del bit codificado. Cuando el codificador de vídeo 20 repite estas etapas para el siguiente bin, el codificador de vídeo 20 puede usar probabilidades modificadas basándose en las probabilidades indicadas por el contexto de codificación identificado y los valores reales de bins codificados.
Cuando el descodificador de vídeo 30 realiza una descodificación CABAC sobre un elemento de sintaxis, el descodificador de vídeo 30 puede identificar un contexto de codificación. El descodificador de vídeo 30 puede dividir entonces un intervalo en un subintervalo inferior y un subintervalo superior. Uno de los subintervalos puede estar asociado con el valor 0 y el otro subintervalo puede estar asociado con el valor 1. Las anchuras de los subintervalos pueden ser proporcionales a las probabilidades indicadas para los valores asociados por el contexto de codificación identificado. Si el valor codificado está dentro del subintervalo inferior, el descodificador de vídeo 30 puede descodificar un bin que tiene el valor asociado con el subintervalo inferior. Si el valor codificado está dentro del subintervalo superior, el descodificador de vídeo 30 puede descodificar un bin que tiene el valor asociado con el subintervalo superior. Para descodificar un siguiente bin del elemento de sintaxis, el descodificador de vídeo 30 puede repetir estas etapas, siendo el intervalo el subintervalo que contiene el valor codificado. Cuando el descodificador de vídeo 30 repite estas etapas para el siguiente bin, el descodificador de vídeo 30 puede usar probabilidades modificadas basándose en las probabilidades indicadas por el contexto de codificación identificado y los bins descodificados. El descodificador de vídeo 30 puede desbinarizar entonces los bins para recuperar el elemento de sintaxis.
El codificador de vídeo 20 puede codificar algunos bins usando una codificación CABAC de derivación. Puede resultar computacionalmente menos costoso realizar una codificación CABAC de derivación sobre un bin que realizar una codificación CABAC ordinaria sobre el bin. Además, realizar una codificación CABAC de derivación puede permitir un grado más alto de paralelización y de caudal. Los bins codificados mediante una codificación CABAC de derivación se pueden denominar "bins de derivación". La agrupación de bins de derivación puede aumentar el caudal del codificador de vídeo 20 y el descodificador de vídeo 30. El motor de codificación CABAC de derivación puede ser capaz de codificar varios bins en un único ciclo, mientras que el motor de codificación CABAC ordinaria puede ser capaz de codificar solo un único bin en un ciclo. El motor de codificación CABAC de derivación puede ser más simple debido a que el motor de codificación CABAC de derivación no selecciona contextos y puede suponer una probabilidad de para ambos símbolos (0 y 1). En consecuencia, en la codificación CABAC de derivación, los intervalos se dividen directamente por la mitad.
La figura 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 ilustrativo que puede implementar las técnicas de esta divulgación. La figura 2 se proporciona para fines de explicación y no se debería considerar limitante de las técnicas según se ejemplifican y se describen de forma general en esta divulgación. Las técnicas de esta divulgación pueden ser aplicables a diversos métodos o normas de codificación.
La circuitería de procesamiento incluye el codificador de vídeo 20, y el codificador de vídeo 20 está configurado para realizar una o más de las técnicas ilustrativas descritas en esta divulgación. Por ejemplo, el codificador de vídeo 20 incluye una circuitería integrada y las diversas unidades ilustradas en la figura 2 se pueden formar como bloques de circuito de hardware que están interconectados con un bus de circuito. Estos bloques de circuito de hardware pueden ser bloques de circuito separados o dos o más de las unidades se pueden combinar en un bloque de circuito de hardware común. Los bloques de circuito de hardware se pueden formar como una combinación de componentes eléctricos que forman bloques de operación tales como unidades lógicas aritméticas (ALU), unidades de funciones elementales (EFU), así como bloques lógicos tales como Y, O, NO-Y, NO-O, O-EX, NO-O-EX, y otros bloques lógicos similares.
En algunos ejemplos, una o más de las unidades ilustradas en la figura 2 pueden ser unidades de software que se ejecutan en la circuitería de procesamiento. En tales ejemplos, el código objeto para estas unidades de software se almacena en memoria. Un sistema operativo puede hacer que el codificador de vídeo 20 recupere el código objeto y ejecute el código objeto, lo que hace que el codificador de vídeo 20 realice operaciones para implementar las técnicas ilustrativas. En algunos ejemplos, las unidades de software pueden ser firmware que el codificador de vídeo 20 ejecuta en el inicio. Por consiguiente, el codificador de vídeo 20 es un componente estructural que tiene hardware que realiza las técnicas ilustrativas o tiene software/firmware que se ejecuta en el hardware para especializar el hardware para realizar las técnicas ilustrativas.
En el ejemplo de la figura 2, el codificador de vídeo 20 incluye una unidad de procesamiento de predicción 200, una memoria de datos de vídeo 201, una unidad de generación residual 102, una unidad de procesamiento de transformada 204, una unidad de cuantificación 206, una unidad de cuantificación inversa 208, una unidad de procesamiento de transformada inversa 210, una unidad de reconstrucción 212, una unidad de filtro 214, una memoria intermedia de imágenes descodificadas 216 y una unidad de codificación por entropía 218. La unidad de procesamiento de predicción 200 incluye una unidad de procesamiento de interpredicción 220 y una unidad de procesamiento de intrapredicción 226. La unidad de procesamiento de interpredicción 220 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada).
La memoria de datos de vídeo 201 se puede configurar para almacenar datos de vídeo a codificar por los componentes del codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 201 se pueden obtener, por ejemplo, de la fuente de vídeo 18. La memoria intermedia de imágenes descodificadas 216 puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para su uso en la codificación de datos de vídeo mediante el codificador de vídeo 20, por ejemplo, en modos de intra- o intercodificación. La memoria de datos de vídeo 201 y la memoria intermedia de imágenes descodificadas 216 pueden estar formadas por cualquiera de una diversidad de dispositivos de memoria, tales como memoria de acceso aleatorio dinámica (DRAM), incluyendo DRAM sincrónica (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 201 y la memoria intermedia de imágenes descodificadas 216 pueden ser proporcionadas por el mismo dispositivo de memoria o dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 201 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera de un chip en relación con esos componentes. La memoria de datos de vídeo 201 puede ser la misma que o parte de los medios de almacenamiento 19 de la figura 1.
El codificador de vídeo 20 recibe datos de vídeo. El codificador de vídeo 20 puede codificar cada CTU en un sector de una imagen de los datos de vídeo. Cada una de las CTU puede estar asociada con bloques de árbol de codificación de luma (CTB) del mismo tamaño y los CTB correspondientes de la imagen. Como parte de codificar una CTU, la unidad de procesamiento de predicción 200 puede realizar una subdivisión para dividir los CTB de la CTU en bloques progresivamente más pequeños. Los bloques más pequeños pueden ser bloques de codificación de las CU. Por ejemplo, la unidad de procesamiento de predicción 200 puede subdividir un CTB asociado con una CTU de acuerdo con una estructura de árbol.
El codificador de vídeo 20 puede codificar las CU de una CTU para generar representaciones codificadas de las CU (es decir, CU codificadas). Como parte de codificar una CU, la unidad de procesamiento de predicción 200 puede subdividir los bloques de codificación asociados con la CU entre una o más PU de la CU. Por lo tanto, cada PU se puede asociar con un bloque de predicción de luma y bloques de predicción de croma correspondientes. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden soportar PU que tienen diversos tamaños. Como se ha indicado anteriormente, el tamaño de una CU se puede referir al tamaño del bloque de codificación de luma de la CU y el tamaño de una PU se puede referir al tamaño de un bloque de predicción de luma de la PU. Suponiendo que el tamaño de una CU particular es de 2N x 2N, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden soportar tamaños de PU de 2N x 2N o N x N para la intrapredicción, y tamaños de PU simétricos de 2N x 2N, 2N x N, N x 2N, N x N o similares para la interpredicción. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden soportar una subdivisión asimétrica para tamaños de PU de 2N x nU, 2N x nD, nL x 2N y nR x 2N para la interpredicción.
La unidad de procesamiento de interpredicción 220 puede generar datos predictivos para una PU. Como parte de generar los datos predictivos para una PU, la unidad de procesamiento de interpredicción 220 realiza una interpredicción sobre la PU. Los datos predictivos para la PU pueden incluir bloques predictivos de la PU e información de movimiento para la PU. La unidad de procesamiento de interpredicción 220 puede realizar diferentes operaciones para una PU de una CU dependiendo de si la PU está en un sector I, un sector P o un sector B. En un sector I, todas las PU son intrapredichas. Por lo tanto, si la PU está en un sector I, la unidad de procesamiento de interpredicción 220 no realiza una interpredicción sobre la PU. Por lo tanto, para bloques codificados en modo I, el bloque predicho se forma usando predicción espacial a partir de bloques vecinos codificados previamente dentro de la misma trama. Si una PU está en un sector P, la unidad de procesamiento de interpredicción 220 puede usar una interpredicción unidireccional para generar un bloque predictivo de la PU. Si una PU está en un sector B, la unidad de procesamiento de interpredicción 220 puede usar una interpredicción unidireccional o bidireccional para generar un bloque predictivo de la PU.
La unidad de procesamiento de intrapredicción 226 puede generar datos predictivos para una PU realizando una intrapredicción sobre la PU. Los datos predictivos para la PU pueden incluir bloques predictivos de la PU y diversos elementos de sintaxis. La unidad de procesamiento de intrapredicción 226 puede realizar una intrapredicción sobre unas PU en sectores I, sectores P y sectores B.
Para realizar una intrapredicción sobre una PU, la unidad de procesamiento de intrapredicción 226 puede usar múltiples modos de intrapredicción para generar múltiples conjuntos de datos predictivos para la PU. La unidad de procesamiento de intrapredicción 226 puede usar muestras a partir de bloques de muestra de unas PU vecinas para generar un bloque predictivo para una PU. Las PU vecinas pueden estar arriba, arriba y a la derecha, arriba y a la izquierda, o a la izquierda de la PU, suponiendo un orden de codificación de izquierda a derecha, de arriba abajo para las PU, las CU y las CTU. La unidad de procesamiento de intrapredicción 226 puede usar diversos números de modos de intrapredicción, por ejemplo, 33 modos de intrapredicción direccionales. En algunos ejemplos, el número de modos de intrapredicción puede depender del tamaño de la región asociada con la PU.
La unidad de procesamiento de predicción 200 puede seleccionar los datos predictivos para las PU de una CU entre los datos predictivos generados por la unidad de procesamiento de interpredicción 220 para las PU o los datos predictivos generados por la unidad de procesamiento de intrapredicción 226 para las PU. En algunos ejemplos, la unidad de procesamiento de predicción 200 selecciona los datos predictivos para las PU de la CU basándose en métricas de tasa/distorsión de los conjuntos de datos predictivos. Los bloques predictivos de los datos predictivos seleccionados se pueden denominar en el presente documento bloques predictivos seleccionados.
La unidad de generación residual 102 puede generar, basándose en los bloques de codificación (por ejemplo, bloques de codificación de luma, Cb y Cr) para una CU y los bloques predictivos seleccionados (por ejemplo, bloques de luma, Cb y Cr predictivos) para las PU de la CU, bloques residuales (por ejemplo, bloques residuales de luma, Cb y Cr) para la CU. Por ejemplo, la unidad de generación residual 102 puede generar los bloques residuales de la CU de tal manera que cada muestra en los bloques residuales tiene un valor igual a una diferencia entre una muestra en un bloque de codificación de la CU y una muestra correspondiente en un bloque predictivo seleccionado correspondiente de una PU de la CU.
La unidad de procesamiento de transformada 204 puede subdividir los bloques residuales de una CU en bloques de transformada de las TU de la CU. Por ejemplo, la unidad de procesamiento de transformada 204 puede realizar una subdivisión de árbol cuádruple para subdividir los bloques residuales de la CU en bloques de transformada de las TU de la CU. Por lo tanto, una TU se puede asociar con un bloque de transformada de luma y dos bloques de transformada de croma. Los tamaños y posiciones de los bloques de transformada de luma y de croma de las TU de una CU se pueden basar o no en los tamaños y posiciones de los bloques de predicción de las PU de la CU. Una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT) puede incluir nodos asociados con cada una de las regiones. Las TU de una CU pueden corresponder a nodos hoja del RQT.
La unidad de procesamiento de transformada 204 puede generar bloques de coeficientes de transformada para cada TU de una Cu aplicando una o más transformadas a los bloques de transformada de la TU. La unidad de procesamiento de transformada 204 puede aplicar diversas transformadas a un bloque de transformada asociado con una TU. Por ejemplo, la unidad de procesamiento de transformada 204 puede aplicar una transformada coseno discreta (DCT), una transformada direccional o una transformada conceptualmente similar a un bloque de transformada. En algunos ejemplos, la unidad de procesamiento de transformada 204 no aplica transformadas a un bloque de transformada. En tales ejemplos, el bloque de transformada se puede tratar como un bloque de coeficientes de transformada.
La unidad de cuantificación 206 puede cuantificar los coeficientes de transformada en un bloque de coeficientes. La unidad de cuantificación 206 puede cuantificar un bloque de coeficientes asociado con una TU de una CU basándose en un valor de parámetro de cuantificación (QP) asociado con la CU. El codificador de vídeo 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes asociados con una CU ajustando el valor de QP asociado con la CU. La cuantificación puede introducir una pérdida de información. Por lo tanto, los coeficientes de transformada cuantificados pueden tener una precisión menor que los originales.
La unidad de cuantificación inversa 208 y la unidad de procesamiento de transformada inversa 210 pueden aplicar cuantificación inversa y transformadas inversas a un bloque de coeficientes, respectivamente, para reconstruir un bloque residual a partir del bloque de coeficientes. La unidad de reconstrucción 212 puede añadir el bloque residual reconstruido a muestras correspondientes a partir de uno o más bloques predictivos generados por la unidad de procesamiento de predicción 200 para producir un bloque de transformada reconstruido asociado con una TU. Reconstruyendo bloques de transformada para cada TU de una CU de esta manera, el codificador de vídeo 20 puede reconstruir los bloques de codificación de la CU.
La unidad de filtro 214 puede realizar una o más operaciones de desbloqueo para reducir los artefactos de bloqueo en los bloques de codificación asociados con una CU. La memoria intermedia de imágenes descodificadas 216 puede almacenar los bloques de codificación reconstruidos después de que la unidad de filtro 214 haya realizado las una o más operaciones de desbloqueo sobre los bloques de codificación reconstruidos. La unidad de procesamiento de interpredicción 220 puede usar una imagen de referencia que contiene los bloques de codificación reconstruidos para realizar una interpredicción sobre unas PU de otras imágenes. Además, la unidad de procesamiento de intrapredicción 226 puede usar bloques de codificación reconstruidos en la memoria intermedia de imágenes descodificadas 216 para realizar una intrapredicción sobre otras PU en la misma imagen que la CU.
La unidad de codificación por entropía 218 puede recibir datos desde otros componentes funcionales del codificador de vídeo 20. Por ejemplo, la unidad de codificación por entropía 218 puede recibir bloques de coeficientes desde la unidad de cuantificación 206 y puede recibir elementos de sintaxis desde la unidad de procesamiento de predicción 200. La unidad de codificación por entropía 218 puede realizar una o más operaciones de codificación por entropía sobre los datos para generar datos codificados por entropía. Por ejemplo, la unidad de codificación por entropía 218 puede realizar una operación de CABAC u otro tipo de operación de codificación por entropía sobre los datos. El codificador de vídeo 20 puede emitir un flujo de bits que incluye datos codificados por entropía generados por la unidad de codificación por entropía 218. Por ejemplo, el flujo de bits puede incluir datos que representan valores de coeficientes de transformada para una CU.
La figura 3 es un diagrama de bloques que ilustra un descodificador de vídeo 30 ilustrativo que está configurado para implementar las técnicas de esta divulgación. La figura 3 se proporciona para fines de explicación y no es limitante de las técnicas según se ejemplifican y se describen de forma general en esta divulgación. Para fines de explicación, esta divulgación describe el descodificador de vídeo 30 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros métodos o normas de codificación.
La circuitería de procesamiento incluye el descodificador de vídeo 30, y el descodificador de vídeo 30 está configurado para realizar una o más de las técnicas ilustrativas descritas en esta divulgación. Por ejemplo, el descodificador de vídeo 30 incluye una circuitería integrada y las diversas unidades ilustradas en la figura 3 se pueden formar como bloques de circuito de hardware que están interconectados con un bus de circuito. Estos bloques de circuito de hardware pueden ser bloques de circuito separados o dos o más de las unidades se pueden combinar en un bloque de circuito de hardware común. Los bloques de circuito de hardware se pueden formar como una combinación de componentes eléctricos que forman bloques de operación tales como unidades lógicas aritméticas (ALU), unidades de funciones elementales (EFU), así como bloques lógicos tales como Y, O, NO-Y, NO-O, O-EX, NO-O-EX, y otros bloques lógicos similares.
En algunos ejemplos, una o más de las unidades ilustradas en la figura 3 pueden ser unidades de software que se ejecutan en la circuitería de procesamiento. En tales ejemplos, el código objeto para estas unidades de software se almacena en memoria. Un sistema operativo puede hacer que el descodificador de vídeo 30 recupere el código objeto y ejecute el código objeto, lo que hace que el descodificador de vídeo 30 realice operaciones para implementar las técnicas ilustrativas. En algunos ejemplos, las unidades de software pueden ser firmware que el descodificador de vídeo 30 ejecuta en el inicio. Por consiguiente, el descodificador de vídeo 30 es un componente estructural que tiene hardware que realiza las técnicas ilustrativas o tiene software/firmware que se ejecuta en el hardware para especializar el hardware para realizar las técnicas ilustrativas.
En el ejemplo de la figura 3, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 300, una memoria de datos de vídeo 301, una unidad de procesamiento de predicción 302, una unidad de cuantificación inversa 304, una unidad de procesamiento de transformada inversa 306, una unidad de reconstrucción 308, una unidad de filtro 310 y una memoria intermedia de imágenes descodificadas 312. La unidad de procesamiento de predicción 302 incluye una unidad de compensación de movimiento 314 y una unidad de procesamiento de intrapredicción 316. En otros ejemplos, el descodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
La memoria de datos de vídeo 301 puede almacenar datos de vídeo codificados, tales como un flujo de bits de vídeo codificado, a descodificar por los componentes del descodificador de vídeo 30. Los datos de vídeo almacenados en la memoria de datos de vídeo 301 se pueden obtener, por ejemplo, de un medio legible por ordenador 16, por ejemplo, de una fuente de vídeo local, tal como una cámara, a través de una comunicación de red cableada o inalámbrica de datos de vídeo, o accediendo a medios de almacenamiento de datos. La memoria de datos de vídeo 301 puede formar una memoria intermedia de imágenes codificadas (CPB) que almacena datos de vídeo codificados desde un flujo de bits de vídeo codificado. La memoria intermedia de imágenes descodificadas 312 puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para su uso en la descodificación de datos de vídeo mediante el descodificador de vídeo 30, por ejemplo, en modos de intra- o intercodificación, o para la salida. La memoria de datos de vídeo 301 y la memoria intermedia de imágenes descodificadas 312 pueden estar formadas por cualquiera de una diversidad de dispositivos de memoria, tales como memoria de acceso aleatorio dinámica (DRAM), incluyendo DRAM sincrónica (SDrAm ), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 301 y la memoria intermedia de imágenes descodificadas 312 pueden ser proporcionadas por el mismo dispositivo de memoria o dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 301 puede estar en un chip con otros componentes del descodificador de vídeo 30, o fuera de un chip en relación con esos componentes. La memoria de datos de vídeo 301 puede ser la misma que o parte de los medios de almacenamiento 28 de la figura 1.
La memoria de datos de vídeo 301 recibe y almacena datos de vídeo codificados (por ejemplo, unidades de NAL) de un flujo de bits. La unidad de descodificación por entropía 300 puede recibir datos de vídeo codificados (por ejemplo, unidades de NAL) desde la memoria de datos de vídeo 301 y puede analizar las unidades de NAL para obtener elementos de sintaxis. La unidad de descodificación por entropía 300 puede descodificar elementos de sintaxis codificados por entropía en las unidades de NAL. La unidad de procesamiento de predicción 302, la unidad de cuantificación inversa 304, la unidad de procesamiento de transformada inversa 306, la unidad de reconstrucción 308 y la unidad de filtro 310 pueden generar datos de vídeo descodificados basándose en los elementos de sintaxis extraídos del flujo de bits. La unidad de descodificación por entropía 300 puede realizar un proceso generalmente recíproco al de la unidad de codificación por entropía 218.
Además de obtener elementos de sintaxis a partir del flujo de bits, el descodificador de vídeo 30 puede realizar una operación de reconstrucción sobre una CU no subdividida. Para realizar la operación de reconstrucción sobre una CU, el descodificador de vídeo 30 puede realizar una operación de reconstrucción sobre cada TU de la CU. Al realizar la operación de reconstrucción para cada TU de la CU, el descodificador de vídeo 30 puede reconstruir bloques residuales de la CU.
Como parte de realizar una operación de reconstrucción sobre una TU de una CU, la unidad de cuantificación inversa 304 puede cuantificar inversamente, es decir, descuantificar, bloques de coeficientes asociados con la TU. Después de que la unidad de cuantificación inversa 304 haya cuantificado inversamente un bloque de coeficientes, la unidad de procesamiento de transformada inversa 306 puede aplicar una o más transformadas inversas al bloque de coeficientes con el fin de generar un bloque residual asociado con la TU. Por ejemplo, la unidad de procesamiento de transformada inversa 306 puede aplicar una DCT inversa, una transformada de números enteros inversa, una transformada de Karhunen-Loeve inversa (KLT), una transformada rotacional inversa, una transformada direccional inversa u otra transformada inversa al bloque de coeficientes.
La unidad de cuantificación inversa 304 puede realizar técnicas particulares de esta divulgación. Por ejemplo, para al menos un grupo de cuantificación respectivo de una pluralidad de grupos de cuantificación dentro de un CTB de una CTU de una imagen de los datos de vídeo, la unidad de cuantificación inversa 304 puede derivar, basándose al menos en parte en información de cuantificación local señalizada en el flujo de bits, un parámetro de cuantificación respectivo para el grupo de cuantificación respectivo. Adicionalmente, en este ejemplo, la unidad de cuantificación inversa 304 puede cuantificar inversamente, basándose en el parámetro de cuantificación respectivo para el grupo de cuantificación respectivo, al menos un coeficiente de transformada de un bloque de transformada de una TU de una CU de la CTU. En este ejemplo, el grupo de cuantificación respectivo se define como un grupo de CU o bloques de codificación sucesivos en orden de codificación de tal manera que los límites del grupo de cuantificación respectivo han de ser límites de las CU o bloques de codificación y un tamaño del grupo de cuantificación respectivo es mayor que o igual a un umbral. El descodificador de vídeo 30 (por ejemplo, la unidad de procesamiento de transformada inversa 306, la unidad de reconstrucción 308 y la unidad de filtro 310) puede reconstruir, basándose en coeficientes de transformada cuantificados inversos del bloque de transformada, un bloque de codificación de la CU.
Si una PU se codifica usando intrapredicción, la unidad de procesamiento de intrapredicción 316 puede realizar una intrapredicción para generar bloques predictivos de la PU. La unidad de procesamiento de intrapredicción 316 puede usar un modo de intrapredicción para generar los bloques predictivos de la PU basándose en bloques espacialmente vecinos de muestras. La unidad de procesamiento de intrapredicción 316 puede determinar el modo de intrapredicción para la PU basándose en uno o más elementos de sintaxis obtenidos del flujo de bits.
Si se codifica una PU usando interpredicción, la unidad de descodificación por entropía 300 puede determinar información de movimiento para la PU. La unidad de compensación de movimiento 314 puede determinar, basándose en la información de movimiento de la PU, uno o más bloques de referencia. La unidad de compensación de movimiento 314 puede generar, basándose en los uno o más bloques de referencia, bloques predictivos (por ejemplo, bloques de luma, Cb y Cr predictivos) para la PU.
La unidad de reconstrucción 308 puede usar bloques de transformada (por ejemplo, bloques de transformada de luma, Cb y Cr) para las TU de una CU y los bloques predictivos (por ejemplo, bloques de luma, Cb y Cr) de las PU de la CU, es decir, datos de intrapredicción o datos de interpredicción, según sea aplicable, para reconstruir los bloques de codificación (por ejemplo, bloques de codificación de luma, Cb y Cr) para la CU. Por ejemplo, la unidad de reconstrucción 308 puede añadir muestras de los bloques de transformada (por ejemplo, bloques de transformada de luma, Cb y Cr) a muestras correspondientes de los bloques predictivos (por ejemplo, bloques predictivos de luma, Cb y Cr) para reconstruir los bloques de codificación (por ejemplo, bloques de codificación de luma, Cb y Cr) de la CU.
La unidad de filtro 310 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con los bloques de codificación de la CU. El descodificador de vídeo 30 puede almacenar los bloques de codificación de la CU en la memoria intermedia de imágenes descodificadas 312. La memoria intermedia de imágenes descodificadas 312 puede proporcionar imágenes de referencia para una compensación de movimiento posterior, intrapredicción y presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1. Por ejemplo, el descodificador de vídeo 30 puede realizar, basándose en los bloques en la memoria intermedia de imágenes descodificadas 312, operaciones de intrapredicción o de interpredicción para las PU de otras CU.
La codificación aritmética es una herramienta fundamental usada en la compresión de datos. Véase, por ejemplo, I. H. Witten, R. M. Neal y J. G. Cleary, "Arithmetic coding for data compression", Commun. ACM, vol. 30, n.° 6, págs.
520-540, junio de 1987 (en lo sucesivo en el presente documento, la "referencia 1"); A. Said, "Arithmetic Coding', en "Lossless Compression Handbook', K. Sayood, Ed., Academic Press, capítulo 5, págs. 101-152, 2003 (en lo sucesivo en el presente documento, la "referencia 2"); y A. Said, "Introduction to arithmetic coding - theory and practice", Hewlett Packard Laboratories, Palo Alto, CA, EE. UU., Informe técnico HPL-2004-76, abril de 2004, (http://www.hpl.hp.com/techrepoi1s/2004/HPL-2004-76.pdf) (en lo sucesivo en el presente documento, la "referencia 3").
La codificación aritmética era opcional en la norma de compresión de vídeo AVC/H.264. Véase I. D. Marpe, H. Schwarz, y T. Wiegand, "Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard', IEEE Trans. Circuits Syst. Video Technol., Vol. 13, n.° 7, págs. 620-636, julio de 2003 (en lo sucesivo en el presente documento, la "referencia 4"); I. E. Richardson, The H.264 Advanced Video Compression Standard, 2a ed., John Wiley and Sons Ltd., 2010 (en lo sucesivo en el presente documento, la "referencia 5").
La codificación aritmética se volvió la única técnica de codificación por entropía de las normas de codificación/descodificación de vídeo HEVC/H.265 y VP9. Véase V. Sze y M. Budagavi, "High throughput CABAC entropy coding in HEVC ', IEEE Trans. Circuits Syst. Video Technol., Vol. 22, n.° 12, págs. 1778-1791, diciembre de 2012 (en lo sucesivo en el presente documento, la "referencia 6"); V. Sze y D. Marpe, "Entropy coding in HEVC ', en High Efficiency Video Coding (HEVC): Algorithms and Architectures, V. Sze, M. Budagavi y G. J. Sullivan, Eds., capítulo 8, págs. 209-274. Springer, 2014 (en lo sucesivo en el presente documento, la "referencia 7"); M. Wien, High Efficiency Video Coding: Coding Tools and Specification, Springer-Verlag, 2015 (en lo sucesivo en el presente documento, la "referencia 8"); D. Mukherjee, J. Bankoski, R. S. Bultje, A. Grange, J. Han, J. Koleszar, P. Wilkins e Y. Xu, "The latest open-source video codec VP9 - an overview and preliminary results", en Proc. 30th Picture Coding Symp., San José, CA, diciembre de 2013 (en lo sucesivo en el presente documento, la "referencia 9").
Debido a la eficiencia de compresión superior de la codificación aritmética, se espera que la codificación aritmética siga siendo la única técnica de codificación por entropía usada en normas de codificación/descodificación de vídeo futuras. Sin embargo, uno de los principales problemas del uso de la codificación por entropía en aplicaciones prácticas es que los métodos más eficaces están diseñados para ser óptimos para fuentes de datos estacionarias, pero los datos reales a partir de señales complejas (como vídeo) no son, ni mucho menos, estacionarios. Las soluciones actuales usan métodos de clasificación de datos y de codificación adaptativa para abordar este problema, y las técnicas de esta divulgación pueden aumentar la eficiencia de las técnicas de adaptación.
Las técnicas de esta divulgación pueden mejorar la eficiencia de compresión aprovechando el hecho de que, incluso cuando los datos están finamente divididos en muchas clases (contextos de codificación), sigue habiendo mucha variabilidad en las estadísticas de los datos asignados para cada clase. Entonces, en lugar de usar una única técnica de adaptación "universal" para todas las clases, esta divulgación propone cambiar los parámetros de adaptación de acuerdo con cada clase, y dentro de cada clase, cambiando adicionalmente los parámetros de adaptación de acuerdo con valores de probabilidad esperados u observados, o variaciones medidas en las estimaciones.
Además, esta divulgación describe técnicas ilustrativas para mejorar la estimación de probabilidad binaria, que es la adaptación para la codificación aritmética binaria. Las técnicas ilustrativas pueden posibilitar una mejor compresión usando análisis de señales en tiempo discreto para mejorar los métodos para estimar la probabilidad usando ecuaciones recursivas, y características especiales que posibilitan una baja complejidad y estabilidad cuando se usan implementaciones de baja precisión.
Como se describe en las referencias 1, 2 y 3, las normas de codificación/descodificación de vídeo modernas adoptan la estrategia de descomponer la codificación por entropía en modelado y codificación real. Por lo tanto, el proceso de codificación aritmética binaria usado en las normas de compresión de vídeo modernas se divide en tres fases principales. El codificador de vídeo 20 puede realizar las operaciones de estas fases, y el descodificador de vídeo 30 puede realizar operaciones inversas de estas fases.
(a) Binarización: cada elemento de datos (o elemento de sintaxis) a codificar se descompone en primer lugar en una secuencia de símbolos de datos binarios (bins). Debido a que las probabilidades de símbolo binario dependen del elemento de datos y la posición de símbolo binario en su descomposición, se asigna un contexto de bin (o simplemente contexto) para cada tipo de símbolo binario, identificando de manera única la estimación de probabilidad a usar para su codificación por entropía.
(b) Estimación de probabilidad adaptativa: debido a que se supone que todos los bins asignados a un contexto dado tienen probabilidades similares, pero no exactamente iguales, el codificador y el descodificador actualizan sus estimaciones de probabilidad basándose en los valores de bin que se han codificado o descodificado previamente. (c) Codificación aritmética: el valor de cada símbolo binario (0 o 1) se codifica por entropía usando la probabilidad estimada de su valor, que se define por el contexto correspondiente del bin.
Las técnicas de esta divulgación pueden obtener una mejor compresión mejorando la estimación de probabilidad adaptativa.
En las siguientes referencias se presentan técnicas ilustrativas usadas en la práctica para la estimación de probabilidad binaria:
• F. T. Leighton y R. L. Rivest, "Estimating a probability using finite memory", IEEE Trans. Inf. Theory, vol. 32, n.° 6, págs. 733-742, noviembre de 1986 (en lo sucesivo en el presente documento, la "referencia 10").
• W. B. Pennebaker y J. L. Mitchell, "Probability estimation for the Q-Coder', IBM J. Res. Develop., vol. 32, n.° 6, págs. 737-752, noviembre de 1988 (en lo sucesivo en el presente documento, la "referencia 11").
• P. G. Howard y J. S. Vitter, "Practical implementations of arithmetic coding", en Image and Text Compression, J. A. Storer, Ed., capítulo 4, págs. 85-112. Kluwer Academic Publishers, Norwell, MA, 1992 (en lo sucesivo en el presente documento, la "referencia 12").
• E. Meron y M. Feder, "Finite-memory universal prediction of individual sequences", IEEE Trans. Inf. Theory, vol. 50, n.° 7, págs. 1506-1523, julio de 2004 (en lo sucesivo en el presente documento, la "referencia 13").
• E. Belyaev, M. Gilmutdinov y A. Turlikov, "Binary arithmetic coding system with adaptive probability estimation by 'virtual sliding window", en Proc. IEEE Int. Symp. Consumer Electronics, San Petersburgo, Rusia, junio de 2006 (en lo sucesivo en el presente documento, la "referencia 14").
• A. Alshin, E. Alshina, y J. H. Park, "High precision probability estimation for CABAC ', en Proc. IEEE Visual Commun. Image Process. Conf., Kuching, Malasia, noviembre de 2013 (en lo sucesivo en el presente documento, la "referencia 15").
• A. V. Oppenheim y R. W. Schafer, Discrete-Time Signal Processing, Prentice-Hall, Inc., Upper Saddle River, NJ, 3a ed., agosto de 2009 (en lo sucesivo en el presente documento, la "referencia 16").
• S. K. Mitra, Digital Signal Processing: A Computer-based Approach, McGraw-Hill Publishing Co., Nueva York, NY, 4a ed., 2010 (en lo sucesivo en el presente documento, la "referencia 17").
Para lograr requisitos prácticos de complejidad computacional muy baja, la estimación de probabilidad se realiza comúnmente usando algún tipo de máquina de estados finitos (FSM). Para facilitar la explicación de las técnicas de esta divulgación, esta divulgación no cubre detalles acerca de la implementación de las f Sm de las referencias 10-14, pero es útil definir una terminología apropiada, y al final de esta sección se presentan algunos ejemplos.
La figura 4 es un diagrama de bloques de una FSM 400 general ilustrativa. Más específicamente, la figura 4 es una representación gráfica de una secuencia de transiciones de estado, entradas y salidas de una máquina de estados finitos general. En la figura 4, las secuencias {sn}, {in}, {on} representan, respectivamente, los estados, entradas y salidas de la FSM 400, que son vectores con elementos enteros (las dimensiones de los vectores y sus conjuntos de valores de elemento permitidos deben estar bien definidos, pero no son importantes para este análisis).
Siguiendo las definiciones anteriores, las flechas en el diagrama de la figura 4 representan una ecuación de actualización de estado y una ecuación de salida, que son
s n ~ T ( i n ’ Sn-1)> ° n ~ P(.í-n> s n - l) > ( 1 )
en donde T es la función de actualización de estado y P es la función de salida.
En las FSM de estimación de probabilidad, las entradas son valores de bin y las salidas son estimaciones de probabilidad de bin. El uso de FSM durante la codificación y descodificación por entropía se muestra en la figura 5, la figura 6, la figura 7 y la figura 8, en donde, por convención, la FSM de estimación de probabilidad binaria se denomina contexto de codificación.
Como se muestra en el ejemplo de la figura 5 y la figura 6, en la codificación/descodificación de vídeo práctica, la fase de codificación por entropía se puede implementar usando un gran número de contextos de codificación. Los contextos de codificación se seleccionan durante la codificación y descodificación dependiendo del tipo (o clase) del bin que se está codificando o descodificando.
La figura 7 es un diagrama de bloques ilustrativo para la codificación aritmética binaria basada en contexto considerando un único contexto seleccionado. En la figura 7, una unidad de codificación aritmética 700 incluye un codificador aritmético 702, una memoria intermedia de bits 704, una unidad de determinación de estado 706 y una unidad de FSM de estimación de probabilidad 708. La unidad de codificación aritmética 700 puede, en algunos ejemplos, recibir un flujo de bins desde una unidad de binarización 712. La unidad de codificación aritmética 700 y la unidad de binarización 712 pueden formar parte de la unidad de codificación por entropía 218 de la figura 2. La unidad de binarización 712 codifica cada elemento de datos (por ejemplo, elemento de sintaxis) para dar una secuencia de símbolos de datos binarios (bins). La secuencia de símbolos de datos binarios se puede denominar "flujo de bins". Adicionalmente, la unidad de codificación aritmética 700 puede recibir una señal de reinicialización de contexto. Por ejemplo, la unidad de codificación aritmética 700 puede recibir una señal de reinicialización de contexto cuando la unidad de codificación aritmética 700 comienza a codificar un tipo diferente de símbolo binario.
Además, en la figura 7, en respuesta a recibir una señal de reinicialización de contexto, la unidad de determinación de estado 706 puede reinicializar un estado de una FSM de estimación de probabilidad. En general, la reinicialización se refiere a restablecer las estimaciones de probabilidad a las estimaciones de probabilidad iniciales asociadas con un contexto de codificación. Por ejemplo, basándose en el tipo de símbolo binario a codificar, la unidad de determinación de estado 706 puede buscar estimaciones de probabilidad inicial en una tabla predefinida. La tabla predefinida se puede definir mediante una norma de codificación/descodificación de vídeo, tal como HEVC. La unidad de determinación de estado 706 puede proporcionar las estimaciones de probabilidad iniciales determinadas a la unidad de FSM de estimación de probabilidad de bin 708. Para el primer bin del flujo de bins, la unidad de FSM de estimación de probabilidad de bin 708 proporciona las estimaciones de probabilidad iniciales al codificador aritmético 702. Adicionalmente, la unidad de Fs M de estimación de probabilidad de bin 708 actualiza las estimaciones de probabilidad basándose en el valor real del primer bin del flujo de bins. Para cada bin posterior hasta que la unidad de determinación de estado 706 haya restablecido las estimaciones de probabilidad, la unidad de FSM de estimación de probabilidad de bin 708 actualiza las estimaciones de probabilidad de acuerdo con una función de actualización de estado, por ejemplo, como se muestra en la ecuación (1).
Para cada bin del flujo de bins, el codificador aritmético 702 puede usar las estimaciones de probabilidad proporcionadas por la unidad de FSM de estimación de probabilidad de bin 708 para codificar el bin como se describe en alguna otra parte en esta divulgación con respecto a la CABAC. La memoria intermedia de bits 704 puede almacenar los bins a codificar por el codificador aritmético 702. En la figura 7, el recuadro de retardo 710 significa que las probabilidades de bin generadas por la unidad de FSM de estimación de probabilidad de bin 708 se basan en un bin previo al bin que está siendo codificado actualmente por el codificador aritmético 702.
La figura 8 es un diagrama de bloques ilustrativo para la descodificación aritmética binaria basada en contexto considerando un único contexto seleccionado. En la figura 8, una unidad de descodificación aritmética 800 incluye un descodificador aritmético 802, una memoria intermedia de bits 804, una unidad de determinación de estado 806 y una unidad de FSM de estimación de probabilidad 808. La unidad de descodificación aritmética 800 genera un flujo de bins que, en algunos ejemplos, puede ser recibido por una unidad de binarización inversa 812. La unidad de descodificación aritmética 800 y la unidad de binarización inversa 812 pueden formar parte de la unidad de descodificación por entropía 300 de la figura 3. La unidad de binarización inversa 812 convierte el flujo de bins en una serie de uno o más elementos de sintaxis.
En la figura 8, la unidad de descodificación aritmética 800 recibe un flujo de bytes, que se puede analizar a partir de un flujo de bits recibido por el descodificador de vídeo 30. Adicionalmente, la unidad de descodificación aritmética 800 puede recibir una señal de reinicialización de contexto. Por ejemplo, la unidad de descodificación aritmética 800 puede recibir una señal de reinicialización de contexto cuando la unidad de descodificación aritmética 800 comienza a codificar un tipo diferente de símbolo binario. Además, en la figura 8, en respuesta a recibir una señal de reinicialización de contexto, la unidad de determinación de estado 806 puede reinicializar un estado de una FSM de estimación de probabilidad. Por ejemplo, basándose en el tipo de símbolo binario a codificar, la unidad de determinación de estado 806 puede buscar estimaciones de probabilidad inicial en una tabla predefinida. La tabla predefinida se puede definir mediante una norma de codificación/descodificación de vídeo, tal como HEVC. La tabla predefinida puede ser la misma que la tabla usada por la unidad de determinación de estado 706 (la figura 7). La unidad de determinación de estado 806 puede proporcionar las estimaciones de probabilidad iniciales determinadas a la unidad de FSM de estimación de probabilidad de bin 808. Para el primer bin del flujo de bins, la unidad de FSM de estimación de probabilidad de bin 808 proporciona las estimaciones de probabilidad iniciales al descodificador aritmético 802. Adicionalmente, la unidad de FSM de estimación de probabilidad de bin 808 actualiza las estimaciones de probabilidad basándose en el valor real del primer bin del flujo de bins. Para cada bin posterior hasta que la unidad de determinación de estado 806 haya restablecido las estimaciones de probabilidad, la unidad de FSM de estimación de probabilidad de bin 808 actualiza las estimaciones de probabilidad de acuerdo con una función de actualización de estado, por ejemplo, como se muestra en la ecuación (1).
Para cada bin del flujo de bins, el descodificador aritmético 802 puede usar las estimaciones de probabilidad proporcionadas por la unidad de FSM de estimación de probabilidad de bin 808 para descodificar el bin como se describe en alguna otra parte en esta divulgación con respecto a la CABAC. La memoria intermedia de bits 804 puede almacenar los bins a descodificar por el descodificador aritmético 802. En la figura 8, el recuadro de retardo 810 significa que las probabilidades de bin generadas por la unidad de FSM de estimación de probabilidad de bin 808 se basan en un bin previo al bin que está siendo descodificado actualmente por el descodificador aritmético 802.
La figura 7 y la figura 8 muestran diagramas simplificados, considerando el caso ilustrativo en el que se ha seleccionado un único contexto. La figura 7 y la figura 8 también muestran una característica siempre presente en la aplicación práctica, que es la necesidad de resincronizar periódicamente los estados de codificador y de descodificador, usando una tabla compartida con datos que se convierten en estados de codificador. Por ejemplo, en la norma de HEVC, los contextos se reinicializan periódicamente con una tabla que define, para cada contexto, cómo realizar una conversión desde un parámetro de calidad de compresión (conocido como escalón de cuantificación o valor de parámetro de cuantificación (QP)) (véanse las referencias 7 y 8) a estados de FSM.
En la norma de HEVC, las funciones de FSM se implementan usando solo métodos de búsqueda en tablas. Véanse las referencias 7 y 8. En el borrador más reciente del Modelo de Exploración Conjunta (JEM) producido por el JVET de ITU-T/MPEG, la FSM se ha implementado usando dos formas de filtros de respuesta a impulsos infinitos (IIR) de tiempo discreto. El primero está en la forma (véanse las referencias 13 y 14):
Figure imgf000019_0001
en donde p[k] es una secuencia de números enteros de estimaciones de probabilidad ajustadas a escala (los estados y salidas de FSM), b[k] es la secuencia binaria de valores de bin (las entradas de f Sm ), y a es un número entero positivo, posibilitando que las multiplicaciones y divisiones se implementen con desplazamientos de bits.
La segunda forma usa un método propuesto por A. Alshin, E. Alshina, y J. H. Park, "High precisión probability estimation for CABAC', en Proc. IEEE Visual Commun. Image Process. Conf., Kuching, Malasia, noviembre de 2013 (en lo sucesivo en el presente documento, la "referencia 15"), y se define mediante las siguientes ecuaciones:
Figure imgf000019_0002
Obsérvese que, en este caso, las entradas y salidas de FSM de estimación de probabilidad siguen siendo secuencias b[k] y p[k], respectivamente, pero el estado se define por los pares (qi[k], q2 [k]). La estimación en el presente caso también se puede denominar "estimación de dos pistas", debido a que tanto qi[k] como q2 [k] son estimaciones de probabilidad, que se actualizan y se almacenan.
Debido a que la codificación por entropía está diseñada para ser óptima para fuentes de datos estacionarias, su eficacia práctica ha dependido de la clasificación de elementos de datos, de tal manera que las estadísticas en cada clase son aproximadamente estacionarias, y es posible usar unas FSM de estimación de probabilidad que son casi "universales", es decir, que se adaptan igualmente bien para todos los contextos de datos. Como se muestra en la figura 7 y la figura 8, basándose en esa suposición, las f Sm de estimación de probabilidad no se cambian y solo sus estados se reinicializan periódicamente.
Esta divulgación aborda el hecho de que, en la práctica, no hay FSM de estimación de probabilidad que verdaderamente sea "universalmente óptima" para su uso en CABAC, debido a que no solo cambian, de hecho, las probabilidades para cada contexto, sino que también difieren entre contextos la velocidad y la magnitud de los cambios. Esta divulgación describe una solución a este problema que aprovecha el hecho de que la variación tiene lugar de acuerdo con el contexto o la probabilidad estimada, pero la mejor estrategia es aprovechar ambos para determinar la FSM óptima. Las técnicas de esta divulgación también cubren la opción de elegir parámetros de FSM evaluando la evolución de los estados de FSM, por ejemplo, midiendo la diferencia entre más de una estimación.
De acuerdo con una o más técnicas de esta divulgación, se cambia la definición convencional de las FSM de estimación de probabilidad, y las técnicas de esta divulgación también definen un vector de parámetros de FSM h, que se puede usar para cambiar las respuestas de FSM. Con esta definición, la ecuación (1) se puede reescribir como:
en donde ahora T es la función de actualización de estado parametrizada y P es la función de salida parametrizada. En otras palabras, la actualización de estado y las ecuaciones de salida se pueden redefinir como se muestra en la ecuación (3). Tales FSM de estimación de probabilidad se pueden denominar en el presente documento "FSM de contexto parametrizado".
Con esta definición, se pueden identificar dos factores que definen el desempeño de codificación de una FSM de contexto parametrizado:
• Estados de FSM (sn): contiene la información numérica o lógica usada directamente para calcular las probabilidades de los símbolos binarios, y son los únicos datos cambiados por reinicialización en normas previas; • parámetros de FSM (h): definen la actualización de estado y cómo se calculan las estimaciones de probabilidad a partir de los estados; la invención mejora la compresión modificando estos parámetros durante la codificación o durante la reinicialización.
Por ejemplo, la estimación de probabilidad en la ecuación (2) se puede cambiar para usar números enteros positivos (a, b) como parámetros en las ecuaciones:
Figure imgf000020_0001
Debido a que los parámetros a y b se usan para determinar la probabilidad estimada para un siguiente bin (es decir, p[^+1]), se puede considerar que los parámetros a y b en la ecuación (4) son para el siguiente bin. En la ecuación (4), los parámetros (a, b) pueden cambiar las transiciones de estado, pero no la ecuación de salida. Esta distinción se usa debido a que, aunque es matemáticamente posible definir los parámetros de FSM como parte del estado de FSM, esto representa una diferencia práctica.
La figura 9 y la figura 10 muestran cómo las técnicas de esta divulgación se pueden integrar en un proceso de codificación aritmética. En el ejemplo de la figura 9, una unidad de codificación aritmética 900 incluye un codificador aritmético 902, una memoria intermedia de bits 904, una unidad de determinación de estado 906, una unidad 908 de FSM de estimación de probabilidad y una unidad de determinación de parámetros de FSM 912. La unidad de codificación aritmética 900 puede, en algunos ejemplos, recibir un flujo de bins desde una unidad de binarización 913. La unidad de codificación aritmética 900 y la unidad de binarización 913 pueden formar parte de la unidad de codificación por entropía 218 de la figura 2. La unidad de binarización 913, el codificador aritmético 902, la memoria intermedia de bits 904, la unidad de determinación de estado 906 y el recuadro de retardo 910 pueden funcionar de la misma manera que la unidad de binarización 713, el codificador aritmético 702, la memoria intermedia de bits 704, la unidad de determinación de estado 706 y el recuadro de retardo 710 en la figura 7.
En el ejemplo de la figura 10, una unidad de descodificación aritmética 1000 incluye un descodificador aritmético 1002, una memoria intermedia de bits 1004, una unidad de determinación de estado 1006, una unidad 1008 de FSM de estimación de probabilidad y una unidad de determinación de parámetros de FSM 1012. La unidad de descodificación aritmética 1000 genera un flujo de bins que, en algunos ejemplos, puede ser recibido por una unidad de binarización inversa 1013. La unidad de descodificación aritmética 1000 y la unidad de binarización inversa 1013 pueden formar parte de la unidad de descodificación por entropía 300 de la figura 3. La unidad de binarización inversa 1013 convierte el flujo de bins en una serie de uno o más elementos de sintaxis. La unidad de binarización 1013, el descodificador aritmético 1002, la memoria intermedia de bits 1004, la unidad de determinación de estado 1006 y el recuadro de retardo 1010 pueden funcionar de la misma manera que la unidad de binarización inversa 812, el descodificador aritmético 802, la memoria intermedia de bits 804, la unidad de determinación de estado 806 y el recuadro de retardo 810 en la figura 8.
La diferencia principal (mostrada en líneas de trazo discontinuo en la figura 9 y la figura 10) con respecto a la figura 7 y la figura 8 son las unidades de determinación de parámetros de FSM 912, 1012 incluidas en la figura 9 y la figura 10. Las unidades de determinación de parámetros de FSM 912, 1012 determinan los parámetros de FSM (por ejemplo, a y b en la ecuación (4)). La unidad de determinación de parámetros de FSM 912, 1012 puede determinar los parámetros de FSM durante la codificación, en respuesta a sucesos de reinicialización de contexto, o en otras situaciones. Por lo tanto, en la figura 9 y la figura 10, las FSM de contexto parametrizado pueden ser modificadas durante la codificación o la reinicialización, por la unidad de determinación de parámetros de FSM 912, 1012, usando valores de probabilidad, factores de calidad y otros datos. Obsérvese que los datos alimentados a las unidades de determinación de parámetros de FSM 912, 1012 pueden comprender o consistir en parámetros de reinicialización y, también, estados actuales (por ejemplo, probabilidades de bin).
Por lo tanto, de acuerdo con una o más técnicas de esta divulgación, el codificador de vídeo 20 puede recibir datos de vídeo. Los datos de vídeo pueden comprender una o más imágenes. Además, la unidad de procesamiento de predicción 200, la unidad de cuantificación 206 y potencialmente otros componentes del codificador de vídeo 20 pueden generar elementos de sintaxis basándose en los datos de vídeo. En este ejemplo, la unidad de codificación por entropía 218 puede determinar un valor de desplazamiento aplicando una codificación aritmética binaria a uno de los elementos de sintaxis generados. Como parte de aplicar la codificación aritmética binaria, la unidad de codificación por entropía 218 puede generar un flujo de bins binarizando uno o más elementos de sintaxis. Además, para al menos un bin respectivo del flujo de bins (por ejemplo, un bin particular del flujo de bins, cada bin del flujo de bins, cada bin del flujo de bins que no sea un último bin del flujo de bins, etc.), la unidad de codificación por entropía 218 puede determinar, basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y un valor del bin respectivo, un intervalo para un siguiente bin del flujo de bins. Adicionalmente, la unidad de codificación por entropía 218 puede determinar uno o más parámetros de FSM para el siguiente bin del flujo de bins. La unidad de codificación por entropía 218 también puede determinar, basándose en el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo, un estado para el siguiente bin del flujo de bins. En este ejemplo, el valor de desplazamiento puede ser igual a un valor en el intervalo para un último bin del flujo de bins. El codificador de vídeo 20 puede emitir un flujo de bits que comprende el valor de desplazamiento.
Además, de acuerdo con una o más técnicas de esta divulgación, la unidad de descodificación por entropía 300 del descodificador de vídeo 30 puede determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits. Como parte de aplicar la descodificación aritmética binaria, la unidad de descodificación por entropía 300 puede generar un flujo de bins. Como parte de generar el flujo de bins, la unidad de descodificación por entropía 300 puede, para al menos un bin respectivo del flujo de bins (por ejemplo, un bin particular del flujo de bins, cada bin del flujo de bins, cada bin del flujo de bins que no sea un último bin del flujo de bins, etc.), determinar, basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento, un valor del bin respectivo. Adicionalmente, la unidad de descodificación por entropía 300 puede determinar uno o más parámetros de f Sm para un siguiente bin del flujo de bins. El siguiente bin del flujo de bins sigue al bin respectivo en el flujo de bins. Además, la unidad de descodificación por entropía 300 puede determinar, basándose en el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo, un estado para el siguiente bin del flujo de bins. La unidad de descodificación por entropía 300 puede desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado. Otros componentes del descodificador de vídeo 30 pueden reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado. En otras palabras, el descodificador de vídeo 30 puede usar el elemento de sintaxis descodificado en un proceso para reconstruir la imagen.
En algunos ejemplos, las unidades de determinación de parámetros de FSM 912, 1012 usan diferentes funciones para diferentes contextos. Por ejemplo, cada contexto puede usar una función diferente en las unidades de determinación de parámetros de FSM 912, 1012. Las unidades de determinación de parámetros de FSM 912, 1012 usan la función para un contexto para determinar los parámetros de FSM usados por las unidades de FSM de estimación de probabilidad de bin 908, 1008. Por ejemplo, cada una de las unidades de determinación de parámetros de FSM 912, 1012 puede acceder a una tabla predefinida que correlaciona diferentes contextos con diferentes parámetros de FSM. En otro ejemplo, diferentes contextos se pueden asociar con diferentes tablas predefinidas. En este ejemplo, cada una de las unidades de determinación de parámetros de FSM 912, 1012 puede acceder a la tabla predefinida asociada con un contexto actual y buscar una entrada en la tabla predefinida asociada con el contexto actual basándose en uno o más fragmentos adicionales de información. En este ejemplo, los fragmentos adicionales de información pueden incluir información acerca de modos de codificación de bloques vecinos, información acerca de una posición de un último coeficiente no nulo, y así sucesivamente. En algunos ejemplos, la función para un contexto es una correlación a partir del contexto con valores predeterminados de los parámetros de FSM. Por lo tanto, en algunos ejemplos, cada una de las unidades de determinación de parámetros de FSM 912, 1012 está configurada con una tabla que correlaciona contextos con valores predeterminados de los parámetros de FSM.
En algunos ejemplos, incluso para el mismo contexto, los parámetros de FSM (por ejemplo, (a, b) para el codificador/descodificador aritmético de dos pistas) también pueden ser dependientes de tipos de sector y/o parámetros de cuantificación, y/o información de modo codificado (por ejemplo, cualquier tipo de información que esté codificada como información secundaria para el descodificador, por ejemplo, en un encabezamiento de sector). Por ejemplo, cada una de las unidades de determinación de parámetros de FSM 912, 1012 se puede configurar con una tabla que correlaciona combinaciones de factores (por ejemplo, contexto, tipos de sector, parámetros de cuantificación, información de modo codificado, etc.) con parámetros de FSM.
Las unidades de determinación de parámetros de FSM 912, 1012 pueden modificar los parámetros de FSM de diversas formas. En otras palabras, las unidades de determinación de parámetros de FSM 912, 1012 pueden cambiar qué parámetros de FSM son usados por la unidad de FSM de estimación de probabilidad de bin 908 en respuesta a diversos sucesos y basándose en diversos tipos de información. Algunas posibilidades que pueden ser aplicables para cada contexto se enumeran a continuación.
En un ejemplo, los parámetros de FSM se modifican durante la reinicialización de acuerdo con un parámetro de reinicialización de estado, tal como un escalón de cuantificación o un valor de QP. Por ejemplo, un codificador/descodificador de vídeo se puede configurar con una tabla predefinida que correlaciona valores del parámetro de reinicialización de estado con parámetros de FSM. En este ejemplo, el codificador/descodificador de vídeo puede usar la tabla para buscar parámetros de FSM basándose en los parámetros de reinicialización del estado.
En algunos ejemplos, los parámetros de FSM se modifican de acuerdo con valores de probabilidad estimados, durante la reinicialización, o a intervalos periódicos más cortos que la reinicialización (por ejemplo, para cada CTU, después de cada bin, etc.). Por ejemplo, un codificador/descodificador de vídeo se puede configurar con una tabla predefinida que correlaciona valores de probabilidad estimados con parámetros de FSM. En este ejemplo, el codificador/descodificador de vídeo puede usar la tabla para buscar parámetros de FSM basándose en los valores de probabilidad estimados. En este ejemplo, el codificador/descodificador de vídeo puede usar la tabla para buscar los parámetros de FSM durante la reinicialización de contexto. Por ejemplo, el codificador/descodificador de vídeo puede usar las estimaciones de probabilidad especificadas por un contexto de codificación para buscar parámetros de FSM durante la reinicialización de contexto. Además, en algunos ejemplos, las unidades de FSM de estimación de probabilidad de bin 908 o 1008 pueden determinar estimaciones de probabilidad para bins que siguen a un primer bin después de la reinicialización de contexto. En tales ejemplos, el codificador/descodificador de vídeo puede usar las estimaciones de probabilidad determinadas por las unidades de FSM de estimación de probabilidad de bin 908 o 1008 para buscar los parámetros de FSM en la tabla predefinida.
En la presente invención, los parámetros de FSM se modifican basándose en una medida de variación de probabilidad pasada. Un codificador/descodificador de vídeo puede calcular la medida de variación de probabilidad pasada sumando las diferencias absolutas entre probabilidades. En diferentes ejemplos, el codificador/descodificador de vídeo puede estimar las probabilidades usando diferentes técnicas. En un ejemplo, usando la FSM definida por la ecuación (4), un codificador/descodificador de vídeo puede usar una "medida de variación de estimación" para determinar los parámetros de FSM. En este ejemplo, la "medida de variación de estimación" se puede definir de acuerdo con la siguiente ecuación:
Figure imgf000022_0001
En la ecuación anterior, o[k+1] es la medida de variación de estimación para el bin k+1, a[k] es la medida de variación de estimación para el bin k, qi[k] y q2 [k] se definen en la ecuación (4), y c es un parámetro (por ejemplo, c puede ser una constante). En este ejemplo, el codificador/descodificador de vídeo puede acceder a una tabla predefinida que correlaciona diferentes valores de la medida de variación de estimación a[k] con diferentes conjuntos de parámetros de FSM. Por lo tanto, en este ejemplo, el codificador/descodificador de vídeo puede usar la tabla para buscar los parámetros de FSM basándose en la medida de variación de estimación. En algunos ejemplos, el codificador/descodificador de vídeo puede acceder a diferentes tablas predefinidas para diferentes contextos de codificación. En tales ejemplos, diferentes entradas en la tabla predefinida para un contexto de codificación pueden correlacionar diferentes valores de a[k] con valores de los parámetros de FSM. En algunos ejemplos en donde el codificador/descodificador de vídeo accede a diferentes tablas predefinidas para diferentes contextos de codificación, diferentes entradas en la tabla para un contexto de codificación pueden correlacionar diferentes combinaciones de valores de a[k] e información adicional con valores de parámetros de FSM. En tales ejemplos, la información adicional puede incluir tipos de sector, parámetros de cuantificación, y así sucesivamente.
En algunos ejemplos, un codificador/descodificador de vídeo puede usar cualquiera de las técnicas según se han definido anteriormente para modificar los parámetros de FSM, pero en lugar de usar datos generados desde una reinicialización previa, un codificador/descodificador de vídeo puede usar datos a partir de otras partes de una secuencia de vídeo. Por ejemplo, la figura 11A es un diagrama de bloques que muestra que los parámetros de FSM se pueden derivar de bloques vecinos (por ejemplo, CTU, CU) en la misma imagen siguiendo un orden de exploración. Por ejemplo, en el ejemplo de la figura 11A, las unidades de determinación de parámetros de FSM 912, 1012 pueden determinar parámetros de FSM basándose, al menos en parte, en información desde uno o más bloques vecinos. La información puede incluir modos de predicción, parámetros de cuantificación, y así sucesivamente. En algunos ejemplos, la información puede incluir datos derivados de alguna medida de la variabilidad de probabilidad. Por ejemplo, se puede usar un único bit, con 1 para representar que se observaron cambios significativos en las estimaciones de probabilidad y 0 para indicar lo contrario.
La figura 11B es un diagrama de bloques que muestra que los parámetros de FSM usados en bloques de una imagen actual 1110 se pueden determinar basándose en información asociada con bloques en una imagen codificada previamente 1112. Los bloques en la imagen 1112 codificada previamente pueden tener la misma ubicación espacial que los bloques en la imagen 1110 actual. Por ejemplo, en el ejemplo de la figura 11B, las unidades de determinación de parámetros de FSM 912, 1012 pueden determinar parámetros de FSM basándose, al menos en parte, en información desde uno o más bloques en una imagen codificada previamente. La información puede incluir modos de predicción, parámetros de cuantificación, y así sucesivamente. En algunos ejemplos, la información puede incluir datos derivados de alguna medida de la variabilidad de probabilidad. Por ejemplo, se puede usar un único bit, con 1 para representar que se observaron cambios significativos en las estimaciones de probabilidad y 0 para indicar lo contrario.
La estimación de probabilidad binaria, es decir, el proceso de estimar la probabilidad de una fuente de datos binarios aleatorios, puede estar relacionada con los bien conocidos ensayos de Bernoulli (o binomiales) y, por lo tanto, se ha estudiado durante muchas décadas. Sin embargo, su uso para la codificación por entropía aún está en desarrollo debido a que, en aplicaciones prácticas, el método de estimación ha de tener en cuenta dos objetivos contrapuestos: (1) La eficiencia de compresión mejora con una precisión más alta de las estimaciones de probabilidad y la capacidad de cambiar las estimaciones rápidamente mientras se conserva la precisión, lo que requiere una complejidad computacional más alta, y (2) debido a que la velocidad de codificación aritmética puede limitar seriamente el caudal de un sistema de compresión y de descompresión (en Mbits/s), es preferible que la codificación aritmética se realice con una complejidad computacional pequeña para aumentar el caudal.
Debido a la preferencia, en los sistemas de codificación/descodificación de vídeo prácticos, por una complejidad baja, la mayoría de los métodos de estimación de probabilidad para la codificación aritmética binaria se han basado en FSM, como se describe en la referencia 10, desde las primeras implementaciones prácticas de la codificación aritmética, como se describe en la referencia 11. La notación de los conceptos básicos de estas técnicas, que se puede usar en aplicaciones de codificación/descodificación de vídeo, se define a continuación.
íb\ k]}N-Suponiendo que hay una secuencia de N símbolos, L J k~l a partir de una fuente de datos aleatorios binarios (es
decir, b[k] e {0, 1}), una secuencia desconocida {Pt[* ]) }*= i de probabilidades verdaderas para el símbolo 1, es decir pt[k] = Prob(b[/<] = 1), la estimación de probabilidad binaria es el problema de hallar una secuencia de probabilidades {p In ­estimadas J k_1 que se aproxime mejor a las probabilidades verdaderas, bajo la condición de causalidad, es
decir, p[n] solo puede depender del conjunto de bins "pasados1 mwk-=i
En aplicaciones de codificación, las variables y las ecuaciones se modifican para usar solo aritmética de números enteros. Por lo general, la probabilidad se ajusta a escala mediante una potencia de 2. Por ejemplo, se usa si un factor de escala entero 2c, y se usan letras mayúsculas para indicar los valores enteros correspondientes, entonces los valores ajustados a escala de probabilidades y bins pueden ser:
p[k\ e (0,1) => P[k] = [2cp[k] + 1/2J e { l , 2 , - , 2 c - l }
b[k] e {0 ,1} => B[k]= 2cb[k] e { 0 ,2C}
Un tipo particular de FSM de estimación de probabilidad, que se ha adoptado, y ha sido "redescubierto" y renombrado varias veces en las últimas décadas, tiene un parámetro de adaptación 0 < a < 1, y la forma recursiva:
p[k 1] = a b[k] (1 — a)p[k], (6)
En una aplicación de codificación práctica, tanto el codificador de vídeo 20 como el descodificador de vídeo 30 comienzan con la misma estimación de probabilidad inicial p[1] (normalmente a partir de una tabla fija compartida) y, entonces, cada bin b[k] se codifica y se descodifica óptimamente de manera secuencial usando la probabilidad estimada p[k], actualizándose cada estimación de probabilidad con la ecuación (6) después de que cada bin se haya codificado o descodificado. Debido a que esta es una ecuación recursiva, cada valor de probabilidad depende de todos los bins codificados o bins descodificados previamente.
El procesamiento de señales como se describe en las referencias 16 y 17 muestra que, cuando se usa la ecuación (6), los valores de probabilidad estimados dependen de bins codificados previamente, usando pesos exponencialmente decrecientes. Por esa razón, esta técnica de estimación de probabilidad se denominó envejecimiento exponencial en la referencia 12, que sugirió usar un valor de a = 0,04 en aplicaciones de codificación prácticas. El método de codificación aritmética CABAC, adoptado en las normas de codificación/descodificación de vídeo AVC/H.264 y HEVC/H.265, también usa este enfoque, usando un valor a = 0,0508 [4, 6, 7], y una de las diferencias con respecto a las implementaciones previas está relacionada con su uso de una máquina de estados finitos basándose en la búsqueda en tablas.
Más recientemente, el mismo enfoque se ha denominado memoria en declive exponencial en la referencia 13 y la referencia 14. La referencia 14 lo denomina técnica de "ventana deslizante virtual", debido a que la forma equivalente
p [" i ] = T r ( i - ¿ > M . <7>
está relacionada con un algoritmo aleatorizado para la estimación de probabilidad, usando una "ventana deslizante" de W bins. Además, las referencias 13 y 14 demuestran que este se puede implementar de manera eficiente con aritmética de números enteros cuando W es una potencia de dos, en la forma
Figure imgf000024_0001
debido a que la división de alta complejidad se puede sustituir por desplazamientos de bits enteros eficientes.
Un problema práctico con las fórmulas de estimación anteriores es que pueden ser necesarios diferentes valores de ventana W, de acuerdo con los datos binarios de un contexto dado. Si las probabilidades de los valores de bin cambian lentamente, o las probabilidades de los valores de bin son muy diferentes (por ejemplo, Prob(ó[k] = 1) > Prob(ó[k] = 0)), entonces se obtiene más compresión mediante valores mayores de W debido a que estos se promedian a lo largo de un número mayor de valores de bin previos. Por otro lado, unos valores pequeños de W pueden ser beneficiosos cuando las probabilidades cambian rápida y frecuentemente.
Una solución a este problema, descrita en la referencia 15, es definir un número M de parámetros de adaptación { c r j f , , {Y iii= i , .1 í_± y pesos , de tal manera que
l i = 1 Yi = t 0 < a ¿ < 1, i = 1 ,2 , - - - ,M , (9)
usan varios estimadores de probabilidad, en la misma forma recursiva de la ecuación (6),
q t [ k + 1 ] = a¿ b [ k ] + (1 — a ^ q ^ k ] , i = 1 ,2 , ••• ,M , (10 )
y, entonces, calcular la estimación final como el promedio ponderado:
Figure imgf000024_0002
Este enfoque demostró ser más eficiente en aplicaciones de codificación/descodificación de vídeo y, por esa razón, el programa de compresión de vídeo experimental de ITU/MPEG actual usa las siguientes tres ecuaciones (usando aritmética de números enteros) para la estimación de probabilidad.
Figure imgf000024_0003
En este caso, la FSM de estimación de probabilidad usa Qi y Q2 como elementos de estado, lo que dificulta el uso de la técnica común de estimar solo la probabilidad del símbolo menos probable (LPS), debido a que Q1 > 1/2 y Q2 < 1/2 pueden tener lugar simultáneamente o viceversa.
Usando el procesamiento de señales en tiempo discreto descrito en las referencias 16 y 17, y la definición de la transformada z, el resultado es:
P ( z ) = l n P [ k \ z n , B ( z ) = 2 n b [ k \ z 71, Z E ( C (12 )
Siguiendo la convención, esta divulgación usa letras mayúsculas para las transformadas z, pero se pueden reconocer por el uso de paréntesis en lugar de corchetes. Por ejemplo, se usa P[k] para representar la versión entera ajustada a escala de p[k], mientras que P(z) representa la transformada z de p[k].
Usando estas definiciones, la ecuación (6) corresponde a:
zP(z) = a B(z) (1 — ct)P(z), ( 13)
o
Figure imgf000025_0001
lo que significa que la estimación de probabilidad es la salida de un filtro de respuesta a impulsos infinitos (IIR) con respuesta
Figure imgf000025_0002
aplicada a la secuencia de valores de bin, como se muestra en la figura 12. Por ejemplo, la figura 12 ilustra un ejemplo de un filtro de estimación de probabilidad definido por la ecuación (6).
El estimador de probabilidad de la ecuación (10), usando dos factores y pesos iguales, corresponde a la implementación de filtros paralelos que se muestra en la figura 13. En la figura 13, el filtro de estimación de probabilidad definido por la ecuación (10) incluye dos estimadores y pesos iguales.
Por lo tanto, en algunos ejemplos, el codificador de vídeo 20 puede implementar las operaciones de los filtros de estimación de probabilidad ilustrados en las figuras 12 y 13 para determinar la probabilidad de bin (por ejemplo, p[k]) de un bin particular (por ejemplo, b[k]) usado para la codificación aritmética. El b[k] para el codificador de vídeo 20 se puede basar en elementos de sintaxis binarizados o más generalmente en datos de vídeo que se codifican en el flujo de bits. De manera similar, el descodificador de vídeo 30 puede implementar las operaciones de los filtros de estimación de probabilidad ilustrados en las figuras 12 y 13 para determinar la probabilidad de bin (por ejemplo, p[k]) de un bin particular (por ejemplo, b[k]) usado para la codificación aritmética. El b[k] para el descodificador de vídeo 30 se puede incluir en un flujo de bits a partir del cual se descodifican datos de vídeo.
Debido a que la codificación por entropía (por ejemplo, codificación aritmética) está diseñada para ser óptima para fuentes de datos estacionarias (por ejemplo, contenido no móvil), su eficacia práctica depende de clasificar los elementos de datos, de tal manera que las estadísticas en cada clase son aproximadamente estacionarias. En la práctica, cada clase se representa mediante un contexto de codificación (o contexto de bin para alfabetos binarios) y, aunque cada contexto debería corresponder a un conjunto diferente de probabilidades de símbolo, se supone que, si las probabilidades de símbolo cambian, la forma en la que tienen lugar los cambios debería ser suficientemente similar, de tal manera que un único método de adaptación será suficiente para todos los contextos.
Sin embargo, en realidad, en la codificación/descodificación de vídeo práctica, los datos en cada uno de los flujos creados por clasificación también tienen variaciones de alto orden diferenciadas. Por ejemplo, las clases corresponden a los siguientes casos
• Los datos son verdaderamente estacionarios;
• Las probabilidades de símbolo cambian frecuentemente, pero en cantidades pequeñas;
• Las probabilidades de símbolo no cambian frecuentemente, pero, cuando sí cambian, los valores de probabilidad cambian de manera muy significativa.
También puede haber variabilidad en lo frecuentemente que cambian las probabilidades de símbolo de datos, la velocidad de cambio y la magnitud promedio de los cambios. Para abordar la totalidad de los diferentes casos, puede ser deseable tener un buen control del proceso de estimación. Esta divulgación describe cómo se puede hacer esto aumentando el orden de la estimación y ajustando los parámetros de los estimadores nuevos para que coincidan óptimamente con las estadísticas de fuente de datos. Además, las técnicas descritas en esta divulgación pueden abordar el problema de los estimadores FSM que no tienen la estimación de probabilidad como parte de su estado, lo que dificulta el uso de la técnica común de estimar solo la probabilidad del símbolo menos probable (LPS).
Con el fin de posibilitar más grados de libertad en la respuesta de los predictores, las técnicas pueden usar filtros de orden superior. Una respuesta de filtro IIR se define comúnmente usando una representación polinómica, tal como:
Figure imgf000026_0001
Sin embargo, en el problema de estimación de probabilidad, los parámetros de la representación polinómica normalmente no permiten una complejidad computacional mínima. Asimismo, se sabe que las mejores respuestas son numéricamente inestables, lo que complica adicionalmente la implementación.
Esta divulgación describe el uso de la siguiente forma de producto como el punto de partida a partir del cual se pueden determinar las operaciones usadas para la estimación de probabilidad.
Figure imgf000026_0002
f 7 ~\F
en donde ®>íJ¿=i son respectivamente los polos y ceros de H(z), y la constante y se define de tal manera que se satisface la condición H(1) = 1, es decir, la estimación de probabilidad se ajusta a escala apropiadamente.
La siguiente etapa es considerar que se espera que los polos y los ceros están cerca de la unidad, y que, aunque puede ser aceptable tener unas pocas multiplicaciones enteras, puede ser útil sustituir todas las divisiones por desplazamientos de bits. En esas condiciones, el filtro se puede definir usando la ecuación (18)
Figure imgf000026_0003
en donde, para satisfacer la condición H(1) = 1, lo siguiente debe ser
2<tzi~Fdti>:
y = u u : (19)
Vi
Con la definición
Figure imgf000026_0004
lo siguiente se puede reescribir como:
H(z) = UUHi ( z ) (21)
y aprovechar el hecho de que, en esta forma (de producto) en cascada, los filtros individuales se pueden disponer en cualquier orden.
Con precisión infinita, el orden de los filtros puede ser irrelevante, pero el orden de los filtros puede ser importante cuando se usan solo operaciones enteras y de precisión finita. Por ejemplo, cuando el parámetro y tiene factores diferentes de dos, simplemente se puede mover este a la primera fase, y la secuencia de números enteros B[k] se puede volver a ajustar a escala para evitar multiplicaciones o divisiones.
Figure imgf000026_0005
En algunos ejemplos descritos en la divulgación, el conjunto de parámetros son, todos ellos, números enteros pequeños, para minimizar la complejidad de las operaciones aritméticas (que pueden ser útiles para hardware personalizado) y para simplificar las implementaciones.
Un diagrama de la implementación se muestra en la figura 14. Por ejemplo, la figura 14 ilustra un ejemplo de un filtro de estimación de probabilidad que usa filtros en cascada. Por ejemplo, la figura 14 ilustra una pluralidad de filtros, cada uno de los cuales realiza las operaciones de la función de transferencia Hi(z) para determinar las probabilidades de bin de cada uno de los bins de un flujo de bins. Como ejemplo, el flujo de bins puede ser el flujo de bins binarizado generado en el codificador de vídeo 20 para fines de codificación. El flujo de bins también puede ser el flujo de bins que genera el descodificador de vídeo 30 para la desbinarización para generar los datos de vídeo reales (por ejemplo, elemento de sintaxis).
Para el descodificador de vídeo 30, un primer filtro de la pluralidad de filtros recibe valores basándose en el flujo de bits (por ejemplo, el flujo de bits generado por el codificador de vídeo 20). Un último filtro de la pluralidad de filtros emite la probabilidad de bin. Cada uno de los otros filtros recibe valores desde su filtro inmediatamente anterior y determina valores para su siguiente filtro basándose en los valores recibidos y valores de parámetro respectivos para cada uno de los filtros. El último filtro recibe valores desde su filtro inmediatamente anterior y determina la probabilidad de bin basándose en los valores recibidos y valores de parámetro para el último filtro. Como ejemplo, los valores de parámetro respectivos para cada uno de los filtros pueden ser q, m , m, y yi, pero son posibles menos o más valores de parámetro.
Para el codificador de vídeo 20, un primer filtro de la pluralidad de filtros recibe valores basándose en el flujo de bins (por ejemplo, como se genera mediante la binarización del elemento de sintaxis). Un último filtro de la pluralidad de filtros emite la probabilidad de bin. Cada uno de los otros filtros recibe valores desde su filtro inmediatamente anterior y determina valores para su siguiente filtro basándose en los valores recibidos y valores de parámetro respectivos para cada uno de los filtros. El último filtro recibe valores desde su filtro inmediatamente anterior y determina la probabilidad de bin basándose en los valores recibidos y valores de parámetro para el último filtro. Como ejemplo, los valores de parámetro respectivos para cada uno de los filtros pueden ser q, m , n, y yi, pero son posibles menos o más valores de parámetro.
Un codificador/descodificador de vídeo (por ejemplo, el codificador de vídeo 20 o el descodificador de vídeo 30) puede determinar valores de q, mí, m, y yi de diversas maneras. Por ejemplo, el codificador/descodificador de vídeo puede acceder a una o más tablas predefinidas que correlacionan diversos tipos de información con valores de q, m , m y y . Por ejemplo, el codificador/descodificador de vídeo puede usar una tabla asociada con un contexto particular para buscar valores de q, m , m y yi. En tales ejemplos, las una o más tablas se pueden determinar basándose en un análisis empírico de datos de vídeo.
En algunos ejemplos, las técnicas de esta divulgación se pueden implementar usando la unidad de codificación por entropía 218 (la figura 2). Por ejemplo, el codificador de vídeo 20 puede recibir datos de vídeo. Los datos de vídeo pueden comprender una o más imágenes. Además, la unidad de procesamiento de predicción 200, la unidad de cuantificación 206 y potencialmente otros componentes del codificador de vídeo 20 pueden generar elementos de sintaxis basándose en los datos de vídeo. En este ejemplo, la unidad de codificación por entropía 218 puede recibir un elemento de sintaxis basándose en los datos de vídeo y aplicar una codificación aritmética binaria al elemento de sintaxis. En algunos ejemplos, aplicar la codificación aritmética binaria puede incluir generar un flujo de bins binarizando el elemento de sintaxis y determinar una probabilidad de bin para al menos un bin del flujo de bins con una pluralidad de filtros. Un primer filtro de la pluralidad de filtros recibe valores basándose en el flujo de bins, un último filtro de la pluralidad de filtros emite la probabilidad de bin, cada uno de los otros filtros recibe valores desde su filtro inmediatamente anterior y determina valores para su siguiente filtro basándose en los valores recibidos y valores de parámetro respectivos para cada uno de los filtros, y el último filtro recibe valores desde su filtro inmediatamente anterior y determina la probabilidad de bin basándose en los valores recibidos y valores de parámetro para el último filtro. Aplicar la codificación aritmética binaria también puede incluir generar un flujo de bits basándose en al menos un bin y la probabilidad de bin. La unidad de codificación por entropía 218 puede emitir el flujo de bits.
Además, en algunos ejemplos, las técnicas de esta divulgación se pueden implementar usando la unidad de descodificación por entropía 300 (la figura 3). Por ejemplo, la unidad de descodificación por entropía 300 puede determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un flujo de bits. Aplicar la descodificación aritmética binaria incluye generar un flujo de bins, y generar el flujo de bins incluye determinar una probabilidad de bin para al menos un bin del flujo de bins con una pluralidad de filtros. Un primer filtro de la pluralidad de filtros recibe valores basándose en el flujo de bits, un último filtro de la pluralidad de filtros emite la probabilidad de bin, cada uno de los otros filtros recibe valores desde su filtro inmediatamente anterior y determina valores para su siguiente filtro basándose en los valores recibidos y valores de parámetro respectivos para cada uno de los filtros, y el último filtro recibe valores desde su filtro inmediatamente anterior y determina la probabilidad de bin basándose en los valores recibidos y valores de parámetro para el último filtro. La unidad de descodificación por entropía 300 puede desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado. La unidad de procesamiento de predicción 302 puede reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado.
El orden de las operaciones también puede ser importante cuando el acceso directo a la estimación de probabilidad es útil para determinar rápidamente el símbolo menos probable. Por ejemplo, las siguientes ecuaciones definen una FSM de estimación de probabilidad, parametrizada por constantes enteras positivas a y b, en donde la secuencia de probabilidad P[k] es parte del estado de FSM mínimo.
Figure imgf000028_0001
Un codificador/descodificador de vídeo puede determinar valores de los parámetros de FSM a y b usando cualquiera de los ejemplos proporcionados en alguna otra parte en esta divulgación. Además, en algunos ejemplos, un codificador/descodificador de vídeo puede usar la ecuación (22) en lugar de la ecuación (4).
La figura 15 es un diagrama de bloques que ilustra una unidad de codificación por entropía ilustrativa. Por ejemplo, la figura 15 ilustra un ejemplo de la unidad de codificación por entropía 218 de la figura 2 con mayor detalle. La unidad de codificación por entropía 218 puede incluir componentes adicionales o menos componentes, y las interconexiones específicas ilustradas en la figura 15 son simplemente para facilitar la comprensión y no se deberían considerar limitantes. La unidad de codificación por entropía 218 puede incluir un circuito de binarización 1500 que recibe datos de vídeo (por ejemplo, elementos de sintaxis) y realiza el proceso de binarización (por ejemplo, una secuencia de símbolos de datos binarios también denominados valores de bin). El circuito de estimación de probabilidad 1502 puede recibir los valores de bin generados por el circuito de binarización 1500 y puede determinar la probabilidad para ese bin usando las técnicas ilustrativas descritas en esta divulgación, tales como el uso de la técnica de filtrado en cascada ilustrada y descrita con respecto a la figura 14. El circuito de codificador aritmético 1504 puede codificar por entropía los datos binarizados generados por el circuito de binarización 1500 basándose en los contextos de codificación (por ejemplo, probabilidades) generados por el circuito de estimación de probabilidad 1502 para generar el flujo de bits que emite el codificador de vídeo 20.
Como ejemplo, el circuito de estimación de probabilidad 1502 puede determinar una probabilidad de bin para al menos un bin del flujo de bins con una pluralidad de filtros (por ejemplo, Hi(z)). Un primer filtro (por ejemplo, Ho(z)) de la pluralidad de filtros recibe valores basándose en el flujo de bins. Un último filtro (por ejemplo, Hf(z )) de la pluralidad de filtros emite la probabilidad de bin. Cada uno de los otros filtros (por ejemplo, de H-i (z) a Hf--i(z )) recibe valores desde su filtro inmediatamente anterior y determina valores para su siguiente filtro basándose en los valores recibidos y valores de parámetro respectivos para cada uno de los filtros (por ejemplo, y , m , m y y ,). El último filtro recibe valores desde su filtro inmediatamente anterior y determina la probabilidad de bin basándose en los valores recibidos y valores de parámetro para el último filtro (por ejemplo, y F, mf, wf, y y F).
Una función de transferencia aplicada por el primer filtro para generar sus valores comprende Ho(z) = yz-1, en donde y comprende un parámetro para el primer filtro, y z es la variable para una transformada z. Una función de transferencia l- ( l-< p ¡2 ni)z~
H i(z ) =
aplicada por cada uno de los filtros posteriores al primer filtro comprende /= 1,2, ... , F, en donde i indica el orden relativo de un filtro, en donde y , m , m y y i son valores de parámetro respectivos para los filtros. Cada uno de y , mí, m y yi pueden ser números enteros, y en algunos ejemplos, cada uno de y , mí, m y yi pueden ser números enteros relativamente pequeños.
La figura 16 es un diagrama de bloques que ilustra una unidad de descodificación por entropía ilustrativa. Por ejemplo, la figura 16 ilustra un ejemplo de la unidad de descodificación por entropía 300 de la figura 3 con mayor detalle. La unidad de descodificación por entropía 300 puede incluir componentes adicionales o menos componentes, y las interconexiones específicas ilustradas en la figura 16 son simplemente para facilitar la comprensión y no se deberían considerar limitantes. La unidad de descodificación por entropía 300 puede incluir un circuito de descodificador aritmético 1604 que recibe un flujo de bits (por ejemplo, elementos de sintaxis codificados) y realiza una descodificación aritmética basándose en los contextos de codificación (por ejemplo, probabilidades) determinados por el circuito de estimación de probabilidad 1606. Como ejemplo, el circuito de estimación de probabilidad 1606 puede realizar las operaciones ilustradas en la figura 14 o alguna forma de inversa de esas operaciones. El circuito de binarización inversa 1600 recibe la salida desde el circuito de descodificador aritmético 1604 y realiza el proceso de binarización inversa para generar los datos de vídeo usados para reconstruir las imágenes.
Como ejemplo, el circuito de estimación de probabilidad 1606 determina una probabilidad de bin para al menos un bin del flujo de bins con una pluralidad de filtros (por ejemplo, Hi(z)). Un primer filtro (por ejemplo, Ho(z)) de la pluralidad de filtros recibe valores basándose en el flujo de bits. Un último filtro (por ejemplo, Hf(z )) de la pluralidad de filtros emite la probabilidad de bin. Cada uno de los otros filtros (por ejemplo, de H-i (z) a Hf--i(z )) recibe valores desde su filtro inmediatamente anterior y determina valores para su siguiente filtro basándose en los valores recibidos y valores de parámetro respectivos para cada uno de los filtros (por ejemplo, y , mí, m y y). El último filtro recibe valores desde su filtro inmediatamente anterior y determina la probabilidad de bin basándose en los valores recibidos y valores de parámetro para el último filtro (por ejemplo, y F, mf, wf, y y F).
Una función de transferencia aplicada por el primer filtro para generar sus valores comprende Ho(z) = yz-1, en donde y comprende un parámetro para el primer filtro, y z es la variable para una transformada z. Una función de transferencia ( . _ l - ( l - < p ;2 ” Q z 1 aplicada por cada uno de los filtros posteriores al primer filtro comprende v J / = 1, 2, , F, en donde i indica el orden relativo de un filtro, en donde q>¡, w¡, m y j i son valores de parámetro respectivos para los filtros. Cada uno de q>¡, w¡, m y j i pueden ser números enteros, y en algunos ejemplos, cada uno de q>¡, w¡, m y j i pueden ser números enteros relativamente pequeños.
Los siguientes párrafos numerados describen ejemplos particulares de acuerdo con técnicas de esta divulgación.
Ejemplo 1. Un método de descodificación de datos de vídeo, comprendiendo el método: determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un flujo de bits, en donde aplicar la descodificación aritmética binaria comprende generar un flujo de bins, en donde generar el flujo de bins comprende: determinar una probabilidad de bin para al menos un bin del flujo de bins con una pluralidad de filtros, en donde un primer filtro de la pluralidad de filtros recibe valores basándose en el flujo de bits, un último filtro de la pluralidad de filtros emite la probabilidad de bin, cada uno de los otros filtros recibe valores desde su filtro inmediatamente anterior y determina valores para su siguiente filtro basándose en los valores recibidos y valores de parámetro respectivos para cada uno de los filtros, y el último filtro recibe valores desde su filtro inmediatamente anterior y determina la probabilidad de bin basándose en los valores recibidos y valores de parámetro para el último filtro; desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado; y reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado.
Ejemplo 2. El método del ejemplo 1, en donde la pluralidad de filtros se dispone en una configuración en cascada. Ejemplo 3. El método de cualquiera de los ejemplos 1 y 2, en donde una función de transferencia aplicada por el primer filtro para generar sus valores comprende Ho(z) = yz’1, en donde y comprende un parámetro para el primer filtro, y z es la variable para una transformada z.
Ejemplo 4. El método de cualquiera de los ejemplos 1-3, en donde una función de transferencia aplicada por cada uno -í-(í-<pl2 ~7Ti)z~í
de los filtros posteriormente al primer filtro comprende H(z) = ■ ! -( 1-íüf2 ^Oz-1 ’ / = -y 2, ... , F, en donde i indica el orden relativo de un filtro, en donde q>¡, w, m y j i son valores de parámetro respectivos para los filtros.
Ejemplo 5. El método del ejemplo 4, en donde cada uno de q>¡, w¡, m y j i son números enteros.
Ejemplo 6. El método del ejemplo 4, en donde cada uno de q>¡, w¡, m y j i son números enteros relativamente pequeños. Ejemplo 7. El método de cualquiera de los ejemplos 1-6, que comprende además: determinar un símbolo menos probable basándose al menos en parte en realizar las operaciones de:
Figure imgf000029_0001
Ejemplo 8. Un método de codificación de datos de vídeo, comprendiendo el método: recibir un elemento de sintaxis basándose en los datos de vídeo; aplicar una codificación aritmética binaria al elemento de sintaxis, en donde aplicar la codificación aritmética binaria comprende: generar un flujo de bins binarizando el elemento de sintaxis; determinar una probabilidad de bin para al menos un bin del flujo de bins con una pluralidad de filtros, en donde un primer filtro de la pluralidad de filtros recibe valores basándose en el flujo de bins, un último filtro de la pluralidad de filtros emite la probabilidad de bin, cada uno de los otros filtros recibe valores desde su filtro inmediatamente anterior y determina valores para su siguiente filtro basándose en los valores recibidos y valores de parámetro respectivos para cada uno de los filtros, y el último filtro recibe valores desde su filtro inmediatamente anterior y determina la probabilidad de bin basándose en los valores recibidos y valores de parámetro para el último filtro; generar un flujo de bits basándose en al menos un bin y la probabilidad de bin; y emitir el flujo de bits.
Ejemplo 9. El método del ejemplo 8, en donde la pluralidad de filtros se dispone en una configuración en cascada. Ejemplo 10. El método de cualquiera de los ejemplos 8 y 9, en donde una función de transferencia aplicada por el primer filtro para generar sus valores comprende Ho(z) = yz-1, en donde y comprende un parámetro para el primer filtro, y z es la variable para una transformada z.
Ejemplo 11. El método de cualquiera de los ejemplos 8-10, en donde una función de transferencia aplicada porcada í - ( i - ( p i2~ni)z~1
uno de los filtros posteriormente al primer filtro comprende H(z) = ^ 1 ' i = 1, 2, ... , F, en donde i indica el orden relativo de un filtro, en donde q>¡, w¡, m y j i son valores de parámetro respectivos para los filtros.
Ejemplo 12. El método del ejemplo 11, en donde cada uno de q>¡, w¡, m y j i son números enteros.
Ejemplo 13. El método del ejemplo 11, en donde cada uno de q>¡, w¡, m y j i son números enteros relativamente pequeños.
Ejemplo 14. El método de cualquiera de los ejemplos 8-13, que comprende además: determinar un símbolo menos probable basándose al menos en parte en realizar las operaciones de:
Figure imgf000030_0001
La figura 17 es un diagrama de flujo que ilustra un funcionamiento ilustrativo del codificador de vídeo 20, de acuerdo con una o más técnicas de esta divulgación. Los diagramas de flujo de esta divulgación se proporcionan como ejemplos. Otros ejemplos de acuerdo con técnicas de esta divulgación pueden implicar más, menos o diferentes acciones. Además, en algunos ejemplos, se pueden realizar acciones particulares en órdenes diferentes o en paralelo.
En el ejemplo de la figura 17, el codificador de vídeo 20 puede generar un elemento de sintaxis basándose en los datos de vídeo (1700). Por ejemplo, el codificador de vídeo 20 puede generar un elemento de sintaxis que indica si un valor residual es mayor que 1, un elemento de sintaxis que indica si un valor residual es mayor que 2, u otro tipo de elemento de sintaxis.
Adicionalmente, el codificador de vídeo 20 puede determinar un valor de desplazamiento al menos en parte aplicando una codificación aritmética binaria (por ejemplo, codificación CABAC) al elemento de sintaxis (1702). Como parte de aplicar una codificación aritmética binaria al elemento de sintaxis, el codificador de vídeo 20 puede generar un flujo de bins al menos en parte binarizando el elemento de sintaxis (1704). El codificador de vídeo 20 puede binarizar el elemento de sintaxis de diversas formas. Por ejemplo, el codificador de vídeo 20 puede binarizar el elemento de sintaxis usando un proceso de binarización de Rice truncada, un proceso de binarización de Golomb exponencial de k-ésimo orden, un proceso de binarización de longitud fija u otro tipo de proceso de binarización. En algunos ejemplos, el codificador de vídeo 20 usa diferentes procesos de binarización para diferentes tipos de elementos de sintaxis. En algunos ejemplos, el flujo de bins puede incluir bins generados binarizando múltiples elementos de sintaxis.
Además, para al menos un bin respectivo del flujo de bins, el codificador de vídeo 20 puede determinar un intervalo para un siguiente bin del flujo de bins (1706). En este ejemplo, el codificador de vídeo 20 puede determinar el intervalo para el siguiente bin basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y un valor del bin respectivo. El estado para el bin respectivo corresponde a una estimación de la probabilidad de que el bin respectivo sea un primer valor y una estimación de la probabilidad de que el bin respectivo sea un segundo valor diferente. Si el bin respectivo es el primer bin después de la reinicialización, el estado para el bin respectivo es el mismo que las estimaciones de probabilidad iniciales asociadas con un contexto de codificación.
En algunos ejemplos, el codificador de vídeo 20 puede realizar las siguientes acciones para cada bin respectivo del flujo de bins como parte de determinar el intervalo para el siguiente bin. En particular, el codificador de vídeo 20 puede dividir, basándose en el estado para el bin respectivo, el intervalo para el bin respectivo en un intervalo asociado con un primer símbolo y un intervalo asociado con un segundo símbolo. Adicionalmente, el codificador de vídeo 20 puede establecer uno de un límite superior o un límite inferior del intervalo para el siguiente bin basándose en si el valor del bin respectivo es igual al primer símbolo o igual al segundo símbolo. El límite superior del intervalo para el siguiente bin se establece a un límite superior del intervalo asociado con el primer símbolo y el límite inferior del intervalo para el siguiente bin permanece sin cambios en respuesta a determinar que el valor del bin respectivo es igual al primer símbolo. El límite inferior del intervalo para el siguiente bin se establece a un límite inferior del intervalo asociado con el segundo símbolo y el límite superior del intervalo para el siguiente bin permanece sin cambios en respuesta a determinar que el valor del bin respectivo es igual al segundo símbolo.
Por ejemplo, si el bin respectivo es el primer bin después de la reinicialización, el intervalo para el bin respectivo es de 0 a 1. En este ejemplo, si el estado para un primer bin indica que el símbolo 0 tiene una probabilidad de 0,6 y el símbolo 1 tiene una probabilidad de 0,4, el codificador de vídeo 20 puede dividir el intervalo para el primer bin en un intervalo de 0 a 0,6 y un intervalo de 0,6 a 1. Si el valor del primer bin es 0, el codificador de vídeo 20 puede establecer el límite superior del intervalo para el segundo bin a 0,6 y puede establecer el límite inferior del intervalo para el segundo bin a 0. Si el valor del primer bin es 1, el codificador de vídeo 20 puede establecer el límite inferior del intervalo para el segundo bin a 0,6 y puede establecer el límite superior del intervalo para el segundo bin a 1. Posteriormente, si el estado para el segundo bin indica que el símbolo 0 tiene una probabilidad de 0,7 y el símbolo 1 tiene una probabilidad de 0,3, y el intervalo para el segundo bin es de 0 a 0,6, el codificador de vídeo 20 puede dividir el intervalo para el segundo bin en un intervalo de 0 a 0,42 y un intervalo de 0,42 a 0,6. Si el valor del segundo bin es 0, el codificador de vídeo 20 puede establecer el límite superior del intervalo para el tercer bin a 0,42 y puede establecer el límite inferior del intervalo para el tercer bin a 0. Si el valor del segundo bin es 1, el codificador de vídeo 20 puede establecer el límite inferior del intervalo para el tercer bin a 0,42 y puede establecer el límite superior del intervalo para el tercer bin a 0,6. En algunos ejemplos, el codificador de vídeo 20 puede usar valores enteros en lugar de valores entre 0 y 1.
Además, el codificador de vídeo 20 puede determinar uno o más parámetros de FSM para el siguiente bin del flujo de bins (1708). Los uno o más parámetros de FSM para el siguiente bin controlan cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo. En algunos casos, los uno o más parámetros de FSM para un primer bin del flujo de bins (por ejemplo, el bin actual) son diferentes de los uno o más parámetros de FSM para un segundo bin del flujo de bins (por ejemplo, el siguiente bin).
El codificador de vídeo 20 puede determinar los uno o más parámetros de FSM de acuerdo con cualquiera de los ejemplos proporcionados en alguna otra parte en esta divulgación. Por ejemplo, en un ejemplo, como parte de determinar los uno o más parámetros de f Sm para el siguiente bin del flujo de bins, el codificador de vídeo 20 puede reinicializar los uno o más parámetros de FSM para el siguiente bin del flujo de bins de acuerdo con un parámetro de reinicialización de estado.
En algunos ejemplos, el codificador de vídeo 20 modifica los parámetros de FSM para el siguiente bin del flujo de bins de acuerdo con valores de probabilidad estimados. En algunos ejemplos, el codificador de vídeo 20 modifica los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada. En algunos ejemplos, el codificador de vídeo 20 determina los uno o más parámetros de FSM para el siguiente bin del flujo de bins basándose en uno o más bloques vecinos en la misma trama o en una trama descodificada previamente.
En algunos ejemplos, el codificador de vídeo 20 realiza un proceso para determinar los uno o más parámetros de FSM para cada bin del flujo de bins. En otros ejemplos, el codificador de vídeo 20 solo realiza el proceso para determinar los uno o más parámetros de FSM para bins particulares del flujo de bins. Por ejemplo, en un ejemplo, el codificador de vídeo 20 solo puede realizar el proceso para determinar los uno o más parámetros de f Sm usados en la determinación de las estimaciones de probabilidad para el segundo bin después de la reinicialización y puede continuar usando los mismos uno o más parámetros de FSM hasta el siguiente suceso de reinicialización. En algunos ejemplos, el codificador de vídeo 20 puede realizar el proceso para determinar los uno o más parámetros de FSM en otros momentos, tal como en límites de bloque, límites de sector, y así sucesivamente.
El codificador de vídeo 20 también puede usar una función de actualización de estado parametrizada para determinar un estado para el siguiente bin del flujo de bins (1710). La función de actualización de estado parametrizada toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo. Por ejemplo, el codificador de vídeo 20 puede determinar el estado para el siguiente bin usando la ecuación (4) o la ecuación (22).
En el ejemplo de la figura 17, el valor de desplazamiento puede ser igual a un valor en el intervalo para un último bin del flujo de bins. El codificador de vídeo 20 puede emitir un flujo de bits que comprende el valor de desplazamiento (1712). Por ejemplo, el codificador de vídeo 20 puede almacenar el flujo de bits en, o enviarlo a, un medio legible por ordenador 16 (la figura 1).
La figura 18 es un diagrama de flujo que ilustra un funcionamiento ilustrativo del descodificador de vídeo 30, de acuerdo con una o más técnicas de esta divulgación. En el ejemplo de la figura 18, el descodificador de vídeo 30 puede recibir un flujo de bits y puede determinar uno o más elementos de sintaxis descodificados aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits (1800). Como parte de determinar los uno o más elementos de sintaxis descodificados, el descodificador de vídeo 30 puede generar un flujo de bins. Este flujo de bins puede ser parte de un flujo de bins más largo o todo el flujo de bins. El flujo de bits puede comprender una representación codificada de datos de vídeo.
Además, como parte de generar el flujo de bins, el descodificador de vídeo 30 puede realizar las siguientes acciones para al menos un bin respectivo del flujo de bins. En particular, el descodificador de vídeo 30 puede determinar un valor del bin respectivo (1802). El descodificador de vídeo 30 puede determinar el valor del bin respectivo basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento. Por ejemplo, en un ejemplo, para cada bin respectivo del flujo de bins, el descodificador de vídeo 30 puede determinar el valor del bin respectivo al menos en parte dividiendo, basándose en el estado para el bin respectivo, el intervalo para el bin respectivo en un intervalo asociado con un primer símbolo y un intervalo asociado con un segundo símbolo. Adicionalmente, el descodificador de vídeo 30 puede determinar el valor del bin respectivo basándose en si el valor de desplazamiento está en el intervalo asociado con el primer símbolo o en el intervalo asociado con el segundo símbolo. En este ejemplo, el valor del bin respectivo es igual al primer símbolo en respuesta a determinar que el valor de desplazamiento está en el intervalo asociado con el primer símbolo. Además, en este ejemplo, el valor del bin respectivo es igual al segundo símbolo en respuesta a determinar que el valor de desplazamiento está en el intervalo asociado con el segundo símbolo.
Por ejemplo, en un ejemplo específico, el intervalo asociado con un primer bin puede ser de 0 a 1. En este ejemplo, el estado para el primer bin indica que el símbolo 0 tiene una probabilidad de 0,6 y el estado para el segundo bin indica que el símbolo 1 tiene una probabilidad de 0,4. Por consiguiente, en este ejemplo, el descodificador de vídeo 30 puede dividir el intervalo asociado con el primer bin en un intervalo asociado con el símbolo 0 que varía de 0 a 0,6 y un intervalo asociado con el símbolo 1 que varía de 0,6 a 1. En este ejemplo, si el valor de desplazamiento está entre 0 y 0,6, el descodificador de vídeo 30 determina que el valor del primer bin es igual a 0. Si el valor de desplazamiento está entre 0,6 y 1, el descodificador de vídeo 30 determina que el valor del primer bin es igual a 1. En este ejemplo, si el valor del primer bin es 0, el descodificador de vídeo 30 puede determinar que el intervalo para un segundo bin es de 0 a 0,6. Si el valor del primer bin es 1, el descodificador de vídeo 30 puede determinar que el intervalo para el segundo bin es de 0,6 a 1. Además, suponiendo que el valor del primer bin es igual a 1 y el estado para el segundo bin indica que el segundo bin tiene una probabilidad de 0,7 de ser el símbolo 0 tiene una probabilidad de 0,3 de ser el símbolo 1, el descodificador de vídeo 30 puede dividir el intervalo de 0,6 a 1 en un intervalo de 0,6 a 0,88 correspondiente al símbolo 0 y un intervalo de 0,88 a 1 correspondiente al símbolo 0. Por lo tanto, si el valor de desplazamiento está entre 0,6 y 0,88, el descodificador de vídeo 30 determina que el valor del segundo bin es 0. Si el valor de desplazamiento está entre 0,88 y 1, el descodificador de vídeo 30 determina que el valor del segundo bin es 1. El descodificador de vídeo 30 puede continuar este proceso para cada bin del flujo de bins. En algunos ejemplos, el descodificador de vídeo 30 puede usar valores enteros en lugar de valores entre 0 y 1.
En el ejemplo de la figura 18, el descodificador de vídeo 30 puede determinar uno o más parámetros de FSM para un siguiente bin del flujo de bins (1804). Controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo. Siguiendo el siguiente bin del flujo de bins al bin respectivo en el flujo de bins. En algunos casos, los uno o más parámetros de FSM para un primer bin del flujo de bins (por ejemplo, el bin actual) son diferentes de los uno o más parámetros de FSM para un segundo bin del flujo de bins (por ejemplo, el siguiente bin).
El descodificador de vídeo 30 puede determinar los uno o más parámetros de FSM de acuerdo con cualquiera de los ejemplos descritos en alguna otra parte en esta divulgación. Por ejemplo, como parte de determinar los uno o más parámetros de FSM para el siguiente bin, el descodificador de vídeo 30 puede reinicializar los parámetros de FSM para el siguiente bin del flujo de bins de acuerdo con un parámetro de reinicialización de estado. En algunos ejemplos, como parte de determinar los uno o más parámetros de FSM para el siguiente bin, el descodificador de vídeo 30 puede modificar los parámetros de FSM para el siguiente bin del flujo de bins de acuerdo con valores de probabilidad estimados. En algunos ejemplos, como parte de determinar los uno o más parámetros de FSM para el siguiente bin, un vídeo que modifica los parámetros de FSM para el siguiente bin del flujo de bins basándose en una medida de variación de probabilidad pasada. En algunos ejemplos, como parte de determinar los uno o más parámetros de FSM para el siguiente bin, el descodificador de vídeo 30 puede determinar los uno o más parámetros de FSM para el siguiente bin del flujo de bins basándose en uno o más bloques vecinos en la misma trama o en una trama descodificada previamente.
En algunos ejemplos, el descodificador de vídeo 30 realiza un proceso para determinar los uno o más parámetros de FSM para cada bin del flujo de bins. En otros ejemplos, el descodificador de vídeo 30 solo realiza el proceso para determinar los uno o más parámetros de FSM para bins particulares del flujo de bins. Por ejemplo, en un ejemplo, el descodificador de vídeo 30 solo puede realizar el proceso para determinar los uno o más parámetros de FSM usados en la determinación de las estimaciones de probabilidad para el segundo bin después de la reinicialización y puede continuar usando los mismos uno o más parámetros de f Sm hasta el siguiente suceso de reinicialización. En algunos ejemplos, el descodificador de vídeo 30 puede realizar el proceso para determinar los uno o más parámetros de FSM en otros momentos, tal como en límites de bloque, límites de sector, y así sucesivamente.
Además, el descodificador de vídeo 30 puede determinar un estado para el siguiente bin del flujo de bins (1806). El descodificador de vídeo 30 puede usar una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo. Por ejemplo, el codificador de vídeo 20 puede determinar el estado para el siguiente bin usando la ecuación (4) o la ecuación (22).
Adicionalmente, el descodificador de vídeo 30 puede desbinarizar el flujo de bins para formar los uno o más elementos de sintaxis descodificados (1808). Como se ha mencionado en alguna otra parte en esta divulgación, los elementos de sintaxis se pueden binarizar usando diversos procesos, como un proceso de binarización de Rice truncada, un proceso de binarización de Golomb exponencial de k-ésimo orden, un proceso de binarización de longitud fija u otro tipo de proceso de binarización. Estos procesos correlacionan valores de elementos de sintaxis con códigos binarios. Para desbinarizar el flujo de bins, el descodificador de vídeo 30 puede buscar los valores correspondientes a los códigos binarios en el flujo de bins.
En el ejemplo de la figura 18, el descodificador de vídeo 30 puede reconstruir una imagen de los datos de vídeo basándose en parte en los uno o más elementos de sintaxis descodificados (1810). Por ejemplo, si los elementos de sintaxis descodificados indican si hay valores restantes de los datos residuales, el descodificador de vídeo 30 puede usar los valores restantes para determinar valores de muestras residuales. En este ejemplo, el descodificador de vídeo 30 puede usar las muestras residuales y muestras predictivas correspondientes para reconstruir valores de muestra de la imagen, como se describe en alguna otra parte en esta divulgación. En algunos ejemplos, los elementos de sintaxis descodificados pueden incluir elementos de sintaxis que indican si los bloques se codifican con intrapredicción o interpredicción. En tales ejemplos, el descodificador de vídeo 30 puede usar tales elementos de sintaxis para determinar si reconstruir los bloques usando intrapredicción o interpredicción.
Ciertos aspectos de esta divulgación se han descrito con respecto a extensiones de la norma de HEVC para fines de ilustración. Sin embargo, las técnicas descritas en esta divulgación pueden ser útiles para otros procesos de codificación/descodificación de vídeo, incluyendo otros procesos de codificación/descodificación de vídeo convencionales o de propiedad exclusiva aún por desarrollar.
Un codificador/descodificador de vídeo, como se describe en esta divulgación, se puede referir a un codificador de vídeo o un descodificador de vídeo. De manera similar, una unidad de codificación/descodificación de vídeo se puede referir a un codificador de vídeo o un descodificador de vídeo. Asimismo, la codificación/descodificación de vídeo se puede referir a la codificación de vídeo o a la descodificación de vídeo, según sea aplicable. En esta divulgación, la expresión "basándose en" puede indicar basándose solo en, basándose al menos en parte o basándose de alguna manera en. Esta divulgación puede usar la expresión "unidad de vídeo" o "bloque de vídeo" o "bloque" para referirse a uno o más bloques de muestra y estructuras de sintaxis usadas para codificar muestras de los uno o más bloques de muestras. Los tipos ilustrativos de unidades de vídeo pueden incluir CTU, CU, PU, unidades de transformada (TU), macrobloques, particiones de macrobloque, y así sucesivamente. En algunos contextos, el análisis de las PU se puede intercambiar con el análisis de los macrobloques o las particiones de macrobloque. Los tipos ilustrativos de bloques de vídeo pueden incluir bloques de árbol de codificación, bloques de codificación y otros tipos de bloques de datos de vídeo.
Las técnicas de esta divulgación se pueden aplicar a codificación/descodificación de vídeo en apoyo de cualquiera de una diversidad de aplicaciones multimedia, tales como difusiones de televisión en el transcurso de la comunicación, transmisiones de televisión de cable, transmisiones de televisión por satélite, transmisiones de vídeo de envío por flujo continuo de Internet, tales como envío por flujo continuo adaptativo dinámico a través de HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones.
Ha de reconocerse que, dependiendo del ejemplo, ciertos actos o sucesos de cualquiera de las técnicas descritas en el presente documento pueden realizarse en una secuencia diferente, pueden añadirse, fusionarse o excluirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en práctica de las técnicas). Además, en ciertos ejemplos, los actos o sucesos se pueden realizar de manera concurrente, por ejemplo, a través de procesamiento de múltiples hilos, procesamiento de interrupción o múltiples procesadores en lugar de secuencialmente.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través de, como una o más instrucciones o código, un medio legible por ordenador, y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, lo que corresponde a un medio tangible tal como unos medios de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que son no transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder uno o más ordenadores o uno o más circuitos de procesamiento para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no como limitación, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda acceder un ordenador. Asimismo, cualquier conexión se denomina apropiadamente como un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea digital de abonado (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que medios de almacenamiento legibles por ordenador y medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en su lugar, se refieren a medios de almacenamiento tangibles no transitorios. Disco magnético y disco óptico, como se usan en este documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray donde los discos magnéticos normalmente reproducen datos magnéticamente, mientras que los discos ópticos reproducen datos ópticamente con láseres. Combinaciones de lo anterior deberían incluirse también dentro del alcance de medios legibles por ordenador.
La funcionalidad descrita en esta divulgación se puede realizar mediante una función fija y/o una circuitería de procesamiento programare. Por ejemplo, las instrucciones se pueden ejecutar mediante una función fija y/o una circuitería de procesamiento programable. Tal circuitería de procesamiento puede incluir uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables en campo (FPGA) u otra circuitería integrada o de lógica discreta equivalente. Por consiguiente, el término "procesador", como se usa en el presente documento puede hacer referencia a cualquiera de la estructura anterior o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de hardware especializado y/o módulos de software configurados para codificar y descodificar o incorporarse en un códec combinado. Asimismo, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos. Se pueden acoplar circuitos de procesamiento a otros componentes de diversas formas. Por ejemplo, un circuito de procesamiento se puede acoplar a otros componentes a través de una interconexión con dispositivos interna, una conexión de red cableada o inalámbrica u otro medio de comunicación.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, que incluye un microteléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos o unidades en esta divulgación para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización por diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una recopilación de unidades de hardware inter operativas, que incluyen uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.
Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (15)

REIVINDICACIONES
1. Un método de descodificación de datos de vídeo, comprendiendo el método:
determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits, en donde aplicar la descodificación aritmética binaria comprende: generar un flujo de bins, en donde generar el flujo de bins comprende:
para al menos un bin respectivo del flujo de bins:
determinar un valor del bin respectivo basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento;
determinar uno o más parámetros de máquina de estados finitos (FSM) para un siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, siguiendo el siguiente bin del flujo de bins al bin respectivo en el flujo de bins; y
determinar un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo; y
desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado; y
reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado, caracterizado por que determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada.
2. El método de la reivindicación 1, en donde determinar los uno o más parámetros de FSM para el siguiente bin del flujo de bins comprende:
reinicializar los parámetros de FSM para el siguiente bin del flujo de bins de acuerdo con un parámetro de reinicialización de estado.
3. El método de la reivindicación 1, en donde determinar los uno o más parámetros de FSM para el siguiente bin del flujo de bins comprende:
modificar los parámetros de FSM para el siguiente bin del flujo de bins de acuerdo con valores de probabilidad estimados.
4. El método de la reivindicación 1, en donde la medida de variación de probabilidad pasada se calcula sumando diferencias absolutas entre probabilidades estimadas usando una medida de variación de estimación para el bin particular definida como:
Figure imgf000035_0001
en donde a[k+1] es la medida de variación de estimación para el siguiente bin del flujo de bins, a[k] es una medida de variación de estimación para el bin particular, qi[k] es una primera estimación de probabilidad para el bin particular, q2 [k] es una segunda estimación de probabilidad para el bin particular, y c es un parámetro.
5. El método de la reivindicación 1, en donde determinar los uno o más parámetros de FSM para el siguiente bin del flujo de bins comprende:
determinar los uno o más parámetros de FSM para el siguiente bin del flujo de bins basándose en uno o más bloques vecinos en la misma trama o en una trama descodificada previamente.
6. El método de la reivindicación 1, en donde, para cada bin respectivo del flujo de bins, determinar el estado para el siguiente bin del flujo de bins comprende:
determinar el estado para el siguiente bin de acuerdo con las siguientes ecuaciones:
Figure imgf000036_0001
en donde p[k+1 ] es el estado para el siguiente bin del flujo de bins, p[k] es el estado para el bin respectivo, b[k] es el valor del bin respectivo, a es un primer parámetro de los uno o más parámetros de FSM para el siguiente bin, y b es un segundo parámetro de los uno o más parámetros de FSM para el siguiente bin.
7. El método de la reivindicación 1, en donde, para cada bin respectivo del flujo de bins, determinar el valor del bin respectivo comprende:
dividir, basándose en el estado para el bin respectivo, el intervalo para el bin respectivo en un intervalo asociado con un primer símbolo y un intervalo asociado con un segundo símbolo; y
determinar el valor del bin respectivo basándose en si el valor de desplazamiento está en el intervalo asociado con el primer símbolo o en el intervalo asociado con el segundo símbolo,
en donde el valor del bin respectivo es igual al primer símbolo en respuesta a determinar que el valor de desplazamiento está en el intervalo asociado con el primer símbolo, y
en donde el valor del bin respectivo es igual al segundo símbolo en respuesta a determinar que el valor de desplazamiento está en el intervalo asociado con el segundo símbolo.
8. El método de la reivindicación 1, que comprende además recibir el flujo de bits.
9. El método de la reivindicación 1, en donde los uno o más parámetros de FSM para un primer bin del flujo de bins son diferentes de los uno o más parámetros de FSM para un segundo bin del flujo de bins.
10. Un método de codificación de datos de vídeo, comprendiendo el método:
generar un elemento de sintaxis basándose en los datos de vídeo;
determinar un valor de desplazamiento al menos en parte aplicando una codificación aritmética binaria al elemento de sintaxis, en donde aplicar la codificación aritmética binaria comprende:
generar un flujo de bins al menos en parte al:
binarizar el elemento de sintaxis;
para al menos un bin respectivo del flujo de bins:
determinar un intervalo para un siguiente bin del flujo de bins basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y un valor del bin respectivo;
determinar uno o más parámetros de máquina de estados finitos (FSM) para el siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo; y
determinar un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo,
en donde el valor de desplazamiento es igual a un valor en el intervalo para un último bin del flujo de bins; y emitir un flujo de bits que comprende el valor de desplazamiento;
caracterizado por que determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada.
11. Un aparato para descodificar datos de vídeo, comprendiendo el aparato:
uno o más medios de almacenamiento configurados para almacenar datos de vídeo; y
uno o más procesadores configurados para:
determinar un elemento de sintaxis descodificado aplicando una descodificación aritmética binaria a un valor de desplazamiento incluido en un flujo de bits, en donde los uno o más procesadores están configurados de tal manera que, como parte de aplicar la descodificación aritmética binaria, los uno o más procesadores:
generan un flujo de bins, en donde, como parte de generar el flujo de bins, los uno o más procesadores:
para al menos un bin respectivo del flujo de bins:
determinan un valor del bin respectivo basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y el valor de desplazamiento;
determinan uno o más parámetros de máquina de estados finitos (FSM) para un siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo, siguiendo el siguiente bin del flujo de bins al bin respectivo en el flujo de bins; y
determinan un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo; y
desbinarizar el flujo de bins para formar el elemento de sintaxis descodificado; y
reconstruir una imagen de los datos de vídeo basándose en parte en el elemento de sintaxis descodificado; caracterizado por que determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada.
12. Un aparato para codificar datos de vídeo, comprendiendo el aparato:
uno o más medios de almacenamiento configurados para almacenar datos de vídeo; y
uno o más circuitos de procesamiento acoplados a los uno o más medios de almacenamiento, los uno o más circuitos de procesamiento configurados para:
generar un elemento de sintaxis basándose en los datos de vídeo;
determinar un valor de desplazamiento al menos en parte aplicando una codificación aritmética binaria al elemento de sintaxis, en donde los uno o más procesadores están configurados de tal manera que, como parte de aplicar la codificación aritmética binaria, los uno o más procesadores generan un flujo de bins al menos en parte al: binarizar el elemento de sintaxis; y
para al menos un bin respectivo del flujo de bins:
determinar un intervalo para un siguiente bin del flujo de bins basándose en un estado para el bin respectivo, un intervalo para el bin respectivo, y un valor del bin respectivo;
determinar uno o más parámetros de máquina de estados finitos (FSM) para el siguiente bin del flujo de bins, controlando los uno o más parámetros de FSM para el siguiente bin cómo se calculan las estimaciones de probabilidad para el siguiente bin a partir de un estado para el bin respectivo; y
determinar un estado para el siguiente bin del flujo de bins usando una función de actualización de estado parametrizada que toma como entrada el estado para el bin respectivo, los uno o más parámetros de FSM para el siguiente bin del flujo de bins, y el valor del bin respectivo,
en donde el valor de desplazamiento es igual a un valor en el intervalo para un último bin del flujo de bins; y emitir un flujo de bits que comprende el valor de desplazamiento;
caracterizado por que determinar los uno o más parámetros de FSM para el siguiente bin comprende modificar los parámetros de FSM para el siguiente bin basándose en una medida de variación de probabilidad pasada.
13. El aparato de la reivindicación 12, en donde los uno o más parámetros de FSM para un primer bin del flujo de bins son diferentes de los uno o más parámetros de FSM para un segundo bin del flujo de bins.
14. El aparato de la reivindicación 12, en donde el aparato comprende:
un circuito integrado,
un microprocesador o
un dispositivo de comunicación inalámbrica.
15. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, hacen que uno o más procesadores realicen el método de una cualquiera de las reivindicaciones 1 a 10.
ES18716473T 2017-03-22 2018-03-22 Codificación aritmética binaria con máquinas de estados finitos de estimación de probabilidad parametrizadas Active ES2878325T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762474919P 2017-03-22 2017-03-22
US201762475609P 2017-03-23 2017-03-23
US15/927,753 US10554988B2 (en) 2017-03-22 2018-03-21 Binary arithmetic coding with parameterized probability estimation finite state machines
PCT/US2018/023754 WO2018175716A1 (en) 2017-03-22 2018-03-22 Binary arithmetic coding with parameterized probability estimation finite state machines

Publications (1)

Publication Number Publication Date
ES2878325T3 true ES2878325T3 (es) 2021-11-18

Family

ID=63583805

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18716473T Active ES2878325T3 (es) 2017-03-22 2018-03-22 Codificación aritmética binaria con máquinas de estados finitos de estimación de probabilidad parametrizadas

Country Status (9)

Country Link
US (1) US10554988B2 (es)
EP (1) EP3603062B1 (es)
KR (1) KR102600727B1 (es)
CN (1) CN110419216B (es)
AU (1) AU2018237342B2 (es)
BR (1) BR112019019170A2 (es)
ES (1) ES2878325T3 (es)
SG (1) SG11201907259YA (es)
WO (1) WO2018175716A1 (es)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112929661B (zh) * 2015-10-13 2023-04-21 三星电子株式会社 解码方法和编码方法
DE102017204946A1 (de) * 2017-03-23 2018-09-27 Volkswagen Aktiengesellschaft Verfahren zur Bestimmung eines Wertes einer Integer-Skalierung in einer Verknüpfung von Eingangsmengen zu Ausgangsmengen und Computerprogrammprodukt
US10791341B2 (en) 2017-10-10 2020-09-29 Qualcomm Incorporated Binary arithmetic coding with progressive modification of adaptation parameters
US10939115B2 (en) 2018-06-19 2021-03-02 Qualcomm Incorporated Efficient weighted probability estimation for binary arithmetic coding
KR20210135249A (ko) * 2019-03-11 2021-11-12 인터디지털 브이씨 홀딩스 인코포레이티드 정규 코딩된 빈들의 수의 감소
CN112073729B (zh) * 2019-06-11 2024-04-05 北京三星通信技术研究有限公司 模型更新方法、装置、电子设备及计算机可读存储介质
CN113994679B (zh) 2019-06-21 2024-07-12 北京字节跳动网络技术有限公司 关于上下文编解码二进制位的数量的限制
CN111147083B (zh) * 2019-12-10 2023-06-27 中国航空工业集团公司成都飞机设计研究所 一种时间信息压缩传输的方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5278827B2 (ja) * 2007-09-06 2013-09-04 日本電気株式会社 映像符号化装置、映像復号装置、映像符号化方法、映像復号方法、映像符号化あるいは復号プログラム
JP4994515B2 (ja) * 2009-06-19 2012-08-08 三菱電機株式会社 算術符号化装置、算術復号装置
EP2614592B1 (en) * 2010-09-09 2018-06-27 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy encoding and decoding scheme
CA2822929C (en) * 2011-01-04 2016-07-12 Research In Motion Limited Coding of residual data in predictive compression
US9379736B2 (en) * 2011-06-03 2016-06-28 Qualcomm Incorporated Context-adaptive coding video data
BR112013032333B1 (pt) * 2011-06-16 2022-07-26 Ge Video Compression, Llc Comutação de modo auxiliar para codificação por entropia
CN103797803A (zh) 2011-06-28 2014-05-14 三星电子株式会社 用于熵编码/解码的方法和设备
US9871537B2 (en) * 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
US9363510B2 (en) 2012-03-02 2016-06-07 Qualcomm Incorporated Scan-based sliding window in context derivation for transform coefficient coding
CN103227924B (zh) * 2013-05-07 2016-08-03 北京大学 一种算术编码器及编码方法
US10368072B2 (en) 2015-05-29 2019-07-30 Qualcomm Incorporated Advanced arithmetic coder
US10791341B2 (en) 2017-10-10 2020-09-29 Qualcomm Incorporated Binary arithmetic coding with progressive modification of adaptation parameters

Also Published As

Publication number Publication date
EP3603062A1 (en) 2020-02-05
BR112019019170A2 (pt) 2020-04-14
WO2018175716A1 (en) 2018-09-27
US10554988B2 (en) 2020-02-04
AU2018237342A1 (en) 2019-08-29
KR20190128224A (ko) 2019-11-15
CN110419216B (zh) 2021-12-17
CN110419216A (zh) 2019-11-05
EP3603062B1 (en) 2021-05-26
KR102600727B1 (ko) 2023-11-09
AU2018237342B2 (en) 2022-06-02
SG11201907259YA (en) 2019-10-30
US20180278946A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
ES2878325T3 (es) Codificación aritmética binaria con máquinas de estados finitos de estimación de probabilidad parametrizadas
TWI759389B (zh) 用於視訊寫碼之低複雜度符號預測
US10349085B2 (en) Efficient parameter storage for compact multi-pass transforms
TWI657692B (zh) 於視訊寫碼程序中用於係數層級寫碼之萊斯(rice)參數初始化
US9491469B2 (en) Coding of last significant transform coefficient
US10791341B2 (en) Binary arithmetic coding with progressive modification of adaptation parameters
US9838692B2 (en) Detecting availabilities of neighboring video units for video coding
CN112514386B (zh) 网格编解码量化系数编解码
TW201705760A (zh) 進階之算術寫碼器
JP2015533061A (ja) コンテキスト適応型、マルチレベル有意性コーディングに関するコンテキスト導出
CN112352430B (zh) 用于二进制算术编码的有效加权概率估计
JP2017513329A (ja) 非自然ビデオデータの動き推定のための方法
US20230353785A1 (en) Low complexity history usage for rice parameter derivation for high bit-depth video coding
US10992937B2 (en) Coefficient coding with grouped bypass bins
CN115623212A (zh) 对比特流进行子划分区间的方法和电子装置
US11736727B2 (en) Low complexity history usage for rice parameter derivation for high bit-depth video coding