ES2546542T3 - Sistema y procedimiento para comprimir un flujo de datos de valores enteros - Google Patents

Sistema y procedimiento para comprimir un flujo de datos de valores enteros Download PDF

Info

Publication number
ES2546542T3
ES2546542T3 ES09775397.4T ES09775397T ES2546542T3 ES 2546542 T3 ES2546542 T3 ES 2546542T3 ES 09775397 T ES09775397 T ES 09775397T ES 2546542 T3 ES2546542 T3 ES 2546542T3
Authority
ES
Spain
Prior art keywords
code
roll
length
data
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES09775397.4T
Other languages
English (en)
Inventor
Mitchell Oslick
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Application granted granted Critical
Publication of ES2546542T3 publication Critical patent/ES2546542T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Procedimiento para la codificación entrópica de datos de pares de tirada/valor de datos que corresponden a un flujo de datos de valores enteros, en el que cada tirada se codifica en una de tres maneras, comprendiendo dicho procedimiento: clasificar cada una de dichas tiradas en función de su longitud siendo o 1, corta o larga; si la tirada es 1, seleccionar un primer código con una longitud de 1; si la tirada se clasifica como corta, seleccionar un primer código con una primera longitud predeterminada, cada primer código de primera longitud predeterminada teniendo un preámbulo para distinguir las otras clasificaciones de tirada, y teniendo un valor en función de la longitud de la tirada; si la tirada se clasifica como larga, seleccionar un primer código con una segunda longitud predeterminada, cada primer código de segunda longitud predeterminada teni endo un preámbulo para distinguir las otras clasificaciones de tirada, y teniendo un valor en función de la longitud de la tirada; y emitir el primer código seleccionado a un canal, en el que la primera longitud predeterminada es n + 1 bits, el primer código con la primera longitud predeterminada se selecciona a partir de una primera tabla de código, el primer código con la primera longitud predeterminada tiene el preámbulo para el primer bit y cuyo valor para los n bits restantes se basa en la duración de la tirada, la segunda longitud predeterminada es n + 1 + M bits, el primer código con la segunda longitud predeterminada se selecciona a partir de una segunda tabla de códigos, el primer código con la segunda longitud predeterminada teniendo el preámbulo para los primeros n + 1 bits y cuyo valor para los M bits restantes se basa en la longitud de la tirada.

Description

DESCRIPCIÓN
Sistema y procedimiento para comprimir un flujo de datos de valores enteros.
ANTECEDENTES 5
Se conocen varios esquemas de codificación para codificar flujos de bits de valores enteros, en los cuales los flujos de bits pueden representar, por ejemplo, vídeos, imágenes, y demás. Los esquemas de codificación conocidos implican generalmente la codificación de longitud de tirada, codificación de longitud variable, codificación diferencial, y diversas combinaciones de los mismos. 10
Se sabe que la codificación de longitud de tirada, si bien es útil para la compresión de datos que presenta una uniformidad significativa, es generalmente ineficaz donde los valores de datos son propensos a diferir de un al siguiente. En esta segunda situación, es común entre los esquemas de compresión conocidos el conmutar de forma adaptativa entre la codificación de longitud de tirada y algún otro tipo de codificación, en el que la conmutación 15 generalmente se maneja en el decodificador por información anexa asociada con el flujo de bits, o por cálculo; esto o bien reduce la eficiencia de compresión o aumenta la carga computacional, respectivamente.
El documento EP 1 004 975 A2 divulga un conjunto de palabras de código de compresión de ocho bits que se utilizan en el comienzo de una tirada de datos que comprende un recuento de píxeles y uno o más valores de color, 20 los primeros cuatro bits de la primera palabra siendo utilizados para especificar el formato de los bytes en la siguiente secuencia de datos y si los siguientes píxeles se van a imprimir como la superposición o como el fondo, y los últimos cuatro bits siendo utilizados para especificar sugerencias de impresión.
Es común entre los esquemas de compresión que utilizan codificación tanto de longitud de tirada como diferencial, 25 llevar a cabo la codificación diferencial antes de la codificación de longitud de tirada, cuyo orden requiere que el codificador calcule una diferencia, y el decodificador calcule una suma (es decir, reconstruir el valor de datos) para cada valor de datos en el flujo de bits.
Por lo tanto, es deseable usar un esquema de codificación que pueda eliminar o por lo menos mitigar estas 30 limitaciones conocidas.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
35
La FIG. 1 ilustra un procedimiento para codificar un flujo de datos de valores enteros de acuerdo con una realización de la presente invención.
La FIG. 2 ilustra un procedimiento de codificación de una lista de pares de tirada/valor de datos de acuerdo con una realización de la presente invención. 40
La FIG. 3 ilustra un flujo de datos de valores enteros a modo de ejemplo, y sus tiradas asociadas.
La FIG. 4 ilustra un sistema de codificador-decodificador de acuerdo con una realización de la presente invención. 45
DESCRIPCIÓN DETALLADA
Las realizaciones de la presente invención reducen el tamaño y la complejidad de los flujos de bits asociados a datos codificados mediante el uso de un nuevo esquema de compresión. Un codificador entrópico recibe una lista de 50 pares de tirada/valor de datos y codifica entrópicamente por separado las tiradas y los valores de datos, seleccionando sus palabras de código según longitud y magnitud, respectivamente, y concatena los pares de palabras de código resultantes - la palabra de código de valor de datos primero - en un flujo de bits codificados. El esquema de codificación reduce el tamaño y la complejidad de un flujo de bits codificados, cuyo flujo de bits puede representar imágenes, vídeos, y demás. Por lo tanto, el flujo de bits puede ser transmitido utilizando menos ancho 55 de banda y se puede disminuir la carga computacional tanto en el codificador como en el decodificador.
La FIG. 1 ilustra un procedimiento de codificar un flujo de bits de acuerdo con una realización de la presente invención. Según la realización, el procedimiento puede escanear un conjunto de valores de datos en un sentido de escaneo predeterminado (cuadro 100). El procedimiento puede convertir valores de datos del conjunto en una 60 secuencia de pares de tirada/valor de datos (cuadro 110). En el bloque 120, el procedimiento puede seleccionar una palabra de código en función de un valor de una tirada. Del mismo modo, en el cuadro 130, el procedimiento puede seleccionar una palabra de código en función de un valor de un valor de datos. El procedimiento puede realizar ya sea la etapa 120 o la etapa 130 o ambos. El procedimiento puede concatenar los datos codificados de tirada/valor
de datos en parejas de datos codificados (cuadro 140). A partir de entonces, los datos podrán ser procesados adicionalmente para transmisión.
Más específicamente, en el bloque 100, el procedimiento puede escanear un conjunto de datos de origen de acuerdo con un sentido de escaneo, cuyos datos de origen representan, por ejemplo, una imagen, un vídeo, y 5 demás. El procedimiento puede acomodar conjuntos de datos de una variedad de tamaños y configuraciones. Se apreciará que los conjuntos multi-dimensionales de números enteros pueden ser considerados como un conjunto lineal cuando se consideran según una dirección de escaneo y, por lo tanto, la presente discusión se dirige a un caso de conjunto lineal.
10 En el bloque 110, el conjunto unidimensional de valores de datos se puede convertir, utilizando la codificación por longitud de tirada, en una lista de pares de tirada de tirada/valor de datos, donde un número entero (comúnmente, el primer número entero) en el par es la longitud de la tirada, y otro número entero (comúnmente, el segundo número entero) es el valor de los datos que comprenden la tirada correspondiente. Por ejemplo, y como se muestra en la FIG. 3, si el conjunto unidimensional consta de 10 elementos - {0, 0, 0, 3, 3, 2, 2, 2, 2, 2} - esos 10 elementos se 15 convertirían en los siguientes pares: {(3, 0), (2, 3), (5, 2)}. Los pares resultantes indican que el conjunto original constaba de tres valores iguales a 0, dos valores iguales a 3, y cinco valores iguales a 2, y en ese orden.
En una realización, la lista resultante de pares de tirada/valor de datos se puede codificar en diferencia, en el bloque 110, en una lista de pares de diferencia de tirada/valor de datos. Volviendo al ejemplo del conjunto de 10 elementos 20 utilizado anteriormente, la lista resultante de pares de diferencia de tirada/valor de datos consta de {(3, +1), (2, +3), (5, -1)}, en el que [0 - (-1) = 1], [3 - 0, = +3], y [2 - 3 = -1]. En circunstancias normales la diferencia de valor de datos no será cero, ya que ello implicaría una continuación de la tirada anterior; mediante el tratamiento del valor de tirada anterior de la tirada inicial como -1 (como se muestra en el ejemplo anterior), se puede garantizar una diferencia de valor de datos distinta de cero (a menos que una tirada se divide en sub-tiradas, como se detalla en este 25 documento).
Al hacer la codificación por longitud de tirada antes de la codificación de por diferencia, se tiene que calcular una diferencia (codificador) o suma (decodificador) solamente una vez por tirada, en lugar de una vez por cada valor de datos. Esta distinción de orden puede ser especialmente valiosa en el decodificador, donde no sólo reduce la 30 cantidad de cálculo requerido, sino que también elimina cualquier secuencia asociada, permitiendo que varios de los valores de los datos idénticos de una tirada sean emitidos simultáneamente.
Tal como descrito anteriormente, los principios de la presente invención encuentran aplicación tanto con valores de datos diferenciales como con valores de datos no diferenciales. Por lo tanto, a menos que se especifique a 35 continuación, la discusión que sigue se refiere a los "valores de datos" en un sentido genérico, para referirse por igual a valores de datos diferenciales como no diferenciales.
En los bloques 120, 130 la lista resultante de pares de tirada/ valor de datos puede se puede codificar entrópicamente; las tiradas pueden ser codificadas por separado de los valores de datos y tal codificación se pueden 40 realizar en serie (por ejemplo, tiradas antes que valores de datos, y demás) o en paralelo. Las realizaciones de la presente invención permiten la codificación por entropía basada en tabla de códigos propuesto en este documento a ser utilizado en conjunción con otros esquemas de codificación, si se desea. Por ejemplo, aunque la presente discusión propone codificar ambas tiradas y valor de datos de acuerdo con el proceso descrito a continuación con respecto a la FIG. 2, es admisible codificar sólo un tipo de datos (por ejemplo, las tiradas) de acuerdo con el 45 esquema propuesto y codificar el otro tipo de datos (por ejemplo, los valores de datos) de acuerdo con otro mecanismo. Por lo tanto, los principios de la presente invención pueden ser integrados con otros mecanismos de codificación, según se desee.
Después de codificar por entropía las tiradas y los valores de datos, la lista de palabras de código de tirada y 50 palabras de código de valor de datos pueden ser concatenadas (es decir, para cada par, la palabra de código de valor de datos resultante se concatena con la palabra de código de tirada resultante), y estas palabras de código concatenadas juntos forman el flujo de bits codificado final, como se muestra en el bloque 140. Al poner la palabra de código de valor de datos antes de la correspondiente palabra de código de tirada, el valor de datos puede ser reconstruido - durante la decodificación - antes de la determinación de la longitud de la tirada de ese valor de datos, 55 lo que permite una decodificación especializada por longitud de tirada de valores de tirada particulares. Por ejemplo, si, durante la decodificación de palabra de código de tirada, se determina que la tirada es uno, el valor de datos único puede ser emitido, debido a que el valor de datos ya se ha recuperado; por lo tanto, no hay necesidad de hacer un bucle o de otro modo intentar acomodar una situación general, lo que significa que alguna sobrecarga computacional puede ser eliminado del proceso. 60
La FIG. 2 ilustra un procedimiento de codificación entrópica de acuerdo con una realización de la presente invención. En el bloque 200, se recibe un par de tirada/valor de datos, y en el bloque 205 se comprueban las tiradas dentro de cada par para ver si están dentro de una longitud de tirada máxima predeterminada. Las tiradas son integrales y pueden variar desde 1 al tamaño del conjunto de origen. Para los fines de la codificación por entropía, las tiradas 65 pueden tener un límite superior de, por ejemplo, 2M, donde M es un parámetro general que se utiliza para asegurar
que el tamaño de la tabla de códigos de tirada es finita. Por ejemplo, con respecto a una imagen, M puede ser acorde con el tamaño de la imagen de modo que no es necesario dividir tiradas en sub-tiradas.
En caso de que una tirada sea más larga que 2M, puede ser dividida en sub-tiradas de tal manera que cada sub-tirada es menor que o igual a 2M. En el caso de una tirada dividida en sub-tiradas, la primera sub-tirada es asignada 5 el mismo valor de datos como si la tirada no se hubiera dividido en sub-tiradas, y cada sub-tirada subsecuente es asignada un valor de datos de cero. Como ejemplo, considere el par tirada/valor de datos (21, +2), en el que M = 3. En este caso, las tiradas no pueden tener más largas que 8 (es decir, 2M= 23 = 8), y por tanto los pares resultantes de sub-tiradas/valores de datos serían: {(8, +2), (8, 0), (5, 0)} (es decir, 8 + 8 + 5 = 21).
10 En función de su longitud, tiradas o sub-tiradas pueden ser codificadas en una de tres maneras, como se muestra en los bloques 210 - 225. En el bloque 210, se clasifica una tirada ya sea como uno, "corto" o "largo". Las tiradas de uno pueden ser codificadas como un solo bit '1', como se muestra en el bloque 215. El uso de un solo bit para tiradas de uno minimiza el impacto en la eficiencia de compresión cuando los valores de datos contiguos no son idénticos, y tiene la ventaja computacional de permitir que los decodificadores utilicen una prueba de signo para 15 distinguir entre tiradas codificadas de uno y los superiores a uno.
Las tiradas "cortas" pueden incluir esas tiradas superiores a 1, pero menores o iguales a un umbral predeterminado 2n, en el que n puede ser elegido arbitrariamente o de acuerdo a cualquiera de una serie de esquemas predeterminados, incluyendo, por ejemplo, un esquema que intenta lograr una compresión óptima para los datos que 20 se comprimen. Tiradas cortas pueden codificarse con n + 1 bits que constan de un preámbulo de solo bit '0' seguido por el código binario de longitud fija de n bits para uno menos el valor de tirada, tal como se representa por el bloque 220.
Las tiradas "largas" pueden incluir esas tiradas superiores a 2n. Tiradas largas pueden codificarse con n + 1 + M bits 25 que consisten en un preámbulo de n + 1 bits '0' seguido por el código binario de longitud fija M-bit para uno menos el valor de tirada, según lo representado por el bloque 225.
Nótese que las palabras de código para ambas tiradas "cortas" y "largas" son los códigos binarios de longitud fija - de longitud apropiada - para uno menos el valor de tirada. Considere, a modo de ejemplo de una tabla de códigos de 30 tirada según el esquema discutido, la Tabla 1, que ilustra una tabla de códigos de tirada, donde M = 11 y n = 4, de tal manera que la longitud máxima de una tirada es 2048 (es decir, 211= 2048), y las tiradas "cortas" son las que existen entre 2 y 16 inclusive (es decir, 24= 16).
Tabla 1 35
PALABRA DE CÓDIGO
CLASIFICACIÓN
TIRADA PREÁMBULO DATOS
1
1
1
Corto
2 0 0001
Corto
3 0 0010
••• ••• •••
Corto
16 0 1111
Largo
17 00000 00000010000
Largo
18 00000 00000010001
••• •••
Largo
2048 00000 11111111111
Los valores de datos pueden ser codificados en una de dos maneras, dependiendo de su magnitud. Como se muestra en el bloque 230, los valores de datos se clasifican como "pequeño" o "grande", de acuerdo a sus valores absolutos; esto permite que un solo bit prefijo pueda distinguir entre los dos casos, y, en consecuencia, cuando se 40 decodifica una palabra de código de valor de datos, si el primer bit de la palabra de código aparece en el bit más significativo de la palabra de un ordenador, se puede realizar una simple prueba de signo (comparación a cero) para determinar si el valor de datos es pequeño o grande.
Los valores de datos "pequeños" pueden incluir aquellos valores de los datos con una magnitud (es decir, un valor 45 absoluto) mayor que 0, pero menor o igual a 2k, en el que k puede ser elegido arbitrariamente o de acuerdo a cualquiera de una serie de esquemas predeterminados, incluyendo, por ejemplo, un esquema que intenta lograr una compresión óptima para los datos que se comprimen. Pequeños valores de datos se codifican con k + 2 bits que
constan de un preámbulo de un solo bit '0', el código binario de longitud fijo de k bits para uno menos la magnitud del valor de datos, y un único bit para indicar el signo de diferencia, como se representa por el bloque 235.
Los valores de datos "grandes" pueden incluir aquellos valores de datos con una magnitud ya sea igual a 0 o mayor que 2k. Los valores de datos grandes pueden ser codificados con N + 1 bits que constan de un preámbulo de un solo 5 bit '1' seguido por el valor de datos de módulo 2N, tal como se representa por el bloque 240, donde N es el tamaño de palabra de los valores originales de datos.
Considere, a modo de ejemplo de una tabla de códigos de valor de datos según el esquema discutido, la Tabla 2, que ilustra una tabla de códigos de valor de datos, donde k = 3 y N = 8, y donde se utiliza un bit de signo de 1 para 10 indicar valores de datos negativos, de tal manera que la tabla de códigos comprende 512 entradas (es decir, 2 * 28 = 512).
Tabla 2
15
PALABRA DE CÓDIGO
CLASIFICACIÓN
VALOR DE DATOS PREÁMBULO DATOS SIGNO
Pequeño
+1 0 000 0
Pequeño
-1 0 000 1
Pequeño
+2 0 001 0
Pequeño
-2 0 001 1
Pequeño
••• ••• ••• •••
Pequeño
+8 0 111 0
Pequeño
-8 0 111 1
Grande
+9 1 00001001
Grande
-9 1 11110111
••• ••• ••• •••
Grande
+255 1 11111111
Grande
-255 1 00000001
Grande
+256 1 00000000
Grande
0 1 00000000
Las variables n (asociadas a la codificación entrópica de tiradas) y k (asociadas s la codificación entrópica de valores de datos) pueden basarse en información estadística recogida de datos de ejemplo que son presumiblemente representativos de los tipos de cosas que pueden ser codificadas por el codificador (por ejemplo, imágenes, vídeos, y demás.). 20
La FIG. 4 ilustra un codificador 400 y un decodificador 500 de acuerdo con una realización de la presente invención. El codificador 400 puede implementarse en hardware o software y recibe datos de origen 410, un conjunto unidimensional de datos de valores enteros, como se detalla en el presente documento. Los datos de origen 410 pueden ser el resultado de varios otros procesos de codificación que son generalmente irrelevantes para la presente 25 invención, incluyendo operaciones de tratamiento de origen (por ejemplo, procesos de codificación de vídeo, procesos de codificación de audio, y demás.).
El codificador 420 de tirada/valor de datos puede codificar según tirada/valor de datos los datos de origen 410 a una lista de pares de tirada/valor de datos. El codificador por entropía 440 puede recibir la lista de pares de tirada/valor 30 de datos del codificador 420 de tirada/valor de datos y puede codificar por separado tiradas y valores de datos de acuerdo a los procesos que se detallan en este documento. El codificador por entropía 440 puede concatenar las palabras de código resultantes que comprenden cada par en la lista, los valores de datos codificados primero, para formar el flujo de bits codificados. En una realización, y como se muestra en líneas discontinuas, el codificador 430 de diferencia de tirada/valor de datos puede recibir la lista de pares de tirada/valores datos del codificador de 35 tirada/valor de datos 420 y podrá codificar por diferencia los pares a una lista de pares de diferencia de tirada/valor de datos, que pueden ser procesados por el codificador por entropía 440.
La memoria temporal de transmisión 450 puede almacenar el flujo de bits codificados antes de transferirlo a un canal, cuyo canal puede representar un medio de transmisión para llevar el flujo de bits codificados a un 40
descodificador. Los canales incluyen típicamente dispositivos de almacenamiento como memorias ópticas, magnéticas o eléctricas, y los canales de comunicación proporcionados, por ejemplo, por las redes de comunicación o redes de ordenadores.
El proceso de codificación descrito anteriormente se puede invertir en el decodificador 500, que puede incluir una 5 memoria temporal de recepción 510, el descodificador por entropía 520, el decodificador 530 por diferencia de tirada/valor de datos, el decodificador 540 de tirada/valor de datos, y almacenamiento de datos recuperados 550. Cada unidad puede realizar la inversa de su contraparte en el codificador 400, replicando los datos de origen 410. El decodificador 500 puede incluir otros bloques (no mostrados) que llevan a cabo la decodificación fuente para que coincida con los procesos de codificación de la fuente aplicada en el codificador 400. 10
Aunque el texto precedente establece una descripción detallada de diversas realizaciones, debe entenderse que el ámbito legal de la invención se define por las palabras de las reivindicaciones expuestas a continuación. La descripción detallada debe interpretarse solamente a modo de ejemplo y no describe todas las posibles realizaciones de la invención, ya que describir cada posible forma de realización sería poco práctico, si no imposible. 15 Numerosas realizaciones alternativas podrían ser implementadas, usando ya sea la tecnología actual o tecnología desarrollada después de la fecha de presentación de esta patente, que todavía caerían dentro del alcance de las reivindicaciones que definen la invención.
Debe entenderse que existen implementaciones de otras variaciones y modificaciones de la invención y sus diversos 20 aspectos, como pueden ser fácilmente evidentes para los expertos en la técnica, y que la invención no está limitada por las realizaciones específicas descritas en el presente documento.
25

Claims (7)

  1. REIVINDICACIONES
    1. Procedimiento para la codificación entrópica de datos de pares de tirada/valor de datos que corresponden a un flujo de datos de valores enteros, en el que cada tirada se codifica en una de tres maneras, comprendiendo dicho 5 procedimiento:
    clasificar cada una de dichas tiradas en función de su longitud siendo o 1, corta o larga;
    si la tirada es 1, seleccionar un primer código con una longitud de 1; 10
    si la tirada se clasifica como corta, seleccionar un primer código con una primera longitud predeterminada, cada primer código de primera longitud predeterminada teniendo un preámbulo para distinguir las otras clasificaciones de tirada, y teniendo un valor en función de la longitud de la tirada;
    15
    si la tirada se clasifica como larga, seleccionar un primer código con una segunda longitud predeterminada, cada primer código de segunda longitud predeterminada teniendo un preámbulo para distinguir las otras clasificaciones de tirada, y teniendo un valor en función de la longitud de la tirada; y
    emitir el primer código seleccionado a un canal, en el que la primera longitud predeterminada es n + 1 bits, el 20 primer código con la primera longitud predeterminada se selecciona a partir de una primera tabla de código, el primer código con la primera longitud predeterminada tiene el preámbulo para el primer bit y cuyo valor para los n bits restantes se basa en la duración de la tirada,
    la segunda longitud predeterminada es n + 1 + M bits, el primer código con la segunda longitud 25 predeterminada se selecciona a partir de una segunda tabla de códigos, el primer código con la segunda longitud predeterminada teniendo el preámbulo para los primeros n + 1 bits y cuyo valor para los M bits restantes se basa en la longitud de la tirada.
  2. 2. El procedimiento de la reivindicación 1, en el que la longitud de la tirada corta es mayor que 1 y menor o igual a 30 2n, y la longitud de la tirada larga es mayor que 2n.
  3. 3. El procedimiento de la reivindicación 1 en el que:
    para tiradas clasificadas como cortas, el preámbulo del primer código es un bit '0' y el valor de los n bits 35 restantes es el código binario para uno menos la longitud de la tirada; y
    para tiradas clasificadas como largas, el preámbulo del primer código es n + 1 bits '0' y el valor de los M bits restantes es el código binario para uno menos la longitud de la tirada.
    40
  4. 4. El procedimiento de la reivindicación 1 que comprende además dividir una tirada en dos o más sub-tiradas cuando la longitud de una tirada es mayor que 2M, en el que:
    la longitud de cada una de las sub-tiradas es inferior o igual a 2M;
    el valor de datos asociado con la primera sub-tirada es igual al valor de datos asociado con la tirada; y 45
    el valor de datos asociado a cada sub-tirada después de la primera sub-tirada es cero.
  5. 5. El procedimiento de la reivindicación 1 que comprende además:
    clasificar cada valor de datos en función de su magnitud; 50
    si el valor de datos se clasifica como pequeño, seleccionar un segundo código que comprende k + 2 bits a partir de una tercera tabla de códigos, el segundo código seleccionado teniendo un preámbulo predeterminado para el primer bit y cuyo valor para los k + 1 bits restantes se basa en el valor de datos;
    si el valor de datos se clasifica como grande, seleccionar un segundo código que comprende N + 1 bits a 55 partir de una cuarta tabla de códigos, el segundo código seleccionado teniendo un preámbulo predeterminado para el primer bit y cuyo valor para los N bits restantes se basa en el valor de datos y en N; y
    emitir el segundo código seleccionado al canal.
    60
  6. 6. Un sistema para la codificación entrópica de una lista de datos de pares de tirada/valor de datos correspondientes a un flujo de datos de valores enteros, en el que cada tirada se codifica de una de tres maneras, en el que el sistema está configurado para llevar a cabo el procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 5.
    65
  7. 7. Un medio legible por ordenador codificado con un conjunto de instrucciones que, cuando se realiza por un ordenador, lleva a cabo el procedimiento de cualquiera de las reivindicaciones 1 a 5.
ES09775397.4T 2008-11-10 2009-11-06 Sistema y procedimiento para comprimir un flujo de datos de valores enteros Active ES2546542T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US268171 1999-03-15
US12/268,171 US7804428B2 (en) 2008-11-10 2008-11-10 System and method for compressing a stream of integer-valued data
PCT/US2009/063526 WO2010054178A1 (en) 2008-11-10 2009-11-06 System and method for compressing a stream of integer-valued data

Publications (1)

Publication Number Publication Date
ES2546542T3 true ES2546542T3 (es) 2015-09-24

Family

ID=41565901

Family Applications (1)

Application Number Title Priority Date Filing Date
ES09775397.4T Active ES2546542T3 (es) 2008-11-10 2009-11-06 Sistema y procedimiento para comprimir un flujo de datos de valores enteros

Country Status (8)

Country Link
US (1) US7804428B2 (es)
EP (3) EP2913932B1 (es)
JP (3) JP5162708B2 (es)
KR (1) KR101171697B1 (es)
CN (1) CN102210105B (es)
AU (1) AU2009313449B2 (es)
ES (1) ES2546542T3 (es)
WO (1) WO2010054178A1 (es)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2013000344A (es) 2010-07-09 2013-03-20 Samsung Electronics Co Ltd Metodo y aparato para codificar/decodificar por entropia un coeficiente de transformacion.
US10091529B2 (en) 2010-07-09 2018-10-02 Samsung Electronics Co., Ltd. Method and apparatus for entropy encoding/decoding a transform coefficient
US9058223B2 (en) * 2011-04-22 2015-06-16 Microsoft Technology Licensing Llc Parallel entropy encoding on GPU
DE102011107974A1 (de) 2011-07-16 2013-01-17 Valeo Schalter Und Sensoren Gmbh Verfahren zum Rangieren eines Fahrzeugs in einem Umfeld sowie Rangierassistenzsystem für ein Fahrzeug
WO2013033895A1 (zh) * 2011-09-07 2013-03-14 速压公司 数据压缩和解压缩方法、程序、存储介质及电子产品
CN104285377A (zh) 2012-03-15 2015-01-14 诺基亚公司 数据的编码和解码
GB2501527B (en) * 2012-04-27 2014-03-12 Broadcom Corp Method apparatus and computer program for encoding a bit string
GB2511493B (en) * 2013-03-01 2017-04-05 Gurulogic Microsystems Oy Entropy modifier and method
KR102430173B1 (ko) 2015-11-24 2022-08-05 삼성전자주식회사 디스플레이 장치
CN108702781A (zh) * 2016-01-08 2018-10-23 中兴通讯股份有限公司 使用随机接入信道来发送关键任务小数据的方法
US10602192B2 (en) * 2016-02-04 2020-03-24 Mediatek Inc. Methods and apparatuses for performing entropy encoding and entropy decoding with size determination of at least one bitstream portion
CN106656200B (zh) * 2016-12-13 2019-11-08 合肥工业大学 一种程序计数器压缩方法及其硬件电路
CN109716660B (zh) * 2017-01-24 2021-08-13 华为技术有限公司 数据压缩装置和方法
CN110019184B (zh) * 2017-09-04 2021-04-27 北京字节跳动网络技术有限公司 一种压缩和解压缩有序整数数组的方法
US11176109B2 (en) * 2019-07-15 2021-11-16 Microsoft Technology Licensing, Llc Time-series data condensation and graphical signature analysis

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4973916A (es) * 1972-11-15 1974-07-17
JPS5567274A (en) * 1978-11-14 1980-05-21 Nippon Telegr & Teleph Corp <Ntt> Picture signal coding system
JPS57106272A (en) * 1980-12-22 1982-07-02 Ricoh Co Ltd Method for compression of multilevel picture data
JPH01256287A (ja) * 1988-04-06 1989-10-12 Canon Inc 画像圧縮装置
CA1326898C (en) * 1988-04-27 1994-02-08 John Music Method and system for decompressing color video encoded data
JP3061278B2 (ja) * 1988-04-29 2000-07-10 ゼロックスコーポレーション 可変ビット長コード語のビット長通信方法
JP3010631B2 (ja) * 1989-02-14 2000-02-21 ソニー株式会社 ランレングス符号化方式
JPH0697839A (ja) * 1992-09-16 1994-04-08 Sharp Corp データ圧縮方法
JP3259989B2 (ja) * 1992-10-23 2002-02-25 株式会社日立製作所 2値と多値の混在符号化画像データ復元方法および装置
US5926576A (en) 1994-03-30 1999-07-20 Newton; Dale C. Imaging method and system concatenating image data values to form an integer, partition the integer, and arithmetically encode bit position counts of the integer
US5710561A (en) * 1996-01-02 1998-01-20 Peerless Systems Corporation Method and apparatus for double run-length encoding of binary data
US5831559A (en) * 1996-01-24 1998-11-03 Intel Corporation Encoding/decoding video signals using multiple run-val mapping tables
IN192447B (es) * 1996-06-14 2004-04-24 Daewoo Electronics Corp
US6028963A (en) 1996-06-17 2000-02-22 Canon Kabushiki Kaisha Image encoding based on judgement on prediction error
US6011499A (en) 1996-06-27 2000-01-04 Intel Corporation Encoding/decoding video signals using multiple run-val mapping tables
JPH10200413A (ja) * 1996-12-26 1998-07-31 Texas Instr Inc <Ti> 可変長コード生成装置及び生成方法
US5798718A (en) 1997-05-12 1998-08-25 Lexmark International, Inc. Sliding window data compression method and apparatus
JP3410629B2 (ja) * 1997-05-21 2003-05-26 シャープ株式会社 可変長符号化回路及び可変長符号化方法
JPH11251923A (ja) * 1998-02-27 1999-09-17 Toyo Electric Mfg Co Ltd モニタ装置
US6118392A (en) 1998-03-12 2000-09-12 Liquid Audio Inc. Lossless data compression with low complexity
KR100281321B1 (ko) 1998-03-26 2001-02-01 전주범 적응적인 산술 부호화 및 그 복호화 방법
US6166664A (en) 1998-08-26 2000-12-26 Intel Corporation Efficient data structure for entropy encoding used in a DWT-based high performance image compression
JP2000115782A (ja) 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
US6317222B1 (en) 1998-11-17 2001-11-13 Xerox Corporation Set of run-length codewords containing pointers to data sources
US6223162B1 (en) * 1998-12-14 2001-04-24 Microsoft Corporation Multi-level run length coding for frequency-domain audio coding
JP3323175B2 (ja) 1999-04-20 2002-09-09 松下電器産業株式会社 符号化装置
US6505320B1 (en) 2000-03-09 2003-01-07 Cirrus Logic, Incorporated Multiple-rate channel ENDEC in a commuted read/write channel for disk storage systems
US6778483B2 (en) 2000-11-08 2004-08-17 Matsushita Electric Industrial Co., Ltd. Multilevel record modulator and demodulator
JP3375080B2 (ja) * 2001-08-10 2003-02-10 日本ビクター株式会社 画像圧縮方法
JP4100552B2 (ja) * 2001-11-22 2008-06-11 松下電器産業株式会社 復号化方法
JP3778087B2 (ja) 2002-01-18 2006-05-24 富士ゼロックス株式会社 データ符号化装置及びデータ復号装置
JP3709381B2 (ja) * 2002-04-02 2005-10-26 Necビューテクノロジー株式会社 カラー画像圧縮方法
US7433824B2 (en) 2002-09-04 2008-10-07 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
US7113115B2 (en) * 2004-06-30 2006-09-26 Intel Corporation Variable length code table look ups
CN101032081B (zh) * 2004-07-14 2010-05-26 喷流数据有限公司 用于数据压缩优化的方法和系统
US7068192B1 (en) 2004-08-13 2006-06-27 Google Inc. System and method for encoding and decoding variable-length data
US7015837B1 (en) 2004-10-29 2006-03-21 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
US6987468B1 (en) 2004-10-29 2006-01-17 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
US7985246B2 (en) 2006-03-31 2011-07-26 Warsaw Orthopedic, Inc. Methods and instruments for delivering interspinous process spacers
US8116378B2 (en) 2006-12-15 2012-02-14 Arcsoft, Inc. Variable length decoding method
JP2008182448A (ja) * 2007-01-24 2008-08-07 Canon Inc パックビッツ符号化手段
CN101202548A (zh) * 2007-12-28 2008-06-18 北京邮电大学 一种双游程数据编码方法
US7683809B2 (en) * 2008-04-11 2010-03-23 Aceurity, Inc. Advanced lossless bit coding

Also Published As

Publication number Publication date
WO2010054178A1 (en) 2010-05-14
EP2913932B1 (en) 2019-10-16
EP2364530B1 (en) 2015-06-03
CN102210105A (zh) 2011-10-05
EP2364530A1 (en) 2011-09-14
EP2908438B1 (en) 2020-05-27
KR20110094046A (ko) 2011-08-19
JP6025923B2 (ja) 2016-11-16
AU2009313449A1 (en) 2010-05-14
US7804428B2 (en) 2010-09-28
EP2908438A1 (en) 2015-08-19
CN102210105B (zh) 2014-04-23
EP2913932A1 (en) 2015-09-02
JP2012508522A (ja) 2012-04-05
JP5162708B2 (ja) 2013-03-13
JP2016006961A (ja) 2016-01-14
US20100117875A1 (en) 2010-05-13
AU2009313449B2 (en) 2014-06-05
KR101171697B1 (ko) 2012-08-06
JP2013138422A (ja) 2013-07-11

Similar Documents

Publication Publication Date Title
ES2546542T3 (es) Sistema y procedimiento para comprimir un flujo de datos de valores enteros
US6862278B1 (en) System and method using a packetized encoded bitstream for parallel compression and decompression
US8718147B2 (en) Video compression algorithm
RU2505931C2 (ru) Способы и устройства выборочного шифрования данных
US8125357B1 (en) Deflate decompressor
CN101039374B (zh) 一种图像无损压缩方法
US7327289B1 (en) Data-modifying run length encoder to avoid data expansion
US8908982B2 (en) Image encoding device and image encoding method
US20080231483A1 (en) Binarizing method and device thereof
JPH07212242A (ja) 可変長復号化器
JP2010178339A (ja) ビットシーケンスを符号化するための方法及び装置
JP2831888B2 (ja) Hdtv復号化器
KR100647192B1 (ko) 데이터의 복원 시간을 단축하는 데이터 압축 장치 및 그방법
JPH11168389A (ja) データ圧縮装置
JP5529255B2 (ja) 入力ビットシーケンスを符号化する方法及び装置並びに対応する復号化方法及び装置
KR100636370B1 (ko) 결정 비트를 이용한 부호화 장치 및 그 방법과 그에 따른복호화 장치 및 그 방법
EP2819412A1 (en) Encoding and decoding
KR101865560B1 (ko) 광학 송수신기 및 이를 이용한 데이터 맵핑 방법
JP2011109678A (ja) 改良されたマルチメディアデコーダに関する方法及び装置
KR20090113208A (ko) 정수들의 시퀀스를 인코딩하기 위한 방법, 인코딩된 정수 시퀀스를 운반하는 저장 디바이스 및 신호, 그리고 정수들의 시퀀스를 디코딩하기 위한 방법
KR20160055985A (ko) 바이너리 클러스터 분할 및 유니버설 코드 매핑을 이용한 데이터 압축 및 그 해제방법
KR20160117883A (ko) 모자이크 클러스터의 길이 분산 표준값을 이용한 이진데이터의 압축전송방법