ES2299847T3 - Tasa de bits fija, compresion y descompresion entre cuadros de un video. - Google Patents
Tasa de bits fija, compresion y descompresion entre cuadros de un video. Download PDFInfo
- Publication number
- ES2299847T3 ES2299847T3 ES04749684T ES04749684T ES2299847T3 ES 2299847 T3 ES2299847 T3 ES 2299847T3 ES 04749684 T ES04749684 T ES 04749684T ES 04749684 T ES04749684 T ES 04749684T ES 2299847 T3 ES2299847 T3 ES 2299847T3
- Authority
- ES
- Spain
- Prior art keywords
- value
- image
- zero
- data
- index
- 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
- 238000007906 compression Methods 0.000 title claims abstract description 31
- 230000006835 compression Effects 0.000 title claims abstract description 29
- 230000006837 decompression Effects 0.000 title description 3
- 239000011159 matrix material Substances 0.000 claims abstract description 20
- 238000013139 quantization Methods 0.000 claims abstract description 8
- 238000005457 optimization Methods 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 36
- 238000011002 quantification Methods 0.000 claims description 30
- 238000013144 data compression Methods 0.000 claims description 2
- 206010039509 Scab Diseases 0.000 abstract 1
- 230000004048 modification Effects 0.000 abstract 1
- 238000012986 modification Methods 0.000 abstract 1
- 230000001131 transforming effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 11
- 230000033001 locomotion Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- 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
-
- 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/124—Quantisation
- H04N19/126—Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
-
- 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
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- 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
-
- 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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Color Television Systems (AREA)
- Error Detection And Correction (AREA)
- Auxiliary Devices For And Details Of Packaging Control (AREA)
- Television Systems (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
Abstract
Un método para compresión de vídeo entre cuadros de tasa de bitss fija, que incluye una secuencia de imágenes, que comprende, para cada imagen: transformar partes de la imagen (100) para generar coeficientes (104, 1000) de dominio de frecuencia para cada parte; seleccionar, de una pluralidad de matrices de cuantificación definidas una respectiva de una pluralidad de tasas de bit, una matriz de cuantificación (1006) de acuerdo con una tasa de bitss deseada (1022); determinar una tasa de bitss (1016) para cada parte transformada de la imagen aplicando la matriz de cuantificación seleccionada con cada una de una pluralidad de factores de escala a la parte transformada; estimar distorsión para cada parte de acuerdo con la pluralidad de factores de escala; seleccionar un factor de escala (1024) para cada parte para minimizar la distorsión total en la imagen al tiempo que se consigue una tasa de bits deseada; cuantificar los coeficientes de dominio de frecuencia para cada parte usando la matriz de cuantificación seleccionada como es escalada por el factor de escala seleccionado para la parte; codificar por entropía los coeficientes (108) de dominio de frecuencia cuantificados usando una codificación de longitud variable para proporcionar datos comprimidos (112) para cada una de las partes definidas; y emitir los datos comprimidos para cada una de las partes definidas para proporcionar una corriente de bits comprimidos a la tasa de bits deseada.
Description
Tasa de bits fija, compresión y descompresión
entre cuadros de un vídeo.
Sistemas de ordenador que capturan, editan y
reproducen vídeo de movimiento procesan típicamente datos de vídeo
de movimiento como datos digitales, representando una secuencia de
imágenes digitales. Tales datos típicamente son almacenados en
archivos de datos de ordenador en un medio legible por ordenador de
acceso aleatorio. Una imagen puede representar un único cuadro o
fotograma, es decir, dos campos, o un único campo de datos de vídeo
de movimiento. Tales sistemas generalmente permiten que cualquier
imagen particular en la secuencia de imágenes sea aún accedida
aleatoriamente para edición y para reproducción.
Como los datos digitales que representan el
vídeo de movimiento pueden consumir grandes cantidades de memoria
del ordenador, particularmente para retransmitir con movimiento
completo un vídeo de calidad (por ejemplo 60 campos por segundo
para NTSC y 50 campos por segundo para PAL), los datos digitales
típicamente son comprimidos para reducir requisitos de
almacenamiento. Hay varias clases de compresión para la información
de vídeo en movimiento. Una clase de compresión es llamada
compresión "entre cuadros", que implica comprimir los datos
que representan cada imagen independientemente de otras imágenes.
Las técnicas de compresión entre cuadros corrientemente usadas
emplean una transformación al dominio de frecuencias desde el
dominio espacial, por ejemplo, usando transformadas de coseno
discretas, para generar un conjunto de coeficientes en el dominio
de frecuencia que representan la imagen o partes de la imagen. Estos
coeficientes son generalmente cuantificados, colocados en un orden
especificado (corrientemente llamada una ordenación en zigzag), y a
continuación codificados de entropía. La codificación de entropía
es un proceso sin pérdidas que implica típicamente la generación de
palabras de código que representan los coeficientes, usando una
forma de esquema de codificación de Huffman. La calidad de imagen
de las imágenes comprimidas es afectada fundamentalmente por la
pérdida de información a través de la cuantificación.
Algunas técnicas de compresión implican
operaciones adicionales que afectan además a la calidad de la
imagen. Por ejemplo, algunas técnicas de compresión reducen el
tamaño de una imagen antes de que sea transformada y cuantificada.
Algunas otras técnicas de compresión reducen la profundidad del bit,
redondeando, por ejemplo desde 10 bits a 8 bits.
Puede obtenerse más compresión para secuencias
de vídeo en movimiento usando lo que es comúnmente llamado
compresión "entre cuadros". La comprensión entre cuadros
implica predecir una imagen que usa otra. Esta clase de compresión
es usada a menudo en combinación con la comprensión entre cuadros.
Por ejemplo, una primera imagen puede ser comprimida usando
compresión entre cuadros, y típicamente es llamada un cuadro clave.
Las imágenes subsiguientes pueden ser comprimidas generando
información de predicción que, cuando es combinada con otras datos
de imágenes, da como resultado la imagen deseada. Las imágenes
comprimidas entre cuadros pueden concurrir muy a menudo a lo largo
de toda la secuencia. Para secuencias de imagen comprimidas entre
cuadros, las imágenes comprimidas entre cuadros en la secuencia
pueden ser accedidas y descomprimidas sólo con referencia a otras
imágenes en la secuencia.
Las técnicas de compresión para vídeo también
pueden proporcionar una tasa o índice de bit variable por imagen o
una tasa de bits fija por imagen. Cualquier tipo de técnica usa
generalmente una tasa de bits deseada en un bucle de control para
ajustar parámetros del algoritmo de compresión, típicamente
parámetros para cuantificación, de modo que es satisfecha la tasa
de bits deseada. Para la comprensión de tasa de bits fija, la tasa
de bits deseada debe ser satisfecha por cada imagen comprimida o
por los datos comprimidos para cada subconjunto de cada imagen.
Para una compresión de tasa de bits variable, la tasa de bits
deseada es generalmente la tasa de bits promedio (en términos de
bits por imagen) que se ha dicho.
Los datos de imagen comprimidos son almacenados
generalmente en un formato que permite el acceso eficiente a cada
parte de los datos de imagen comprimidos y los parámetros para
descomprimir cada parte de los datos de imagen comprimidos. Hay
varias normas que han sido definidas para formatos de corriente de
bits para diferentes clases de datos comprimidos. Por ejemplo, hay
un formato de corriente de bits definido por la norma
MPEG-2. Típicamente tal formato de corriente de
bits incluye información de encabezamiento de imagen e información
de imagen. La información de encabezamiento incluye típicamente
información acerca de cómo acceder a los datos de imagen
comprimidos y a los parámetros asociados para cada bloque de una
imagen. Tales formatos de corriente de bit están diseñados
generalmente para permitir un acceso eficiente a la corriente de bit
como una única corriente en serie de datos. MPEG-2
define "rebanadas" de datos comprimidos colocando "marcadores
de rebanadas" en la corriente de datos; sin embargo una rebanada
puede ser accedida solamente explorando la corriente de datos para
los marcadores de rebanada.
El documento WO 98/35500 describe un método de
optimizar valores de cuantificador en un codificador de imagen. El
método emplea un controlador de cuantificador que selecciona valores
óptimos para los parámetros de cuantificación para un número total
limitado de bits disponibles para codificar un cuadro de imagen.
El documento EP 0500077 describe un aparato
codificador de compresión de datos de imagen de movimiento en el
que el tamaño de la operación de cuantificación es controlado
dinámicamente comparando una cantidad de código real con una
cantidad de código objetivo.
El documento US 5724097 se refiere a un método
para seleccionar un tamaño de operación de cuantificación basado en
diseños detectados en la señal de vídeo.
De acuerdo con las reivindicaciones adjuntas la
compresión de vídeo sólo entre cuadros, de tasa de bits fija de
alta calidad puede ser conseguida usando optimización de distorsión
de tasa. El proceso de compresión implica la transformación de
partes de la imagen para generar coeficientes de dominio de
frecuencia para cada parte. Una matriz de cuantificación es
seleccionada de acuerdo con una tasa de bits deseada, a partir de
una pluralidad de matrices de cuantificación definidas cada una
para una respectiva de una pluralidad de tasas de bit. Es
determinada una tasa de bits para cada parte transformada usando una
pluralidad de factores de escala. La distorsión para cada parte es
estimada de acuerdo con la pluralidad de factores de escala. Un
factor de escala es seleccionado para cada parte para minimizar la
distorsión total en la imagen al tiempo que se consigue una tasa de
bits deseada. Los coeficientes de dominio de frecuencia para cada
parte son cuantificados usando la matriz de cuantificación
seleccionada como es escalada por el factor de escala seleccionado
para la parte. Los coeficientes de dominio de frecuencia
cuantificados son codificados usando una codificación de longitud
variable para proporcionar datos comprimidos para cada una de las
partes definidas. Los datos comprimidos son emitidos para cada una
de las partes definidas para proporcionar una corriente de bits
comprimidos a la tasa de bits deseada.
La optimización de distorsión de tasa puede ser
realizada obteniendo una tasa de bits para cada uno de una
pluralidad de factores de escala, cada uno de los cuales es una
potencia de 2. El factor de escala seleccionado puede también estar
limitado a un factor de escala que es una potencia de 2. Partes de
la curva de distorsión de tasas que se extienden más allá de los
datos disponibles también pueden ser estimadas. En particular para
cualquier parte de una imagen y una matriz de cuantificación, hay un
factor de escala, llamado el factor de escala máximo. Tal factor de
escala hace que todos los cuantificadores sean tales que todos los
coeficientes son cuantificados a cero. El factor de escala máximo
proporciona la tasa de bits mínima. Las tasas de bit
correspondientes a factores de escala entre el factor de escala
máximo y otro factor de escalas para el que hay disponible una tasa
de bits calculada pueden ser estimadas por interpolación.
Un factor de ponderación puede ser usado para
escalar los valores en la matriz de cuantificación seleccionada
para la profundidad de bit de los datos de imagen. Así, la exactitud
numérica de las operaciones subsiguientes puede ser controlada para
gastos de múltiples profundidades de bit, tales como datos tanto de
8 bits como de 10 bits.
La codificación de entropía de los coeficientes
AC puede ser realizada de la siguiente manera. El intervalo de
amplitudes potenciales para coeficientes cuantificados es dividido
en dos partes. La primera parte es un intervalo de base para
amplitudes comprendidas entre uno y un valor conveniente A_{B}. La
segunda es un intervalo de índice para las amplitudes restantes
[A_{B}+1, ... A_{max}] donde A_{B} es la amplitud del máximo
coeficiente cuantificado. Amplitudes en el intervalo de base son
codificadas con una palabra de código de Huffman que representa esa
amplitud. El intervalo de índice está además dividido en varios
segmentos, teniendo cada uno un intervalo de valores
correspondientes a A_{B}. Amplitudes en el intervalo de índice
son codificadas con una palabra de código de Huffman que representa
la amplitud y un valor de índice que indica el segmento a partir
del cual se originan. Si hay uno o más coeficientes precedentes de
valor cero, la amplitud es codificada por una palabra de código de
Huffman, y, si la amplitud está en el intervalo de índice, seguida
por un valor del índice, seguida por otra palabra de código de
Huffman que representa la longitud del recorrido de ceros
precedente. Esta codificación puede ser aplicable a formas de datos
distintos de los datos de coeficiente cuantificado.
Es también deseable proporcionar un formato de
corriente de bit para datos comprimidos que permitiría a múltiples
procesadores acceder y descomprimir partes diferentes de los datos
en paralelo sin consumir tiempo explorando a través de todos los
datos de imagen comprimidos. Imágenes comprimidas son usualmente
definidas por macrobloques que tienen una anchura menor que la
anchura de imagen y una altura menor que la altura de imagen. Así,
una imagen está dividida en varias bandas de múltiples líneas, y
cada banda de múltiples líneas está dividida en un macrobloque. El
conjunto de macrobloques que define una banda es llamado aquí un
barrido de trama de macrobloque.
El formato de corriente de bits incluye, para
cada imagen un encabezamiento de imagen seguido por datos de
barrido de imagen. La corriente de bits puede también incluir un pie
o final de imagen. Los datos de barrido de imagen incluyen datos
correspondientes a una pluralidad de barrido de trama de
macrobloque. Los datos para cada barrido de trama de macrobloque
incluyen datos para una pluralidad de macrobloques para una banda de
líneas en la imagen seguida por relleno. El relleno asegura que los
datos para cada barrido de trama de macrobloque terminan en un
límite o frontera de datos. Este límite de datos depende de la
cantidad de datos que permiten un acceso eficiente por un
procesador, por ejemplo, pero no limitado a, 4096 (4K) bytes.
El encabezamiento de imagen referencia un índice
de barrido de imagen que indica un número de barridos de trama de
macrobloque en los datos de barrido de imagen y un número de líneas
por barrido de trama de macrobloque, seguido por entradas del
índice. Cada entrada en el índice incluye un desplazamiento del
barrido de trama de macrobloque en barrido de imagen. El
encabezamiento de imagen puede incluir una referencia a un tipo de
encabezamiento de imagen, que referencia un
I_cuadro_image_descriptor, que referencia el índice de barrido de
imagen.
\newpage
Usando el índice de barrido de imagen, cada
barrido de trama de macrobloque puede ser accedido aleatoria y
directamente, permitiendo así que diferentes barridos de trama de
macrobloque sean procesados en paralelo por diferentes
procesadores. Así, múltiples procesadores funcionando en paralelo
pueden descodificar eficientemente una imagen.
\vskip1.000000\baselineskip
La fig. 1 es un diagrama de flujo de datos de un
codificador ejemplar para compresión de una secuencia de
imágenes.
La fig. 2 es un diagrama de flujo de datos de un
descodificador ejemplar para descompresión de una secuencia de
imágenes.
La fig. 3 es una tabla que representa como
pueden ser codificados de entropía valores de coeficiente.
La fig. 4 es un diagrama de un formato ejemplar
de palabras de código para codificación de entropía.
La fig. 5 es un diagrama de una tabla de
búsqueda ejemplar para convertir un coeficiente a una palabra de
código.
La fig. 6 es un diagrama de una tabla de
búsqueda ejemplar para convertir una longitud de recorrido a una
palabra de código.
La fig. 7 es un diagrama de una tabla de
búsqueda ejemplar para convertir una palabra de código a un valor
de coeficiente.
La fig. 8 en un diagrama de una tabla de
búsqueda ejemplar para convertir una palabra de código a un valor
de longitud de recorrido.
La fig. 9 en un diagrama de flujo de datos de un
sistema de tratamiento de imagen ejemplar que usa un codificador y
descodificador tal como en las figs. 1 y 2.
La fig. 10 es un diagrama de bloques de un
codificador ejemplar con control de tasa.
La fig. 11 en un diagrama de una estructura de
datos ejemplar para datos de imagen comprimidos.
La fig. 12 es un diagrama de una estructura de
datos ejemplar de datos de barrido de imagen en la fig. 11.
La fig. 13 es un diagrama de una estructura de
datos ejemplar de datos de barrido de trama en la fig. 12.
La fig. 14 es una tabla que describe una
estructura de datos ejemplar para información de encabezamiento de
imagen.
La fig. 15 es una tabla que describe una
estructura de datos ejemplar para un descriptor de imagen en la fig.
14.
La fig. 16 es una tabla que describe una
estructura de datos ejemplar para un índice de barrido de imagen en
la fig. 15.
La fig. 17 es un diagrama de flujo de datos de
un sistema de tratamiento de imágenes ejemplar que usa un formato
de corriente de bits.
La fig. 18 es un diagrama de flujo que describe
cómo puede ser leída una corriente de bits.
La fig. 19 es un diagrama de flujo que describe
cómo puede ser escrita una corriente de bits.
\vskip1.000000\baselineskip
La fig. 1 ilustra un sistema para comprimir
datos de imagen. Los datos de imagen 100 son transformados (por la
transformada 102) para producir coeficientes 104 para frecuencias
diferentes. Esta representación de dominio de frecuencia de una
imagen puede ser producida de muchas formas. Por ejemplo, la imagen
puede ser subdividida en bloques de elementos de imagen (píxeles).
Cada bloque es transformado a partir de su representación en color
en el dominio espacial a una representación de color en un dominio
de frecuencia, usando típicamente una transformada de coseno
discreta (DCT). El resultado de la transformada es una matriz de
coeficientes de frecuencia, un coeficiente para cada frecuencia. Un
conjunto de tales bloques es llamado un macrobloque.
Los coeficientes son a continuación
cuantificados (por el cuantificador 106) usando un conjunto de
cuantificadores, un cuantificador para cada frecuencia, para
proporcionar un coeficiente cuantificado 108 para cada frecuencia.
El conjunto de cuantificadores es típicamente denominado como una
tabla de cuantificación o matriz de cuantificación. Las matrices de
cuantificación apropiadas para una tasa de bits particular, por
ejemplo 220 Mbits por cuadro y 140 Mbits por cuadro, pueden ser
definidos experimentalmente usando imágenes de muestra y un
procedimiento definido en: "RD-OPT: Un Algoritmo
Eficiente para Optimizar Tablas de Cuantificación DCT", por
Viresh Ratnakar y Miron Livny, en 1995 Conferencia de Compresión de
datos, págs. 332-342 ("Ratnakar"). Ratnakar
enseña cómo optimizar una tabla de cuantificación para una sola
imagen; sin embargo, este procedimiento puede ser extendido para
optimizar una tabla de cuantificación usando estadísticas para
múltiples imágenes ejemplares seleccionadas como imágenes
"típicas". Tal tabla de cuantificación puede ser desarrollada
para cada uno de un conjunto de diferentes tasas de bit de salida
deseadas.
La tabla de cuantificación cuantifica los datos
de frecuencia dividiendo cada coeficiente por su cuantificador
correspondiente y redondeando. Por ejemplo puede usarse la siguiente
fórmula:
redondeo[S(u,v)/Q(u,v)];
donde S(u,v) es el valor en
la posición u,v en la matriz de coeficientes de frecuencia,
Q(u,v) es el cuantificador en la posición u,v en la matriz
de
cuantificación.
Los valores Q(u,v) en la matriz de
cuantificación pueden ser una función de una matriz de
cuantificación fija, un factor de escala y un factor de
ponderación. El factor de ponderación escala los valores en la
matriz de cuantificación de modo que son apropiados para la
profundidad de bit de los datos de imagen, de manera que la
capacidad de variación en los intervalos dinámicos es tenida en
cuenta para datos de múltiples profundidades de bit, tales como
datos tanto de 8 bits como de 10 bits.
La cuantificación puede también ser realizada
para proporcionar una "zona muerta" de anchura variable. La
zona muerta es el área alrededor de cero que es cuantificada a cero.
En la ecuación anterior, usando el redondeo, la zona muerta tiene
una anchura del valor del cuantificador Q(u,v). El ruido
puede ser reducido aumentando la zona muerta como una función de
valor de cuantificador, por ejemplo, usando las siguientes
ecuaciones:
El coeficiente cuantificado, c, es definido
como:
El valor descuantificado, \hat{x}, sería:
donde \delta es típicamente una
mitad.
Entonces la anchura de la zona muerta es
igual a 2(1-k)Q(u,v).
Con estas ecuaciones, si k=0,5 y \delta=0,5,
la cuantificación/descuantificación son tradicionales con una zona
muerta de anchura Q(u,v). Para k distinto de cero, la zona
muerta puede ser hecha variable. Si k está en el intervalo (0, 0,5)
la zona muerta es menor, si k está en el intervalo (-1, 0,5) la zona
muerta es mayor. Para reducir el ruido podría ser usado un valor de
k_{\in}(-0,5, 0,25) para producir una zona muerta entre
1,5Q(u,v) y 3,0Q(u,v).
El factor de escala puede ser controlado por un
controlador de tasa 114, descrito en más detalle a continuación. En
una realización, puede ser usado un conjunto de factores de escala
que son potencias de dos, por ejemplo 1, 2, 4, 8, 16..., .
Un codificador de entropía 110 codifica los
valores cuantificados usando codificación de entropía para producir
palabras de código que son formateadas para proporcionar los datos
112 comprimidos. Antes de codificar de entropía es aplicado un
proceso de ordenación de coeficientes predefinido a la matriz de
coeficientes cuantificados para proporcionar una secuencia
unidimensional de coeficientes. Un conjunto de diseños, llamados
símbolos, es identificado a partir de la secuencia de coeficientes.
Los símbolos, a su vez, son cartografiados a palabras de código.
Los símbolos pueden ser definidos, por ejemplo, usando una forma de
codificación por longitud de recorrido. La codificación de Huffman
es empleada generalmente para codificar la secuencia de símbolos a
códigos de longitud variable. Los datos 112 comprimidos incluyen
los datos codificados de entropía y cualesquiera otros datos para
cada bloque, macrobloque o imagen que pueden ser usados para
descodificarlos, tales como factores de escala. Una forma de
codificación de entropía está descrita en más detalle a continuación
en conexión con las figs. 3 a 8.
Los parámetros de compresión pueden ser
cambiados para afectar tanto a la tasa de bits como a la calidad de
la imagen de los datos descomprimidos. En la compresión de imagen
basada en DCT, los parámetros de compresión que pueden ser
cambiados incluyen los cuantificadores, bien dentro de una imagen
entre partes de una imagen, o bien desde una imagen a la siguiente.
Típicamente, una parte de una imagen es un conjunto de bloques DCT
llamado un macrobloque. Un cambio en los cuantificadores afecta a la
tasa de bits comprimida y a la calidad de la imagen después de la
descompresión. Un incremento en un valor del cuantificador
disminuye típicamente la tasa de bits pero también reduce la
calidad de la imagen. Inversamente, una disminución en un valor del
cuantificador aumenta típicamente la tasa de bits pero también
mejora la calidad de la imagen. Los cuantificadores pueden ser
adaptados individualmente, o el conjunto de cuantificadores puede
ser escalado uniformemente por un factor de escala. En una
realización, el factor de escala es ajustado para cada macrobloque
para asegurar que cada trama tiene una cantidad de datos que
coincide con una tasa de bits fija deseada.
Un controlador de tasa 114 recibe generalmente
la tasa de bits 122 de los datos comprimidos producidos por
compresión de una imagen, cualquier restricción 116 sobre la
compresión (tal como tamaño de memoria tampón, tasa de bits, etc.),
y una métrica de distorsión 120. La tasa de bits y la distorsión son
determinadas para cada macrobloque para un número de factores de
escala en una pasada que agrupa estadísticas sobre la imagen. El
controlador de tasa determina entonces, para cada macrobloque, un
factor de escala apropiado 118 para aplicar a la matriz de
cuantificación. El controlados de tasa 114 busca minimizar la
métrica de distorsión 120 sobre la imagen de acuerdo con las
restricciones 116 usando una técnica que es llamada "optimización
de distorsión de tasa", tal como se ha descrito en "Selección
de modo optimizado de distorsión de tasa para codificación de vídeo
de tasa de bits muy baja y el estándar H.263 emergente" por T.
Wiegand, M. Lightstone, D. Mukherjee, T.G. Campbell, y S.K. Mitra,
en IEEE Trans. Sist. De Circuitos Tecnol. De Vídeo, Vol. 6, nº 2,
págs. 182-190, Abril de 1996, y en "Asignación
óptima de bit bajo múltiples restricciones de tasa" por Antonio
Ortega, en Proc. de la Conferencia de Compresión de Datos (DCC
1996), Abril de 1996. En particular, la distorsión total sobre
todos los macrobloques en la imagen es optimizada sobre la imagen
para satisfacer una tasa de bits deseada y así seleccionar un
factor de escala para cada macrobloque.
Hay varios modos para calcular una métrica de
distorsión. Por ejemplo, pero no limitado a este ejemplo, la
métrica de distorsión 120 (d) puede ser estimada por el cuadrado del
factor de escala (q), es decir, d=q^{2}. Así, la métrica de
distorsión es conocida para cada factor de escala sin analizar los
datos de la imagen comprimida.
La tasa de bits y la métrica de distorsión
correspondientes a un factor de escala para el que la cuantificación
no es realizada pueden ser estimadas interpolando los valores de
tasa y de distorsión medidos obtenidos a partir de otros factores
de escala. Tal técnica está descrita en "Control de tasa de bits
usando características de distorsión de tasa aproximadas con
variables" por L-J. Lin y A. Ortega, en IEEE
Trans. Sistema de Circuitos Tecnología de Vídeo, Vol 8, Nº 4, págs.
446-459, Agosto de 1998, y en "Aproximación de
Spline (función) Cúbica de Funciones de Tasa y Distorsión para
vídeo MPEG" por L.J. Lin, A. Ortega y C-C. Jay
Kuo, en Proc. de IST/SPIE, Compresión de Vídeo Digital: Algoritmo y
Tecnologías 1996, vol. 2668, págs. 169-180, y en
"Control de Tasa de bits de Vídeo con Características de
Distorsión de Tasa Aproximada por Spline (función spline)" por
Liang-jin Lin, PhD Tesis, Universidad de California
del Sur, 1997. Por ejemplo, las tasas de bit pueden ser calculadas
para dos factores de escala, uno pequeño y otro grande tal como 2 y
128. La interpolación entre estos dos puntos puede ser usada para
obtener un factor de escala adecuado con una tasa de bits
correspondiente deseada. Si los datos de imagen comprimida
resultantes exceden de la tasa de bits deseada, los datos de imagen
pueden ser comprimidos otra vez usando un factor de escala
diferente.
Se pueden estimar también las partes de la curva
de la distorsión de tasa que se extienden más allá de los datos
disponibles. En particular, para cualquier parte de una imagen y una
matriz de cuantificación, hay un factor de escala, llamado el
factor de escala máximo. Tal factor de escala hace que todos los
cuantificadores sean tales que todos los coeficientes son
cuantificados a cero. El factor de escala máximo proporciona la
tasa de bits mínima. Las tasas de bit correspondientes a los
factores de escala entre el factor de escala máximo y un factor de
escala para el que hay disponible una tasa de bits real pueden ser
estimadas por interpolación, tal como interpolación lineal.
Un ejemplo más específico de un controlador de
tasa está descrito en más detalle a continuación en conexión con la
fig. 10.
Con referencia ahora a la fig. 2, un sistema
para descomprimir o descodificar datos de imagen será descrito a
continuación. Los datos de imagen comprimidos 200 son recibidos y
las palabras de código son procesadas por un descodificador de
entropía 202. El descodificador de entropía 202 realiza la inversa
de la codificación de entropía realizada en la fig. 1. Un
descodificador de entropía ejemplar está descrito en más detalle más
abajo. El descodificador de entropía 202 produce los datos 204 del
coeficiente cuantificado. Un cuantificador inverso 206 invierte la
cuantificación para producir coeficientes 208. Una transformada
inversa 210 es realizada sobre los coeficientes 208 para producir
los datos de imagen 212.
La fig. 9 es un diagrama de flujo de datos de un
sistema de tratamiento de imágenes ejemplar tal como un codificador
y descodificador. El sistema de tratamiento de imágenes 900 incluye
almacenamiento de datos 901 que incluye un medio legible por
ordenador que almacena los datos de imagen comprimidos. Los datos de
imagen comprimidos pueden ser almacenados, por ejemplo, en un
archivo de datos o pueden ser referenciados por metadatos en un
formato de archivo tal como MXF o AAF. Tales datos de imagen
comprimidos pueden también ser almacenados en memoria, tal como en
una memoria caché. Estos datos de imagen comprimidos pueden también
ser usados para transmisión de datos en los que la caja 901
representa un medio de transmisión sobre el que los datos de imagen
comprimidos son transmitidos como señales legibles por ordenador.
Los datos 902 que incluyen los datos de imagen comprimidos son
leídos y descomprimidos por un descodificador 903. El descodificador
corresponde a la fig. 2. Los datos que incluyen los datos de imagen
comprimidos, mostrados en 904, son comprimidos y escritos por un
codificador 905. El descodificador 903 puede leer una o más
imágenes a partir de los datos de imagen comprimidos. El
descodificador 903 descomprime los datos leídos y proporciona los
datos descomprimidos 906 a una aplicación de tratamiento de
imágenes 907.
La aplicación 907 de tratamiento de imágenes
realiza operaciones sobre los datos de imagen para producir datos
de imagen 908 no comprimidos. Por ejemplo, tales operaciones de
tratamiento de imágenes pueden incluir, pero no están limitadas a,
operaciones para combinar imágenes, tales como composición, mezcla,
y codificación, u operaciones dentro de una imagen, tales como
redimensionamiento, filtrado, y corrección de color, u operaciones
entre dos imágenes, tales como estimación de movimiento. La
aplicación de tratamiento de imágenes puede también ser una
aplicación que captura y/o crea datos de imagen digital, sin usar
ningún dato de imagen de entrada 906. La aplicación de tratamiento
de imágenes puede también manipular metadatos acerca de los datos de
imagen, por ejemplo para definir una secuencia de escenas de
información de vídeo en movimiento. La aplicación de tratamiento de
imágenes puede también reproducir datos de imagen en uno o más
formatos, sin proporcionar ningún dato de salida 908.
Aunque la fig. 9 muestra solo una aplicación de
tratamiento de imágenes, puede haber múltiples operaciones de
tratamiento de imágenes que pueden operar en paralelo sobre los
datos o pueden operar como una secuencia de operaciones. Hay una
variedad de modos en los que una operación de tratamiento de
imágenes puede tratar datos de imagen, y el invento no está
limitado por ello. Como ejemplo, el descodificador y/o la aplicación
de tratamiento de imágenes y/o el codificador pueden ser parte de
una aplicación mayor para editar información de vídeo. Como otro
ejemplo, el codificador y/o la aplicación de tratamiento de imágenes
y/o el descodificador pueden "enchufarse" a una aplicación de
edición que permite acceder a datos de imagen en memoria a través
de una interfaz de programación de aplicación (API). El codificador
y descodificador pueden ser implantados en la parte física que es
accedida por una aplicación de tratamiento de imágenes.
La codificación y descodificación de entropía
serán ahora descritas en conexión con las figs. 3-8.
Los coeficientes DC pueden ser codificados y descodificados de
varias maneras, por ejemplo, pero no limitadas a un método usado en
la norma MPEG-2. La codificación de entropía de los
coeficientes AC usa el intervalo de amplitudes de potencial
distintas de cero para coeficientes cuantificados y divide este
intervalo en dos partes: [1, ..., A_{B}] y [A_{B} +1, ...,
A_{max}]. La primera parte es un intervalo de base para amplitudes
entre 1 y una amplitud conveniente, por ejemplo 64. La segunda
parte es un intervalo de índice para las amplitudes mayores de
A_{B} hasta una que incluye la amplitud máxima A_{max}, por
ejemplo 65 a 4096. Las amplitudes en el intervalo de base son
codificadas con una palabra código de Huffman que representa esa
amplitud. El intervalo de índice es además dividido en varios
segmentos, teniendo cada uno un intervalo de valores correspondiente
a A_{B}. Las amplitudes en el intervalo de índice son codificadas
con una palabra código de Huffman que representa la amplitud y un
valor de índice que indica el segmento a partir del cual se
originan. Si hay uno o más coeficientes de valor cero precedentes,
la amplitud es codificada por una palabra código de Huffman, y, si
la amplitud está en el intervalo de índice, seguida por un valor de
índice, seguida por otra palabra código de Huffman que representa
la longitud del recorrido de ceros precedente. El recorrido de ceros
más largo es el número de coeficientes que han de ser codificado
menos uno.
Por ello, para los coeficientes AC, hay seis
tipos de conjuntos de símbolo: cuatro para símbolos de amplitud,
uno para longitudes de recorrido, y uno para el final del bloque,
como sigue a continuación. En este ejemplo A_{B} = 64 y A_{max}
= 4096, pero esto puede ser fácilmente generalizado a otras
particiones del intervalo de amplitud de coeficiente
cuantificado.
1. A^{nrb} = {A_{1}^{nrb},
A_{2}^{nrb}, ..., A_{64}^{nrb}}: Coeficientes de amplitud
distinta de cero en el intervalo de base, sin recorrido precedente
de coeficientes de valor de cero. Las amplitudes varían desde
A_{1}^{nrb} = 1 hasta A_{64}^{nrb} = 64.
2. A^{wrb} = {A_{1}^{wrb},
A_{2}^{wrb}, ..., A_{64}^{wrb}}: Coeficientes de amplitud
distinta de cero en el intervalo de base, con recorrido precedente
de coeficientes de valor de cero. Las amplitudes varían desde
A_{1}^{wrb} = 1 hasta A_{64}^{wrb} = 64.
3. A^{nri} = {A_{1}^{nri},
A_{2}^{nri}, ..., A_{64}^{nri}}: Coeficientes de amplitud
distinta de cero en el intervalo de índice, sin recorrido
precedente de coeficientes de valor de cero. Las amplitudes varían
desde 65 hasta 4096.
4. A^{wri} = {A_{1}^{wri},
A_{2}^{wri}, ..., A_{64}^{wri}}: Coeficientes de amplitud
distinta de cero en el intervalo de índice, con recorrido precedente
de coeficientes de valor de cero. Las amplitudes varían desde 65
hasta 4096.
5. R = {R_{1}, R_{2}, ..., R_{max}}: un
recorrido de 1 o más coeficientes de valor cero. R_{1} = 1 y
R_{max} = 62.
6. E = {EOB}: el final del símbolo del
bloque.
\vskip1.000000\baselineskip
La fig. 3 muestra cómo una longitud de
recorrido cero y coeficientes de amplitud son cartografiados a los
conjuntos, A^{nri}, A^{wrb}, A^{wri} y R. El mapa 300 de la
fig. 3 indica que para amplitudes (representadas a lo largo del eje
302), 1 a 64, hay dos posibles conjuntos de símbolo
A^{nrb}(304), si el recorrido precedente de ceros es cero,
y A^{wrb}(306), si el recorrido precedente de ceros es
distinto de cero. Para amplitudes 65 a 4096, cada intervalo de 64
valores, por ejemplo, 308, tiene un índice único i, y dos conjuntos
de símbolos A^{nri}(310), si el recorrido precedente de
ceros es cero, y A^{wri}(312), si el recorrido precedente
de ceros es distinto de cero. Una palabra de código R es
proporcionada para cada longitud de recorrido, como se ha indicado
en 314; sin embargo A^{wrb} y A^{wri} no son afectados por la
longitud real del recorrido de ceros.
Si la amplitud de un coeficiente se cartografía
a uno de los intervalos de índice, bien A^{nri} 310 ó A^{wri}
312, es codificado por una palabra de código de longitud variable y
un valor de índice. El valor de índice, P, es calculado a partir de
la amplitud A por:
\hskip0,6cm P
= ((A-1)>>6),
\hskip1cm65 \leq A \leq 4096
El valor usado para determinar la palabra de
código de longitud variable, V, es calculado de acuerdo con:
A =
A-(P<<6) 1 \leq A\leq 64,
\hskip1cmV = VLCLUT(\hat{A}).
Usando estas técnicas, un conjunto de palabras
de código Huffman es generado para los símbolos en los cinco
conjuntos de A^{nrb}, A^{nri}, A^{wrb}, A^{wri} y E, que da
como resultado un conjunto de palabras de código de amplitud
V^{A} = (V^{nrb} V^{nri} V^{wrb} V^{wri}, V^{E}). Hay 4*64+1= 129 palabras de código en V^{A}. Otro conjunto de palabras de código Huffman es generado para los 62 símbolos en R, que da como resultado un conjunto de palabras de código de recorrido cero V^{R}. el conjunto de palabras de código y como se cartografían a valores de amplitud o valores de longitud de recorrido pueden ser definidos usando estadísticas a partir de datos de muestra de acuerdo con los principios de la codificación de Huffman.
V^{A} = (V^{nrb} V^{nri} V^{wrb} V^{wri}, V^{E}). Hay 4*64+1= 129 palabras de código en V^{A}. Otro conjunto de palabras de código Huffman es generado para los 62 símbolos en R, que da como resultado un conjunto de palabras de código de recorrido cero V^{R}. el conjunto de palabras de código y como se cartografían a valores de amplitud o valores de longitud de recorrido pueden ser definidos usando estadísticas a partir de datos de muestra de acuerdo con los principios de la codificación de Huffman.
El formato de tales palabras de código será
ahora descrito en conexión con la fig. 4. Si la amplitud de un
coeficiente se cartografía al conjunto de símbolo A^{nrb} 304, una
sola palabra de código es insertada en la corriente de bit de
símbolo codificado. El formato para esta palabra de código está
mostrado en la parte superior de la fig. 4 en 400, e incluye la
palabra de código V^{nrb} 402 y un bit de signo 404. Si la
amplitud de un coeficiente está en el intervalo de [1...A_{B}]
pero es precedida por un recorrido de ceros, se cartografía al
conjunto de símbolo A^{wrb}. En este caso, dos palabras de código
406 son insertadas en la corriente de bit de símbolo codificado:
una para la palabra de código V^{wrb} 408, con un bit 410 de
signo, y la segunda para el número que representa el recorrido
precedente de ceros V^{R} 412. Si un coeficiente no tiene
recorrido precedente de ceros y su amplitud está en el intervalo de
[A_{B} + 1, ..., A_{MAX}], se cartografía al conjunto de
símbolo A^{nri}; una sola palabra de código 414 es insertada en la
corriente de bit de símbolo codificado que incluye la palabra de
código V^{nri} 416, un bit de signo 418 y un valor P de índice de
6 bits 420. Si la amplitud de un coeficiente está en el intervalo
de índice de [A_{B} + 1, ..., A_{MAX}] y está precedida por un
recorrido de ceros, se cartografía al conjunto de símbolo A^{wri}.
En este caso, dos palabras de código 422 son insertadas en la
corriente de bit de símbolos codificados. Estas palabras de código
incluyen una palabra de código V^{wri} 424, con bit de signo 426
y un índice P de 6 bits 428, para representar la amplitud, y una
palabra de código V^{R} 430 para representar el número que
representa el recorrido precedente de ceros. Finalmente, el final
de la palabra de código 432 del bloque es una sola palabra de
código, por ejemplo un símbolo de 4 bits, es insertado en la
corriente de bit codificada al final de un bloque.
Tal codificación de longitud variable puede ser
realizada usando dos tablas de búsqueda, ejemplos de las cuales
están mostrados en las figs. 5 y 6. El formato para los símbolos de
amplitud en el conjunto V^{A} está mostrado en la fig. 5. El
formato para los símbolos de longitud de recorrido en el conjunto
V^{R} está mostrado en la fig. 6.
Cada entrada, por ejemplo, 502, en la tabla de
amplitud 500 usa dieciséis bits para la palabra de código 504 y
cinco bits que representan la longitud 506 de la palabra de código.
El requisito máximo de almacenamiento para una entrada, por
ejemplo, 502, es veintiún bits. Así, cada entrada puede ser
almacenada en 3 bytes sucesivos. En algunos casos, puede ser útil
almacenar el valor como una palabra de 32 bits. El número total de
bytes requeridos para la tabla
{}\hskip17cm de codificación de amplitud es 129*3\frac{bytes}{entrada}=387 bytes. Dada una amplitud, puede ser convertido a un valor entre 1
{}\hskip17cm y 64 y una indicación de si es precedido por un recorrido, y una indicación de si está en el intervalo de base o en el intervalo de índice, y el valor de índice P. Esta información es aplicada a la tabla de búsqueda 500 para recuperar la palabra de código, V^{nrb}, V^{nri}, V^{wrb}, o V^{wri}, que puede ser combinada con un bit de signo, valor de índice p, y, si es apropiado, la palabra de código subsiguiente V^{R} para la longitud de recorrido.
{}\hskip17cm de codificación de amplitud es 129*3\frac{bytes}{entrada}=387 bytes. Dada una amplitud, puede ser convertido a un valor entre 1
{}\hskip17cm y 64 y una indicación de si es precedido por un recorrido, y una indicación de si está en el intervalo de base o en el intervalo de índice, y el valor de índice P. Esta información es aplicada a la tabla de búsqueda 500 para recuperar la palabra de código, V^{nrb}, V^{nri}, V^{wrb}, o V^{wri}, que puede ser combinada con un bit de signo, valor de índice p, y, si es apropiado, la palabra de código subsiguiente V^{R} para la longitud de recorrido.
La tabla de longitud de recorrido 600 tiene
entradas, por ejemplo, 602, que requieren un máximo de 14
bits,
incluyendo 10 bits para la palabra de código 604 y 4 bits para la longitud 606 de la palabra de código, que
{}\hskip17cm pueden ser almacenados en 2 bytes. Hay un total de 62 entradas, lo que significa que la tabla requiere
{}\hskip17cm 62 entradas*2\frac{bytes}{entrada}=124 bytes. Dada una longitud de recorrido, la palabra de código correspondiente a esa longitud de recorrido es simplemente recuperada a partir de la tabla.
incluyendo 10 bits para la palabra de código 604 y 4 bits para la longitud 606 de la palabra de código, que
{}\hskip17cm pueden ser almacenados en 2 bytes. Hay un total de 62 entradas, lo que significa que la tabla requiere
{}\hskip17cm 62 entradas*2\frac{bytes}{entrada}=124 bytes. Dada una longitud de recorrido, la palabra de código correspondiente a esa longitud de recorrido es simplemente recuperada a partir de la tabla.
\newpage
Un formato ejemplar para tablas de
descodificación está mostrado en las figs. 7-8. Para
ahorrar memoria cada tabla de descodificación, una para palabras de
código de amplitud y la otra para palabras de código de longitud de
recorrido, puede ser dividida en dos tablas. Debido a la naturaleza
de los códigos Huffman, cada palabra de código puede ser únicamente
posicionada en una corriente de bit. Para cada palabra de código, es
aplicado a la tabla de descodificación apropiada.
Para valores de longitud de recorrido, bien la
tabla 700 o bien la 702 recibe como entrada 704 una palabra de
código de longitud de recorrido, y proporciona como salida el valor
correspondiente. El valor correspondiente incluye un número 706 o
710 que representa la longitud del recorrido y una longitud 708 o
712 que representa la longitud en bits del número 706 o 710.
Para valores de amplitud, bien la tabla 800 o la
802 reciben como entrada 804 el código de amplitud, y proporcionan
como salida los valores correspondientes que incluyen un número 806
u 814 que representa la longitud en bits del valor que ha de ser
emitido, un número 808 u 816 que representa la amplitud, un
indicador de recorrido 810 u 818 que indica si seguirá un código de
recorrido, y el indicador de índice 812 u 820 que indica si seguirá
un código de índice.
Usando los principios de codificación, la
primera palabra de código para coeficientes AC de un bloque es una
palabra de código de amplitud. El indicador o banderola de recorrido
y el indicador de índice indican si la palabra de código
subsiguiente es otra palabra de código de amplitud, un valor de
índice o una palabra de código de longitud de recorrido. Si son
ajustados tanto el indicador de recorrido como el indicador de
índice, la palabra de código de amplitud va seguida por una palabra
de código de índice, luego una palabra de código de longitud de
recorrido, que van a continuación seguidas por otra palabra de
código de amplitud.
Una implantación ejemplar de un controlador de
tasa será descrita a continuación en conexión con la fig. 10. En
esta implantación el controlador de tasa realiza una pasada de
colección de estadísticas sobre la imagen para determinar tasas de
bit para cada macrobloque en la imagen para cada uno de varios
factores de escala. Cada factor de escala es una potencia de dos.
La distorsión correspondiente a cada factor de escala para cada
macrobloque es determinada por el cuadrado del factor de escala.
Como se ha observado antes, la distorsión total sobre todos los
macrobloques en la imagen es minimizada sobre la imagen mientras se
satisface una tasa de bits deseada. Así, el controlador de tasa
selecciona un factor de escala para cada macrobloque para minimizar
la distorsión total sobre la imagen al tiempo que satisface una tasa
de bits deseada. El factor de escala seleccionado para cada
macrobloque es a continuación usado para cuantificar los
coeficientes de frecuencia de ese macrobloque.
En particular, en la fig. 10, los coeficientes
1000 para cada macrobloque son ponderados usando una ponderación
1002 de coeficiente por la matriz de cuantificación 1006 fija y
cualquier factor 1004 de escala previo. Los coeficientes de
ponderación 1008 son a continuación cuantificados por múltiples
factores de escala por cuantificadotes 1010. En una implantación de
hardware, cada cuantificador puede operar en paralelo y puede
corresponder a un factor de escala que es una potencia de dos de
modo que realice solo una operación de desplazamiento de bit. En
este ejemplo, hay ocho de tales cuantificadores. Podrían ser usados
tan pocos como dos cuantificadotes correspondientes a dos factores
de escala, si el controlador de tasa usa interpolación para estimar
tasas de bit correspondientes a otros factores de escala. Los
valores 1012 cuantificados resultantes pueden ser aplicados a un
calculador 1014 de longitud de código. El calculador de longitud de
código suma las longitudes de las palabras de código que se
generarían para los valores cuantificados en cada bloque en cada
macrobloque, para proporcionar una tasa de bits 1016 para cada
macrobloque para cada uno de los factores de escala. La amplitud
1018 del coeficiente ponderado máximo, de entre los coeficientes
ponderados 1012 es también emitida. Este valor 1018 determina el
máximo factor de escala, que daría como resultado una cuantificación
total de los datos de imagen. El controlador 1020 de tasa recibe
las tasas 1016 de bit para cada factor de escala para cada
macrobloque en la imagen, y la máxima amplitud 1018 de macrobloque
ponderada para cada macrobloque en la imagen, y una tasa 1022 de
bit deseada para la imagen. Usando la optimización de distorsión de
tasa sobre la imagen, el controlador de tasa 1020 minimiza la
distorsión total sobre todos los macrobloques en la imagen para
satisfacer la deseada tasa de bits seleccionando un factor de escala
1024 para cada macrobloque. El factor de escala 1024 para cada
macrobloque es a continuación usado para cuantificar los
coeficientes para el macrobloque, que son a continuación
codificados de entropía.
Tal codificación y descodificación pueden ser
usadas, pero no están limitadas a, vídeo de alta definición, en que
las imágenes tienen desde 720 a 1080 líneas y 1280 a 1920 píxeles
por línea. Las tasas de cuadro varían en general desde 23.976 a 60,
con tasas de cuadro mayores que representan típicamente la tasa de
campo de un cuadro entrelazado. Cada píxel puede ser representado
usando varios componentes, por ejemplo, pero no limitado a,
luminancia y crominancia (Y, Cr, Cb) o rojo, verde y azul, con cada
componente representado usando un número de bits (llamada la
profundidad de bit). La profundidad de bit es típicamente 8 o 10
bits, pero podría ser 12 o 16 bits. Tales datos tienen un ancho de
banda significativamente mayor que el vídeo de definición estándar.
Proporcionando el factor de escala previo como se ha descrito antes,
puede usarse el mismo codificador para codificar tanto datos de 8
bits como de 10 bits. Una matriz de cuantificación fija puede ser
proporcionada para cada una de varias tasas de bit deseadas
diferentes.
Con referencia ahora a la fig. 11, una
estructura de datos ejemplar para datos de imagen comprimidos será
descrita a continuación. Esta estructura de datos incluye un
encabezamiento 10 de imagen y datos 12 de barrido de imagen. Un
final 14 de imagen puede también ser usado. El encabezamiento de
imagen almacena información acerca de los datos de barrido de
imagen, y una estructura de datos ejemplar para ello está descrita
en más detalle a continuación en conexión con las figs. 14 a 16.
Los datos 12 de barrido de imagen son una estructura de datos que
almacena los datos de imagen codificados para una imagen. Una
estructura de datos ejemplar para los datos de barrido de imagen
está descrita en mayor detalle a continuación en conexión con las
figs. 12 a 13. Los datos de final de imagen terminan la estructura
de datos para una imagen.
Con referencia ahora a la fig. 12, una
estructura de datos ejemplar para datos de barrido de imagen será
descrita a continuación. Los datos de barrido de imagen son
definidos por un encabezamiento 20 de barrido de imagen, que
referencia datos de barrido de trama, como se ha mostrado por 22,
24, 26 y 28. Una imagen es dividida en varias bandas de múltiples
líneas, y cada banda de múltiples líneas es dividida en un
macrobloque. El conjunto de macrobloques que define una banda es
llamado aquí un barrido de trama de macrobloque. Los datos de
barrido de trama, por ejemplo, 22 son una estructura de datos que
almacena los datos de imagen codificados para un barrido de trama
de macrobloque. Una estructura de datos ejemplar para los datos de
barrido de trama está descrita en más detalle a continuación en
conexión con la fig. 13.
Con referencia ahora a la fig. 13, una
estructura de datos ejemplar para datos de barrido de trama será
descrita a continuación. Los datos de barrido de trama son
definidos por un encabezamiento 30 de barrido de trama, que
referencia datos codificados para macrobloques, como se ha mostrado
por 32, 34, 36 y 38, para una banda de líneas en la imagen. Los
datos codificados para los macrobloques van seguidos por relleno 39.
El relleno asegura que datos para cada barrido de trama de
macrobloque terminan en un límite de datos. Este límite de datos
depende de la cantidad de datos que permite un acceso eficiente por
un procesador, por ejemplo, pero no limitado a 4096 (4K) bytes. Los
datos codificados para un macrobloque tienen una estructura de datos
que es similar a una estructura de datos de macrobloque encontrada
en la norma MPEG-2.
Con referencia ahora a la fig. 14, una
estructura de datos ejemplar para información de encabezamiento de
imagen será descrita a continuación. El encabezamiento de imagen
referencia datos que permiten el acceso a un índice de barrido de
imagen que es un índice de las posiciones de cada barrido de trama
de macrobloque en los datos de barrido de imagen, y de las
posiciones de los datos de macrobloque en cada barrido de trama de
macrobloque. Una estructura de datos ejemplar para el índice de
barrido de imagen está descrita más abajo en conexión con la fig.
16. Por ejemplo, la estructura 40 de datos de encabezamiento de
imagen puede incluir información general 42 acerca de la imagen,
que puede ser similar a la información proporcionada por una
estructura de datos de encabezamiento de imagen como es definida
por la norma MPEG-2. El encabezamiento de imagen 40
puede también incluir una referencia a un tipo 44 de encabezamiento
de imagen. Si el tipo en este campo corresponde a un valor
predeterminado (llamado "ID de imagen de trama I" en la fig.
14), entonces el siguiente valor 46 es una referencia a (llamado un
"I_cuadro_image_descriptor" en la fig. 14) un descriptor de
imagen que describe la imagen y referencia el índice de barrido de
imagen. Una estructura de datos ejemplar para el
I_cuadro_image_descriptor está mostrada en la fig. 5.
Con referencia ahora a la fig. 15, una
estructura de datos ejemplar para un descriptor de imágenes será
descrita a continuación. Un descriptor 50 de imágenes es
referenciado por el encabezamiento de imagen y referencia el índice
de barrido de imagen. Incluye información general acerca de la
imagen como se ha indicado en 52. Esta información general es
similar a la estructura de datos en la norma MPEG-2
para describir tramas I. El descriptor de imagen puede incluir un
código 54 de puesta en marcha para un índice de barrido de imagen
(llamado "código imagescan_index_Start" en la fig. 15) que, si
está presente, es seguido por un valor 56 indicativo del tamaño del
índice de barrido de imagen y una referencia 58 a la estructura de
datos para el índice de barrido de imagen. Una estructura de datos
ejemplar para el índice de barrido de imagen está mostrada en la
fig. 16.
Con referencia ahora a la fig. 16, una
estructura de datos ejemplar para un índice de barrido de imagen
será descrita a continuación. El índice 60 de barrido de imagen
incluye un valor 62 que indica varias entradas en el índice, que
corresponden al número de barridos de trama de macrobloque en los
datos de barrido de imagen. Un valor 64 indica varias líneas por
barrido de trama de macrobloque. Estos datos van seguidos por
entradas 66 del índice, cuyo número corresponde al número indicado
por el valor 62. Cada entrada en el índice indica un desplazamiento
del barrido de trama de macrobloque en barrido de imagen.
Usando el índice de barrido de imagen, cada
barrido de trama de macrobloque puede ser accedido aleatoria y
directamente, permitiendo así que diferentes barridos de trama de
macrobloque sean procesados en paralelo por diferentes
procesadores. Así, múltiples procesadores que operan en paralelo
pueden descodificar eficientemente una imagen.
La fig. 17 es un diagrama de flujo de datos de
un sistema de tratamiento de imágenes ejemplar que usa este formato
de corriente de bits. El sistema 70 de tratamiento de imágenes
incluye un almacenamiento 71 de datos que almacena la corriente de
bits, por ejemplo, en un archivo de datos o que puede ser
referenciado por metadatos en un formato de archivo tal como MXF o
AAF. Tal corriente de datos puede también ser almacenada en memoria,
tal como una memoria caché. Este formato de corriente de bits puede
ser usado también como un formato para transmisión de datos, en
cuyo caso 71 representa un medio de transmisión sobre el que los
datos de imagen comprimidos son transmitidos como señales legibles
por ordenador. Los datos 72 que incluyen la corriente de bits son
leídos y descomprimidos por el descodificador 73. Los datos que
incluyen la corriente de bits, mostrados en 74, son escritos en tal
formato por un codificador 75. El descodificador 73 puede leer uno o
más barridos de trama de macrobloque a partir de la corriente de
bits. El descodificador 73 descomprime los datos leídos y
proporciona los datos descomprimidos 76 a una aplicación 77 de
tratamiento de imágenes.
\newpage
La aplicación 77 de tratamiento de imagen
realiza operaciones sobre los datos de imagen para producir datos
78 de imagen sin comprimir. Por ejemplo, tales operaciones de
tratamiento de imagen pueden incluir, pero no están limitadas a,
operaciones para combinar imágenes, tales como composición, mezcla y
codificación, u operaciones dentro de una imagen, tales como
redimensionamiento, filtrado, y corrección de color, u operaciones
entre dos imágenes, tales como estimación de movimiento. La
aplicación de tratamiento de imagen también puede ser una
aplicación que captura y/o crea datos digitales de imagen, sin usar
ningún dato de imagen de entrada. La aplicación de tratamiento de
imagen puede también manipular metadatos alrededor de los datos de
imagen, por ejemplo para definir una secuencia de escenas de
información de vídeo de movimiento. La aplicación de tratamiento de
imagen también puede reproducir datos de imagen en uno o más
formatos, sin proporcionar ningún dato de salida.
Aunque la fig. 17 muestra solo una aplicación de
tratamiento de imagen, puede haber múltiples operaciones de
tratamiento de imagen que pueden funcionar en paralelo sobre los
datos o pueden funcionar como una secuencia de operaciones. Hay una
variedad de modos en los que una aplicación de tratamiento de imagen
puede procesar datos de imagen, y el invento no está limitado por
ello. Como ejemplo, el descodificador y/o la aplicación de
tratamiento de imagen y/o el codificador puede ser parte de una
aplicación mayor para editar información de vídeo y pueden acceder
a los datos de imagen en la misma memoria tampón en memoria. Como
otro ejemplo, el descodificador y/o la aplicación de tratamiento de
imagen y/o el codificador pueden "enchufarse" a una aplicación
de edición que permite el acceso a datos de imagen en memoria a
través de una interfaz de programación de aplicación (API). El
codificador y descodificador pueden estar implantados en hardware
que es accedido por la aplicación de tratamiento de imagen.
Con referencia ahora a la fig. 18, se describirá
a continuación un proceso ejemplar para leer tal corriente de bits
para una imagen, usando las estructuras de datos ejemplares de las
figs. 11 a 16. El encabezamiento de imagen (fig. 14) es accedido
(80) para posicionar el i_cuadro_image_descriptor. El
i_cuadro_image_descriptor (fig. 15) es accedido (82) para
posicionar el índice de barrido de imagen. El índice de barrido de
imagen (fig. 16) es accedido a continuación (84) para posicionar,
para cada barrido de trama de macrobloque, el desplazamiento del
barrido de trama de macrobloque (por ejemplo 24) en los datos de
barrido de imagen (12 en la fig. 11). Usando los desplazamientos
recuperados, cada uno de los barridos de trama de macrobloque puede
ser recuperado (86) a partir de los datos de barrido de imagen y
descodificado. Debido a que cada barrido de trama de macrobloque
puede ser accedido aleatoria y directamente, diferentes barridos de
trama de macrobloque pueden ser procesados en paralelo por
procesadores diferentes.
En una realización, si cada barrido de trama de
macrobloque tiene un final de código de bloque, que indica el final
de los datos para el barrido de trama de macrobloque, y si la
cantidad de relleno es conocida, el proceso de la fig. 18 puede ser
modificado para leer los datos sin el índice. En este proceso, los
datos de barrido de trama de macrobloque pueden ser barridos para
el final de código de bloque. Si el relleno es tal que termina en
un límite de datos determinable (tal como un límite divisible por
4096 bytes), entonces el final del barrido de trama de macrobloque
es conocido. La lectura puede saltar directamente al final del
barrido de trama de macrobloque.
Con referencia ahora a la fig. 19, un proceso
ejemplar para escribir tal corriente de bits para una imagen,
usando las estructuras de datos ejemplares de las figs. 11 a 16,
será descrito a continuación. En este ejemplo, se ha supuesto que
los datos son comprimidos y descodificados en orden por el barrido
de trama de macrobloques. Es decir, cada macrobloque es codificado
en orden cuando ocurre a lo largo de un barrido de trama de
macrobloque, y los barridos de trama de macrobloques son
codificados en orden cuando ocurren en la imagen. El proceso de
escritura implica, para cada barrido de imagen, inicializar (90) las
estructuras de datos para el encabezamiento de imagen, descriptor
de cuadro de imagen y el índice de barrido de imagen. El número de
entradas, el número de líneas por barrido de trama de macrobloque y
el tamaño del índice de barrido de imagen pueden ser conocidos y
ajustados en estas estructuras de datos antes de que la compresión
de la imagen comience. Como cada macrobloque es comprimido y
escrito en la corriente de datos de barrido de imagen, el
desplazamiento del primer macrobloque del primer barrido de trama
de macrobloque es almacenado (92) como una entrada en el índice de
barrido de imagen. Los tamaños de los macrobloques son acumulados
(94) para todos los macrobloques en el barrido de trama de
macrobloque. Después de que todos los macrobloques en el barrido de
trama de macrobloque han sido escritos, el tamaño acumulado es
redondeado (96) hasta el límite de datos más próximo (por ejemplo,
un múltiplo de 4096 o 4K). La diferencia entre el tamaño acumulado
y el tamaño redondeado es una cantidad de relleno añadido (98) al
final de los datos para el barrido de trama de macrobloque que está
escrito en la corriente de bits del barrido de imagen. Las
operaciones 92 a 98 son repetidas, como se ha indicado en 99, para
cada barrido de trama de macrobloque en la imagen. Los datos para
cada barrido de imagen de macrobloque también pueden ser
codificados en paralelo.
Los distintos componentes del sistema descrito
aquí pueden ser implantados como un programa de ordenador usando un
sistema de ordenador de propósito general. Tal sistema de ordenador
incluye típicamente una unidad principal conectada tanto a un
dispositivo de salida que presenta información a un usuario, como a
un dispositivo de entrada que recibe entrada desde un usuario. La
unidad principal incluye generalmente un procesador conectado a un
sistema de memoria a través de un mecanismo de interconexión. El
dispositivo de entrada y el dispositivo de salida están también
conectados al procesador y al sistema de memoria a través del
mecanismo de interconexión.
Uno o más dispositivos de salida pueden estar
conectados al sistema de ordenador. Los dispositivos de salida
ejemplares incluyen, pero no están limitados a, una pantalla de
presentación de tubo de rayos catódicos (CRT), pantallas de
presentación de cristal líquido (LCD) y otros dispositivos de salida
de vídeo, impresoras, dispositivos de comunicación tales como un
modem, y dispositivos de almacenamiento tales como un disco o una
cinta. Uno o más dispositivos de entrada pueden estar conectados al
sistema de ordenador. Ejemplos de tales dispositivos de entrada
incluyen, pero no están limitados a, un teclado, un teclado
numérico, una bola de seguimiento, ratón, lápiz y tableta,
dispositivo de comunicación y dispositivos de entrada de datos. El
invento no está limitado a los dispositivos de entrada o salida
particulares en combinación con el sistema de ordenador o a los
descritos aquí.
El sistema de ordenador puede ser un sistema de
ordenador de propósito general que es programable usando un
lenguaje de programación de ordenadores. El sistema de ordenador
puede también ser hardware de propósito especial programado
especialmente. En un sistema de ordenador de propósito general, el
procesador es típicamente un procesador comercialmente disponible.
El ordenador de propósito general tiene también típicamente un
sistema operativo, que controla la ejecución de otros programas de
ordenador y proporciona programación, depuración, control de
entrada/salida, cómputo, compilación, asignación de almacenamiento,
gestión de datos y gestión de memoria, y control de comunicación y
servicios relacionados.
Un sistema de memoria incluye típicamente un
medio legible por ordenador. El medio puede ser volátil o no
volátil, en el que se puede escribir o no, y/o en el que se puede
volver a escribir o no. Un sistema de memoria almacena datos
típicamente en forma binaria. Tales datos pueden definir un programa
de aplicación que ha de ser ejecutado por el microprocesador, o
información almacenada en el disco que ha de ser procesada por el
programa de aplicación. El invento no está limitado a un sistema de
memoria particular.
Un sistema tal y como se ha descrito aquí puede
ser implantado en software, hardware o ("firmware") parte del
software que se encuentra en la ROM, o en una combinación de los
tres. Los distintos elementos del sistema, bien individualmente o
bien en combinación pueden ser implantados como uno o más productos
de programa de ordenador en los que las instrucciones del programa
de ordenador son almacenadas en un medio legible por ordenador para
su ejecución por un ordenador. Distintas operaciones de un proceso
pueden ser realizadas por un ordenador que ejecuta tales
instrucciones de programa de ordenador. El sistema de ordenador
puede ser un sistema de ordenador multiprocesador o puede incluir
múltiples ordenadores conectados sobre una red de ordenadores. Los
componentes del sistema pueden ser módulos separados de un programa
de ordenador, o pueden ser programas de ordenador separados, que
pueden ser ejecutables en ordenadores separados. Los datos
producidos por estos componentes pueden ser almacenados en un
sistema de memoria o transmitidos entre sistemas de ordenador.
Claims (10)
1. Un método para compresión de vídeo entre
cuadros de tasa de bitss fija, que incluye una secuencia de
imágenes, que comprende, para cada imagen: transformar partes de la
imagen (100) para generar coeficientes (104, 1000) de dominio de
frecuencia para cada parte; seleccionar, de una pluralidad de
matrices de cuantificación definidas una respectiva de una
pluralidad de tasas de bit, una matriz de cuantificación (1006) de
acuerdo con una tasa de bitss deseada (1022); determinar una tasa
de bitss (1016) para cada parte transformada de la imagen aplicando
la matriz de cuantificación seleccionada con cada una de una
pluralidad de factores de escala a la parte transformada; estimar
distorsión para cada parte de acuerdo con la pluralidad de factores
de escala; seleccionar un factor de escala (1024) para cada parte
para minimizar la distorsión total en la imagen al tiempo que se
consigue una tasa de bits deseada; cuantificar los coeficientes de
dominio de frecuencia para cada parte usando la matriz de
cuantificación seleccionada como es escalada por el factor de escala
seleccionado para la parte; codificar por entropía los coeficientes
(108) de dominio de frecuencia cuantificados usando una
codificación de longitud variable para proporcionar datos
comprimidos (112) para cada una de las partes definidas; y emitir
los datos comprimidos para cada una de las partes definidas para
proporcionar una corriente de bits comprimidos a la tasa de bits
deseada.
2. El método según la reivindicación 1ª, en el
que la distorsión es estimada de acuerdo con un cuadrado del factor
de escala.
3. El método según la reivindicación 1ª, en el
que cuantificar los coeficientes de dominio de frecuencia (1000)
comprende además escalar usando un factor de ponderación (1002)
seleccionado de entre una pluralidad de factores de ponderación de
acuerdo con la profundidad de bit de los datos de imagen.
4. El método según la reivindicación 1ª, en el
que cada una de la pluralidad de factores de escala es una potencia
de dos.
5. El método según la reivindicación 4ª, en el
que el factor de escala seleccionado es una potencia de dos.
6. El método según la reivindicación 1ª, en el
que determinar una tasa de bits comprende: determinar un factor de
escala máximo que hará que los datos de imagen sean completamente
cuantificados; e interpolar para proporcionar una tasa de bits
estimada para uno o más factores de escala entre el factor de escala
máximo y un mayor factor de escala para el que se ha determinado
una tasa de bits.
7. El método según la reivindicación 1ª, en el
que la codificación por entropía comprende: para cada valor
distinto de cero no precedido por un valor de cero, determinar si el
valor distinto de cero está en un intervalo de base o en un
intervalo de índice; para cada valor distinto de cero no precedido
por un valor de cero y en el intervalo de base, codificar el valor
distinto de cero usando una palabra de código a partir de un primer
conjunto de palabras de código; para cada valor distinto de cero no
precedido por un valor de cero y en el intervalo de índice,
determinar un índice y codificar el valor distinto de cero usando
una palabra de código a partir de un segundo conjunto de palabras
de código, seguida por el índice; para cada valor distinto de cero
precedido por un valor de cero, determinar si el valor distinto de
cero está en un intervalo de base o en un intervalo de índice; para
cada valor distinto de cero precedido por un valor de cero y en el
intervalo de base, codificar el valor distinto de cero usando una
palabra de código a partir de un tercer conjunto de palabras de
código y codificar el valor de cero usando una palabra de código
procedente de un quinto conjunto de palabras de código y después de
la palabra de código para el valor distinto de cero; y para cada
valor distinto de cero precedido por un valor de cero y en el
intervalo de índice, determinar un índice y codificar el valor
distinto de cero usando una palabra de código procedente de un
cuarto conjunto de palabras de código, seguida por el índice y
codificar el valor cero usando una palabra de código procedente del
quinto conjunto de palabras de código y después palabra de código
para el valor distinto de cero.
8. El método según la reivindicación 1ª, en el
que la matriz de cuantificación incluye una pluralidad de
cuantificadores, en que cada cuantificador corresponde a un
coeficiente de frecuencia, y en el que cuantificar los coeficientes
de frecuencia incluye cuantificar cada coeficiente de frecuencia
usando el cuantificador correspondiente de modo que proporcione una
zona muerta que tiene una anchura mayor que un valor del
cuantificador.
9. Un método para codificar por entropía una
serie de valores, que comprende: para cada valor distinto de cero
no precedido por un valor de cero, determinar si el valor distinto
de cero está en un intervalo de base o en un intervalo de índice;
para cada valor distinto de cero no precedido por un valor de cero,
y en el intervalo de base, codificar el valor distinto de cero
usando una palabra de código procedente de un primer conjunto de
palabras de código; para cada valor distinto de cero no precedido
por un valor de cero y en el intervalo de índice, determinar un
índice y codificar el valor distinto de cero usando una palabra de
código procedente de un segundo conjunto de palabras de código,
seguida por el índice; para cada valor distinto de cero precedido
por un valor de cero, determinar si el valor distinto de cero está
en un intervalo de base o en un intervalo de índice; para cada
valor distinto de cero precedido por un valor de cero y en el
intervalo de base, codificar el valor distinto de cero usando una
palabra de código procedente de un tercer conjunto de palabras de
código y codificar el valor de cero usando una palabra de código
procedente de un quinto conjunto de palabras de código y después la
palabra de código para el valor distinto de cero; y para cada valor
distinto de cero precedido por un valor de cero y en el intervalo
de índice, determinar un índice y codificar el valor distinto de
cero usando una palabra de código procedente de un cuarto conjunto
de palabras de código, seguida por el índice y codificar el valor
cero usando una palabra de código procedente del quinto conjunto de
palabras de código y después la palabra de código para el valor
distinto de cero.
10. Un método de optimización de tasa de bits y
distorsión en compresión de datos, que comprende: determinar una
tasa de bits (1016) para cada parte de los datos que son comprimidos
usando una pluralidad de factores de escala, incluyendo: determinar
un factor de escala máximo que causará una distorsión total a la
parte de los datos; e interpolar entre el factor de escala máximo y
el mayor factor de escala para el que se ha determinado una tasa de
bits para estimar una tasa de bits correspondiente a un factor de
escala entre el mayor factor de escala y el factor de escala
máximo; estimar distorsión para cada parte de los datos que son
comprimidos de acuerdo con la pluralidad de factores de escala; y
seleccionar factores de escala (1024) para cada parte para
minimizar la distorsión total de los datos para conseguir una tasa
de bits deseada (1022).
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US46054703P | 2003-04-04 | 2003-04-04 | |
US46051703P | 2003-04-04 | 2003-04-04 | |
US460547P | 2003-04-04 | ||
US460517P | 2003-04-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2299847T3 true ES2299847T3 (es) | 2008-06-01 |
Family
ID=33162234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES04749684T Expired - Lifetime ES2299847T3 (es) | 2003-04-04 | 2004-04-01 | Tasa de bits fija, compresion y descompresion entre cuadros de un video. |
Country Status (8)
Country | Link |
---|---|
EP (1) | EP1629675B1 (es) |
AT (1) | ATE383716T1 (es) |
CA (3) | CA2521467C (es) |
DE (1) | DE602004011213T2 (es) |
DK (1) | DK1629675T3 (es) |
ES (1) | ES2299847T3 (es) |
PT (1) | PT1629675E (es) |
WO (1) | WO2004091221A2 (es) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7433519B2 (en) * | 2003-04-04 | 2008-10-07 | Avid Technology, Inc. | Bitstream format for compressed image data |
US7403561B2 (en) | 2003-04-04 | 2008-07-22 | Avid Technology, Inc. | Fixed bit rate, intraframe compression and decompression of video |
GB2492392B (en) * | 2011-06-30 | 2014-09-03 | Canon Kk | Method for encoding and decoding an image, and corresponding devices |
GB2575434B (en) | 2018-06-29 | 2020-07-22 | Imagination Tech Ltd | Guaranteed data compression |
GB2575121B (en) * | 2018-06-29 | 2022-12-28 | Imagination Tech Ltd | Guaranteed data compression |
WO2023230933A1 (zh) * | 2022-05-31 | 2023-12-07 | 上海玄戒技术有限公司 | 图像压缩方法、装置、电子设备、芯片及储存介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69222332T2 (de) * | 1991-02-21 | 1998-01-29 | Nippon Electric Co | Kodierungsgerät zur Kompression von bewegten Bilddaten |
EP0618733B1 (en) * | 1993-03-29 | 2000-05-24 | Canon Kabushiki Kaisha | Code amount control method and encoding apparatus for carrying it out. |
US5724097A (en) * | 1993-10-18 | 1998-03-03 | Mitsubishi Denki Kabushiki Kaisha | Adaptive quantization of video based on edge detection |
US6160846A (en) * | 1995-10-25 | 2000-12-12 | Sarnoff Corporation | Apparatus and method for optimizing the rate control in a coding system |
US5821887A (en) * | 1996-11-12 | 1998-10-13 | Intel Corporation | Method and apparatus for decoding variable length codes |
WO1998035500A1 (en) * | 1997-02-11 | 1998-08-13 | Sharp Kabushiki Kaisha | Method and apparatus for optimizing quantizer values in an image encoder |
US6118822A (en) * | 1997-12-01 | 2000-09-12 | Conexant Systems, Inc. | Adaptive entropy coding in adaptive quantization framework for video signal coding systems and processes |
US6408026B1 (en) * | 1999-08-06 | 2002-06-18 | Sony Corporation | Deadzone quantization method and apparatus for image compression |
-
2004
- 2004-04-01 WO PCT/US2004/010243 patent/WO2004091221A2/en active IP Right Grant
- 2004-04-01 DK DK04749684T patent/DK1629675T3/da active
- 2004-04-01 EP EP04749684A patent/EP1629675B1/en not_active Expired - Lifetime
- 2004-04-01 CA CA002521467A patent/CA2521467C/en not_active Expired - Lifetime
- 2004-04-01 AT AT04749684T patent/ATE383716T1/de active
- 2004-04-01 CA CA2640597A patent/CA2640597C/en not_active Expired - Lifetime
- 2004-04-01 DE DE602004011213T patent/DE602004011213T2/de not_active Expired - Lifetime
- 2004-04-01 ES ES04749684T patent/ES2299847T3/es not_active Expired - Lifetime
- 2004-04-01 PT PT04749684T patent/PT1629675E/pt unknown
- 2004-04-01 CA CA2639643A patent/CA2639643C/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
WO2004091221A3 (en) | 2005-04-21 |
WO2004091221A2 (en) | 2004-10-21 |
PT1629675E (pt) | 2008-04-18 |
CA2521467A1 (en) | 2004-10-21 |
CA2640597C (en) | 2010-06-22 |
CA2521467C (en) | 2008-12-16 |
CA2639643A1 (en) | 2004-10-21 |
CA2640597A1 (en) | 2004-10-21 |
DE602004011213D1 (de) | 2008-02-21 |
DE602004011213T2 (de) | 2009-01-08 |
EP1629675A2 (en) | 2006-03-01 |
CA2639643C (en) | 2010-11-09 |
DK1629675T3 (da) | 2008-05-19 |
ATE383716T1 (de) | 2008-01-15 |
EP1629675B1 (en) | 2008-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2584035T3 (es) | Optimizador configurable de patrones | |
JP4430711B2 (ja) | 縮小サイズまたはフルサイズでの再生を動的に選択的に行うための複数の独立した符号化チェーンを備えるビデオ符号化システム | |
US11792405B2 (en) | Codec | |
KR101461771B1 (ko) | 랜덤 액세스 능력을 갖는 이미지 압축 방법 | |
ES2240263T3 (es) | Matriz de cuantificacion para el codificado de imagenes fijas y en movimiento. | |
US7729423B2 (en) | Fixed bit rate, intraframe compression and decompression of video | |
US8170095B2 (en) | Faster image processing | |
ES2275037T3 (es) | Procedimiento de codificacion de video con compensacion de fundido. | |
US10313695B2 (en) | Parallel decode of a progressive JPEG bitstream | |
BRPI0210786B1 (pt) | método para codificar dados de imagem digital usando compressão adaptativa de dados de vídeo | |
JP2016226001A (ja) | デコーダおよび復号方法 | |
JP2007235759A (ja) | 画像符号化装置及びその制御方法 | |
JP3618833B2 (ja) | 画像処理装置及び方法 | |
BRPI0007042B1 (pt) | método e dispositivo para codificação de um sinal, codificador, sistema de câmera, método de decodificação, decodificador escalonável, receptor, corrente de bits escalonável, e, meio de armazenamento | |
ES2299847T3 (es) | Tasa de bits fija, compresion y descompresion entre cuadros de un video. | |
JP2005191956A (ja) | 表示用データ圧縮/伸張方法 | |
US20060278725A1 (en) | Image encoding and decoding method and apparatus, and computer-readable recording medium storing program for executing the method | |
US20080260272A1 (en) | Image coding device, image coding method, and image decoding device | |
US10536697B2 (en) | Method for re-encoding image and apparatus therefor | |
JP4575344B2 (ja) | 縮小サイズまたはフルサイズでの再生を動的に選択的に行うための複数の独立した符号化チェーンを備えるビデオ符号化システム | |
EP1892965A2 (en) | Fixed bit rate, intraframe compression and decompression of video | |
KR100495001B1 (ko) | 이미지 압축 부호화 방법 및 시스템 | |
Piorun | Hardware Implementation of JPEG-LS codec | |
BR112018007891B1 (pt) | Método e dispositivo para codificação por entropia de dados de vídeo,método e dispositivo para decodificação por entropia de dados de vídeo, e memória legível por computador | |
BR102013020614A2 (pt) | Decoder and method |