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 PDFInfo
- 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
Links
- 230000009466 transformation Effects 0.000 title claims description 80
- 238000000034 method Methods 0.000 claims abstract description 80
- 230000002441 reversible effect Effects 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 3
- 230000033001 locomotion Effects 0.000 description 70
- 239000013598 vector Substances 0.000 description 32
- 230000005540 biological transmission Effects 0.000 description 16
- 239000011159 matrix material Substances 0.000 description 15
- 238000013139 quantization Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 230000015572 biosynthetic process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 238000013144 data compression Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 239000000470 constituent Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 101150115425 Slc27a2 gene Proteins 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000003817 vacuum liquid chromatography Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003595 spectral effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 108091026890 Coding region Proteins 0.000 description 1
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
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
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).
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.
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.
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:
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.
\newpage
TABLA 3
(continuación)
\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.
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
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.
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.
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.
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)
-
\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. 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. 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. 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. 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. 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. 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. 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. Un procedimiento de codificación según cualquiera de las reivindicaciones 1 a 9, utilizado en un codificador de vídeo.
- 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. 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. 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. 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. 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. 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. 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. 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. Un procedimiento de descodificación según cualquiera de las reivindicaciones 10 a 17, utilizado en un descodificador de vídeo.
- 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. 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. 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. 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. 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. 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. 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. 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. Un codificador de vídeo que comprende un codificador según cualquiera de las reivindicaciones 19 a 26.
- 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. 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. 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. 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. 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. 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. 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. 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. Un descodificador de vídeo que comprende un descodificador según cualquiera de las reivindicaciones 28 a 35.
- 37. Un terminal multimedia que comprende un codificador de vídeo según la reivindicación 27.
- 38. Un terminal multimedia que comprende un descodificador de vídeo según la reivindicación 36.
- 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.
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)
| 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)
| 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 |
-
2003
- 2003-04-02 AU AU2003219198A patent/AU2003219198A1/en not_active Abandoned
- 2003-04-02 CN CNB038122294A patent/CN100521550C/zh not_active Expired - Lifetime
- 2003-04-02 KR KR1020047015713A patent/KR101010722B1/ko not_active Expired - Lifetime
- 2003-04-02 EP EP03714994A patent/EP1490975B1/en not_active Expired - Lifetime
- 2003-04-02 WO PCT/FI2003/000253 patent/WO2003084076A1/en not_active Ceased
- 2003-04-02 JP JP2003581363A patent/JP4234607B2/ja not_active Expired - Lifetime
- 2003-04-02 MX MXPA04009543A patent/MXPA04009543A/es active IP Right Grant
- 2003-04-02 RU RU2004131857/09A patent/RU2335845C2/ru active
- 2003-04-02 DE DE60328761T patent/DE60328761D1/de not_active Expired - Lifetime
- 2003-04-02 AT AT03714994T patent/ATE439704T1/de not_active IP Right Cessation
- 2003-04-02 ES ES03714994T patent/ES2328916T3/es not_active Expired - Lifetime
-
2004
- 2004-10-01 ZA ZA200407932A patent/ZA200407932B/xx unknown
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 |