MX2010011961A - Representacion de nivel multiple de coeficientes de transformacion reordenados. - Google Patents

Representacion de nivel multiple de coeficientes de transformacion reordenados.

Info

Publication number
MX2010011961A
MX2010011961A MX2010011961A MX2010011961A MX2010011961A MX 2010011961 A MX2010011961 A MX 2010011961A MX 2010011961 A MX2010011961 A MX 2010011961A MX 2010011961 A MX2010011961 A MX 2010011961A MX 2010011961 A MX2010011961 A MX 2010011961A
Authority
MX
Mexico
Prior art keywords
level
group
tool
coefficients
symbol
Prior art date
Application number
MX2010011961A
Other languages
English (en)
Inventor
Shankar Regunathan
Chengjie Tu
Shijun Sun
Chi-Lung Lin
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of MX2010011961A publication Critical patent/MX2010011961A/es

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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/162User input
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length 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)

Abstract

Se presentan técnicas y herramientas para codificar y descodificar un bloque de coeficientes de frecuencia. Un codificador selecciona un orden de escaneo de múltiples órdenes de escaneo disponibles y después aplica el orden de escaneo seleccionado a una matriz bidimensional de coeficientes de transformación, agrupa valores de no cero de los coeficientes de frecuencia juntos en una secuencia unidimensional. El codificador codifica por entropía la secuencia unidimensional de valores de coeficiente de acuerdo con una representación del grupo anidado de nivel múltiple. En la descodificación, un descodificador descodifica por entropía la secuencia unidimensional de valores de coeficiente de la representación de grupo anidado de nivel múltiple. El descodificador selecciona el orden de escaneo de entre múltiples órdenes de escaneo disponibles y después reordena los coeficientes de nuevo en una matriz bidimensional al utilizar el orden de escaneo seleccionado.

Description

REPRESENTACION DE NIVEL MULTIPLE DE COEFICIENTES DE TRANSFORMACION REORDENADOS ANTECEDENTES Cuando se codifica una imagen tal como un marco de video o una imagen fija, un codificador típicamente divide los datos visuales en bloques de valores de muestra. El codificador realiza una transformación de frecuencia tal como una transformación de coeficiente distinta (DCT) para convertir el bloque de valores de muestra en un bloque de coeficientes de transformación. El coeficiente de transformación por convención mostrado en la izquierda superior del bloque generalmente se denomina como el coeficiente DC, y los otros coeficientes generalmente se denominan como los coeficientes AC. Para la mayoría de los bloques de valores de muestra, una transformación de frecuencia tiende a agrupar valores de no cero de los coeficientes de transformación hacia la sección de frecuencia inferior de izquierda superior del bloque de los coeficientes de transformación.
Después de la transformación de frecuencia, el codificador cuantifica los valores de coeficiente de transformación. La cuantif icación generalmente reduce el número de valores posibles para los coeficientes DC y AC. Esto usualmente reduce la resolución así como la fidelidad de los valores cuantif icados a los valores de coeficiente originales, pero hace que la codificación de entropía subsecuente sea más efectiva. La cuantificación también tiende a "remover" los coeficientes de frecuencia superior (generalmente agrupados en el lado derecho inferior del bloque), cuando los coeficientes de frecuencia superior tienen amplitudes bajas que se cuantifican a cero.
La Figura 1 muestra un ejemplo de un bloque 8 ^ 8 (100) de coeficientes de transformación después de la cuantificación. En este bloque ilustrativo (100), el valor 25 en esquina izquierda superior del bloque es el coeficiente DC, y los otros 63 valores son los coeficientes AC. Aunque los coeficientes de amplitud superior en el bloque (100) son los coeficientes de frecuencia baja en la izquierda superior, a lo largo del lado derecho, el bloque incluye un grupo de valores de coeficiente de no cero en frecuencias superiores.
Después de que se cuantificaron los coeficientes de transformación, la entropía de codificador codifica los coeficientes de transformación cuantificados. Un método común para codificar un bloque de coeficientes de transformación inicia al reordenar el bloque al utilizar un orden de escaneo de "zigzag" (200) como se muestra en la Figura 2. En este método, el codificador traza los valores de los coeficientes de transformación a partir de una disposición bidimensional en una secuencia unidimensional de acuerdo con un orden de escaneo (200). El orden de escaneo (200) comienza en la izquierda superior del bloque (100) con el coeficiente DC, atraviesa los coeficientes AC del bloque (100) en las posiciones 1 y 2, atraviesa los coeficientes AC en las posiciones 3, 4, y 5, y así sucesivamente. El escaneo continúa diagonalmente a través del bloque (100) de acuerdo con el orden de escaneo (200), terminando en la esquina derecha inferior del bloque (100) con el coeficiente AC de frecuencia más alta en la posición 63. Debido a que la operación de cuantificación típicamente cuantifica a ser una porción significativa de los coeficientes de bajo valor, frecuencia superior mientras conservan valores de no cero para los coeficientes de valor superior, frecuencia inferior, el reordenamiento de escaneo de zigzag comúnmente resulta en que la mayoría de los coeficientes de transformación no cero restantes están cerca del inicio de la secuencia unidimensional y un gran número de valores cero está el final de la secuencia.
La Figura 2 muestra una secuencia unidimensional ilustrativa (250) que resulta de aplicar el orden de escaneo (200) al bloque (100) de coeficientes de transformación. En este ejemplo, la secuencia unidimensional (250) inicia con el valor 25 que corresponde al coeficiente DC del bloque (100). El orden de escaneo entonces lee el valor 12, seguido por los dos valores de cero, un valor de -52, y así sucesivamente. El símbolo "EOB" significa "fin del bloque" e indica que todos los valores restantes en el bloque son 0.
El codificador entonces codifica por entropía el vector unidimensional de valores de coeficiente al utilizar la codificación de longitud de funcionamiento o la codificación del nivel de funcionamiento. En la codificación del nivel de funcionamiento, el codificador atraviesa el vector unidimensional, codifica cada funcionamiento de valores cero consecutivos como una cuenta de funcionamiento, y codifica cada valor de no cero como un nivel. Para codificación simple, el codificador asigna códigos de longitud variable tal como códigos de Huffman para las cuentas de funcionamiento y los valores de nivel.
Un problema con la codificación simple es que la cuenta de funcionamiento puede variar de 0 a 64, que requiere un alfabeto de 65 códigos sólo para la cuenta de funcionamiento. Si el codificador conjuntamente codifica una cuenta de funcionamiento con un valor de nivel no cero subsecuente (para tomar ventaja de la correlación entre la cuenta de funcionamiento y los valores de nivel), el tamaño del alfabeto de nivel de cuenta de funcionamiento es mucho mayor, lo que aumenta la complejidad de la codificación de entropía (por ejemplo, debido a tamaños de tabla y operaciones de revisión). Al utilizar códigos de escape para combinaciones menos frecuentes ayuda a controlar el tamaño de tabla de código pero puede disminuir la eficiencia de codificación.
Otro problema con la codificación de nivel de funcionamiento surge cuando el codificador utiliza los mismos valores de código posibles para combinaciones de nivel de funcionamiento sin importar que coeficientes AC estén siendo codificados. Si la oportunidad de encontrar un funcionamiento largo de valores cero aumenta para coeficientes AC de frecuencia superior, utilizar los mismos valores de código posibles para combinaciones de nivel de funcionamiento daña la eficiencia.
Finalmente, reordena el reordenamiento al utilizar el orden de escaneo de zigzag (200) mostrado en la Figura 2 puede, en algunos casos, dañar la eficiencia de codificación. En general, los valores de coeficientes cercanos dentro del bloque están correlacionados, si un valor de coeficiente de transformación es cero, si los vecinos más probablemente van a ser cero, y si un valor de coeficiente transformación es no cero, sus vecinos más probablemente van a ser no cero. El reordenamiento al utilizar el orden de escaneo de zigzag (200) en algunos casos separa las posiciones de coeficiente vecinas (por ejemplo, posiciones 15 y 27) en el vector unidimensional. Por ejemplo, aunque los coeficientes no cero en el bloque (100) en la Figura 1 aparecen en dos grupos, los valores de coeficiente de no cero en la secuencia unidimensional (250) de la Figura 2 están interrumpidos 4 veces por una serie de uno o más valores "0".
Dada la importancia crítica de codificar y descodificar a video digital, no es sorprendente que la codificación y la descodificación de video sean campos ricamente desarrollados. Cualquiera que sean los beneficios de las técnicas de codificación y descodificación de video previo, sin embargo, no tienen las ventajas de las siguientes técnicas y herramientas.
BREVE DESCRIPCION DE LA INVENCION En una breve descripción, la descripción detallada presenta técnicas y herramientas para codificar y descodificar bloques de coeficientes de frecuencia. Por ejemplo, las técnicas y herramientas mejoran el desempeño de un codificador al mejorar la compresión de bloques de coeficientes de frecuencia. La eficiencia de la compresión disminuye al agrupar valores de no cero de los coeficientes de frecuencia juntos dentro de una secuencia unidimensional y entonces codificar por entropía los valores de coeficiente de acuerdo con una representación de grupo anidada de nivel múltiple.
En una modalidad una herramienta, tal como una herramienta de codificación, selecciona uno de múltiples órdenes de escaneo y aplica el orden de escaneo seleccionado para reordenar los coeficientes de frecuencia de un bloque. La entropía de herramienta codifica los coeficientes de frecuencia reordenados al utilizar una representación de grupo anidada de nivel múltiple de los coeficientes de frecuencia reordenados. Esto incluye representar un primer grupo de uno o más de los coeficientes de frecuencia reordenados en una representación de resumen como un primer símbolo en un primer nivel de la representación de resolución múltiple, y codificar por entropía el primer símbolo y un segundo símbolo en el primer nivel de la representación de resolución múltiple. En algunos casos, la herramienta además representa un primer subgrupo de uno o más de los coeficientes de frecuencia reordenados del primer grupo en la representación de resumen como un primer sub-símbolo en un segundo nivel de la representación de grupo anidado, y codifica por entropía y herramienta el primer sub-símbolo.
En otra modalidad, una herramienta tal como una herramienta de descodificación, reconstruye el video codificado por entropía mediante información de video de descodificación de entropía de una corriente de datos. La herramienta descodifica un primer símbolo y el segundo símbolo en un primer nivel de una representación de grupo anidado de nivel múltiple de coeficientes de frecuencia. El primer símbolo representa un primer grupo de uno o más de los coeficientes de frecuencia, y el segundo símbolo representa un segundo grupo de uno o más de los coeficientes de frecuencia. Después, la herramienta descodifica un primer sub-símbolo en un segundo nivel de la representación del grupo anidado de nivel múltiple. El sub-símbolo representa un primer subgrupo de uno o más de los coeficientes de frecuencia del primer grupo. La herramienta entonces determina un orden de escaneo para los coeficientes de frecuencia, reordena los coeficientes de acuerdo con el orden de escaneo, y utiliza los coeficientes para reconstruir el video.
En algunas implementaciones, una herramienta de codificación utiliza la codificación de Huffman para codificación por entropía, y una herramienta de decodificación utiliza decodificación de Huffman correspondiente. En otras implementaciones, la herramienta de codificación utiliza codificación de nivel de funcionamiento u otra variación de codificación de longitud de funcionamiento, y la herramienta de descodificación utiliza descodificación correspondiente. En algunas implementaciones, las herramientas de codificación y descodificación seleccionan el orden escaneo para un bloque de entre múltiples órdenes de escaneo predeterminados. En otras implementaciones, la herramienta de codificación determina un nuevo orden de escaneo sin ninguno de los órdenes de escaneo predeterminados produce compresión adecuada de los coeficientes de transformación.
Los objetos, características, y ventajas anteriores y otros de la invención serán más evidentes a partir de la siguiente descripción detallada, que procede con referencia las figuras anexas. Esta breve descripción se proporciona para introducir una selección de conceptos en forma simplificada que además se describe a continuación en la descripción detallada. Esta breve descripción no pretende identificar características clave o características esenciales del tema reclamado, ni pretende utilizarse para limitar el alcance del tema reclamado.
BREVE DESCRIPCION DE LOS DIBUJOS La Figura 1 es un cuadro que muestra un bloque ilustrativo de coeficientes de transformación cuantificados.
La Figura 2 incluye un cuadro que ilustra un orden de escaneo de zigzag de la técnica previa y también muestra el resultado de aplicar el orden de escaneo de zigzag al bloque de coeficiente de transformación de la Figura 1.
La Figura 3 es un diagrama de bloques de un ambiente de cómputo adecuado en el cual pueden implementarse varias modalidades descritas.
La Figura 4 es un diagrama de bloques de una herramienta de codificación generalizada operable para seleccionar un orden de escaneo y codificar una imagen utilizando una representación de grupo anidado de nivel múltiple de bloques.
Las Figuras 5A-C son cuadros de flujo que ilustran diferentes técnicas generalizadas para seleccionar un orden de escaneo y codificar una imagen al utilizar una representación de grupo anidado de nivel múltiple.
La Figura 6 es un cuadro de flujo que ilustra una técnica ilustrativa para seleccionar un orden de escaneo y codificar una imagen utilizando una representación de grupo anidado de nivel múltiple.
Las Figura 7 y 8 incluyen cuadros que ilustran órdenes de escaneo ilustrativos y también muestran los resultados de aplicar los órdenes de escaneo respectivos al bloque de coeficientes de transformación de la Figura 1.
Las Figuras 9A y 9B son listados de pseudo-código que ilustran señalizaciones de selecciones de orden escaneo.
La Figura 10 es un cuadro de flujo que ilustra una técnica ilustrativa de codificación de un grupo de valores de coeficiente de frecuencia para un bloque utilizando una representación de grupo anidado de nivel múltiple.
Las Figuras 11A, 11B, y 11C son diagramas de representaciones de grupo anidado de nivel múltiple ilustrativas.
La Figura 12A es un diagrama que ilustra la aplicación de la representación de grupo anidado de nivel múltiple de la Figura 11A al vector de valores de coeficiente reordenados mostrados en la Figura 7.
La Figura 12B es un diagrama que ilustra la aplicación de la representación de grupo anidado de nivel múltiple de la Figura 11A al vector de valores de coeficiente reordenados mostrado en la Figura 8.
Las Figuras 13A y 13B son diagramas que ilustran códigos de Huffman ilustrativos para las representaciones de grupo anidado de nivel múltiple de las Figura 12A y 12B, respectivamente.
La Figura 14 es un diagrama de bloques de un sistema de descodificación generalizado para descodificar una representación de grupo anidado de nivel múltiple reordenado de bloques de una imagen.
La Figura 15 es un cuadro de flujo que ilustra una técnica generalizada para descodificar una representación de grupo anidado en nivel múltiple reordenado de un bloque.
La Figura 16 es un cuadro de flujo que ilustra una técnica ilustrativa para descodificar una representación de grupo anidado de nivel múltiple reordenada de un bloque.
DESCRIPCION DETALLADA La siguiente descripción detallada presenta herramientas técnicas para codificar un grupo de coeficientes de frecuencia al reordenarlos de acuerdo con un orden escaneo para convertir los valores de los coeficientes de frecuencia en una secuencia unidimensional de valores. La secuencia de valores se codifica de acuerdo con un método de codificación por entropía que utiliza una representación de grupo anidado de nivel múltiple. La siguiente descripción detallada también presenta herramientas correspondientes y técnicas para descodificar un grupo de coeficientes de frecuencia.
Algunas de las técnicas y herramientas utilizadas aquí atienden uno o más de los problemas notados en los antecedentes. Típicamente, una técnica/herramienta dada no resuelve todos esos problemas. En lugar de eso, en vista de las limitaciones e intercambios en tiempo de codificación, recursos de codificación, tiempo de descodificación, recursos de descodificación y/o calidad, la técnica/herramienta dada mejora codificación y/o desempeño para una implementación o escenario particular.
I. Ambiente de Cómputo La Figura 3 ilustra un ejemplo generalizado de un ambiente de cómputo adecuado (300) en donde pueden implementarse varias de las modalidades descritas. El ambiente de cómputo (300) no pretende sugerir ninguna limitación al alcance de uso o funcionalidad, ya que las técnicas y herramientas pueden implementarse en diversos ambientes de cómputo de propósito general o de propósito especial.
Con referencia a la Figura 3, el ambiente de cómputo (300) incluye al menos una unidad de procesamiento (310) y memoria (320). En la Figura 3, esta configuración muy básica (330) se incluye dentro de la línea punteada. La unidad de procesamiento (310) ejecuta instrucciones ejecutables por computadora y puede ser un procesador real o uno virtual. En un sistema de procesamiento múltiple, las unidades de procesamiento múltiple ejecutan instrucciones ejecutables por computadora para aumentar la energía de procesamiento. La memoria (320) puede ser memoria volátil (por ejemplo, registros, memoria caché, RAM) memoria no volátil (por ejemplo, ROM, EEPROM, memorias flash, etc.), o alguna combinación de los dos. La memoria (320) almacena software (380) al implementar un codificador cón una o más de las técnicas y herramientas descritas para codificar y/o descodificar una representación de grupo anidada de coeficientes de frecuencia reordenados.
Un ambiente de cómputo puede tener características adicionales. Por ejemplo, el ambiente de cómputo (300) incluye almacenamiento (340), uno o más dispositivos de entrada (350), uno o más dispositivos de salida (360), y una o más conexiones de comunicación (370). Un mecanismo de interconexión no mostrado tal como un conductor común, controlador, o red interconecta los componentes del ambiente de cómputo (300). Típicamente, el software de sistema operativo no mostrado proporciona un sistema operativo para otro software que se ejecuta en el ambiente de cómputo (300), y coordina actividades de los componentes del ambiente de cómputo (300).
El almacenamiento (340) puede ser removible o no removible, e incluye discos magnéticos, cintas o cassettes magnéticos, CD-ROM, DVD, o cualquier otro medio que puede utilizarse para almacenar información y que puede accederse dentro del ambiente de cómputo (300). El almacenamiento (340) almacena instrucciones para el software (380) que implementa el codificador y/o descodificador de video.
El dispositivo(s) de entrada (350) puede ser un dispositivo de entrada táctil tal como un teclado, ratón, aguja, o seguibola, un dispositivo de entrada por voz, un dispositivo de escaneo, u otro dispositivo que proporciona entrada al ambiente de cómputo (300). Para codificación de audio o video, el dispositivo(s) de entrada (350) puede ser una tarjeta de video, tarjeta de sonido, tarjeta de sintonizador de TV, o dispositivo similar que acepta entrada de audio o video en forma analógica o digital, o un CD-ROM o CD-RW que lee muestras de audio o video en el ambiente de cómputo (300). El dispositivo(s) de salida (360) puede ser una pantalla, impresora, cocina, escritor de CD, u otro dispositivo que proporciona salida desde el ambiente de cómputo (300).
La conexión(es) de comunicación (370) permite comunicación en un medio de comunicación a otra entidad de cómputo. El medio de comunicación transporta información tal como instrucciones ejecutables por computadora, entrada o salida de audio o video, otros datos en una señal de datos modulada. Una señal de datos modulada es una señal que tiene una o más de sus características establecidas o cambiadas de tal forma para codificar información en la señal. A manera de ejemplo, y no de limitación, los medios de comunicación incluyen técnicas por cable o inalámbricas implementadas con un portador eléctrico, óptico, RF, infrarrojo, acústico, u otro.
Las técnicas y las herramientas pueden describirse en el contexto general de medios legibles por computadora. Los medios legibles por computadora son cualquier medio disponible que puede accederse dentro de un ambiente de cómputo. A manera de ejemplo, y no de limitación, con el ambiente de cómputo (300), el medio legible por computadora incluye memoria (320), almacenamiento (340), medios de comunicación, y combinaciones de cualquiera de los anteriores.
Las técnicas y herramientas pueden describirse en el contexto general de instrucciones ejecutables por computadora, tal como aquellas incluidas en módulos de programa, que se ejecutan en un ambiente de cómputo en un procesador real o virtual objetivo. Generalmente, los módulos de programa incluyen rutinas, programas, bibliotecas, objetos, clases, componentes, estructuras de datos, etc. que realizan tareas particulares o implementan tipos de datos abstractos particulares. La funcionalidad de los módulos de programa puede combinarse o dividirse entre módulos de programa como se desee en varias modalidades. Las instrucciones ejecutables por computadora para módulos de programa pueden ejecutarse dentro de un ambiente de cómputo local o distribuido.
Para búsqueda de presentación, la descripción detallada utiliza términos como "determinar" y "reconstruir" para describir operaciones de computadora en un ambiente de cómputo. Estos términos son abstracciones de alto nivel para operaciones realizadas por una computadora, y no deben confundirse con actos realizados por un ser humano. Las operaciones de computadora reales que corresponden a aquellos términos varían dependiendo de la implementación.
M. Una Herramienta de Codificación Generalizada para una Representación de Grupo Anidado de Coeficientes de Frecuencia Reordenados La Figura 4 ilustra un diagrama de bloques de una herramienta de codificación generalizada (400) en donde pueden implementarse las modalidades de esta descripción. La herramienta (400) recibe una imagen de entrada (405) en una secuencia. El término imagen generalmente se refiere a una fuente, datos de imagen codificados o reconstruidos. Para video progresivo, una imagen es un marco de video progresivo. Para video entrelazado, una imagen puede referirse a un marco de video entrelazado, el campo superior del marco, o el campo inferior del marco, dependiendo del contexto. La imagen de entrada (405) puede ser un marco completo de video o una imagen estática, o la imagen de entrada puede ser sólo una porción del marco de video o una porción de una imagen estática. Alternativamente, la imagen de entrada (405) puede comprender solamente un componente de color de una imagen muestreada hacia abajo, por ejemplo el componente de una imagen YCbCr.
Para la búsqueda de simplicidad, la Figura 4 muestra módulos de la herramienta de codificación (400) que se refiere al estimado de movimiento, compensación de movimiento, y otro procesamiento de movimiento. En algunas implementaciones, además de los bloques de procesamiento de los valores de muestra para compresión intra-imagen, la herramienta (400) procesa bloques de valores de muestra de residuos de compensación de movimiento al utilizar módulos mostrados en la Figura 4. Para un bloque residual dado, la herramienta realiza una transformación de frecuencia, cuantificación, reordenamiento de escaneo y codificación por entropía de los valores de coeficiente de frecuencia del bloque residual.
En la Figura 4, para compresión intra-imagen, un divisor (410) divide la imagen de entrada (405) en una serie de bloques, cada uno que contiene una pluralidad de valores de muestra. Para un bloque de 8 x 8, cada bloque comprende 64 valores de muestra dispuestos en 8 filas y 8 columnas. Alternativamente, los bloques pueden ser 4 x 4, 4 x 8, 8 x 4, 16 x 16, o de algún otro tamaño.
Un transformador de frecuencia (415) convierte los bloques de coeficientes de transformación en datos de dominio de frecuencia (es decir, espectrales, de transformación). El transformador de frecuencia (415) aplica un DCT, un variante de DCT, u otra transformación de frecuencia a los bloques de valores de muestra, lo que produce bloques de coeficientes de transformación de frecuencia. El transformador de frecuencia (415) puede aplicar una transformación de frecuencia de 8 ? 8, 8 ? 4, 4 ? 8, 4 ? 4 u otro tamaño.
Un cuantificador (420) entonces cuantifica los bloques de coeficientes de transformación. El cuantificador (420) aplica cuantificación escalar no uniforme a los datos espectrales con un tamaño de paso que varía en una base de imagen por imagen, base de bloque por bloque, u otra base. El cuantificador (420) también puede aplicar otro tipo de cuantificación a los coeficientes de datos espectrales, por ejemplo, una cuantificación uniforme o adaptiva para al menos algunos de los coeficientes, o directamente cuantifica datos de dominio espacial en un sistema de codificador que no utiliza transformaciones de frecuencia.
Un escáner/reordenador de coeficiente (425) escanea los coeficientes cuantificados y los reordena en una secuencia unidimensional de acuerdo con un orden de escaneo. Un codificador de entropía (430) codifica los coeficientes en la secuencia unidimensional. Por ejemplo, el codificador de entropía (430) codifica los coeficientes de transformación al utilizar codificación de Huffman adaptiva. Alternativamente, el codificador de entropía puede codificar los coeficientes de transformación al utilizar codificación de longitud de funcionamiento, codificación de nivel de funcionamiento, o algún otro método de codificación de entropía. El codificador de entropía (430) produce los valores de coeficiente codificados por entropía (435) para una memoria intermedia (440).
En algunas modalidades la herramienta (400) utiliza cualquiera de los órdenes de escaneo múltiples disponibles para el escáner de coeficiente (425). Por ejemplo, la herramienta (400) cambia entre el orden de escaneo (200) en la Figura 2, el orden de escaneo (700) en la Figura 7, el orden de escaneo (800) en la Figura 8, y uno o más otros órdenes de escaneo. La herramienta (400) selecciona entre los órdenes de escaneo disponibles en una base de bloque por bloque, base de macrobloque por macrobloque, base de pedazo por pedazo, base de imagen por imagen, o en alguna otra base. Los órdenes de escaneo disponibles múltiples pueden incluir uno o más órdenes de escaneo predefinidos que se establecen en la herramienta de codificación y una herramienta de descodificación correspondiente. Cuando se utiliza uno de los órdenes de escaneo predefinidos, la herramienta de codificación (400) señala la selección de orden de escaneo al utilizar un código u otro elemento de corriente de bits que identifica el orden de escaneo seleccionado. Los múltiples órdenes de escaneo disponibles también pueden incluir uno o más órdenes de escaneo que se definen especialmente mediante la herramienta de codificación (400) durante la codificación y señalan a la herramienta de codificar la opción correspondiente para uso en la descodificación. Después de la señalización del mismo orden de escaneo, cuando la herramienta de codificación (400) posteriormente utiliza el orden de escaneo, la herramienta (400) puede señalar un código u otro elemento de corriente de bits que identifica el orden de escaneo, que el descodificador ha almacenado.
Mientras el orden de escaneo de zigzag (200) proporciona agrupación adecuada de valores de no cero para algunos bloques de coeficientes de transformación, al utilizar selectivamente otros órdenes de escaneo la herramienta de codificación (400) puede mejorar frecuentemente la eficiencia de codificación de entropía. La herramienta (400) puede seleccionar un orden de escaneo al utilizar un aspecto de bucle abierto o un aspecto de bucle cerrado. La memoria intermedia (440) almacena los valores de coeficiente codificados por entropía (435), y la plenitud de la memoria intermedia de esa forma proporciona alguna medida de la eficiencia de la compresión proporcionada por la codificación de entropía. Esta medida puede estar basada en tamaño total de los coeficientes comprimidos o alguna otra medida. El escáner de coeficiente (425) puede aplicar diferentes órdenes de escaneo, con la herramienta (400) que evalúa los resultados. En un acercamiento de bucle cerrado, la herramienta (400) aplica cada orden de escaneo disponible y selecciona la que resulta en los valores de coeficiente codificados por entropía más eficientemente comprimidos (435). En algunas implementaciones, si ninguno de los órdenes de escaneo predefinidos proporciona desempeño aceptable (por ejemplo, de acuerdo con un umbral que puede estar pre-programado o definido por usuarios), la herramienta (400) determina un nuevo orden de escaneo y lo señala en la corriente de bits de entrada.
Alternativamente, el orden dé escaneo puede estar dictado por un usuario.
III. Técnicas de Codificación General para una Representación de Grupo Anidado de Coeficientes de Frecuencia Reordenados La Figura 5A muestra un cuadro de flujo de una técnica generalizada (500) para codificar un bloque de coeficientes de frecuencia. Una herramienta de codificación tal como una herramienta (400) descrita con referencia a la Figura 4, u otra herramienta, realiza la técnica (500). La técnica (500) mostrada en la Figura 5A incluye selección adaptiva del orden de escaneo y codificación por entropía al utilizar una representación de grupo anidado de nivel múltiple predeterminada.
.La herramienta selecciona (505) uno de una pluralidad de órdenes de escaneo. El orden de escaneo puede seleccionarse (505) de acuerdo con una eficiencia de compresión de acuerdo con resultados reales o la eficiencia estimada de compresión. Adicionalmente, el orden de escaneo puede ser uno de una pluralidad de órdenes de escaneo predeterminados, o el orden de escaneo puede construirse por la herramienta (400) durante el procedimiento de codificación.
La herramienta entonces aplica (510) el orden escaneo seleccionado a los coeficientes de frecuencia plurales del bloque. Este paso reordena los coeficientes de frecuencia plural en una secuencia unidimensional de coeficientes. Preferiblemente, el reordenamiento de acuerdo con el orden de escaneo resulta en la agrupación de los valores de coeficiente de frecuencia no cero dentro de la secuencia unidimensional de coeficientes, por ejemplo, al inicio de la secuencia unidimensional.
Finalmente, la herramienta codifica por entropía (515) los coeficientes de frecuencia reordenados al utilizar una representación del grupo anidado de nivel múltiple predeterminado de los coeficientes de frecuencia reordenados. Las Figuras 11A, 11 B y 11 C muestran ejemplos de representaciones de grupo anidadas de nivel múltiple ilustrativas. Los coeficientes de frecuencia pueden codificarse dentro de la representación de grupo anidada al utilizar métodos de codificación de entropía tal como codificación de Huffman adaptiva, codificación de longitud de funcionamiento, o algún otro método.
La herramienta repite la técnica (500) en una base de bloque por bloque o alguna otra base. Por ejemplo, la herramienta selecciona un orden de escaneo en una base de marco por marco, al seleccionar un orden de escaneo para un marco completo y entonces reordenar los coeficientes de bloques en el marco antes de la codificación por entropía.
La Figura 5B muestra un cuadro de flujo de una técnica generalizada alternativa (520) para codificar el bloque de coeficientes de frecuencia plurales. Una herramienta de codificación tal como una herramienta (400) descrita con referencia a la Figura 4, u otra herramienta, realiza la técnica (520). Comparado con la técnica (500) de la Figura 5A, la técnica (520) mostrada en la Figura 5B incluye un reordenamiento al utilizar un patrón de escaneo predeterminado y una selecciona adaptiva entre diferentes representaciones de grupo anidado de nivel múltiple. En esta técnica (520), el orden de escaneo ya está determinado por la herramienta que realiza el análisis previo, por definición de usuario, o algún otro factor de determinación. La herramienta aplica (525) el orden de escaneo a los coeficientes de frecuencia del bloque. Esto reordena los coeficientes de frecuencia plurales en una secuencia unidimensional de coeficientes.
La herramienta entonces selecciona (530) uno de una pluralidad de representaciones de grupo anidado de nivel múltiple. Las representaciones de grupo anidado pueden seleccionarse basándose en la eficiencia de codificación, definición de usuario, o algún otro factor. La Figura 11A muestra una representación de grupo anidado de nivel múltiple para 64 coeficientes de transformación en un vector unidimensional, de acuerdo con lo cual el grupo se divide en dos subgrupos, cada subgrupo incluye uno o más coeficientes de transformación. La Figura 11B muestra una representación de grupo anidado de nivel múltiple alternativa, de acuerdo con lo cual cada grupo se divide en 2, 3, ó 4 subgrupos, cada subgrupo incluye uno o más coeficientes de transformación. La Figura 11 C muestra una tercera representación de grupo anidado de nivel múltiple con tres capas, en una capa, cada grupo (o subgrupos) está dividido en cuatro subgrupos (o coeficientes de transformación).
Otras representaciones de grupo anidado dividen los 64 coeficientes en forma diferentes, por ejemplo, dividen una capa superior 0 a 64 en un primer grupo para posiciones 0 a 3 y un segundo grupo para posiciones 4 a 63, dividiendo el segundo grupo en primeros y segundos subgrupos, y así sucesivamente. Los patrones específicos de agrupación de coeficientes de frecuencia pueden predecirse para ciertos órdenes de escaneo o tipos de imágenes, y una representación de grupo anidada particular puede especificarse para tomar ventaja de los patrones y además aumentar la eficiencia de codificación. Tipos particulares de codificación de entropía pueden trabajar mejor con representaciones de grupo anidadas particulares que dividen más agresivamente grupos de coeficientes en más subgrupos. La herramienta entonces codifica por entropía (535) los coeficientes de frecuencia plurales reordenados de acuerdo con un método tal como una codificación de Huffman adaptable, codificación de longitud de funcionamiento, o algún otro método de codificación de entropía, al utilizar la representación de grupo anidada seleccionada.
La herramienta repite la técnica (520) en una base de bloque por bloque o alguna otra base. Por ejemplo, la herramienta selecciona una representación de grupo anidado de nivel múltiple en una base de marco por marco, seleccionar una representación de grupo anidado para un marco completo y entonces reordenar los coeficientes de bloque en el marco antes de la codificación por entropía al utilizar la representación de grupo anidado seleccionada.
La Figura 5C muestra un cuadro de flujo de una técnica generalizada alternativa (540) para codificar el bloque de coeficientes de frecuencia. Una herramienta de codificación tal como una herramienta (400) escrita con referencia a la Figura 4, u otra herramienta, realiza la técnica (540). Esta técnica (540) generalmente combina las técnicas (500, 520) descritas con referencia a las Figura 5A y 5B.
En esta técnica (540), la herramienta selecciona (545) una de una pluralidad de órdenes de escaneo y entonces aplica (550) el orden escaneo seleccionado a los coeficientes de frecuencia plurales del bloque. Después, la herramienta selecciona (555) uno de una pluralidad de divisiones de grupo anidado y codifica por entropía (560) los coeficientes de frecuencia plurales reordenados de acuerdo con un método de codificación de entropía tal como la codificación de longitud de funcionamiento, codificación de Huffman adaptable, o algún otro método, al utilizar la división del grupo anidada seleccionada. La herramienta repite la técnica (540) en una base de bloque por bloque o alguna otra base. Por ejemplo, la herramienta selecciona un orden de escaneo y una representación de grupo anidado de nivel múltiple en una base de marco por marco, selecciona el orden de escaneo y la representación de grupo anidado para un marco completo, entonces reordena los coeficientes de bloques en el marco al utilizar el orden escaneo seleccionado antes de la codificación de entropía al utilizar la representación de grupo anidado seleccionado.
IV. Técnicas de Codificación Ilustrativas para una Representación de Grupo Anidado de Coeficientes de Frecuencia Reordenados La Figura 6 muestra un cuadro de flujo de una técnica ilustrativa (600) para codificar bloques de coeficientes de frecuencia para una imagen. Una herramienta de codificación tal como una herramienta (400) descrita con referencia a la Figura 4, o alguna otra herramienta de codificación, realiza la técnica (600).
En esta técnica (600), la herramienta selecciona (605) un orden de escaneo predeterminado para evaluación. Generalmente, la herramienta puede utilizar cualquiera de múltiples órdenes de escaneo predeterminados. En ciertas implementaciones, existe un orden escaneo predeterminado y es el primer orden de escaneo elegido. El orden de escaneo predeterminado puede definirse en el código de fuente para la herramienta de codificación, o como una configuración de herramienta de codificación, o un usuario puede definir el orden de escaneo predeterminado para una imagen específica o una secuencia cuando se inicia la codificación. Alternativamente, no existe un orden de escaneo predeterminado y en lugar de esto se eligen uno de los múltiples órdenes de escaneo predeterminados al azar.
La herramienta aplica (610) el orden de escaneo predeterminado seleccionado para reordenar los coeficientes de frecuencia de los bloques. Para un bloque dado, aplicar el orden de escaneo predeterminado generalmente comprende atravesar el bloque bidimensional de coeficientes de frecuencia de acuerdo con el orden escaneo, y reordenar los coeficientes en una secuencia unidimensional de coeficientes de frecuencia.
Después de que se aplicó la herramienta (610) el orden de escaneo a los coeficientes de frecuencia de los bloques, respectivamente, la herramienta revisa (615) si el reordenamiento de coeficiente es suficiente. Por ejemplo, esta revisión (615) comprende determinar si la aplicación (610) del orden escaneo de los coeficientes de frecuencia plurales de los bloques agrupan los valores de frecuencia no cero de los bloques bidimensionales al frente de las secuencias unidimensionales de los coeficientes de forma suficiente. Esta revisión (615) puede estar basada en un umbral predeterminado para la herramienta, un umbral seleccionado por usuario, o alguna otra determinación.
Se realiza la determinación de orden de escaneo cuando se codifica un marco para que todos los bloques en el marco estén codificados al utilizar el mismo orden de escaneo seleccionado. Alternativamente, la determinación de orden de escaneo puede realizarse al inicio de una secuencia para que cuando se codifica toda la secuencia de imágenes con el orden escaneo general, o el orden de escaneo puede terminarse en una base de bloque por bloque o en alguna otra base. Cuando ocurre la selección de orden de escaneo, puede seleccionarse de acuerdo con criterios definidos por usuario o de acuerdo con otros criterios tal como una directiva codificada en el código de fuente de la herramienta de codificación.
Si los coeficientes están reordenados de forma suficiente, la herramienta después de termina (620) una representación de grupo anidado de nivel múltiple de los coeficientes de frecuencia reordenados para los bloques de la imagen. En ciertas implementaciones, solamente hay una representación de grupo anidado disponible para la herramienta. La representación de grupo anidado está predefinida en el código de fuente para la herramienta de codificación, como una configuración de herramienta de codificación, por una directiva de usuario, o por algunos otros criterios. Alternativamente, la herramienta tiene una pluralidad de representaciones de grupo anidado para aquellos. Generalmente, las representaciones de grupo anidado pueden definirse o seleccionarse basados en factores tal como el tipo de codificación de entropía utilizado, si los coeficientes de frecuencia plurales generalmente están dispuestos en un patrón consistente, o que representación de grupo anidado produce la codificación más eficiente de la secuencia unidimensional de coeficientes de frecuencia para la imagen.
La herramienta aplica (625) la representación de grupo anidado de nivel múltiple elegida a los coeficientes de frecuencia reordenados para producir una serie de símbolos para cada uno de los bloques de la imagen, y codifica por entropía (630) los símbolos. Generalmente, para una capa dada de la representación de grupo anidado de nivel múltiple, la herramienta de codificación representa resultados al utilizar símbolos que resumen los valores de coeficiente en grupos (o subgrupos) en la tapa. Por ejemplo, cada símbolo indica la presencia o la ausencia de valores de coeficiente de frecuencia no cero en un grupo dado (o subgrupo) de los valores de coeficiente de frecuencia. Si un símbolo para un grupo dado (o subgrupo) indica la presencia de al menos un valor de coeficiente de frecuencia no cero en el grupo dado (o subgrupo) de los valores de coeficiente de frecuencia, otro símbolo puede indicar la presencia o la ausencia de valores de coeficiente de frecuencia no cero en un subgrupo de capa inferior del grupo dado (o subgrupo) de los valores de coeficiente de frecuencia. Esta anidación recursiva de grupos y subgrupos puede repetirse hasta que el subgrupo contiene únicamente valores cero o únicamente un coeficiente de no cero, en cuyo caso otro símbolo indicará el valor de no cero del coeficiente de frecuencia específico en esa posición.
En algunas implementaciones, la herramienta aplica codificación de Huffman adaptiva a los coeficientes de frecuencia reordenados. Alternativamente, la herramienta puede utilizar otros métodos de codificación entropía tal como codificación de Huffman no adaptiva, codificación de longitud de funcionamiento, codificación aritmética, codificación LZ, o algún otro método.
Regresando a un paso previo, si el reordenamiento de coeficiente (615) no es suficiente por una razón tal como que el reordenamiento no satisface un cierto umbral de eficiencia, o alguna otra razón, la herramienta revisa si otros órdenes de escaneo predeterminados están disponibles (635). Si uno o más órdenes de escaneo predeterminados diferentes están disponibles, la herramienta repite el procedimiento de seleccionar (605) uno de uno o más órdenes de escaneo predeterminados, al aplicar (610) el orden de escaneo seleccionado para reordenar los coeficientes de frecuencia de los bloques de acuerdo con el orden de escaneo seleccionado, y al revisar (61.5) si el reordenamiento de coeficiente es suficiente.
Si las revisiones de herramienta (635) y otro orden de escaneo predeterminado no están disponibles, entonces la herramienta determina (640) un nuevo orden de escaneo que produce suficiente reordenamiento de coeficiente y aplica ese orden de escaneo para reordenar los coeficientes de frecuencia de los bloques. Otro orden de escaneo predeterminado puede no estar disponible por razones tal como que un usuario no especifica utilizar un orden de escaneo particular, solamente un orden de escaneo que está predeterminado para la herramienta, o todos los órdenes de escaneo que se atraviesan y uno de ellos ha reordenado los coeficientes de forma suficiente. Alternativamente, si otro orden de escaneo predeterminado no está disponible, la herramienta simplemente utiliza el orden de escaneo predeterminado que produjo el reordenamiento de coeficiente más eficiente, o la herramienta puede señalar un error a un usuario.
V. Ordenes de Escaneo ilustrativos y Señalización de Elecciones de Orden Escaneo La Figura 2 ilustra un orden de escaneo posible (200) con una herramienta de codificación (400), tal como el mostrado en la Figura 4, puede aplicar para reordenar coeficientes de frecuencia. Al utilizar un orden de escaneo de zigzag fijo puede ser ineficiente para algunos bloques de coeficientes de transformación, sin embargo. Las Figuras 7 y 8 muestran dos órdenes de escaneo alternativos. Alternativamente, una herramienta de codificación y una herramienta de descodificación utilizan órdenes de escaneo diferentes y/o adicionales.
La Figura 7 ilustra un orden de escaneo alternativo (700) que una herramienta de codificación (400), tal como la mostrada en la Figura 4, puede aplicar para reordenar coeficientes de frecuencia. El orden de escaneo (700) que se muestra en la Figura 7 puede utilizarse para una distribución general de coeficientes de frecuencia. En ciertas implementaciones, este orden de escaneo (700) es el orden de escaneo predeterminado para un bloque.
La Figura 7 también muestra el resultado de aplicar el orden escaneo (700) a los coeficientes de frecuencia (100) que se muestran en la Figura 1 para producir una secuencia unidimensional ilustrativa (750). El valor de coeficiente 25 está en la posición de coeficiente cero del orden de escaneo (700), para que el primer valor de la secuencia unidimensional (750) sea 25. Continuando a lo largo del orden de escaneo (700), el siguiente valor de coeficiente escaneado estará en la posición de coeficiente 1 en el orden de escaneo que corresponde al valor 12 en los coeficientes de frecuencia (100), así el valor de coeficiente 12 está después de la secuencia unidimensional (750). Esto es seguido por el valor de coeficiente cero en la posición de coeficiente 2, entonces el valor -5 en la posición 3. Las posiciones de coeficiente 4 a 28 tienen valores de coeficiente de cero, lo que lleva a 25 valores cero en la secuencia unidimensional (750), y así sucesivamente. La secuencia unidimensional (750) producida por el orden de escaneo (700) es ligeramente más eficiente (en términos de agrupación de valores de no cero) que la secuencia unidimensional (250) producida por el reordenamiento de acuerdo con el patrón de zigzag de la técnica previa (200) de la Figura 2.
La Figura 8 ilustra un orden de escaneo más eficiente (800) para los coeficientes de frecuencia particulares (100) mostrados en la Figura 1. Este orden de escaneo (800) puede definirse por un usuario particular. Alternativamente, este orden de escaneo (800) puede ser uno de una pluralidad de posibles órdenes de escaneo predefinidos disponibles para la herramienta de codificación y se eligen como el orden de escaneo que muy eficientemente reordena los coeficientes de frecuencia plurales. O, el orden de escaneo (800) no es uno de los órdenes de escaneo predeterminados pero en lugar de esto se determina mediante la herramienta de codificación sí uno de los órdenes de escaneo predeterminado reordena los coeficientes de frecuencia (100) apropiadamente.
La Figura 8 muestra el resultado de aplicar el orden de escaneo (800) a los coeficientes de frecuencia (100) que se muestran en la Figura 1 para producir una secuencia unidimensional ilustrativa (850). Comparado con los resultados de aplicar el orden de escaneo (700) de la Figura 7 ó aplicar el orden de escaneo (200) de la Figura 2, la secuencia unidimensional (850) es significativamente más compacta para este orden de escaneo particular (800).
Las Figuras 9A y 9B ilustran un aspecto para señalizar y recibir información de selección cuando una herramienta de codificación y una herramienta de descodificación seleccionan entre múltiples opciones de orden escaneo en una base de marco por marco. Este aspecto utiliza una combinación de elementos de sintaxis de capa de secuencia y elementos de sintaxis de capa de imagen.
La Figura 9A muestra un listado de seudocódigo (900) para una herramienta de descodificación que recibe elementos de sintaxis de capa de secuencia que indican órdenes de escaneo definidos por una herramienta de codificación para una secuencia. Una herramienta de codificación realiza señalización correspondiente de la información. En un encabezado de secuencia, la herramienta de descodificación recibe y analiza un elemento de sintaxis Número de órdenes de escaneo no predeterminados que indica cuantos órdenes de escaneo (de 0 a 5) seguirán en el encabezado de secuencia.
Para cada uno de los órdenes de escaneo no predeterminados definidos, la herramienta de descodificación recibe información que indica las posiciones de índice para el orden escaneo. La Figura 9A muestra señalización para los bloques 8 x 8. Para cada una de las 64 posiciones en un orden de escaneo para un bloque 8 * 8, la herramienta de descodificación recibe un Idx predeterminado de bit individual que indica si la posición tiene el valor predeterminado para la posición de orden escaneo. La siguiente lista (disponible para la herramienta de descodificación y la herramienta de codificación) indica las posiciones predeterminadas para órdenes de escaneo. Idx de orden de escaneo predeterminado [64] = {0, 1, 4, 5, 16, 17, 20, 21, 2, 3, 6, 7, 18, 19, 22, 23, 8, 10, 12, 13, 24, 25, 28, 29, 9, 11, 14, 15, 26, 27, 30, 31, 32, 34, 40, 41, 48, 49, 52, 53, 33, 35, 42, 43, 50, 51, 54, 55, 36, 38, 44, 45, 56, 57, 60, 61, 37, 39, 46, 47, 58, 59, 62, 63}. Las posiciones predeterminadas corresponden a las posiciones mostradas en la Figura 7. Si Idx predeterminado indica la posición predeterminada que se utiliza en el orden de escaneo señalado, la herramienta de descodificación revisa la posición predeterminada en Idx de orden de escaneo predeterminado. De otra forma, la herramienta de descodificación obtiene 6 bits que indican la posición no predeterminada utilizada en el orden de escaneo señalado.
La herramienta de descodificación almacena los órdenes de escaneo predefinidos señalados para la secuencia además de cero o más otros órdenes de escaneo que siempre están disponibles para herramienta de codificación y la herramienta de descodificación. Aunque la Figura 9A muestra señalización para bloques 8 x 8, para otros bloques de tamaño, la herramienta de codificación puede señalar un tamaño de bloque por orden de escaneo.
La Figura 9B muestra una lista de seudocódigo (910) para una herramienta de descodificación que cambia entre órdenes de escáneo. La herramienta de descodificación cambia órdenes de escaneo, por ejemplo, en una base de marco por marco durante la descodificación. Una herramienta de descodificación realiza señalización correspondiente de la información de selección de orden de escaneo, por ejemplo, en un encabezado de marco que señala el orden de escaneo para uso para un marco.
La herramienta de descodificación recibe y analiza un elemento de sintaxis Orden predeterminado de uso que indica si se utiliza un orden escaneo predeterminado para el marco (con ninguna señalización adicional de información de orden de escaneo para el marco) o un orden de escaneo no predeterminado para el marco. El orden de escaneo predeterminado puede definirse por la herramienta de codificación y la herramienta de descodificación para todas las secuencias, para la secuencia particular que se codifica/descodifica, o se deriva por reglas establecidas en la herramienta de codificación y la herramienta de descodificación.
Sí la herramienta de descodificación utiliza un orden de escaneo no predeterminado para el marco, la herramienta de descodificación revisa si uno de los órdenes de escaneo no predeterminados (si hay alguno) que fue una señal para la secuencia debe utilizarse. Si es así, la herramienta de descodificación recibe y analiza un elemento de sintaxis Idx de orden que identifica uno de los órdenes de escaneo no predeterminados que se señalaron para la secuencia.
De otra forma (si no se señaló ninguno de los órdenes de escaneo no predeterminados para la secuencia, o se señalaron pero no deben utilizarse), la herramienta de descodificación recibe y analiza información para un nuevo orden de escaneo. Como la Figura 9A, la Figura 9B muestra las señalización para bloques 8 x 8. Para cada una de las 64 posiciones en el nuevo orden de escaneo para un bloque 8 * 8, la herramienta de descodificación recibe un Idx predeterminado de bit individual que indica si la posición tiene el valor predeterminado para la posición de orden de escaneo. Si no es así, la herramienta de descodificación obtiene 6 bits que indica la posición no predeterminada utilizada en el nuevo orden de escaneo.
Alternativamente, una herramienta de codificación y una herramienta de descodificación utilizan otra sintaxis de corriente de bits para cambiar órdenes de escaneo en una base de macrobloque por macrobloque, base de marco por marco, o alguna otra base.
VI. Codificación Ilustrativa Utilizando Representación de Grupo Anidados de Nivel Múltiple La Figura 10 muestra una técnica ilustrativa (1000) para codificar un bloque reordenado de coeficientes de frecuencia plurales que utilizan una representación del grupo anidados de nivel múltiple. La técnica (1000) puede utilizarse, por ejemplo, en la técnica (600) descrita en la Figura 6. La técnica (1000) es recursiva. Cuando se codifica un grupo de valores de coeficiente, la técnica (1000) en algunos casos codifica recursivamente un subgrupo de valores de coeficiente, o cada uno de múltiples subgrupos, dentro del grupo. La técnica (1000) incluye una condición de salida, en la cual la técnica (1000) regresa al punto de entrada o se hace al codificar el grupo.
En esta técnica (1000), la herramienta de codificación recibe un grupo de valores de coeficiente en una secuencia unidimensional producida al reordenar los valores de coeficiente de frecuencia de un bloque de acuerdo con un orden de escaneo particular. La herramienta evalúa (1005) uno o más valores de coeficiente en el nivel dado del grupo. Cuando esta técnica (1000) se inicia primero, el grupo de coeficientes de frecuencia plurales generalmente incluirá todos los coeficientes de frecuencia plurales en la secuencia unidimensional. Posteriormente, la técnica (1000) puede realizarse en un grupo menor que es el subgrupo de la secuencia unidimensional. Por esta razón, el grupo en cuestión puede comprender 64 valores de coeficiente, 63 valores de coeficiente, 32 valores de coeficiente, 16 valores de coeficiente, un valor de coeficiente, o algún otro número de valores de coeficiente.
La herramienta de codificación revisa (1010) y el grupo dado de coeficientes contiene únicamente un coeficiente de frecuencia individual. Si el grupo de coeficientes de frecuencia contiene únicamente un coeficiente individual, entonces la herramienta codifica (1015) el valor del coeficiente. Por ejemplo, la herramienta utiliza codificación de Golomb, codificación de Huffman, u otra forma de codificación de longitud variable para el valor de coeficiente individual. Si la amplitud del valor del coeficiente individual se implica en alguna otra parte (por ejemplo, cuando el coeficiente es -1 ó uno para algunos tipos de codificación por entropía), la herramienta señala una marca que indica el signo del coeficiente individual. La herramienta entonces regresa (1020) al punto de entrada (para un subgrupo) o sede hace al codificar ese grupo particular de coeficientes de frecuencia.
Si el grupo dado continúa múltiples coeficientes de frecuencia en el grupo, entonces la herramienta analiza el grupo y codifica (1025) uno o más códigos para el grupo. Dependiendo del tipo de codificación de entropía utilizado, el código(s) indica la presencia o la ausencia de coeficientes de frecuencia no cero en el grupo y también puede indicar que subgrupos dentro del grupo incluyen cualquiera de los coeficientes de frecuencia de valor de no cero. Si el grupo no incluye ninguno de los coeficientes de frecuencia no cero, entonces la herramienta codifica un símbolo que indica que el grupo no incluye ninguno de los coeficientes de frecuencia no cero. Sin embargo, si el grupo incluye al menos un coeficiente de frecuencia no cero, entonces la herramienta codifica uno o más símbolos que indican la presencia de uno o más coeficientes de frecuencia no cero en el grupo. El código(s) también indica que el grupo dado debe estar dividido en n subgrupos y dada la información sobre la presencia o ausencia de valores de coeficiente de frecuencia no cero en cada uno de los n subgrupos. Por ejemplo, el código o los códigos pueden indicar que un primer subgrupo no incluye al menos un coeficiente de frecuencia con un valor de no cero, ese segundo subgrupo no incluye al menos un coeficiente de frecuencia con un valor de no cero, y que el tercer grupo no. Para algunas representaciones del grupo anidado de nivel múltiple, n es igual a 2 y cada grupo puede dividirse hasta en dos subgrupos. Alternativamente, n es algún otro número tal como 3 ó 4. En ciertas modalidades, el código(s) adicionalmente puede indicar otra información sobre el valor(s) no cero de los coeficientes de frecuencia en el grupo, tal como si un coeficiente individual en el subgrupo es positivo o negativo, o si cualquier coeficiente en un subgrupo es mayor que o igual a un valor dado.
Después de que la herramienta ha codificado (1025) uno o más códigos para el grupo, la herramienta determina si divide (1030) el grupo dado hasta en n subgrupos de coeficientes de frecuencia. Si no hay coeficientes de frecuencia no cero en el grupo, entonces la herramienta no divide el grupo y regresa (1020) al punto de entrada (para un subgrupo) o se hace por codificación de ese grupo particular de coeficientes de frecuencia.
Sin embargo, si el grupo contiene uno o más coeficientes de frecuencia no cero, entonces la herramienta codifica cualquier subgrupo incluye al menos un valor de no cero. La herramienta divide (1030) el grupo dado hasta en n subgrupos y revisa (1035) para ver si codifica el primero de los subgrupos como un "grupo". Si el primero de los subgrupos contiene un coeficiente de frecuencia no cero, entonces la herramienta realiza el método (1000) en el primer subgrupo en un nivel inferior y con ello codifica (1040) el primer subgrupo, como un "grupo". Cuando el subgrupo se codifica (1040), los símbolos y códigos producidos por la herramienta que realiza el método (1000) están organizados para aclarar que los valores de coeficiente de frecuencia que se analizan son un subgrupo del primer grupo, y se están analizando en un nivel inferior de representación en la representación de grupo anidado.
Si el primer subgrupo no debe codificarse debido a que no contiene al menos un coeficiente de frecuencia no cero, la herramienta entonces realiza (1045) ciertos subgrupos permanecen en el grupo. Similarmente, después de que la herramienta ha codificado (1040) el primer subgrupo, la herramienta revisa (1045) si otros subgrupos permanecen en el grupo. Si existe otro subgrupo, entonces la herramienta revisa (1035) para ver si codifica el subgrupo como un "grupo" y, si es así, la herramienta codifica (1040) el subgrupo. Después de que la herramienta ha determinado que ningún otro subgrupo permanece para un grupo, la herramienta regresa (1020) al punto de entrada (para un subgrupo) o esto se hace al codificar ese grupo particular de coeficientes de frecuencia, la herramienta regresa a un nivel superior para codificar un siguiente grupo o subgrupo, o se mueve a otro bloque o imagen.
VII. Representaciones de Grupo Anidado de Nivel Múltiple Ilustrativas Al utilizar una representación de grupo anidado de nivel múltiple para coeficientes de transformación puede facilitarse la codificación de entropía eficiente de los coeficientes de transformación al utilizar una representación de resumen de coeficientes de transformación de valor cero. Representaciones de grupo anidado de nivel múltiple son particularmente efectivas cuando se utilizan en combinación con selección de orden de escaneo adaptiva, pero también pueden utilizarse con reordenamiento de escaneo no adaptivo. Dependiendo de la ímplementación, una representación de grupo anidado de nivel múltiple para un bloque puede codificarse al utilizar codificación de Huffman, codificación de nivel de funcionamiento, codificación de longitud de funcionamiento, o alguna otra forma de codificación de entropía.
Considerar un bloque 8 x 8 típico de coeficientes de transformación (después de cuantificación). La mayoría de los valores de coeficiente de no cero están agrupados en algunas áreas, tal como la esquina izquierda superior para coeficientes de frecuencia inferior. Una representación de grupo anidado de nivel múltiple agrupa los coeficientes de alta frecuencia de valor cero juntos como un bloque individual y los representa como un coeficiente de valor cero (o símbolo). Además de agrupar los coeficientes de valor cero en un bloque o bloques de esta forma, la representación de grupo anidado de nivel múltiple agrupa un subgrupo de coeficientes que incluye valores de no cero (o una mezcla de valores de no cero y valores cero) como un bloque individual y los trata como un coeficiente (o símbolo). En un nivel dado, la representación del grupo anidado de nivel múltiple incluye uno o más coeficientes de "resumen" (o símbolo), que entonces se codifican por entropía. Para un bloque que incluye uno o más coeficientes de valor de no cero, la representación del grupo anidado de nivel múltiple divide recursivamente los coeficientes en subgrupos que se representan como coeficientes (o símbolos) individuales para codificación.
Las Figuras 11A, 11B, y 11C ilustran representaciones del grupo anidado de nivel múltiple ilustrativas. Las Figuras 11A, 11 B y 11 C ilustran representaciones de grupo anidado de nivel múltiple ilustrativas (1100, 1150, 1110) para un bloque con 64 coeficientes que pueden utilizarse, por ejemplo, en la técnica (1000) mostrada en la Figura 10. Alternativamente, una herramienta dé codificación y una herramienta de descodificación utilizan otras representaciones de grupo anidado de nivel múltiple y/o adicionales.
Con referencia a la Figura 11A, en donde un grupo se divide en n subgrupos, n es igual a 2. En la representación (1150) mostrada en la Figura 11B, n es igual a 2, 3 ó 4, y en la representación (1180) mostrada en la Figura 11C, n es igual a 4. Alternativamente, n puede ser igual a 3, 4, o algún otro número.
En esta representación, los valores de coeficiente en posiciones 0 a 63 representan un primer grupo en un primer nivel (1105) y están potencialmente divididos en un primer subgrupo en un segundo nivel (1110) que contiene el valor de coeficiente en la posición cero y un segundo subgrupo en el segundo nivel (1110) que contiene los valores de coeficiente en posiciones 1 a 63. El grupo para posiciones cero es un grupo con un valor de coeficiente individual, y por lo tanto un valor de no cero del coeficiente de frecuencia en la posición cero puede estar codificado por entropía, por ejemplo, al utilizar un código en el segundo nivel (1110).
Si el subgrupo (para posiciones 1 a 63) en el segundo nivel (1110) incluye cualquiera de los valores de coeficiente de no cero, los valores de coeficiente en posiciones 1 a 63 están divididos en dos subgrupos en un tercer nivel (1115). El primer subgrupo en el tercer nivel (1115) contiene valores de coeficiente en posiciones 1 a 3, y el segundo subgrupo en el tercer nivel (1115) contiene los valores de coeficiente en posiciones 4 a 63. Los subgrupos que incluyen únicamente coeficientes de valor cero no están divididos adicionalmente. Si uno de los subgrupos en el tercer nivel (1115) incluye un valor de coeficiente de no cero, sin embargo, el subgrupo en el tercer nivel (1115) está dividido en una pluralidad de diferentes subgrupos en un cuarto nivel, y así sucesivamente, como se muestra en la Figura 11 A.
La Figura 11B muestra una segunda representación del grupo anidado de nivel múltiple (1150) de acuerdo con la cual el grupo (para posiciones 0 a 63) en el primer nivel (1155) está potencialmente dividido en dos subgrupos en un segundo nivel (1160), y el segundo subgrupo (para posiciones 1 a 63) en el segundo nivel (1160) está potencialmente dividido en tres subgrupos en un tercer nivel (1165). La representación (1150) en la Figura 11B es más amplia que la representación (1100) en la Figura 11A pero no tan profunda, ya que los grupos (o subgrupos) están potencialmente divididos en 3 ó 4 subgrupos en un nivel inferior.
La Figura 11C muestra una tercera representación de grupo anidado de nivel múltiple (1180) de acuerdo con la cual el grupo (para posiciones 0 a 63) en el primer nivel (1185) está potencialmente dividido en cuatro subgrupos de igual tamaño en un segundo nivel (1190), y cada subgrupo del segundo nivel (1190) está potencialmente dividido en cuatro subgrupos en un tercer nivel (1195). La representación (1180) en la Figura 11C es incluso más amplia qué la representación (1150) en la Figura 11B, ya que en los grupos (o subgrupos) están potencialmente divididos en cuatro subgrupos en cada nivel inferior.
La Figura 12A ilustra la aplicación de la representación de grupo anidado de nivel múltiple (1100) de la Figura 11 A a la secuencia unidimensional ilustrativa (750) de la Figura 7. La secuencia unidimensional (750) para los coeficientes de transformación (100) proporciona el grupo de primer nivel (1205) que comprende valores para coeficientes desde la posición 0 a la posición 63. El primer grupo de nivel (1205) no es un grupo valorado individual incluye al menos un valor de no cero, para que el primer grupo de nivel esté dividido en múltiples subgrupos. Dependiendo de cómo se implementa la codificación de entropía, uno o más códigos indican que el primer grupo de nivel está dividido en dos subgrupos en un segundo nivel (1210). En el presente ejemplo, los dos subgrupos en el segundo nivel (1210) comprenden un primer subgrupo para el coeficiente en la posición 0, y un segundo subgrupo para los coeficientes en las posiciones 1 a 63.
La herramienta entonces codifica el primer subgrupo (para posición 0) en el segundo nivel (1210) como un "grupo". En el presente ejemplo, el subgrupo contiene únicamente un valor individual, el valor de coeficiente 25 en la posición de coeficiente 0. La herramienta codifica por entropía este primer subgrupo.
La herramienta entonces procede a codificar el segundo subgrupo en el segundo nivel (1210) (que comprende valores para los coeficientes en las posiciones 1 a 63) como un grupo. El segundo subgrupo está dividido en dos subgrupos en un tercer nivel (1215). El primer subgrupo de tercer nivel comprende los valores de coeficientes 12, 0; y -5, que son los valores de coeficiente en posiciones de coeficiente 1, 2, y 3, respectivamente. El segundo subgrupo de tercer nivel comprende los valores de coeficiente en las posiciones de coeficiente 4 a 63.
El primer subgrupo en el tercer nivel (1215) está dividido en dos subgrupos en un cuarto nivel (1220). El primero de estos subgrupos de cuarto nivel comprende el valor de coeficiente 12, que es el valor de coeficiente en la posición de coeficiente 1. Este valor de coeficiente está codificado por entropía. El otro de estos subgrupos de cuarto nivel comprende los valores 0 y -5, que son los valores de coeficiente en las posiciones de coeficientes 2 y 3. Este subgrupo de cuarto nivel está dividido en dos subgrupos en un quinto nivel (1225). El primero de estos subgrupos de quinto nivel comprende un valor de coeficiente individual de 0 en la posición de coeficiente 2, y el segundo de estos subgrupos de quinto nivel comprende un valor de coeficiente individual de -5 en la posición de coeficiente 3. Cada uno de estos subgrupos es un subgrupo valuado individual, y así el valor de coeficiente de cada uno de los subgrupos está codificado por entropía.
Regresando al tercer nivel (1215), el segundo subgrupo en el tercer nivel (1215) (que contiene los valores de coeficiente en las posiciones de coeficiente 4 a 63) está dividido en dos subgrupos en el cuarto nivel (1220). El primero de estos grupos de cuarto nivel comprende valores para los coeficientes en las posiciones 4 a 15, y el segundo de estos subgrupos de cuarto nivel comprende valores para los coeficientes en las posiciones 16 a 63. En esta modalidad, valores de coeficiente en las posiciones de coeficiente 4 a 15 todos están en 0. Debido a esto, el subgrupo para posiciones 4 a 15 no necesita estar dividido adicionalmente debido a que no contiene ninguno de los valores de coeficiente de no cero. Un código que indica que el subgrupo no contiene ninguno de los valores de coeficiente de frecuencia no cero se señala, el subgrupo no está dividido, y no se realiza ningún análisis adicional en este subgrupo. El subgrupo que contienen los valores para coeficientes en posiciones de 16 a 63 está dividido en dos subgrupos separados en el quinto nivel (1225), cada uno incluye una mezcla de coeficientes de valor cero y coeficientes no cero. Este análisis y división selectiva de grupos es en subgrupos continúa hasta que todos los coeficientes de frecuencia no cero se han localizado y codificado por entropía.
La Figura 12B ilustra la aplicación de la representación de grupo anidado de nivel múltiple (1100) de la Figura 11A a la secuencia unidimensional ilustrativa (850) de la Figura 8. En general, la Figura 12B muestra que el orden de escaneo (800) de la Figura 8 agrupa los coeficientes de transformación (100) de la Figura 1 más efectivamente que el orden de escanéo (700) de la Figura 7.
La secuencia unidimensional (850) para los coeficientes de transformación (100) proporciona el primer grupo de nivel (1255) que comprende valores para coeficientes desde la posición 0 a la posición 63. El primer grupo de nivel (1255) está dividido en dos subgrupos, con uno o más códigos que indican la división en dos subgrupos en un segundo nivel (1260). Los dos subgrupos en el segundo nivel (1210) comprenden un primer subgrupo para el coeficiente la posición 0, y un segundo subgrupo para los coeficientes en las posiciones 1 a 63. El subgrupo para la posició.n 0 contiene un valor individual, el valor de coeficiente 25 en la posición de coeficiente 0, que está codificado por entropía. El subgrupo para las posiciones 1 a 63 está dividido en dos subgrupos en un tercer nivel (1265).
El primero de los subgrupos de tercer nivel comprende los valores de coeficiente 12, 0, y -5, y se maneja como se describe con referencia a la Figura 12A. El segundo subgrupo de tercer nivel (para los valores de coeficiente en las posiciones de coeficiente cuanto a 63) está dividido' en dos subgrupos en el cuarto nivel (1270). El primero de estos subgrupos de cuarto nivel, que comprende valores para los coeficientes de las posiciones 4 a 15, además está dividido en dos subgrupos de quinto nivel. Un subgrupo de quinto nivel contiene únicamente coeficientes de valor cero y no está dividido adicionalmente; el otro subgrupo de quinto nivel contiene una mezcla de coeficientes de valor cero y coeficientes de valor de no cero y además está dividido como se muestra en la Figura 12B. El segundo de los subgrupos de cuarto nivel, que comprende valores cero para los coeficientes en posiciones 16 a 63, no está dividido adicionalmente, y un código que indica que el subgrupo no contiene ningún valor de coeficiente de frecuencia no cero está señalado.
Además de las representaciones de grupo anidado de nivel múltiple mostradas en las Figuras 11A, 11B y 11C, son posibles otras representaciones del grupo anidado de nivel múltiple. En lugar de dividir cada grupo o subgrupo en dos subgrupos en un siguiente nivel, cada subgrupo o subgrupo puede estar dividido hasta en tres subgrupos, hasta en cuatro subgrupos, o algún otro número de subgrupos. Por ejemplo, el primer grupo de nivel que comprende los valores de coeficiente en posiciones de coeficiente 0 a 63 puede estar dividido en tres subgrupos de segundo nivel, el primero que comprende el valor de coeficiente en la posición cero, el segundo que comprende los valores de coeficiente en las posiciones 1 a 15, y el tercero que comprende los valores de coeficiente en las posiciones 16 a 63. Adicionalmente, al menos para las representaciones (1100, 1150) en las Figuras 11A y 11B, la estrategia de división presume que el orden de escaneo eficientemente agrupará los valores de coeficiente de frecuencia no cero desde el bloque de coeficientes de transformación hacia el frente de la secuencia unidimensional. Sin embargo, si los valores de coeficiente están dispuestos para que no puedan agruparse eficientemente, la representación de grupo anidada puede tener alguna otra división general tal como una división dinámica que divide el primer grupo de nivel que comprende los coeficientes 0 a 63 en dos subgrupos, el primero comprende los valores de coeficiente en las posiciones de coeficiente 0 a 31, y el segundo comprende los valores de coeficiente en las posiciones de coeficiente 32 a 63, con cada grupo potencialmente estando sometido a división diádica adicional.
Adicionalmente, la señalización de códigos para una representación del grupo anidado de nivel múltiple depende de la implementación. En algunos casos, el código(s) para un nivel dado está señalado como parte de un primer transversal de profundidad para la representación. Para la Figura 11A, la herramienta de codificación señala código(s) para 0-63, código(s) para 0, código(s) para 1-63, código(s) para 1-3, código(s) para 1, código(s) para 2-3, código(s) para 2, código(s) para 3, código(s) para 4-63, y así sucesivamente. Alternativamente, los códigos están señalados como parte de un primer transversal de amplitud de la representación.
VIII. Codificación y Descodificación de Entropía Ilustrativas El tipo de codificación de entropía utilizado para representar coeficientes de transformación en una representación de grupo anidado de nivel múltiple depende de la implementación. Esta sección describe dos aspectos generales de codificación y descodificación de entropía. Alternativamente, una herramienta de codificación y una herramienta de descodificación utilizan otro aspecto.
A. Variaciones de Codificación y Descodificación de Longitud de Funcionamiento Con codificación y descodificación de longitud de funcionamiento, los símbolos (que representan valores de coeficiente individuales o subgrupos de valores de coeficiente) para un grupo dado están codificados como una secuencia. Por ejemplo, para un subgrupo, un valor de símbolo de cero indica que el subgrupo de indica únicamente coeficientes de valor cero, y un valor de símbolo de uno indica que el subgrupo incluye al menos un coeficiente de valor de no cero. Para un valor de coeficiente individual, un valor de símbolo de cero indica que el valor de coeficiente es cero, y un valor de símbolo de uno indica que el valor de coeficiente es no cero, con uno o más otros códigos que indican el valor real. En los siguientes ejemplos, cada uno de los términos funcionamiento_nivel_código_x, funcionamiento_longitud_código_x, y valor_x es simplemente un indicador de un código de longitud variable, código de longitud fija u otro patrón de bits que representan una combinación de nivel de funcionamiento, conteo de longitud de funcionamiento, o valor.
Para la representación de grupo anidado de nivel múltiple (1180) en la Figura 1 C , el orden de escaneo (800) de la Figura 8 y los coeficientes de transformación (100) de la Figura 1, posiciones 0, 1, 3 y 9-15 tienen valores de no cero, y las otras posiciones tienen coeficientes no cero. El subgrupo para posiciones 0 a 15 incluye al menos un valor de no cero, pero ninguno de los otros tres subgrupos de segundo nivel incluye cualquier valor de no cero, para que la primera representación de nivel sea 1000. Con la codificación de nivel de funcionamiento (cada código que indica un conteo de funcionamiento de ceros más un nivel de no cero), los símbolos están representados como códigos para 0 EOB. En la práctica, esta representación entonces se codifica al utilizar algún código o códigos, que se indicarán aquí como funcionamiento_nivel_código_0 (para un conteo de cero + el primer 1) y el funcíonamiento_nivel_código_EOB (para los últimos tres ceros). La primera representación de nivel 1000 basta para indicar que coeficientes en las posiciones 16 a 63 son coeficientes de valor cero.
El subgrupo para posiciones 0 a 15 está dividido en cuatro subgrupos para 0-3, 4-7, 8-11 y 12-15, que se representan con los símbolos 1011. Con la codificación de nivel de funcionamiento, los símbolos se representan como códigos para 010, indicado como funcionamiento_nivel_código_0 (para un conteo de cero ceros + el primero 1), funcionamiento_nivel_código_1 (para un conteo de un cero más el segundo uno), y funcionamiento_nivel_código_cero (para un conteo de cero Os más el último 1). Esto basta para indicar que los coeficientes en las posiciones 4 a 7 son coeficientes de valor cero.
El subgrupo para posiciones 0 a 3 se representa como 1101, el subgrupo para posiciones 8-11 se representa como 0111, y el subgrupo para posiciones 12-15 se representa como 1111. Estos subgrupos se codifican al utilizar la codificación de nivel de funcionamiento, o alternativamente al utilizar los códigos de Huffman de vector o los valores literales. Para cada valor de no cero, uno o más códigos entonces señalan el valor real y señalan el coeficiente. Por ejemplo, los códigos valor_25, valor_12 y valor_-5 siguen los códigos de nivel de funcionamiento para el subgrupo para posiciones 0-3. La señalización de los códigos para una representación puede seguir un primer transversal de profundidad o un primer transversal de amplitud de la representación.
Para el mismo ejemplo, la representación del grupo anidado de nivel múltiple de las Figuras 1, 8 y 11C, con una variación de codificación de longitud de funcionamiento simple que esperan alternar funcionamientos de cero y unos (por ejemplo, 0010 ó 0000 ó 1110), los símbolos 1000 se representan como códigos para 01 EOB, indicado como func¡onamiento_longitud_código_0 (para un conteo de cero Os), funcionamiento_longitud_códigos_1 (para un conteo de uno 1s), y funcionamiento_longitud_código_EOB (para un conteo de tres Os). El subgrupo para posiciones 0 a 15 está dividido en cuatro subgrupos para 0-3, 4-7, 8-11 y 12-15, que se representan con los símbolos 1011, codificados como funcionamiento_longitud_código_0 (para un conteo de cero Os), funcionamiento_longitud_código_1 (para un conteo de un 1s), funcionamiento_longitud_código_1 (para un conteo de un Os), y funcionamiento_longitud_código_EOB (al menos para dos 1s). El subgrupo para posiciones 0 a 3 está representado como 1101, el subgrupo para posiciones 8-11 está representado como 0111, y el subgrupo para posiciones 12-15 se representa como 1111. Estos subgrupos están codificados al utilizar la variación de codificación de longitud de funcionamiento simple, o alternativamente al utilizar los códigos de Huffman de vector o valores literales. Para cada valor de no cero, uno o más códigos entonces señalan el valor real y señalan el coeficiente. De nuevo, la señalización de los códigos para una representación puede seguir un primer transversal de profundidad o un primer transversal de amplitud de la representación.
Generalmente, el patrón de símbolos para un grupo o subgrupo (tal como 10, 01 u 11 para dos subgrupos del grupo/subgrupo,, ó 111, 110, 101, 10.0, 011, 010, ó 001 para tres subgrupos del grupo/subgrupo) pueden indicarse con un número específico de bits o patrón de bits en la corriente de bits, tal como funcionamiento_longitud_códigos, funcionamiento_nivel_código, o algún otro patrón. Adicionalmente, los valores de los coeficientes de frecuencia valorados no cero se indican con algún número específico de bits o patrón de bits. Por ejemplo, el valor 25 puede indicarse por un código arbitrario tal como valor_(25).
B. Codificación y Descodificación de Huffman Con la codificación y descodificación de Huffman, un código de Huffman representa el símbolo(s) para un subgrupo o coeficiente particular. Los códigos y símbolos de Huffman representados con los códigos de Huffman dependen de la implementación. Los códigos de Huffman pueden ser adaptables o no adaptables.
Por ejemplo, para un subgrupo, un valor de símbolo de cero indica que el subgrupo incluye solamente coeficientes de valor cero, y un valor de símbolo de uno indica que el subgrupo incluye al menos un coeficiente de valor de no cero. Para un valor de coeficiente individual, un valor de símbolo de cero indica que el valor de coeficiente es cero, y un valor de símbolo de uno indica que el valor de coeficiente es no cero, con uno o más otros códigos que indican el valor real. El código de Huffman conjuntamente representa los valores de los símbolos en un nivel dado, por ejemplo, representando las cuatro combinaciones de símbolo de la sección previa.
Como otro ejemplo, el alfabeto de valores de símbolo para un símbolo tiene tres elementos A0, A1 y A2. El primer elemento en el alfabeto ilustrativo es el elemento A0. Este elemento indica que para un grupo dado (o subgrupo) de uno o más valores de coeficiente (establecer_cv), cada valor de coeficiente (cv) en grupos_cv es igual a cero. En otras palabras, no hay valores de coeficiente de frecuencia no cero en grupos_cv. El segundo elemento en el alfabeto ilustrativo es el elemento A1. Este . elemento indica que al menos para un cd se ve que en grupos_cv, se ve igual 1 ó -1. Otros valores cv en grupos_cv pueden ser iguales a cero, mientras que un cv sea igual a 1 ó -1 y ninguno tenga un valor absoluto mayor a 1. El tercer elemento de alfabeto en el alfabeto ilustrativo es A2. Este elemento indica que al menos para un cv en grupos_cv, cv es mayor que 1 o menor que -1. Otros valores cv deben grupos_cv pueden ser iguales a 0, 1, ó -1, mientras que un cv sea mayor que uno o menor que -1. En modalidades alternativas, A2 puede significar que al menos un cv en grupos_cv está sobre o bajo un número diferente, por ejemplo 2, 4, 8, o algún otro número.
Estos tres elementos diferentes A0, A1, y A2, pueden ayudar en la herramienta al determinar si se divide o no adicionalmente el grupo o subgrupo durante la codificación, y los elementos pueden ayudar a la herramienta a reconstruir los valores de un grupo o subgrupo durante la descodificación. El cuadro 1 indica códigos de Huffman ilustrativos para un grupo X que contiene valores de coeficiente de frecuencia plurales, al menos uno de los cuales es igual a 1 ó -1 pero ninguno de los cuales tiene un valor absoluto mayor a 1. El cuadro 2 indica códigos de Huffman ilustrativos para un grupo X que contiene valores de coeficiente de frecuencia plurales, al menos uno de los cuales contiene un valor mayor que 1 ó menor que -1. Cada uno de los códigos de Huffman indica información sobre subgrupos X_1 y X_2 del grupo X, en donde un subgrupo puede incluir un coeficiente individual.
Cuadro 1. Códigos De Huffman Para Cuadro De Tres Códigos Cuadro 2. Códigos De Huffman Para Cuadro De Cinco Códigos Para un grupo o subgrupo X en una representación de grupo anidado de nivel múltiple, cada uno de los códigos de Huffman en el Cuadro 1 indica si AO ó A1 aplica para cada uno de los dos subgrupos X_1 y X_2 de X, respectivamente. Cada uno de los códigos de Huffman en el Cuadro 2 indica si AO, A1 ó A2 aplica para cada uno de los dos subgrupos X_1 y X_2 de X, respectivamente. Por ejemplo, si el subgrupo de valores de coeficiente contiene 0 y -5, el código de Huffman HC5_4 indica que el primer valor de coeficiente es 0 y el segundo valor de coeficiente no es 0 con un valor absoluto mayor que 1. Si el subgrupo de valores de coeficiente contiene 0, 0, 0, 0, 0, 2, -1, 1 y está dividido uniformemente en subgrupos, el código de Huffman HC5_4 indica el primer subgrupo (0, 0, 0, 0) incluye solamente coeficientes de valor 0 y el segundo subgrupo (0, 2, -1, 1) incluye al menos un coeficiente de valor de no cero con un valor absoluto mayor que 1.
En los siguientes ejemplos, cada uno de los términos HC5_X y HC3_X simplemente es un indicador de un código de Huffman que tiene un patrón particular de bits. La Figura 13A muestra la aplicación de los códigos de Huffman de los Cuadros 1 y 2 a la representación de grupo anidado de nivel múltiple de la Figura 12A. En el primer nivel (1305), HC5_0 indica que el grupo está dividido en dos subgrupos, cada uno que tiene al menos un valor de coeficiente de no cero con un valor absoluto mayor que 1. El primer subgrupo (para posición 0) tiene un valor individual valor_25 que está señalado como uno o más códigos de longitud variable, por ejemplo, códigos de Golomb o códigos de Huffman. El segundo subgrupo (para posiciones 1 a 63) está dividido en dos subgrupos, cada uno que tiene al menos un valor de coeficiente de no cero con un valor absoluto mayor que 1, indicado con el código HC5_0. Los subgrupos con valores de no cero están divididos en subgrupos, como se indica con los códigos de Huffman. Si un subgrupo con valor(s) no cero incluye únicamente valores de -1, ó 1, un código de Huffman del Cuadro 1 répresenta el subgrupo. Por ejemplo, si un grupo que incluye -1, 1, 1, 1 y ocho ceros está dividido en un primer subgrupo con -1, 1, 1 y 1 y un segundo subgrupo con los ocho ceros, el código HC3_1 representa el grupo. Para cada uno o -1, se señala un signo para el valor de coeficiente, el valor absoluto está indicado por códigos previos.
La Figura 13B muestra la aplicación de los códigos de Huffman de los Cuadros 1 y 2 a la representación de grupo anidado de nivel múltiple de la Figura 12B. Comparado con la Figura 13A, se utilizan en los códigos de Huffman debido a que la representación de grupo anidado de nivel múltiple es más compacta.
Una herramienta de codificación señala los códigos de Huffman mostrados en las Figuras 13A y 13B de acuerdo con un primer transversal de profundidad de la representación. HC5_0, código(s) para 25, HC5_0, HC5_0, código(s) para 12, HC5_4, código(s) para -5, y así sucesivamente. Alternativamente, la herramienta de codificación señala los códigos de Huffman mostrados en las Figuras 13A y 13B de acuerdo con un primer transversal de amplitud de la representación.
En muchos escenarios de codificación, los códigos de Huffman facilitan la codificación y la descodificación efectiva de coeficientes de transformación al agrupar coeficientes de valor de cero. Cuando una herramienta de descodificación recibe un código HC5_4 para un grupo X, entonces la herramienta de descodificación reconoce que cada coeficiente de frecuencia en el subgrupo X_1 del grupo X tiene el valor 0. La herramienta de descodificación por lo tanto no necesitará gastar tiempo descalificando adicionalmente el subgrupo X_1 , sino que a su vez puede asignar el valor 0 a cada coeficiente de frecuencia en el subgrupo X_1 y proceder con la descodificación de un subgrupo diferente, tal como ha X_2 (que tiene un valor de coeficiente de frecuencia no cero indicado para el subgrupo). De esa forma, este alfabeto puede disminuir el valor de símbolos necesarios para codificar un bloque de coeficientes de frecuencia.
IX. Una Herramienta de Descodificación Generalizada para una Representación de Grupo Anidado de Coeficientes de Frecuencia Reordenados La Figura 14 muestra un diagrama de' bloques de una herramienta de descodificación generalizada (1400) adaptada para codificar una representación del grupo anidado de nivel múltiple codificado por entropía de coeficientes de frecuencia reordenados. La herramienta de descodificación (1400) puede utilizarse, por ejemplo, para descodificar la salida de la herramienta de codificación (400) mostrada en la Figura 4.
Para la búsqueda de simplicidad, la Figura 14 no muestra módulos de la herramienta de descodificación (1400) que se relacionan con compensación de movimiento y otro procesamiento de movimiento. En algunas implementaciones, además de procesar bloques de valores de muestra para compresión intra-imagen, la herramienta (1400) procesa bloques de valores de muestra de residuos de compensación de movimiento al utilizar los módulos mostrados en la Figura 14. Para un bloque residual dado, la herramienta realiza codificación de entropía de los valores de coeficiente de frecuencia del bloque residual, reordenamiento de escaneo, cuantificación de inversa y una transformación de frecuencia inversa.
La herramienta (1400) recibe una corriente de bits codificada por entropía (1405) y un descalificador de entropía (1410) descodifica la corriente de bits (1405) para producir uno o más símbolos. La corriente de bits (1405) puede codificarse de acuerdo con la codificación de Huffman adaptable, codificación de nivel de funcionamiento, codificación de longitud de funcionamiento, o algún otro método de codificación por entropía de una representación de grupo anidado de nivel múltiple. Los símbolos descodificados por el descodificador de entropía (1410) indican las posiciones relativas y los valores de uno o más coeficientes de frecuencia plurales en subgrupos de coeficientes en niveles respectivos de la representación de grupo anidado de nivel múltiple. La herramienta (1400) dispone los coeficientes de frecuencia plurales en una secuencia unidimensional de acuerdo con las posiciones de coeficiente indicadas.
Un descodificador de orden de escaneo (1415) dispone los coeficientes en un bloque de acuerdo con un orden de escaneo. La herramienta (1400) utiliza uno seleccionado de múltiples órdenes .de escaneo disponibles para el descodif icador de orden de escaneo (1415). Por ejemplo, la herramienta (1400) cambia entre el orden de escaneo (200) en la Figura 2, el orden de escaneo (700) en la Figura 1, el orden escaneo (800) en la Figura 8, y una o más otras órdenes de escaneo. La herramienta (1400) selecciona entre los órdenes de escaneo disponibles en una base de bloque por bloque, base de macro bloque por macro bloque, base de pedazo por pedazo, base de imagen por imagen, o en alguna otra base. Las órdenes de escaneo disponibles múltiples pueden incluir uno o más órdenes de escaneo predefinidos que se establecen en una herramienta de codificación y la herramienta de descodificación (1400). Cuando se utiliza uno de los órdenes de escaneo pre definidos, la herramienta de descodificación (400) determina la selección de orden de escaneo al utilizar un código u otro elemento de corriente de bits que identifican el orden de escaneo seleccionado. Los múltiples órdenes de escaneo disponibles también pueden incluir uno o más órdenes de escaneo que se definen especialmente mediante la herramienta de codificación durante la codificación y se señalan a la herramienta de descodificación (1400) para uso en descodificación. Después de señalar al mismo orden de escaneo, cuando la herramienta de codificación posteriormente utiliza el orden de escaneo, puede señalar un código u otro elemento de corriente de bits que identifica el orden de escaneo, que la herramienta de descodificación (1400) ha almacenado. El bloque de coeficientes de frecuencia producido de acuerdo con el orden de escaneo es, en algunos casos, un bloque 8 x 8 de coeficientes de frecuencia. En otros casos, el bloque es 4 ? 4, 4 * 8, 8 x 4, o algún otro tamaño. x Un cuantificador inverso (1420) cuantifica de forma inversa los coeficientes de transformación. El cuantificador inverso (1420) puede invertir la cuantificación espectral adaptable o la cuantificación directa. Un transformador de frecuencia inversa (1425) realiza una transformación de frecuencia inversa en los coeficientes de frecuencia plurales para producir un bloque de valores de muestra para una imagen. El transformador de frecuencia inversa (1425) puede aplicar una transformación de frecuencia inversa 8 * 8, 8 ? 4, 4 8, 4 4 u otro tamaño.
La herramienta (1400) entonces produce el bloque reconstruido como parte de una imagen reconstruida (1430).
X. Técnicas de Reconstrucción de Video Generalizadas para una Representación de Grupo Anidado de Coeficientes de Frecuencia Reordenados La Figura 15 muestra un cuadro de flujo de una técnica generalizada (1500) para reconstruir un bloque de coeficientes de transformación que están codificados por entropía al utilizar una representación del grupo anidado de nivel múltiple. Esta técnica (1500) puede utilizarse, por ejemplo, por la herramienta de descodificación (1400) mostrada en la Figura 14, para descodificar coeficientes de transformación codificados de acuerdo con la técnica (500) mostrada en la Figura 5A. La técnica (1500) mostrada en la Figura 15 incluye descodificación por entropía al utilizar una representación de grupo anidado de nivel múltiple predeterminada y selección adaptiva de orden escaneo para reordenamiento.
- La herramienta primero descodifica por entropía (1505) los coeficientes de frecuencia plurales que se codificaron al utilizar una representación de grupo anidado de nivel múltiple predeterminada. Los coeficientes pudieron haberse codificado de acuerdo con un acercamiento de codificación de entropía tal como una codificación de Huffman adaptable, codificación de nivel de funcionamiento o codificación de longitud de funcionamiento, o de acuerdo con algún otro acercamiento de codificación. Generalmente, la herramienta descodifica símbolos al indicar tanto valores como posiciones relativas de los coeficientes de frecuencia plurales en una secuencia unidimensional de valores. Cada uno de uno o más símbolos describe los valores y posiciones relativas de uno o más coeficientes de frecuencia plurales en un subgrupo.
Después, la herramienta determina (1510) el orden de escaneo para un bloque de coeficientes de frecuencia plurales. La herramienta determina el orden de escaneo, por ejemplo, al descodificar una señal que indica cuál de una pluralidad de órdenes de escaneo predeterminados se va a utilizar.
Finalmente, la herramienta ordena (1515) los valores de coeficiente de frecuencia plurales en el bloque de acuerdo con un orden de escaneo descodificado. Generalmente, los valores de coeficiente de frecuencia plurales se descodifican (1505) en una secuencia unidimensional. La herramienta ordena (1515) los valores de coeficiente de frecuencia plurales en el bloque al atravesar la secuencia unidimensional de acuerdo con el orden de escaneo descodificado y dispone los valores de coeficiente en un bloque bidimensional de coeficientes.
La herramienta repite la técnica (1500) en una base de bloque por bloque o alguna otra base. Por ejemplo, la herramienta selecciona un orden de escaneo en una base de marco por marco, selecciona un orden de escaneo para un marco completo y entonces descodifica por entropía coeficientes y reordena los coeficientes de bloques en el marco en una base de bloque por bloque.
Alternativamente, una herramienta de descodificación realiza reordenamiento de orden de escaneo al utilizar un patrón de escaneo predeterminado pero adaptablemente selecciona entre representaciones de grupo anidado de nivel múltiple diferentes. Tal técnica de descodificación puede utilizarse, por ejemplo, para descodificar coeficientes de transformación codificados de acuerdo con la técnica (520) mostrada en la Figura 5B. O, una herramienta de descodificación adaptivamente selecciona entre diferentes órdenes de escaneo y adaptablemente selecciona entre diferentes representaciones de grupo anidado de nivel múltiple, por ejemplo, para descodificar coeficientes de transformación codificados de acuerdo con la técnica (540) mostrada en la Figura 5C.
XI· Un Método Ilustrativo para Reconstruir Video Codificado con una Representación de Grupo Anidada de Nivel Múltiple La Figura 16 muestra un cuadro de flujo de una técnica ilustrativa (1600) para reconstruir un bloque de coeficientes de transformación que se codificaron por entropía al utilizar una representación de grupo anidado de nivel múltiple. Este método puede utilizarse, por ejemplo, por un módulo de descodificación de entropía (1410) de la herramienta de descodificación (1400) mostrada en la Figura 14, para descodificar coeficientes de transformación codificados de acuerdo con la técnica (1000) ilustrada en la Figura 10. La técnica (1400) es recursiva. Cuando se descodifica un grupo de valores de coeficiente, la técnica (1400) en algunos casos descodifica recursivamente un subgrupo de valores de coeficiente, o cada uno de múltiples subgrupos, déntro del grupo. La técnica (1400) incluye una condición de salida, en la cual la técnica (1400) regresa al punto de entrada o se hace al descodificar el grupo.
En este método (1600), la herramienta recibe al menos parte de una corriente de bits codificada por entropía que comprende información sobre un grupo de coeficientes de frecuencia plurales, y la herramienta descodifica (1605) al menos parte de la corriente de bits codificada por entropía para codificar uno o más códigos para el grupo. Los códigos proporcionan información sobre la presencia o la ausencia de valores de coeficiente de frecuencia no cero para el bloque de coeficientes de transformación, y, en algunas implementaciones, los códigos también proporcionan información sobre las posiciones relativas de uno o más de los coeficientes de frecuencia en subgrupos del bloque.
La herramienta utiliza uno o más códigos descodificados para reconstruir (1610) cualquiera de los valores de coeficiente conocidos para el grupo dado. Por ejemplo, la herramienta utiliza descodificación de Golomb, descodificación de Huffman, o cualquier otra forma de descodificación de longitud variable. Si el grupo que se analiza contiene únicamente un coeficiente individual, entonces el valor de ese coeficiente generalmente se indicará por uno o más códigos descodificados. La herramienta entonces puede reconstruir el valor de coeficiente para ese coeficiente particular. Si la amplitud del valor del coeficiente individual se implica en alguna otra parte (por ejemplo, cuando el coeficiente es -1 ó 1 para algunos tipos de codificación/descodificación de entropía), la herramienta recibe y analiza una marca que indica el signo del coeficiente individual. O, el código(s) puede indicar los valores de dos o más subgrupos de coeficientes para el grupo dado, en donde los subgrupos están en un nivel inferior al grupo dado en la representación del grupo anidado de nivel múltiple. Por ejemplo, el código(s) puede indicar que hay un subgrupo del grupo en un nivel inferior, y que el subgrupo no incluye ninguno de los valores de coeficiente de frecuencia no cero. Si es así, la herramienta de descodificación construye el valor de coeficiente 0 para cada uno de los coeficientes de frecuencia en ese subgrupo.
La herramienta entonces analiza el código(s) para determinar (1615) y divide el grupo en n subgrupos de nivel inferior. Para algunas representaciones de grupo anidado de nivel múltiple, n es igual a 2; aunque en otras representaciones n puede ser igual a otro entero tal como 3 ó 4. La herramienta divide el grupo hasta en n subgrupos si la herramienta determina que hay al menos un subgrupo del grupo dado que contiene un coeficiente de frecuencia no cero. Si, por ejemplo, hay un subgrupo del grupo que contiene un valor de coeficiente de frecuencia no cero, la herramienta divide el grupo en el subgrupo que contiene el coeficiente con el valor de no cero (que además está descodificado), y un subgrupo que incluye solamente coeficientes de valor cero (que se reconstruyó previamente (1610) sin descodificación adicional). El código(s) que se descodificó previamente (1605) indica cuál de los subgrupos contiene al menos un coeficiente de frecuencia no cero. La herramienta descodifica (1630) los subgrupos que contienen al menos un coeficiente de frecuencia no cero.
La herramienta no divide el grupo en n subgrupos de nivel inferior si, por ejemplo, el grupo contiene únicamente un coeficiente de frecuencia individual. En este caso, la herramienta fácilmente descodifica (1605) el código(s) para este grupo valorado individual y reconstruye (1610) el valor de coeficiente para este grupo. En este ejemplo, la herramienta entonces regresa (1020) al punto de entrada (para un subgrupo) o se hace al descodificar ese grupo particular.
Si, la herramienta determina (1615) y divide el grupo en n subgrupos de nivel inferior, la herramienta revisa (1625) el código(s) para determinar si descodifica el primero de los subgrupos. Si el primer subgrupo contiene un coeficiente de frecuencia no cero, entonces la herramienta descodifica (1630) ese subgrupo como un "subgrupo" al realizar la técnica de descodificación (1600) en el subgrupo. Cuando la herramienta regresa desde la descodificación para ese subgrupo, la herramienta revisa (1635) si hay otros subgrupos restantes para descodificar. O, si el primer subgrupo no está descodificado, la herramienta revisa (1635) sino hay otros subgrupos restantes para descodificar. Si no hay otros subgrupos restantes para descodificar, entonces la herramienta revisa (1625) si descodifica el siguiente de los n subgrupos. La herramienta repite este procedimiento hasta que la revisión (1635) indica que ya no hay otros subgrupos del grupo dado dejados para descodificar, y la herramienta regresa (1020) al punto de entrada (para un subgrupo) o se hace al descodificar el grupo dado. Dependiendo de los valores de coeficiente o el número de coeficientes en el grupo que se descodifica, terminar puede causar que la herramienta regrese a descodificar un grupo de nivel superior o terminar la descodificación del bloque y comenzar a descodificar un siguiente bloque de video.
Descodificación Ilustrativa de una Representación de Grupo Anidado de Nivel Múltiple Codificada de Coeficientes de Frecuencia Reordenados Esta sección continúa ejemplos específicos de codificación de entropía presentados anteriormente, enfocándose en detalles de descodificar el código(s) que representa símbolos de subgrupos para una representación de grupo anidado de nivel múltiple de coeficientes de transformación. Generalmente, los símbolos comprenden dos o más tipos distintos de símbolos. El primer tipo de símbolos indica la presencia o la ausencia de coeficientes de frecuencia valorados no cero en una o más posiciones, y también puede indicar ciertos valores de coeficiente (por ejemplo, 0) o valores absolutos de coeficientes (por ejemplo, 1). El segundo tipo de símbolos indica los valores de los coeficientes de frecuencia en aquellas una o más posiciones. En otros ejemplos, los tipos de símbolos pueden combinarse, dividirse adicíonalmente en diferentes tipos, o pueden indicar información adicional sobre los coeficientes de frecuencia.
A. Descodificación de Longitud de Funcionamiento y Descodificación de Nivel de Funcionamiento Con la codificación y la descodificación de longitud de funcionamiento y nivel de funcionamiento, los símbolos (que representan valores de coeficiente individuales o subgrupos de valores de coeficiente) para un grupo dado se codifican como una secuencia. En un ejemplo de descodificación de una representación de grupo anidado de nivel múltiple codificada de coeficientes de transformación, una herramienta de descodificación, tal como la herramienta (1400) descrita con referencia a la Figura 14 recibe una corriente de bits de datos de video codificados. La corriente de bits incluye valores codificados para los coeficientes de transformación (100) de la Figura 1 que, durante la codificación, se escanearon en una serie 1D de coeficientes de transformación (850) como se muestra en la Figura 8 y se codificaron por nivel de funcionamiento o longitud de funcionamiento de acuerdo con la representación de grupo anidado de nivel múltiple (1180) mostrada en la Figura 11C. La codificación y la descodificación de nivel de funcionamiento o longitud de funcionamiento, por supuesto, puede utilizarse con otras representaciones de grupo anidado de nivel múltiple tal como aquellas mostradas en las Figura 11A u 11 B y otros órdenes de escaneo.
Cuando se realiza la descodificación de nivel de funcionamiento, la herramienta primero descodifica los códigos que indican la presencia o la ausencia de coeficientes de frecuencia valorados no cero para los subgrupos de posición de coeficiente 0-15, 16-31, 32-47, y 48-63 (ver Figuras 1, 8 y 11 C ) , de los cuales solamente el subgrupo 0-15 incluye únicamente valores de coeficiente de no cero. La corriente de bits genera los códigos funcionamiento_nivel_código_0 y funcionamiento_nivel_código_EOB, que indican resultados de codificación de nivel de funcionamiento de cero EOB, que corresponde a símbolos 1000 para los subgrupos de coeficiente. La herramienta de descodificación reconstruye coeficientes de valor cero para posiciones 16 a 63 y recibe una o más códigos para el subgrupo 0-15, que incluye al menos un valor de no cero.
Para el subgrupo 0-15, la herramienta recibe y analiza los códigos de funcionamiento_nivel_código_0, funcionamiento_nivel_código_1 , y funcionamiento_nivel_cód¡go_0, que representa resultados de codificación de nivel de funcionamiento 010 para los símbolos 1011. La herramienta de descodificación reconstruye coeficientes de valor 0 para posiciones 4 a 7 y recibe uno o más códigos para el subgrupo 0-3. Los códigos de nivel de funcionamiento para el subgrupo 0-3 están codificados para producir los símbolos 1101 para posiciones 0 a 3, y la herramienta recibe y analiza códigos para los valores de coeficiente de no cero en posiciones 0, 1 y 3. La herramienta de descodificación similarmente recibe y analiza códigos para el subgrupo 8-11, entonces para el subgrupo 12-15, valores de descodificación para posiciones 8 a 15. Debido a que la herramienta colocó un valor de coeficiente en cada una de las posiciones de coeficientes 0-63, la herramienta entonces se hace al descodificar los valores de coeficiente de transformación para el bloque actual.
O, cuando se realiza descodificación de longitud de funcionamiento, la herramienta recibe y analiza códigos que indican la presencia o la ausencia de coeficientes de frecuencia valorados no cero para los subgrupos de posición de coeficiente 0-15, 16-31, 32-47, y 48-63 (ver Figuras 1, 8 y 11C). La corriente de bits genera los códigos de funcionamiento_longitud_código_0, funcionamiento_longitud_código_1 , y funcionamiento_longitud_código_EOB, que indican resultados de codificación de longitud de funcionamiento de 01 EOB y corresponde a símbolos 1000 para los subgrupos de coeficiente. Los símbolos 1000 indican al menos un valor de no cero que está presente en posiciones 0-15, y adicionalmente cada una de las posiciones 16-63 tiene un coeficiente de frecuencia valorado 0. La herramienta de descodificación de esa forma es capaz de colocar un valor de cero para cada uno de los coeficientes de frecuencia en posiciones 16-63.
La herramienta después recibe y analiza códigos que indican la presencia o ausencia de coeficientes de frecuencia valorados no cero para los coeficientes en posiciones 0-3, 4-7, 8-11, y 12-15. La corriente de bits genera los códigos funcionamien.to_longitud_ código_0, funcionamiento_longitud_código_1 , funcionamiento_ longitud_código_1 , y f uncionamiento_longitud_código_EOB, que corresponden a resultados de codificación de longitud de funcionamiento de E11 EOB y símbolos 1011 para subgrupos de posición de coeficiente 0-3, 4-7, 8-11, y 12-15, respectivamente. Los símbolos 1011 indican que al menos un valor de no cero está presente en cada una de las posiciones 0-3, posiciones 8-11, y posiciones 12-15, y que no hay coeficientes de frecuencia valorados no cero en las posiciones 4-7, y así la herramienta de descodificación coloca un valor de cero para cada uno de los coeficientes de frecuencia en las posiciones 4-7.
Después, la herramienta recibe y analiza códigos que indican la presencia o ausencia de coeficientes de frecuencia valorados no cero para los coeficientes en posiciones 0, 1, 2, y 3. La corriente de bits genera códigos de funcionamiento_longitud_código_0, funcionam¡ento_longitud_código_2, funcionamiento_longitud_ código_1, y funcionamiento_longitud_código_EOB, que indican decodificación de longitud de funcionamiento de 021 EOB y símbolos correspondientes 1101. Los símbolos 1101 indican que los coeficientes en las posiciones 0, 1, y 3 cada uno contiene un coeficiente de frecuencia con un valor de no cero, mientras el coeficiente la posición 2 no. La herramienta de esa forma coloca automáticamente un valor de cero en, la posición de coeficiente 2. La herramienta además recibe y analiza los códigos valor_25, valor_12, y valor_-5, que corresponden a valores de coeficiente de 25, 12, y -5, respectivamente. Debido a que la herramienta descodificó los símbolos 1101 para posiciones 0-3, la herramienta coloca el valor 25 a la posición 0, el valor 12 en la posición 1, y el valor -5 la posición 3. La herramienta similarmente recibe y analiza códigos para ej subgrupo 8-11 (y sus valores de no cero) y el subgrupo 12-15 (y sus valores de no cero). Debido a que la herramienta colocó un valor de coeficiente en cada una de las posiciones de coeficiente 0-63, la herramienta entonces se hace al descodificar los valores de coeficiente de transformación para el bloque actual.
Los ejemplos antes descritos de descodificación de nivel de funcionamiento y descodificación de longitud de funcionamiento, la herramienta se descodifica de acuerdo con un primer transversal de profundidad. La herramienta descodifica símbolos para posiciones 0- 63, símbolos para posiciones 0-15, símbolos para posiciones 0-3, un valor para posición 0, un valor para posición 1, un valor para posición 3, símbolos para posiciones 8-11 (ya que las posiciones 4-7 se conocen para estar valoradas en cero y por lo tanto saltadas), y así sucesivamente. En otros ejemplos, la herramienta a su vez puede descodificarse de acuerdo con un primer transversal de amplitud, en donde la herramienta descodifica símbolos para posiciones 0-63, símbolos para posiciones 0-15, símbolos para posiciones 0-3, símbolos para posiciones 8-11, símbolos para posiciones 12-15, y entonces valores para posiciones 0, 1, 3, y 9-15. Alternativamente, la herramienta puede utilizar una combinación de primeros transversales de profundidad y primeros transversales de amplitud.
B. Descodificación de Huffman En las implementaciones de codificación/descodificación de Huffman, una herramienta de descodificación, tal como la herramienta (1400) descrita con referencia a la Figura 14 recibe una corriente de bits que incluye códigos de Huffman, tal como aquellos mostrados en los cuadros 1 y 2, y códigos de valor para coeficientes de transformación para un bloque. La herramienta entonces descodífica la corriente de bits para reconstruir los valores y las posiciones relativas de los coeficientes de frecuencia. En este ejemplo, la herramienta recibe una corriente de bits que contiene códigos tal como aquellos mostrados en la Figura 13B que se utilizaron para codificar la secuencia unidimensional (850) de la Figura 8 con la representación del grupo anidado de nivel múltiple ilustrativa mostrada en la Figura 11A. La codificación y la descodificación de Huffman, sin embargo, pueden utilizarse para una variedad de diferentes representaciones de grupo anidado de nivel múltiple tal como aquellas mostradas en las Figuras 11B u 11C, para diferentes estructuras de código a aquellas mostradas en los Cuadros 1 y 2, y para otros órdenes de escaneo.
La herramienta primero descodifica códigos señalados en la corriente de bits en el nivel de marco, nivel de secuencia, o algún otro nivel para producir alguna indicación de la estructura de la representación de grupo anidado de nivel múltiple. Por ejemplo, la herramienta determina la estructura de la representación de grupo anidado de nivel múltiple utilizada para codificar la secuencia unidimensional.
La herramienta recibe y analiza el código HC5_0, indica que tanto el primer subgrupo de primer nivel (que corresponde al coeficiente la posición 0) como el segundo subgrupo de segundo nivel (que corresponde a los coeficientes en la posición 1-63) comprenden uno o más valores de coeficiente de no cero cuyo valor absoluto es mayor que 1.
La herramienta después recibe y analiza el código valor_25. En este ejemplo, valor_25 es una indicación arbitraria de un código que corresponde a un valor de 25 para el coeficiente de frecuencia. El código previamente descodificado HC5_0 indica que el valor 25 es el valor del coeficiente de la posición 0. De esa forma, la herramienta coloca el valor 25 en la posición de coeficiente 0 y proceda además al descodificar códigos en la corriente de bits.
La herramienta después recibe y analiza código HC5_0 de la corriente de bits, que indican símbolos A2 a 2 para subgrupos 1-3 y 4-63, respectivamente. El primer subgrupo en un siguiente nivel inferior (que corresponde a posiciones de coeficiente 1-3) y el segundo grupo en el siguiente nivel inferior (que corresponden a posiciones de coeficiente 4-63) ambos contienen uno o más coeficientes de frecuencia valorados no cero cuyo valor absoluto es mayor que 1. Siguiendo un primer transversal de profundidad de la Figura 13B, la herramienta recibe y analiza los códigos HC5_0 (para subgrupo 1-3), valor_2 (para posición 1), HC5_4 (para subgrupo 2-3), valor_-5 (para posición 3), HC5_2 (para subgrupo 4-63), HC5_4 (subgrupo 4-15), HC5_1 (para subgrupo 8-15), HC5_4 (para subgrupo 8-11), HC5_1 (para subgrupo 9-11), y así sucesivamente.
Cuando la herramienta llega a un código tal como el código HC3_0 mostrado en el segundo nivel desde el fondo (1370), el código indica la presencia de al menos un valor de coeficiente de no cero con un valor absoluto de uno en un grupo, con ningún coeficiente en el grupo que tiene un valor absoluto mayor. De esa forma, además de descodificar los símbolos para los coeficientes o subgrupos, la herramienta solamente necesita descodificar un valor de señal (por ejemplo, bit de señal) para indicar si el valor de no cero del coeficiente de frecuencia particular es 1 ó -1, como se muestra en el nivel más abajo (1375).
Este ejemplo describe el procedimiento de descodificación como un primer transversal de profundidad, tal como un subgrupo de nivel inferior de un primer grupo si se descodifica antes de un segundo grupo en el mismo nivel que el primer grupo. Alternativamente, sin embargo, el transversal puedes ser primero amplitud para que cada grupo en un nivel dado este descodificado antes de un subgrupo en un nivel inferior. Otras modalidades también pueden tener diferentes órdenes transversales.
XIII. Alternativas Muchos de los ejemplos aquí presentados se refieren a codificación de entropía de un bloque 8 * 8 de coeficientes de transformación reordenados en un vector unidimensional de 64 coeficientes de transformación. Las técnicas y herramientas también pueden aplicarse a bloques ^ 8 u 8 ? 4 de coeficientes de transformación reordenados en vectores unidimensionales de 32 coeficientes, bloques 4 * 4 de coeficientes de transformación reordenados en vectores unidimensionales de 16 coeficientes, u otros tamaños de bloques de coeficientes de transformación.
Similarmente, muchos de los ejemplos de representaciones de grupo anidado presentados aquí se refieren a vectores unidimensionales de 64 coeficientes de transformación. Las técnicas y herramientas aquí presentadas también pueden aplicarse a vectores de longitud 32, longitud 16 , o alguna otra longitud. La profundidad y la amplitud de las representaciones de grupo anidadas dependen de la ¡mplementación, con división más agresiva de grupos en subgrupos que tiende a generar representaciones más amplias, más superficiales, y viceversa.
Aunque se describieron anteriormente órdenes de escaneo ilustrativos, las técnicas y herramientas aquí presentadas pueden realizarse con otros órdenes de escaneo. La codificación de entropía de coeficientes de transformación reordenados puede utilizar codificación de Huffman adaptable, codificación de Huffman no adaptable, codificación de nivel de funcionamiento, otra variación de codificación de longitud de funcionamiento, o algún otro tipo de codificación de entropía.
En vista de muchas modalidades posibles a las cuales pueden aplicarse los principios de la invención descrita, se debe reconocer que las modalidades ilustradas son únicamente ejemplos preferidos de la invención y no deben tomarse como limitando el alcance de la invención. En lugar de eso, el alcance de la invención se define por las siguientes reivindicaciones. Por lo tanto se reclama como la invención todo lo que venga dentro del alcance y espíritu de estas reivindicaciones.

Claims (20)

REIVINDICACIONES
1.- Uno o más medios de almacenamiento que almacenan instrucciones que, cuando se ejecutan en una computadora, hacen que la computadora realice un método de codificación de video, el método comprende: seleccionar (605) uno de una pluralidad de órdenes de escaneo; producir información que indica el orden de escaneo seleccionado en una corriente de bits; aplicar (610) el orden de escaneo seleccionado para reordenar coeficientes de frecuencia plurales de un bloque; codificar por entropía (630) los coeficientes de frecuencia plurales reordenados al utilizar una representación de grupo anidado de nivel múltiple de los coeficientes de frecuencia reordenados, incluyendo: representar un primer grupo de uno o más de los coeficientes de frecuencia plurales reordenados con una representación de resumen con un primer símbolo en un primer nivel de la representación de grupo anidado de nivel múltiple; y codificar por entropía el primer símbolo y un segundo símbolo en el primer nivel de la representación de grupo anidado de nivel múltiple; y producir los coeficientes de frecuencia codificados por entropía en la corriente de bits.
2.- Uno o más medios de almacenamiento de acuerdo con la reivindicación 1, en donde el primer símbolo indica la presencia o la ausencia de valores de coeficiente de no cero entre el primer grupo de coeficientes de frecuencia reordenados.
3.- Uno o más medios de almacenamiento de acuerdo con la reivindicación 1, en donde el segundo símbolo representa uno de los coeficientes de frecuencia plurales reordenados fuera del primer grupo.
4. - Uno o más de almacenamiento de acuerdo con la reivindicación 3, en donde la codificación por entropía del primer símbolo y el segundo símbolo incluye codificar conjuntamente el primer símbolo y el segundo símbolo utilizando codificación de Huffman.
5. - Uno o más medios de almacenamiento de acuerdo con la reivindicación 1, en donde codificar por entropía el primer símbolo y el segundo símbolo incluye codificar la longitud de funcionamiento del primer símbolo y el segundo símbolo junto con uno o más de otros símbolos.
6. - Una o más de almacenamiento de acuerdo con la reivindicación 1, en donde la codificación de entropía además comprende: representar un segundo grupo de uno o más de los coeficientes de frecuencia plurales reordenados como una representación de resumen con el segundo símbolo en el primer nivel de la representación de grupo anidado de nivel múltiple, en donde la codificación de entropía del primer símbolo y el segundo símbolo incluye codificar conjuntamente el primer símbolo y el segundo símbolo utilizando la codificación de Huffman.
7. - Uno o más medios de almacenamiento de acuerdo con la reivindicación 1, en donde el primer grupo incluye al menos un valor de coeficiente de no cero, y en donde la codificación de entropía además comprende, en un segundo nivel de la representación de grupo anidado de nivel múltiple inferior al primer nivel, valores de coeficiente de codificación de entropía para los coeficientes respectivos del primer grupo.
8. - Uno o más medios de almacenamiento de acuerdo con la reivindicación 1, en donde el primer grupo incluye al menos un valor de coeficiente de no cero, y en donde la codificación de entropía además comprende: representar un primer subgrupo de uno o más de los coeficientes de frecuencia del primer grupo como una representación de resumen con un primer sub-símbolo a un segundo nivel de la representación de grupo anidado de nivel múltiple inferior al primer nivel.
9.- Uno o más medios de almacenamiento de acuerdo con la reivindicación 8, que además comprende codificar por entropía, a un tercer nivel de la representación de grupo anidado de nivel múltiple inferior al segundo nivel, valores de coeficiente para coeficientes respectivos del primer subgrupo.
10.- Uno o más de almacenamiento de acuerdo con la reivindicación 1, en donde la selección comprende: evaluar órdenes de escaneo predeterminados plurales entre la pluralidad de órdenes de escaneo; y si ninguno de los órdenes de escaneo predeterminados plurales produce coeficientes de frecuencia adecuadamente reordenados para codificación de entropía, crear un nuevo orden de escaneo de la pluralidad de órdenes de escaneo.
11.- Un método para reconstruir un video, el método comprende: recibir en una corriente de bits, información de video codificada por entropía para coeficientes de frecuencia plurales; descodificar por entropía (1505) la información de video codificada por entropía, que incluye: descodificar por entropía un primer símbolo y un segundo símbolo a un primer nivel de una representación de grupo anidada de nivel múltiple de los coeficientes de frecuencia plurales, en donde el primer símbolo representa un primer grupo de uno o más de los coeficientes de frecuencia plurales; y descodificar por entropía un primer sub-símbolo a un segundo nivel inferior al primer nivel de la representación de grupo anidado de nivel múltiple de los coeficientes de frecuencia plurales, en donde el primer sub-símbolo representa un primer subgrupo de uno o más de los coeficientes de frecuencia del primer grupo; determinar (1510) una orden de escaneo para los coeficientes de frecuencia plurales; reordenar (1515) los coeficientes de frecuencia plurales de acuerdo con el orden de escaneo determinado; y utilizar los coeficientes de frecuencia reordenados para reconstruir el video.
12.- El método de acuerdo con la reivindicación 11, en donde el primer símbolo indica la presencia o la ausencia de valores de coeficiente de no cero en el primer grupo.
13. - El método de acuerdo con la reivindicación 12, en donde el segundo símbolo al primer nivel de la presentación del grupo anidado de nivel múltiple de los coeficientes de frecuencia plurales indica la presencia o la ausencia de valores de coeficiente de no cero en un segundo grupo de uno o más de los coeficientes de frecuencia plurales fuera del primer grupo.
14. - El método de acuerdo con la reivindicación 11, en donde el primer sub-símbolo indica la presencia o la ausencia de valores de coeficiente de no cero en el primer subgrupo.
15. - El método de acuerdo con la reivindicación 11, en donde determinar el orden de escaneo comprende: recibir información de orden de escaneo en la corriente de bits, la información de orden de escaneo indicando el orden de escaneo determinado.
16. - El método de acuerdo con la reivindicación 15, en donde el orden de escaneo es uno de una pluralidad de órdenes de escaneo predeterminados.
17.- Un sistema codificador que comprende: un selector de orden de escaneo de bloque (425) adaptado para seleccionar un orden de escaneo de una pluralidad de órdenes de escaneo; un escáner de bloque (425) adaptado para reordenar una pluralidad de coeficientes de frecuencia en un bloque al utilizar el orden de escaneo seleccionado; uno o más módulos de codificación de entropía (430) adaptado para codificar los coeficientes de frecuencia reordenados en una representación de grupo anidado de nivel múltiple al: codificar símbolos plurales en un nivel dado de la representación de grupo anidado del nivel múltiple, cada uno de los símbolos plurales al nivel dado representando un grupo de uno o más de los coeficientes de frecuencia reordenados; y para cada uno de los símbolos plurales en el nivel dado, determinar si se divide el grupo para el símbolo en subgrupos plurales y, si es así, codificar sub-símbolos plurales a un nivel inferior de la representación de grupo anidado de nivel múltiple, cada uno de los sub-símbolos plurales al nivel inferior representando uno de los subgrupos plurales.
18.- El sistema codificador de acuerdo con la reivindicación 17, en donde el selector de orden de escaneo de bloque está adaptado para seleccionar el orden de escaneo basándose en los resultados de una aplicación de bucle cerrado de cada uno de la pluralidad de órdenes de escaneo al bloque.
19 - El sistema codificador de acuerdo con la reivindicación 17, en donde el selector de orden dé escaneo de bloque está adaptado para seleccionar el orden de escaneo basándose en los resultados de una evaluación de bucle abierto de aplicación de uno o más de la pluralidad de órdenes de escaneo al bloque.
20.- El sistema codificador de acuerdo con la reivindicación 17, en donde la pluralidad de órdenes de escaneo está predeterminada.
MX2010011961A 2008-05-02 2009-04-01 Representacion de nivel multiple de coeficientes de transformacion reordenados. MX2010011961A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/151,069 US8179974B2 (en) 2008-05-02 2008-05-02 Multi-level representation of reordered transform coefficients
PCT/US2009/039089 WO2009134575A2 (en) 2008-05-02 2009-04-01 Multi-level representation of reordered transform coefficients

Publications (1)

Publication Number Publication Date
MX2010011961A true MX2010011961A (es) 2010-11-30

Family

ID=41255661

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2010011961A MX2010011961A (es) 2008-05-02 2009-04-01 Representacion de nivel multiple de coeficientes de transformacion reordenados.

Country Status (8)

Country Link
US (2) US8179974B2 (es)
EP (1) EP2269380B1 (es)
JP (1) JP5180370B2 (es)
KR (1) KR101541945B1 (es)
CN (1) CN102017634B (es)
HK (1) HK1154729A1 (es)
MX (1) MX2010011961A (es)
WO (1) WO2009134575A2 (es)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9479786B2 (en) * 2008-09-26 2016-10-25 Dolby Laboratories Licensing Corporation Complexity allocation for video and image coding applications
US8526745B2 (en) * 2009-12-03 2013-09-03 Sony Corporation Embedded graphics coding: reordered bitstream for parallel decoding
KR101703327B1 (ko) * 2010-01-14 2017-02-06 삼성전자 주식회사 계층적 데이터 단위의 패턴 정보를 이용하는 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
KR101675118B1 (ko) * 2010-01-14 2016-11-10 삼성전자 주식회사 스킵 및 분할 순서를 고려한 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
HRP20220743T1 (hr) 2010-04-13 2022-08-19 Ge Video Compression, Llc Kodiranje signifikacijskih mapa i blokova koeficijenata transformacije
KR102282803B1 (ko) 2010-04-13 2021-07-28 지이 비디오 컴프레션, 엘엘씨 평면 간 예측
KR102145722B1 (ko) 2010-04-13 2020-08-20 지이 비디오 컴프레션, 엘엘씨 샘플 영역 병합
CN106231336B (zh) 2010-04-13 2020-06-12 Ge视频压缩有限责任公司 解码器、解码方法、编码器以及编码方法
DK3301648T3 (da) 2010-04-13 2020-04-06 Ge Video Compression Llc Nedarvning i samplearraymultitræsunderinddeling
KR20120009618A (ko) * 2010-07-19 2012-02-02 에스케이 텔레콤주식회사 주파수변환단위 분할부호화 방법 및 장치와 이를 이용한 영상 부호화/복호화 방법 및 장치
US8532413B2 (en) * 2010-10-13 2013-09-10 Samsung Electronics Co., Ltd. Entropy encoding/decoding method and apparatus for hierarchical image processing and symbol encoding/decoding apparatus for the same
US9641846B2 (en) * 2010-10-22 2017-05-02 Qualcomm Incorporated Adaptive scanning of transform coefficients for video coding
US9042440B2 (en) 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
US8976861B2 (en) 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
US20120163456A1 (en) * 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US20120163472A1 (en) * 2010-12-22 2012-06-28 Qualcomm Incorporated Efficiently coding scanning order information for a video block in video coding
US10992958B2 (en) 2010-12-29 2021-04-27 Qualcomm Incorporated Video coding using mapped transforms and scanning modes
KR101739580B1 (ko) * 2010-12-30 2017-05-25 에스케이 텔레콤주식회사 적응적 스캔 장치 및 그 스캔 방법
CN102651816B (zh) * 2011-02-23 2014-09-17 华为技术有限公司 一种变换系数块的扫描方法和装置
US10397577B2 (en) 2011-03-08 2019-08-27 Velos Media, Llc Inverse scan order for significance map coding of transform coefficients in video coding
US9106913B2 (en) 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
CN104093020B (zh) * 2011-03-10 2017-11-17 华为技术有限公司 变换系数的编码方法、变换系数的解码方法,和装置
CN102685503B (zh) * 2011-03-10 2014-06-25 华为技术有限公司 变换系数的编码方法、变换系数的解码方法,和装置
CN104093018B (zh) * 2011-03-10 2017-08-04 华为技术有限公司 变换系数的编码方法、变换系数的解码方法,和装置
CN107529708B (zh) * 2011-06-16 2019-05-07 Ge视频压缩有限责任公司 解码器、编码器、解码和编码视频的方法及存储介质
US9167253B2 (en) 2011-06-28 2015-10-20 Qualcomm Incorporated Derivation of the position in scan order of the last significant transform coefficient in video coding
US9756360B2 (en) * 2011-07-19 2017-09-05 Qualcomm Incorporated Coefficient scanning in video coding
PH12018500138A1 (en) * 2012-01-20 2018-07-09 Ge Video Compression Llc Transform coefficient coding
US9432666B2 (en) * 2012-03-29 2016-08-30 Intel Corporation CAVLC decoder with multi-symbol run before parallel decode
CN103391433B (zh) * 2012-05-09 2017-07-18 腾讯科技(深圳)有限公司 视频编码帧内预测扫描方法及视频编码方法
CN102843562B (zh) * 2012-08-21 2016-03-02 西北农林科技大学 一种分组容错熵编码的方法
US20140328406A1 (en) 2013-05-01 2014-11-06 Raymond John Westwater Method and Apparatus to Perform Optimal Visually-Weighed Quantization of Time-Varying Visual Sequences in Transform Space
KR102329228B1 (ko) * 2016-05-12 2021-11-19 엘지전자 주식회사 임의 파티션 변환에 기초하여 비디오 신호를 처리하는 방법
US9712830B1 (en) * 2016-09-15 2017-07-18 Dropbox, Inc. Techniques for image recompression
GB2556886B (en) 2016-11-23 2019-05-15 Imagination Tech Ltd Encoding and decoding variable length instructions
US11570473B2 (en) * 2018-08-03 2023-01-31 V-Nova International Limited Entropy coding for signal enhancement coding
US10728555B1 (en) 2019-02-06 2020-07-28 Sony Corporation Embedded codec (EBC) circuitry for position dependent entropy coding of residual level data
US11765366B2 (en) * 2020-05-07 2023-09-19 Blackmagic Design Pty Ltd Method for processing transform coefficients
CN113489980B (zh) * 2021-08-13 2022-10-25 北京大学深圳研究生院 一种点云属性变换系数的熵编码和熵解码的方法及设备

Family Cites Families (223)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4420771A (en) 1981-02-09 1983-12-13 Bell Telephone Laboratories, Incorporated Technique for encoding multi-level signals
US4558302A (en) 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
DE3629434C2 (de) 1986-08-29 1994-07-28 Karlheinz Dipl Ing Brandenburg Digitales Codierverfahren
ATE108587T1 (de) * 1986-09-13 1994-07-15 Philips Nv Verfahren und schaltungsanordung zur bitratenreduktion.
US4730348A (en) * 1986-09-19 1988-03-08 Adaptive Computer Technologies Adaptive data compression system
US4698672A (en) 1986-10-27 1987-10-06 Compression Labs, Inc. Coding system for reducing redundancy
US4862167A (en) 1987-02-24 1989-08-29 Hayes Microcomputer Products, Inc. Adaptive data compression method and apparatus
US4968135A (en) 1987-08-17 1990-11-06 Digital Equipment Corporation System for producing pixel image data from CCITT encoded pixel data
US4792981A (en) 1987-09-21 1988-12-20 Am International, Inc. Manipulation of run-length encoded images
JPH0191587U (es) 1987-12-07 1989-06-15
US4813056A (en) * 1987-12-08 1989-03-14 General Electric Company Modified statistical coding of digital signals
JPH0621830Y2 (ja) 1988-03-11 1994-06-08 本田技研工業株式会社 自動車のサイドシル構造
EP0339589A3 (en) * 1988-04-28 1992-01-02 Sharp Kabushiki Kaisha Orthogonal transform coding system for image data
US5043919A (en) 1988-12-19 1991-08-27 International Business Machines Corporation Method of and system for updating a display unit
DE3943880B4 (de) 1989-04-17 2008-07-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
FR2646978B1 (fr) * 1989-05-11 1991-08-23 France Etat Procede et installation a codage de signaux sonores
US5179442A (en) * 1989-06-02 1993-01-12 North American Philips Corporation Method and apparatus for digitally processing a high definition television augmentation signal
US5128758A (en) * 1989-06-02 1992-07-07 North American Philips Corporation Method and apparatus for digitally processing a high definition television augmentation signal
JPH03108824U (es) 1990-02-22 1991-11-08
US5270832A (en) 1990-03-14 1993-12-14 C-Cube Microsystems System for compression and decompression of video data using discrete cosine transform and coding techniques
JPH0787331B2 (ja) 1990-05-07 1995-09-20 松下電器産業株式会社 圧電振動子及びその周波数調整方法
US5146324A (en) 1990-07-31 1992-09-08 Ampex Corporation Data compression using a feedforward quantization estimator
JPH04199981A (ja) * 1990-11-29 1992-07-21 Nec Corp 即時処理型1次元符号器
US5253053A (en) 1990-12-31 1993-10-12 Apple Computer, Inc. Variable length decoding using lookup tables
US5266941A (en) 1991-02-15 1993-11-30 Silicon Graphics, Inc. Apparatus and method for controlling storage of display information in a computer system
US5373513A (en) 1991-08-16 1994-12-13 Eastman Kodak Company Shift correction code system for correcting additive errors and synchronization slips
JP2670201B2 (ja) * 1991-08-30 1997-10-29 富士写真フイルム株式会社 画像データ圧縮符号化装置および方法
JP2586260B2 (ja) 1991-10-22 1997-02-26 三菱電機株式会社 適応的ブロッキング画像符号化装置
JP3134424B2 (ja) 1991-10-31 2001-02-13 ソニー株式会社 可変長符号化方法及び装置
US5227878A (en) * 1991-11-15 1993-07-13 At&T Bell Laboratories Adaptive coding and decoding of frames and fields of video
JP2812446B2 (ja) 1991-11-21 1998-10-22 三洋電機株式会社 画像符号化方式
DE69228983T2 (de) * 1991-12-18 1999-10-28 Koninkl Philips Electronics Nv System zum Übertragen und/oder Speichern von Signalen von texturierten Bildern
WO1993013603A1 (en) 1991-12-23 1993-07-08 Intel Corporation Circuitry for decoding huffman codes
JPH05199422A (ja) 1992-01-20 1993-08-06 Fujitsu General Ltd 画像伝送装置
US6680975B1 (en) * 1992-02-29 2004-01-20 Samsung Electronics Co., Ltd. Signal encoding and decoding system and method
EP0559348A3 (en) * 1992-03-02 1993-11-03 AT&T Corp. Rate control loop processor for perceptual encoder/decoder
US5227788A (en) * 1992-03-02 1993-07-13 At&T Bell Laboratories Method and apparatus for two-component signal compression
CA2090052C (en) * 1992-03-02 1998-11-24 Anibal Joao De Sousa Ferreira Method and apparatus for the perceptual coding of audio signals
US5714950A (en) * 1992-07-23 1998-02-03 Samsung Electronics Co., Ltd. System for variable-length-coding and variable-length-decoding digitaldata
KR950010913B1 (ko) 1992-07-23 1995-09-25 삼성전자주식회사 가변장부호화 및 복호화시스템
JP3348310B2 (ja) 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
CA2107727C (en) * 1992-10-07 1999-06-01 Hiroaki Ueda Synchronous compression and reconstruction system
US5982437A (en) 1992-10-26 1999-11-09 Sony Corporation Coding method and system, and decoding method and system
JP2959916B2 (ja) * 1992-10-28 1999-10-06 松下電器産業株式会社 デジタル・ビデオ・コーダ用のバーサタイルなエスケープ・ラン・レベル・コーダ
KR0166722B1 (ko) 1992-11-30 1999-03-20 윤종용 부호화 및 복호화방법 및 그 장치
US5367629A (en) 1992-12-18 1994-11-22 Sharevision Technology, Inc. Digital video compression system utilizing vector adaptive transform
US5467134A (en) 1992-12-22 1995-11-14 Microsoft Corporation Method and system for compressing video data
US5535305A (en) * 1992-12-31 1996-07-09 Apple Computer, Inc. Sub-partitioned vector quantization of probability density functions
US5400075A (en) * 1993-01-13 1995-03-21 Thomson Consumer Electronics, Inc. Adaptive variable length encoder/decoder
JPH06217110A (ja) 1993-01-20 1994-08-05 Process Shizai Kk 画像変換方法
US5544286A (en) 1993-01-29 1996-08-06 Microsoft Corporation Digital video data compression technique
TW224553B (en) * 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
US5376968A (en) 1993-03-11 1994-12-27 General Instrument Corporation Adaptive compression of digital video data using different modes such as PCM and DPCM
US5408234A (en) * 1993-04-30 1995-04-18 Apple Computer, Inc. Multi-codebook coding process
ATE211326T1 (de) * 1993-05-31 2002-01-15 Sony Corp Verfahren und vorrichtung zum kodieren oder dekodieren von signalen und aufzeichnungsmedium
US5664057A (en) 1993-07-07 1997-09-02 Picturetel Corporation Fixed bit rate speech encoder/decoder
KR0155784B1 (ko) 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
KR970009408B1 (ko) 1994-01-18 1997-06-13 대우전자 주식회사 인터/인트라 테이블 선택 회로
JP3277677B2 (ja) 1994-04-01 2002-04-22 ソニー株式会社 信号符号化方法及び装置、信号記録媒体、信号伝送方法、並びに信号復号化方法及び装置
US5504591A (en) * 1994-04-25 1996-04-02 Microsoft Corporation System and method for compressing graphic images
US5457495A (en) 1994-05-25 1995-10-10 At&T Ipm Corp. Adaptive video coder with dynamic bit allocation
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
US5881176A (en) 1994-09-21 1999-03-09 Ricoh Corporation Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US6141446A (en) * 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US6195465B1 (en) * 1994-09-21 2001-02-27 Ricoh Company, Ltd. Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US5568167A (en) 1994-09-23 1996-10-22 C-Cube Microsystems, Inc. System for providing antialiased video overlays
JP3474005B2 (ja) 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
JPH08116263A (ja) 1994-10-17 1996-05-07 Fujitsu Ltd データ処理装置及びデータ処理方法
US5802213A (en) 1994-10-18 1998-09-01 Intel Corporation Encoding video signals using local quantization levels
ATE214524T1 (de) 1994-11-04 2002-03-15 Koninkl Philips Electronics Nv Kodierung und dekodierung eines breitbandigen digitalen informationssignals
US5473376A (en) 1994-12-01 1995-12-05 Motorola, Inc. Method and apparatus for adaptive entropy encoding/decoding of quantized transform coefficients in a video compression system
JPH08167852A (ja) 1994-12-13 1996-06-25 Fujitsu Ltd データ圧縮方法及び装置
US5654702A (en) 1994-12-16 1997-08-05 National Semiconductor Corp. Syntax-based arithmetic coding for low bit rate videophone
JP3371590B2 (ja) 1994-12-28 2003-01-27 ソニー株式会社 高能率符号化方法及び高能率復号化方法
JP2951861B2 (ja) 1994-12-28 1999-09-20 シャープ株式会社 画像符号化装置及び画像復号装置
JPH08190764A (ja) 1995-01-05 1996-07-23 Sony Corp ディジタル信号処理方法、ディジタル信号処理装置及び記録媒体
JPH08205169A (ja) 1995-01-20 1996-08-09 Matsushita Electric Ind Co Ltd 動画像符号化装置及び復号装置
JP3238854B2 (ja) 1995-02-21 2001-12-17 富士通株式会社 データ圧縮方法及びデータ圧縮装置、並びにデータ復元方法及びデータ復元装置
US5574449A (en) 1995-02-24 1996-11-12 Intel Corporation Signal processing with hybrid variable-length and entropy encodidng
US5991451A (en) 1995-03-23 1999-11-23 Intel Corporation Variable-length encoding using code swapping
US5884269A (en) * 1995-04-17 1999-03-16 Merging Technologies Lossless compression/decompression of digital audio data
US5864711A (en) 1995-07-05 1999-01-26 Microsoft Corporation System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
US5825830A (en) 1995-08-17 1998-10-20 Kopf; David A. Method and apparatus for the compression of audio, video or other data
US5933535A (en) 1995-10-05 1999-08-03 Microsoft Corporation Object-based video compression process employing arbitrarily-shaped features
US5819215A (en) 1995-10-13 1998-10-06 Dobson; Kurt Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data
US5889891A (en) * 1995-11-21 1999-03-30 Regents Of The University Of California Universal codebook vector quantization with constrained storage
JP3283413B2 (ja) 1995-11-30 2002-05-20 株式会社日立製作所 符号化復号方法、符号化装置および復号装置
US5956674A (en) 1995-12-01 1999-09-21 Digital Theater Systems, Inc. Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels
JPH09162748A (ja) 1995-12-01 1997-06-20 Fujitsu Ltd データ符号化方法、データ復号方法、データ圧縮装置、データ復元装置、及びデータ圧縮・復元システム
US5831559A (en) 1996-01-24 1998-11-03 Intel Corporation Encoding/decoding video signals using multiple run-val mapping tables
US6957350B1 (en) * 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5675332A (en) 1996-02-01 1997-10-07 Samsung Electronics Co., Ltd. Plural-step chunk-at-a-time decoder for variable-length codes of Huffman type
US5682152A (en) * 1996-03-19 1997-10-28 Johnson-Grace Company Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US5812971A (en) 1996-03-22 1998-09-22 Lucent Technologies Inc. Enhanced joint stereo coding method using temporal envelope shaping
US6215910B1 (en) 1996-03-28 2001-04-10 Microsoft Corporation Table-based compression with embedded coding
US5850482A (en) 1996-04-17 1998-12-15 Mcdonnell Douglas Corporation Error resilient method and apparatus for entropy coding
KR100324610B1 (ko) 1996-05-28 2002-02-27 모리시타 요이찌 화상예측 복호화장치 및 방법
WO1998000924A1 (en) 1996-06-28 1998-01-08 Philips Electronics N.V. High performance variable length decoder with two-word bit stream segmentation and related method
CN1097957C (zh) 1996-07-03 2003-01-01 摩托罗拉公司 用于基于边界的自适应熵编码/解码的方法和装置
DE19628293C1 (de) * 1996-07-12 1997-12-11 Fraunhofer Ges Forschung Codieren und Decodieren von Audiosignalen unter Verwendung von Intensity-Stereo und Prädiktion
DE19628292B4 (de) 1996-07-12 2007-08-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren zum Codieren und Decodieren von Stereoaudiospektralwerten
US5828426A (en) 1996-08-20 1998-10-27 Samsung Electronics Co., Ltd. Apparatus for decoding variable length coded data of both MPEG-1 and MPEG-2 standards
JP3318825B2 (ja) 1996-08-20 2002-08-26 ソニー株式会社 デジタル信号符号化処理方法、デジタル信号符号化処理装置、デジタル信号記録方法、デジタル信号記録装置、記録媒体、デジタル信号伝送方法及びデジタル信号伝送装置
US5734340A (en) * 1996-08-27 1998-03-31 Symantech Corporation Method and apparatus for storing run-intensive information in compact form
US6233017B1 (en) * 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US5748789A (en) * 1996-10-31 1998-05-05 Microsoft Corporation Transparent block skipping in object-based video coding systems
DE69739536D1 (de) * 1996-11-06 2009-09-24 Panasonic Corp Methode zur Bilddekodierung mit Kodes variabler Länge
CN1179348C (zh) 1996-11-07 2004-12-08 皇家菲利浦电子有限公司 比特流信号的数据处理
KR100518640B1 (ko) * 1996-11-11 2005-12-14 코닌클리케 필립스 일렉트로닉스 엔.브이. 라이스인코더/디코더를사용한데이터압축/복원장치및방법
US5903231A (en) * 1996-12-16 1999-05-11 Vidicast Ltd. System for encoding base N data using a multi-level coding scheme
JP3484310B2 (ja) 1997-01-17 2004-01-06 松下電器産業株式会社 可変長符号器
NL1005084C2 (nl) * 1997-01-24 1998-07-27 Oce Tech Bv Werkwijze voor het uitvoeren van een beeldbewerkingsoperatie op looplengte gecodeerde bitmaps.
JP3534577B2 (ja) 1997-07-23 2004-06-07 日本電信電話株式会社 情報多重化方法、情報抽出方法及びそれらの装置
US6038536A (en) * 1997-01-31 2000-03-14 Texas Instruments Incorporated Data compression using bit change statistics
US6272175B1 (en) 1997-02-13 2001-08-07 Conexant Systems, Inc. Video signal coding systems and processes using adaptive quantization
JPH10229340A (ja) * 1997-02-14 1998-08-25 Nec Corp サブバンド信号およびウエーブレット変換係数の符号化復号方式
US5974184A (en) 1997-03-07 1999-10-26 General Instrument Corporation Intra-macroblock DC and AC coefficient prediction for interlaced digital video
US6005980A (en) * 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
FI114248B (fi) * 1997-03-14 2004-09-15 Nokia Corp Menetelmä ja laite audiokoodaukseen ja audiodekoodaukseen
US6728775B1 (en) * 1997-03-17 2004-04-27 Microsoft Corporation Multiple multicasting of multimedia streams
US6009387A (en) 1997-03-20 1999-12-28 International Business Machines Corporation System and method of compression/decompressing a speech signal by using split vector quantization and scalar quantization
US6404813B1 (en) * 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US6259810B1 (en) * 1997-04-15 2001-07-10 Microsoft Corporation Method and system of decoding compressed image data
US5883633A (en) * 1997-04-15 1999-03-16 Microsoft Corporation Method and system of variable run length image encoding using sub-palette
JP3410629B2 (ja) 1997-05-21 2003-05-26 シャープ株式会社 可変長符号化回路及び可変長符号化方法
US6580834B2 (en) * 1997-05-30 2003-06-17 Competitive Technologies Of Pa, Inc. Method and apparatus for encoding and decoding signals
DE69826971T2 (de) * 1997-07-11 2005-11-17 Koninklijke Philips Electronics N.V. Übertragungssystem mit kodierer variabler länge
DE19730129C2 (de) 1997-07-14 2002-03-07 Fraunhofer Ges Forschung Verfahren zum Signalisieren einer Rauschsubstitution beim Codieren eines Audiosignals
DE19730130C2 (de) * 1997-07-14 2002-02-28 Fraunhofer Ges Forschung Verfahren zum Codieren eines Audiosignals
US6421738B1 (en) * 1997-07-15 2002-07-16 Microsoft Corporation Method and system for capturing and encoding full-screen video graphics
JP3884172B2 (ja) 1997-10-02 2007-02-21 株式会社東芝 可変長復号化装置および復号化方法
WO1999022525A1 (en) 1997-10-23 1999-05-06 Mitsubishi Denki Kabushiki Kaisha Image encoding method, image encoder, image decoding method, and image decoder
EP1809038B1 (en) 1997-10-23 2009-04-22 Mitsubishi Denki Kabushiki Kaisha Image decoding apparatus
JPH11161782A (ja) * 1997-11-27 1999-06-18 Seiko Epson Corp カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置
US6111914A (en) 1997-12-01 2000-08-29 Conexant Systems, Inc. Adaptive entropy coding in adaptive quantization framework for video signal coding systems and processes
US5946043A (en) 1997-12-31 1999-08-31 Microsoft Corporation Video coding using adaptive coding of block parameters for coded/uncoded blocks
US6226407B1 (en) * 1998-03-18 2001-05-01 Microsoft Corporation Method and apparatus for analyzing computer screens
US6054943A (en) * 1998-03-25 2000-04-25 Lawrence; John Clifton Multilevel digital information compression based on lawrence algorithm
US7263127B1 (en) * 1998-04-02 2007-08-28 Intel Corporation Method and apparatus for simplifying frame-based motion estimation
JP2002518916A (ja) * 1998-06-19 2002-06-25 イクエーター テクノロジーズ インコーポレイテッド 第1の解像度を有する符号化された形式の画像を第2の解像度を有するデコードされた形式の画像に直接にデコードする回路及び方法
JP3413720B2 (ja) 1998-06-26 2003-06-09 ソニー株式会社 画像符号化方法及び装置、並びに画像復号方法及び装置
US6253165B1 (en) * 1998-06-30 2001-06-26 Microsoft Corporation System and method for modeling probability distribution functions of transform coefficients of encoded signal
DE19840835C2 (de) 1998-09-07 2003-01-09 Fraunhofer Ges Forschung Vorrichtung und Verfahren zum Entropiecodieren von Informationswörtern und Vorrichtung und Verfahren zum Decodieren von Entropie-codierten Informationswörtern
JP3723740B2 (ja) * 1998-10-06 2005-12-07 松下電器産業株式会社 ロスレス圧縮符号方法とその装置およびロスレス圧縮復号方法とその装置
US6233359B1 (en) * 1998-10-29 2001-05-15 Seiko Epson Corporation File size bounded JPEG transcoder (FSBJT)
US6377930B1 (en) * 1998-12-14 2002-04-23 Microsoft Corporation Variable to variable length entropy encoding
US6300888B1 (en) 1998-12-14 2001-10-09 Microsoft Corporation Entrophy code mode switching for frequency-domain audio coding
US6223162B1 (en) * 1998-12-14 2001-04-24 Microsoft Corporation Multi-level run length coding for frequency-domain audio coding
US6404931B1 (en) * 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
US6100825A (en) 1998-12-31 2000-08-08 Microsoft Corporation Cluster-based data compression system and method
JP3434260B2 (ja) 1999-03-23 2003-08-04 日本電信電話株式会社 オーディオ信号符号化方法及び復号化方法、これらの装置及びプログラム記録媒体
US6477280B1 (en) 1999-03-26 2002-11-05 Microsoft Corporation Lossless adaptive encoding of finite alphabet data
US6678419B1 (en) * 1999-03-26 2004-01-13 Microsoft Corporation Reordering wavelet coefficients for improved encoding
ATE282260T1 (de) * 1999-03-26 2004-11-15 Microsoft Corp Verlustfreie adaptive codierung von daten eines endlichen alphabets
US7050503B2 (en) 1999-04-17 2006-05-23 Pts Corporation Segment-based encoding system using residue coding by basis function coefficients
JP3323175B2 (ja) 1999-04-20 2002-09-09 松下電器産業株式会社 符号化装置
US6573915B1 (en) * 1999-12-08 2003-06-03 International Business Machines Corporation Efficient capture of computer screens
US6567781B1 (en) * 1999-12-30 2003-05-20 Quikcat.Com, Inc. Method and apparatus for compressing audio data using a dynamical system having a multi-state dynamical rule set and associated transform basis function
US6552673B2 (en) * 2000-02-25 2003-04-22 Texas Instruments Incorporated Efficient table access for reversible variable length code decoding using a hash function
US6771828B1 (en) * 2000-03-03 2004-08-03 Microsoft Corporation System and method for progessively transform coding digital data
EP1294197A4 (en) * 2000-05-23 2004-11-24 Matsushita Electric Ind Co Ltd METHOD AND DEVICE FOR CODING WITH VARIABLE LENGTH
US6542863B1 (en) * 2000-06-14 2003-04-01 Intervideo, Inc. Fast codebook search method for MPEG audio encoding
US6373411B1 (en) 2000-08-31 2002-04-16 Agere Systems Guardian Corp. Method and apparatus for performing variable-size vector entropy coding
JP4508490B2 (ja) 2000-09-11 2010-07-21 パナソニック株式会社 符号化装置および復号化装置
US6961685B2 (en) 2000-09-19 2005-11-01 Sy Bon K Probability model selection using information-theoretic optimization criterion
US6931068B2 (en) 2000-10-24 2005-08-16 Eyeball Networks Inc. Three-dimensional wavelet-based scalable video compression
US6735339B1 (en) * 2000-10-27 2004-05-11 Dolby Laboratories Licensing Corporation Multi-stage encoding of signal components that are classified according to component value
JP3580251B2 (ja) 2000-12-27 2004-10-20 日本電気株式会社 データ圧縮装置及び圧縮方法並びにその制御プログラムを記録した記録媒体
US7274671B2 (en) 2001-02-09 2007-09-25 Boly Media Communications, Inc. Bitwise adaptive encoding using prefix prediction
CN100456640C (zh) 2001-06-07 2009-01-28 日本胜利株式会社 调制和解调方法与装置、信息传输方法和装置
US6650784B2 (en) 2001-07-02 2003-11-18 Qualcomm, Incorporated Lossless intraframe encoding using Golomb-Rice
US6587057B2 (en) * 2001-07-25 2003-07-01 Quicksilver Technology, Inc. High performance memory efficient variable-length coding decoder
US20030033143A1 (en) * 2001-08-13 2003-02-13 Hagai Aronowitz Decreasing noise sensitivity in speech processing under adverse conditions
US6856701B2 (en) 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
US6959116B2 (en) 2001-09-18 2005-10-25 Emc Corporation Largest magnitude indices selection for (run, level) encoding of a block coded picture
CN1946186B (zh) * 2001-11-22 2012-02-22 松下电器产业株式会社 可变长度编码方法以及可变长度解码方法
KR101030862B1 (ko) * 2001-11-22 2011-04-22 파나소닉 주식회사 부호화 방법 및 부호화 장치
US6825847B1 (en) 2001-11-30 2004-11-30 Nvidia Corporation System and method for real-time compression of pixel colors
US7165028B2 (en) * 2001-12-12 2007-01-16 Texas Instruments Incorporated Method of speech recognition resistant to convolutive distortion and additive distortion
US6934677B2 (en) 2001-12-14 2005-08-23 Microsoft Corporation Quantization matrices based on critical band pattern information for digital audio wherein quantization bands differ from critical bands
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7155065B1 (en) 2002-03-27 2006-12-26 Microsoft Corporation System and method for progressively transforming and coding digital data
US7139703B2 (en) 2002-04-05 2006-11-21 Microsoft Corporation Method of iterative noise estimation in a recursive framework
US6653955B1 (en) 2002-05-09 2003-11-25 Lsi Logic Corporation Multi-symbol variable length code decoder
GB2388502A (en) 2002-05-10 2003-11-12 Chris Dunn Compression of frequency domain audio signals
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
KR100846778B1 (ko) * 2002-07-16 2008-07-16 삼성전자주식회사 복수개의 주사 패턴을 이용한 부호화 방법, 복호화 방법,및 그 장치
DE10236694A1 (de) 2002-08-09 2004-02-26 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum skalierbaren Codieren und Vorrichtung und Verfahren zum skalierbaren Decodieren
US7328150B2 (en) * 2002-09-04 2008-02-05 Microsoft Corporation Innovations in pure lossless audio compression
US7433824B2 (en) * 2002-09-04 2008-10-07 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
DK1400954T3 (da) 2002-09-04 2008-03-31 Microsoft Corp Entropi-kodning ved tilpasning af kodning mellem niveau- og runlængde/niveau-moduser
US7424434B2 (en) * 2002-09-04 2008-09-09 Microsoft Corporation Unified lossy and lossless audio compression
US7502743B2 (en) * 2002-09-04 2009-03-10 Microsoft Corporation Multi-channel audio encoding and decoding with multi-channel transform selection
US7536305B2 (en) * 2002-09-04 2009-05-19 Microsoft Corporation Mixed lossless audio compression
US6795584B2 (en) 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
AU2003290536A1 (en) * 2002-10-23 2004-05-13 Divxnetworks, Inc. Method and system for supercompression of compressed digital video
US6646578B1 (en) 2002-11-22 2003-11-11 Ub Video Inc. Context adaptive variable length decoding system and method
US7403561B2 (en) 2003-04-04 2008-07-22 Avid Technology, Inc. Fixed bit rate, intraframe compression and decompression of video
US7324927B2 (en) * 2003-07-03 2008-01-29 Robert Bosch Gmbh Fast feature selection method and system for maximum entropy modeling
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
CN1214649C (zh) 2003-09-18 2005-08-10 中国科学院计算技术研究所 用于视频预测残差系数编码的熵编码方法
US7460990B2 (en) 2004-01-23 2008-12-02 Microsoft Corporation Efficient coding of digital media spectral data using wide-sense perceptual similarity
US7454076B2 (en) 2004-06-15 2008-11-18 Cisco Technology, Inc. Hybrid variable length coding method for low bit rate video coding
US7852916B2 (en) 2004-06-27 2010-12-14 Apple Inc. Efficient use of storage in encoding and decoding video data streams
KR100668302B1 (ko) * 2004-07-28 2007-01-12 삼성전자주식회사 비디오 디코더/엔코더에서의 메모리 맵핑 장치 및 그 방법
KR100664932B1 (ko) * 2004-10-21 2007-01-04 삼성전자주식회사 비디오 코딩 방법 및 장치
US7809064B2 (en) * 2004-11-15 2010-10-05 Industrial Technology Research Institute Systems and methods of flexible power management applicable to digital broadcasting
US20060176959A1 (en) 2005-02-07 2006-08-10 Paul Lu Method and system for encoding variable length code (VLC) in a microprocessor
US8422546B2 (en) 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
US7265691B2 (en) 2005-06-23 2007-09-04 1Stworks Corporation Modeling for enumerative encoding
US7630882B2 (en) 2005-07-15 2009-12-08 Microsoft Corporation Frequency segmentation to obtain bands for efficient coding of digital media
US7684981B2 (en) * 2005-07-15 2010-03-23 Microsoft Corporation Prediction of spectral coefficients in waveform coding and decoding
US7562021B2 (en) 2005-07-15 2009-07-14 Microsoft Corporation Modification of codewords in dictionary used for efficient coding of digital media spectral data
US7693709B2 (en) * 2005-07-15 2010-04-06 Microsoft Corporation Reordering coefficients for waveform coding or decoding
US7546240B2 (en) * 2005-07-15 2009-06-09 Microsoft Corporation Coding with improved time resolution for selected segments via adaptive block transformation of a group of samples from a subband decomposition
US7599840B2 (en) 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
US9077960B2 (en) * 2005-08-12 2015-07-07 Microsoft Corporation Non-zero coefficient block pattern coding
JP2007300389A (ja) * 2006-04-28 2007-11-15 Victor Co Of Japan Ltd 画像符号化装置および画像符号化プログラム
US9070178B2 (en) * 2006-08-11 2015-06-30 Siemens Product Lifecycle Management Software Inc. Method and system for organizing topology elements for better compression
US7756350B2 (en) 2006-11-13 2010-07-13 Global Ip Solutions, Inc. Lossless encoding and decoding of digital data
US7761290B2 (en) 2007-06-15 2010-07-20 Microsoft Corporation Flexible frequency and time partitioning in perceptual transform coding of audio
US20080317364A1 (en) 2007-06-25 2008-12-25 Augusta Technology, Inc. Methods for determining neighboring locations for partitions of a video stream
US8406307B2 (en) * 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data

Also Published As

Publication number Publication date
KR101541945B1 (ko) 2015-08-05
JP5180370B2 (ja) 2013-04-10
WO2009134575A2 (en) 2009-11-05
KR20110010599A (ko) 2011-02-01
EP2269380A4 (en) 2014-05-28
US8179974B2 (en) 2012-05-15
HK1154729A1 (en) 2012-04-27
US20090273706A1 (en) 2009-11-05
EP2269380A2 (en) 2011-01-05
CN102017634B (zh) 2014-03-12
JP2011521536A (ja) 2011-07-21
US20120243615A1 (en) 2012-09-27
US9172965B2 (en) 2015-10-27
CN102017634A (zh) 2011-04-13
EP2269380B1 (en) 2020-05-06
WO2009134575A3 (en) 2010-03-11

Similar Documents

Publication Publication Date Title
MX2010011961A (es) Representacion de nivel multiple de coeficientes de transformacion reordenados.
JP6438986B2 (ja) 変換係数ブロック復号装置および方法、ならびに変換係数ブロック符号化装置および方法
JP3195966B2 (ja) ベクトル量子化とランレングスコード化の両方を使用し、さらに適応ランレングスコード化を使用したデータのコード化方法及びその装置
US8406307B2 (en) Entropy coding/decoding of hierarchically organized data
JP5027936B2 (ja) 適応スキャン順序付けのための方法、記録媒体、プログラム、及び処理装置。
US8326057B2 (en) Image encoding method, image decoding method, image encoding apparatus, image decoding apparatus, image encoding program, and image decoding program
US20210127112A1 (en) Image encoding method and apparatus, and image decoding method and apparatus
US20040179601A1 (en) Image encoding method, image decoding method, image encoder, image decode, program, computer data signal, and image transmission system
WO1999023602A1 (en) System and method for efficiently encoding video frame sequences
JP2013512627A (ja) テクスチャー・パターン適応式の分割ブロック変換
US11706432B2 (en) Encoding method and apparatus therefor, and decoding method and apparatus therefor
JP7233363B2 (ja) 画像パラメータをコーディング及びデコーディングする方法、画像パラメータをコーディング及びデコーディングする装置、並びに、これらに対応するコンピュータプログラム
KR20230008881A (ko) 인코딩 및 디코딩 방법 및 장치

Legal Events

Date Code Title Description
FG Grant or registration