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 PDF

Info

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
Application number
ES04749684T
Other languages
English (en)
Inventor
Dane P. Kottke
Katherine H. Cornog
Michel Rynderman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avid Technology Inc
Original Assignee
Avid Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Avid Technology Inc filed Critical Avid Technology Inc
Application granted granted Critical
Publication of ES2299847T3 publication Critical patent/ES2299847T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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/91Entropy 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.
Antecedentes
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.
Resumen
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
Breve descripción de los dibujos
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
Descripción detallada
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:
1
El valor descuantificado, \hat{x}, sería:
2
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),
\hskip1cm
65 \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,
\hskip1cm
V = 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.
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.
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.
\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).
ES04749684T 2003-04-04 2004-04-01 Tasa de bits fija, compresion y descompresion entre cuadros de un video. Expired - Lifetime ES2299847T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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