[go: up one dir, main page]

ES2328916T3 - Coeficientes de transformacion de codificacion en codificadores y/o descodificadores de imagenes/video. - Google Patents

Coeficientes de transformacion de codificacion en codificadores y/o descodificadores de imagenes/video. Download PDF

Info

Publication number
ES2328916T3
ES2328916T3 ES03714994T ES03714994T ES2328916T3 ES 2328916 T3 ES2328916 T3 ES 2328916T3 ES 03714994 T ES03714994 T ES 03714994T ES 03714994 T ES03714994 T ES 03714994T ES 2328916 T3 ES2328916 T3 ES 2328916T3
Authority
ES
Spain
Prior art keywords
data symbols
null value
code
value data
symbols
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
ES03714994T
Other languages
English (en)
Inventor
Ragip Kurceren
Marta Karczewicz
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
Application filed by Nokia Inc filed Critical Nokia Inc
Application granted granted Critical
Publication of ES2328916T3 publication Critical patent/ES2328916T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/146Data rate or code amount at the encoder output

Landscapes

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

Abstract

Un procedimiento de codificación con longitud variable de un conjunto de símbolos de datos que comprende símbolos de datos de valor nulo y símbolos de datos de valor no nulo, estando el procedimiento caracterizado por: - representar un símbolo de datos de valor no nulo del conjunto de símbolos de datos por un par de símbolos de datos que representan el símbolo de datos de valor no nulo y un número asociado de símbolos de datos de valor nulo, precedentes o siguientes; - seleccionar una guía de códigos de longitud variable entre un conjunto de guías de códigos, sobre la base del valor de un símbolo de datos de valor no nulo previamente codificado; - asignar una palabra de código de la guía de códigos de longitud variable seleccionada, para representar al par de símbolos de datos, realizando una operación de correspondencia, en donde la operación de correspondencia por la cual es asignada dicha palabra de código se adapta según un máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos; - actualizar el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos con respecto a la asignación de un par de símbolos de datos a una palabra de código, restando dicho número asociado de símbolos de datos de valor nulo, precedentes o siguientes, de dicho máximo número posible de símbolos de datos de valor nulo, a fin de producir un máximo número posible de símbolos de datos de valor nulo actualizado, en donde la operación de correspondencia, por la cual se asigna una palabra de código subsiguiente a un par de símbolos de datos, se adapta según dicho máximo número posible de símbolos de datos de valor nulo actualizado; - proporcionar una palabra de código que represente el número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos en un flujo de bits codificados.

Description

Coeficientes de transformación de codificación en codificadores y/o descodificadores de imágenes/vídeo.
\global\parskip0.900000\baselineskip
Campo de la invención
La presente invención se refiere a un procedimiento, un codificador, un descodificador y un dispositivo para la codificación de vídeo digital. Más específicamente, la invención atañe a la codificación de coeficientes de transformación cuantizados, producidos como resultado de la codificación de transformación basada en bloques en un codificador/descodificador de vídeo/imágenes, utilizando la Codificación de Longitud Variable (UVLC).
Antecedentes de la invención
Las secuencias de vídeo digital, como los fotogramas corrientes registrados en una película, comprenden una secuencia de imágenes fijas, creándose la ilusión de movimiento al exhibir las imágenes una tras otra a una velocidad relativamente rápida, habitualmente de 15 a 30 tramas por segundo. Debido a la velocidad relativamente rápida de exhibición, las imágenes en tramas consecutivas tienden a ser bastante similares y, por ello, contienen una considerable cantidad de información redundante. Por ejemplo, una escena típica puede comprender algunos elementos inmóviles, tales como un escenario de fondo, y algunas áreas móviles, que pueden adoptar distintas formas, por ejemplo, la cara de un lector, el tráfico en movimiento, etc. Alternativamente, la cámara misma que registra la escena puede estar en movimiento, en cuyo caso todos los elementos de la imagen tienen el mismo tipo de movimiento. En muchos casos, esto significa que el cambio general entre una trama de vídeo y la siguiente es bastante pequeño.
Cada trama de una secuencia no comprimida de vídeo digital comprende una matriz de píxeles de imagen. Por ejemplo, en un formato habitualmente utilizado de vídeo digital, conocido como el Formato de Intercambio Común de Cuarto (QCIF), una trama comprende una matriz de 176 x 144 píxeles, en cuyo caso cada trama tiene 25.344 píxeles. A su vez, cada píxel está representado por un cierto número de bits que llevan información acerca del contenido de luminosidad y/o color de la región de la imagen que corresponde al píxel. Habitualmente, se utiliza el así llamado modelo YUV de color para representar el contenido de luminosidad y cromaticidad de la imagen. El componente de luminosidad, o Y, representa la intensidad (brillo) de la imagen, mientras que el contenido de color de la imagen está representado por dos componentes de cromaticidad o diferencia de color, denominados U y V.
Los modelos de color basados en una representación de luminosidad/cromaticidad del contenido de imágenes brindan ciertas ventajas, en comparación con los modelos de color que se basan en una representación que implica colores primarios (es decir, Rojo, Verde y Azul, RVA). El sistema visual humano es más sensible a las variaciones de intensidad que a las variaciones de color, y los modelos YUV de color explotan esta propiedad utilizando una resolución espacial menor para los componentes (U, V) de cromaticidad que para el componente (Y) de luminosidad. De esta manera, la cantidad de información necesaria para codificar la información de color en una imagen puede reducirse con una reducción aceptable en la calidad de la imagen.
La menor resolución espacial de los componentes de cromaticidad se logra habitualmente mediante el submuestreo. Típicamente, cada trama de una secuencia de vídeo se divide en los denominados "macrobloques", que comprenden información de luminosidad (Y) e información asociada de cromaticidad (U, V), que está espacialmente submuestreada. La Figura 3 ilustra una manera de la cual pueden formarse los macrobloques. La Figura 3a muestra una trama de una secuencia de vídeo representada utilizando un modelo de color YUV, teniendo cada componente la misma resolución espacial. Los macrobloques se forman representando una región de 16x6 píxeles de imagen en la imagen original (Figura 3b) como cuatro bloques de información de luminosidad, comprendiendo cada bloque de luminosidad una matriz 8x8 de valores de luminosidad (Y) y dos componentes (U y V), espacialmente correspondientes, de cromaticidad, que son submuestreados en un factor de dos en las direcciones x e y, para obtener las correspondientes matrices de 8x8 valores de cromaticidad (U, V) (véase la Figura 3c). Según ciertas recomendaciones de codificación de vídeo, tal como la recomendación H.26L de la Unión Internacional de Telecomunicaciones (ITU-T), el tamaño de bloque utilizado dentro de los macrobloques puede ser distinto a 8x8, por ejemplo, 4x8 o 4x4 (véase el Borrador de Trabajo Número 2 del Modelo Conjunto (JM) 2.0, Doc. JVT-B118, Equipo de Vídeo Conjunto (JVT) de los grupos ISO/IEC MPEG e ITU-T VCEG Pattaya, 2ª Reunión del JVT, Ginebra, Suiza, 29 de enero - 1 de febrero, 2002, Sección 3.2).
Una imagen QCIF comprende 11x9 macrobloques, si los bloques de luminosidad y los bloques de cromaticidad se representan con resolución de 8 bits (es decir, por números en la gama entre 0 a 255), el número total de bits requeridos por macrobloque es (16x16x8)+2x(8x8x8) = 3.072 bits. El número de bits necesarios para representar una trama de vídeo en el formato QCIF es, por lo tanto, 99x3072 = 304.128 bits. Esto significa que la cantidad de datos requeridos para transmitir/registrar/exhibir una secuencia de vídeo no comprimida en formato QCIF, representada utilizando un modelo YUV de color, a una velocidad de 30 tramas por segundo, es de más de 9 Mbps (millones de bits por segundo). Esta es una velocidad de datos extremadamente alta, y no es práctica para su empleo en aplicaciones de registro, transmisión y exhibición de vídeo, debido a la muy grande capacidad de almacenamiento, la capacidad del canal de transmisión y las prestaciones de hardware requeridas.
Si los datos de vídeo han de transmitirse en tiempo real por una red de línea fija tal como una RDSI (Red Digital de Servicios Integrados) o una RTPC (Red Telefónica Pública Conmutada) convencional, el ancho de banda disponible para la transmisión de datos es habitualmente del orden de 64 kbits/s. En la videotelefonía móvil, donde la transmisión tiene lugar, al menos en parte, por un enlace de comunicaciones por radio, el ancho de banda disponible puede ser tan bajo como 20 kbits/s. Esto significa que debe lograrse una significativa reducción en la cantidad de información utilizada para representar datos de vídeo, a fin de permitir la transmisión de secuencias de vídeo digital por redes de comunicación de bajo ancho de banda. Por este motivo, se han desarrollado técnicas de compresión de vídeo que reducen la cantidad de información transmitida, manteniendo a la vez una calidad aceptable de imagen.
Los procedimientos de compresión de vídeo se basan en la reducción de las partes redundantes y perceptivamente irrelevantes de las secuencias de vídeo. La redundancia en las secuencias de vídeo puede categorizarse en redundancia espacial, temporal y espectral. "Redundancia espacial" es el término utilizado para describir la correlación (similitud) entre píxeles vecinos dentro de una trama. El término "redundancia temporal" expresa el hecho de que es probable que los objetos que aparecen en una trama de una secuencia aparezcan en tramas subsiguientes, mientras que "redundancia espectral" se refiere a la correlación entre distintos componentes cromáticos de la misma imagen.
Una compresión suficientemente eficiente no puede lograrse habitualmente reduciendo las diversas formas de redundancia en una secuencia dada de imágenes. Así, la mayoría de los codificadores actuales de vídeo reducen la calidad de aquellas partes de la secuencia de vídeo que son, subjetivamente, las menos importantes. Además, la redundancia del mismo flujo de bits de vídeo comprimido se reduce por medio de la codificación eficiente libre de pérdidas. Generalmente, esto se logra utilizando una técnica conocida como codificación por entropía.
A menudo hay una cantidad significativa de redundancia espacial entre los píxeles que componen cada trama de una secuencia de vídeo digital. En otras palabras, el valor de cualquier píxel dentro de una trama de la secuencia es esencialmente el mismo que el valor de otros píxeles en su proximidad inmediata. Típicamente, los sistemas de codificación de vídeo reducen la redundancia espacial utilizando una técnica conocida como "codificación de transformación basada en bloques", en la cual se aplica una transformación matemática, tal como una Transformada Discreta de Coseno (TDC) bidimensional, a los bloques de píxeles de imágenes. Esto transforma los datos de imágenes desde una representación que comprende valores de píxeles a un formato que comprende un conjunto de valores de coeficientes, que representan a los componentes de la frecuencia espacial, reduciendo significativamente la redundancia espacial y produciendo por ello una representación más compacta de los datos de imágenes.
Las tramas de una secuencia de vídeo que se comprimen utilizando la codificación de transformación basada en bloques, sin referencia a ninguna otra trama dentro de la secuencia, se denominan tramas INTRA-codificadas, o tramas-1. Adicionalmente, y allí donde sea posible, los bloques de tramas INTRA-codificadas se predicen a partir de los bloques previamente codificados dentro de la misma trama. Esta técnica, conocida como INTRA-predicción, tiene el efecto de reducir adicionalmente la cantidad de datos requeridos para representar una trama INTRA-codificada.
Generalmente, los sistemas de codificación de vídeo no sólo reducen la redundancia espacial dentro de las tramas individuales de una secuencia de vídeo, sino que también hacen uso de una técnica conocida como "predicción compensada por movimiento", para reducir la redundancia temporal en la secuencia. Utilizando la predicción compensada por movimiento, el contenido de imagen de algunas (a menudo muchas) tramas en una secuencia de vídeo digital se "predice" a partir de una o más tramas adicionales en la secuencia, conocidas como tramas de "referencia". La predicción del contenido de imagen se logra rastreando el movimiento de objetos o regiones de una imagen, entre una trama a codificar (comprimir) y la(s) trama(s) de referencia, utilizando "vectores de movimiento". En general, la(s) trama(s) de referencia puede(n) preceder a la trama a codificar, o puede(n) seguirla en la secuencia de vídeo. Como en el caso de la INTRA-codificación, la predicción compensada por movimiento de una trama de vídeo se lleva a cabo, típicamente, macrobloque a macrobloque.
Las tramas de una secuencia de vídeo que se comprimen utilizando la predicción compensada por movimiento se denominan generalmente tramas INTER-codificadas o tramas-P. La predicción compensada por movimiento, por sí sola, rara vez proporciona una representación suficientemente precisa del contenido de imagen de una trama de vídeo y, por lo tanto, habitualmente es necesario proporcionar una trama denominada de "error de predicción" (EP) con cada trama INTER-codificada. La trama de error de predicción representa la diferencia entre una versión descodificada de la trama INTER-codificada y el contenido de imagen de la trama a codificar. Más específicamente, la trama de error de predicción comprende valores que representan la diferencia entre los valores de píxeles en la trama a codificar y los correspondientes valores de píxel reconstruidos formados sobre la base de una versión predicha de la trama en cuestión. En consecuencia, la trama de error de predicción tiene características similares a una imagen fija, y la codificación de transformación basada en bloques puede aplicarse a fin de reducir su redundancia espacial y, por ello, la cantidad de datos (número de bits) requeridos para representarla.
A fin de ilustrar el funcionamiento de un sistema de codificación de vídeo en mayor detalle, se hará ahora referencia a las Figuras 1 y 2. La Figura 1 es un diagrama esquemático de un codificador genérico de vídeo que emplea una combinación de INTRA-codificación e INTER-codificación para producir un flujo de bits de vídeo comprimido (codificado). Se ilustra un correspondiente descodificador en la Figura 2, y se describirá más adelante en el texto.
El codificador 100 de vídeo comprende una entrada 101 para recibir una señal de vídeo digital desde una cámara u otra fuente de vídeo (no mostrada). También comprende una unidad 104 de transformación, que está dispuesta para realizar una transformada discreta de coseno (TDC) basada en bloques, un cuantizador 106, un cuantizador inverso 108, una unidad 110 de transformación inversa, dispuesta para realizar una transformación discreta de coseno (TDC) inversa basada en bloques, combinadores 112 y 116, un almacén 120 de tramas. El codificador comprende adicionalmente un estimador 130 de movimiento, un codificador 140 de campo de movimiento y un predictor 150 compensado por movimiento. Los conmutadores 102 y 114 son controlados cooperativamente por el gestor 160 de control, para conmutar el codificador entre una INTRA-modalidad de codificación de vídeo y una INTER-modalidad de codificación de vídeo. El codificador 100 también comprende un codificador multiplex 170 de vídeo que forma un único flujo de bits a partir de los diversos tipos de información producida por el codificador 100 para su transmisión ulterior a un terminal receptor remoto o, por ejemplo, para su almacenamiento en un medio de almacenamiento masivo, tal como un disco rígido de ordenador (no mostrado).
El codificador 100 funciona de la siguiente manera. Cada trama de vídeo no comprimido suministrado desde la fuente de vídeo a la entrada 101 es recibida y procesada macrobloque a macrobloque, preferiblemente en orden de escaneo de representación. Cuando comienza la codificación de una nueva secuencia de vídeo, la primera trama a codificar se codifica como una trama INTRA-codificada. A continuación, el codificador se programa para codificar cada trama en formato INTER-codificado, a menos que se satisfaga una de las siguientes condiciones: 1) se considera que el macrobloque actual de la trama que se está codificando es tan disímil a los valores de píxel en la trama de referencia utilizada en su predicción que se produce una información excesiva de error de predicción, en cuyo caso el macrobloque actual se codifica en formato INTRA-codificado; 2) ha finalizado un intervalo predefinido de repetición de INTRA-trama; o bien 3) se recibe respuesta desde un terminal receptor que indica una solicitud de una trama a proporcionar en formato INTRA-codificado.
La ocurrencia de la condición 1) se detecta supervisando la salida del combinador 116. El combinador 116 forma una diferencia entre el macrobloque actual de la trama que se está codificando y su predicción, producida en el bloque 150 de predicción compensada por movimiento. Si una medición de esta diferencia (por ejemplo, una suma de las diferencias absolutas de valores de píxel) supera un umbral predeterminado, el combinador 116 informa al gestor 160 de control mediante una línea 119 de control, y el gestor 160 de control opera los conmutadores 102 y 114 mediante la línea 113 de control, a fin de conmutar el codificador 100 a la modalidad de INTRA-codificación. De esta manera, una trama que en caso contrario se codifica en formato INTER-codificado puede comprender macrobloques INTRA-codificados. La ocurrencia de la condición 2) se supervisa por medio de un temporizador o contador de tramas implementado en el gestor 160 de control, de tal manera que, si el temporizador expira, o el contador de tramas alcanza un número predeterminado de tramas, el gestor 160 de control opera los conmutadores 102 y 114 mediante la línea 113 de control, para conmutar el codificador a la modalidad de INTRA-codificación. La condición 3) se provoca si el gestor 160 de control recibe una señal de respuesta, por ejemplo, desde un terminal receptor, mediante la línea 121 de control, que indica que un refresco de INTRA-trama es requerido por el terminal receptor. Tal condición puede surgir, por ejemplo, si una trama anteriormente transmitida está gravemente corrompida por la interferencia durante su transmisión, haciendo imposible descodificarla en el receptor. En esta situación, el descodificador receptor emite una solicitud para
que la siguiente trama se codifique en formato INTRA-codificado, reinicializando así la secuencia de codificación.
Se describirá ahora el funcionamiento del codificador 100 en la modalidad de INTRA-codificación. En la modalidad de INTRA-codificación, el gestor 160 de control opera el conmutador 102 para aceptar entrada de vídeo desde la línea 118 de entrada. La entrada de la señal de vídeo se recibe macrobloque a macrobloque desde la entrada 101, mediante la línea 118 de entrada. Según se reciben, los bloques de valores de luminosidad y cromaticidad que componen el macrobloque se pasan al bloque 104 de transformación TDC, que realiza una transformación discreta de coseno bidimensional sobre cada bloque de valores, produciendo una matriz bidimensional de coeficientes de TDC para cada bloque. El bloque 104 de transformación TDC produce una matriz de valores de coeficientes para cada bloque, dependiendo el número de valores de coeficientes de la naturaleza de los bloques que componen el macrobloque. Por ejemplo, si el tamaño fundamental de bloque utilizado en el macrobloque es 4x4, el bloque 104 de transformación TDC produce una matriz 4x4 de coeficientes de TDC para cada bloque. Si el tamaño del bloque es 8x8, se produce una matriz 8x8 de coeficientes de TDC.
Los coeficientes de TDC para cada bloque se pasan al cuantizador 106, donde se cuantizan utilizando un parámetro PC de cuantización. La selección del parámetro PC de cuantización es controlada por el gestor 160 de control mediante la línea 115 de control. La cuantización introduce una pérdida de información, ya que los coeficientes cuantizados tienen una menor precisión numérica que los coeficientes originalmente generados por el bloque 104 de transformación TDC. Esto proporciona un mecanismo adicional, por el cual puede reducirse la cantidad de datos requeridos para representar a cada imagen de la secuencia de vídeo. Sin embargo, a diferencia de la transformación TDC, que es esencialmente libre de pérdidas, la pérdida de información introducida por la cuantización causa una degradación irreversible en la calidad de la imagen. Cuando mayor es el grado de cuantización aplicado a los coeficientes TDC, mayor es la pérdida de calidad de la imagen.
Los coeficientes TDC cuantizados para cada bloque se pasan desde el cuantizador 106 al codificador multiplex 170 de vídeo, según se indica con la línea 125 en la Figura 1. El codificador multiplex 170 de vídeo ordena los coeficientes de transformación cuantizados para cada bloque, utilizando un procedimiento de escaneo en zig-zag. Esta operación convierte la matriz bidimensional de coeficientes de transformación cuantizados en un vector unidimensional. Los ordenamientos típicos de escaneo en zig-zag, tal como el de una matriz 4x4 mostrada en la Figura 4, ordenan los coeficientes, aproximadamente, en orden ascendiente de frecuencia espacial. Esto también tiende a ordenar los coeficientes según sus valores, de forma tal que es más probable que los coeficientes situados antes en el vector unidimensional tengan mayores valores absolutos que los coeficientes situados más adelante en el vector. Esto se debe a que las frecuencias especiales inferiores tienden a tener mayores amplitudes dentro de los bloques de imágenes. En consecuencia, los últimos valores en el vector unidimensional de coeficientes de transformación cuantizados son usualmente ceros.
Típicamente, el codificador multiplex 170 de vídeo representa cada coeficiente cuantizado no nulo en el vector unidimensional con dos valores, denominados nivel y racha. El nivel es el valor del coeficiente cuantizado y la racha es el número de coeficientes nulos consecutivos que preceden al coeficiente en cuestión. Los valores de nivel y de racha para un coeficiente dado se ordenan de forma tal que el valor del nivel preceda al valor asociado de la racha. Un valor de nivel igual a cero se utiliza para indicar que no hay más valores de coeficientes no nulos en el bloque. Este valor de nivel 0 se denomina un símbolo de FDB (fin de bloque).
Alternativamente, cada coeficiente cuantizado de valor no nulo en el vector unidimensional puede representarse con 3 valores (racha, nivel, último). El significado de nivel y racha es idéntico a los del esquema anterior, mientras que último indica si hay otros coeficientes cualesquiera de valor no nulo en el vector unidimensional a continuación del coeficiente actual. En consecuencia, no hay una necesidad de un símbolo individual de FDB.
Los valores de racha y nivel (último, si corresponde) se comprimen adicionalmente utilizando la codificación por entropía. La codificación por entropía es una operación libre de pérdidas que explota el hecho de que los símbolos dentro de un conjunto de datos a codificar, por lo general, tienen distintas probabilidades de ocurrencia. Por lo tanto, en lugar de utilizar un número fijo de bits para representar a cada símbolo, se asigna un número variable de bits, de forma tal que los símbolos que tienen más probabilidad de aparecer se representen con palabras de código con menos bits. Por esta razón, la codificación de entropía a menudo se denomina Codificación de Longitud Variable (CLV). Dado que es más probable que ocurran ciertos valores de niveles y rachas que otros valores, las técnicas de codificación por entropía pueden utilizarse eficientemente para reducir el número de bits requeridos para representar los valores de racha y nivel.
Una vez que se han codificado por entropía los valores de racha y nivel, el codificador multiplex 170 de vídeo los combina adicionalmente con información de control, también codificada por entropía, utilizando un procedimiento de codificación de longitud variable adecuada para la clase de información en cuestión, a fin de formar un único flujo de bits comprimidos de información 135 de imagen codificada. Es este flujo de bits, incluyendo las palabras de código de longitud variable que representan los pares (racha, nivel), lo que se transmite desde el codificador.
Si bien la codificación por entropía ha sido descrita con relación a las operaciones realizadas por el codificador multiplex 170 de vídeo, debería observarse que, en implementaciones alternativas, puede proporcionarse una unidad individual de codificación por entropía.
También se forma una versión localmente descodificada en el codificador 100. Esto se logra pasando los coeficientes de transformación cuantizados para cada bloque, emitidos por el cuantizador 106, a través del cuantizador inverso 108, y aplicando una transformación TCD inversa en el bloque 110 de transformación inversa. De esta manera se construye una formación reconstruida de valores de píxel para cada bloque del macrobloque. Los datos resultantes de imágenes descodificadas se ingresan al combinador 112. En la modalidad de INTRA-codificación, el conmutador 114 se configura de forma tal que la entrada al combinador 112, mediante el conmutador 114, sea cero. De esta manera, la operación realizada por el combinador 112 es equivalente a pasar los datos de imágenes descodificadas sin alteración.
Según los macrobloques subsiguientes de la trama actual son recibidos y sometidos a las etapas de codificación y descodificación local, anteriormente descritas, en los bloques 104, 106, 108, 110 y 112, se construye una versión descodificada de la trama INTRA-codificada en el almacén 120 de tramas. Cuando el último macrobloque de la trama actual ha sido INTRA-codificado y subsiguientemente descodificado, el almacén 120 de tramas contiene una trama completamente descodificada, disponible para su empleo como una trama de referencia de predicción en la codificación de una trama de vídeo recibida posteriormente en formato INTER-codificado.
Se describirá ahora el funcionamiento del codificador 100 en la modalidad de INTER-codificación. En la modalidad de INTER-codificación, el gestor 160 de control opera el conmutador 102 para recibir su entrada desde la línea 117, que comprende la salida del combinador 116. El combinador 116 recibe la señal de entrada de vídeo, macrobloque a macrobloque, desde la entrada 101. Según el combinador 116 recibe los bloques de valores de luminosidad y cromaticidad que componen el macrobloque, forma bloques correspondiente de información de errores de predicción. La información de errores de predicción representa la diferencia entre el bloque en cuestión y su predicción, producida en los bloques 150 de predicción compensada por movimiento. Más específicamente, la información de errores 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 luminosidad o cromaticidad que se está descodificando y un valor de píxel descodificado, obtenido al formar una predicción compensada por movimiento para el bloque, según el procedimiento descrito más adelante. Así, en una situación en donde cada macrobloque comprende, por ejemplo, un montaje de 4x4 bloques que comprenden valores de luminosidad y cromaticidad, la información de errores de predicción para cada bloque del macrobloque comprende, de manera similar, una matriz 4x4 de valores de errores de predicción.
La información de errores de predicción para cada bloque del macrobloque se pasa al bloque 104 de transformación TDC, que lleva a cabo una transformación discreta de coseno bidimensional sobre cada bloque de valores de errores de predicción, para producir una matriz bidimensional de coeficientes de transformación TDC para cada bloque. El bloque 104 de transformación TDC produce una formación de valores de coeficientes para cada bloque de errores de predicción, dependiendo el número de valores de coeficientes de la naturaleza de los bloques que componen el macrobloque. Por ejemplo, si el tamaño fundamental de bloque utilizado en el macrobloque es 4x4, el bloque 140 de transformación de TDC produce una matriz 4x4 de coeficientes TDC para cada bloque de errores de predicción. Si el tamaño del bloque es 8x8, se produce una matriz 8x8 de coeficientes de TDC.
Los coeficientes de transformación para cada bloque de errores de predicción se pasan al cuantizador 106, donde son cuantizados utilizando un parámetro PC de cuantización, de manera análoga a la descrita anteriormente con respecto al funcionamiento del codificador en la modalidad de INTRA-codificación. Nuevamente, la selección del parámetro PC de cuantización está controlada por el gestor 160 de control mediante la línea 115 de control.
Los coeficientes TDC cuantizados que representan la información de errores de predicción para cada bloque del macrobloque se pasan desde el cuantizador 106 al codificador multiplex 170 de vídeo, según lo indicado por la línea 125 en la Figura 1. Como en la modalidad de INTRA-codificación, el codificador multiplex 170 de vídeo ordena los coeficientes de transformación para cada bloque de errores de predicción, utilizando el procedimiento de escaneo en zig-zag anteriormente descrito (véase la Figura 4), y representa luego cada coeficiente cuantizado no nulo como un nivel y un valor de racha. Comprime adicionalmente los valores de racha y nivel utilizando codificación por entropía, de una manera análoga a la anteriormente descrita con respecto a la modalidad de INTRA-codificación. El codificador multiplex 170 de vídeo también recibe información de vectores de movimiento (descritos en lo siguiente) desde el bloque 140 de codificación de campo de movimiento, mediante la línea 126, e información de control desde el gestor 160 de control. Codifica por entropía la información del vector de movimiento y la información de control, y forma un único flujo 135 de bits de la información de imagen codificada, que comprende el vector de movimiento codificado por entropía, errores de información e información de control.
Los coeficientes TDC cuantizados, que representan la información de errores de predicción para cada bloque del macrobloque, se pasan también desde el cuantizador 106 al cuantizador inverso 108. Aquí se cuantizan inversamente, y los bloques resultantes de los coeficientes TDC inversamente cuantizados se aplican al bloque 110 de transformación TDC inversa, donde se someten a la transformación TDC inversa para producir bloques localmente descodificados de valores de errores de predicción. Los bloques localmente descodificados de valores de errores de predicción ingresan luego al combinador 112. En la modalidad de INTER-codificación, el conmutador 114 se configura de forma tal que el combinador 112 también reciba valores predichos de píxeles para cada bloque del macrobloque, generados por el bloque 150 de predicción compensada por movimiento. El combinador 112 combina cada uno de los bloques localmente descodificados de los valores de errores de predicción con un correspondiente bloque de valores predichos de píxel, a fin de producir bloques de imágenes reconstruidas, y los almacena en el almacén 120 de tramas.
Según se reciben los macrobloques subsiguientes de la señal de vídeo desde la fuente de vídeo, y se someten a las etapas anteriormente descritas de codificación y descodificación en los bloques 104, 106, 108, 110, 112, se construye una versión descodificada de la trama en el almacén 120 de tramas. Cuando el último macrobloque de la trama ha sido procesado, el almacén 120 de tramas contiene una trama completamente descodificada, disponible para su empleo como una trama de referencia de predicción al codificar una trama de vídeo recibida posteriormente en formato INTER-codificado.
Se describirá ahora la formación de una predicción para un macrobloque de la trama actual. Cualquier trama codificada en formato INTER-codificado requiere una trama de referencia para la predicción compensada por movimiento. Esto significa, necesariamente, que al codificar una secuencia de vídeo, la primera trama a codificar, ya sea la primera trama en la secuencia, o alguna otra trama, debe codificarse en formato INTRA-codificado. Esto, a su vez, significa que cuando el codificador 100 de vídeo es conmutado a la modalidad de INTER-codificación por el gestor 160 de control, una trama de referencia completa, formada por la descodificación local de una trama previamente codificada, ya está disponible en el almacén 120 de tramas del codificador. En general, la trama de referencia se forma descodificando localmente bien una trama INTRA-codificada o bien una trama INTER-codificada.
La primera etapa al formar una predicción para un macrobloque de la trama actual es efectuada por el bloque 130 de estimación de movimiento. El bloque 130 de estimación de movimiento recibe los bloques de valores de luminosidad y cromaticidad que componen el macrobloque actual de la trama a codificar, mediante la línea 128. Luego, lleva a cabo una operación de confrontación de bloques, a fin de identificar una región en la trama de referencia que corresponda esencialmente al macrobloque actual. A fin de llevar a cabo la operación de confrontación de bloques, el bloque de estimación de movimiento accede a los datos de la trama de referencia almacenados en el almacén 120 de tramas, mediante la línea 127. Más específicamente, el bloque 130 de estimación de movimiento realiza la confrontación de bloques calculando los valores de diferencias (p. ej., las sumas de las diferencias absolutas) que representan la diferencia en valores de píxel entre el macrobloque bajo examen y las regiones candidatas a la mejor coincidencia de píxeles, a partir de una trama de referencia almacenada en el almacén 120 de tramas. Se produce un valor de diferencia para las regiones candidatas en todos los desplazamientos posibles dentro de una región de búsqueda predefinida de la trama de referencia, y el bloque 130 de estimación de movimiento determina el valor más pequeño de la diferencia calculada. El desplazamiento entre el macrobloque en la trama actual y el bloque candidato de valores de píxeles en la trama 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 130 de estimación de movimiento ha producido un vector de movimiento para el macrobloque, entrega el vector de movimiento al bloque 140 de codificación del campo de movimiento. El bloque 140 de codificación del campo de movimiento aproxima el vector de movimiento recibido del bloque 130 de estimación de movimiento utilizando un modelo de movimiento que comprende un conjunto de funciones base y coeficientes de movimiento. Más específicamente, el bloque 140 de codificación del campo de movimiento representa el vector de movimiento como un conjunto de valores de coeficientes de movimiento que, al ser multiplicados por las funciones base, forman una aproximación del vector de movimiento. Típicamente, se emplea un modelo de movimiento traslacional con sólo dos coeficientes de movimiento y funciones base, pero también pueden utilizarse modelos de movimiento de mayor complejidad.
Los coeficientes de movimiento pasan del bloque 140 de codificación del campo de movimiento al bloque 150 de predicción compensada del movimiento. El bloque 150 de predicción compensada del movimiento también recibe la región candidata que mejor aproxima los valores de píxeles identificados por el bloque 130 de estimación de movimiento, desde el almacén 120 de tramas. Empleando la representación aproximada del vector de movimiento generada por el bloque 140 de codificación del campo de movimiento y los valores de píxeles de la región candidata con la mejor aproximación de la trama de referencia, el bloque 150 de predicción compensada de movimiento genera una formación de valores predichos de píxeles para cada bloque del macrobloque. Cada bloque de valores predichos de píxeles se pasa al combinador 116, donde los valores predichos de píxeles se restan de los valores efectivos (ingresados) de píxeles en el bloque correspondiente del macrobloque actual. De esta manera, se obtiene un conjunto de bloques de errores de predicción para el macrobloque.
Se describirá ahora el funcionamiento del descodificador 200 de vídeo, mostrado en la Figura 2. El descodificador 200 comprende un descodificador multiplex 270 de vídeo, que recibe un flujo 135 de bits de vídeo codificado desde el codificador 100 y lo demultiplexa en sus partes constituyentes, un cuantizador inverso 210, un transformador TDC inverso 220, un bloque 240 de predicción compensada de movimiento, un almacén 250 de tramas, un combinador 230, un gestor 260 de control y una salida 280.
El gestor 260 de control controla el funcionamiento del descodificador 200 en respuesta a si se está descodificando una trama INTRA-codificada o una trama INTER-codificada. Una señal de control de disparo INTRA/INTER, que causa que el descodificador conmute entre las modalidades de descodificación, se deriva, por ejemplo, a partir de la información del tipo de imagen asociada a cada trama de vídeo comprimido recibida desde el codificador. La señal de control de disparo INTRA/INTER es extraída desde el flujo de bits de vídeo codificado por el descodificador multiplex 270 de vídeo, y se pasa al gestor 260 de control mediante la línea 215 de control.
La descodificación de una trama INTRA-codificada se realiza macrobloque a macrobloque, siendo cada macrobloque descodificado esencialmente en cuanto se recibe la información codificada relacionada con él en el flujo 135 de bits de vídeo. El descodificador multiplex 270 de vídeo separa la información codificada para los bloques del macrobloque de la 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 de código de longitud variable, que representan los valores de nivel y racha codificados por entropía para los coeficientes TDC cuantizados no nulos del bloque. El descodificador multiplex 270 de vídeo descodifica las palabras de código de longitud variable utilizando un procedimiento de descodificación de longitud variable, correspondiente al procedimiento de codificación utilizado en el codificador 100 y, por ello, recupera los valores de nivel y racha. Luego reconstruye la formación de valores de coeficientes cuantizados de transformación para cada bloque del macrobloque y los pasa al cuantizador inverso 210. Toda información de control relacionada con el macrobloque también se descodifica en el descodificador multiplex de vídeo, utilizando un procedimiento adecuado de descodificación, y se pasa al gestor 260 de control. En particular, la información relacionada con el nivel de cuantización aplicado a los coeficientes de transformación es extraída del flujo de bits codificados por el descodificador multiplex 270 de vídeo y se suministra al gestor 260 de control mediante la línea 217 de control. El gestor de control, a su vez, traslada esta información al cuantizador inverso 210 mediante la línea 218 de control. El cuantizador inverso 210 cuantiza inversamente los coeficientes TDC cuantizados para cada bloque del macrobloque, según la información de control, y suministra los coeficientes TDC cuantizados inversamente al transformador TDC inverso 220.
El transformador TDC inverso 220 realiza una transformación TDC inversa sobre los coeficientes TCD inversamente cuantizados para cada bloque del macrobloque, a fin de formar un bloque descodificado de la información de imagen que comprende valores de píxeles reconstruidos. Los valores de píxeles reconstruidos para cada bloque del macrobloque se pasan, mediante el combinador 230, a la salida 280 de vídeo del descodificador, donde, por ejemplo, pueden suministrarse a un dispositivo visor (no mostrado). Los valores de píxeles reconstruidos para cada bloque del macrobloque también se almacenan en el almacén 250 de tramas. Debido a que la predicción compensada por movimiento no se utiliza en la codificación/descodificación de los macrobloques INTRA-codificados, el gestor 260 de control controla al combinador 230 para pasar cada bloque de valores de píxeles tal como están a la salida 280 de vídeo y al almacén 250 de tramas. Según se descodifican y almacenan los macrobloques subsiguientes de la trama INTRA-codificada, se ensambla progresivamente una trama descodificada en el almacén 250 de tramas y así queda disponible para su uso como una trama de referencia para la predicción compensada por movimiento con respecto a la descodificación de las tramas INTER-codificadas recibidas posteriormente.
Las tramas INTER-codificadas también se descodifican macrobloque a macrobloque, siendo descodificado cada macrobloque INTER-codificado esencialmente en cuanto se recibe la información codificada relacionada con él en el flujo 135 de bits. El descodificador multiplex 270 de vídeo separa la información codificada de errores de predicción para cada bloque de un macrobloque INTER-codificado de la información codificada del vector de movimiento, y la posible información de control relacionada con el macrobloque en cuestión. Como se ha explicado en lo precedente, la información codificada de errores de predicción para cada bloque del macrobloque comprende palabras de código de longitud variable que representan los valores de nivel y racha codificados por entropía para los coeficientes de transformación cuantizados no nulos del bloque de errores de predicción en cuestión. El descodificador multiplex 270 de vídeo descodifica las palabras de código de longitud variable utilizando un procedimiento de descodificación de longitud variable correspondiente al procedimiento de codificación utilizado en el codificador 100 y, por ello, recupera los valores de nivel y racha. Luego reconstruye una formación de valores de coeficientes de transformación cuantizados para cada bloque de errores de predicción y los pasa al cuantizador inverso 210. La información de control relacionada con el macrobloque INTER-codificado también se descodifica en el descodificador multiplex 270 de vídeo, utilizando un procedimiento adecuado de descodificación, y se pasa al gestor 260 de control. La información relacionada con el nivel de cuantización aplicado a los coeficientes de transformación de los bloques de errores de predicción se extrae del flujo de bits codificados y se suministra al gestor 260 de control mediante la línea 217 de control. El gestor de control, a su vez, traslada esta información al cuantizador inverso 210 mediante la línea 218 de control. El cuantizador inverso 210 cuantiza inversamente los coeficientes TDC cuantizados que representan la información de errores de predicción para cada bloque del macrobloque, según la información de control, y suministra los coeficientes TDC cuantizados ahora inversamente al transformador TDC inverso 220. Los coeficientes TDC cuantizados inversos, que representan la información de errores de predicción para cada bloque, se transforman luego inversamente en el transformador TDC inverso 220, a
fin de producir una formación de valores reconstruidos de errores de predicción para cada bloque del macrobloque.
La información codificada del vector de movimiento asociada al macrobloque es extraída del flujo 135 de bits de vídeo codificados por el descodificador multiplex 270 de vídeo, y descodificada. La información descodificada del vector de movimiento así obtenida se pasa, mediante la línea 225 de control, al bloque 240 de predicción compensada de movimiento, que reconstruye un vector de movimiento para el macrobloque utilizando el mismo modelo de movimiento que el utilizado para codificar el macrobloque INTER-codificado en el codificador 100. El vector de movimiento reconstruido aproxima el vector de movimiento originalmente determinado por el bloque 130 de estimación de movimiento del codificador. El bloque 240 de predicción compensada de movimiento del descodificador utiliza el vector de movimiento reconstruido para identificar la ubicación de una región de píxeles reconstruidos en una trama de referencia de predicción almacenada en el almacén 250 de tramas. La trama de referencia puede ser, por ejemplo, una trama INTRA-codificada descodificada anteriormente, o una trama INTER-codificada descodificada anteriormente. En cualquier caso, la región de píxeles indicada por el vector de movimiento reconstruido se emplea para formar una predicción para el macrobloque en cuestión. Más específicamente, el bloque 240 de predicción compensada de movimiento forma una formación de valores de píxeles para cada bloque del macrobloque, copiando los correspondientes valores de píxeles de la región de píxeles identificada en la trama de referencia. La predicción, es decir, los bloques de valores de píxeles derivados de la trama de referencia, se pasan desde el bloque 240 de predicción compensada de movimiento al combinador 230, donde son combinados con la información descodificada de errores de predicción. En la práctica, los valores de píxeles de cada bloque predicho se añaden a los correspondientes valores reconstruidos de errores de predicción emitidos por el transformador TDC inverso 220. De esta manera, se obtiene una formación de valores reconstruidos de píxeles para cada bloque del macrobloque. Los valores reconstruidos de píxeles se pasan a la salida 280 de vídeo del descodificador y también se almacenan en el almacén 250 de tramas.
Según se descodifican y almacenan los macrobloques subsiguientes de la trama INTER-codificada, se ensambla progresivamente una trama descodificada en el almacén 250 de tramas, y así queda disponible para su empleo como una trama de referencia para la predicción compensada por movimiento de otras tramas INTER-codificadas.
Se examinará ahora en mayor detalle la codificación por entropía de los valores de racha y nivel asociados a los coeficientes de transformación cuantizados, utilizando la técnica de codificación de longitud variable (VLC).
Típicamente, un par racha-nivel se codifica como un único símbolo. Esto se logra definiendo una correspondencia entre cada posible par racha-nivel y los números de código definidos. Un ejemplo de una correspondencia de pares racha-nivel con números de código, como tabla de búsqueda, se ilustra en la Tabla 3. Utilizando las correspondencias en la tabla de búsqueda, se asigna un número de código a cada par (racha, nivel) del bloque, y los números de código resultantes se codifican con la codificación VLC. Por ejemplo, en el Borrador de Trabajo Número 2 del Modelo Conjunto (JM) 2.0, Doc. JVT-B118, Equipo de Vídeo Conjunto (JVT) de los grupos ISO/IEC MPEG e ITU-T VCEG Pattaya, 2ª Reunión del JVT, Ginebra, Suiza, 29 de enero - 1 de febrero, 2002 (estándar H.26L de codificación de vídeo) se definen dos tablas de búsqueda distintas que asocian los pares (racha, nivel) con números de código. La selección de la tabla que se utiliza se basa en el valor del Parámetro de Cuantización y en la modalidad de codificación del bloque. Más específicamente, si la modalidad de codificación es INTRA y el Parámetro de Cuantización es menor que 24, se usa una tabla distinta que en caso contrario.
El Modelo Conjunto (JM) 2.0 del estándar H.26L del JVT hace uso de un denominado "esquema universal de codificación de longitud variable", indicado como UVLC. En consecuencia, un codificador de vídeo implementado según el Modelo Conjunto JM 2.0 del estándar H.26L utiliza un único conjunto de palabras de código de longitud variable para codificar por entropía toda la información (elementos sintácticos) a transmitir en el flujo de bits desde el codificador. Si bien las palabras de código utilizadas son las mismas, se define un número predeterminado de distintas correspondencias entre símbolos de datos y palabras de código para la codificación de distintos tipos de información. Por ejemplo, se proporcionan dos correspondencias entre símbolos de datos y palabras de código para bloques que contienen información de luminosidad, dependiendo la selección de la correspondencia del tipo de operación de escaneo en zig-zag (escaneo simple o doble) utilizado para ordenar los coeficientes cuantizados de transformación TDC. Para mayores detalles de los esquemas de escaneo en zig-zag simple o doble definidos según el estándar H.26L, véase el Borrador de Trabajo Número 2, Doc. JVT-B118, Equipo de Vídeo Conjunto (JVT) de los grupos ISO/IEC MPEG e ITU-T VCEG Pattaya, 2ª Reunión del JVT, Ginebra, Suiza, 29 de enero - 1 de febrero, 2002. Se proporcionan también distintas correspondencias para la información del tipo de macrobloque (Tipo_MB), los datos de vectores de movimiento (MVD) y la información de modalidad de INTRA-predicción, entre otros (véase la Tabla 3 más adelante).
Las palabras de código UVLC definidas por el Modelo Conjunto JM 2.0 del estándar H.26L pueden escribirse de la siguiente forma comprimida, mostrada en la Tabla 1 a continuación, donde los términos x_{n} pueden tomar bien el valor 0 o el 1:
TABLA 1 Esquema para la Generación de las Palabras de Código UVLC según el Modelo Conjunto JM 2.0 del estándar H.26L
1
La Tabla 2 presenta las primeras 16 palabras de código UVLC, generadas según el esquema presentado en la Tabla 1, mientras que la Tabla 3 muestra algunas de las distintas correspondencias entre símbolos de datos y palabras de código proporcionadas según el estándar H.26L. Para una descripción completa de las correspondencias, el lector debería remitirse nuevamente al Borrador de Trabajo Número 2, Doc. JVT-B118, Equipo de Vídeo Conjunto (JVT) de los grupos ISO/IEC MPEG e ITU-T VCEG Pattaya, 2ª Reunión del JVT, Ginebra, Suiza, 29 de enero - 1 de febrero, 2002.
TABLA 2 Las primeras 16 palabras de código UVLC del Modelo Conjunto JM 2.0 del estándar H.26L, generadas según el esquema presentado en la Tabla 1
2
TABLA 3 Ejemplos de correspondencias entre símbolos de datos y palabras de código UVLC según lo definido en el estándar H.26L, TML-5
4
\newpage
TABLA 3 (continuación)
5
\vskip1.000000\baselineskip
El esquema de codificación universal de longitud variable adoptado en el estándar H.26L proporciona un cierto número de ventajas técnicas. En particular, el empleo de un único conjunto de palabras de código VLC, que pueden construirse según una regla sencilla, tal como aquella presentada en la Tabla 1, permite que las palabras de código se creen bit a bit. Esto obvia la necesidad de almacenamiento de una tabla de palabras de código en el codificador y descodificador, y así reduce los requisitos de memoria tanto del codificador como del descodificador. Debería observarse, por supuesto, que en implementaciones alternativas, las tablas de palabras de código pueden generarse y almacenarse en el codificador y el descodificador. Las distintas correspondencias entre símbolos de datos y palabras de código permiten al menos una adaptación limitada del esquema de codificación UVLC a las distintas propiedades estadísticas de los diversos tipos de datos relacionados con la imagen y la información de control que se codifican por entropía. Las diversas correspondencias entre símbolos de datos y palabras de código pueden almacenarse en el codificador y el descodificador, y de esta manera no hay ninguna necesidad de transmitir la información de correspondencia en el flujo de bits desde el codificador al descodificador. Esto ayuda a mantener la tolerancia a errores.
\global\parskip1.000000\baselineskip
El esquema de codificación por entropía UVLC, sin embargo, padece de algunas desventajas. En particular, las palabras de código fijas y el grado limitado de adaptabilidad proporcionado por las distintas correspondencias entre símbolos de datos y palabras de código dan como resultado, inevitablemente, una compresión de datos menos que óptima. Esto es debido al hecho de que, en la codificación de imágenes, la frecuencia de ocurrencia (es decir, la probabilidad) de distintos coeficientes de transformación y, por ello, la probabilidad de distintos pares de (racha, nivel), cambia según el contenido de imágenes y el tipo de imagen que se está codificando. Así, si se emplea un único conjunto de palabras de código de longitud variable y se proporciona una única correspondencia entre los símbolos de datos a codificar/descodificar y los VLC, no puede lograrse, en general, una eficiencia óptima de codificación.
Por esta razón, se han propuesto modificaciones del esquema básico de codificación UVLC. Más específicamente, se ha sugerido incluir más de un conjunto de palabras de código VLC. Una tal propuesta fue efectuada por Gisle Bjontegaard en el documento Q. 15/SG16 "Use of Adaptive Switching Between Two VLCs for INTRA Luma Coefficients" ["Empleo de la Conmutación Adaptable entre dos VLC para Coeficientes INTRA-Lum"], Doc. Q15-K-30, Agosto de 2000. Esta propuesta sugería el empleo de un segundo conjunto de palabras de código CLV para la codificación por entropía de ciertos tipos de información. Según el documento Q15-K-30, el segundo conjunto propuesto de palabras de código VLC, denominado VLC2, se construye según el esquema mostrado más adelante en la Tabla 4. Se utiliza, en particular, para codificar los valores de racha y nivel asociados a coeficientes de transformación cuantizados de los bloques de luminosidad INTRA-codificados de 4x4 píxeles escaneados utilizando el esquema de doble escaneo en zig-zag según el estándar H.26L. La Tabla 5 muestra, de forma explícita, las primeras 16 palabras de código de VLC2.
TABLA 4 Esquema para la generación de palabras de código VLC2 según documento Q15-K-30 de Q.15/SG16
6
TABLA 5 Las primeras 16 palabras de código VLC2 del documento Q15-K-30 de Q.15/SG16, generadas según el esquema presentado en la Tabla 4
7
8
Como puede verse comparando respectivamente las Tablas 4 y 5 con las Tablas 1 y 2, la palabra de código más corta de VLC2 tiene dos bits, frente al único bit adjudicado a la palabra de código más corta en el conjunto original de palabras de código UVLC. Debido al requisito general de descodificabilidad, en cuanto a que ninguna palabra de código CLV puede ser un prefijo de ninguna otra, este cambio tiene un significativo efecto sobre la estructura de las otras palabras de código VLC2. En particular, la asignación de dos bits a la palabra de código más corta permite que las palabras de código con mayores índices se representen con menos bits. Por ejemplo, con referencia a la Tabla 2, puede verse que la palabra de código UVLC con índice 7 tiene 7 bits, mientras que la palabra de código VLC2 con índice 7 tiene sólo 6 bits.
También se ha observado que hay una fuerte correlación entre el número de coeficientes no nulos dentro de un bloque y los posibles pares (racha, nivel) en el mismo bloque. Observe que el número de coeficientes no nulos en un bloque está acotado por el tamaño del bloque de transformación, p. ej., por 16 para una transformación 4x4. Análogamente, el valor de racha está acotado por el tamaño de bloque de transformación, p. ej., por 15 para la transformación 4x4. Cuando el número de coeficientes no nulos es grande, digamos, cercano al tamaño total de la formación, se observa que los pares (racha, nivel) con un valor pequeño de racha y un valor alto de nivel tienen mayor probabilidad. Por ejemplo, para una transformación 4x4 con 15 coeficientes no nulos, racha sólo puede tomar valores en la gama [0, 1].
Sobre la base de estas observaciones, la propuesta efectuada por Karczewicz, "VLC Coefficients Coding for High Bit-Rate" ["Codificación de coeficientes VLC para alta velocidad de bits"], Doc. JVT-B072, 2ª Reunión del Equipo de Vídeo Conjunto (JVT), Ginebra, 29 de enero - 1 de febrero, 2002, sugería un procedimiento de codificación de longitud variable en el cual se proporciona una tabla de búsqueda por separado, correspondiente a los distintos números de coeficientes de transformación cuantizados con valores no nulos. Según esta propuesta, las palabras de código y las correspondencias entre los pares (racha, nivel) y las palabras de código para cada una de las tablas se diseñan a fin de proporcionar una óptima compresión de datos cuando se aplican a un conjunto de pares (racha, nivel) derivados de una formación de valores de coeficientes de transformación cuantizados que tienen un número especificado de coeficientes con valores no nulos. La información acerca de la variación de las propiedades estadísticas de los pares (racha, nivel) con respecto al número de coeficientes de transformación cuantizados con valores no nulos se obtiene empíricamente, por ejemplo, codificando un cierto número de imágenes de prueba ("de entrenamiento") o secuencias de vídeo por adelantado. Las palabras de código VLC y las correspondencias entre las palabras de código pueden diseñarse y almacenarse luego como una o más tablas de búsqueda en el codificador.
Los detalles específicos del algoritmo propuesto por Karczewicz son los siguientes: después de que se ha codificado por transformación un bloque de píxeles de imagen o de valores de errores de predicción, para formar una matriz bidimensional de valores de coeficientes de transformación, y de que se ha cuantizado cada uno de los valores de coeficientes, se determina el número de valores de coeficientes cuantizados no nulos en la matriz. Un valor, denominado N_{c}, se asigna a ese número y se utiliza para indicar explícitamente el número de valores de coeficientes no nulos en la matriz. De esta manera, ya no se requiere un símbolo de FDB (por ejemplo, un valor de nivel igual a cero). Luego, cada par (racha, nivel) en el bloque en cuestión se asocia a palabras de código utilizando una tabla de búsqueda que define la correspondencia entre los pares (racha, nivel) y las palabras de código, seleccionándose la tabla de búsqueda según el valor de N_{c}.
Ambos procedimientos descritos anteriormente de la codificación VLC, en los cuales las palabras de código se seleccionan por conmutación basada en el contexto entre más de un conjunto de palabras de código, proporcionan una mejora en la eficiencia de la compresión de datos, en comparación con los procedimientos en los cuales se utiliza un único conjunto de palabras de código VLC. Sin embargo, en muchas aplicaciones de compresión de datos y, en particular, en aplicaciones relacionadas con la codificación de vídeo, hay un deseo continuado de mejorar la eficiencia de la compresión de datos. Así, aún hay considerable interés en el desarrollo de nuevos procedimientos de codificación de longitud variable que brinden adaptabilidad mejorada al tipo y a las propiedades estadísticas de los símbolos de datos a codificar, manteniendo a la vez una complejidad de cálculo baja, bajos requisitos de memoria y una buena tolerancia a errores. Es en este contexto que se ha desarrollado el procedimiento según la presente invención.
El documento de Kurceren R. et al: "New Results on Improved CABAC" ["Nuevos resultados sobre el CABAC mejorado"], Doc, JVT-B101, 2ª Reunión, Ginebra 29.01 - 01.02.2002, se refiere a un Codificador Aritmético Binario Adaptable basado en el Contexto (CABAC) y revela nuevos resultados sobre el CABAC mejorado. Se proponen en el documento nuevos elementos de codificación y nuevos modelos de contexto para mejorar la eficiencia de codificación del CABAC. Esto se logra introduciendo un elemento de codificación adicional, llamado TOTAL COEF, que indica los números de coeficientes no nulos en un bloque dado. El documento también propone explotar las redundancias dadas entre símbolos en la codificación por transformación de una manera más eficiente, utilizando modelos de contexto adecuadamente definidos. Los nuevos elementos de codificación TOTAL COEF se utilizan en la codificación del elemento RACHA.
Para codificar la RACHA, se explotan la información del TOTAL COEF inicialmente codificado y todos los elementos RACHA previamente codificados de un bloque. Esta información se utiliza para truncar la binarización del elemento RACHA (Binarización Truncada). Según Kurceren et al., si hay 10 coeficientes no nulos en un bloque de escaneo único 4x4, entonces, al comienzo de la codificación del elemento RACHA se sabe que el valor máximo de RACHA (MaxRacha) es 6 (= 16 - 10). El valor máximo de RACHA se actualiza después de cada bucle del proceso de codificación. Cuando el valor máximo de RACHA indica que no pueden existir más elementos RACHA con valores no nulos en el bloque actual, la codificación de los elementos RACHA puede detenerse. Por lo tanto, en algunos casos se omite completamente la señalización de elementos RACHA de valor nulo, en particular, cuando ocurren rachas de valor nulo al final del bloque (secuencia) de valores de RACHA a codificar. Debería apreciarse que esta adaptación basada en MaxRacha trunca, es decir, acorta el proceso de codificación y que no afecta las probabilidades asignadas a cada elemento RACHA sucesivo que se codifica. Debería subrayarse que, según Kurceren et al., todos los elementos RACHA de un bloque se codifican juntos como una única palabra de código que representa un valor decimal entre 0 y 1. Al utilizar el truncado, el número de decimales en la palabra de código podría ser menor que en una palabra de código generada sin truncar.
\vskip1.000000\baselineskip
Resumen de la invención
La invención se refiere, en general, a la codificación con longitud variable de símbolos de datos representados como pares (racha, nivel). Implica el empleo de al menos dos correspondencias entre símbolos de datos y palabras de código VLC, y define reglas para conmutar entre las correspondencias, que tienen en cuenta las propiedades estadísticas de los símbolos de datos a codificar con longitud variable. De esta manera, se obtiene una eficiencia mejorada en la compresión de datos, en comparación con los procedimientos de codificación VLC que utilizan correspondencias fijas entre los símbolos de datos y las palabras de código. Las reglas de conmutación se diseñan de forma tal que un flujo de bits que comprende palabras de código VLC formadas según el procedimiento inventivo puede descodificarse sin requerir que se incluya ninguna información con respecto a la selección de la correspondencia en el flujo de bits. En otras palabras, no hay ninguna necesidad de proporcionar una indicación explícita de la correspondencia utilizada para genera cada palabra de código en el flujo de datos. Esta propiedad mejora la eficiencia de la compresión de datos.
En particular, la presente invención propone nuevos procedimientos para la codificación de coeficientes de transformación cuantizados, a fin de mejorar la eficiencia de codificación. Más específicamente, un objetivo particular de la invención es proporcionar esquemas nuevos y más eficientes para la codificación de los pares (racha, nivel) que representan coeficientes de transformación cuantizados con valores no nulos. Como el procedimiento propuesto por Karczewicz en el documento "VLC Coefficients Coding for High Bit-Rate" ["Codificación de coeficientes VLC para alta velocidad de bits"], Doc. JVT-B072, 2ª Reunión del Equipo Conjunto de Vídeo (JVT), Ginebra, Suiza, 29 de enero - 1 de febrero, 2002, la presente invención se basa en la observación de que el número de coeficientes con valores no nulos en un bloque de coeficientes de transformación, así como el valor de racha, está acotado por el tamaño del bloque de transformación. Esta observación, y el análisis ulterior de los codificadores que operan sobre imágenes del mundo real, demuestran que hay una correlación entre el número de coeficientes no nulos en un bloque y los valores de racha del bloque en cuestión. En particular, según se codifican más y más pares (racha, nivel) de un bloque, el número posible de combinaciones racha-nivel comienza a disminuir.
Así, el procedimiento de codificación VLC según la invención tiene en cuenta el hecho de que según se asignan los sucesivos pares (racha, nivel) a las palabras de código, la gama posible de valores de racha asociados al siguiente par (racha, nivel) a codificar se torna más limitada.
El hecho de que los posibles valores para la racha cambian con cada codificación de un par (racha, nivel) puede utilizarse con ventaja durante la asignación de índices de pares (racha, nivel) a números de código.
Más específicamente, según una realización de la invención, se proporcionan al menos dos conjuntos de correspondencias para relacionar los pares (racha, nivel) con los números de código. Cada par (racha, nivel) se asocia primero con un número de código utilizando la tabla de correspondencia, seleccionada como una entre los al menos dos conjuntos de correspondencias sensibles al valor de max_racha, que define el máximo valor que una racha puede tomar. Max_racha se inicializa considerando el número de coeficientes de valores no nulos dentro del bloque y se actualiza después de la codificación de cada par (racha, nivel). El siguiente ejemplo ilustra el caso:
Supongamos que un bloque de coeficientes de transformación cuantizados tiene 5 coeficientes no nulos con los pares de (racha, nivel) (2,1), (3,2), (4,3), (2,3) y (1,2). Debería observarse aquí que, normalmente, los valores de racha y de nivel para un coeficiente dado se ordenan de forma tal que el valor del nivel precede al valor de racha asociado. Por ello, en los pares (racha, nivel) presentados anteriormente, los valores del nivel son los primeros números de cada par (2, 3, 4, 2, 1), y los valores de racha son los últimos números de cada par (1, 2, 3, 3, 2). Al comienzo del proceso de codificación, dado que hay 5 coeficientes no nulos y que puede haber a lo sumo 18 tales coeficientes, racha puede tomar un valor de 11 a lo sumo. Indicando este máximo valor posible de racha como max_racha, puede verse que, después de codificar el primer par (racha, nivel), es decir, (2,1), max_racha disminuirá, y más precisamente se convertirá en 10, valor obtenido al actualizar el valor anterior de max_racha, restando el valor actual de racha. Más específicamente, max_racha se actualiza según:
max_racha = max_racha - racha
donde max_racha es inicializado con 18 - N_{c} al comienzo de la codificación del bloque.
Según un primer aspecto de la invención, se proporciona un procedimiento de codificación de un conjunto de símbolos de datos según lo definido por la reivindicación 1.
Según un segundo aspecto de la invención, se proporciona un procedimiento de descodificación de un conjunto de palabras de código, según lo definido por la reivindicación 10.
Según un tercer aspecto de la invención, se proporciona un codificador para codificar un conjunto de símbolos de datos según lo definido por la reivindicación 19.
Según un cuarto aspecto de la invención, se proporciona un descodificador para descodificar un conjunto de palabras de código, según lo definido por la reivindicación 28.
Según un quinto aspecto de la invención, se proporciona un terminal multimedia que comprende un codificador según el tercer aspecto de la invención.
Según un sexto aspecto de la invención, se proporciona un terminal multimedia que comprende un descodificador según el cuarto aspecto de la invención.
Preferiblemente, el terminal multimedia según los aspectos quinto y/o sexto de la invención es un terminal multimedia móvil dispuesto para comunicarse con una red de telecomunicaciones móviles por medio de una conexión por radio.
Breve descripción de los dibujos
Se describirán ahora realizaciones de la invención con referencia a los dibujos adjuntos, en los cuales:
La Figura 1 es un diagrama esquemático en bloques de un codificador genérico de vídeo según la tecnología anterior:
La Figura 2 es un diagrama esquemático de bloques de un descodificador genérico de vídeo según la tecnología anterior, y correspondiente al codificador mostrado en la Figura 1;
La Figura 3 ilustra la formación de un macrobloque según la tecnología anterior:
La Figura 4 ilustra un orden ejemplar de escaneo en zig-zag;
La Figura 5 es un diagrama esquemático en bloques de un codificador de vídeo según una realización de la invención;
La Figura 6 es un diagrama esquemático en bloques de un descodificador de vídeo según una realización de la invención, y correspondiente al codificador mostrado en la Figura 5; y
La Figura 7 es un diagrama esquemático en bloques de un terminal de comunicaciones de multimedia en el cual puede implementarse el procedimiento según la invención.
Descripción detallada de la invención
En la siguiente descripción detallada, se presentan realizaciones ejemplares de la invención. Estas se refieren a la codificación con longitud variable de pares (racha, nivel) que representan coeficientes de transformación de valores no nulos, producidos como resultado de la codificación por transformación basada en bloques en un codificador de vídeo, así como su descodificación subsiguiente en un correspondiente descodificador de vídeo. Sin embargo, aquellos versados en la tecnología apreciarán que el procedimiento según la invención puede aplicarse, en general, a la codificación VLC de símbolos de datos que se representan como pares (racha, nivel), o a cualquier representación equivalente de un conjunto de símbolos de datos a codificar.
La Figura 5 es un diagrama esquemático en bloques de un codificador 600 de vídeo en el cual puede aplicarse el procedimiento de codificación según la invención. La estructura del codificador de vídeo mostrado en la Figura 5 es esencialmente idéntica a la del codificador de vídeo de la tecnología anterior mostrado en la Figura 1, con las modificaciones adecuadas a aquellas partes del codificador que efectúan las operaciones de codificación con longitud variable. Todas las partes del codificador de vídeo que implementan funciones y que funcionan de forma idéntica al codificador de vídeo de la tecnología anterior, previamente descrito, se identifican con idénticos números de referencia. En esta descripción se supondrá que todas las operaciones de codificación con longitud variable se realizan en el codificador multiplex 670 de vídeo. Sin embargo, debería apreciarse que, en realizaciones alternativas de la invención, pueden proporcionarse por separado una unidad, o unidades, de codificación con longitud variable. También debería observarse que el procedimiento según la invención puede aplicarse a ciertos símbolos de datos producidos por el codificador de vídeo (p. ej., los pares (racha, nivel) asociados a los coeficientes de transformación de valores no nulos) y que pueden utilizarse otros procedimientos de codificación VLC para codificar otros símbolos de datos.
Se considerará ahora en detalle el funcionamiento del codificador 600 de vídeo. Al codificar una trama de vídeo digital, el codificador 600 funciona de manera similar a la anteriormente descrita con respecto a la Figura 1 para generar tramas de vídeo comprimido INTRA-codificadas e INTER-codificadas. Como se ha explicado anteriormente en el texto, en la modalidad de INTRA-codificación, se aplica una Transformada Discreta de Coseno (TDC) a cada bloque de datos de imagen (valores de píxeles) a fin de producir una correspondiente matriz bidimensional de valores de coeficientes de transformación. La operación de la TDC se lleva a cabo en el bloque 104 de transformación y los coeficientes así producidos se pasan posteriormente al cuantizador 106, donde se cuantizan. En la modalidad de INTER-codificación, la transformación TDC realizada en el bloque 104 se aplica a bloques de valores de errores de predicción. Los coeficientes de transformación producidos como resultado de esta operación también se pasan a un cuantizador 106, donde también son cuantizados.
Debería observarse que las tramas INTER-codificadas pueden contener bloques de imagen INTRA-codificada y, además, que, en algunas situaciones, la codificación por transformación no se aplica a bloques de imagen específicos. Por ejemplo, si se utiliza la INTRA-predicción en la modalidad de INTRA-codificación, algunos bloques de imagen se predicen en el codificador a partir de uno o más bloques de imagen anteriormente codificados. En este caso, el codificador proporciona al descodificador una indicación de los bloques anteriores a emplear en la predicción y no emite ningún dato de coeficientes de transformación. Además, en la modalidad de INTER-codificación, la misma diferencia entre la predicción para un cierto bloque y los datos de imagen del bloque puede ser tan pequeña que es ventajoso, en términos de la compresión de datos, no transmitir ninguna información de errores de predicción. En consecuencia, el procedimiento de codificación VLC según la invención se aplica a aquellos bloques de imagen que se someten a la codificación por transformación y a la posterior cuantización de coeficientes de transformación.
Según la invención, cuando el codificador multiplex 670 de vídeo recibe un bloque (matriz bidimensional) de coeficientes de transformación cuantizados, determina el número de coeficientes con valores no nulos en la matriz, N_{c}, y una indicación de este número se transmite al descodificador en el flujo 635 de bits. En una realización preferida de la invención, N_{c} se codifica con longitud variable antes de la transmisión. En realizaciones alternativas, puede transmitirse como tal o bien puede aplicarse otro procedimiento de codificación.
El codificador multiplex 670 de vídeo representa a continuación los coeficientes con valores no nulos como pares (racha, nivel). Más específicamente, la matriz bidimensional de coeficientes de transformación cuantizados se escanea primero utilizando un orden de escaneo predefinido, tal como el mostrado en la Figura 4, a fin de producir un vector unidimensional ordenado. Cada valor de coeficiente no nulo en el vector unidimensional ordenado se representa entonces con un valor de racha y un valor de nivel, donde el valor de nivel representa el valor del coeficiente y el valor de racha representa el número de coeficientes nulos consecutivos que preceden al coeficiente con valor no nulo.
El codificador multiplex 670 de vídeo aplica entonces la codificación con longitud variable a los valores de racha y nivel, de tal manera que se asigne una única palabra de código VLC a cada par (racha, nivel). Según una realización preferida de la invención, los pares (racha, nivel) se codifican seleccionando una correspondencia distinta de pares (racha, nivel) con números de código, considerando la máxima racha (indicada como max_racha) posible antes de codificar el símbolo. Al codificar el primer par (racha, nivel) en un bloque de coeficientes de transformación cuantizados, max_racha se fija igual al máximo número posible de coeficientes de valor no nulo que pueden estar presentes en un bloque, menos el valor de N_{c} anteriormente determinado. De esta manera, para un bloque 4x4, max_racha se inicializa como:
(a)max_racha = 16 - N_{c}
El siguiente seudo-código ejemplar proporciona un procedimiento para asignar una palabra de código a un par (racha, nivel) según la invención:
(2)índice_RN = RN_índice[max_racha, nivel, racha];
donde RN_índice asocia valores enteros de valores de racha-nivel a distintos números de código según el valor de max_racha. Se inicializa después de ejecutar simulaciones utilizando material de entrenamiento. Finalmente, Índice_RN se codifica con una de las palabras de código VLC enumeradas en la Tabla 2 o la Tabla 5.
Más específicamente, la función de correspondencia RN_índice se construye empíricamente a partir de una o más secuencias de prueba de datos de vídeo, analizando la probabilidad de la ocurrencia de distintos pares (racha, nivel) para cada valor posible de max_racha. Los números de código (es decir, los valores de Índice_RN) generados aplicando el procedimiento de correspondencia se emplean entonces para seleccionar palabras de código representativas de los pares (racha, nivel) en una tabla de palabras de código. Las realizaciones preferidas de la invención utilizan bien la tabla de palabras de código mostrada anteriormente en la Tabla 2, o bien la mostrada en la Tabla 5.
Las Tablas 6 y 7 presentan correspondencias ejemplares de pares (racha, nivel) para codificar números según el valor de max_racha. En ambas tablas las filas corresponden a valores de nivel y las columnas corresponden a valores de racha, mientras que las entradas en cada celda indican el número de código de la palabra de código VLC para ese par racha-nivel específico (es decir, combinación de valores de racha y nivel). Al par más probable se asigna el número 1 de código, al segundo par más probable, el número 2 de código, etc. Tanto la Tabla 6 como la Tabla 7 enumeran los primeros 15 pares más probables. La Tabla 6 ilustra el caso en que max_racha es 8, mientras que la Tabla 7 muestra la situación cuando max_racha es 3.
TABLA 6 max_racha = 8
9
TABLA 7 max_racha = 3
10
Una vez seleccionada una palabra de código VLC para representar un par (racha, nivel) específico, utilizando el procedimiento de correspondencia anteriormente descrito, el codificador multiplex 670 de vídeo transmite la palabra de código al descodificador en el flujo 635 de bits. Si hay más pares (racha, nivel) a codificar para el bloque actual, actualiza entonces max_racha para su empleo con respecto a la codificación del siguiente par (racha, nivel), restando el valor actual de racha, es decir:
max_racha = max_racha - racha
El procedimiento de codificación continúa hasta que todos los pares (racha, nivel) para un bloque dado han sido representados como palabras de código, tras lo cual el codificador multiplex 670 de vídeo recibe el siguiente bloque de coeficientes de transformación cuantizados para codificar, y repite el proceso de codificación para el siguiente bloque.
Se describirá ahora el funcionamiento de un descodificador 700 de vídeo según la invención, con referencia a la Figura 6. La estructura del descodificador de vídeo ilustrado en la Figura 6 es esencialmente idéntica a la del descodificador de vídeo de la tecnología anterior mostrado en la Figura 2, con las modificaciones adecuadas a aquellas partes del descodificador que realizan las operaciones de descodificación de longitud variable. Todas las partes del descodificador de vídeo que implementan funciones y que funcionan de manera idéntica al descodificador de vídeo de la tecnología anterior descrito previamente se identifican con idénticos números de referencia. En la descripción siguiente se supone que todas las operaciones de descodificación de longitud variable se llevan a cabo en el descodificador multiplex 770 de vídeo. Sin embargo, debería apreciarse que en realizaciones alternativas de la invención puede(n) proporcionarse por separado una unidad, o unidades, de descodificación de longitud variable.
Se describirá ahora en detalle el funcionamiento del descodificador de vídeo. Aquí se supone que el descodificador de vídeo de la Figura 6 corresponde al descodificador descrito con respecto a la Figura 5 y que, por lo tanto, es capaz de recibir y descodificar el flujo 635 de bits transmitido por el codificador 600. En el descodificador, el flujo de bits es recibido, y separado en sus partes constituyentes, por el descodificador multiplex 770 de vídeo. Como se ha explicado con respecto a la descripción primera de la tecnología anterior, los datos de vídeo comprimido extraídos del flujo de bits se procesan macrobloque a macrobloque. Según la invención, los datos de vídeo comprimido para un macrobloque INTRA-codificado comprenden palabras de código de longitud variable que representan pares (racha, nivel) codificados según la VLC para cada bloque del macrobloque, junto con una indicación del número N_{c} de coeficientes de transformación cuantizados con valores no nulos presentes en cada bloque, e información de control codificada (por ejemplo, con respecto al parámetro de cuantización PC). Los datos de vídeo comprimido para un macrobloque INTER-codificado comprenden información de errores de predicción codificados según la VLC para cada bloque (que comprende pares (racha, nivel) codificados según la VLC y una indicación de N_{c} para cada bloque), información del vector de movimiento para el macrobloque e información de control codificada.
El valor de N_{c} y los pares (racha, nivel) codificados según la VLC para cada bloque de un macrobloque INTRA-codificado, y para cada bloque de datos de errores de predicción asociados al macrobloque INTER-codificado, se tratan de forma idéntica.
Más específicamente, al descodificar los pares (racha, nivel) codificados según la VLC para un bloque de imagen INTRA- o INTER-codificado, el descodificador multiplex 770 de vídeo determina primero el número de coeficientes de transformación cuantizados con valores no nulos en el bloque. Como se ha explicado anteriormente, la información relacionada con el número de coeficientes de transformación cuantizados con valores no nulos, N_{c}, es insertado en el flujo 635 de bits por el codificador 600. El descodificador multiplex 770 de vídeo del descodificador 700 extrae esta información del flujo de bits recibidos.
El descodificador multiplex 770 de vídeo comienza entonces a descodificar los pares (racha, nivel) codificados según la VLC para el bloque de imagen. Según la invención, la operación de descodificación se lleva a cabo de manera análoga al procedimiento de codificación realizado en el codificador y anteriormente descrito. Más específicamente, al descodificar la primera palabra de código de longitud variable asociada a un bloque de imagen específico, el descodificador multiplex 770 de vídeo inicializa el valor de max_racha fijándolo igual al máximo número de coeficientes con valores no nulos que pueden estar presentes en un bloque, menos el valor de N_{c} relacionado con el bloque en cuestión, que fue extraído del flujo de bits recibidos. Luego determina el número de código correspondiente a la palabra de código recibida y, según el valor de max_racha, selecciona una tabla de correspondencia que relacione el número de código con una combinación específica de valores de racha y nivel, correspondiendo las tablas de correspondencia utilizadas en el descodificador a aquellas utilizadas para generar las palabras de código en el codificador.
Una vez recuperados los valores de racha y nivel correspondientes al primer coeficiente de transformación cuantizado con valor no nulo del bloque, el descodificador multiplex 770 de vídeo actualiza el valor de max_racha restando el valor de racha recién determinado, y comienza a descodificar la siguiente palabra de código para el bloque. Este proceso continúa hasta que todas las palabras de código que representan el bloque de imagen específico están descodificadas, tras lo cual el descodificador multiplex 770 de vídeo reconstruye los valores de coeficientes de transformación cuantizados para el bloque a partir de los pares (racha, nivel) descodificados, y los pasa al cuantizador inverso 210. El resto del procedimiento de descodificación de vídeo, por el cual se forman los valores de píxeles reconstruidos para cada bloque de imagen, prosigue según lo descrito con respecto al descodificador 200 de vídeo de la tecnología anterior.
La Figura 7 presenta un dispositivo terminal que comprende equipos de codificación y descodificación de vídeo, que puede adaptarse para funcionar según la presente invención. Más precisamente, la figura ilustra un terminal multimedia 80 implementado según la recomendación H.324 de ITU-T. El terminal puede considerarse como un dispositivo transceptor multimedia. Incluye elementos que capturan, codifican y multiplexan flujos de datos de multimedia para su transmisión mediante una red de comunicaciones, así como elementos que reciben, demultiplexan, descodifican y exhiben el contenido multimedia recibido. La recomendación H.324 de ITU-T define el funcionamiento general del terminal y se refiere a otras recomendaciones que gobiernan el funcionamiento de sus diversas partes constituyentes. Esta clase de terminal multimedia puede utilizarse en aplicaciones en tiempo real, tales como la videotelefonía para conversaciones, o bien aplicaciones no en tiempo real, tal como la recuperación y/o progresión de fragmentos de vídeo, por ejemplo, desde un servidor de contenidos de multimedia en Internet.
En el contexto de la presente invención, debería apreciarse que el terminal H.324 mostrado en la Figura 7 es sólo uno entre un buen número de implementaciones alternativas de terminales multimedia adecuados para la aplicación del procedimiento inventivo. También debería observarse que existe un buen número de alternativas con respecto a la ubicación e implementación del equipo terminal. Como se ilustra en la Figura 7, el terminal multimedia puede situarse en un equipo de comunicaciones conectado con una red telefónica de línea fija, tal como una RTPC (Red Telefónica Pública Conmutada) analógica. En este caso, el terminal multimedia está equipado con un módem 91, conforme a las recomendaciones V.8, V.34 y, optativamente, V.8bis, de ITU-T. Alternativamente, el terminal multimedia puede conectarse con un módem externo. El módem permite la conversión de los datos digitales multiplexados y las señales de control producidas por el terminal multimedia a un formato analógico adecuado para su transmisión por la RTPC. Permite adicionalmente que el terminal multimedia reciba datos y señales de control en formato analógico desde la RTPC y las convierta a un flujo de datos digitales que puede ser demultiplexado y procesado de manera adecuada por el terminal.
Un terminal multimedia H.324 también puede implementarse de forma tal que pueda conectarse directamente con una red digital de línea fija, tal como una RDSI (Red Digital de Servicios Integrados). En este caso, el módem 91 es reemplazado por una interfaz entre el usuario de RDSI y la red. En la Figura 7, esta interfaz entre el usuario de RDSI y la red está representada por un bloque alternativo 92.
Los terminales multimedia H.324 también pueden adaptarse para su empleo en aplicaciones de comunicación móvil. Si se utiliza con un enlace de comunicación inalámbrica, el módem 91 puede ser reemplazado por cualquier interfaz inalámbrica adecuada, como se representa por el bloque alternativo 93 en la Figura 7. Por ejemplo, un terminal multimedia H.324/M puede incluir un transceptor de radio que permite la conexión con la red actual de telefonía móvil GSM de 2ª generación, o con el UMTS (Sistema Universal de Telefonía Móvil) propuesto de 3ª generación.
Debería observarse que en los terminales multimedia diseñados para la comunicación de doble vía, es decir, para la transmisión y recepción de datos de vídeo, es ventajoso proporcionar tanto un codificador de vídeo como un descodificador de vídeo, implementados según la presente invención. Tal par de codificador y descodificador se implementa a menudo como una única unidad funcional combinada, denominada "códec".
Se describirá ahora en mayor detalle un típico terminal multimedia H.324, con referencia a la Figura 7.
El terminal multimedia 80 incluye una gran variedad de elementos denominados "equipo terminal". Esto incluye dispositivos de vídeo, audio y telemáticos, indicados genéricamente con los números de referencia 81, 82 y 83, respectivamente. El equipo 81 de vídeo puede incluir, por ejemplo, una cámara de vídeo para capturar imágenes de vídeo, un monitor para exhibir contenidos de vídeo recibidos y un equipo optativo de procesamiento de vídeo. El equipo 82 de audio incluye, típicamente, un micrófono, por ejemplo, para capturar mensajes hablados, y un altavoz para reproducir el contenido de audio recibido. El equipo de audio también puede incluir unidades adicionales de procesamiento de audio. El equipo telemático 83 puede incluir un terminal de datos, un teclado, una pizarra blanca electrónica o un transceptor de imágenes fijas, tal como una unidad de fax.
El equipo 81 de vídeo está acoplado con un códec 85 de vídeo. El códec 85 de vídeo comprende un codificador de vídeo y un correspondiente descodificador de vídeo, ambos implementados según la invención. Tales codificador y descodificador se describirán en lo que sigue. El códec 85 de vídeo es responsable de codificar datos de vídeo capturados en un formato adecuado para la transmisión posterior por un enlace de comunicaciones, y de descodificar el contenido de vídeo comprimido recibido desde la red de comunicaciones. En el ejemplo ilustrado en la Figura 7, el códec de vídeo se implementa según la recomendación H.26L de ITU-T, con las modificaciones adecuadas para implementar el procedimiento adaptable de codificación de longitud variable según la invención, tanto en el codificador como en el descodificador del códec de vídeo.
El equipo de audio del terminal está acoplado con un códec de audio, indicado en la Figura 7 con el número 86 de referencia. Como el códec de vídeo, el códec de audio comprende un par codificador/descodificador. Convierte los datos de audio capturados por el equipo de audio del terminal a un formato adecuado para su transmisión por el enlace de comunicaciones, y transforma los datos de audio codificados recibidos desde la red a un formato adecuado para la reproducción, por ejemplo, en el altavoz del terminal. La salida del códec de audio se pasa a un bloque 87 de retardo. Esto compensa los retardos introducidos por el proceso de codificación de vídeo y así asegura la sincronización del contenido de audio y vídeo.
El bloque 84 de control del sistema del terminal multimedia controla la señalización de extremo a red, utilizando un protocolo de control adecuado (bloque 88 de señalización) para establecer una modalidad común de operación entre un terminal transmisor y uno receptor. El bloque 88 de señalización intercambia información acerca de las capacidades de codificación y descodificación de los terminales transmisores y receptores, y puede utilizarse para habilitar las diversas modalidades de codificación del codificador de vídeo. El bloque 84 de control del sistema también controla el uso del cifrado de datos. La información con respecto al tipo de cifrado a utilizar en la transmisión de datos se pasa desde el bloque 89 de cifrado a la unidad multiplexadora/demultiplexadora (MUX/DMUX) 90.
Durante la transmisión de datos desde el terminal multimedia, la unidad MUX/DMUX 90 combina flujos de vídeo y audio codificados y sincronizados con datos ingresados desde el equipo telemático 83 y posibles datos de control, a fin de formar un único flujo de bits. La información concerniente al tipo de cifrado (si acaso) de datos a aplicar al flujo de bits, proporcionada por el bloque 89 de cifrado, se utiliza para seleccionar una modalidad de cifrado. De forma correspondiente, cuando se está recibiendo un flujo de bits de multimedia multiplexado y posiblemente cifrado, la unidad MUX/DMUX 90 es responsable de descifrar el flujo de bits, dividiéndolo en sus componentes multimedia constituyentes y pasando esos componentes al códec, o códecs, adecuado(s), y/o al equipo terminal para su descodificación y reproducción.
Debería observarse que los elementos funcionales del terminal multimedia, el codificador de vídeo, el descodificador y el códec de vídeo, según la invención, pueden implementarse como software o hardware dedicado, o una combinación de los dos. Los procedimientos de codificación y descodificación de longitud variable según la invención son especialmente adecuados para la implementación en forma de programa de ordenador que comprende instrucciones legibles por máquina para llevar a cabo las etapas funcionales de la invención. Como tal, el codificador y descodificador de longitud variable según la invención pueden implementarse como código de software almacenado en un medio de almacenamiento, y ejecutarse en un ordenador, tal como un ordenador personal de sobremesa.
Si el terminal multimedia 80 es un terminal móvil, es decir, si está equipado con un transceptor 93 de radio, aquellos versados en la tecnología comprenderán que también puede abarcar elementos adicionales. En una realización, comprende una interfaz de usuario con un visor y un teclado, que permite la operación del terminal multimedia 80 por parte de un usuario, una unidad central de procesamiento, tal como un microprocesador, que controla los bloques responsables de las distintas funciones del terminal multimedia, una memoria RAM de acceso aleatorio, una memoria ROM de sólo lectura, y una cámara digital. Las instrucciones operativas del microprocesador, es decir, el código de programa correspondiente a las funciones básicas del terminal multimedia 80, se almacenan en la memoria ROM de sólo lectura y pueden ejecutarse según lo requerido por el microprocesador, por ejemplo, bajo control del usuario. Según el código de programa, el microprocesador utiliza el transceptor 93 de radio para formar una conexión con una red de comunicación móvil, permitiendo al terminal multimedia 80 transmitir información a, y recibir información desde, la red de comunicación móvil, por una trayectoria de radio.
El microprocesador supervisa el estado de la interfaz de usuario y controla a la cámara digital. En respuesta a un comando del usuario, el microprocesador instruye a la cámara para registrar imágenes digitales en la memoria RAM. Una vez que se captura una imagen o, alternativamente, durante el proceso de captura, el microprocesador segmenta la imagen en segmentos de imagen (por ejemplo, macrobloques) y utiliza el codificador para llevar a cabo la codificación compensada por movimiento de los segmentos, a fin de generar una secuencia de imágenes comprimidas, según se explica en la descripción precedente. Un usuario puede ordenar al terminal multimedia 80 que exhiba las imágenes capturadas en su visor, o que envíe la secuencia de imágenes comprimidas, utilizando el transceptor 93 de radio, a otro terminal multimedia, un videoteléfono conectado con una red de línea fija (RTPC) o algún otro dispositivo de telecomunicaciones. En una realización preferida, la transmisión de datos de imagen se inicia en cuanto se codifica el primer segmento, de forma tal que el destinatario pueda iniciar un correspondiente proceso de descodificación con un mínimo retardo.
Aunque se ha descrito en el contexto de realizaciones específicas, será evidente a aquellos versados en la técnica que puede tener lugar un buen número de modificaciones y cambios diversos a estas revelaciones. Así, si bien la invención ha sido mostrada y descrita específicamente con respecto a una o más realizaciones preferidas de la misma, aquellos versados en la técnica comprenderán que pueden hacerse ciertas modificaciones o cambios.
Una realización alternativa de la invención se basa en la observación de que el escaneo en zig-zag de los coeficientes tiende a ordenar los coeficientes según sus valores, de forma tal que los coeficientes situados antes en el vector unidimensional tienen más probabilidad de tener mayores valores absolutos que los coeficientes situados posteriormente en el vector. Por lo tanto, los valores consecutivos del nivel exhiben una significativa similitud, es decir, dentro de un bloque dado de coeficientes de transformación, el nivel de un coeficiente a codificar, en general, tiene una magnitud esencialmente similar al nivel del coeficiente previamente codificado. Esta realización alternativa explota esta similitud codificando los pares (racha, nivel) según la siguiente relación
(3)Índice_RN = RN_índice[max_racha, nivel, racha, nivel_ant]
Donde nivel_ant es el valor de nivel previamente codificado en el bloque. En comparación con las realizaciones anteriormente descritas, hay un parámetro adicional (esto es, nivel_ant), que afecta a la asignación de valores de índices a los pares (racha, nivel).
Una realización adicional de la invención tiene su base en el hecho de que los valores consecutivos de nivel exhiben una fuerte correlación. Más específicamente, los valores de nivel codificados previamente pueden utilizarse para asignar una guía distinta de códigos de VLC a fin de codificar el símbolo actual, además de utilizarse en la asignación del índice. El siguiente seudo-código ejemplar proporciona un procedimiento para asignar una guía de códigos VLC a un número de código de un par (racha, nivel), hallado empleando una de las realizaciones previamente descritas de la invención:
(4)VLC_N = Nc_asoc[nivel_ant]
Donde nivel_ant es el valor de nivel codificado previamente en el bloque y Nc_asoc es una matriz que asocia valores enteros con distintos códigos VLC disponibles.

Claims (39)

  1. \global\parskip0.900000\baselineskip
    1. Un procedimiento de codificación con longitud variable de un conjunto de símbolos de datos que comprende símbolos de datos de valor nulo y símbolos de datos de valor no nulo, estando el procedimiento caracterizado por:
    -
    representar un símbolo de datos de valor no nulo del conjunto de símbolos de datos por un par de símbolos de datos que representan el símbolo de datos de valor no nulo y un número asociado de símbolos de datos de valor nulo, precedentes o siguientes;
    -
    seleccionar una guía de códigos de longitud variable entre un conjunto de guías de códigos, sobre la base del valor de un símbolo de datos de valor no nulo previamente codificado;
    -
    asignar una palabra de código de la guía de códigos de longitud variable seleccionada, para representar al par de símbolos de datos, realizando una operación de correspondencia, en donde la operación de correspondencia por la cual es asignada dicha palabra de código se adapta según un máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos;
    -
    actualizar el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos con respecto a la asignación de un par de símbolos de datos a una palabra de código, restando dicho número asociado de símbolos de datos de valor nulo, precedentes o siguientes, de dicho máximo número posible de símbolos de datos de valor nulo, a fin de producir un máximo número posible de símbolos de datos de valor nulo actualizado, en donde la operación de correspondencia, por la cual se asigna una palabra de código subsiguiente a un par de símbolos de datos, se adapta según dicho máximo número posible de símbolos de datos de valor nulo actualizado;
    -
    proporcionar una palabra de código que represente el número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos en un flujo de bits codificados.
  2. 2. Un procedimiento de codificación según la reivindicación 1, caracterizado por continuar la codificación hasta que se haya asignado una palabra de código a todos los pares de símbolos de datos de dicho conjunto de símbolos de datos.
  3. 3. Un procedimiento de codificación según la reivindicación 1 o 2, caracterizado porque el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos se determina restando el número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos al número total de símbolos de datos en dicho conjunto.
  4. 4. Un procedimiento de codificación según la reivindicación 1, 2 o 3, caracterizado porque una indicación del número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos se transmite a un correspondiente dispositivo descodificador.
  5. 5. Un procedimiento de codificación según cualquiera de las reivindicaciones 1 a 4, caracterizado porque dicha operación de correspondencia se lleva a cabo seleccionando una tabla de correspondencia específica entre un conjunto de tablas de correspondencia, según, al menos en parte, dicho máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, definiendo cada tabla de correspondencia de dicho conjunto una asignación de símbolos de datos a palabras de código.
  6. 6. Un procedimiento de codificación según la reivindicación 5, caracterizado porque cada una de dichas tablas de correspondencia define una asignación de pares de símbolos de datos a palabras de código.
  7. 7. Un procedimiento de codificación según la reivindicación 5, caracterizado porque cada una de dichas tablas de correspondencia define una asignación de pares de símbolos de datos a números de código, representando cada número de código una palabra de código en un conjunto de palabras de código, y utilizándose como referencia dentro de un conjunto de palabras de código, definiendo por ello una asignación de pares de símbolos de datos a palabras de código.
  8. 8. Un procedimiento de codificación según cualquiera de las reivindicaciones 1 a 7, caracterizado porque dicho conjunto de símbolos de datos representa valores de coeficientes de transformación.
  9. 9. Un procedimiento de codificación según cualquiera de las reivindicaciones 1 a 9, utilizado en un codificador de vídeo.
  10. 10. Un procedimiento de descodificación con longitud variable de un conjunto de palabras de código que representan un conjunto de símbolos de datos, comprendiendo dicho conjunto de símbolos de datos símbolos de datos de valor nulo y símbolos de datos de valor no nulo, caracterizado por
    -
    recibir una palabra de código que representa un número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos en un flujo de bits codificados;
    \global\parskip1.000000\baselineskip
    -
    seleccionar una guía de códigos de longitud variable entre un conjunto de guías de códigos, sobre la base del valor de un símbolo de datos de valor no nulo previamente codificado;
    -
    recibir una palabra de código que representa un par de símbolos de datos, representando el par de símbolos de datos un símbolo de datos de valor no nulo y un número asociado de símbolos de datos de valor nulo, precedentes o siguientes;
    -
    descodificar dicha palabra de código utilizando la guía de códigos de longitud variable seleccionada para recuperar dicho par de símbolos de datos, realizando una operación de correspondencia inversa, en donde la operación de correspondencia inversa, por la cual se descodifica el par de símbolos de datos, depende de un máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos;
    -
    actualizar el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos con respecto a la descodificación de una palabra de código recibida, a fin de recuperar un par de símbolos de datos representado por dicha palabra de código, restando dicho número asociado de símbolos de datos de valor nulo, precedentes o siguientes, de dicho máximo número posible de símbolos de datos de valor nulo, para obtener un máximo número posible de símbolos de datos de valor nulo actualizado, en donde la operación de correspondencia inversa, por la cual se descodifica una palabra de código subsiguiente, para recuperar un par de símbolos de datos representados por dicha palabra de código subsiguiente, se adapta según dicho máximo número posible de símbolos de datos de valor nulo.
  11. 11. Un procedimiento de descodificación según la reivindicación 10, estando el procedimiento caracterizado por recibir una indicación del número de símbolos de datos no nulos en dicho conjunto de símbolos de datos.
  12. 12. Un procedimiento de descodificación según la reivindicación 10 u 11, caracterizado porque el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos se determina restando el número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos del número total de símbolos de datos en dicho conjunto.
  13. 13. Un procedimiento de descodificación según la reivindicación 11 o 12, caracterizado porque la indicación del número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos es recibido desde un correspondiente dispositivo de codificación.
  14. 14. Un procedimiento de descodificación según cualquiera de las reivindicaciones 10 a 13, caracterizado porque dicha operación de correspondencia inversa se lleva a cabo seleccionando una tabla de correspondencia inversa específica entre un conjunto de tablas de correspondencia inversa, según dicho máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, definiendo cada tabla de correspondencia inversa de dicho conjunto una asignación de palabras de código a símbolos de datos.
  15. 15. Un procedimiento de descodificación según la reivindicación 14, caracterizado porque cada una de dichas tablas de correspondencia inversa define una asignación de palabras de código a pares de símbolos de datos.
  16. 16. Un procedimiento de descodificación según la reivindicación 14, caracterizado porque dicha palabra de código recibida se descodifica para recuperar un número de código, utilizándose dicho número de código como referencia dentro de la tabla de correspondencia inversa específica seleccionada, al menos en parte, según dicho máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, recuperando por ello el par de símbolos de datos representados por dicha palabra de código.
  17. 17. Un procedimiento de descodificación según cualquiera de las reivindicaciones 10 a 16, caracterizado porque dicho conjunto de símbolos de datos representa valores de coeficientes de transformación.
  18. 18. Un procedimiento de descodificación según cualquiera de las reivindicaciones 10 a 17, utilizado en un descodificador de vídeo.
  19. 19. Un codificador de longitud variable para codificar un conjunto de símbolos de datos que comprenden símbolos de datos de valor nulo y símbolos de datos de valor no nulo, caracterizado porque el codificador está adaptado para representar un símbolo de datos de valor no nulo del conjunto de símbolos de datos con un par de símbolos de datos, que representan los símbolos de datos de valor no nulo y un número asociado de símbolos de datos de valor nulo, precedentes o siguientes, y porque el codificador comprende:
    -
    un medio para seleccionar una guía de códigos de longitud variable entre un conjunto de guías de códigos, sobre la base del valor de un símbolo de datos de valor no nulo previamente codificado;
    -
    un medio para asignar una palabra de código de la guía de códigos de longitud variable seleccionada, a fin de representar el par de símbolos de datos realizando una operación de correspondencia, en donde dicho medio para asignar una palabra de código está organizado para adaptar la operación de correspondencia, por la cual se asigna dicha palabra de código, según un máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos;
    -
    un medio para actualizar el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, con respecto a la asignación de un par de símbolos de datos a una palabra de código, restando dicho número asociado de símbolos de datos de valor nulo, precedentes o siguientes, de dicho máximo número posible de símbolos de datos de valor nulo, para obtener un máximo número posible de símbolos de datos de valor nulo actualizado, en donde dicho medio para asignar una palabra de código a fin de representar un par de símbolos de datos está dispuesto para adaptar la operación de correspondencia, por la cual se asigna una palabra de código subsiguiente a un par de símbolos de datos, según dicho máximo número posible de símbolos de datos de valor nulo actualizado; y
    -
    un medio para proporcionar una palabra de código que representa el número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos en un flujo de bits codificados.
  20. 20. Un codificador según la reivindicación 19, caracterizado porque está dispuesto para continuar la codificación hasta que se haya asignado una palabra de código a todos los pares de símbolos de datos de dicho conjunto de símbolos de datos.
  21. 21. Un codificador según la reivindicación 19 o 20, caracterizado porque está dispuesto para determinar el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, restando el número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos del número total de símbolos de datos en dicho conjunto.
  22. 22. Un codificador según la reivindicación 19, 20 o 21, caracterizado porque está dispuesto para transmitir una indicación del número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos a un correspondiente dispositivo descodificador.
  23. 23. Un codificador según cualquiera de las reivindicaciones 12 a 22, caracterizado porque dicho medio para asignar una palabra de código, a fin de representar un par de símbolos de datos, está dispuesto para realizar dicha operación de correspondencia seleccionando una tabla de correspondencia específica entre un conjunto de tablas de correspondencia, según, al menos en parte, dicho máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, definiendo cada tabla de correspondencia una asignación de símbolos de datos a palabras de código.
  24. 24. Un codificador según la reivindicación 23, caracterizado porque cada una de dichas tablas de correspondencia define una asignación de pares de símbolos de datos a palabras de código.
  25. 25. Un codificador según la reivindicación 23, caracterizado porque cada una de dichas tablas de correspondencia define una asignación de pares de símbolos de datos a números de código, representando cada número de código una palabra de código, a fin de representar un par de símbolos de datos en un conjunto de palabras de código, en donde dicho medio para asignar una palabra de código está dispuesto para utilizar dichos números de código como referencias dentro del conjunto de palabras de código, definiendo por ello una asignación de pares de símbolos de datos a palabras de código.
  26. 26. Un codificador según cualquiera de las reivindicaciones 19 a 25, caracterizado porque dicho conjunto de símbolos de datos representa valores de coeficientes de transformación.
  27. 27. Un codificador de vídeo que comprende un codificador según cualquiera de las reivindicaciones 19 a 26.
  28. 28. Un descodificador de longitud variable para descodificar un conjunto de palabras de código que representan un conjunto de símbolos de datos, comprendiendo dicho conjunto de símbolos de datos símbolos de datos de valor nulo y símbolos de datos de valor no nulo, caracterizado porque el descodificador comprende adicionalmente:
    -
    un medio para recibir una palabra de código que representa el número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos en un flujo de bits codificados;
    -
    un medio para seleccionar una guía de códigos de longitud variable entre un conjunto de guías de código, sobre la base del valor de un símbolo de datos de valor no nulo previamente codificado;
    -
    un medio para recibir una palabra de código que representa a un par de símbolos de datos, representando el par de símbolos de datos un símbolo de datos de valor no nulo y un número asociado de símbolos de datos de valor nulo, precedentes o siguientes;
    -
    un medio para descodificar dicha palabra de código recibida utilizando la guía de códigos de longitud variable seleccionada para recuperar dicho par de símbolos de datos, llevando a cabo una operación de correspondencia inversa, en donde dicho medio para descodificar dicha palabra de código está dispuesto para adaptar la operación de correspondencia inversa, por la cual se descodifica el par de símbolos de datos, según un máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos;
    -
    un medio para actualizar el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos con respecto a la descodificación de una palabra de código recibida, a fin de recuperar un par de símbolos de datos representados por dicha palabra de código, restando dicho número asociado de símbolos de datos de valor nulo, precedentes o siguientes, de dicho máximo número posible de símbolos de datos de valor nulo, para obtener un máximo número posible de símbolos de datos de valor nulo actualizado, en donde dicho medio para descodificar una palabra de código está dispuesto para adaptar la operación de correspondencia inversa, por la cual se descodifica una palabra de código subsiguiente, a fin de recuperar un par de símbolos de datos representados por dicha palabra de código subsiguiente, según dicho máximo número posible de símbolos de datos de valor nulo actualizado.
  29. 29. Un descodificador según la reivindicación 28, caracterizado porque está dispuesto para recibir una indicación de un número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos.
  30. 30. Un descodificador según la reivindicación 28 o 29, caracterizado porque está dispuesto para determinar el máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, restando el número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos del número total de símbolos de datos en dicho conjunto.
  31. 31. Un descodificador según la reivindicación 29 o 30, caracterizado porque está dispuesto para recibir dicha indicación del número de símbolos de datos de valor no nulo en dicho conjunto de símbolos de datos desde un correspondiente dispositivo codificador.
  32. 32. Un descodificador según cualquiera de las reivindicaciones 28 a 31, caracterizado porque dicho medio para descodificar una palabra de código está dispuesto para realizar dicha operación de correspondencia inversa, seleccionando una tabla de correspondencia inversa específica entre un conjunto de tablas de correspondencia inversa, según, al menos en parte, dicho máximo posible número de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, definiendo cada tabla de correspondencia inversa de dicho conjunto una asignación de palabras de código a símbolos de datos.
  33. 33. Un descodificador según la reivindicación 32, caracterizado porque cada una de dichas tablas de correspondencia inversa define una asignación de palabras de código a pares de símbolos de datos.
  34. 34. Un descodificador según la reivindicación 32, caracterizado porque dicho medio para descodificar una palabra de código está dispuesto para descodificar una palabra de código recibida a fin de recuperar un número de código, y para utilizar dicho número de código como una referencia dentro de la tabla de correspondencia inversa específica seleccionada, según, al menos en parte, dicho máximo número posible de símbolos de datos de valor nulo en dicho conjunto de símbolos de datos, recuperando por ello un par de símbolos de datos.
  35. 35. Un descodificador según cualquier reivindicación 28 a 34, caracterizado porque dicho conjunto de símbolos de datos representa valores de coeficientes de transformación.
  36. 36. Un descodificador de vídeo que comprende un descodificador según cualquiera de las reivindicaciones 28 a 35.
  37. 37. Un terminal multimedia que comprende un codificador de vídeo según la reivindicación 27.
  38. 38. Un terminal multimedia que comprende un descodificador de vídeo según la reivindicación 36.
  39. 39. Un terminal multimedia según la reivindicación 37 o 38, caracterizado porque comprende medios para formar un enlace inalámbrico con una red de comunicaciones por radio.
ES03714994T 2002-04-02 2003-04-02 Coeficientes de transformacion de codificacion en codificadores y/o descodificadores de imagenes/video. Expired - Lifetime ES2328916T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US36950002P 2002-04-02 2002-04-02
US369500P 2002-04-02

Publications (1)

Publication Number Publication Date
ES2328916T3 true ES2328916T3 (es) 2009-11-19

Family

ID=28675579

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03714994T Expired - Lifetime ES2328916T3 (es) 2002-04-02 2003-04-02 Coeficientes de transformacion de codificacion en codificadores y/o descodificadores de imagenes/video.

Country Status (12)

Country Link
EP (1) EP1490975B1 (es)
JP (1) JP4234607B2 (es)
KR (1) KR101010722B1 (es)
CN (1) CN100521550C (es)
AT (1) ATE439704T1 (es)
AU (1) AU2003219198A1 (es)
DE (1) DE60328761D1 (es)
ES (1) ES2328916T3 (es)
MX (1) MXPA04009543A (es)
RU (1) RU2335845C2 (es)
WO (1) WO2003084076A1 (es)
ZA (1) ZA200407932B (es)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8401082B2 (en) 2006-03-27 2013-03-19 Qualcomm Incorporated Methods and systems for refinement coefficient coding in video compression
US8848789B2 (en) 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
US7778472B2 (en) 2006-03-27 2010-08-17 Qualcomm Incorporated Methods and systems for significance coefficient coding in video compression
RU2406259C2 (ru) * 2006-03-27 2010-12-10 Квэлкомм Инкорпорейтед Способы и системы для кодирования уточняющих коэффициентов при сжатии видеоданных
CN101444056B (zh) * 2006-05-09 2014-12-10 交互数字技术公司 通用陆地无线电接入的可变反馈
US8325819B2 (en) 2006-10-12 2012-12-04 Qualcomm Incorporated Variable length coding table selection based on video block type for refinement coefficient coding
US8599926B2 (en) 2006-10-12 2013-12-03 Qualcomm Incorporated Combined run-length coding of refinement and significant coefficients in scalable video coding enhancement layers
US8565314B2 (en) 2006-10-12 2013-10-22 Qualcomm Incorporated Variable length coding table selection based on block type statistics for refinement coefficient coding
US9319700B2 (en) 2006-10-12 2016-04-19 Qualcomm Incorporated Refinement coefficient coding based on history of corresponding transform coefficient values
RU2426227C2 (ru) * 2006-11-14 2011-08-10 Квэлкомм Инкорпорейтед Кодирование кодов переменной длины с эффективным использованием памяти
US8467449B2 (en) * 2007-01-08 2013-06-18 Qualcomm Incorporated CAVLC enhancements for SVC CGS enhancement layer coding
US7702633B2 (en) 2007-03-05 2010-04-20 Microsoft Corporation Previews providing viewable regions for protected electronic documents
US8938009B2 (en) * 2007-10-12 2015-01-20 Qualcomm Incorporated Layered encoded bitstream structure
BRPI0818444A2 (pt) 2007-10-12 2016-10-11 Qualcomm Inc codificação adaptativa de informação de cabeçalho de bloco de vídeo
PL2289179T3 (pl) * 2008-05-06 2017-07-31 Philips Lighting Holding B.V. Moduł świetlny, system oświetlenia oraz sposób ujęcia danych w emitowanym świetle
RU2420021C2 (ru) * 2009-03-24 2011-05-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ сжатия изображений и видеопоследовательностей
KR101624649B1 (ko) * 2009-08-14 2016-05-26 삼성전자주식회사 계층적인 부호화 블록 패턴 정보를 이용한 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
CN102195760A (zh) * 2010-03-16 2011-09-21 松下电器产业株式会社 无线通信系统、基站、终端及码本生成方法
WO2011126283A2 (en) 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video based on internal bit depth increment, and method and apparatus for decoding video based on internal bit depth increment
WO2011126282A2 (en) 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by using transformation index, and method and apparatus for decoding video by using transformation index
KR20110112168A (ko) * 2010-04-05 2011-10-12 삼성전자주식회사 내부 비트뎁스 확장에 기반한 비디오 부호화 방법 및 그 장치, 내부 비트뎁스 확장에 기반한 비디오 복호화 방법 및 그 장치
WO2011126277A2 (en) 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Low complexity entropy-encoding/decoding method and apparatus
US8410959B2 (en) 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data
US8576097B2 (en) * 2010-07-06 2013-11-05 Nokia Corporation Coding using a mapping between a syntax element and a code word
CA2813898C (en) 2010-10-07 2017-05-23 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for level estimation of coded audio frames in a bit stream domain
US20120114034A1 (en) * 2010-11-08 2012-05-10 Mediatek Inc. Method and Apparatus of Delta Quantization Parameter Processing for High Efficiency Video Coding
US9490839B2 (en) 2011-01-03 2016-11-08 Qualcomm Incorporated Variable length coding of video block coefficients
CN102685503B (zh) * 2011-03-10 2014-06-25 华为技术有限公司 变换系数的编码方法、变换系数的解码方法,和装置
US9516316B2 (en) 2011-06-29 2016-12-06 Qualcomm Incorporated VLC coefficient coding for large chroma block
US9826238B2 (en) * 2011-06-30 2017-11-21 Qualcomm Incorporated Signaling syntax elements for transform coefficients for sub-sets of a leaf-level coding unit
US9338456B2 (en) 2011-07-11 2016-05-10 Qualcomm Incorporated Coding syntax elements using VLC codewords
RU2477891C1 (ru) * 2011-09-02 2013-03-20 Открытое акционерное общество "Концерн радиостроения "Вега" Способ обнаружения модификации электронного изображения (варианты)
PL3598753T3 (pl) * 2011-12-15 2021-07-19 Tagivan Ii Llc Sygnalizowanie znaczników zakodowanych bloków (CBF) luminancji-chrominancji w kodowaniu wideo
CN107509078B (zh) 2012-04-16 2021-07-20 韩国电子通信研究院 用于解码视频信号的方法
TWI450230B (zh) * 2012-05-22 2014-08-21 Hanking Digital Tec Co Ltd 同步教學系統
RU2504027C1 (ru) * 2012-07-03 2014-01-10 Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ создания кодовой книги и поиска в ней при векторном квантовании данных
JP6969876B2 (ja) 2016-02-29 2021-11-24 メディセル・アーゲー 伝動機構、特に歯車列を有するインジェクタ
CN113810711B (zh) 2016-04-29 2024-05-10 世宗大学校产学协力团 用于对图像信号进行编码和解码的方法和装置
CN112070866B (zh) * 2019-06-11 2024-07-02 腾讯科技(深圳)有限公司 动画数据编码、解码方法、装置、存储介质和计算机设备
CN112399181B (zh) 2019-08-19 2022-08-26 华为技术有限公司 图像编解码的方法、装置和存储介质
CN112564713B (zh) * 2020-11-30 2023-09-19 福州大学 高效率低时延的动觉信号编解码器及编解码方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0162197B1 (ko) * 1992-05-30 1998-12-15 강진구 영상데이타의 가변장부호와/복호화방법 및 장치
TW224553B (en) * 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
US6023296A (en) * 1997-07-10 2000-02-08 Sarnoff Corporation Apparatus and method for object based rate control in a coding system
GB2332127B (en) * 1997-12-08 2003-05-07 Daewoo Electronics Co Ltd Variable-length coding method and apparatus thereof
US6166664A (en) * 1998-08-26 2000-12-26 Intel Corporation Efficient data structure for entropy encoding used in a DWT-based high performance image compression

Also Published As

Publication number Publication date
KR20040099391A (ko) 2004-11-26
ATE439704T1 (de) 2009-08-15
EP1490975B1 (en) 2009-08-12
AU2003219198A1 (en) 2003-10-13
JP4234607B2 (ja) 2009-03-04
HK1082125A1 (zh) 2006-05-26
MXPA04009543A (es) 2005-01-25
KR101010722B1 (ko) 2011-01-24
ZA200407932B (en) 2006-03-29
CN100521550C (zh) 2009-07-29
CN1656690A (zh) 2005-08-17
RU2004131857A (ru) 2005-04-20
DE60328761D1 (de) 2009-09-24
WO2003084076A1 (en) 2003-10-09
EP1490975A1 (en) 2004-12-29
RU2335845C2 (ru) 2008-10-10
JP2005522084A (ja) 2005-07-21

Similar Documents

Publication Publication Date Title
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
ES2442851T3 (es) Método y sistema para codificación aritmética binaria adaptativa basada en contexto
EP1391121B1 (en) Variable length coding
ES2562932T3 (es) Método para codificar movimiento en una secuencia de vídeo
KR100969645B1 (ko) 적응 가변장 부호화
US7263125B2 (en) Method and device for indicating quantizer parameters in a video coding system
HK1082125B (en) Encoding method, decoding method, encoder and decoder for digital video