ES2310372T3 - Procedimiento de codificacion de entropia mejorada. - Google Patents

Procedimiento de codificacion de entropia mejorada. Download PDF

Info

Publication number
ES2310372T3
ES2310372T3 ES05821490T ES05821490T ES2310372T3 ES 2310372 T3 ES2310372 T3 ES 2310372T3 ES 05821490 T ES05821490 T ES 05821490T ES 05821490 T ES05821490 T ES 05821490T ES 2310372 T3 ES2310372 T3 ES 2310372T3
Authority
ES
Spain
Prior art keywords
coefficient
last
coefficients
module
vlc
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
ES05821490T
Other languages
English (en)
Inventor
Gisle Bjontegaard
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.)
Tandberg Telecom AS
Original Assignee
Tandberg Telecom AS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tandberg Telecom AS filed Critical Tandberg Telecom AS
Application granted granted Critical
Publication of ES2310372T3 publication Critical patent/ES2310372T3/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform 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)
  • Meat, Egg Or Seafood Products (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Farming Of Fish And Shellfish (AREA)
  • Excavating Of Shafts Or Tunnels (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)

Abstract

Procedimiento para proporcionar un proceso de codificación de entropía simplificado en una codificación de video de coeficientes de transformada cuantificados que representan un bloque de valores de píxeles residuales en un macrobloque, en el cual los coeficientes son asignados a unas posiciones en el interior del bloque de orden creciente, caracterizado por el hecho de que el procedimiento comprende las etapas de: I. especificar una primera posición de un último coeficiente diferente de cero en el interior del bloque combinado con una indicación de si el módulo de dicho último coeficiente diferente de cero es mayor que 1 como un acontecimiento entre un cierto número de acontecimientos posibles en un primer código de longitud variable (o VLC, siglas de Variable Length Code), II. si el módulo de dicho último coeficiente diferente de cero es igual a 1, definir dicho último coeficiente diferente de cero como un último coeficiente diferente de cero actualmente, y a. especificar el número de posiciones con coeficientes nulos entre dicho último coeficiente diferente de cero actualmente y un próximo coeficiente diferente de cero en el interior del bloque, orientado en un orden de posición decreciente, combinado con una indicación de si el módulo de dicho próximo coeficiente diferente de cero es mayor que 1 como un acontecimiento entre un cierto número de acontecimientos posibles en un segundo VLC, y definir dicho próximo coeficiente diferente de cero como dicho último coeficiente diferente de cero actualmente, b. repetir la etapa a. si el módulo de dicho último coeficiente diferente de cero actualmente es igual a 1, III. si el módulo de dicho último o último coeficiente diferente de cero actualmente es mayor que 1, a. especificar el módulo de cada coeficiente no especificado en la etapa I-II y las correspondientes posiciones según uno o más VLCs.

Description

Procedimiento de codificación de entropía mejorada.
Sector de la invención
La invención se refiere a la codificación/descodificación de entropía de datos de coeficientes de transformada para sistemas de compresión de video.
Antecedentes la invención
La transmisión de imágenes dinámicas en tiempo real se emplea en muchas aplicaciones tales como por ejemplo las videoconferencias, las reuniones en red, la difusión de televisión y la telefonía video.
Sin embargo, representar imágenes dinámicas requiere mucha información ya que el video digital se representa típicamente mediante cada píxel de una imagen con 8 bits (1 Byte). Estos datos de video no comprimidos resultan en grandes volúmenes de bits, que no pueden ser transmitidos en tiempo real en redes de comunicación convencionales y en líneas de transmisión debido a la limitación del ancho de banda.
Por lo tanto, permitir la transmisión de video en tiempo real requiere una gran compresión de los datos. Sin embargo, la compresión de los datos compromete la calidad de la imagen. Por lo tanto, se han hecho grandes esfuerzos para desarrollar técnicas de compresión que permitan la transmisión en tiempo real de video de alta calidad con conexiones de datos de ancho de banda limitado.
En los sistemas de compresión de video, el objetivo principal es representar la información de video con la mínima capacidad posible. La capacidad se define con bits, ya sea como un valor constante o como una unidad de bits/tiempo. En ambos casos, el objetivo principal es reducir el número de bits.
El procedimiento de codificación de video más común se describe en las normas MPEG* y H.26*. Los datos de video son sometidos a cuatro procesos principales antes de la transmisión, a saber predicción, transformación, cuantificación y codificación de entropía.
El proceso de predicción reduce significativamente la cantidad de bits requeridos para cada imagen de una secuencia de video a transmitir. Saca provecho de la similitud entre partes de la secuencia y otras partes de la secuencia. Puesto que la parte de predicción es conocida tanto para la codificación y la descodificación, solo se debe transmitir la diferencia. Esta diferencia suele necesitar mucha menos capacidad para su representación. La predicción se basa principalmente en vectores que representan movimientos. El proceso de predicción se suele realizar en tamaños de bloques cuadrados (por ejemplo de 16x16 píxeles). Hay que notar que en algunos casos, se emplean las predicciones de píxeles basadas en los píxeles adyacentes de la misma imagen antes que las basadas en píxeles de imágenes anteriores. A esto se le llama intra predicción, opuesta a la Inter.-predicción.
Los residuos representados como un bloque de datos (por ejemplo de 4x4 píxeles) sigue conteniendo una correlación interna. Un procedimiento bien conocido que aprovecha esto es la realización de una transformada de bloque en dos dimensiones. En H.263 se emplea una transformación directa de coseno 8x8 (DCT, siglas de "Discrete Cosine Transform"), mientras que en H.264 se utiliza una transformada de tipo entero 4x4. Esta transforma píxeles 4x4 en coeficientes de transformada 4x4 y suelen poder ser representados con menos bits que en la representación con píxeles. Transformar una matriz de píxeles 4x4 con correlación interna resultará probablemente en un bloque 4x4 de coeficientes de transformada con muchos menos valores no nulos que en el bloque de píxeles 4x4 original.
La representación directa de los coeficientes de transformada sigue siendo demasiado costosos para varias aplicaciones. Se lleva a cabo un proceso de cuantificación para una reducción adicional de la representación de los datos. Luego los coeficientes de transformada son sometidos a una cuantificación. Una versión simple de la cuantificación es dividir los valores de los parámetros por un número - que da como resultado un número menor que se puede representar con menos bits. Hay que mencionar que este proceso de cuantificación tiene como resultado que la secuencia de video reconstruida es algo diferente de la secuencia no comprimida. Este fenómeno es conocido como "codificación perdida" ("lossy coding"). El resultado de la parte de cuantificación se conoce como coeficientes de transformada cuantificados.
La codificación de entropía implica una representación sin pérdidas de diferentes tipos de parámetros tales como los datos de encabezamiento o de descripción de sistema, datos de predicción (típicamente vectores de movimiento), y coeficientes de transformada cuantificados a partir del proceso de cuantificación. Este último suele representar el mayor consumo de bits.
La condición se realiza por bloques de la imagen de video. Un macro bloque consiste en varios sub-bloques para la luminosidad (luma) y para la cromaticidad (chroma). Hay típicamente dos componentes cromáticos (Cr, Cb) con al mitad de resolución tanto en horizontal como en vertical comparada con la luminosidad. En la figura 1, el macro bloque consiste en 16x16 píxeles de luminosidad y dos componentes cromáticos con 8x8 píxeles cada uno. Cada uno de los componentes es dividido en bloques 4x4, representados por cuadrados pequeños. Para fines de codificación, los bloques 4x4 luminosos y cromáticos son agrupados conjuntamente en sub-bloques 8x8 y designados por Y0-Y3 y Cr, Cb.
En H.263 y H.264 se describe el estado de la técnica referente a la codificación de entropía de coeficientes de transformada cuantificados para compresión video.
H.263 se basa en la codificación de longitud variable (VLC). Se define un conjunto de acontecimientos. Un acontecimiento representa la fijación de valores para uno o más parámetros. Un acontecimiento se asigna a un único código de bit. La tabla de códigos se diseña de manera que la longitud de los códigos se corresponde con la probabilidad estadística de cada acontecimiento. La eficiencia optima se consigue si el número de Bits = -log2(p), donde p es la probabilidad estadística del acontecimiento (p está en el rango 0-1). Un ejemplo de un Código VLC se muestra en la tabla 1.
En H.264, se introducen procedimientos mejorados, en especial el concepto de "Adaptación al Contexto" (CA, siglas de "Context Adaptivity"). El concepto se aplica a un modelo que cambia dinámicamente según la codificación previa. Como ejemplo, se puede escoger una tabla VLC más adecuada según los acontecimientos previos, lo cual hace la codificación más eficaz. En H.264 se describen dos de estos procedimientos basados en la CA:
1
CAVLC con Adaptación a Contexto moderada que emplea tablas VLC para codificar.
2
CABAC ("Binary Arithmetic Coding") con Adaptación a Contexto más compleja y que emplea una codificación aritmética al final. De esta resulta una mayor ganancia de compresión, pero con el coste de una mayor complejidad.
Se considera que CAVLC tiene una adaptatividad y una complejidad moderadas. CABAC emplea una adaptatividad más elaborada pero se considera como demasiado complejo para ciertas aplicaciones, en especial para aplicaciones en tiempo real.
US 2004/0228540 describe procedimientos de codificación y descodificación de entropía.
Resumen de la invención
Es un objeto de la presente invención proporcionar un procedimiento de codificación de entropía mejorado comparado con el estado de la técnica que combina una baja complejidad con altas prestaciones. Las características definidas en la reivindicación 1 independiente adjunta caracterizan a este procedimiento.
Otro objeto de la presente invención es el de proporcionar un procedimiento de descodificación de entropía mejorado comparado con el estado de la técnica que combina una baja complejidad con altas prestaciones. Las características definidas en la reivindicación 5 independiente adjunta caracterizan a este procedimiento.
Breve descripción de los dibujos
Con la finalidad de que la invención sea más comprensible; la siguiente discusión hará referencia a los dibujos y tablas adjuntos, en los cuales.
La figura 1 muestra un macro bloque de 16x16 píxeles luminosos y dos componentes cromáticos de 8x8 píxeles,
La figura 2 ilustra ejemplos de Patrones de bloques modificados diferentes,
La figura 3 muestra un bloque y sus vecinos en el interior de un macrobloque a codificar,
La figura 4 es un diagrama de flujo que ilustra esquemáticamente una primera realización de un procedimiento según la invención,
La figura 5 es un diagrama de flujo que ilustra esquemáticamente una segunda realización de un procedimiento según la invención,
Tabla 1 muestra un ejemplo de Código VLC,
Tabla 2 muestra un ejemplo de un Modo LEVEL,
Tabla 3 muestra un ejemplo de un Modo RUN.
Descripción detallada de la presente invención
La presente invención proporciona un procedimiento de codificación/descodificación de coeficientes de transformada cuantificados en bloques de los cuales se sabe que tienen coeficientes de transformada no nulos. Sin embargo, para una mejor comprensión de la invención, la codificación de información referente a bloques que tienen o no coeficientes, llamada a menudo Patrón de bloque codificado (CBP, siglas de "Coded block Pattern"), se describirá a continuación a modo de ejemplo.
En la figura 2 se muestran diferentes tipos de bloques típicamente usados en CBP. El bloque A es 16x16 un bloque luminoso dividido en 16 bloques de 4x4 que son sometidos a una transformada de 2 dimensiones. Las líneas gruesas en A indican que también hay una partición del bloque 16x16 en cuatro bloques 8x8. Cada bloque 4x4 tendrá 16 coeficientes de transformada. Los no nulos se codifican de la manera siguiente:
un bit indica si hay o no coeficientes no nulos en todo el bloque 16x16. En el caso de que haya coeficientes, hay un bit adicional por bloque 8x8 que indica si hay o no coeficientes no nulos. En el caso de que haya coeficientes, hay un bit adicional por bloque 4x4 para indicar si hay o no coeficientes no nulos.
El bloque B tiene la misma partición que A. Los cuadrados negros indican Coeficientes DC en un bloque 4x4. Son sometidos a una segunda transformada 4x4 para formar un bloque 4x4 separado. Este bloque tiene 16 coeficientes de transformada, mientras que los otros bloques tendrán 15 coeficientes puesto que los coeficientes DC están desplazados hacia el bloque DC. El bloque B es un tipo especial de intra bloque. Un bit indica si hay coeficientes no nulos en la transformada DC 4x4. Otro bit indica si hay o no coeficientes AC no nulos en todo el bloque 16x16. En el caso de que haya coeficientes, un bit adicional por bloque 4x4 indica si hay o no coeficientes AC no nulos.
El bloque C es un bloque luminoso 8x8 dividido en cuatro bloques 4x4 que son sometidos a una transformada de 2 dimensiones. Los cuadrados negros indican Coeficientes DC en un bloque 4x4. Son sometidos a una segunda transformada 2x2 para formar un bloque 2x2 separado. Este bloque tiene cuatro coeficientes, mientras que los otros bloques tendrán 15 coeficientes puesto que los coeficientes DC están desplazados hacia el bloque DC. Este es uno de los 2 coeficientes cromáticos. Se puede utilizar una estructura similar al primero para el bloque b teniendo en cuenta que hay 2 componentes cromáticos y que es deseable tener una indicación de 1 bit si hay coeficientes cromáticos no nulos en todos los bloques.
La presente invención tiene ciertas similitudes con la mencionada codificación de longitud variable adaptable al contexto (CAVLC siglas de "Context Adaptive Variable Length Coding") de la técnica anterior, tal como se ha mencionado en la sección de antecedentes. En lo que sigue, se describirán las bases de la Codificación CAVLC según H.264.
Durante la codificación hay un proceso de predicción para predecir los valores de los píxeles en cada uno de los bloques. Este es sustraído a lo largo de los datos de los píxeles para codificarlos y el resultado es la llamada señal residual.
Para lograr una mayor compresión, la señal residual es sometida a una transformación 4x4 de la que resultan 4x4 = 16 coeficientes de transformada. Están organizados como una cadena de 16 números de manera que, estadísticamente, el tamaño de los coeficientes decrece a medida que aumenta la posición en la cadena. Para obtener la compresión necesaria, los coeficientes de transformada también son sometidos a un proceso de cuantificación antes de la codificación de entropía. A resultas de ello, la mayoría de los coeficientes son 0. Una típica cadena de coeficientes de transformada cuantificados tendrá el siguiente aspecto:
(1)6 -4 0 2 0 0 -1 0 0 1 0 0 0 0 0 0
Antes de la Codificación CAVLC actual se lleva a cabo una Codificación CBP8 para especificar cuál de los bloques 8x8 (en la figura 3 marcados con línea gruesa) tienen coeficientes de transformada y cuales no.
En la descripción de la Codificación CAVLC, los coeficientes de transformada cuantificados del bloque c en la figura 3 que incluyen los coeficientes (1) se utilizan como ejemplo.
La primera etapa es codificar un parámetro combinado que representa la combinación del número de coeficientes no nulos (N) y el número de coeficientes hacía el final que tienen valores absolutos iguales a 1. En el ejemplo de arriba, este parámetro es (5,2). Si todos los coeficientes fuesen 0, la combinación sería (0,0). Este parámetro se codifica con una tabla de Códigos de longitud variable (VLC). Para aumentar la compresión se pueden escoger diferentes Tablas VLC según el valor de N de los bloques 4x4 a y b de arriba y de la izquierda.
En este punto, ya se ha especificado que los dos últimos coeficientes tienen valores absolutos iguales a 1. Por lo tanto, la próxima etapa es especificar los restantes: 6, -4, 2. En este proceso se emplea una "exploración en orden inverso". Eso significa que los coeficientes se codifican en el orden: 2 -4 6. Esto se hace así porqué las tablas VLC se pueden cambiar según el tamaño del coeficiente codificado previamente. En el ejemplo se utiliza un VLC "de inicio" para codificar 2 y 4. Puesto que 4 está por encima de un umbral determinado, se utiliza un VLC diferente para codificar 6.
Para cada coeficiente no nulo un bit adicional indica si el coeficiente es positivo o negativo.
\newpage
A continuación, se codifica el número de coeficientes nulos (TZ) antes del último coeficiente no nulo. En el ejemplo de arriba TZ = 5. N estable ce un límite superior de TZ. A partir de ahí, se escoge una tabla VLC adecuada dependiendo de N.
Finalmente, se codifica la actual distribución de coeficientes nulos, que también se hace mediante exploración en orden inverso. Por lo tanto, se especifica que hay dos Coeficientes nulos antes del último 1. Ya es conocido que hay en total cinco coeficientes nulos, y se emplea una Tabla VLC adecuada. Luego se codifican los dos coeficientes nulos antes de -1 y los coeficientes nulos antes de 2. Luego quedan completamente especificadas las posiciones de todos los coeficientes nulos y no nulos.
Así como el CAVLC del estado de la técnica especifica el número de coeficientes no nulos combinado con el número de 1's en un bloque 4x4, la presente invención introduce acontecimientos que combinan la posición del último coeficiente diferente de cero con la condición de si el valor absoluto es mayor que 1. Además, no se utiliza información del exterior del macrobloque para decidir que VLC utilizar. Los coeficientes se suelen codificar empezando con un Modo Run y siguiendo con modo Level cuando se encuentra el primer coeficiente con valor absoluto > 1. Un ejemplo de RUN y LEVEL se muestra en las tablas 2 y 3, respectivamente.
A continuación, se describirá una realización de la presente invención con referencia a la figura 3 y los coeficientes de (1). Hay que notar que si aquí se describe únicamente la codificación, la presente invención también se aplica para la descodificación, aunque aplicado inversamente.
Después de cuantificar los coeficientes de la transformada en un bloque, los coeficientes son representados mediante los así llamados valores LEVEL que pueden ser 0, 1, 2 etc. El valor absoluto de LEVEL se llama ALEVEL, y el signo de LEVEL (+ o -) se llama SIGNLEVEL.
Como ya se ha indicado, la presente invención empieza de forma más directa que en la CAVLC del estado de la técnica para definir la posición (P) del último coeficiente numerado 0-3, 0-14 o 0-15 dependiendo del número de coeficientes en el bloque, es decir dependiendo de cual de los CBP mostrados en la figura 2 se está usando. Un acontecimiento combinado se codifica indicando P y si ALEVEL del último coeficiente es = 1 ó > 1. En el caso de (1), el acontecimiento es (9, = 1).
Para una mayor compresión, se escoge una Tabla VLC dependiendo del P de los bloques a y b pero solamente si están en el interior del macrobloque. Esto representa una simplificación puesto que la codificación/descodificación puede basarse en el macrobloque, lo cual hace innecesario que la lectura de datos esté conectada con otros macrobloques.
Además, según la realización de la presente invención, cuyo VLC a usar depende del tamaño del bloque para evitar la reserva de códigos para valores de P o ALEVEL que no se pueden dar, y el valor de P en los bloques a y b. Sin embargo, la dependencia de a y b solamente ocurre si están en el interior del mismo macrobloque que el bloque 4x4 que hay que codificar.
Igual que en la CAVLC del estado de la técnica, se utiliza una exploración en orden inverso. Si el ALEVEL del último coeficiente es 1, la codificación sigue en modo Run.
Con referencia ahora al ejemplo, se codifica el número de coeficientes nulos (R) antes del último 1 (R = 2). Se codifica en combinación con una indicación de si el valor absoluto del próximo coeficiente (Next) es 1 ó > 1. En este caso, el próximo coeficiente es 1.
Dependiendo de la posición del ultimo coeficiente codificado, se limitan los posibles valores del siguiente RUN. Como ejemplo: Si el último coeficiente codificado estaba en la posición 4, los valores de RUN pueden estar en el rango 0-4. A partir de aquí, se necesita una Tabla VLC que permita únicamente cinco valores RUN a codificar, ya que el valor 1 queda excluido. Esto se utiliza en el diseño.
Según la realización de la invención, ALEVEL se codifica directamente(incluido el valor 0). En el ejemplo de arriba los códigos son:
ALEVEL = 2 (sabiendo que es > 1)
ALEVEL = 0
ALEVEL = 4
ALEVEL = 6
Hay que destacar que en el CAVLC del estado de la técnica, se pueden cambiar las Tablas VLC dependiendo del tamaño del coeficiente codificado previamente. Como ejemplo, en el proceso de adaptación utilizado en la codificación de nivel H.264, hay 6 Tablas VLC diferentes disponibles llamadas VLCn donde n=0,1,2,3,4,5. Al principio de un bloque n se pone a 0. Para cada coeficiente codificado, se puede cambiar el n a usar para codificar el próximo coeficiente de la manera siguiente:
si ALEVEL > 3*2^{n}, n es aumentado en 1, pero no puede sobrepasar 5.
Finalmente, para cada coeficiente no nulo un bit indica si el coeficiente es positivo o negativo.
La figura 4 es un diagrama de flujo que ilustra esquemáticamente una realización de un procedimiento según la invención.
El diagrama de flujo de la figura 4 ilustra esquemáticamente un procedimiento para proporcionar un proceso de codificación de entropía simplificado en una codificación de video de coeficientes de transformada cuantificados que representan un bloque de valores de píxeles residuales en un macrobloque. En el procedimiento, los coeficientes de transformada cuantificados son asignados a unas posiciones en el interior del bloque de orden creciente.
El procedimiento empieza en la etapa inicial 41.
A continuación, se realiza la etapa 42 de especificación de la primera posición. En esta etapa 42 se determina si el módulo del último coeficiente diferente de cero está entre [1,n], o una indicación de >n si el módulo de dicho último coeficiente diferente de cero es mayor que n.
Además, en la etapa 42, si se cumple la condición anterior, se especifican una primera posición de un último coeficiente diferente de cero en el interior del macrobloque junto con el módulo de dicho último coeficiente diferente de cero, como un acontecimiento entre un cierto número de acontecimientos posibles en un primer código de longitud variable (VLC).
A continuación, en la etapa de determinación 43, se determina si el módulo de dicho último coeficiente diferente de cero está entre [1,n].
Si el resultado de esta etapa de determinación 43 es verdadero, el último coeficiente diferente de cero se define en la etapa de definición 44 como un último coeficiente diferente de cero actualmente.
A continuación, se realiza la etapa 45 de especificación del número de posiciones. En esta etapa, se especifican el número de posiciones con coeficientes nulos entre dicho último coeficiente diferente de cero actualmente y un próximo coeficiente diferente de cero en el interior del bloque, orientado en orden de posición decreciente, junto con el módulo de dicho próximo coeficiente diferente de cero, si el módulo de dicho próximo coeficiente diferente de cero está entre [1,n] o una indicación de >n si el módulo de dicho próximo coeficiente diferente de cero es mayor que n como un acontecimiento entre un cierto número de acontecimientos posibles en un segundo VLC. La etapa 45 también comprende la definición de dicho próximo coeficiente diferente de cero para ser dicho último coeficiente diferente de cero actualmente.
Si, por otro lado, el resultado de la etapa de determinación 43 fuese falso, es decir si el módulo del último coeficiente no nulo actualmente es mayor que n, se realiza la etapa 47 (más abajo) de especificación de los módulos de los coeficientes.
Posteriormente a la etapa 45 de especificación del número de posiciones, se realiza la etapa de determinación 46. En la etapa de determinación 46, se determina si el módulo de dicho último coeficiente diferente de cero actualmente está entre [1,n].
Si el resultado de la etapa de determinación 46 es verdadero, se repite la etapa 45 de especificación del número de posiciones.
También, si el resultado de la etapa de determinación 46 es falso, es decir si el módulo del último coeficiente diferente de cero actualmente es mayor que n, se realiza la etapa 47 de especificación del módulo de los coeficientes.
También se realiza la etapa 47 de especificación del módulo de los coeficientes si el resultado de la etapa de determinación 43 es falso, es decir si el módulo del último coeficiente diferente de cero es mayor que n.
En la etapa 47 de especificación del módulo de los coeficientes, se especifican el módulo de cada coeficiente no especificado en las etapas anteriores y las correspondientes posiciones según uno o más VLCs.
Ventajosamente, la etapa 47 de especificación del módulo de los coeficientes también incluye el hecho de que un primer o último coeficiente ordenado de dichos coeficientes no especificados en las anteriores etapas 41-46 se especifica según un tercer VLC que tiene valores de módulo posibles de [n+1,\rightarrow], mientras que los restantes dichos coeficientes no especificados en la etapa I-III son especificados según un cuarto VLC que tiene valores de módulo posibles de [0,\rightarrow].
Ventajosamente, la constante n vale 1.
Ventajosamente, el primer VLR depende de uno o más bloques vecinos con una posición fijada con respecto a dicho bloque si dicho o dichos uno o más bloques vecinos están en el interior del macrobloque.
El proceso finaliza en la etapa final 48.
La figura 5 es un diagrama de flujo que ilustra esquemáticamente una segunda realización de un procedimiento según la invención.
El diagrama de flujo de la figura 5 ilustra esquemáticamente un procedimiento para proporcionar un proceso de decodificación de entropía simplificado en una decodificación de video de coeficientes de transformada cuantificados que representan un bloque de valores de píxeles residuales en un macrobloque, en el cual los coeficientes son asignados a unas posiciones en el interior del bloque de orden creciente.
El procedimiento empieza en la etapa inicial 51.
A continuación, se realiza la etapa 52 de interpretación de la primera posición. En esta etapa 52 se determina si el módulo del último coeficiente diferente de cero está entre [1,n], o una indicación de >n si el módulo de dicho último coeficiente diferente de cero es mayor que n.
Si eso es cierto, una primera posición de un último coeficiente diferente de cero en el interior del macrobloque junto con un módulo de dicho último coeficiente diferente de cero es interpretado como un acontecimiento entre un cierto número de acontecimientos posibles en un primer código de longitud variable (VLC).
A continuación, en la etapa de determinación 53, se determina si el módulo de dicho último coeficiente diferente de cero está entre [1,n].
Si el resultado de esta etapa de determinación 53 es verdadera, se define el último coeficiente diferente de cero en la etapa de definición 54 como un último coeficiente diferente de cero actualmente.
A continuación, se realiza la etapa 45 de interpretación del número de posiciones. En esta etapa, el número de posiciones con coeficientes nulos entre dicho último coeficiente diferente de cero actualmente y un próximo coeficiente diferente de cero en el interior del bloque, orientado hacia un orden de posición decreciente, se interpreta junto con un módulo de dicho próximo coeficiente diferente de cero, si el módulo de dicho próximo coeficiente diferente de cero está entre [1,n] o una indicación de >n si el módulo de dicho próximo coeficiente diferente de cero es mayor que n, como un acontecimiento entre un cierto número de acontecimientos posibles en un segundo VLC. La etapa 55 también comprende la definición de dicho próximo coeficiente diferente de cero para ser dicho último coeficiente diferente de cero actualmente.
Si, por otro lado, el resultado de la etapa de determinación 53 fuese falso, es decir si el módulo del último coeficiente no nulo actualmente fuese mayor que n, se realiza la etapa 57 (más abajo) de interpretación de los módulos de los coeficientes.
Posteriormente a la etapa 55 de interpretación del número de posiciones, se realiza la etapa de determinación 56. En la etapa de determinación 56, se determina si el módulo de dicho último coeficiente diferente de cero actualmente está entre [l,n].
Si el resultado de la etapa de determinación 56 es verdadero, se repite la etapa 55 de interpretación del número de posiciones.
Además, si el resultado de la etapa de determinación 56 es falsa, es decir, si el módulo del último coeficiente diferente de cero actualmente es mayor que n, se realiza la etapa 57 de interpretación de los módulo de los coeficientes.
También se realiza la etapa 57 de interpretación del módulo de los coeficientes si el resultado de la etapa de determinación 53 es falso, es decir si el módulo del último coeficiente diferente de cero es mayor que n.
En la etapa 57 de interpretación de los módulos de los coeficientes, se interpretan los módulos de cada coeficiente no especificado las etapas anteriores y las correspondientes posiciones según uno o más VLCs.
Ventajosamente, la etapa 57 de interpretación de los módulos de los coeficientes también incluye el hecho de que un primer o último coeficiente ordenado de dichos coeficientes no interpretados en las anteriores etapas 51-56 se interpreta según un tercer VLC que tiene valores de módulo posibles de [n+1,\rightarrow], mientras que restantes de dichos coeficientes no interpretados en la etapa I-III son interpretados según un cuarto VLC que tiene valores de módulo posibles de [0, \rightarrow].
Ventajosamente, la constante n vale 1.
Ventajosamente, el primer VLR depende de uno o más bloques vecinos con una posición fijada con respecto a dicho bloque si dicho o dichos uno o más bloques vecinos están en el interior del macrobloque.
El proceso finaliza en la etapa final 58.
TABLA 1
1
\vskip1.000000\baselineskip
TABLA 2
2
\vskip1.000000\baselineskip
TABLA 3
3
\vskip1.000000\baselineskip
Referencias citadas en la descripción
Esta lista de referencias citadas por el solicitante está prevista únicamente para ayudar al lector y no forma parte del documento de patente europea. Aunque se ha puesto el máximo cuidado en su realización, no se pueden excluir errores u omisiones y la OEP declina cualquier responsabilidad en este respecto.
Documentos de patente citados en la descripción
\bullet US 20040228540 A [0016].

Claims (8)

1. Procedimiento para proporcionar un proceso de codificación de entropía simplificado en una codificación de video de coeficientes de transformada cuantificados que representan un bloque de valores de píxeles residuales en un macrobloque, en el cual los coeficientes son asignados a unas posiciones en el interior del bloque de orden creciente,
caracterizado por el hecho de que el procedimiento comprende las etapas de:
I. especificar una primera posición de un último coeficiente diferente de cero en el interior del bloque combinado con una indicación de si el módulo de dicho último coeficiente diferente de cero es mayor que 1 como un acontecimiento entre un cierto número de acontecimientos posibles en un primer código de longitud variable (o VLC, siglas de Variable Length Code),
II. si el módulo de dicho último coeficiente diferente de cero es igual a 1, definir dicho último coeficiente diferente de cero como un último coeficiente diferente de cero actualmente, y
a.
especificar el número de posiciones con coeficientes nulos entre dicho último coeficiente diferente de cero actualmente y un próximo coeficiente diferente de cero en el interior del bloque, orientado en un orden de posición decreciente, combinado con una indicación de si el módulo de dicho próximo coeficiente diferente de cero es mayor que 1 como un acontecimiento entre un cierto número de acontecimientos posibles en un segundo VLC, y definir dicho próximo coeficiente diferente de cero como dicho último coeficiente diferente de cero actualmente,
b.
repetir la etapa a. si el módulo de dicho último coeficiente diferente de cero actualmente es igual a 1,
III. si el módulo de dicho último o último coeficiente diferente de cero actualmente es mayor que 1,
a.
especificar el módulo de cada coeficiente no especificado en la etapa I-II y las correspondientes posiciones según uno o más VLCs.
2. Procedimiento según la reivindicación 1,
en el cual la etapa III.a. también incluye el hecho de que un primer o último coeficiente ordenado de dichos coeficientes no especificados en la etapa I-III se especifica según un tercer VLC que tiene valores de módulo posibles de [2,\rightarrow], mientras que los demás de dichos coeficientes no especificados en la etapa I-III son especificados según un cuarto VLC que tiene valores de módulo posibles de [0,\rightarrow].
3. Procedimiento según la reivindicación 1 o la 2,
en el cual dicho primer VLC depende de uno o más bloques vecinos con una posición fijada con respecto a dicho bloque si dicho o dichos uno o más bloques vecinos están en el interior del macrobloque.
4. Procedimiento según las reivindicaciones 1, 2 ó 3,
en el cual dicho segundo VLC es un código RUN.
5. Procedimiento para proporcionar un proceso de decodificación de entropía simplificado en una decodificación de video de coeficientes de transformada cuantificados que representan un bloque de valores de píxeles residuales en un macrobloque, en el cual los coeficientes son asignados a unas posiciones en el interior del bloque de orden creciente,
caracterizado por el hecho de que el procedimiento comprende las etapas de:
IV. interpretar una primera posición de un último coeficiente diferente de cero en el interior del bloque combinado con una indicación de si el módulo de dicho último coeficiente diferente de cero es mayor que 1 como un acontecimiento específico entre un cierto número de acontecimientos posibles en un primer código de longitud variable (VLC),
V. si el módulo de dicho último coeficiente diferente de cero es igual a 1, definir dicho último coeficiente diferente de cero como un último coeficiente diferente de cero actualmente, y
a.
interpretar el número de posiciones con coeficientes nulos entre dicho último coeficiente diferente de cero actualmente y un próximo coeficiente diferente de cero en el interior del bloque, orientado en un orden de posición decreciente, combinado con una indicación de si el módulo de dicho próximo coeficiente diferente de cero es mayor que 1 como un acontecimiento específico entre un cierto número de acontecimientos posibles en un segundo VLC, y definir dicho próximo coeficiente diferente de cero para ser dicho último coeficiente diferente de cero actualmente,
b.
repetir la etapa a. si el módulo de dicho último coeficiente diferente de cero actualmente es igual a 1,
VI. si el módulo de dicho último o último coeficiente diferente de cero actualmente es mayor que 1,
a.
interpretar el módulo de cada coeficiente no especificado en la etapa I-II y las correspondientes posiciones según uno o más VLCs.
6. Procedimiento según la reivindicación 5,
en el cual la etapa III.a. también incluye el hecho de que un primer o último coeficiente ordenado de dichos coeficientes no interpretados en la etapa IIII se interpreta según un tercer VLC que tiene valores de módulo posibles de [2,\rightarrow], mientras que los demás de dichos coeficientes no interpretados en la etapa I-III son interpretados según un cuarto VLC que tiene valores de módulo posibles de [0,\rightarrow].
7. Procedimiento según la reivindicación 5 o la 6,
en el cual dicho primer VLC depende de uno o más bloques vecinos con una posición fijada con respecto a dicho bloque si dicho o dichos uno o más bloques vecinos están en el interior del macrobloque.
8. Procedimiento según las reivindicaciones 5, 6 ó 7,
en el cual dicho segundo VLC es un código RUN.
ES05821490T 2004-12-30 2005-12-27 Procedimiento de codificacion de entropia mejorada. Expired - Lifetime ES2310372T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NO20045714A NO322043B1 (no) 2004-12-30 2004-12-30 Fremgangsmate for forenklet entropikoding
NO20045714 2004-12-30

Publications (1)

Publication Number Publication Date
ES2310372T3 true ES2310372T3 (es) 2009-01-01

Family

ID=35209728

Family Applications (1)

Application Number Title Priority Date Filing Date
ES05821490T Expired - Lifetime ES2310372T3 (es) 2004-12-30 2005-12-27 Procedimiento de codificacion de entropia mejorada.

Country Status (9)

Country Link
US (1) US7843998B2 (es)
EP (1) EP1834487B1 (es)
JP (1) JP2008527789A (es)
CN (1) CN100581252C (es)
AT (1) ATE400969T1 (es)
DE (1) DE602005008111D1 (es)
ES (1) ES2310372T3 (es)
NO (1) NO322043B1 (es)
WO (1) WO2006071125A1 (es)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8369411B2 (en) * 2007-03-29 2013-02-05 James Au Intra-macroblock video processing
US8416857B2 (en) * 2007-03-29 2013-04-09 James Au Parallel or pipelined macroblock processing
US8837575B2 (en) * 2007-03-29 2014-09-16 Cisco Technology, Inc. Video processing architecture
US8422552B2 (en) * 2007-03-29 2013-04-16 James Au Entropy coding for video processing applications
US8571104B2 (en) * 2007-06-15 2013-10-29 Qualcomm, Incorporated Adaptive coefficient scanning in video coding
US8891615B2 (en) * 2008-01-08 2014-11-18 Qualcomm Incorporated Quantization based on rate-distortion modeling for CABAC coders
US9008171B2 (en) * 2008-01-08 2015-04-14 Qualcomm Incorporated Two pass quantization for CABAC coders
KR101511082B1 (ko) * 2008-05-09 2015-04-13 삼성전자주식회사 최하위 비트를 이용한 엔트로피 부호화 방법과 그 장치 및엔트로피 복호화 방법과 그 장치
EP2154894A1 (en) * 2008-08-15 2010-02-17 Thomson Licensing Video coding with coding of the locations of significant coefficients in a block of coefficients
US9183181B2 (en) 2011-01-10 2015-11-10 Cisco Technology, Inc. Integer matrix transform video compression system, method and computer program product
CA2810899C (en) 2010-10-05 2016-08-09 General Instrument Corporation Coding and decoding utilizing adaptive context model selection with zigzag scan
US9172963B2 (en) 2010-11-01 2015-10-27 Qualcomm Incorporated Joint coding of syntax elements for 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
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
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
US9490839B2 (en) 2011-01-03 2016-11-08 Qualcomm Incorporated Variable length coding of video block coefficients
US9106913B2 (en) 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US10397577B2 (en) 2011-03-08 2019-08-27 Velos Media, Llc Inverse scan order for significance map coding of transform coefficients in video coding
US8938001B1 (en) 2011-04-05 2015-01-20 Google Inc. Apparatus and method for coding using combinations
US9167253B2 (en) 2011-06-28 2015-10-20 Qualcomm Incorporated Derivation of the position in scan order of the last significant transform coefficient in video coding
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
US8891616B1 (en) 2011-07-27 2014-11-18 Google Inc. Method and apparatus for entropy encoding based on encoding cost
LT2773117T (lt) * 2011-10-24 2018-12-27 Infobridge Pte. Ltd. Vaizdo dekodavimo aparatas
US9247257B1 (en) 2011-11-30 2016-01-26 Google Inc. Segmentation based entropy encoding and decoding
US11039138B1 (en) 2012-03-08 2021-06-15 Google Llc Adaptive coding of prediction modes using probability distributions
US9237344B2 (en) * 2012-03-22 2016-01-12 Qualcomm Incorporated Deriving context for last position coding for video coding
US9774856B1 (en) 2012-07-02 2017-09-26 Google Inc. Adaptive stochastic entropy coding
US8891888B2 (en) 2012-09-05 2014-11-18 Google Inc. Entropy coding for recompression of images
US9509998B1 (en) 2013-04-04 2016-11-29 Google Inc. Conditional predictive multi-symbol run-length coding
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
CN113810706B (zh) 2016-04-29 2025-02-28 世宗大学校产学协力团 用于对图像信号进行编码和解码的方法和装置
US11876990B2 (en) * 2021-07-13 2024-01-16 Mediatek Inc. Video residual decoding apparatus using storage device to store side information and/or state information for syntax element decoding optimization and associated method

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US228510A (en) * 1880-06-08 Lacing-hook for boots and shoes
NO175080B (no) * 1992-03-11 1994-05-16 Teledirektoratets Forskningsav Fremgangsmåte for koding av bildedata
KR100469176B1 (ko) * 1996-11-06 2005-02-02 마쯔시다덴기산교 가부시키가이샤 화상 부호화 방법
US7006631B1 (en) * 2000-07-12 2006-02-28 Packet Video Corporation Method and system for embedding binary data sequences into video bitstreams
EP3099066B1 (en) * 2001-11-22 2019-08-14 Godo Kaisha IP Bridge 1 Variable length coding method and variable length decoding method
ATE352826T1 (de) * 2002-05-02 2007-02-15 Fraunhofer Ges Forschung Arithmetische codierung von transformationskoeffizienten
US6795584B2 (en) * 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
US6646578B1 (en) 2002-11-22 2003-11-11 Ub Video Inc. Context adaptive variable length decoding system and method
US7212681B1 (en) * 2003-01-15 2007-05-01 Cisco Technology, Inc. Extension of two-dimensional variable length coding for image compression
US7194137B2 (en) * 2003-05-16 2007-03-20 Cisco Technology, Inc. Variable length coding method and apparatus for video compression
US7471840B2 (en) * 2004-08-18 2008-12-30 Cisco Technology, Inc. Two-dimensional variable length coding of runs of zero and non-zero transform coefficients for image compression
US7620258B2 (en) * 2004-08-18 2009-11-17 Cisco Technology, Inc. Extended amplitude coding for clustered transform coefficients
JP4271134B2 (ja) * 2004-12-10 2009-06-03 株式会社東芝 可変長符号化デコーダおよびデコード方法
US8731051B1 (en) * 2006-02-10 2014-05-20 Nvidia Corporation Forward and inverse quantization of data for video compression

Also Published As

Publication number Publication date
ATE400969T1 (de) 2008-07-15
CN101095359A (zh) 2007-12-26
NO20045714D0 (no) 2004-12-30
EP1834487A1 (en) 2007-09-19
NO322043B1 (no) 2006-08-07
US7843998B2 (en) 2010-11-30
WO2006071125A1 (en) 2006-07-06
JP2008527789A (ja) 2008-07-24
DE602005008111D1 (de) 2008-08-21
US20060146938A1 (en) 2006-07-06
EP1834487B1 (en) 2008-07-09
CN100581252C (zh) 2010-01-13

Similar Documents

Publication Publication Date Title
ES2310372T3 (es) Procedimiento de codificacion de entropia mejorada.
ES2442851T3 (es) Método y sistema para codificación aritmética binaria adaptativa basada en contexto
ES2270246T3 (es) Procedimiento y disposicion para la codificacion de coeficientes de transformacion en codificadores y decodificadores de imagen y/o de video asi como programa informatico correspondiente y medio de almacenamiento correspondiente legible por ordenador.
JP4113114B2 (ja) Golomb−riceコーディングを使用するdct圧縮
CN106797457B (zh) 具有改进调色板表和索引图编码的先进屏幕内容编码方法
CN111083476B (zh) 编码和解码视频数据的方法及视频数据编码器和解码器
RU2602834C2 (ru) Способ и устройство для кодирования/декодирования видеоданных
US20040136457A1 (en) Method and system for supercompression of compressed digital video
JP2004531995A5 (es)
JP2009165141A (ja) ゴロム・ライスを使用する無損失フレーム内符号化
JP2002520899A (ja) Dwtベース技法によって圧縮された画像を符号化するための実時間アルゴリズムおよびアーキテクチャ
CN105325000A (zh) 图像编码装置、图像编码方法、图像解码装置和图像解码方法
WO2012138032A1 (ko) 영상 정보 부호화 방법 및 복호화 방법
CA2950180C (en) Acceleration of context adaptive binary arithmetic coding (cabac) in video codecs
WO2018057104A1 (en) Storing and retrieving high bit depth image data
ES2371871T3 (es) Aparato y procedimiento para la codificación por múltiples descripciones.
US20090016624A1 (en) Method of graphics and image data compression
CN110708547B (zh) 针对变换模式的有效熵编码组分组方法
TWI885844B (zh) 一種編解碼方法、裝置及其設備
KR100359813B1 (ko) 영상 압축 부호화를 위한 변형 이중 스캔방법
US7843997B2 (en) Context adaptive variable length code decoder for decoding macroblock adaptive field/frame coded video data
Dikbas et al. Lossless image compression using adjustable fractional line-buffer
US7103102B2 (en) Bit stream code lookup table for an MPEG-4 code word
Guo et al. Research on Image Compression Algorithm Based on Predictive Residual Coding
CN114788276B (zh) 图像数据编码和解码