ES2442851T3 - Método y sistema para codificación aritmética binaria adaptativa basada en contexto - Google Patents

Método y sistema para codificación aritmética binaria adaptativa basada en contexto Download PDF

Info

Publication number
ES2442851T3
ES2442851T3 ES02799444.1T ES02799444T ES2442851T3 ES 2442851 T3 ES2442851 T3 ES 2442851T3 ES 02799444 T ES02799444 T ES 02799444T ES 2442851 T3 ES2442851 T3 ES 2442851T3
Authority
ES
Spain
Prior art keywords
level
value
context
bin
numbers
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.)
Expired - Lifetime
Application number
ES02799444.1T
Other languages
English (en)
Inventor
Marta Karczewicz
Ragip Kurceren
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.)
Nokia Inc
Original Assignee
Nokia 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26983269&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2442851(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Nokia Inc filed Critical Nokia Inc
Application granted granted Critical
Publication of ES2442851T3 publication Critical patent/ES2442851T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

Un método de codificación aritmética basada en contexto en el que una imagen se divide en una pluralidad de bloques que tienen una pluralidad de píxeles, teniendo cada píxel un valor de píxel, y la operación de codificación por transformada se realiza en un bloque de píxeles para producir un bloque correspondiente de valores de coeficiente de transformada, y el bloque de valores de coeficiente de transformada es barrido en un orden de barrido dado para producir una matriz barrida de valores de coeficiente que representan diferentes frecuencias espaciales en el bloque, en donde los valores de coeficiente en la matriz barrida se representan mediante una pluralidad de pares de números de run-level, teniendo cada par un valor de LEVEL y un segundo número, siendo el valor de LEVEL y el segundo número asignados a un contexto seleccionado entre una pluralidad de contextos representativos de los pares de números, caracterizado por que el valor de LEVEL de un par de números es asignado a un contexto dependiendo al menos parcialmente de un valor de LEVEL de un par de números en el bloque asignado previamente a un contexto.

Description

Método y sistema para codificación aritmética binaria adaptativa basada en contexto.
Campo de la invención
La presente invención se refiere, en general, a la compresión de imágenes fijas y secuencias de video y, más particularmente, a codificación aritmética binaria adaptativa basada en contexto; y decodificación.
Antecedentes de la invención
Una imagen digital en forma no comprimida comprende una matriz de píxeles de imagen o elementos de imagen. Por ejemplo, en un formato de imagen digital usado habitualmente, conocido como el Formato de Intercambio Común de un Cuarto (QCIF), una imagen, o fotograma, comprende 25.344 píxeles dispuestos en una matriz de 176 x 144 píxeles. Cada píxel, a su vez, está representado por cierto número de bits, que portan información sobre el brillo (luminancia) y/o el color (crominancia) del píxel. Existen diferentes esquemas para representar la luminancia y/o crominancia de píxeles en una imagen digital. Habitualmente, se usa un llamado modelo de color YUV. El componente de luminancia, o Y, representa la luminancia del píxel, mientras que el color del píxel está representado por dos componentes de crominancia o color diferentes, marcados como U y V. Otros modelos de color, tales como los modelos de color RGB (del inglés Red, Green, Blue, es decir, Rojo, Verde, Azul), que se basan en componentes que representan los tres colores primarios de la luz, también se usan habitualmente. Sin embargo, los modelos de color basados en una representación de luminancia/crominancia proporcionan ventajas en comparación con modelos de color basados en los colores primarios. Estos surgen de la naturaleza del sistema visual humano, que es más sensible a las variaciones de intensidad de lo que lo es a las variaciones de color. Los modelos de color YUV normalmente explotan esta propiedad usando una resolución espacial inferior para los componentes de crominancia (U, V) que para el componente de luminancia (Y). De esta manera, la cantidad de información necesaria para representar la información de color en una imagen puede reducirse son una reducción perceptible de la calidad de la imagen percibida.
La resolución espacial inferior de los componentes de crominancia se consigue habitualmente mediante submuestreo. Normalmente, un bloque de 16 x 16 píxeles de la imagen se representa mediante cuatro bloques de 8 x 8 píxeles que comprenden información de luminancia y los componentes de crominancia correspondientes están, cada uno, representados mediante un bloque de 8 x 8 que representa un área de la imagen equivalente a la de los 16 x 16 píxeles en el componente de luminancia. Los componentes de crominancia son, por lo tanto, submuestreados espacialmente por un factor de 2 en las direcciones x e y. El conjunto resultante de cuatro bloques de luminancia de 8 x 8 píxeles y dos bloques de crominancia de 8 x 8 píxeles correspondientes se denomina habitualmente como un macrobloque YUV, o macrobloque, para abreviar. Una imagen de QCIF comprende 11 x 9 de dichos macrobloques. Si los bloques de luminancia y los bloques de crominancia se representan con resolución de 8 bits (es decir mediante números en el intervalo de 0 a 255), el número total de bits requeridos para representar la información de luminancia y crominancia asociada con cada macrobloque es de 6 x (8 x 8 x 8) = 3072 bits. Por lo tanto, el número de bits necesarios para representar una imagen en formato QCIF es 99 x 3072 = 304.128 bits.
Debe apreciarse que, incluso en la situación descrita anteriormente, donde ambos componentes de crominancia de una imagen digital en color son submuestreados mediante un factor de dos, una imagen no comprimida de solamente tamaño moderado (por ejemplo 176 x 144 píxeles) requiere un gran número de bits para su representación. Esto significa que la cantidad de memoria requerida para almacenar imágenes digitales en forma no comprimida es excesiva. Además, si hay que transferir imágenes fijas, por ejemplo a través de una red de comunicación de datos que tiene un ancho de banda disponible moderado o bajo, los tiempos de transmisión pueden volverse prolongados, o la red puede volverse congestionada. Los requisitos de ancho de banda son aún más severos si se desea transmitir una serie de imágenes como una secuencia de video digital en tiempo real. Por ejemplo, transmisión de una secuencia de video digital que comprende una serie de imágenes en formato QCIF no comprimido, representada usando un modelo de color YUV, a una velocidad de 30 fotogramas por segundo, requieres más de 9 Mbits/s (millones de bits por segundo). Dicha elevada velocidad de transferencia de datos es generalmente impráctica para su uso en aplicaciones de grabación, transmisión y visualización en video debido a las muy grandes capacidad de almacenamiento, capacidad del canal de transmisión y rendimiento de hardware requeridas. Si una secuencia de video va a ser transmitida en tiempo real por una red de línea fija tal como una ISDN (Red Digital de Servicios Integrados) o una PSTN (Red Telefónica de Servicio Público), el ancho de banda de transmisión de datos disponible es normalmente del orden de 64 kbits/s. En videotelefonía móvil, donde la transmisión tiene lugar al menos en parte a través de un enlace de radiocomunicaciones, el ancho de banda disponible puede ser de hasta 20 kbits/s. Esto significa que debe conseguirse una reducción significativa de la cantidad de información usada para representar datos de video, para permitir la transmisión de imágenes digitales o secuencias de video a través de redes de comunicación de ancho de banda bajo. Es deseable, sin embargo, que esta reducción deba conseguirse sin degradar de forma significativa la calidad de las imágenes/la secuencia de video.
En los últimos años, una cantidad considerable de trabajo de investigación ha estado orientado a reducir la cantidad de datos requeridos para representar imágenes digitales y secuencias de video, dando como resultado el desarrollo de numerosos esquemas diferentes y estándares internacionales para comprimir imágenes fijas digitales y video digital. El enfoque básico para la compresión de imágenes usado en casi todos los codificadores de imagen fija y de video que existen actualmente implica codificación por transformada a base de bloques. Normalmente, la codificación por transformada traduce los datos de imagen de una representación que comprende valores de píxel en una forma que comprende un conjunto de valores de coeficiente, cada uno de los cuales es un factor de ponderación (multiplicador) para una función base de la transformada en cuestión. Puede mostrarse que existe un grado considerable de redundancia espacial dentro de una imagen digital típica. En términos prácticos, esto significa que, en general, el valor de cualquier píxel dentro de una imagen es sustancialmente el mismo que el valor de otros píxeles en sus proximidades inmediatas; es decir, existe un grado de correlación significativo entre valores de píxel. Se sabe además que, cuando se realizan ciertas transformaciones matemáticas, tales como la Transformada Discreta del Coseno bidimensional (DCT), en datos de imagen, esta redundancia espacial se reduce de forma significativa, produciendo de este modo una representación más compacta de los datos de la imagen.
Codificación por transformada a base de bloques tal como se usa en codificación de imagen fija en JPEG
En la compresión de una imagen fija, tal como la realizada de acuerdo con el modo de referencia del ampliamente usado estándar JPEG, una imagen a codificar se divide en primer lugar en una matriz de bloques cuadrados no solapantes, comprendiendo cada bloque, por ejemplo, una matriz de 8 x 8 píxeles de la imagen. En el caso de la referencia de JPEG, una Transformada Discreta del Coseno bidimensional (DCT) se aplica a continuación independientemente a cada uno de los bloques de la imagen. Esto tiene el efecto de convertir los datos de la imagen del dominio del valor de píxel al dominio de la frecuencia espacial y de producir un conjunto correspondiente de valores de coeficiente, cada uno de los cuales es un factor de ponderación para una función base de la DCT bidimensional. Los valores de coeficiente producidos de este modo se cuantizan y a continuación se codifican de manera sin pérdidas usando codificación por entropía para reducir adicionalmente la cantidad de datos (es decir el número de bits) requerida para su representación. De acuerdo con la referencia de JPEG, el codificador por entropía emplea solamente codificación de Huffman para producir un flujo de bits comprimido, aunque en otros modos, como alternativa, puede usarse codificación aritmética. Finalmente, datos que describen imagen y parámetros de codificación (por ejemplo tipo de compresión, cuantización y tablas de codificación, tamaño de la imagen, etc.) están embebidos en el flujo de bits producido por el codificador por entropía. Dado que el estándar JPEG comprende cuatro modos de codificación alternativos y plantea pocas restricciones a las tablas de cuantización y codificación que pueden usarse, esto es necesario para permitir que flujos de bits comprimidos en JPEG sean intercambiados entre diferentes plataformas y que las imágenes sean reconstruidas sin ninguna ambigüedad.
Una secuencia de video digital, como una imagen en movimiento ordinaria grabada en una película, comprende una secuencia de imágenes fijas (a menudo denominadas como 'fotogramas'), siendo la ilusión de movimiento creada por la visualización de los fotogramas uno detrás de otro a una velocidad relativamente rápida, normalmente de 15 a 30 fotogramas por segundo. Como en cualquier imagen fija, los valores de píxel de un fotograma individual dentro de una secuencia de video digital muestran considerable redundancia espacial. Por lo tanto, los fotogramas de una secuencia de video digital son aptos para codificación por transformada a base de bloques, al igual que las imágenes fijas individuales.
Las imágenes en los fotogramas consecutivos de una secuencia de video también tienden a ser bastante similares y, por lo tanto, el cambio global entre un fotograma de video y el siguiente es bastante pequeño. Esto significa que existe una considerable redundancia temporal dentro de una secuencia de video digital típica. Por ejemplo, una escena puede comprender algunos elementos estacionaros, tales como el paisaje de fondo, y algunas áreas en movimiento, por ejemplo la cara de un presentador de informativos. En fotogramas consecutivos de la secuencia, es probable que el fondo permanezca inalterado y el único movimiento en la escena se deberá a cambios de la expresión facial del presentador. Por lo tanto, cuando se forma una representación comprimida de una secuencia de video existe también una posibilidad de usar técnicas que reducen la redundancia temporal de los datos de la imagen de la secuencia además de métodos que reducen la redundancia espacial, permitiendo de este modo que se consiga más compresión de datos.
Codificador/decodificador híbrido de video
Los sistemas de codificación de video del estado de la técnica usan una técnica conocida como 'predicción por compensación de movimiento', para reducir la redundancia temporal en secuencias de video. Usando predicción por compensación de movimiento, el contenido de imagen de algunos (a menudo muchos) fotogramas en una secuencia de video digital se 'predice' a partir de uno o más fotogramas diferentes en la secuencia, conocidos como 'fotogramas de referencia'. La predicción del contenido de imagen se consigue trazando el movimiento de objetos o regiones de una imagen entre un fotograma a codificar (comprimido) y el fotograma o fotogramas de referencia usando 'vectores de movimiento'. En general, el fotograma o fotogramas de referencia pueden preceder al fotograma a codificar o puede seguirle en la secuencia de video. Sin embargo, tal como se volverá evidente a partir de descripciones más adelante en el texto, no es apropiado (o posible) aplicar predicción por compensación de movimiento a todos los fotogramas de una secuencia de video y, por lo tanto, se usan al menos dos tipos de codificación en los sistemas de codificación de video del estado de la técnica.
Los fotogramas de una secuencia de video que se comprimen usando predicción por compensación de movimiento se denominan generalmente como INTER-codificados o fotogramas P. La predicción por compensación de movimiento en solitario raramente proporciona una representación suficientemente precisa del contenido de imagen de un fotograma de video y, por lo tanto, normalmente es necesario proporcionar un llamado fotograma de 'error de predicción' (PE) con cada fotograma INTER-codificado. Tal como se describirá con más detalle más adelante en el texto, el fotograma de error de predicción representa la diferencia entre una versión decodificada del fotograma INTER-codificado y el contenido de imagen del fotograma a codificar. Más específicamente, el fotograma de error de predicción comprende valores que representan la diferencia entre valores de píxel en el fotograma a codificar y valores de píxel reconstruidos correspondientes formados basándose en una versión predicha (INTER-codificada) del fotograma en cuestión. Por consiguiente, el fotograma de error de predicción tiene características similares a una imagen fija y puede aplicarse codificación por transformada a base de bloques para reducir la cantidad de datos (números de bits) requerida para representarlo.
Los fotogramas de una secuencia de video que no están comprimidos usando predicción por compensación de movimiento se denominan como INTRA-codificados o fotogramas I. Generalmente, los fotogramas INTRAcodificados se producen aplicando codificación por transformada a base de bloques directamente a los valores de píxel del fotograma a codificar. Adicionalmente, donde sea posible, bloques de fotogramas INTRA-codificados se predicen a partir de bloques codificados previamente dentro del mismo fotograma. Esta técnica, conocida como predicción INTRA, tiene el efecto de reducir adicionalmente la cantidad de datos requerida para representar un fotograma INTRA-codificado.
Para ilustrar los principios de la codificación por transformada a base de bloques y la predicción por compensación de movimiento en más detalle, a continuación se hará referencia a la figura 1, que es un esquema de un codificador híbrido de video genérico que emplea una combinación de codificación INTRA e INTER para producir un flujo de bits de video comprimido (codificado). Un decodificador correspondiente se ilustra en la figura 2 y se describirá más adelante en el texto.
El codificador de video 300 comprende una entrada 301 para recibir una señal de video digital de una cámara u otra fuente de video (no se muestra). También comprende una unidad de transformación 304 que está dispuesta para realizar una transformada discreta del coseno (DCT) a base de bloques, un cuantizador 306, un cuantizador inverso 308, una unidad de transformación inversa 310, dispuesta para realizar una transformada discreta del coseno a base de bloques inversa (IDCT), combinadores 312 y 316, y un almacén de fotogramas 320. El codificador comprende además un estimador de movimiento 330, un codificador del campo de movimiento 340 y un predictor por compensación de movimiento 350. Los conmutadores 302 y 314 son accionados de forma cooperativa por el gestor de control 360 para conmutar al codificador entre un modo INTRA de codificación de video y un modo INTER de codificación de video. El codificador 300 también un codificador multiplexor de video 370 que forma un único flujo de bits 335 a partir de los diversos tipos de información producidos por el codificador 300 para transmisión adicional a un terminal receptor remoto o, por ejemplo, para almacenamiento en un medio de almacenamiento masivo, tal como el disco duro de un ordenador (no se muestra).
El codificador 300 funciona de la siguiente manera. Cada fotograma de video no comprimido proporcionado a partir de la fuente de video a la entrada 301 es recibido y procesado macrobloque por macrobloque, preferentemente en orden de exploración de trama. Cuando comienza la codificación de una nueva secuencia de video, el primer fotograma de la secuencia es codificado como un fotograma INTRA-codificado. Posteriormente, el codificador está programado para codificar cada fotograma en formato INTER-codificado, a menos que se cumpla una de las siguientes condiciones: 1) se considera que el actual fotograma que está siendo codificado es tan diferente del fotograma de referencia usado en esta predicción que se produce información de error de predicción excesiva; 2) un intervalo de repetición de fotograma INTRA predefinido ha expirado; o 3) se recibe retroalimentación de un terminal receptor que indica una petición de que se proporcione un fotograma en formato INTRA-codificado.
La aparición de la condición 1) se detecta monitorizando la salida del combinador 316. El combinador 316 forma una diferencia entre el actual macrobloque del fotograma que está siendo codificado y su predicción, producida en el bloque de predicción por compensación de movimiento 350. Si una medida de esta diferencia (por ejemplo una suma de diferencias absolutas de valores de píxel) supera un umbral predeterminado, el combinador 316 informa al gestor de control 360 mediante una línea de control 319 y el gestor de control 360 acciona los conmutadores 302 y 314 mediante la línea de control 313 para conmutar al codificador 300 al modo de codificación INTRA. La aparición de la condición 2) se monitoriza por medio de un temporizador o contador de fotogramas implementado en el gestor de control 360, de tal manera que, si el tiempo expira, y el contador de fotogramas alcanza un número predeterminado de fotogramas, el gestor de control 360 acciona los conmutadores 302 y 314 mediante línea de control 313 para conmutar al codificador a modo de codificación INTRA. La condición 3) se desencadena si el gestor de control 360 recibe una señal de retroalimentación procedente, por ejemplo, de un terminal receptor, mediante la línea de control 321 que indica que la actualización de un fotograma INTRA es requerida por el terminal receptor. Dicha condición puede surgir, por ejemplo, si un fotograma transmitido previamente está muy corrompido por interferencias durante su transmisión, haciéndole imposible de decodificar en el receptor. En esta situación, el decodificador receptor envía una petición para que el siguiente fotograma esté codificado en formato INTRAcodificado, reinicializando de este modo la secuencia de codificación. A continuación se describirá el funcionamiento del codificador 300 en modo de codificación INTRA. En modo de codificación INTRA, el gestor de control 360 acciona el conmutador 302 para aceptar la entrada de video procedente de la línea de entrada 318. La señal de entrada de video es recibida macrobloque por macrobloque desde la entrada 301 mediante la línea de entrada 318. A medida que son recibidos, los bloques de valores de luminancia y crominancia que componen el macrobloque pasan al bloque de transformación DCT 304, que realiza una transformada discreta del coseno bidimensional en cada bloque de valores, produciendo una matriz bidimensional de coeficientes de DCT para cada bloque. En una situación tal como la descrita anteriormente, donde cada macrobloque comprende cuatro bloques de 8 x 8 píxeles de valores de luminancia y dos bloques de 8 x 8 píxeles espacialmente correspondientes de valores de crominancia, el bloque de transformación DCT 304 produce una matriz de 8 x 8 de valores de coeficiente para cada bloque.
Los coeficientes de DCT para cada bloque se hacen pasar al cuantizador 306, donde se cuantizan usando un parámetro de cuantización QP. La selección del parámetro de cuantización QP está controlada por el gestor de control 360 mediante la línea de control 315. La cuantización introduce una pérdida de información, dado que los coeficientes cuantizados tienen una precisión numérica inferior a los coeficientes generados originalmente por el bloque de transformación DCT 304. Esto proporciona un mecanismo adicional mediante el cual la cantidad de datos requerida para representar cada imagen de la secuencia de video puede reducirse. Sin embargo, a diferencia de la transformación DCT, que es esencialmente sin pérdida, la pérdida de información introducida por la cuantización causa una degradación irreversible de la calidad de la imagen. Cuanto mayor sea el grado de cuantización aplicado a los coeficientes de DCT, mayor será la pérdida de calidad de la imagen.
Los coeficientes de DCT cuantizados para cada bloque se hacen pasar desde el cuantizador 306 al codificador multiplexor de video 370, tal como se indica mediante la línea 325 en la figura 1. El codificador multiplexor de video 370 ordena los coeficientes de transformada para cada bloque usando un procedimiento de barrido en zig-zag. Esta operación convierte la matriz bidimensional de coeficientes de transformada cuantizados en una matriz unidimensional. Los órdenes de barrido en zig-zag típicos, tales como el mostrado en la figura 3, ordenan los coeficientes aproximadamente en orden ascendente de frecuencia espacial. Esto también tiende a ordenar los coeficientes de acuerdo con sus valores, de modo que es más probable que los coeficientes posicionados antes en la matriz unidimensional tengan valores absolutos más grandes que coeficientes posicionados más tarde en la matriz. Esto es porque frecuencias espaciales más bajas tienden a tener mayores amplitudes dentro de los bloques de la imagen. Por consiguiente, los últimos valores en la matriz unidimensional de coeficientes de transformada cuantizados son habitualmente ceros.
Codificación Run-Level de coeficientes de transformada DCT
Normalmente, el codificador multiplexor de video 370 representa cada coeficiente cuantizado distinto de cero en la matriz unidimensional mediante dos valores, denominados como level y run. Level es el valor del coeficiente cuantizado y run es el número de coeficientes con valor cero consecutivos que preceden al coeficiente en cuestión. Los valores de run y de level para un coeficiente dado se ordenan de modo que el valor de level precede al valor de run asociado. Un valor de level igual a cero se usa para indicar que no hay más valores de coeficiente distintos de cero en el bloque. Este valor de level de 0 se denomina como un símbolo EOB (fin de bloque).
Codificación por entropía
Los valores de run y de level se comprimen adicionalmente en el codificador multiplexor de video 370 usando codificación por entropía. La codificación por entropía es una operación sin pérdidas, que explota el hecho de que símbolos dentro de un conjunto de datos a codificar generalmente tienen diferentes probabilidades de aparición. Por lo tanto, en lugar de usar un número fijo de bits para representar cada símbolo, un número variable de bits se asigna de este modo los símbolos que es más probable que se produzcan que están representados por palabras clave que tienen menos bits. Por esta razón, la codificación por entropía se denomina a menudo como Codificación de Longitud Variable (VLC). Dado que es más probable que se produzcan ciertos valores de level y de run que otros valores, pueden usarse eficazmente técnicas de codificación por entropía para reducir el número de bits requeridos para representar los valores de run y de level. Pueden usarse una serie de métodos diferentes para implementar codificación por entropía. Por ejemplo, la codificación por entropía de los parámetros de run y de level puede implementarse por medio de tablas de consulta que definen la asociación entre cada posible símbolo en el conjunto de datos a codificar y su código de longitud variable correspondiente. Dichas tablas de consulta se definen a menudo mediante análisis estadístico de material de formación que comprende símbolos idénticos a aquellos a codificar y que tienen propiedades estadísticas similares. Una técnica alternativa, conocida como codificación aritmética, tal como puede usarse para convertir los valores de run y de level en palabras clave de longitud variable. En codificación aritmética, un grupo de símbolos, por ejemplo los valores de run y de level para un bloque de coeficientes de transformada cuantizados, se codifican como un número decimal de coma flotante.
Una vez que los valores de run y de level han sido codificados por entropía usando un método apropiado, el codificador multiplexor de video los combina adicionalmente con información de control, también codificada por entropía usando un método de codificación de longitud variable apropiado para el tipo de información en cuestión, para formar un único flujo de bits comprimido de información de imagen codificada 335.
Una versión decodificada localmente del macrobloque se forma también en el codificador 300. Esto se realiza haciendo pasar a los coeficientes de transformada cuantizados para cada bloque, emitidos por el cuantizador 306, a través del cuantizador inverso 308 y aplicando una transformada DCT inversa en el bloque de transformación inversa 310. De esta manera, se construye una matriz reconstruida de valores de píxel para cada bloque del macrobloque. Los datos de imagen decodificados resultantes se introducen en el combinador 312. En modo de codificación INTRA, el conmutador 314 se ajusta de modo que la entrada al combinador 312 mediante el conmutador 314 sea cero. De esta manera, la operación realizada por el combinador 312 es equivalente a hacer pasar los datos de imagen decodificados inalterados.
A medida que los posteriores macrobloques del actual fotograma son recibidos y experimentan las etapas de codificación y decodificación descrita anteriormente en los bloques 304, 306, 308, 310 y 312, una versión decodificada del fotograma INTRA-codificado se acumula en el almacén de fotogramas 320. Cuando el último macrobloque del actual fotograma ha sido INTRA-codificado y posteriormente decodificado, el almacén de fotogramas 320 contiene un fotograma completamente decodificado, disponible para su uso como un fotograma de referencia de predicción en la codificación de un fotograma de video recibido posteriormente en formato INTERcodificado.
A continuación se describirá el funcionamiento del codificador 300 en modo de codificación INTER. En modo de codificación INTER, el gestor de control 360 acciona el conmutador 302 para recibir su entrada desde la línea 317, que comprende la salida del combinador 316. El combinador 316 recibe la señal de entrada de video macrobloque por macrobloque desde la entrada 301. A medida que el combinador 316 recibe los bloques de valores de luminancia y crominancia que componen el macrobloque, forma bloques correspondientes de información de error de predicción. La información de error de predicción representa la diferencia entre el bloque en cuestión y su predicción, producida en el bloque de predicción por compensación de movimiento 350. Más específicamente, la información de error de predicción para cada bloque del macrobloque comprende una matriz bidimensional de valores, cada uno de los cuales representa la diferencia entre un valor de píxel en el bloque de información de luminancia o crominancia que está siendo codificada y un valor de píxel decodificado obtenido formando una predicción por compensación de movimiento para el bloque, de acuerdo con el procedimiento descrito a continuación. Por lo tanto, en una situación en la que cada macrobloque comprende cuatro bloques de 8 x 8 píxeles de valores de luminancia y dos bloques de 8 x 8 píxeles espacialmente correspondientes de valores de crominancia, la información de error de predicción para el macrobloque comprende análogamente cuatro bloques de 8 x 8 de valores de error de predicción de luminancia y dos bloques de 8 x 8 espacialmente correspondientes de valores de error de predicción de crominancia.
La información de error de predicción para cada bloque del macrobloque se hace pasar al bloque de transformación DCT 304, que realiza una transformada discreta del coseno bidimensional de cada bloque de valores de error de predicción para producir una matriz bidimensional de coeficientes de transformada DCT para cada bloque. Por lo tanto, en una situación en la que la información de error de predicción para cada macrobloque comprende cuatro bloques de 8 x 8 de valores de error de predicción de luminancia y dos bloques de 8 x 8 espacialmente correspondientes de valores de error de predicción de crominancia, el bloque de transformación DCT 304 produce una matriz de 8 x 8 de valores de coeficiente de transformada para cada bloque de error de predicción. Los coeficientes de transformada para cada bloque de error de predicción se hacen pasar al cuantizador 306 donde son cuantizados usando un parámetro de cuantización QP, de una manera análoga a la descrita anteriormente en relación con el funcionamiento del codificador en modo de codificación INTRA. De nuevo, la selección del parámetro de cuantización QP está controlada por el gestor de control 360 mediante la línea de control 315.
Los coeficientes de DCT cuantizados que representan la información de error de predicción para cada bloque del macrobloque se hacen pasar del cuantizador 306 al codificador multiplexor de video 370, tal como se indica mediante la línea 325 en la figura 1. Como en el modo de codificación INTRA, el codificador multiplexor de video 370 ordena los coeficientes de transformada para cada bloque de error de predicción usando el procesamiento de barrido en zig-zag descrito anteriormente (véase la figura 3) y a continuación representa cada coeficiente cuantizado distinto de cero como un valor de level y de run. Además comprime los valores de run y de level usando codificación por entropía, de una manera análoga a la descrita anteriormente en relación con el modo de codificación INTRA. El codificador multiplexor de video 370 también recibe información del vector de movimiento (descrita a continuación) del bloque de codificación del campo de movimiento 340 mediante la línea 326 e información de control del gestor de control 360. Éste codifica por entropía la información del vector de movimiento y forma un único flujo de bits de información de imagen codificada 335 que comprende información del vector de movimiento codificado por entropía, de error de predicción y de control.
Los coeficientes de DCT cuantizados que representan la información de error de predicción para cada bloque del macrobloque también se hacen pasar desde el cuantizador 306 al cuantizador inverso 308. Aquí son cuantizados inversamente y los bloques resultantes de coeficientes de DCT cuantizados inversos se aplican al bloque de transformada DCT inverso 310, donde experimentan transformación DCT inversa para producir bloques decodificados localmente de valores de error de predicción. Los bloques decodificados localmente de valores de error de predicción se introducen a continuación en el combinador 312. En el modo de codificación INTER, el conmutador 314 se ajusta de modo que el combinador 312 también reciba valores de píxel predichos para cada bloque del macrobloque, generados por el bloque de predicción por compensación de movimiento 350. El combinador 312 combina cada uno de los bloques decodificados localmente de valores de error de predicción con un bloque correspondiente de valores de píxel predichos para producir bloques de imagen reconstruida y los almacena en el almacén de fotogramas 320.
A medida que posteriores macrobloques de la señal de video son recibidos desde la fuente de video y experimentan las etapas de codificación y decodificación descritas anteriormente en los bloques 304, 306, 308, 310, 312, una versión decodificada del fotograma INTER-codificado se acumula en el almacén de fotogramas 320. Cuando el último macrobloque del fotograma ha sido INTER-codificado y posteriormente decodificado, el almacén de fotogramas 320 contiene un fotograma completamente decodificado, disponible para su uso como un fotograma de referencia de predicción para codificar un fotograma de video recibido posteriormente en formato INTER-codificado.
A continuación se describirá la formación de una predicción para un macrobloque del fotograma actual. Cualquier fotograma codificado en formato INTER-codificado requiere un fotograma de referencia para predicción por compensación de movimiento. Esto significa, necesariamente, que cuando se codifica una secuencia de video, el primer fotograma a codificar, ya sea el primer fotograma en la secuencia, o algún otro fotograma, debe estar codificado en formato INTRA-codificado. Esto, a su vez, significa que cuando el codificador de video 300 se conmuta a modo de codificación INTER por el gestor de control 360, un fotograma de referencia completo, formado decodificando localmente un fotograma codificado previamente, ya está disponible en el almacén de fotogramas 320 del codificador. En general, el fotograma de referencia se forma decodificando localmente un fotograma INTRAcodificado o un fotograma INTER-codificado.
La primera etapa en la formación de una predicción para un macrobloque del actual fotograma es realizada por el bloque de estimación de movimiento 330. El bloque de estimación de movimiento 330 recibe los bloques de valores de luminancia y crominancia que componen el actual macrobloque del fotograma a codificar mediante la línea 328. A continuación realiza una operación de emparejamiento de bloques para identificar una región en el fotograma de referencia, que corresponde sustancialmente con el actual macrobloque. Para realizar la operación de emparejamiento de bloques, el bloque de estimación del campo de movimiento accede a datos del fotograma de referencia almacenados en el almacén de fotogramas 320 mediante la línea 327. Más específicamente, el bloque de estimación de movimiento 330 realiza emparejamiento de bloques calculando valores de diferencia (por ejemplo suma de diferencias absolutas) que representan la diferencia en valores de píxel entre el macrobloque bajo examen y regiones de máxima coincidencia candidatas de píxeles de un fotograma de referencia almacenado en el almacén de fotogramas 320. Un valor de diferencia se produce para regiones candidatas en todos los posibles desfases dentro de una región de búsqueda predefinida del fotograma de referencia y el bloque de estimación de movimiento 330 determina el valor de diferencia calculado más pequeño. El desfase entre el macrobloque en el actual fotograma y el bloque candidato de valores de píxel en el fotograma de referencia que produce el valor de diferencia más pequeño define el vector de movimiento para el macrobloque en cuestión.
Una vez que el bloque de estimación de movimiento 330 ha producido un vector de movimiento para el macrobloque, emite el vector de movimiento al bloque de codificación del campo de movimiento 340. El bloque de codificación del campo de movimiento 340 aproxima el vector de movimiento recibido del bloque de estimación de movimiento 330 usando un modelo de movimiento que comprende un conjunto de funciones base y coeficientes de movimiento. Más específicamente, el bloque de codificación del campo de movimiento 340 representa el vector de movimiento como un conjunto de valores de coeficiente de movimiento que, cuando se multiplican por las funciones base, forman una aproximación del vector de movimiento. Normalmente, se usa un modelo de movimiento de traslación que tiene solamente dos coeficientes de movimiento y funciones base.
Los coeficientes de movimiento se hacen pasar desde el bloque de codificación del campo de movimiento 340 al bloque de predicción por compensación de movimiento 350. El bloque de predicción por compensación de movimiento 350 también recibe la región candidata con máxima correspondencia de valores de píxel identificado por el bloque de estimación de movimiento 330 desde el almacén de fotogramas 320. Usando la representación aproximada del vector de movimiento generada por el bloque de codificación del campo de movimiento 340 y los valores de píxel de la región candidata con máxima correspondencia de píxeles del fotograma de referencia, el bloque de predicción por compensación de movimiento 350 genera una matriz de valores de píxel predichos para cada bloque del macrobloque. Cada bloque de valores de píxel predichos se hace pasar al combinador 316 donde los valores de píxel predichos se sustraen de los valores de píxel reales (entrada) en el bloque correspondiente del actual macrobloque. De esta manera, se obtiene un conjunto de bloques de error de predicción para el macrobloque.
A continuación se describirá el funcionamiento del decodificador de video 400, mostrado en la figura 2. El decodificador 400 comprende un decodificador multiplexor de video 470, que recibe un flujo de bits de video codificado 335 del codificador 300 y lo desmultiplexa en sus partes constituyentes, un cuantizador inverso 410, una transformadora DCT inversa 420, un bloque de predicción por compensación de movimiento 440, un almacén de fotogramas 450, un combinador 430, un gestor de control 460 y una salida 480.
El gestor de control 460 controla el funcionamiento del decodificador 400 en respuesta a si un fotograma INTRA- o INTER-codificado está siendo decodificado. Una señal de control de activación INTRA / INTER, que hace que el decodificador conmute entre modos de codificación se deriva, por ejemplo, de la información del tipo de imagen provista en una parte de cabecera de cada fotograma de video comprimido recibido del codificador. La señal de control de activación INTRA / INTER se extrae del flujo de bits de video codificado por el decodificador multiplexor de video 470 y se hace pasar al gestor de control 460 mediante la línea de control 422.
La decodificación de un fotograma INTRA-codificado se realiza en forma de macrobloque por macrobloque, siendo cada macrobloque decodificado sustancialmente en cuanto información codificada relacionada con él es identificada en el flujo de datos de video recibido 335. El decodificador multiplexor de video 470 separa en primer lugar la información codificada para los bloques del macrobloque de posible información de control relacionada con el macrobloque en cuestión. La información codificada para cada bloque de un macrobloque INTRA-codificado comprende palabras clave de longitud variable. Estas palabras clave representan los valores de level y de run codificados por entropía para los coeficientes de DCT cuantizados distintos de cero del bloque. El decodificador multiplexor de video 410 decodifica las palabras clave de longitud variable usando un método de codificación de longitud variable correspondiente al método de codificación usado en el codificador 300 y, de este modo, recupera los valores de level y de run. A continuación reconstruye la matriz de valores de coeficiente de transformada cuantizados para cada bloque del macrobloque y los hace pasar al cuantizador inverso 410. Cualquier información de control relacionada con el macrobloque también se decodifica en el decodificador multiplexor de video usando un método de codificación de longitud variable apropiado y se hace pasar al gestor de control 460. En particular, información relacionada con el nivel de cuantización aplicado a los coeficientes de transformada se extrae del flujo de bits codificado por el decodificador multiplexor de video 470 y se proporciona al gestor de control 460 mediante la línea de control 424. El gestor de control, a su vez, transporta esta información al cuantizador inverso 420 mediante la línea de control 415. El cuantizador inverso 410 cuantiza inversamente los coeficientes de DCT cuantizados para cada bloque del macrobloque de acuerdo con la información de control y proporciona los coeficientes de DCT ahora cuantizados inversos al transformador DCT inverso 420.
El transformador DCT inverso 420 realiza una transformada DCT inversa sobre los coeficientes de DCT cuantizados inversos para cada bloque del macrobloque para formar un bloque decodificado de información de la imagen que comprende valores de píxel reconstruidos. Dado que no se usa predicción por compensación de movimiento en la codificación/decodificación de macrobloques INTRA-codificados, el gestor de control 460 controla el combinador 430 de tal manera que se prevenga que cualquier información de referencia sea usada en la decodificación del macrobloque INTRA-codificado. Los valores de píxel reconstruidos para cada bloque del macrobloque se hacen pasar a la salida de video 480 del decodificador donde, por ejemplo, pueden proporcionarse a un dispositivo de visualización (no se muestra). Los valores de píxel reconstruidos para cada bloque del macrobloque también se almacenan en el almacén de fotogramas 450. A medida que los macrobloques posteriores del fotograma INTRAcodificado se decodifican y almacenan, un fotograma decodificado se reúne progresivamente en el almacén de fotogramas 450 y, por lo tanto, se vuelve disponible para su uso como un fotograma de referencia para predicción por compensación de movimiento en relación con la decodificación del fotogramas INTER-codificados recibidos posteriormente.
Los fotogramas INTER-codificados también se decodifican macrobloque por macrobloque, siendo cada macrobloque INTER-codificado decodificado sustancialmente en cuanto la información codificada relacionada con éste es identificada en el flujo de bits recibido. El decodificador multiplexor de video 470 separa la información de error de predicción codificada para cada bloque del macrobloque INTER-codificado de la información del vector de movimiento codificada y posible información de control relacionada con el macrobloque en cuestión. Tal como se ha explicado anteriormente, la información de error de predicción codificada para cada bloque del macrobloque comprende palabras clave de longitud variable que representen los valores de level y de run codificados por entropía para los coeficientes de transformada cuantizados distintos de cero para el bloque de error de predicción en cuestión. El decodificador multiplexor de video 470 decodifica las palabras clave de longitud variable usando un método de codificación de longitud variable correspondiente al método de codificación usado en el codificador 300 y, de este modo, recupera los valores de level y de run. A continuación reconstruye una matriz de valores de coeficiente de transformada cuantizados para cada bloque de error de predicción y los hace pasar al cuantizador inverso 410. La información de control relacionada con el macrobloque INTER-codificado también se decodifica en el decodificador multiplexor de video usando un método de codificación de longitud variable apropiado y se hace pasar al gestor de control 460. La información relacionada con el nivel de cuantización aplicada a los coeficientes de transformada de los bloques de error de predicción se extrae del flujo de bits codificado y se proporciona al gestor de control 460 mediante la línea de control 424. El gestor de control, a su vez, transporta esta información al cuantizador inverso 420 mediante la línea de control 415. El cuantizador inverso 410 cuantiza de forma inversa los coeficientes de DCT cuantizados que representan la información de error de predicción para cada bloque del macrobloque de acuerdo con la información de control y proporciona los coeficientes de DCT cuantizados ahora inversos al transformador DCT inverso 420. Los coeficientes de DCT cuantizados inversos que representan la información de error de predicción para cada bloque son transformados de forma inversa a continuación en el transformador DCT inverso 420 para dar una matriz de valores de error de predicción reconstruidos para cada bloque del macrobloque.
La información del vector de movimiento codificada asociada con el macrobloque se extrae del flujo de bits de video codificado 335 por el decodificador multiplexor de video 470 y se decodifica usando un método de codificación de longitud variable apropiado. La información del vector de movimiento decodificada obtenida de este modo se hace pasar mediante la línea de datos 426 al bloque de predicción por compensación de movimiento 440, que reconstruye un vector de movimiento para el macrobloque usando el mismo modelo de movimiento que el usado para codificar el macrobloque INTER-codificado en el codificador 300. El vector de movimiento reconstruido aproxima el vector de movimiento originalmente determinado por el bloque de estimación de movimiento 330 del codificador. El bloque de predicción por compensación de movimiento 440 del decodificador usa el vector de movimiento reconstruido para identificar la ubicación de una región de píxeles reconstruidos en un fotograma de referencia de predicción almacenado en el almacén de fotogramas 450. El fotograma de referencia puede ser, por ejemplo, un fotograma INTRA-codificado previamente decodificada, o un fotograma INTER-codificado previamente decodificado. En cualquier caso, la región de píxeles indicada por el vector de movimiento reconstruido se usa para formar una predicción para el macrobloque en cuestión. Más específicamente, el bloque de predicción por compensación de movimiento 440 forma una matriz de valores de píxel para cada bloque del macrobloque copiando los valores de píxel correspondientes de la región de píxeles identificada en el fotograma de referencia. La predicción, es decir los bloques de valores de píxel derivados del fotograma de referencia, se hacen pasar desde el bloque de predicción por compensación de movimiento 440 al combinador 430 donde se combinan con la información de error de predicción decodificada. En la práctica, los valores de píxel de cada bloque predicho se añaden a valores de error de predicción reconstruidos correspondientes emitidos por el transformador DCT inverso 420. De esta manera se obtiene una matriz de valores de píxel reconstruidos para cada bloque del macrobloque. Los valores de píxel reconstruidos se hacen pasar a la salida de video 480 del decodificador y también se almacenan en el almacén de fotogramas 450. A medida que macrobloques posteriores del fotograma INTER-codificado son decodificados y almacenados, un fotograma decodificado se reúne progresivamente en el almacén de fotogramas 450 y, por lo tanto, se vuelve disponible para su uso como un fotograma de referencia para la predicción por compensación de movimiento de otros fotogramas INTER-codificados.
Estándar de codificación de video H.26L
La recomendación H.26L de la ITU-T es el último de una familia de estándares de codificación de video desarrollados por la International Telecommunications Union (Unión Internacional de Telecomunicaciones). Está diseñado en particular para codificación de video a velocidades de transferencia de bits muy bajas, normalmente por debajo de 64 kbits/s, lo que le hace espacialmente adecuado para la codificación de video digital para transmisión mediante redes de comunicación por radio o cualquier red de comunicación de línea fija en la que el uso óptimo del ancho de banda disponible es una prioridad. El sistema de codificación de video definido por H.26L de la ITU-T es un sistema de codificación de video híbrido, que funciona de acuerdo con los principios generales descritos anteriormente en relación con el codificador de video genérico 300 y el decodificador 400 ilustrados en las figuras 1 y
2. En particular, un sistema de codificación de video implementado de acuerdo con H.26L emplea una combinación de codificación por transformada a base de bloques y predicción por compensación de movimiento para reducir la redundancia espacial y temporal dentro de secuencias de video.
La última versión de la recomendación H.26L, conocida como Modelo de Prueba 8 (TML8) y se describe en el documento “H.26L Test Model Long Term Number 8 (TML-8) draft0” (ITU-T Telecommunications Standardization Section, Study Group 16, Video Coding Experts Group), especifica dos modos alternativos de codificación por entropía. En el primer modo (por defecto) un llamado método de Codificación de Longitud Variable Universal (UVLC) se usa para codificar todos los elementos de sintaxis. El modo de codificación UVLC es un método de tabla de consulta en el que se usa el mismo conjunto de palabras clave de longitud variable para representar todos los diferentes tipos de información producidos por el codificador de video, independientemente del tipo de información en cuestión. El método alternativo de codificación por entropía, especificado para uso en el llamado 'perfil de alta complejidad' de H.26L, es una técnica conocida como Codificación Aritmética Binaria Adaptativa basada en Contexto(CABAC). Ésta es una forma de codificación aritmética binaria que se adapta de forma continua a las propiedades estadísticas de la información que está siendo codificada y se conoce en la técnica por ser una de las formas más eficaces de codificación por entropía (véase el documento H. Witten, R. M. Neal y J. G. Cleary, “Arithmetic coding for data compression”, Commun. ACM, vol. 30, págs. 520-540, junio de 1987).
Dado que la codificación por entropía UVLC usa el mismo conjunto de palabras clave de longitud variable para representar todos los tipos de información producidos por el codificador de video, en general las propiedades estadísticas de las palabras clave no coinciden de forma óptima con las características de la información a codificar. Por ejemplo, es probable que la frecuencia de aparición de valores de run y de level particulares usados para representar los coeficientes de DCT cuantizados para un bloque de imagen INTRA-codificado sea diferente de la aparición de valores en información de control relacionada con los valores del parámetro de cuantización. El método de codificación por entropía CABAC se introdujo en la recomendación H.26L para superar la naturaleza inherentemente subóptima del método de codificación por entropía UVLC. Tal como se ha explicado anteriormente en el texto, la codificación aritmética representa un grupo de símbolos a codificar con un único código de longitud variable (un número de coma flotante). Esto proporciona ventajas particulares en comparación con métodos de codificación por entropía, que codifican cada símbolo independientemente. Específicamente, métodos de codificación por entropía que codifican cada símbolo independientemente requieren al menos un bit para representar cada símbolo. Dado que la codificación aritmética representa grupos de símbolos con una única palabra clave, es posible conseguir tasas de compresión de datos de menos de un bit por símbolo. Por lo tanto, el método CABAC provisto en H.26L también proporciona la posibilidad de compresión de datos mejorada. Además, dado que es un método adaptativo, también es capaz de tener en cuenta cambios de las características estadísticas de la
5 información que está siendo codificada, garantizando que el rendimiento de compresión de datos se mantiene incluso si la naturaleza de los datos que están siendo codificados cambia en cierta medida.
Codificación aritmética basada en contexto
10 Tal como se ha explicado anteriormente, la codificación aritmética CABAC es un método de codificación por entropía, que es capaz de adaptarse a estadísticas cambiantes de la información a codificar. De esta manera, es capaz de proporcionar eficacia de compresión mejorada en comparación con técnicas de codificación por entropía que asumen propiedades estadísticas fijas. La figura 4 ilustra un codificador aritmético binario basado en contexto ejemplar 700. CABAC es un método de codificación aritmética binaria y, por lo tanto, los símbolos de datos a
15 codificar que tienen valores no binarios se convierten en primer lugar en valores binarios ('se binarizan') en el bloque de asociación binaria 710. El proceso de binarización implica asociar un símbolo a codificar a una secuencia de bins, cada uno de los cuales tiene un número de bin correspondiente y se le puede asignar un valor de 0 o 1. Un ejemplo de dicha asociación se da a continuación en la tabla 1. En principio pueden preverse otros esquemas de binarización.
Tabla 1
valor
Secuencia Bin
0
1
1
0
1
2
0 0 1
3
0 0 0 1
4
0 0 0 0 1
5
0 0 0 0 0 1
6
0 0 0 0 0 0 1
...
. . . . . . . .
bin_nr.
1 2 3 4 5 6 7 :
En el método CABAC cada uno de los bins se asigna a un llamado 'contexto' (de ahí el nombre codificación
aritmética basada en contexto). Un contexto puede considerarse como agrupar juntos bins, que tienen 25 características estadísticas similares. En otras palabras, se supone que cada bin asignado a un contexto particular
tiene una probabilidad similar de contener el valor 1 o 0 que los otros bins que pertenecen a ese contexto. De esta
manera, las estimaciones de probabilidad usadas para generar palabras clave en el codificador aritmético se definen
para cada contexto en lugar de para cada posible bin a codificar. Cada contexto se define de acuerdo con un
'modelo de contexto', establecido de antemano y basado en información sobre las características estadísticas de los 30 símbolos de datos (y, por lo tanto, los bins) a codificar. Generalmente, la relación de compresión de datos
conseguida por un codificador aritmético binario mejora si la diferencia entre la probabilidad de aparición de un 0 y la
probabilidad de aparición de un 1 se maximiza. De manera similar, el rendimiento de una codificación aritmética
basada en contexto también depende de la elección del modelo de contexto. Esto significa que, en general, los
modelos de contexto deben seleccionarse para maximizar la diferencia entre la probabilidad de aparición de 0 y de 1 35 para los bins asignados a cada contexto.
En el codificador aritmético basado en contexto ejemplar ilustrado en la figura 4, una vez que un símbolo a codificar
ha sido binarizado en el bloque de asociación binaria 710 es asignado a un contexto correspondiente en el bloque
de asignación de contexto 720. El valor asignado al bin correspondiente (es decir, 1 o 0) se hace pasar a 40 continuación al codificador aritmético 730. El motor de codificación 750 del codificador aritmético 730 a continuación
codifica el valor del bin usando una estimación de probabilidad para el contexto al que se le asigna el bin. El
rendimiento, es decir la relación de compresión de datos conseguida por el codificador aritmético, depende de la
precisión de las estimaciones de probabilidad. En principio, las estimaciones pueden ser fijas o adaptativas. Si se
usan estimaciones de probabilidad fijas, las estimaciones de probabilidad para cada contexto son asignadas a 45 valores predefinidos y permanecen sin cambios durante el proceso de codificación. Las estimaciones de
probabilidad fijas se obtienen normalmente por adelantado analizando material de formación que tiene propiedades
estadísticas similares a aquellas de los datos reales a codificar. Si se usan estimaciones de probabilidad
adaptativas, se usan valores fijos para inicializar las estimaciones de probabilidad para cada contexto y las
probabilidades se actualizan entonces durante todo el proceso de codificación basándose en las propiedades 50 estadísticas reales de los datos (bins) codificados hasta el momento. Las estimaciones de probabilidad adaptativas
generalmente rinden mejor, dado que pueden ajustarse al material que está siendo codificado.
El codificador aritmético basado en contexto ejemplar ilustrado en la figura 4 emplea estimaciones de probabilidad adaptativas y comprende un bloque de estimación de probabilidad 740 donde se calculan estimaciones de probabilidad actualizadas. Las estimaciones de probabilidad para cada contexto se actualizan manteniendo un registro del número de apariciones de 1 y 0 para cada uno de los bins asignados a cada contexto. Por ejemplo, si a
5 los bins asignados a un contexto arbitrario k se les ha asignado el valor 0 m veces y el valor 1 n veces, entonces la estimación de probabilidad para 1 en el contexto k es n/(n(m+1)) y la estimación de probabilidad para 0 es (m+1)/(n(m+1)).
La figura 5 ilustra un decodificador aritmético basado en contexto 800 correspondiente al codificador descrito en
10 relación con la figura 4. Un flujo de bits que representa símbolos de datos codificados aritméticos es recibido por el decodificador aritmético basado en contexto en la entrada 810. Inicialmente, basándose en los símbolos decodificados anteriormente, se calcula un contexto en un bloque de asignación de contexto 850 y las estimaciones de probabilidad de los valores de bin se actualizan. La asignación de contexto, tal como se realiza en el bloque de asignación de contexto 850, y el cálculo de las estimaciones de probabilidad, tal como se lleva a cabo en el bloque
15 de estimación de probabilidad 830, se realizan de la misma manera que el codificador. Los bits recibidos son introducidos a continuación en un motor de decodificación aritmética 840 del decodificador aritmético 820, donde se convierten en valores bin decodificados, usando el contexto calculado y las estimaciones de probabilidad actuales de los valores bin. Los bins decodificados son asociados a los valores de run y de level en un bloque de asociación de un bin a un valor 860.
20 Método CABAC tal como se usa en H.26L
Los detalles del método de codificación aritmética CABAC adoptado para su uso en el perfil de alta complejidad de la recomendación H.26L de la ITU-T se describirán a continuación en detalle. De acuerdo con H.26L TML8, los 25 contextos para valores de run y de level dependen del tipo de bloque que está siendo codificado y el número de bin del valor de level o de run binarizado. Diferentes tipos de bloque son definidos de acuerdo con el modo de barrido (individual/doble) usado para ordenar los valores de coeficiente, el tipo de componente (luminancia/crominancia, AC/DC), o el modo de codificación (INTER/INTRA). Sin embargo, para un tipo de bloque dado, el contexto depende solamente del número de bin. Más específicamente, de acuerdo con H.26L TML8 se definen cuatro contextos para 30 la codificación del valor de level. El primero es para el primer bin, el segundo es para el segundo bin, mientras que el tercer contexto es para el resto de los bins que representan la magnitud de level. Este contexto restante se usa para el signo del valor de level. Un enfoque similar se usa para asignar valores de run a los contextos. Para valores de run existen tres contextos, el primero para el primer bin, el segundo para el segundo bin y el tercero para todos los bins restantes. Dado que los valores de run son siempre iguales o mayores que cero, no hay necesidad de un 35 contexto adicional para representar información del signo. Por lo tanto, para un bloque de un tipo dado, la asignación de bins a contextos para bins de coeficiente de transformada (para codificación tanto de level como de run) puede
Donde bin_nr es el número de bin y context es el número de contexto. De acuerdo con H.26L TML8, el valor de 40 MAX_BIN_VAL se establece igual a 3, pero en principio otro MAX_BIN_VAL podría usarse en su lugar.
Un par run-level se codifica de la siguiente manera: Los valores de run y de level se clasifican en primer lugar de acuerdo con el tipo de bloque/coeficiente: modo de barrido, tipo de coeficiente (DC/AC), y modo de codificación (INTER/INTRA o INTRA 16 x 16). Los valores de level y de run se binarizan a continuación asociándolos en una
45 secuencia de bins y cada bin se asigna a un contexto basándose en su número de bin.
Las figuras 6a-6d ilustran este proceso en detalle en referencia a una matriz 4 x 4 ejemplar de coeficientes DCT cuantizados. También demuestra la naturaleza adaptativa del método CABAC, ilustrando la manera en la que se rastrean las propiedades estadísticas de los valores de run y de level para coeficientes DCT cuantizados. La matriz 50 bidimensional de valores de coeficiente DCT cuantizados se barre en primer lugar en zig-zag para producir una matriz unidimensional de valores, tal como se indica en la figura 6a. Los valores de coeficiente distintos de cero en la matriz unidimensional se representan a continuación como pares de valores de run y de level. Tal como se ha explicado anteriormente, cada valor de level representa el valor de un coeficiente DCT cuantizado distinto de cero, mientras que el valor de run asociado corresponde al número de coeficientes con valor cero que preceden al 55 coeficiente en cuestión. Los pares de run-level derivados de la matriz ejemplar de coeficientes DCT cuantizados se presentan en la figura 6b. En cada par, el valor de level precede al valor de run asociado y un valor de level igual a cero se usa como un símbolo de fin de bloque para indicar que no hay más valores de coeficiente distintos de cero
en el bloque.
A continuación, cada valor de run y de level se convierte en un valor binario. De acuerdo con H.26L TML8, el esquema de binarización usado para convertir los valores de run y de level para valores de coeficiente DCT cuantizados de transformada es idéntico al mostrado anteriormente en la tabla 1. La figura 6c muestra el resultado de aplicar el esquema de binarización presentado en la tabla 1 a los valores de run y de level en la matriz ejemplar. La figura 6c también muestra la asignación de bins a contextos de acuerdo con H.26L. Tal como se ha descrito anteriormente, solamente se usan tres contextos para describir las magnitudes de los valores de run y de level. El primer contexto correspondes al bin 1, el segundo al bin 2, mientras que el tercer contexto comprende todos los bins restantes. En la figura 6c, los contextos se delinean mediante líneas horizontales en negrita. Examinando la figura 6c puede verse que la mayoría de los valores de level se asocian a bins que están asignados al contexto 3, mientras que la mayoría de los valores de run se asocian a bins que están asignados al contexto 1.
Las estimaciones de probabilidad para cada contexto asignado se actualizan después de la codificación de los bins. Las estimaciones de probabilidad para cada uno de los contextos de run y de level se actualizan de forma independiente. Tal como se ha descrito anteriormente, la estimación de probabilidad para un contexto dado representa las características estadísticas de los bins asignados al contexto en cuestión. Más específicamente, la estimación de probabilidad describe la probabilidad de que un bin asignado al contexto contenga un 1 o un 0. La figura 6d describe, de manera ejemplar, la manera en la que las estimaciones de probabilidad se actualizan para valores de run y de level. La figura ilustra la probabilidad de que un bin asignado a un contexto de run o de level dado contenga un 1 o un 0 antes y después de que los valores de run y de level que representan el bloque 4 x 4 de coeficientes DCT cuantizados mostrados en la figura 6a se binaricen y asignen a contextos y se codifiquen en el codificador aritmético. La figura 6d asume la forma de una tabla, que registra la aparición de 1 y 0 en los bins asignados a cada contexto. Por lo tanto, la estimación de probabilidad para un contexto dado viene dada por:
probabilidad de 0 = nº de 0 / (nº de 0 + nº de 1)
probabilidad de 1 = nº de 1 / (nº de 0 + nº de 1)
En la figura se supone que el bloque de 4 x 4 de coeficientes DCT cuantizados mostrado en la figura 6a es el primero de dichos bloques en ser procesado. Esto significa que no hay apariciones previas de 1 y 0 a registrar en la tabla. Para superar este problema, se supone que, antes de que el bloque sea procesado, cada contexto tiene una probabilidad igual de contener un 1 o un 0. Esto se indica introduciendo valores idénticos en las columnas que registran la aparición de 0 y 1. En la figura 6d, se usan 1 para inicializar la estimación de probabilidad.
Como alternativa, una estimación de probabilidad derivada del análisis de datos de formación podría usarse para inicializar las estimaciones de probabilidad para cada contexto. Las estimaciones de probabilidad se actualizan a continuación contando el número de 1 y 0 que aparecen en los bins de cada contexto a medida que los valores de run y de level para el bloque de Coeficientes de transformada DCT cuantizados se binarizan y se asignan a contextos. La columna de la derecha de la figura 6d muestra la situación después de procesar el bloque de 4 x 4 de DCT cuantizada mostrado en la figura 6a.
Aunque el método de codificación aritmética CABAC adoptado en el perfil de alta complejidad de la recomendación
H. 26L TML8 de la ITU-T proporciona una mejora de la compresión de datos en comparación con el método de codificación por entropía UVLC, aún no es óptimo con respecto a la eficacia de codificación. Es, por lo tanto, un objeto de la invención proporcionar un método y sistema para codificación aritmética basada en contexto, en el que la eficacia de codificación se mejora aún más.
Los ejemplos de compresión de imágenes que son útiles para entender esta invención incluyen:
1.
MARPE D ET AL: "Improving coding efficiency of H.26L using CABAC", INTERNET CITATION, 15 de junio de 2001 (), páginas 1-4, es un documento de contribución a ITU-T SG16 que propone CABAC para H.26L.
2.
El documento US 5400075 desvela Codificación de longitud variable para pares de run-level usando conmutación adaptativa entre diferentes tablas de VLC.
3.
MARPE D ET AL: “A TWO-LAYERED WAVELET-BASED ALGORITHM FOR EFFICIENT LOSSLESS AND LOSSY IMAGE COMPRESSION”, IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, IEEE SERVICE CENTER, PISCATAWAY, NJ, Estados Unidos, vol. 10, no. 7, 1 de octubre de 2000 (), páginas 1094-1102, desvela codificación basada en ondículas usando CABAC.
Sumario de la invención
La presente invención se basa en la constatación de que cuando se codifica un símbolo de datos dado usando codificación aritmética basada en contexto, puede conseguirse una mejora de la eficacia de codificación usando modelos de contexto que tienen en cuenta los contextos a los que se asignan otros símbolos de datos. En referencia específica al método CABAC usado en el perfil de alta complejidad de H.26L TML8, los inventores de la presente invención han determinado que existen ciertas relaciones entre los valores de run y de level asociados con coeficientes de transformada DCT. Han determinado, además, que estas relaciones pueden usarse para construir modelos de contexto mejorados que permiten al método CABAC funcionar con eficacia de codificación mejorada cuando se aplica a los valores de run y de level. En particular, los inventores han determinado que valores de level consecutivos muestran una similitud significativa. Más específicamente, dentro de un bloque dado de coeficientes de transformada, el valor de level de un coeficiente a codificar tiene, en general, una magnitud sustancialmente similar al valor de level del coeficiente codificado previamente. Los inventores han determinado también una relación inversa entre los valores de level y de run. En particular, es más probable que valores de level más grandes estén precedidos por valores de run más pequeños. Los inverso también es cierto, concretamente es probable que valores de level más pequeños estén precedidos por valores de run más grandes. Por consiguiente, la presente invención propone la creación de nuevos modelos de contexto para la codificación de coeficientes de transformada DCT, que tienen en cuenta estas relaciones entre valores de level consecutivos.
En un primer dicho modelo de contexto, diseñado para la implementación en un codificador aritmético basado en contexto, el contexto asignado a los bins de un valor de level de coeficiente binarizado depende del valor de level del coeficiente codificado previamente. En un segundo dicho modelo de contexto, diseñado para implementación en un decodificador aritmético basado en contexto, el contexto asignado a los bins de un valor de level de coeficiente binarizado depende del valor de level de coeficiente decodificado previamente. En un tercer modelo de contexto que no forma parte de la presente invención, implementado en un codificador aritmético basado en contexto o un decodificador aritmético basado en contexto, el contexto asignado a los bins de un valor de run de coeficiente binarizado depende del valor de level del coeficiente.
Los inventores también han determinado que existen ciertas similitudes entre los valores de coeficiente de transformada asociados con diferentes bloques de imagen. Estas similitudes son mayores entre bloques de imagen que residen cercanos entre sí y tienden a ser los más fuertes entre bloques de imagen inmediatamente adyacentes. Más específicamente, el número Nc de valores de coeficiente de transformada que no son iguales a cero que representan un bloque de imagen particular tiende a ser similar al número de valores de coeficiente de transformada distintos de cero en un bloque de imagen cerca de, o adyacente a, el bloque de imagen en cuestión. Por lo tanto, la presente divulgación introduce además el concepto de proporcionar una indicación del número de coeficientes de transformada no iguales para un bloque de imagen codificado por transformada y codificar este valor usando codificación por entropía.
Además, si se usa codificación aritmética basada en contexto para codificar el valor de Nc, los inventores han determinado que es ventajoso asignar el valor de Nc de un bloque a un contexto teniendo en cuenta el contexto asignado al valor de Ne para al menos otro bloque de imagen codificado por transformada. De esta manera, la similitud entre valores de Nc entre bloques de imagen que residen cerca entre sí puede aprovecharse en el procedimiento de codificación aritmética basada en contexto. De acuerdo con la recomendación H.26L TML8 de la ITU-T, el número de coeficientes de transformada distintos de cero en un bloque de imagen no está codificado.
En su lugar, y tal como se ha explicado anteriormente, se proporciona una indicación de fin de bloque (EOB). La indicación de EOB señala que el último par run-level correspondiente a un coeficiente distinto de cero ha sido codificado. Los inventores han determinado que el método propuesto, en el que una indicación explícita del número de coeficientes distintos de cero en un bloque se proporciona y se codifica usando codificación aritmética basada en contexto conduce a un incremento de la eficacia de codificación en comparación con el método de proporcionar una indicación de EOB tal como se emplea actualmente en H. 26L TML8.
Aunque la motivación detrás de la presente invención y sus conceptos básicos se han presentado en el contexto de codificación/decodificación de video y, más específicamente, con respecto a H. 26L TML8, debe apreciarse que la invención puede aplicarse en otros sistemas de codificación de video y también a codificación de imagen fija. En principio, la invención puede aplicarse en cualquier sistema de codificación de imágenes en el que se usan codificación por transformada a base de bloques y codificación aritmética basada en contexto.
La invención se define mediante las reivindicaciones.
La presente invención se volverá evidente con la lectura de la descripción tomada junto con las figuras 7a a 12.
Breve descripción de los dibujos
La figura 1 es un diagrama de bloques que ilustra la estructura de un codificador de video ejemplar, que emplea codificación por transformada a base de bloques y predicción por compensación de movimiento. La figura 2 es un diagrama de bloques de un decodificador de video ejemplar correspondiente al codificador de la figura 1. La figura 3 es una representación esquemática que muestra un barrido en zig-zag ejemplar. La figura 4 es un diagrama de bloques que muestra un codificador en un esquema de codificación aritmética basada en contexto de la técnica anterior. La figura 5 es un diagrama de bloques que muestra un decodificador en un esquema de codificación aritmética basada en contexto de la técnica anterior.
La figura 6a es una representación esquemática que muestra una matriz bidimensional ejemplar de valores de coeficiente DCT cuantizados barridos en zig-zag. La figura 6b es una tabla que muestra los valores de level y de run derivados de la matriz de la figura 6a. La figura 6c es una tabla que muestra los valores de level y de run binarizados que resultan de la aplicación del esquema de binarización de la tabla 1 a los valores de level y de run de la figura 6b. La figura 6d es una tabla que muestra una manera en la que se actualizan las estimaciones de probabilidad a partir de valores de run y de level. La figura 7a es una tabla que muestra una manera en la que se asignan contextos a bins basándose en sus valores de level. La figura 7b es una tabla que muestra la manera en la que se asignan contextos a valores de level de acuerdo con una primera realización de la presente invención. La figura 8a es una tabla que muestra una manera en la que se asignan contextos a bins basándose en valores de run. La figura 8b es una tabla que muestra la manera en la que se asignan contextos a valores de run de acuerdo con una segunda realización. La figura 9 es un diagrama de bloques que ilustra un codificador en un esquema de codificación aritmética basada en contexto, de acuerdo con la presente invención. La figura 10 es un diagrama de bloques que ilustra un decodificador, de acuerdo con la presente invención. La figura 11 es un diagrama de flujo que muestra un método de codificación de imágenes, de acuerdo con una realización preferida de la presente invención. La figura 12 es un diagrama de flujo que muestra un método de codificación de imágenes, de acuerdo con otra realización de la presente invención.
Mejor modo de llevar a cabo la invención
Las realizaciones de la invención se describirán a continuación en detalle. Tal como se ha descrito anteriormente, la presente invención proporciona una serie de mecanismos relacionados mediante los cuales puede conseguirse una mejora en la eficacia de codificación (compresión de datos) de un codificador aritmético basado en contexto. Esta mejora se consigue usando modelos de contexto, que tienen en cuenta los contextos a los que se asignan otros símbolos de datos.
Una primera realización de la invención, descrita en detalle en la sección 1.1 a continuación, se refiere a un codificador aritmético binario basado en contexto adecuado para su uso en un sistema de codificación de imágenes tal como el definido por la recomendación H.26L de la ITU-T. En esta realización, valores de level generados codificando por run-level los coeficientes de transformada cuantizados de un bloque codificado por transformada de píxeles de la imagen se asignan a contextos que tienen en cuenta el valor de level de otro coeficiente de transformada que pertenece al mismo bloque.
Una segunda realización, descrita en detalle en la sección 1.2, también se refiere a un codificador aritmético binario basado en contexto para un sistema de codificación de imágenes tal como el definido por la recomendación H.26L de la ITU-T. En la segunda realización, valores de run producidos codificando por run-level los coeficientes de transformada DCT cuantizados de un bloque codificado por transformada de píxeles de la imagen se asignan a contextos que tienen en cuenta el valor de level del par run-level al que pertenece el valor de run.
Una tercera realización se describe en la sección 1.3 y también se refiere a un codificador aritmético basado en contexto para un sistema de codificación de imágenes tal como el definido por la recomendación H.26L de la ITU-T. De acuerdo con la tercera realización, el número de coeficientes de transformada distintos de cero Nc para un bloque de imagen codificado por transformada se determina y se asigna a un contexto que tiene en cuenta el contexto asignado al valor Nc para al menos otro bloque de imagen codificado por transformada.
Una realización preferida de la invención combina la funcionalidad de las tres realizaciones mencionadas anteriormente.
Tal como se ha explicado anteriormente en el texto, el perfil de alta complejidad de la recomendación H.26L TML8 de la ITU-T emplea una forma de codificación aritmética basada en contexto conocida como CABAC. En un codificador de video implementado de acuerdo con H.26L, el método CABAC se usa para codificar diversos tipos diferentes de información producidos por el codificador, incluyendo los coeficientes de transformada generados mediante bloques de codificación por transformada de píxeles de la imagen (en modo de codificación INTRA) o valores de error de predicción (en modo de codificación INTER). La matriz bidimensional de coeficientes de transformada producida codificando por transformada un bloque de píxeles de la imagen es barrida de acuerdo con un modo de barrido particular para producir una matriz unidimensional. Dos de dichos modos de barrido se definen en H.26L. El primero es conocido como 'modo de barrido individual' mientras que el otro se denomina como 'modo de barrido doble'. Sea cual sea el modo de barrido que se usa, el barrido de los coeficientes de transformada convierte la matriz bidimensional de valores de coeficiente en una matriz unidimensional en la que los coeficientes se ordenan de una manera predeterminada. Los valores de coeficiente de transformada ordenados en la matriz unidimensional se convierten en valores de run y de level. La última entrada en la matriz unidimensional ordenada es un símbolo de fin de bloque, que de acuerdo con H.26L TML8, asume la forma de un valor de level igual a cero. Esto indica que el último valor de coeficiente distinto de cero en la matriz ordenada se ha convertido en un par run-level. Los valores de run y de level se convierten en números binarios (se binarizan), asociándolos a una serie de bins, a cada uno de los cuales se le puede asignar el valor de 0 o 1 (véase la tabla 1). Los valores de run y de level
5 binarizados se asignan a continuación a contextos, estando un conjunto diferente de contextos definido para los valores de run y los de level. De acuerdo con H.26L TML8, para un tipo de bloque dado, el conjunto de contextos definido para los valores de level depende solamente del número de bin al que se le asignan los valores de level. Más específicamente, de acuerdo con H.26L TML8 se definen cuatro contextos para la codificación del valor de level. El primero es para el primer bin, el segundo es para el segundo bin, mientras que el tercer contexto es para el
10 resto de los bins que representan la magnitud del valor de level. El contexto restante se usa para el signo del valor de level. Para los valores de run existen tres contextos, el primero para el primer bin, el segundo para el segundo bin y el tercero para todos los restantes bins. Dado que los valores de run son siempre iguales o mayores que cero, no existe necesidad de un contexto adicional para representar información del signo.
15 1.1. Modelo de contexto para valores de level
De acuerdo con una primera realización de la presente invención, cuando se asigna un valor de level binarizado a un contexto, además de considerar el bin al que se asocia el propio valor de level, también se tiene en cuenta el valor de level del par run-level precedente. En este contexto, la expresión 'par run-level precedente' significa el par run
20 level correspondiente al coeficiente precedente en la matriz unidimensional ordenada de valores de coeficiente. El siguiente pseudocódigo presenta un procedimiento ejemplar para asignar un contexto a un valor de level de un par run-level, teniendo en cuenta tanto el bin al que el propio valor de level está asignado como el valor de level del par
25 En la expresión (2) prev_level es la magnitud del valor de level del par run-level previo. prev_level se inicializa a cero al comienzo de cada bloque. En modo de barrido doble, prev_level se inicializa al comienzo de cada barrido, dos veces por bloque. El parámetro MAX_BIN_LEVEL proporciona un medio para controlar la manera en la que el número bin al que se asocia el valor de level afecta a la asignación de un contexto. Más específicamente, y de manera similar a la presente asignación de contextos de acuerdo con H.26L TML8, MAX_BIN_LEVEL define
30 eficazmente un contexto al que se le asignan todos los números de bin mayores o iguales a MAX_BIN_LEVEL. De manera similar, el parámetro MAX_LEVEL proporciona un medio para controlar la manera en la que el valor de level del par run-level previo afecta a la asignación de un contexto. Las figuras 7a y 7b ilustran la manera en la que son asignados los contextos a valores de level de acuerdo con la primera realización de la invención aplicando el pseudocódigo la de expresión (2) con MAX_BIN_LEVEL = 3 y MAX_LEVEL = 5. En principio, puede usarse
35 cualquier combinación de MAX_BIN_LEVEL y MAX_LEVEL para definir un conjunto de contextos apropiados para las características estadísticas de los valores de level a codificar.
1.2. Modelo de contexto para valores de run
40 De acuerdo con una segunda realización, un enfoque que es similar al descrito en la sección 1.1 se usa para asignar valores de run a contextos. Más específicamente, cuando se asigna un valor de run binarizado a un contexto, además de considerar el bin al que se asocia el propio valor de run, el level del par run-level al que pertenece el valor de run también es tenido en cuenta. El siguiente pseudocódigo presenta un procedimiento ejemplar para asignar un contexto a un valor de run de un par run-level, teniendo en cuenta tanto el bin al que se asocia el propio
45 valor run como el valor de level del par run-level al que pertenece el valor de run: En la expresión (3) level es la magnitud del valor de level del par run-level. El parámetro MAX_BIN_RUN proporciona un medio para controlar la manera en la que el número de bin al que se asocia el valor de run afecta a la asignación de un contexto. Más específicamente, y de manera similar a la presente asignación de contextos de acuerdo con H.26L TML8, MAX_BIN_RUN define eficazmente un contexto al que se asignan todos los números de bin mayores de o iguales a MAX_BIN_RUN. De manera similar, el parámetro MAX_RUNL proporciona un medio para controlar la manera en la que el valor de level del par run-level afecta a la asignación de un contexto. Las figuras 8a y 8b ilustran la manera en que se asignan contextos a valores de level de acuerdo con la segunda realización aplicando el pseudocódigo de la expresión (3) con MAX_BIN_RUN = 3 y MAX_RUNL = 4. En principio, puede usarse cualquier combinación de MAX_BIN_RUN y MAX_RUNL para definir un conjunto de contextos apropiados para las características estadísticas de los valores de run a codificar.
1.3 Contextos para el número de coeficientes distintos de cero
Una tercera realización se refiere en particular a la manera en que una matriz ordenada de valores de coeficiente de transformada se convierte en valores de run y de level y la manera en que se señala el número de pares run-level correspondiente a una matriz de valores de coeficiente de transformada cuantizados. Más específicamente, después de que un bloque de píxeles de la imagen o valores de error de predicción ha sido codificado por transforma para formar una matriz bidimensional de valores de coeficiente de transformada y cada uno de los valores de coeficiente se ha cuantizado, el número de valores de coeficiente cuantizados distintos de cero en la matriz se determina. Un valor, denominado como Nc, se asigna a ese número y se usa para señal explícitamente el número de valores de coeficiente distintos de cero en la matriz. Por lo tanto, de acuerdo con esta realización de la invención, ya no se requiere un símbolo de EOB, por ejemplo un valor de level igual acero.
Los coeficientes de transformada cuantizados son barridos adicionalmente de acuerdo con un orden de barrido predeterminado para producir una matriz unidimensional ordenada. Como alternativa, Nc puede determinarse después de ordenar los valores de coeficiente cuantizados. Cada uno de los coeficientes cuantizados distintos de cero en la matriz ordenada se convierte a continuación en un par run-level. De acuerdo con esta realización, el valor de level del par run-level indica la magnitud del valor del coeficiente cuantizado menos 1 y el valor de run corresponde al número de coeficientes cuantizados iguales a cero consecutivos que preceden al coeficiente en cuestión. Los valores de level son asignados a la magnitud del valor del coeficiente cuantizado menos 1, dado que un valor de level igual a cero ya no se usa como indicador de fin de bloque. Esto da origen a un ahorro de la cantidad de datos (por ejemplo número de bits) requeridos para representar la información de level.
Los valores de level y de run son codificados a continuación usando codificación por entropía, como en el valor Nc. En una situación en la que se usa un método de codificación aritmética basada en contexto tal como la técnica CABAC implementada en H.26L TML8, los valores de run y de level pueden codificarse de acuerdo con la primera y/o segunda realizaciones, tal como se ha descrito anteriormente. Como alternativa, puede usarse cualesquiera otros modelos de contexto apropiados para los valores de run y de level. Adicionalmente, se define un modelo de contexto diferente para Nc. De acuerdo con esta realización, el valor Nc que representa en número de coeficientes de transformada cuantizados distintos de cero en un bloque dado se binariza en primer lugar asociándolo a una serie de bins, cada uno de los cuales tiene un número de bin correspondiente. El contexto para Nc se determina a continuación basándose en el número de bin al que se asocia Nc y el Nc de al menos otro bloque o macrobloque de imágenes al que ya se le ha asignado un valor Nc. El siguiente pseudocódigo presenta un procedimiento ejemplar para asignar un contexto a un valor Nc, teniendo en cuenta tanto el bin al que se le asocia el propio Nc y el valor Nc precedente:
En la expresión (4) prev_nc es el valor Nc previo.
Cuando valores de level y de run codificados para un bloque dado de coeficientes de transformada cuantizados se
5 transmiten desde un codificador a un decodificador, el valor Nc codificado por entropía se transmite antes que los valores de run y de level codificados. En el decodificador, el valor Nc se decodifica, seguido por los pares run-level correspondientes a los valores de coeficiente de transformada cuantizados para el bloque en cuestión. El valor de +1 se añade a cada una de la magnitud de los valores de level, a medida que son decodificados para compensar la sustracción correspondiente realizada en el codificador.
10 Para demostrar la mejora en el eficacia de codificación usando el método de codificación de imágenes, de acuerdo con la presente invención, la diferencia de velocidad de transferencia de bits promedio se calcula usando resultados para QP = 28, 24, 20, 16. La tabla 2 muestra la reducción en porcentaje de la velocidad de transferencia de bits, en comparación con TML8, donde MAX_LEVEL = 5 y MAX_RUN = 4. Todos los fotogramas son codificados como
15 fotogramas I en modo CABAC. Tal como se muestra en la tabla 2, la reducción de la velocidad de transferencia de bits varía entre el 0,95 y el 4,74%. La mejora es más pronunciada cuando los valores de QP son pequeños.
Tabla 2
QP
Container Foreman News Silent Tempete Mobile Paris
5
3,19 3,92 3,11 4,74 4,01 3,63 3,34
10
3,10 3,39 2,85 4,32 3,88 3,73 3,04
16
2,64 2,67 2,26 3,17 3,37 3,37 2,55
20
2,20 2,14 1,76 2,38 2,79 2,90 2,20
24
1,30 1,51 1,35 2,28 1,89 2,01 1,54
28
1,16 0,95 0,99 1,76 1,55 1,57 1,18
Dif. Bitrato Prom.* (%)
1,79 1,83 1,58 2,37 2,49 2,40 1,87
20 En la tabla 2, los nombres que aparecen en la primera fila de la tabla son fotos usadas en el documento Gisle Bjontegaard “Recommended Simulation Conditions for H.26L” (VCG-M75, ITU-T Video Coding Experts Group, Austin, Texas, Estados Unidos, 2-4 de abril de 2001).
En referencia ahora a la figura 9, un codificador 10 en el lado de transmisión, de acuerdo con la presente invención,
25 incluye una unidad 16 para almacenar valores de level y de run previos. Tal como se muestra en la figura 9, los pares run-level 102 para un bloque dado se proporcionan a una unidad de asociación 12, que asocia los pares a una secuencia de bins, teniendo cada bin un valor de 0 o 1. La ubicación del bin en la secuencia que representa un par run-level se denomina un número de bin. Los números de bin se representan mediante señales 104. Basándose en las señales 104 y un valor de level 108 codificado previamente proporcionado por la unidad 16, una unidad de
30 asignación 14 asigna un contexto a un número de bin. Los contextos, indicados mediante señales 106, se proporcionan a un codificador aritmético adaptativo 20. La probabilidad de aparición de 1 y la probabilidad de aparición de 0 son estimadas por un módulo de estimación de probabilidad 22. Basándose en las estimaciones de probabilidad 120, una unidad de codificación aritmética 24 codifica los bins. Una señal de retroalimentación 124 es proporcionada desde el codificador 24 al módulo de estimación de probabilidad 22 para actualizar la estimación de
35 probabilidad. La información codificada se transforma en un flujo de bits 122 para transportarla a un decodificador o almacenarla en un dispositivo de almacenamiento para uso posterior.
Preferentemente, el codificador 10 también incluye una unidad 18, que es capaz de proporcionar el número, Nc, de coeficientes distintos de cero en el bloque al codificador aritmético 20 antes de que los pares run-level sean 40 proporcionados al codificador aritmético 20, de modo que Nc es también codificado e incluido en el flujo de bits 122. Nc se representa mediante señales 110. Usando Nc, no existe necesidad de enviar un símbolo de fin de bloque
(EOB) al decodificador. En la técnica anterior, el valor de level de 0 se usa para el símbolo de EOB. Más específicamente, Nc se descubre después de la transformada y cuantización y se codifica usando codificación por entropía. Debe observarse que con el número de coeficientes distintos de cero conocido, ya no es necesario usar el valor de level igual a cero para señal el final del bloque. Por lo tanto, es posible modificar el valor de level sustrayendo 1 del valor del coeficiente cuantizado.
En el lado de recepción, tal como se muestra en la figura 10, un decodificador 50 se usa para recibir el flujo de bits 122 proporcionado por el codificador 10. El flujo de bits recibido, que representa símbolos de datos codificados aritméticos, se indica mediante el número de referencia 202. Inicialmente, basándose en los símbolos decodificados previamente, se calcula un contexto en un bloque de asignación de contexto 66 y las estimaciones de probabilidad de los valores de bin se actualizan en un bloque de estimación de probabilidad 62. Los símbolos decodificados previamente basándose en los cuales se actualizan las estimaciones de probabilidad se indican mediante el número de referencia 205. La asignación de contextos, tal como se lleva a cabo en el bloque de asignación de contexto 66, y el cálculo de las estimaciones de probabilidad, tal como se lleva a cabo en el bloque de estimación de probabilidad 62, son similares a aquellos en el codificador 10. Los bits recibidos 202 son introducidos a continuación en un motor de decodificación aritmética 64 en un codificador aritmético 60, donde se convierten en valores de bin decodificados 206, usando el contexto calculado y las estimaciones de probabilidad actuales de los valores de bin 204. Los bins 208 se asocian a los valores de run y de level en el bloque 68. Si el número, Nc, de coeficientes distintos de cero en el bloque es codificado en el codificador 10 y provisto en el flujo de bits recibido 202, a continuación se proporciona una señal 214 al módulo de asociación de un bin a un valor 68 con lo que el coeficiente cuantizado se restaura añadiendo 1 al valor de level.
La figura 11 es un diagrama de flujo que muestra un método de codificación de imagen, de acuerdo con la realización preferida de la presente invención. Tal como se muestra, el método 500 comienza en la etapa 510 donde una imagen es recibida por un codificador. La imagen recibida se divide en una pluralidad de bloques en la etapa
520. Cada bloque es barrido en la etapa 530 y los valores de level y run de los coeficientes cuantizados en el bloque se obtienen en la etapa 540. En contraste a los esquemas de codificación de la técnica anterior, la presente invención también usa los valores de level previos en la asignación de contextos en la etapa 550. En particular, la asignación de contextos a los bins que representan los valores de level de los coeficientes cuantizados tiene en cuenta el valor del level codificado previamente, tal como se describe en la sección 1.1. Del mismo modo, la asignación de contextos a los bins que representan los valores de run de los coeficientes cuantizados tiene en cuenta el valor de level, tal como se describe en la sección 1.2. Los contextos asignados son transportados a un codificador aritmético para codificación en la etapa 560. Adicionalmente, Nc, o el número de coeficientes cuantizados distintos de cero, se determina durante o después de que el bloque sea barrido en la etapa 530 y Nc es codificado en la etapa 560 antes de que Nc y los contextos sean proporcionados a un decodificador, tal como se describe en la sección 1.3.
Como alternativa, el método de codificación de imágenes puede mejorarse exclusivamente transportando señales indicativas de Nc al lado de recepción, sin considerar el valor del level o run codificados previamente cuando los contextos son asignados, tal como se muestra en la figura 11. Tal como se muestra en la figura 12, en lugar de obtener los valores de level y de run previamente codificados en la etapa 540 para asignar los contextos en la etapa 550, Nc se obtiene y se proporciona en la etapa 542. Nc es transportado, antes de que los contextos asignados en la etapa 550 sean enviados, a un codificador aritmético para codificación en la etapa 560. Enviando Nc, no hay necesidad de enviar el símbolo de EOB al decodificador.
Aunque la invención se ha descrito con respecto a una realización preferida de la misma, los expertos en la materia entenderán que los anteriores y muchos otros cambios, omisiones y desviaciones en la forma y detalle de la misma pueden realizarse sin alejarse del alcance de esta invención, tal como se define en las reivindicaciones.

Claims (24)

  1. REIVINDICACIONES
    1.
    Un método de codificación aritmética basada en contexto en el que una imagen se divide en una pluralidad de bloques que tienen una pluralidad de píxeles, teniendo cada píxel un valor de píxel, y la operación de codificación por transformada se realiza en un bloque de píxeles para producir un bloque correspondiente de valores de coeficiente de transformada, y el bloque de valores de coeficiente de transformada es barrido en un orden de barrido dado para producir una matriz barrida de valores de coeficiente que representan diferentes frecuencias espaciales en el bloque, en donde los valores de coeficiente en la matriz barrida se representan mediante una pluralidad de pares de números de run-level, teniendo cada par un valor de LEVEL y un segundo número, siendo el valor de LEVEL y el segundo número asignados a un contexto seleccionado entre una pluralidad de contextos representativos de los pares de números, caracterizado por que el valor de LEVEL de un par de números es asignado a un contexto dependiendo al menos parcialmente de un valor de LEVEL de un par de números en el bloque asignado previamente a un contexto.
  2. 2.
    Un método de decodificación aritmética basada en contexto, comprendiendo el método decodificar una imagen que ha sido dividida en una pluralidad de bloques que tienen una pluralidad de píxeles, teniendo cada píxel un valor de píxel, en donde una operación de codificación por transformada ha sido realizada en un bloque de píxeles para producir un bloque correspondiente de valores de coeficiente de transformada, y el bloque de valores de coeficiente de transformada ha sido barrido en un orden de barrido dado para producir una matriz barrida de valores de coeficiente que representan diferentes frecuencias espaciales en el bloque, en donde los valores de coeficiente en la matriz barrida se representan mediante una pluralidad de pares de números de run-level, teniendo cada par un valor de LEVEL y un segundo número, comprendiendo el método asignar el valor de LEVEL y el segundo número de un par de números a un contexto seleccionado entre una pluralidad de contextos representativos de los pares de números, caracterizado por asignar el valor de LEVEL de un par de números a un contexto dependiendo al menos parcialmente de un valor de LEVEL de un par de números en el bloque asignado previamente a un contexto.
  3. 3.
    Un método de acuerdo con la reivindicación 1 o 2, en el que los valores de LEVEL de dichos pares de números se asocian a un conjunto de bins, teniendo cada uno de dicho conjunto de bins un número de bin asociado y siendo capaces de tomar uno de un primer valor o un segundo valor.
  4. 4.
    Un método de acuerdo con la reivindicación 1 o 2, en el que los segundos números de dichos pares de números se asocian a un conjunto de bins, teniendo cada uno de dicho conjunto de bins un número de bin asociado y siendo capaces de tomar uno de un primer valor o un segundo valor.
  5. 5.
    Un método de acuerdo con la reivindicación 3 o 4, en el que la asociación de un número a uno dado de dicho conjunto de bins se indica asignando el bin al primer valor.
  6. 6.
    Un método de acuerdo con la reivindicación 3, 4 o 5, en el que el primer valor es 1 y el segundo valor es 0.
  7. 7.
    Un método de acuerdo con cualquiera de las reivindicaciones 3 a 6, en el que el valor de LEVEL de un par de números es asignado a un contexto dependiendo al menos parcialmente del bin al que se asocia el valor de LEVEL del par de números.
  8. 8.
    Un método de acuerdo con cualquiera de las reivindicaciones 3 a 7, en el que el segundo número de un par de números es asignado a un contexto dependiendo al menos parcialmente del bin al que se asocia el segundo número del par de números.
  9. 9.
    Un método de acuerdo con cualquiera de las reivindicaciones 1 a 8, en el que dicho valor de LEVEL es indicativo de un valor de coeficiente distinto de cero y dicho segundo número es indicativo de un número de valores de coeficiente iguales a cero consecutivos que preceden a dicho valor de coeficiente distinto de cero.
  10. 10.
    Un método de acuerdo con la reivindicación 1 o 2, en el que los valores de LEVEL de dichos pares de números se asocian a un conjunto de bins, teniendo cada uno de dichos bins un número de bin asociado, en donde el valor de LEVEL de un par de números particular es asignado a un contexto de acuerdo con la siguiente lógica:
    if (bin_nr > MAX_BIN_LEVEL) bin_nr = MAX_BIN_LEVEL; end if (prev_level > MAX_LEVEL) prev_level = MAX_LEVEL; end context = (bin_nr-1)*MAX_LEVEL + prev_level
    donde bin_nr es el número de bin del bin al que se le asocia el valor de LEVEL de dicho par de números particular, MAX_BIN_LEVEL determina el bin al que se asocian valores LEVEL con valores mayores de MAX_BIN_LEVEL, prev_level es el valor del valor de LEVEL de un par de números inmediatamente precedente en dicho orden de barrido, MAX_LEVEL define un valor máximo para prev_level, al que se asocian todos los valores de prev_level mayores de MAX_LEVEL, y context es el contexto asignado al valor de LEVEL de dicho par de números particular.
  11. 11.
    Un método de acuerdo con cualquier reivindicación anterior, en el que el segundo número del par de números es asignado a un contexto dependiendo al menos parcialmente del valor de LEVEL del par de números.
  12. 12.
    Uso de un método de acuerdo con la reivindicación 1 o una cualquiera de las reivindicaciones 3 a 11 cuando depende de la reivindicación 1, en una aplicación de codificación de imágenes o codificación de video.
  13. 13.
    Uso de un método de acuerdo con la reivindicación 2 o una cualquiera de las reivindicaciones 3 a 11 cuando depende de la reivindicación 2, en aplicación de decodificación de imágenes o decodificación de video.
  14. 14.
    Aparato codificador aritmético basado en contexto configurado para dividir una imagen en una pluralidad de bloques que tienen una pluralidad de píxeles, teniendo cada píxel un valor de píxel, y la operación de codificación por transformada se realiza en un bloque de píxeles para producir un bloque correspondiente de valores de coeficiente de transformada, y el bloque de valores de coeficiente de transformada es barrido en un orden de barrido dado para producir una matriz barrida de valores de coeficiente que representan diferentes frecuencias espaciales en el bloque, en donde los valores de coeficiente en la matriz barrida se representan mediante una pluralidad de pares de números de run-level, teniendo cada par un valor de LEVEL y un segundo número, estando el aparato codificador aritmético basado en contexto dispuesto para asignar el valor de LEVEL de un par de números a un contexto seleccionado entre una pluralidad de contextos representativos de los pares de valores de LEVEL, caracterizado por que el aparato codificador está configurado además para asignar el valor de LEVEL de un par de números a un contexto dependiendo al menos parcialmente de un valor de LEVEL de un par de números en el bloque asignado previamente a un contexto.
  15. 15.
    Aparato decodificador aritmético basado en contexto configurado para decodificar una imagen que ha sido dividida en una pluralidad de bloques que tienen una pluralidad de píxeles, teniendo cada píxel un valor de píxel, y ha sido sometida a una operación de codificación por transformada realizada en un bloque de píxeles para producir un bloque correspondiente de valores de coeficiente de transformada, y el bloque de valores de coeficiente de transformada ha sido barrido en un orden de barrido dado para producir una matriz barrida de valores de coeficiente que representan diferentes frecuencias espaciales en el bloque, en donde los valores de coeficiente en la matriz barrida se representan mediante una pluralidad de pares de números de run-level, teniendo cada par un valor de LEVEL y un segundo número, estando el aparato decodificador aritmético basado en contexto dispuesto para asignar el valor de LEVEL de un par de números a un contexto seleccionado entre una pluralidad de contextos representativos de los pares de números, caracterizado por que el aparato decodificador está configurado además para asignar el valor de LEVEL de un par de números a un contexto dependiendo al menos parcialmente de un valor de LEVEL de un par de números en el bloque asignado previamente a un contexto.
  16. 16.
    Aparato de acuerdo con la reivindicación 14 o 15, en donde éste está dispuesto para asociar los valores de LEVEL de dichos pares de números a un conjunto de bins, teniendo cada uno de dicho conjunto de bins un número de bin asociado y siendo capaces de tomar uno de un primer valor o un segundo valor.
  17. 17.
    Aparato de acuerdo con la reivindicación 14 o 15, en donde éste está dispuesto para asociar los segundos números de dichos pares de números a un conjunto de bins, teniendo cada uno de dicho conjunto de bins un número de bin asociado y siendo capaces de tomar uno de un primer valor o un segundo valor.
  18. 18.
    Aparato de acuerdo con la reivindicación 16 o 17, en donde éste está dispuesto para asociar un número a uno dado de dicho conjunto de bins asignando el bin al primer valor.
  19. 19.
    Aparato de acuerdo con la reivindicación 16, 17 o 18, en el que el primer valor es 1 y el segundo valor es 0.
  20. 20.
    Aparato de acuerdo con cualquiera de las reivindicaciones 16 a 19, en donde éste está dispuesto para asignar el valor de LEVEL de un par de números a un contexto dependiendo al menos parcialmente del bin al que se asociar el valor de LEVEL del par de números.
  21. 21.
    Aparato de acuerdo con cualquiera de las reivindicaciones 16 a 20, en donde éste está dispuesto para asignar el segundo número de un par de números a un contexto dependiendo al menos parcialmente del bin al que se asocia el segundo número del par de números.
  22. 22.
    Aparato de acuerdo con cualquiera de las reivindicaciones 14 a 21, en el que dicho valor de LEVEL es indicativo de un valor de coeficiente distinto de cero y dicho segundo número es indicativo de un número de valores de coeficiente iguales a cero consecutivos que preceden a dicho valor de coeficiente distinto de cero.
  23. 23.
    Aparato de acuerdo con la reivindicación 14 o 15, en donde el aparato está dispuesto para asociar los valores de LEVEL de dichos pares de números a un conjunto de bins, teniendo cada uno de dichos bins un número de bin asociado, en donde el aparato está dispuesto además para asignar el valor de LEVEL de un par de números
    particular a un contexto de acuerdo con la siguiente lógica:
    if (bin_nr > MAX_BIN_LEVEL) bin_nr = MAX_BIN_LEVEL;
    5 end if (prev_level > MAX_LEVEL) prev_level = MAX_LEVEL; end context = (bin_nr-1)*MAX_LEVEL + prev_level
    10 donde bin_nr es el número bin del bin al que se le asocia el valor de LEVEL de dicho par de números particular, MAX_BIN_LEVEL determina el bin al que se asocian valores de LEVEL con valores mayores de MAX_BIN_LEVEL, prev_level es el valor del valor de LEVEL de un par de números inmediatamente precedente en dicho orden de barrido, MAX_LEVEL define un valor máximo para prev_level, al que se asocian todos los valores de prev_level
    15 mayores de MAX_LEVEL, y context es el contexto asignado al valor de LEVEL de dicho par de números particular.
  24. 24. Aparato de acuerdo con cualquiera de las reivindicaciones 14-23, en el que el segundo número del par de números es asignado a un contexto dependiendo al menos parcialmente del valor de LEVEL del par de números.
    20 25. Un programa informático que comprende un código legible por una máquina para implementar el método de codificación aritmética basada en contexto de acuerdo con la reivindicación 1.
    ���������������
    Actualizar la estimación de probabilidad
    Codificador aritmético adaptativo Actualizar la estimación de probabilidad
    Codificador aritmético adaptativo
ES02799444.1T 2001-09-14 2002-09-12 Método y sistema para codificación aritmética binaria adaptativa basada en contexto Expired - Lifetime ES2442851T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US995240 1992-12-22
US32211201P 2001-09-14 2001-09-14
US322112P 2001-09-14
US09/995,240 US6856701B2 (en) 2001-09-14 2001-11-27 Method and system for context-based adaptive binary arithmetic coding
PCT/IB2002/003745 WO2003027940A1 (en) 2001-09-14 2002-09-12 Method and system for context-based adaptive binary arithmetic coding

Publications (1)

Publication Number Publication Date
ES2442851T3 true ES2442851T3 (es) 2014-02-13

Family

ID=26983269

Family Applications (1)

Application Number Title Priority Date Filing Date
ES02799444.1T Expired - Lifetime ES2442851T3 (es) 2001-09-14 2002-09-12 Método y sistema para codificación aritmética binaria adaptativa basada en contexto

Country Status (7)

Country Link
US (1) US6856701B2 (es)
EP (2) EP1435063B1 (es)
JP (3) JP5230890B2 (es)
CN (1) CN1327395C (es)
AU (1) AU2002334271B9 (es)
ES (1) ES2442851T3 (es)
WO (1) WO2003027940A1 (es)

Families Citing this family (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002118846A (ja) * 2000-10-05 2002-04-19 Matsushita Electric Ind Co Ltd 画像符号化装置
US7082450B2 (en) 2001-08-30 2006-07-25 Nokia Corporation Implementation of a transform and of a subsequent quantization
DE10218541A1 (de) 2001-09-14 2003-04-24 Siemens Ag Verfahren zur Videocodierung und Computerprogrammprodukt
KR20040054794A (ko) * 2001-11-22 2004-06-25 마츠시타 덴끼 산교 가부시키가이샤 가변 길이 부호화 방법 및 가변 길이 복호화 방법
US9497452B2 (en) * 2002-01-22 2016-11-15 Broadcom Corporation System and method of transmission and reception of video using compressed differential time stamps
WO2003063464A2 (en) * 2002-01-22 2003-07-31 Broadcom Corporation System and method of transmission and reception of video using compressed differential time stamps
US7206448B2 (en) * 2002-02-28 2007-04-17 At&T Corp. System and method for using pattern vectors for video and image coding and decoding
US7978765B2 (en) * 2002-03-22 2011-07-12 Realnetworks, Inc. Context-adaptive macroblock type encoding/decoding methods and apparatuses
JP4090862B2 (ja) 2002-04-26 2008-05-28 松下電器産業株式会社 可変長符号化方法および可変長復号化方法
JP3807342B2 (ja) 2002-04-25 2006-08-09 三菱電機株式会社 デジタル信号符号化装置、デジタル信号復号装置、デジタル信号算術符号化方法、およびデジタル信号算術復号方法
JP2003319391A (ja) * 2002-04-26 2003-11-07 Sony Corp 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム
WO2003094529A2 (de) * 2002-05-02 2003-11-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren von transformations-koeffizienten in bild-oder videokodierern
US6711300B2 (en) * 2002-08-15 2004-03-23 Envivio, Inc. Quantization and compression of information in a direct acyclic graph
TWI260509B (en) * 2002-08-15 2006-08-21 Sony Corp Method and apparatus for processing image data and semiconductor storage device
ES2297083T3 (es) 2002-09-04 2008-05-01 Microsoft Corporation Codificacion entropica por adaptacion de la codificacion entre modos por longitud de ejecucion y por nivel.
JP4240283B2 (ja) * 2002-10-10 2009-03-18 ソニー株式会社 復号装置及び復号方法
US8824553B2 (en) * 2003-05-12 2014-09-02 Google Inc. Video compression method
US7630440B2 (en) * 2003-05-28 2009-12-08 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
US7769088B2 (en) * 2003-05-28 2010-08-03 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
KR20050087956A (ko) 2004-02-27 2005-09-01 삼성전자주식회사 무손실 오디오 부호화/복호화 방법 및 장치
US7586924B2 (en) * 2004-02-27 2009-09-08 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream
KR100561869B1 (ko) * 2004-03-10 2006-03-17 삼성전자주식회사 무손실 오디오 부호화/복호화 방법 및 장치
US7463781B2 (en) * 2004-04-14 2008-12-09 Lsi Corporation Low overhead context intializations for arithmetic video codecs
US20050259747A1 (en) * 2004-05-21 2005-11-24 Broadcom Advanced Compression Group, Llc Context adaptive binary arithmetic code decoder for decoding macroblock adaptive field/frame coded video data
EP2006839A3 (en) * 2004-07-14 2009-02-11 Agency for Science, Technology and Research Context-based encoding and decoding of signals
KR100612015B1 (ko) * 2004-07-22 2006-08-11 삼성전자주식회사 컨텍스트 적응형 이진 산술 부호화 방법 및 그 장치
US7528724B2 (en) * 2005-02-28 2009-05-05 Impinj, Inc. On die RFID tag antenna
KR100694098B1 (ko) * 2005-04-04 2007-03-12 한국과학기술원 산술 복호 방법 및 그 장치
WO2006109990A1 (en) * 2005-04-13 2006-10-19 Samsung Electronics Co., Ltd. Context-based adaptive arithmetic coding and decoding methods and apparatuses with improved coding efficiency and video coding and decoding methods and apparatuses using the same
KR100664936B1 (ko) * 2005-04-13 2007-01-04 삼성전자주식회사 코딩 효율이 향상된 컨텍스트 기반 적응적 산술 코딩 및디코딩 방법과 이를 위한 장치, 이를 포함하는 비디오 코딩및 디코딩 방법과 이를 위한 장치
CN100584025C (zh) * 2005-08-04 2010-01-20 华为技术有限公司 一种基于内容自适应的算术解码系统及装置
CN100403801C (zh) * 2005-09-23 2008-07-16 联合信源数字音视频技术(北京)有限公司 一种基于上下文的自适应熵编/解码方法
KR100873636B1 (ko) 2005-11-14 2008-12-12 삼성전자주식회사 단일 부호화 모드를 이용하는 영상 부호화/복호화 방법 및장치
JP2007166039A (ja) * 2005-12-09 2007-06-28 Matsushita Electric Ind Co Ltd 画像符号化装置
WO2007102518A1 (ja) * 2006-03-07 2007-09-13 The University Of Tokushima 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体
JP4555257B2 (ja) * 2006-06-06 2010-09-29 パナソニック株式会社 画像符号化装置
US7262722B1 (en) * 2006-06-26 2007-08-28 Intel Corporation Hardware-based CABAC decoder with parallel binary arithmetic decoding
KR20080008137A (ko) * 2006-07-19 2008-01-23 삼성전자주식회사 영상 복원 장치 및 방법
KR100882949B1 (ko) * 2006-08-17 2009-02-10 한국전자통신연구원 화소 유사성에 따라 적응적인 이산 코사인 변환 계수스캐닝을 이용한 부호화/복호화 장치 및 그 방법
WO2008075663A1 (ja) * 2006-12-21 2008-06-26 Ajinomoto Co., Inc. 大腸癌の評価方法、ならびに大腸癌評価装置、大腸癌評価方法、大腸癌評価システム、大腸癌評価プログラムおよび記録媒体
US8259793B2 (en) * 2007-03-19 2012-09-04 Sony Corporation System and method of fast MPEG-4/AVC quantization
US7518536B2 (en) * 2007-03-30 2009-04-14 Hong Kong Applied Science And Technology Research Institute Co. Ltd. Method and apparatus for debinarization of digital video data during decoding
US7443318B2 (en) * 2007-03-30 2008-10-28 Hong Kong Applied Science And Technology Research Institute Co. Ltd. High speed context memory implementation for H.264
US7501964B2 (en) * 2007-04-16 2009-03-10 Texas Instruments Incorporated Entropy coding for digital codecs
EP2150061A4 (en) * 2007-05-21 2011-07-20 Nec Corp VIDEO CODING DEVICE, VIDEO CODING METHOD, AND VIDEO CODING PROGRAM
JP5173613B2 (ja) * 2007-07-03 2013-04-03 キヤノン株式会社 動画像符号化装置及びその制御方法
AU2007249106B2 (en) * 2007-12-18 2010-11-25 Canon Kabushiki Kaisha A lossless compressor for image data values
ES2519766T3 (es) 2007-12-20 2014-11-07 Optis Wireless Technology, Llc Señalización de canal de control usando un campo de señalización común para el formato de trnasporte y la versión de redundancia
KR101375668B1 (ko) * 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
US8542748B2 (en) 2008-03-28 2013-09-24 Sharp Laboratories Of America, Inc. Methods and systems for parallel video encoding and decoding
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US8138956B2 (en) * 2008-06-02 2012-03-20 Mediatek Inc. CABAC encoder and CABAC encoding method
US8326075B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video encoding using adaptive loop filter
US8325796B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
US8385404B2 (en) 2008-09-11 2013-02-26 Google Inc. System and method for video encoding using constructed reference frame
US20110194616A1 (en) * 2008-10-01 2011-08-11 Nxp B.V. Embedded video compression for hybrid contents
US20100226568A1 (en) * 2009-03-09 2010-09-09 Smith Micro Software, Inc. Effective color modeling method for predictive image compression
EP2489191A1 (en) * 2009-10-14 2012-08-22 Sharp Kabushiki Kaisha Methods for parallel video encoding and decoding
EP2312854A1 (de) 2009-10-15 2011-04-20 Siemens Aktiengesellschaft Verfahren zur Codierung von Symbolen aus einer Folge digitalisierter Bilder
US7978102B1 (en) * 2010-03-09 2011-07-12 Himax Media Solutions, Inc. Multi-bin CABAC decision bin decoder
TWI396450B (zh) * 2010-03-11 2013-05-11 Himax Media Solutions Inc 高運算頻率的二進制運算解碼裝置
JP5914962B2 (ja) * 2010-04-09 2016-05-11 ソニー株式会社 画像処理装置および方法、プログラム、並びに、記録媒体
CN113556558B (zh) * 2010-04-13 2024-08-30 Ge视频压缩有限责任公司 显著性图和变换系数块的编码
US9172968B2 (en) 2010-07-09 2015-10-27 Qualcomm Incorporated Video coding using directional transforms
US8483500B2 (en) 2010-09-02 2013-07-09 Sony Corporation Run length coding with context model for image compression using sparse dictionaries
WO2012048055A1 (en) 2010-10-05 2012-04-12 General Instrument Corporation Coding and decoding utilizing adaptive context model selection with zigzag scan
US8976861B2 (en) * 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
US9042440B2 (en) 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
JP5741076B2 (ja) 2010-12-09 2015-07-01 ソニー株式会社 画像処理装置及び画像処理方法
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US10992958B2 (en) 2010-12-29 2021-04-27 Qualcomm Incorporated Video coding using mapped transforms and scanning modes
US9490839B2 (en) 2011-01-03 2016-11-08 Qualcomm Incorporated Variable length coding of video block coefficients
CA2822925C (en) 2011-01-04 2017-09-19 Research In Motion Limited Coding of residual data in predictive compression
EP2661886B1 (en) * 2011-01-04 2020-11-18 BlackBerry Limited Coding of residual data in predictive compression
US8755620B2 (en) 2011-01-12 2014-06-17 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus for performing arithmetic coding and/or arithmetic decoding
FR2972588A1 (fr) * 2011-03-07 2012-09-14 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
US8861599B2 (en) 2011-03-08 2014-10-14 Sony Corporation Context reduction for last transform position coding
US10499059B2 (en) 2011-03-08 2019-12-03 Velos Media, Llc Coding of transform coefficients for video coding
US9106913B2 (en) 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US8938001B1 (en) 2011-04-05 2015-01-20 Google Inc. Apparatus and method for coding using combinations
US8780971B1 (en) 2011-04-07 2014-07-15 Google, Inc. System and method of encoding using selectable loop filters
US8781004B1 (en) 2011-04-07 2014-07-15 Google Inc. System and method for encoding video using variable loop filter
US9154799B2 (en) 2011-04-07 2015-10-06 Google Inc. Encoding and decoding motion via image segmentation
US8780996B2 (en) 2011-04-07 2014-07-15 Google, Inc. System and method for encoding and decoding video data
US8638854B1 (en) 2011-04-07 2014-01-28 Google Inc. Apparatus and method for creating an alternate reference frame for video compression using maximal differences
US8446301B2 (en) 2011-04-15 2013-05-21 Research In Motion Limited Methods and devices for coding and decoding the position of the last significant coefficient
WO2012139192A2 (en) * 2011-04-15 2012-10-18 Research In Motion Limited Methods and devices for coding and decoding the position of the last significant coefficient
FR2977111A1 (fr) 2011-06-24 2012-12-28 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
US9491469B2 (en) 2011-06-28 2016-11-08 Qualcomm Incorporated Coding of last significant transform coefficient
US20130083856A1 (en) * 2011-06-29 2013-04-04 Qualcomm Incorporated Contexts for coefficient level coding in video compression
US9516316B2 (en) 2011-06-29 2016-12-06 Qualcomm Incorporated VLC coefficient coding for large chroma block
US9338456B2 (en) 2011-07-11 2016-05-10 Qualcomm Incorporated Coding syntax elements using VLC codewords
EP3264765B1 (en) * 2011-07-12 2018-09-26 NEC Corporation Decoding method and decoder for quantization parameter decoding for video decoding
US8891616B1 (en) 2011-07-27 2014-11-18 Google Inc. Method and apparatus for entropy encoding based on encoding cost
US8885706B2 (en) 2011-09-16 2014-11-11 Google Inc. Apparatus and methodology for a video codec system with noise reduction capability
US20130083845A1 (en) 2011-09-30 2013-04-04 Research In Motion Limited Methods and devices for data compression using a non-uniform reconstruction space
US9025899B2 (en) * 2011-10-14 2015-05-05 Advanced Micro Devices, Inc. Region-based image compression
KR20130049526A (ko) * 2011-11-04 2013-05-14 오수미 복원 블록 생성 방법
EP3849199B1 (en) * 2011-11-07 2022-12-28 Tagivan Ii Llc Image decoding method and image decoding device
EP2595382B1 (en) 2011-11-21 2019-01-09 BlackBerry Limited Methods and devices for encoding and decoding transform domain filters
US9247257B1 (en) 2011-11-30 2016-01-26 Google Inc. Segmentation based entropy encoding and decoding
PL3139609T3 (pl) 2012-01-03 2021-09-20 Hfi Innovation Inc. Sposób i urządzenie do wyboru mapy istotności oraz znacznika istotności grupy na podstawie bloku
US9621894B2 (en) 2012-01-13 2017-04-11 Qualcomm Incorporated Determining contexts for coding transform coefficient data in video coding
US9262670B2 (en) 2012-02-10 2016-02-16 Google Inc. Adaptive region of interest
US9131073B1 (en) 2012-03-02 2015-09-08 Google Inc. Motion estimation aided noise reduction
US11039138B1 (en) 2012-03-08 2021-06-15 Google Llc Adaptive coding of prediction modes using probability distributions
US9426459B2 (en) 2012-04-23 2016-08-23 Google Inc. Managing multi-reference picture buffers and identifiers to facilitate video data coding
US9609341B1 (en) 2012-04-23 2017-03-28 Google Inc. Video data encoding and decoding using reference picture lists
US9014266B1 (en) 2012-06-05 2015-04-21 Google Inc. Decimated sliding windows for multi-reference prediction in video coding
MY169635A (en) 2012-06-08 2019-04-24 Sun Patent Trust Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
US8819525B1 (en) 2012-06-14 2014-08-26 Google Inc. Error concealment guided robustness
ES2834105T3 (es) 2012-06-27 2021-06-16 Sun Patent Trust Procedimiento de codificación de imágenes, procedimiento de descodificación de imágenes, dispositivo de codificación de imágenes, dispositivo de descodificación de imágenes y aparato de codificación y descodificación de imágenes
US9774856B1 (en) 2012-07-02 2017-09-26 Google Inc. Adaptive stochastic entropy coding
US9344729B1 (en) 2012-07-11 2016-05-17 Google Inc. Selective prediction signal filtering
CN104272735B (zh) * 2013-01-16 2018-04-13 黑莓有限公司 针对视频的上下文自适应二进制熵编码的变换系数编码
US10291912B2 (en) * 2013-01-16 2019-05-14 Blackberry Limited Context determination for entropy coding of run-length encoded transform coefficients
US9509998B1 (en) 2013-04-04 2016-11-29 Google Inc. Conditional predictive multi-symbol run-length coding
CN104104958B (zh) * 2013-04-08 2017-08-25 联发科技(新加坡)私人有限公司 图像解码方法及其图像解码装置
US9756331B1 (en) 2013-06-17 2017-09-05 Google Inc. Advance coded reference prediction
US9392288B2 (en) 2013-10-17 2016-07-12 Google Inc. Video coding using scatter-based scan tables
US9179151B2 (en) 2013-10-18 2015-11-03 Google Inc. Spatial proximity context entropy coding
US10313681B2 (en) * 2013-12-18 2019-06-04 Intel Corporation Techniques for rate-distortion optimization in video compression
CN106063264B (zh) 2014-01-03 2019-06-07 Ge视频压缩有限责任公司 基于楔形波的编码概念
US10102613B2 (en) 2014-09-25 2018-10-16 Google Llc Frequency-domain denoising
US10306229B2 (en) 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
US10171810B2 (en) 2015-06-22 2019-01-01 Cisco Technology, Inc. Transform coefficient coding using level-mode and run-mode
US10623774B2 (en) 2016-03-22 2020-04-14 Qualcomm Incorporated Constrained block-level optimization and signaling for video coding tools
US10440366B2 (en) 2016-07-01 2019-10-08 Intel Corporation Method and system of video coding using content based metadata
US10666946B2 (en) 2016-07-01 2020-05-26 Intel Corporation Method and system of video coding using display modification input
US9941900B1 (en) * 2017-10-03 2018-04-10 Dropbox, Inc. Techniques for general-purpose lossless data compression using a recurrent neural network
US10484695B2 (en) * 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
JP2019097030A (ja) * 2017-11-22 2019-06-20 キヤノン株式会社 画像符号化装置、撮像装置、画像符号化方法、及びプログラム。
WO2019140083A1 (en) 2018-01-12 2019-07-18 Futurewei Technologies, Inc. Adaptive multi-hypothesis context-adaptive binary arithmetic coding (mcabac)
CN110662050B (zh) * 2018-06-29 2022-06-14 北京字节跳动网络技术有限公司 处理视频数据的方法、装置及存储介质
DE102018122297A1 (de) * 2018-09-12 2020-03-12 Arnold & Richter Cine Technik Gmbh & Co. Betriebs Kg Verfahren zur Kompression und Dekompression von Bilddaten
US11323748B2 (en) 2018-12-19 2022-05-03 Qualcomm Incorporated Tree-based transform unit (TU) partition for video coding

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3016456B2 (ja) * 1992-06-15 2000-03-06 日本電信電話株式会社 適応的可変長符号化方法
GB2274224B (en) 1993-01-07 1997-02-26 Sony Broadcast & Communication Data compression
US5400075A (en) * 1993-01-13 1995-03-21 Thomson Consumer Electronics, Inc. Adaptive variable length encoder/decoder
CN1129089C (zh) * 1993-11-18 2003-11-26 Itt工业公司 具有电路板定位装置的ic卡
US6351563B1 (en) 1997-07-09 2002-02-26 Hyundai Electronics Ind. Co., Ltd. Apparatus and method for coding/decoding scalable shape binary image using mode of lower and current layers
KR100303085B1 (ko) * 1998-04-24 2001-09-24 전주범 이진형상신호부호화장치및방법
US6327392B1 (en) * 1999-01-28 2001-12-04 Sharp Laboratories Of America, Inc. Method of visual progressive coding
US6339658B1 (en) * 1999-03-09 2002-01-15 Rockwell Science Center, Llc Error resilient still image packetization method and packet structure
US6567081B1 (en) * 2000-01-21 2003-05-20 Microsoft Corporation Methods and arrangements for compressing image-based rendering (IBR) data using alignment and 3D wavelet transform techniques
AUPQ668500A0 (en) * 2000-04-04 2000-05-04 Canon Kabushiki Kaisha Accessing items of information
AUPQ982400A0 (en) * 2000-09-01 2000-09-28 Canon Kabushiki Kaisha Entropy encoding and decoding
DE10218541A1 (de) * 2001-09-14 2003-04-24 Siemens Ag Verfahren zur Videocodierung und Computerprogrammprodukt

Also Published As

Publication number Publication date
CN1327395C (zh) 2007-07-18
JP5230890B2 (ja) 2013-07-10
US6856701B2 (en) 2005-02-15
EP2007147A2 (en) 2008-12-24
US20030081850A1 (en) 2003-05-01
JP2012080551A (ja) 2012-04-19
AU2002334271B2 (en) 2008-08-07
WO2003027940A1 (en) 2003-04-03
AU2002334271B9 (en) 2008-09-04
EP1435063A1 (en) 2004-07-07
EP1435063A4 (en) 2007-05-23
EP2007147B1 (en) 2018-04-11
JP2005504471A (ja) 2005-02-10
JP5635479B2 (ja) 2014-12-03
JP2014209807A (ja) 2014-11-06
EP1435063B1 (en) 2013-11-20
EP2007147A3 (en) 2012-04-04
CN1585958A (zh) 2005-02-23

Similar Documents

Publication Publication Date Title
ES2442851T3 (es) Método y sistema para codificación aritmética binaria adaptativa basada en contexto
ES2328916T3 (es) Coeficientes de transformacion de codificacion en codificadores y/o descodificadores de imagenes/video.
ES2529344T3 (es) Codificación de coeficientes de transformación en codificadores y/o decodificadores de imagen/vídeo
EP1391121B1 (en) Variable length coding
KR100969645B1 (ko) 적응 가변장 부호화
AU2002334271A1 (en) Method and system for context-based adaptive binary arithmetic coding
KR102120571B1 (ko) 넌-4:4:4 크로마 서브-샘플링의 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
KR20190029796A (ko) 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
KR20170028905A (ko) 팔레트 모드 코딩을 위한 방법
CN1874509B (zh) 基于上下文的自适应二进制算术编码的方法和系统
EP1933568A2 (en) Method and system for context-based adaptive binary arithmetic coding
AU2014202978B2 (en) Method and system for context-based adaptive binary arithmetic coding
AU2008202981B2 (en) Method and system for context-based adaptive binary arithmetic
HK1126606A (en) Method and system for context-based adaptive binary arithmetic coding
JP2022548685A (ja) 画像データの符号化及び復号化