ES2797349T3 - Sistema y método para codificación y decodificación aritmética - Google Patents

Sistema y método para codificación y decodificación aritmética Download PDF

Info

Publication number
ES2797349T3
ES2797349T3 ES15169825T ES15169825T ES2797349T3 ES 2797349 T3 ES2797349 T3 ES 2797349T3 ES 15169825 T ES15169825 T ES 15169825T ES 15169825 T ES15169825 T ES 15169825T ES 2797349 T3 ES2797349 T3 ES 2797349T3
Authority
ES
Spain
Prior art keywords
value
information
events
sequence
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES15169825T
Other languages
English (en)
Inventor
Frank Jan Bossen
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.)
NTT Docomo Inc
Original Assignee
NTT Docomo 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 NTT Docomo Inc filed Critical NTT Docomo Inc
Application granted granted Critical
Publication of ES2797349T3 publication Critical patent/ES2797349T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code

Landscapes

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

Abstract

Método de decodificación aritmética para convertir una secuencia de información (735) compuesta por una secuencia de bits en una secuencia de eventos binarios (725) compuesta por una pluralidad de eventos binarios, que comprende: recibir al menos un bit de la secuencia de información (735); generar información de contexto para al menos un evento binario; generar una estimación de probabilidad (P(A)) que responde a la información de contexto; y generar teniendo en cuenta una relación limitada de eventos binarios con respecto a bits, cero o más eventos binarios de la secuencia de eventos binarios (725) que responde al al menos un bit recibido y la estimación de probabilidad (P(A)); en el que tener en cuenta la relación limitada de eventos binarios con respecto a bits incluye tener en cuenta una relación limitada media de eventos binarios con respecto a bits; en el que la decodificación aritmética usa un decodificador aritmético (700) que incluye un motor central (715) e incluye calcular (900) un valor de subintervalo (R(A)) para un valor de evento particular (A) usando la estimación de probabilidad (P(A)); comprendiendo además el método: ajustar (910, 925, 930) al menos uno de un registro de intervalos (765) y un registro de valores (770) que responde al al menos un bit de información y el valor de subintervalo calculado (R(A)), emitir (915, 935) un evento (A, B) de la secuencia de eventos (725) que responde a una comparación (etapa 905) entre el valor de subintervalo calculado (R(A)) y el registro de valores (770), y llamar el motor central (715) a una rutina de re-normalización, incluyendo la rutina de re-normalización tener en cuenta una relación media de eventos con respecto a bits de información, al incrementar (1005) un registro contador (775) para el seguimiento de la relación media en un valor de incremento predeterminado (1H), donde (etapa 1000) un valor (R) del registro de intervalos (765) es > un valor de intervalo predeterminado (4000H), y decrementar (1020) el registro contador (775) en un valor de decremento predeterminado (4H) cuando el valor (R) del registro de intervalos (765) es < el valor de intervalo predeterminado (4000H); en el que decrementar (1020) el registro contador (775) incluye: determinar (1010) si un valor (C) del registro contador (775) es < cero, duplicar (1015) el registro de valores (770), sumar (1015) un valor (bit) del evento emitido al registro de valores (770), decrementar (1020) el registro contador (775) en el valor de decremento predeterminado (4H), cuando el valor (C) del registro contador (775) no es < cero, y duplicar (1025) el registro de intervalos (765), duplicar (1015) el registro de valores (770), sumar (1015) un valor (bit) del evento emitido al registro de valores (770), y decrementar (etapa 1020) el registro contador (775) en el valor de decremento predeterminado (4H) cuando el valor (C) del registro contador (775) es < cero.

Description

DESCRIPCIÓN
Sistema y método para codificación y decodificación aritmética
Antecedentes de la invención
Esta solicitud se refiere al proceso de datos, y más en particular, a la codificación y decodificación de secuencias de datos en un modo de límite de complejidad reducido.
Resulta habitual comprimir una secuencia de datos (es decir, información binaria o M-aria) para el envío desde una primera ubicación a una segunda ubicación. Por ejemplo, los datos de vídeo se pueden generar en la primera ubicación, cuando los datos representan una llamada de videoconferencia. Los datos se convierten habitualmente en una secuencia de eventos (es decir, eventos binarios). Para entregar la secuencia de eventos a la segunda ubicación, es deseable comprimir o codificar la secuencia de eventos en una secuencia de información, con el fin de reducir el tiempo necesario para la transmisión de la secuencia de eventos a la segunda ubicación. Habitualmente se utiliza un codificador aritmético para comprimir la secuencia de eventos (es decir, los eventos binarios) en una secuencia de información de partes de información (es decir, bits binarios de información) para enviar a la segunda ubicación. Cuanto mayor sea la eficiencia de la compresión, o de la codificación, de la secuencia de información, mayor es la velocidad de transmisión de la secuencia de información a la segunda ubicación.
La compresión se consigue mediante la generación de menos de una parte de información por evento que está siendo codificado, en que las proporciones de eventos por partes de información que se están codificando pueden alcanzar 64:1 o incluso 128:1, dependiendo de la distribución de probabilidad de los eventos. En la segunda ubicación se utiliza un decodificador aritmético para descomprimir la secuencia de información a la secuencia de eventos, permitiendo de este modo que los datos de vídeo que representan la llamada de videoconferencia se presenten a un individuo en la segunda ubicación.
La compresión de datos se utiliza también para otras finalidades. Otra de dichas utilizaciones puede ser para aumentar la calidad de vídeo dada una cantidad de medios de almacenamiento para almacenar la secuencia de evento. En este ejemplo se pueden utilizar codificadores para almacenar vídeo (por ejemplo, que representa una película) en un disco compacto de memoria de sólo lectura (CD-ROM) o disco de vídeo digital de memoria de sólo lectura (DVD-ROM), o cualquier otro medio de almacenamiento incluyendo ópticos, magnéticos o de otro modo, para su reproducción en un momento posterior. Tal como se ha descrito anteriormente, la relación de eventos por partes de información codificada puede llegar a 64:1 o 128:1, dependiendo de la distribución de probabilidad de los eventos. En un momento posterior, se utiliza un decodificador para descomprimir la secuencia de información a la secuencia de eventos, permitiendo de ese modo que se utilice el video correspondiente u otros datos.
Sin embargo, a medida que aumenta la eficiencia la codificación en el codificador, se requiere una mayor cantidad de procesamiento (es decir, operaciones de descodificación) en el decodificador para decodificar la secuencia de partes de información de una longitud determinada a la secuencia de evento. Dicho aumento de las necesidades de procesamiento puede ser perjudicial, especialmente cuando se desea que se proporcione la secuencia de eventos en modo de tiempo real. Por ejemplo, en el caso de un vídeo que representa una secuencia de eventos, en tiempo real indica que para la secuencia de información que representa un período de tiempo (es decir, 1 segundo) de video, el decodificador es capaz de recibir la secuencia de información, y de decodificar la secuencia de información a la secuencia de evento correspondiente dentro del período de tiempo.
A veces, dicho proceso en tiempo real no es posible con los esquemas de eficiencia aumentada utilizados en los codificadores convencionales.
Esta invención se dirige a resolver uno o más de los problemas expuestos anteriormente de una manera nueva y sencilla.
El documento US 6 198848 B1 divulga un método de compresión, en el que la longitud de la información codificada para un bloque se controla para que sea igual para cada bloque.
El documento US 6 195465 B1 divulga que lograr una tasa fija de compresión puede soportar un acceso aleatorio a la región de imagen.
El documento GB 2330473 A divulga una codificación con longitud fija y tasa fija.
Breve sumario de la invención
Según un aspecto de la invención, se proporciona un método para decodificación aritmética, incluyendo el método las características de la reivindicación 1.
Según otro aspecto de la invención, se proporciona un método de codificación aritmética, incluyendo el método las características de la reivindicación 2.
A continuación se exponen ejemplos informativos para entender mejor la presente invención y pertenecen a aspectos de la divulgación.
En una realización, puede proporcionarse un codificador aritmético para convertir una secuencia de eventos que incluye una pluralidad de eventos en una secuencia de información que incluye al menos una parte de información. El codificador aritmético puede incluir: al menos un puerto de entrada para recibir eventos de la secuencia de eventos; al menos un puerto de salida; un secuenciador acoplado con el al menos un puerto de entrada y el al menos un puerto de salida y que incluye un generador de contexto para generar información de contexto para al menos uno de los eventos recibidos; un estimador de probabilidad acoplado con el secuenciador, para recibir un evento de la secuencia de eventos e información de contexto correspondiente desde el secuenciador, y generar una estimación de probabilidad de que el evento tiene un valor particular; y un motor central acoplado con el secuenciador y el estimador de probabilidad, para recibir el evento de la secuencia de eventos desde el secuenciador, y la estimación de probabilidad desde el estimador de probabilidad, y generar cero o más partes de la secuencia de información que responde al evento recibido y la estimación de probabilidad mediante la limitación de la relación de eventos con respecto a partes de información, y proporcionar las cero o más partes de información de la secuencia de información al secuenciador; en el que las partes de información generadas se proporcionan como la secuencia de información en el al menos un puerto de salida.
En una implementación de la realización, los eventos de la secuencia de eventos pueden ser eventos binarios, y las partes de información de la secuencia de información pueden ser bits binarios de información.
En una implementación de la realización, el procesador central que limita la relación de eventos con respecto a partes de información puede incluir la limitación de la relación media de eventos con respecto a partes de información.
En una implementación de la realización, la media limitada de eventos con respecto a partes de información puede ser de 4 eventos por parte de información.
En una implementación de la realización, el procesador central puede incluir un registro contador para el seguimiento de un número de eventos para cada parte de información, usado en la limitación de la relación media de eventos con respecto a partes de información a un valor de relación predeterminado.
En una implementación de la realización, el procesador central puede generar al menos una parte de información de relleno dentro de la secuencia de información cuando la relación de eventos con respecto a partes de información supera el valor de relación predeterminado.
En una implementación de la realización, el motor central puede incrementar el contador en un valor de incremento predeterminado para cada evento procesado.
En una implementación de la realización, el valor de incremento predeterminado puede ser uno.
En una implementación de la realización, el motor central puede limitar la relación media de eventos usando el registro contador restando el valor de relación predeterminado del registro contador cuando se genera una parte de información.
En una implementación de la realización, los eventos pueden ser M-arios por naturaleza.
En una implementación de la realización, el motor central puede incluir un primer registro contador para el seguimiento de un número de eventos y un segundo registro contador para el seguimiento de un número de partes de información, usado en la limitación de la relación de eventos con respecto a partes de información a un valor de relación predeterminado.
En una implementación de la realización, el motor central puede realizar el seguimiento de la relación comparando un valor del primer contador con un valor del segundo contador.
En una realización, puede proporcionarse un motor central para convertir una secuencia de eventos que incluye una pluralidad de eventos en una secuencia de información que incluye al menos una parte de información. El motor central puede incluir: un controlador para recibir al menos un evento de la secuencia de eventos y una estimación de probabilidad para el al menos un evento, y para generar cero o más partes de la secuencia de información que responde al evento recibido y la estimación de probabilidad mediante la limitación de la relación de eventos con respecto a partes de información.
En una implementación de la realización, el motor central puede incluir además: un registro contador acoplado con el controlador para el seguimiento de un número de eventos para cada parte de información, usado en la limitación de la relación de eventos con respecto a partes de información.
En una implementación de la realización, el controlador incrementa el contador en un valor de incremento predeterminado cuando un evento puede procesarse.
En una implementación de la realización, el valor de incremento predeterminado puede ser uno.
En una implementación de la realización, el motor central puede limitar la relación de eventos usando el registro contador restando el valor de relación predeterminado del registro contador cuando se genera una parte de información.
En una implementación de la realización, los eventos de la secuencia de eventos pueden ser eventos binarios, y las partes de información de la información pueden ser bits binarios de información.
En una implementación de la realización, que el controlador limite la relación de eventos con respecto a partes de información puede incluir la limitación de la relación media de eventos con respecto a partes de información.
En una implementación de la realización, la media limitada de eventos con respecto a partes de información puede ser de 4 eventos por parte de información.
En una implementación de la realización, el procesador central puede generar al menos una parte de información de relleno dentro de la secuencia de información cuando la relación media de eventos con respecto a bits de información supera el valor de relación predeterminado.
En una implementación de la realización, el motor central puede incluir además: un primer registro contador acoplado con el controlador para el seguimiento de un número de eventos; y un segundo contador acoplado con el controlador para el seguimiento de un número de partes de información; en el que el controlador puede usar el primer contador y el segundo contador en la limitación de la relación de eventos con respecto a partes de información.
En una implementación de la realización, que el controlador limite la relación puede incluir comparar un valor del primer contador con un valor del segundo contador.
En una realización, puede proporcionarse un método de codificación aritmética para convertir una secuencia de eventos que incluye una pluralidad de eventos en una secuencia de información que incluye al menos una parte de información. El método de codificación aritmética puede incluir: recibir al menos un evento de la secuencia de eventos; generar información de contexto para el al menos un evento; generar una estimación de probabilidad de que el evento tiene un valor particular que responde a la información de contexto; y generar cero o más partes de información de la secuencia de información que responde al evento recibido y la estimación de probabilidad mediante la limitación de la relación de eventos con respecto a partes de información.
En una implementación de la realización, la recepción de eventos de la secuencia de eventos puede incluir recibir eventos binarios, y la generación de cero o más partes de información de la secuencia de información puede incluir generar cero o más bits binarios de información.
En una implementación de la realización, la limitación de la relación de eventos con respecto a partes de información puede incluir la limitación de la relación media de eventos con respecto a partes de información.
En una implementación de la realización, la limitación de la relación de eventos con respecto a partes de información puede incluir el seguimiento de un número de eventos para cada parte de información generada.
En una implementación de la realización, el seguimiento del número de eventos para cada parte de información generada puede incluir el seguimiento del número de eventos para cada parte de información generada usando un contador.
En una implementación de la realización, el seguimiento del número de eventos para cada parte de información generada usando un contador puede incluir el seguimiento del número de eventos mediante el incremento del contador en un valor de incremento predeterminado cuando se procesa un evento.
En una implementación de la realización, el incremento del contador en un valor de incremento predeterminado puede incluir incrementar el contador en uno.
En una implementación de la realización, el seguimiento del número de eventos para cada parte de información generada puede incluir restar el valor de relación predeterminado del registro contador cuando se genera una parte de información.
En una implementación de la realización, la limitación de la relación media de eventos con respecto a partes de información puede incluir la limitación de la relación media de eventos con respecto a partes de información a un valor de cuatro.
En una implementación de la realización, la limitación de la relación media de eventos con respecto a partes de información puede incluir además generar al menos una parte de información de relleno dentro de la secuencia de información cuando la relación de eventos con respecto a partes de información supera el valor de relación predeterminado.
En una implementación de la realización, el seguimiento del número de eventos para cada parte de información generada puede incluir el seguimiento de un número de eventos usando un primer contador y un número de partes de información usando un segundo contador.
En una implementación de la realización, el seguimiento del número de eventos para cada parte de información generada puede incluir además comparar un valor del primer contador con un valor del segundo contador.
En una realización, puede proporcionarse un método de codificación aritmética usando un codificador aritmético, para convertir una secuencia de eventos que incluye una pluralidad de eventos en una secuencia de información que incluye al menos una parte de información. El método de codificación aritmética puede incluir: recibir al menos un evento de la secuencia de eventos y una estimación de probabilidad correspondiente; y generar cero o más partes de información que responden al evento y la estimación de probabilidad correspondiente, incluyendo calcular un valor de subintervalo para un valor de evento particular usando la estimación de probabilidad correspondiente, ajustar al menos uno de un registro de intervalos y un registro bajo que responde al evento recibido y el valor de subintervalo calculado, y re­ normalizar una porción del codificador aritmético, incluyendo la limitación de una relación media de eventos con respecto a partes de información, al incrementar un registro contador para el seguimiento de la relación media en un valor de incremento predeterminado cuando se procesa un evento, y decrementar el registro contador en un valor de decremento predeterminado cuando se genera una parte de información.
En una implementación de la realización, el decremento del registro contador puede incluir determinar si un valor del registro contador es < cero, y decrementar el registro contador en el valor de decremento predeterminado cuando el valor del registro contador no es < cero, y duplicar el valor del registro de intervalos y decrementar el registro contador en el valor de decremento predeterminado cuando el valor del registro contador es < cero.
En una implementación de la realización, la recepción del al menos un evento puede incluir recibir al menos un evento binario, y la generación de cero o más partes de información incluye generar cero o más bits binarios.
En una realización, puede proporcionarse un decodificador aritmético para convertir una secuencia de información que incluye al menos una parte de información en una secuencia de eventos que incluye una pluralidad de eventos. El decodificador aritmético puede incluir: al menos un puerto de entrada para recibir partes de información de la secuencia de información; al menos un puerto de salida; un secuenciador acoplado con el al menos un puerto de entrada y el al menos un puerto de salida y que incluye un generador de contexto para generar información de contexto para al menos un evento generado; un estimador de probabilidad acoplado con el secuenciador, para recibir un evento generado de la secuencia de eventos e información de contexto correspondiente, y determinar una estimación de probabilidad; y un motor central acoplado con el secuenciador y el estimador de probabilidad, para procesar al menos una parte de información de la secuencia de información desde el secuenciador que responde a la estimación de probabilidad para generar al menos un evento teniendo en cuenta una relación limitada de eventos con respecto a partes de información; en el que el evento generado se proporciona al estimador de probabilidad con información de contexto correspondiente desde el secuenciador para actualizar la estimación de probabilidad, y el evento generado se proporciona al secuenciador, para su transmisión como la secuencia de eventos desde el al menos un puerto de salida.
En una implementación de la realización, la al menos una parte de información de la secuencia de información puede ser un bit binario, y los eventos de la secuencia de eventos pueden ser eventos binarios.
En una implementación de la realización, que el motor central genere al menos un evento teniendo en cuenta una relación limitada de eventos con respecto a partes de información puede incluir que el motor central genere el al menos un evento teniendo en cuenta una relación limitada media de eventos con respecto a partes de información.
En una implementación de la realización, que el motor central tenga en cuenta una relación limitada media de eventos con respecto a partes de información puede incluir que el motor central tenga en cuenta una relación limitada media con un valor de cuatro eventos con respecto a partes de información.
En una implementación de la realización, el procesador central puede incluir un registro contador para el seguimiento del número de eventos con respecto a partes de información, usado al tener en cuenta que la relación limitada media de eventos con respecto a partes de información es un valor de relación media predeterminado.
En una implementación de la realización, el motor central puede usar el registro contador para identificar partes de información de relleno en la secuencia de información.
En una implementación de la realización, el motor central puede incluir además un registro de intervalos, y las partes de información de relleno en la secuencia de información pueden identificarse sólo cuando el registro de intervalos se vuelve a sellar.
En una implementación de la realización, el motor central puede incrementar el contador en un valor de incremento predeterminado cuando se procesa un evento.
En una implementación de la realización, el valor de incremento predeterminado puede ser uno.
En una implementación de la realización, el motor central puede tener en cuenta la relación limitada media de eventos con respecto a partes de información usando el registro contador restando el valor de relación predeterminado del registro contador cuando se procesa una parte de información.
En una implementación de la realización, los eventos generados de la secuencia de eventos pueden ser M-arios por naturaleza.
En una implementación de la realización, el motor central puede incluir un primer registro contador para el seguimiento de un número de partes de información, y un segundo registro contador para el seguimiento de un número de eventos, en el que los contadores primero y segundo pueden usarse al tener en cuenta una relación limitada de eventos con respecto a partes de información.
En una implementación de la realización, el motor central puede tener en cuenta la relación limitada comparando un valor del primer contador con un valor del segundo contador.
En una realización, puede proporcionarse un motor central para convertir una secuencia de información que incluye al menos una parte de información en una secuencia de eventos que incluye una pluralidad de eventos. El motor central puede incluir: un controlador para recibir al menos una parte de información de la secuencia de información y una estimación de probabilidad, y para generar cero o más eventos de la secuencia de eventos que responde a la al menos una parte de información y secuencia de probabilidad teniendo en cuenta una relación limitada de eventos con respecto a partes de información.
En una implementación de la realización, el motor central puede incluir además: un registro contador acoplado con el controlador para el seguimiento de un número de eventos para cada parte de información, usado al tener en cuenta la relación limitada de eventos con respecto a partes de información.
En una implementación de la realización, el controlador puede incrementar el contador en un valor de incremento predeterminado cuando se procesa un evento.
En una implementación de la realización, el valor de incremento predeterminado puede ser uno.
En una implementación de la realización, el motor central puede tener en cuenta la relación limitada media de eventos usando el registro contador restando el valor de relación predeterminado del registro contador cuando se procesa una parte de información.
En una implementación de la realización, los eventos de la secuencia de eventos pueden ser eventos binarios, y las partes de información de la información pueden ser bits binarios de información.
En una implementación de la realización, que el controlador tenga en cuenta la relación limitada de eventos con respecto a partes de información puede incluir tener en cuenta la relación limitada media de eventos con respecto a partes de información.
En una implementación de la realización, la media limitada de eventos con respecto a partes de información puede ser de 4 eventos por parte de información.
En una implementación de la realización, el procesador central puede identificar cero o más partes de información de relleno en la secuencia de información usando la relación limitada media de eventos con respecto a bits de información. En una implementación de la realización, el motor central puede incluir además: un primer contador para el seguimiento de un número de partes de información, un segundo contador para el seguimiento de un número de eventos, en el que los contadores primero y segundo pueden usarse al tener en cuenta la relación limitada de eventos con respecto a partes de información.
En una implementación de la realización, el motor central puede tener en cuenta la relación limitada comparando un valor del primer contador con un valor del segundo contador.
En una realización, puede proporcionarse un método de decodificación aritmética para convertir una secuencia de información que incluye al menos una parte de información en una secuencia de eventos que incluye una pluralidad de secuencias de eventos. El método de decodificación aritmética puede incluir: recibir al menos una parte de información de la secuencia de información; generar información de contexto para el al menos un evento; generar una estimación de probabilidad que responde a la información de contexto; y generar cero o más eventos de la secuencia de eventos que responde a la al menos una parte de información recibida y la estimación de probabilidad teniendo en cuenta una relación limitada de eventos con respecto a partes de información.
En una implementación de la realización, la recepción de al menos una parte de información puede incluir recibir al menos un bit binario de información, y la generación de cero o más eventos puede incluir generar cero o más eventos binarios.
En una implementación de la realización, tener en cuenta una relación limitada de eventos con respecto a partes de información puede incluir tener en cuenta una relación limitada media de eventos con respecto a partes de información.
En una implementación de la realización, tener en cuenta la relación limitada media de eventos con respecto a partes de información puede incluir el seguimiento de un número de eventos para cada parte de información.
En una implementación de la realización, el seguimiento del número de eventos para cada parte de información puede incluir el seguimiento del número de eventos para cada parte de información generada usando un contador.
En una implementación de la realización, el seguimiento del número de eventos para cada parte de información usando un contador puede incluir el seguimiento del número de eventos que responden mediante el incremento del contador en un valor de incremento predeterminado cuando se procesa un evento.
En una implementación de la realización, el incremento del contador en un valor de incremento predeterminado puede incluir incrementar el contador en uno.
En una implementación de la realización, el seguimiento del número de eventos para cada parte de información puede incluir restar el valor de relación predeterminado del registro contador cuando se procesa una parte de información.
En una implementación de la realización, la limitación de la relación media de eventos con respecto a partes de información puede incluir la limitación de la relación media de eventos con respecto a partes de información a un valor de cuatro.
En una implementación de la realización, tener en cuenta la relación limitada media de eventos con respecto a partes de información puede incluir además identificar al menos una parte de información de relleno dentro de la secuencia de información usando la relación limitada media de eventos con respecto a partes de información.
En una implementación de la realización, tener en cuenta una relación limitada de eventos con respecto a partes de información puede incluir el seguimiento de un número de partes de información usando un primer contador, el seguimiento de un número de eventos usando un segundo contador y la comparación de un valor del primer contador con un valor del segundo contador.
En una realización, puede proporcionarse un método de decodificación aritmética usando un decodificador aritmético, para convertir una secuencia de información que incluye al menos una parte de información en una secuencia de eventos que incluye una pluralidad de eventos. El método de decodificación aritmética puede incluir: recibir al menos una parte de información de la secuencia de información y una estimación de probabilidad; y generar cero o más eventos que responden a la parte de información y la estimación de probabilidad, incluyendo calcular un valor de subintervalo para un valor de evento particular usando la estimación de probabilidad, ajustar al menos uno de un registro de intervalos y un registro de valores que responde a la al menos una parte de información y el valor de subintervalo calculado, y emitir un evento que responde a una comparación entre el valor de subintervalo calculado y el registro de valores, y re-normalizar una porción del decodificador aritmético, incluyendo tener en cuenta una relación media de eventos con respecto a partes de información, al incrementar un registro contador para el seguimiento de la relación media en un valor de incremento predeterminado cuando un valor del registro de intervalos es > un valor de intervalo predeterminado, y decrementar el registro contador en un valor de decremento predeterminado cuando el valor del registro de intervalos es < el valor de intervalo predeterminado.
En una implementación de la realización, el decremento del registro contador puede incluir determinar si un valor del registro contador es < cero, y duplicar el registro de valores, sumar un valor del evento emitido al registro de valores, y decrementar el registro contador en el valor de decremento predeterminado cuando el valor del registro contador no es < cero, y duplicar el registro de intervalos, duplicar el registro de valores, sumar un valor del evento emitido al registro de valores, y decrementar el registro contador en el valor de decremento predeterminado cuando el valor del registro contador es < cero.
En una implementación de la realización, la recepción del al menos un evento puede incluir recibir al menos un evento binario, y la generación de cero o más partes de información puede incluir generar cero o más bits binarios.
En una realización, puede proporcionarse un sistema de codificación de vídeo para codificar una señal de vídeo en una secuencia de información que incluye al menos una parte de información. El sistema de codificación de vídeo puede incluir: un procesador de vídeo para convertir la señal de vídeo en una secuencia de eventos que incluye una pluralidad de eventos que representan la señal de vídeo; y un codificador en comunicación con el procesador de vídeo para convertir la secuencia de eventos en la secuencia de información, incluyendo un motor central que tiene un controlador para recibir al menos un evento de la secuencia de eventos y una estimación de probabilidad para el al menos un evento, y para generar cero o más partes de la secuencia de información que responde al evento recibido y la estimación de probabilidad mediante la limitación de la relación media de eventos con respecto a partes de información.
En una realización, puede proporcionarse un sistema de decodificación de vídeo para decodificar una secuencia de información que incluye al menos una parte de información en una señal de vídeo. El sistema de decodificación de vídeo puede incluir: un decodificador para convertir la secuencia de información en una secuencia de eventos que incluye una pluralidad de eventos, que tiene un controlador para recibir al menos una parte de información de la secuencia de información y una estimación de probabilidad, y para generar cero o más eventos de la secuencia de eventos que responde a la al menos una parte de información y secuencia de probabilidad teniendo en cuenta una relación limitada media de eventos con respecto a partes de información; y un procesador de vídeo en comunicación con el decodificador para convertir la secuencia de eventos en la señal de vídeo.
En una implementación de la realización, la señal de controlador de vídeo que tiene en cuenta una relación limitada de eventos con respecto a partes de información puede incluir el seguimiento de la relación media de eventos con respecto a partes de información usando un contador, en el que el contador puede incrementarse en un valor de incremento para cada evento procesado.
En una implementación de la realización, que el controlador tenga en cuenta una relación limitada de eventos con respecto a partes de información puede incluir el seguimiento de la relación media de eventos con respecto a partes de información usando un primer contador para el seguimiento de un número de partes de información, y un segundo contador para el seguimiento de un número de eventos, y comparar un valor del primer contador con un valor del segundo contador.
En una implementación de la realización, la señal de vídeo puede incluir una pluralidad de muestras que representan la imagen de vídeo, y que el procesador de vídeo convierta la secuencia de eventos en la señal de vídeo puede incluir convertir la secuencia de eventos en la pluralidad de muestras.
En una implementación de la realización, la señal de vídeo puede incluir una pluralidad de bloques de muestras que representan la imagen de vídeo, y que el procesador de vídeo convierta la secuencia de eventos en la señal de vídeo puede incluir convertir la secuencia de eventos en la pluralidad de bloques de muestras.
En una implementación de la realización, los bloques de muestras pueden incluir al menos una de 16x16 muestras, 8x8 muestras y 4x4 muestras.
En una realización, puede proporcionarse una secuencia de partes de información, generada por un codificador aritmético a partir de una secuencia de eventos, que incluye cero o más partes de información de relleno de tal manera que la relación de eventos con respecto a partes de información está limitada por una relación predeterminada.
En una implementación de la realización, la relación predeterminada de eventos con respecto a partes de información puede ser de cuatro.
En una implementación de la realización, la secuencia de partes de información puede ser una secuencia de bits generada por un codificador aritmético a partir de una secuencia de eventos binarios, y que incluye cero o más bits de relleno de tal manera que la relación de eventos binarios con respecto al número de bits en la secuencia está limitada por la relación predeterminada.
En una implementación de la realización, las partes de información y los cero o más de relleno
En una realización, puede proporcionarse un codificador de entropía para convertir al menos una secuencia de eventos, incluyendo cada secuencia de eventos una pluralidad de eventos, en al menos una secuencia de información, incluyendo cada secuencia de información al menos una parte de información. El codificador de entropía puede incluir: un codificador aritmético para generar cero o más partes de información de al menos una secuencia de información que responde a al menos un evento de al menos una secuencia de eventos; y un controlador acoplado con el codificador aritmético para restringir una serie de eventos en al menos una secuencia de eventos como una función del número de partes de información generadas en al menos una secuencia de información.
En una implementación de la realización, al menos una secuencia de eventos puede representar datos de entrada particionados en un número de segmentos, y que el controlador restrinja un número de eventos como una función del número de partes de información puede incluir: que el controlador restrinja un número máximo de eventos en al menos una secuencia de eventos como una función de una combinación lineal que incluye un número de partes de información generadas en al menos una secuencia de información, y el número de segmentos.
En una implementación de la realización, el controlador puede restringir el número de eventos de al menos una secuencia de eventos al número de partes de información de al menos una secuencia de información mediante la generación de cero o más partes de relleno en al menos una secuencia de información.
En una implementación de la realización, los datos de entrada pueden ser datos de vídeo.
En una implementación de la realización, cada segmento puede incluir un bloque de 16 por 16 muestras de los datos de entrada.
En una implementación de la realización, el controlador puede restringir el número de eventos de al menos una secuencia de eventos al número de partes de información de al menos una secuencia de información mediante la generación de cero o más partes de relleno en al menos una secuencia de información.
En una implementación de la realización, al menos uno de las partes de información y los eventos puede ser M-ario por naturaleza.
En una realización, puede proporcionarse un método para convertir al menos una secuencia de eventos, incluyendo cada secuencia de eventos una pluralidad de eventos, en al menos una secuencia de información, incluyendo cada secuencia de información al menos una parte de información. El método para convertir al menos una secuencia de eventos puede incluir: generar cero o más partes de información de al menos una secuencia de información que responde a al menos un evento de al menos una secuencia de eventos; y restringir una serie de eventos en al menos una secuencia de eventos como una función del número de partes de información generadas en al menos una secuencia de información.
En una implementación de la realización, al menos una secuencia de eventos puede representar datos de entrada particionados en un número de segmentos, y la restricción puede incluir: restringir un número máximo de eventos en al menos una secuencia de eventos como una función de una combinación lineal que incluye un número de partes de información generadas en al menos una secuencia de información, y el número de segmentos.
En una realización, puede proporcionarse un aparato de codificación para convertir datos de entrada en al menos una secuencia de información, incluyendo cada secuencia de información al menos una parte de información. El aparato de codificación puede incluir: un procesador para convertir datos de entrada en al menos una secuencia de eventos, incluyendo cada secuencia de eventos una pluralidad de eventos; un codificador aritmético para generar cero o más partes de información de al menos una secuencia de información que responde a al menos un evento de al menos una secuencia de eventos; y un controlador acoplado con el codificador aritmético para restringir un número de eventos en al menos una secuencia de eventos como una función del número de partes de información generadas en al menos una secuencia de información.
En una implementación de la realización, el controlador puede restringir el número de eventos de al menos una secuencia de eventos al número de partes de información de al menos una secuencia de información mediante la generación de cero o más partes de relleno en al menos una secuencia de información.
En una implementación de la realización, el procesador puede particionar los datos de entrada en varios segmentos, y que el controlador restrinja una serie de eventos como una función del número de partes de información puede incluir: que el controlador restrinja un número máximo de eventos en al menos una secuencia de eventos como una función de una combinación lineal que incluye un número de partes de información generadas en al menos una secuencia de información, y el número de segmentos.
En una implementación de la realización, el codificador aritmético y el controlador pueden incluir un codificador de entropía, estando el codificador de entropía acoplado con el procesador, y siendo capaz de enviar información relativa a un número de partes de información generadas en al menos una secuencia de información al procesador.
En una implementación de la realización, el procesador puede ser capaz de reducir una relación de eventos de al menos una secuencia de eventos que responde a la información recibida desde el codificador de entropía.
En una implementación de la realización, los datos de entrada pueden ser datos de vídeo.
En una implementación de la realización, cada segmento puede incluir un bloque de 16 por 16 muestras.
En una implementación de la realización, el controlador puede restringir el número de eventos de al menos una secuencia de eventos al número de partes de información de al menos una secuencia de información mediante la generación de cero o más partes de relleno en al menos una secuencia de información.
En una implementación de la realización, al menos uno de las partes de información y los eventos puede ser M-ario por naturaleza.
En una realización, puede proporcionarse una secuencia de partes de información, generada en un codificador de entropía a partir de al menos una secuencia de eventos, incluyendo cada secuencia de eventos una pluralidad de eventos, cuando un número de partes de información en la secuencia de secuencia de información puede utilizarse para restringir un número máximo de eventos de al menos una secuencia de eventos como una función de una combinación lineal que incluye un número de partes de información generadas en la secuencia de partes de información, y el número de segmentos.
En una implementación de la realización, la secuencia de partes de información puede incluir cero o más partes de información de relleno de tal manera que se satisface la restricción del número máximo de eventos de al menos una secuencia de eventos.
En una implementación de la realización, al menos uno de las partes de información y los eventos puede ser M-ario por naturaleza.
Breve descripción de varias vistas de los dibujos
La figura 1 es un diagrama de bloques de un codificador de acuerdo con una realización de la invención;
La figura 2 es un diagrama de flujo que ilustra la inicialización del codificador de la figura 1 de acuerdo con una realización de la invención;
La figura 3 es un diagrama de flujo que ilustra el funcionamiento del motor central del codificador de la figura 1 de acuerdo con una realización de la invención;
La figura 4 es un diagrama de flujo que ilustra el procedimiento de re-normalización para el codificador de la figura 1 de acuerdo con una realización de la invención;
La figura 5 es un diagrama de flujo que ilustra el funcionamiento del motor central del codificador de la figura 1 al recibir una señal terminar de acuerdo con una realización de la invención;
La figura 6 es un diagrama de flujo que ilustra una rutina de bit y seguir llevada a cabo por el motor central de la figura 1 de acuerdo con una realización de la invención;
La figura 7 es un diagrama de bloques que ilustra un decodificador de acuerdo con una realización de la invención; La figura 8 es un diagrama de flujo que ilustra la inicialización del decodificador de la figura 7 de acuerdo con una realización de la invención;
La figura 9 es un diagrama de flujo que ilustra el funcionamiento del motor central del decodificador de la figura 7 de acuerdo con una realización de la invención;
La figura 10 es un diagrama de flujo que ilustra la re-normalización del motor central del decodificador de la figura 7 de acuerdo con una realización de la invención; y
La figura 11 es un diagrama de bloques de un codificador de acuerdo con otra realización de la invención.
Descripción detallada del invento
De acuerdo con una realización de la invención, se proporciona un codificador aritmético para convertir una secuencia de eventos que consiste en una pluralidad de eventos en una secuencia de información que consta de al menos una parte de información, incluyendo al menos un puerto de entrada para recibir eventos de la secuencia de eventos, y al menos un puerto de salida, en que una secuenciador está acoplado con el al menos un puerto de entrada y el al menos un puerto de salida e incluye un generador de contexto para la generación de información de contexto para al menos uno de los eventos recibidos. Se proporciona un estimador de probabilidad, junto con el secuenciador, para recibir un evento de la secuencia de evento y la información de contexto correspondiente desde el secuenciador, y para generar una estimación de la probabilidad de que el evento tenga un valor determinado. Un motor central está acoplado con el secuenciador y el estimador de probabilidad para recibir el evento de la secuencia de eventos desde el secuenciador, y la estimación de la probabilidad del estimador de probabilidad, y para generar 0 o más partes de la secuencia de información que responde al evento recibido y la estimación de probabilidad. El motor central puede limitar la relación de eventos por partes de información, y proporciona las 0 o más partes de información la secuencia de información al secuenciador, en que las partes de información generadas se proporcionan como la secuencia de información en el al menos un puerto de salida.
De acuerdo con otra realización de la invención, también se proporciona un decodificador aritmético para convertir una secuencia de información que consta de al menos una parte de información en una secuencia de eventos compuesta de una pluralidad de eventos, incluyendo al menos un puerto de entrada para recibir partes de información de la secuencia de información, al menos un puerto de salida, y una secuenciador acoplado junto con el al menos un puerto de entrada y el al menos un puerto de salida y que incluye un generador de contexto para la generación de información de contexto para al menos un evento generado. El estimador de probabilidad está acoplado con el secuenciador para recibir un evento generado de la secuencia de evento y la información de contexto correspondiente, y para determinar una estimación de probabilidad. Un motor central está acoplado con el secuenciador y el estimador de probabilidad para el procesamiento de cero o más partes de información de la secuencia de información desde el secuenciador que responde a la estimación de probabilidad de generar un evento en base a una relación limitada de eventos por partes de información. El evento generado se proporciona al estimador de probabilidad con la información de contexto correspondiente desde el secuenciador para actualizar la estimación de probabilidad, y el evento generado se proporciona al secuenciador para su transmisión como la secuencia de eventos desde el al menos un puerto de salida.
Tener el codificador aritmético que codifica la secuencia de eventos para la secuencia de información mediante la limitación de la relación de eventos por partes de información permite la compresión de una secuencia de datos (por ejemplo, eventos binarios o M-arios) de una manera tal que permite la utilización en tiempo real de la secuencia de evento. Además, la reducción de la complejidad de la secuencia de la información generada mediante la limitación de la relación de eventos por partes de información permite a los decodificadores con capacidades de procesamiento limitada (por ejemplo, decodificadores móviles) decodificar la secuencia de información de nuevo a su secuencia de evento correspondiente a la vez que manteniendo potencialmente una capacidad de procesamiento en tiempo real, o al menos sin necesidad de que un usuario de la información tenga que esperar una cantidad significativa de tiempo, mientras dichos descodificadores realizan las operaciones de descodificación.
De forma similar, proporcionar un decodificador que decodifica la secuencia de información a una secuencia de eventos en base a una relación limitada de eventos por parte de información permite dicha utilización en tiempo real de la secuencia de eventos, por ejemplo, durante una llamada de videoconferencia, o la recuperación y el proceso de la información desde los medios de almacenamiento, por ejemplo la recuperación de información de vídeo, como por ejemplo una película de un DVD-ROM y el procesamiento de los datos de vídeo para su utilización.
De acuerdo con otra realización de la invención, se proporciona un codificador de entropía para la conversión de al menos una secuencia de eventos, en que cada secuencia de eventos incluye una pluralidad de eventos, a al menos una secuencia de información, en que cada secuencia de información incluye al menos una parte de información, incluyendo un codificador aritmético para la generación de cero o más partes de información de al menos una secuencia de información que responde a al menos un evento de al menos una secuencia de eventos. El codificador de entropía incluye además un controlador acoplado con el codificador aritmético para restringir una serie de eventos en al menos una secuencia de eventos como una función de la cantidad de partes de información generadas en al menos una secuencia de información. La al menos una secuencia de eventos pueden representar datos de entrada divididos en un número de segmentos, en que el controlador restringe una serie de eventos como una función del número de partes de información al restringir un número máximo de eventos en al menos una secuencia de eventos como una función de una combinación lineal que incluye un número de partes de información generadas en al menos una secuencia de información, y el número de segmentos. El codificador de entropía puede estar acoplado con un procesador para convertir datos de entrada en la al menos una secuencia de eventos, en que el codificador de entropía es capaz de enviar información al procesador con respecto a una serie de partes de información generadas en al menos una secuencia de información. Además, el procesador puede ser capaz de reducir una relación de eventos de al menos una secuencia de eventos que responde a la información recibida desde el codificador de entropía.
Tener un codificador de entropía capaz de limitar una serie de eventos en una secuencia de eventos como una función del número de partes de información generadas en una secuencia de información puede permitir que los datos de vídeo sean decodificados de forma consistente, lo que representa un número máximo de partes de información por grupo de segmentos, a la vez que se mantiene la calidad de codificación de vídeo, en comparación con los codificadores de la técnica anterior. Además, cuando el codificador recibe una indicación de que el umbral de complejidad está a punto de ser excedido, el codificador puede generar menos eventos para el siguiente segmento de los datos de entrada, por ejemplo reduciendo la posibilidad de que se supere el umbral de limitación para el siguiente segmento. Además, dado que el controlador es capaz de desencadenar la adición de bits de relleno cuando se supera el umbral de limitación, el procesador puede ser implementado de una manera tal que el procesador no tiene por qué tener en cuenta, o tratar, la restricción de la complejidad. Los codificadores y el decodificador se pueden utilizar en el procesamiento de datos de vídeo, por ejemplo, tal como son generados por un procesador de vídeo (es decir, un códec de vídeo). En el ejemplo del procesador de vídeo, una imagen de vídeo se graba, y se divide en bloques de muestra de datos que puede representar muestras de 16x16, 8x8, o 4x4 de la imagen grabada. A continuación los bloques son transformados por el procesador de vídeo (es decir, utilizando una transformación discreta del coseno), y son cuantificados para producir valores enteros que representan el bloque de muestra. Los valores enteros son convertidos en una secuencia de eventos (es decir, eventos binarios) por el procesador de vídeo, y se envían al codificador para la codificación. Como alternativa, el procesador de vídeo puede operar directamente sobre muestras individuales, transformándolas y cuantificándolas, y convirtiendo el valor entero cuantificado particular para la muestra en una secuencia de eventos.
Aunque una utilización de este tipo para el codificador y el decodificador que se describe en el presente documento es en la codificación y decodificación de datos de vídeo, un experto en la técnica se daría cuenta de que el codificador y el decodificador que se describen en el presente documento se pueden utilizar en cualquier situación en la que una secuencia de eventos se comprime a una secuencia de información en el caso del codificador, y en que una secuencia de información de este tipo se descomprime en el caso del decodificador. Además, aunque la siguiente descripción del codificador es en el contexto del procesamiento de una secuencia de eventos que comprenden una pluralidad de eventos binarios a una secuencia de información que comprende al menos una información de bit binario, y para el decodificador está en el contexto del procesamiento de una secuencia de información que comprende al menos una información de bit binario a una secuencia de eventos que comprenden una pluralidad de eventos binarios, el codificador y el decodificador podrían operar en secuencias de eventos y secuencias de información que constan de eventos que son M-arios por naturaleza (es decir, cada evento M-ario representa > 1 bits de datos) utilizando las enseñanzas descritas en este documento, tal como sería apreciado por un experto en la técnica.
La figura 1 ilustra un diagrama de bloques de un codificador aritmético 100 de acuerdo con una realización de la invención. El codificador aritmético 100 incluye un secuenciador 105, un estimador de probabilidad 110, y un motor central 115, que se acoplan entre sí. Una o más líneas de datos de entrada 120 proporcionan un puerto de entrada para recibir una secuencia de eventos 125, en este caso una secuencia ordenada de eventos binarios, en el codificador 100. Los eventos binarios de la secuencia 125 pueden tener un valor “A” o “B”. La secuencia de eventos es procesada por el codificador, tal como se describe a continuación, para generar una secuencia de información que es una secuencia ordenada compuesta de al menos una parte de información, en este caso bits binarios, en que el número de partes de información en la secuencia de información es menor que el número de eventos en la secuencia de eventos. Las líneas de datos de salida 130 proporcionan un puerto de salida para el envío de la secuencia de información 135 desde el codificador 100. La secuencia ordenada de bits binarios de la secuencia de información incluye uno o más bits que tienen un valor de “0” o “1”.
Al recibir la secuencia ordenada de eventos binarios 125, el secuenciador 105 transmite secuencialmente los eventos 125 tanto al estimador de probabilidades 110 como al motor central 115 a través de líneas de transmisión de evento 140 y 145, respectivamente. Para cada evento binario de la secuencia de eventos 125, el secuenciador 105 también transmite información de contexto al estimador de probabilidad 110 para el evento binario a través de una línea de transmisión de contexto 150. El estimador de probabilidad 110, utilizando la información de contexto recibida a través de las líneas de transmisión de contexto 150, genera una estimación de la probabilidad P(A) que se transmite al motor central 115 a través de la línea de transmisión de probabilidad 155. A continuación, el estimador de probabilidad 110, actualiza su estado interno basándose en el valor del evento binario recibido a través de la línea de transmisión de evento binario 140. El motor central 115 produce 0 o más bits de información utilizando el evento binario recibido a través de la línea de transmisión de eventos 145 y la estimación de probabilidad correspondiente P(A) recibida a través de la línea de transmisión de probabilidad 155, a la vez que limita una relación de los eventos por bits de información, tal como se describirá con mayor detalle a continuación.
El secuenciador 105, tras la recepción de un primer evento binario de la secuencia de eventos 125, envía una señal de inicialización al estimador de probabilidad 110 y el motor central 115 a través de las líneas de inicialización 185 y 190, respectivamente.
En la producción de los cero o más bits de información para la transmisión, a través de la línea de transmisión de bits 158, el motor central 115 utiliza varios registros que incluyen un registro de intervalo 165, un registro bajo 170, un registro de bits pendientes 175, y un registro contador 180. El funcionamiento del codificador 100 se describe con respecto a los diagramas de flujo de las figuras 2-6.
La figura 2 ilustra un diagrama de flujo que describe el funcionamiento del motor central 115 cuando recibe una señal de inicialización desde el secuenciador 105. Tal como se muestra en el diagrama de flujo de la figura 2, el motor central 115 inicializa el registro de intervalo 165, por ejemplo a un valor hexadecimal 8000 (H), tal como se muestra en el paso 205. El motor central 115 también inicializa el registro bajo 170, el registro de bits pendientes 175 y el registro contador 180 cada uno de ellos para, por ejemplo, un valor de 0, tal como se muestra en los pasos 210, 215 y 220, respectivamente.
Después de la inicialización, y al recibir un evento binario de la secuencia de eventos 125, el motor central opera como se ilustra en el diagrama de flujo de la figura 3, de acuerdo con una realización de la invención.
Tal como se muestra en el paso 305 de la figura 3, el motor central 115 calcula un valor de sub-intervalo R(A) para un valor de evento en particular, por ejemplo un valor del evento “A”, utilizando un valor actual del registro de intervalos 165 y la estimación de probabilidad para ese valor de evento en particular recibida a través de la línea de transmisión de probabilidad 155. En este caso, el valor de sub-intervalo R(A) se calcula multiplicando el valor del registro de intervalos “R” por la estimación de probabilidad P(A). Tal como se muestra en el paso 310, un comparador del motor central 115 (que no se muestra) compara un valor “X” del evento binario recibido a través de la línea de transmisión de evento 145 con el valor del evento en particular A para el que se ha generado la probabilidad P(A). Cuando el valor evento recibido X es igual a A, el registro de intervalos 165 se establece en el valor de sub-intervalo R(A), tal como se muestra en el paso 315 (es decir, el valor de R(A) se almacena en el registro de intervalos 165). Sin embargo, cuando el valor de evento recibido X no es igual al evento A en el paso 310, se resta el sub-intervalo R(A) del valor R del registro de intervalos 165, en que el valor resultante se almacena en el registro de intervalos 165, tal como se muestra en el paso 320. Un valor L del registro bajo 170 se suma con el valor de sub-intervalo R(A) y se almacena en el registro bajo 170 tal como se muestra en el paso 325. Al recalcular el valor del registro de intervalo 165 en el paso 315, o el registro bajo 170 en el paso 325, el motor central llama a una rutina de re-normalización, tal como se muestra en el paso 330 y se describe más adelante con respecto al diagrama de flujo de la figura 4, de acuerdo con una realización de la invención.
Tal como se muestra en la figura 4, la re-normalización se inicia cuando un valor del registro de intervalos 165 se compara con un valor de intervalo predeterminado, en este caso 4000H tal como se muestra en el paso 405. Cuando el valor R del registro de intervalos 165 es > 4000H, el registro contador se incrementa en 1, un valor de incremento predeterminado, tal como se muestra aquí en el paso 410. Cuando se determina en el motor central 115 que el valor de R es menor o igual a 4000H en el paso 405, el valor L del registro bajo 170 y el valor R del registro de intervalos 165 se suman, y se compara el resultado con el valor 8000H tal como se muestra en el paso 415. Cuando la suma es menor o igual a 8000H, se llama a una rutina de Bit y seguir que tiene un parámetro B igual a “0” tal como se muestra en el paso 420 y tal como se describirá más adelante. A continuación, el valor del registro bajo se dobla tal como se muestra en el paso 425, y el valor C del registro contador 180 se compara con 0 tal como se muestra en el paso 430. Cuando el valor C del registro contador 180 no es menor que 0, un valor de decremento, en este caso 4H, se resta del registro contador 180, tal como se muestra en el paso 435, y el flujo vuelve al paso 405 y funciona tal como se ha descrito anteriormente. Sin embargo, cuando se determina en el paso 430 que el valor C del registro contador es menor que 0, el registro de intervalos se reajustará doblando el valor R del registro de intervalos 165, tal como se muestra en el paso 440, y el flujo del programa continúa a la etapa 435 tal como se ha descrito anteriormente.
Cuando se determina en el paso 415 que la suma de los valores L y R no es menor que o igual a 8000H, el valor L del registro bajo 170 se compara con 8000H tal como se muestra en el paso 445. Cuando el valor L es mayor que o igual a 8000H, se llama a la rutina de Bit y seguir con un parámetro B igual a “1” tal como se muestra en el paso 450 y como se describe a continuación. Se resta un valor 8000H del registro bajo 170 tal como se muestra en el paso 455, y el flujo continúa al paso 425 tal como se ha descrito anteriormente. No obstante, cuando se determina que L no es mayor que o igual a 8000H en el paso 445, el registro de bits pendientes 175 se incrementa en 1, tal como se muestra en el paso 460, y se resta un valor 4000H del registro bajo 170 tal como se muestra en el paso 465. A continuación, el flujo continúa al paso 425 tal como se ha descrito anteriormente.
Tras la recepción de un evento final de la secuencia de eventos 125, el secuenciador 105 envía una señal de finalización al motor central 115 a través de la línea de transmisión de finalización 195. El funcionamiento del motor central 115 cuando se recibe una señal de finalización se muestra en el diagrama de flujo de la figura 5, de acuerdo con una realización de la invención.
Tal como se muestra en la figura 5, se llama a una rutina de Bit y seguir, el paso 505, con un argumento B que tiene el valor del bit más significativo (MSB) del registro bajo 170. Los bits menos significativos (LSB) del registro bajo 170 son enviados a continuación al secuenciador 105 tal como se muestra en el paso 510. La rutina de Bit y seguir se muestra con más detalle en el diagrama de flujo de la figura 6, de acuerdo con una realización de la invención.
Tal como se muestra en la figura 6, se envía un valor B como un bit de la secuencia de información 135 al secuenciador 105 a través de la línea de transmisión de bits 158, tal como se muestra en el paso 605. Un valor BO del registro de bits pendientes 175 se compara con 0, en el paso 610. Cuando un valor BO del registro de bits pendientes 175 no es mayor que 0, el flujo vuelve a cualquier segmento de programa/rutina que llamó a la rutina de Bit y seguir (es decir, la caja 420 o la caja 450 de la figura 4 o la caja 505 de la figura 5). Sin embargo, cuando el valor BO es mayor que 0 en el paso 610, un bit de la secuencia de información 135 que tiene un valor de 1 menos el valor B se envía al secuenciador 105 a través de la línea de transmisión de bits 158, tal como se muestra en el paso 615. El valor BO del registro de bits pendientes se decrementa en 1 tal como se muestra en el paso 620, y el flujo vuelve al paso 610, y continúa tal como se ha descrito anteriormente.
Por lo tanto, proporcionar al codificador 100 que tiene un motor central 115 el contador 180 permite el seguimiento de la relación de eventos por partes de información, permitiendo de esta manera que dicha relación esté limitada con el fin de reducir el límite de complejidad de la secuencia de información proporcionada por el codificador. El valor de incremento del contador descrito con respecto al paso 410, el valor del contador de decremento descrito con respecto al paso 435 y el valor con el que se compara el registro contador 180 en el paso 430 se utilizan para regir la relación media de los eventos por partes de información. Por ejemplo, con los valores descritos anteriormente con respecto a la figura 4, que tiene un valor de decremento 4 en el paso 435 los resultados en la relación media de eventos por partes de información está limitada a 4. La alteración del valor de decremento altera la proporción media de los eventos por partes de información. En consecuencia, el valor de incremento, el valor de decremento y el valor con el que se compara el contador son meramente ejemplares, ya que dichos valores, junto con el valor al que se ha inicializado el registro contador 180 en la caja 220 de la figura 2, no necesitan ser tal como se ha descrito anteriormente, sino que pueden ser cualquier valor entero, en el que se seleccionarán los valores correspondientes para lograr la relación media limitada deseada de eventos por partes de información, tal como sería apreciado por un experto en la técnica.
7
Las figuras 7-10 ilustran un decodificador aritmético y el funcionamiento del mismo que es capaz de decodificar una secuencia de información que consta de al menos una parte de información en una secuencia de eventos que comprende una pluralidad de eventos, que representa una relación limitada de eventos por partes de información en la secuencia de información. La figura 7 es un diagrama de bloques del decodificador, en que las figuras 8-10 son diagramas de flujo que ilustran el funcionamiento del decodificador.
La figura 7 ilustra un decodificador aritmético 700 de acuerdo con una realización de la invención. El decodificador 700 incluye un secuenciador 705, un estimador de probabilidad 710, y un motor central 715 acoplados entre sí. Una o más líneas de datos de entrada de secuencia de información 720 proporcionan un puerto de importación para una secuencia de información 725, en este caso en una secuencia ordenada de bits binarios, al decodificador 700. Los bits binarios de la secuencia de 725 pueden tener un valor “0” o “1”. El decodificador procesa la secuencia de información para generar una secuencia de eventos teniendo en cuenta la relación limitada de eventos por partes de información en la secuencia de información, tal como se describe más adelante. La secuencia de eventos generada es una secuencia de eventos ordenados que comprende una pluralidad de eventos, en este caso eventos binarios, que pueden tener un valor “A” o “B”. La secuencia de eventos se proporciona a las líneas de datos de secuencias de eventos de salida 730, que proporciona al menos un puerto de salida desde el decodificador 700.
Al recibir la secuencia ordenada de bits binarios 725, el secuenciador 705 transmite secuencialmente los uno o más bits al motor central 715 a través de la línea de transmisión de bits 740. Tras la recepción de los uno o más bits, el motor central 715 inicia la generación de eventos, en este caso eventos binarios, que se transmiten al secuenciador 705 y al estimador de probabilidad 710 a través de líneas de transmisión de evento 745 y 750 respectivamente. Tal como se describe más adelante, el estimador de probabilidad envía una estimación de probabilidad inicial al motor central para generar el primer evento binario. A continuación, para cada evento binario generado por el motor central 715 y enviado al secuenciador 705, el secuenciador 705 transmite un contexto correspondiente al estimador de probabilidades 210 sobre la línea de transmisión de contexto 755. Basándose en el valor del contexto recibido a través de la línea de transmisión de contexto 755, el estimador de probabilidad 710 genera una estimación de probabilidad correspondiente P(A), que se envía al motor central 715 sobre la línea de transmisión de probabilidad 760, y es utilizada por el motor central 715 en la generación de nuevos eventos. Después de transmitir la estimación de probabilidad P(A), el estimador de probabilidad 710 actualiza su estado interno basándose en el valor del evento binario recibido desde el motor central 715 sobre la línea de transmisión de evento 750. El motor central 715 consume cero o más bits de información para cada evento binario generado. El motor central 715 utiliza varios registros en la generación de los eventos de la secuencia de eventos 735, incluyendo un registro de intervalos 765, un registro de valores 770 y un registro contador 775. Se proporciona una señal de inicialización al motor central 715 y al estimador de probabilidad 710 a través de líneas de transmisión de inicialización 780 y 785, respectivamente. Se proporciona una señal de finalización al motor central 715 a través de una línea de finalización de señal 790. El funcionamiento del decodificador 700 se muestra en los diagramas de flujo de las figuras 8-10.
La figura 8 ilustra el funcionamiento del decodificador 700 al recibir una señal de inicialización a través de la línea de señal de inicialización 780 de acuerdo con una realización de la invención. Tal como se muestra en la figura 8, el motor central 715 inicializa el registro de intervalos 765 a un valor de 8000H tal como se muestra en el paso 800, e inicializa el valor del registro 770 a un valor particular representado por 16 bits (que se describe más adelante) tal como se muestra en el paso 805. Además, el motor central 715 inicializa el registro contador 775 a un valor de cero tal como se muestra en el paso 810.
El registro de valores 770 se inicializa en el paso 805 mediante la recopilación de 16 bits en el registro de valores 770, por ejemplo las primeras 16 partes de información de la secuencia de información, tal como se describe en Aritmético Coding Revisited, de Moffat et al., ACM Transactions on Information Systems, VOL. 16, NO. 3, julio de 1998, páginas 256-294.
La figura 9 es un diagrama de flujo que ilustra el funcionamiento del motor central 715 en la generación de la secuencia de evento 725 de acuerdo con una realización de la invención. Tal como se muestra en el paso 900, un valor de subintervalo R(A) es calculado por el motor central 715 para un valor de evento “A”. El valor de subintervalo R(A) se calcula basándose en el valor del registro de intervalo 765 y la estimación de probabilidad determinada P(A) recibida a través de la línea de transmisión de estimación de probabilidad 760 del estimador de probabilidad 710, multiplicando el valor R del registro de intervalo 765 por la estimación de probabilidad P(A). Cuando se calcula el valor de sub­ intervalo R(A) por primera vez para una secuencia de información particular 735, el estimador de probabilidad 710 determina que la estimación de la probabilidad P(A) es alguna estimación de probabilidad inicial/predeterminada (es decir, acordada por anticipado). A partir de entonces, a medida que los eventos se emiten desde el motor central 715, el estimador de probabilidad 710 utiliza los eventos emitidos junto con información de contexto correspondiente recibida a través de línea de la información de contexto 755 en la actualización de la estimación de la probabilidad P(A) proporcionada a través de línea de transmisión de estimación de probabilidad 760, tal como se describe a continuación.
El valor de subintervalo R(A) se compara entonces con un valor V del registro de valores 770, tal como se muestra en el paso 905. Cuando el valor de subintervalo R(A) es menor que el valor V del registro de valores 765, el registro de intervalos 165 se establece en el valor de sub-intervalo R(A) tal como se muestra en el paso 910, y un evento “A” se emite al secuenciador 705 a través de la línea de transmisión de eventos 745 tal como se muestra en el paso 915. A continuación se llama a un proceso de re-normalización, tal como se muestra en el paso 920, y que se describirá con más detalle con respecto al diagrama de flujo de la figura 10.
Cuando el valor de sub-intervalo R(A) no es menor que el valor V del registro de valores 770 en el paso 905, el valor de sub-intervalo R(A) se resta del registro de intervalos 765, tal como se muestra en el paso 925. El valor de sub­ intervalo R (A) se resta del registro de valores 770, tal como se muestra en el paso 930, y un evento “B” se emite desde el motor central al secuenciador 705 a través de línea de transmisión de evento 745, tal como se muestra en el paso 935.
El flujo continúa con el procedimiento de re-normalización en el paso 920.
Tal como se ha descrito anteriormente, después de la emisión de un evento a través de la línea de transmisión de evento 745, el secuenciador 705 transmite un contexto a través de la línea de transmisión de contexto 755 al estimador de probabilidad 210, en que el estimador de probabilidad 710 actualiza su estado interno basándose en el valor del evento binario emitido por el motor central 715.
La figura 10 es un diagrama de flujo que ilustra el funcionamiento del motor central 115 al realizar la re-normalización tal como se ha descrito anteriormente con respecto al paso 920 de acuerdo con una realización de la invención. Tal como se muestra en el paso 1000, el valor R del registro de intervalo 765 se compara con un valor de intervalo predeterminado, en este caso 4000H. Cuando el valor predeterminado R no es menor que o igual a 4000H, el registro contador 775 se incrementa en un valor de incremento predeterminado, en este caso 1, tal como se muestra en el paso 1005, y la re-normalización es completa. Sin embargo, cuando el valor R del registro de intervalos 765 es menor o igual a 4000H un valor C del registro contador 775 se compara con 0 tal como se muestra en el paso 1010. Cuando el valor C del registro contador 775 no es menor que 0, el valor V del registro de valores 770 se duplica, y se incrementa con un valor del bit más reciente recibido en el motor central 715 a través de la línea de transmisión de bits 740, en que la suma resultante se almacena en el registro de valores 770, tal como se muestra en el paso 1015. Tal como se muestra en el paso 1020, un valor C del registro contador 775 se decrementa en un valor de decremento predeterminado, en este caso 4H, y el flujo vuelve al paso 1000. Cuando un valor C del registro contador es menor que 0 en el paso 1010, el registro de intervalo 765 se reajustará duplicando el valor R del registro de intervalo tal como se muestra en el paso 1025, y el flujo continúa al paso 1015 tal como se ha descrito anteriormente.
Después de que una parte final de la información de la secuencia de información 725 se transmita a, y sea procesada por el motor central 715, el secuenciador 705 transmite una señal de terminar al motor central 715 a través de líneas de transmisión de señal de terminar 790 que indican al motor central 715 que la decodificación de la secuencia de información 725 es completa. El motor central 715 no necesita realizar ninguna operación en respuesta a la señal de terminación.
El codificador 100 con un límite de complejidad reducido que es capaz de codificar una secuencia de eventos a una secuencia de información limitando una relación de eventos por partes de información resulta ventajoso ya que proporciona una secuencia de información que puede ser decodificada y utilizada para soportar la prestación de la información para su uso en tiempo real, sin afectar significativamente a la eficiencia de codificación de la secuencia de información. Además, una codificación de complejidad reducida de este tipo puede ser beneficiosa cuando el decodificador utilizado en la decodificación de la secuencia de información posee una capacidad de procesamiento reducida (es decir, se encuentra en un dispositivo móvil) ya que un decodificador de este tipo sería capaz de decodificar la secuencia de información sin ningún retraso indebido en espera de que se lleve a cabo la decodificación. Además, el decodificador 700 capaz de decodificar una secuencia de información a una secuencia de eventos a través de una relación limitada de eventos por partes de información en la secuencia de información, puede resultar ventajoso al permitir una decodificación eficiente de la secuencia de información para su utilización en, por ejemplo, el uso en tiempo real de la secuencia de evento.
La figura 11 ilustra un codificador 1100 de acuerdo con otra realización de la invención. Tal como se muestra en la figura 11, el codificador incluye un procesador 1105, acoplado con un codificador de entropía 1110. El codificador de entropía incluye un codificador aritmético 1115 acoplado con un controlador 1120. Los datos de entrada 1125 son recibidos en el codificador, y se codifican a una o más secuencias de partes de información que se muestran en 1130.
Los datos de entrada 1125 pueden ser cualquier dato que vaya a ser codificado por el codificador 1100, incluyendo, por ejemplo, datos de vídeo. El procesador 1105 recibe los datos de entrada, y convierte los datos de entrada en una o más secuencias de eventos 1135. El procesador 1105 puede particionar los datos de entrada en uno o más segmentos de información (que no se muestran). Por ejemplo, cuando los datos de entrada 1125 son datos de vídeo, el procesador puede particionar los datos de vídeo en bloques de datos, por ejemplo representando muestras de 16x16 de la imagen de vídeo correspondiente. Una secuencia de eventos 1135 puede representar uno o más segmentos (bloques de vídeo).
El codificador de entropía 1110 recibe la secuencia de eventos 1135 que va a ser codificada aritméticamente, en el que el codificador aritmético 1115 genera 0 o más bits de la secuencia de información 1130 para cada caso de la secuencia de eventos 1135. El controlador 1120 es capaz de regular el codificador de entropía 1110 al limitar el número de partes de información de la secuencia de información 1130 como una función del número de eventos de la secuencia de eventos 1135, de tal manera que el número de eventos no exceda un umbral con respecto al número de partes de información generadas. Cuando se supera el umbral, el controlador 1120 puede controlar el codificador de entropía para añadir una o más partes de información de relleno a la secuencia de información 1130 con el fin de alcanzar el umbral.
El codificador de entropía puede codificar la secuencia de eventos 1135 de una manera similar a la descrita anteriormente con respecto al codificador aritmético 100 de la figura 1. Por ejemplo, el codificador aritmético 1115 puede incluir, en su caso, un secuenciador, y un estimador de probabilidad tal como se ha descrito anteriormente con respecto a la figura 1. El codificador aritmético 1115 puede incluir además un motor central con Registros de Intervalo, Bajo y de Bits Pendientes. El controlador 1120 puede incluir uno o más contadores para el seguimiento de una serie de eventos de la secuencia de eventos 1135 procesada y una serie de partes de información de la secuencia de información generada 1130. Alternativamente, los uno o más contadores pueden estar presentes en el codificador de entropía 1110, donde el controlador 1120 es capaz de monitorizar el/los contador(es) para asegurar que se mantiene sustancialmente el umbral entre eventos procesados y partes de información generadas. El controlador 1120 puede limitar el número de partes de información, por ejemplo, a lo largo de cada secuencia individual de eventos que están siendo codificados. Por ejemplo, el controlador puede garantizar que (# partes de información generadas) x (umbral) > (# eventos procesados). Esto se puede lograr, por ejemplo, de una manera similar a como se ha descrito anteriormente con respecto a las figuras 1-6, y, específicamente, la figura 4, en que el controlador incrementa un contador para cada evento procesado, y resta un número del contador que representa el valor umbral , por ejemplo, “4” cuando se procesa un bit. A continuación, el controlador puede comparar el valor del contador, por ejemplo, con el valor 0, y desencadenar la inserción de un bit de relleno si el valor del contador es mayor que 0. De esta manera, el controlador es capaz de asegurar que el codificador aritmético 1115 está limitado sustancialmente a una relación de 4:1 de eventos procesados por partes de información generadas.
Además, o como alternativa, el controlador puede limitar el número de eventos de la secuencia de eventos 1135 como una función del número de partes de información en la secuencia de partes de información, y un número de segmentos de los datos de entrada 1125 representado en la secuencia de eventos. Por ejemplo, la restricción puede tomar la forma de una combinación lineal:
e < aB pS,
donde
e es el número de eventos representados en la secuencia de partes de información,
B es un número de partes de información en la secuencia de partes de información,
S es un número de segmentos representados en la secuencia de eventos, y
a y p representan un valor de decremento para un contador utilizado por el controlador para mantener sustancialmente una limitación del número de eventos de la secuencia de eventos con respecto a un número de partes de información generadas.
Los valores de a y p se proporcionan normalmente al controlador 1120, y la derivación de a y p se describirán más adelante. El valor de a puede representar un valor de decremento, por ejemplo, un contador tras la generación de una parte de información en el codificador, en que el valor p puede representar el valor de decremento, por ejemplo, un contador tras la finalización de procesamiento un segmento. Como alternativa, el valor p puede ser decrementado desde un valor de contador en el inicio del proceso de un segmento, o en cualquier otro momento durante el proceso de un segmento, tal como resultaría evidente para un experto en la técnica.
Se puede utilizar una línea de control de relación 1140 para limitar el número de eventos de la secuencia de eventos 1135 como una función del número de partes de información en la secuencia de partes de información, y un número de segmentos de los datos de entrada 1125 representado en la secuencia de eventos. Por ejemplo, la línea de control de velocidad 1140 se puede utilizar para transportar información relativa a la restricción de la complejidad (MEPS y/o PMEPS, ver más abajo) desde el codificador de entropía 1110 al procesador 1105. El codificador de entropía puede indicar al procesador que el umbral de limitación está a punto de ser, o ya ha sido excedido, por ejemplo, mediante la transmisión de información sobre el valor del/de los contador(es). De esta manera, el procesador 1105 puede reducir la relación de eventos (es decir, reducir el número de eventos por segmento/bloque), por ejemplo, para reducir la probabilidad de que el controlador 1120 active la inserción de bits de relleno en la secuencia de información 1130.
En algunas circunstancias, el número determinado de segmentos de datos de los datos de entrada 1125 que serán procesados puede ser conocido en el codificador 1100, por ejemplo, cuando la secuencia de partes de información no tiene por qué limitarse sustancialmente para la transmisión a través de un medio de comunicación en particular. En estas circunstancias, la secuencia de partes de información generada en el codificador 1100 puede representar una imagen codificada completa para la transmisión generada a partir de un número conocido de segmentos de los datos de entrada 1125. Cuando el número específico de los segmentos de datos de los datos de entrada que serán procesados es conocido, el controlador puede, por ejemplo, limitar el número de eventos en la secuencia de eventos 1135 como:
e - pS < aB,
Dado que el número total de segmentos, S, y el valor p son conocidos, el producto de p x S puede ser restado del número de eventos, e, para la secuencia de los eventos 1135 durante o después del proceso de uno o más segmentos de los datos de entrada 1125. Por ejemplo, cuando se utiliza un contador para limitar el número de eventos que responden a la cantidad de bits que se han generado, el contador puede inicialmente ser decrementado en un valor de p x S, y puede ser decrementado en un valor a para cada parte de información generada, mientras que el contador se incrementa en “1” para cada evento de la secuencia de eventos 1135 procesados por el codificador de entropía 1110. El valor de p puede ser cualquier valor, habitualmente en el intervalo de 1 a 100, y puede ser determinado, por ejemplo, tal como se describe más adelante. El valor de a puede ser cualquier valor, habitualmente en el intervalo de 1 a 10, y puede ser determinado, por ejemplo, tal como se describe más adelante.
En algunas circunstancias, el número de segmentos de los datos de entrada 1125 que se van a procesar no se conoce por adelantado, por ejemplo, cuando el medio de comunicación limita el número de partes de información que pueden ser proporcionadas en la secuencia de información 1130. Esto puede ocurrir, por ejemplo, cuando la secuencia de información 1130 va a ser transmitida a través de Internet, como un paquete de Protocolo de Internet (IP), en que el paquete de IP tiene una limitación de tamaño máximo. En estas circunstancias, dependiendo de la complejidad de una imagen en particular, pueden ser necesarias una o más secuencias de partes de información para representar una sola imagen de los datos de entrada 1125. Sin embargo, el número de segmentos utilizados para la generación de una secuencia de partes de información no se puede saber de antemano, ya que no se puede saber después de cuántos segmentos procesados se alcanza el tamaño máximo de una secuencia de partes de información. Cuando el número de segmentos de los datos de entrada 1125 que se van a procesar no se conoce de antemano, el controlador puede dar cuenta de la pluralidad de secuencias de eventos como el uno o más segmentos que representan una secuencia particular de los eventos que se codifican. Por ejemplo, cuando se utiliza un contador para limitar el número de eventos que responde a la cantidad de bits que han sido generados, el contador puede ser decrementado en un valor p para cada segmento procesado, y puede ser decrementado en un valor a para cada parte de información generada, mientras que el contador puede ser incrementado en “1 “para cada caso de la secuencia de eventos 1135 procesados por el codificador de entropía 1110.
Los valores para a y p se pueden determinar, por ejemplo, teniendo en cuenta las limitaciones impuestas por un estándar particular (es decir, un estándar que rige la codificación de vídeo), y/o limitaciones con respecto a un decodificador que se utiliza para decodificar la secuencia de información codificada por el codificador 1100. Estas limitaciones impuestas por el estándar particular pueden incluir información con respecto a un número máximo de bits por segundo (Mbps), un número máximo de segmentos (bloques) por segundo (MSPS), y un número máximo pico de bits por segundo (PMBPS). El PMBPS puede representar, por ejemplo, un número máximo de bits de una imagen dividido por la distancia temporal entre dos imágenes a codificar.
Los MBPS pueden indicar la capacidad del canal, por ejemplo, aproximadamente 64 000 bits por segundo para aplicaciones de comunicaciones móviles, 500 000 bits por segundo para la línea de abonado digital (DSL), y 4000 000 bits por segundo para aplicaciones de difusión como la televisión (TV). Los MSPS pueden indicar el estándar de formato de vídeo, por ejemplo, 176x144 píxeles a 10 o 15 fotogramas por segundo para aplicaciones móviles (es decir, telefonía celular), 320x240 píxeles a 24 fotogramas por segundo para aplicaciones de DSL, 720x480 píxeles a 30 fotogramas por segundo para aplicaciones de televisión estándar, y 1920x1088 píxeles a 30 fotogramas por segundo para TV de Alta Definición. PMBPS puede ser cualquier múltiplo de los MBPS, habitualmente varias veces MBPS, por ejemplo, PMBPS “ 10 x MBPS.
Dependiendo de la implementación particular, los recursos de un decodificador (es decir, las capacidades de procesamiento y/o la memoria intermedia disponible) pueden ser limitados, y pueden también tomarse en cuenta al determinar los valores de a y p. Estas limitaciones pueden incluir valores reales o supuestos con un número máximo de eventos por segundo (MEPS) que pueden procesarse por el decodificador, y/o un número máximo pico de eventos por segundo (PMEPS) que pueden procesarse por el decodificador (es decir, un número máximo de eventos en una imagen dividida por la distancia temporal entre dos imágenes a descodificar).
La explicación de una o más de las anteriores limitaciones del decodificador, de a y p puede ser representada en un sistema lineal como:
PMEPS = a*PMBPS p*MSPS,
y
MEPS = a*MBPS p*MSPS.
Los valores de a y p pueden determinarse resolviendo el sistema lineal para a y p, dadas por ejemplo, las limitaciones de PMBPS y de MSPS fijadas por el estándar particular, y una o las dos limitaciones de PMEPS y MEPS del decodificador. Los valores de a y p no necesitan ser valores enteros, sino que más bien pueden ser cualquier valor para satisfacer sustancialmente el sistema lineal.
Los valores de a y p pueden ser determinados de antemano por un diseñador de sistema del codificador 1100 que representan una o más de las limitaciones mencionadas anteriormente, y que se proporcionan al controlador 1120. Alternativamente, o además, los valores de a y p pueden ser determinados por el controlador 1120, o por cualquier otro componente del codificador 1100, de acuerdo con una o más de las limitaciones descritas anteriormente, o como valores por defecto del codificador 1100. Cuando el controlador 1120 determina los valores para a y p utilizando una o las dos limitaciones impuestas por el estándar o por un dispositivo de decodificación, la información relativa a una o más de las limitaciones se puede almacenar en una memoria (que no se muestra) del controlador 1120, y es utilizada por el controlador 1120 en la determinación de los valores de a y p. Además, o como alternativa, se puede proporcionar información relativa a las limitaciones al controlador 1120, por ejemplo, mediante algún dispositivo externo, como una memoria externa (es decir, un Disco de Vídeo Digital (DVD)), un dispositivo reproductor de DVD, o a través de un ingeniero de sistemas que, por ejemplo, manipule algunas de las funciones en lo que se refiere a la codificación de los datos de entrada particulares 1125. En este último caso, el ingeniero de sistemas puede introducir en una consola u otro dispositivo de entrada (que no se muestra), o de alguna otra manera especificar, información con respecto a las limitaciones impuestas como resultado de un estándar de codificación y/o un dispositivo de decodificación, tal como sería apreciado por un experto en la técnica.
Cuando no se conocen una o las dos limitaciones PMEPS y MEPS del decodificador, se pueden suponer valores para las PMEPS y MEPS, como por ejemplo los requisitos operativos mínimos que debe poseer un decodificador para ser capaz de decodificar la secuencia de información 1130 generada por el codificador 1100. Además, cuando se asumen los valores de las PMEPS y/o MEPS, pueden tenerse en cuenta las consideraciones en cuanto a, por ejemplo, el porcentaje de tiempo que utilizará el decodificador para la decodificación aritmética de los datos. Por ejemplo, se puede suponer que el decodificador será capaz de gastar no más de 30% de su tiempo/capacidades de procesamiento para llevar a cabo la decodificación aritmética de una secuencia de información recibida en el decodificador.
Además, aunque los valores de a y p se pueden determinar utilizando el sistema lineal anterior, dichos valores pueden ser ajustados para lograr un rendimiento de codificación deseado, en que los valores ajustados para a y p pueden ser utilizados posteriormente por el codificador 1100 para codificar los datos de entrada 1125 en la secuencia de información 1130. Por ejemplo, los valores de a y p se pueden ajustar con las consideraciones en cuanto a una posible pérdida de la calidad de vídeo debido a las partes de información de relleno en la secuencia de información 1130. Puede ser deseable, por ejemplo, reducir al mínimo el número de partes de información de relleno con el fin de mantener una óptima calidad de vídeo (es decir, de vídeo con poca o ninguna distorsión), a la vez que se limita la complejidad de decodificación. Una compensación de este tipo entre la complejidad de decodificación y la calidad de vídeo puede determinarse experimentalmente, y puede tener en cuenta el algoritmo de codificación de vídeo específico utilizado por el codificador 1100.
Además, cuando se determinan los valores de a y p se pueden realizar consideraciones en cuanto a si la restricción de la complejidad es demasiado ajustada, por ejemplo, si los valores de a y p son demasiado bajos. Una alta proporción partes de información de relleno en la secuencia de partes de información (es decir, una serie de partes de relleno superior a aproximadamente un 1% o un 2% de las partes de información de la secuencia de información) puede indicar que la limitación es demasiado ajustada. Un experto se daría cuenta de que otras proporciones pueden indicar una alta proporción de partes de información de relleno, por ejemplo, teniendo en cuenta el estándar y/o el decodificador específicos que pueden ser utilizados.
Cuando se determina, por ejemplo, que los valores de a y p son demasiado ajustados, se puede aumentar los valores para a y p con el fin de reducir la probabilidad que se añadan bits de relleno (es decir, reducir la probabilidad de una afectación de la calidad en la secuencia de información codificada). Al aumentar los valores para a y p se pueden hacer consideraciones en cuanto al efecto sobre los límites de la complejidad resultante (es decir, MEPS y/o PMEPS) con respecto a un decodificador que se utilizará para decodificar la secuencia de información codificada. Estas consideraciones pueden incluir el costo de implementar el decodificador. Si el límite de complejidad es mayor, más potencia de procesamiento puede ser necesaria en el decodificador. Un aumento de la potencia de procesamiento requerida probablemente podría tener como resultado un mayor costo de implementación.
Como alternativa, se puede determinar a y p experimentalmente, utilizando técnicas de regresión lineal. Se puede codificar una serie de secuencias de eventos, cada uno en representación de los segmentos S, sin imponer ninguna limitación de complejidad. Para cada secuencia z de eventos, se conoce el número de partes de información generadas resultante B (z) para el número de eventos e (z). Se puede determinar, utilizando regresión lineal, una línea e = c*B d que se aproxima a los pares de datos (e (z), B (z)). Un valor inicial de a puede ser indicado por c, y un valor inicial de p puede ser indicado por d/S. Los valores de a y p pueden entonces ser aumentados con el fin de minimizar el número de pares de datos (e (z), B (z)) que se encuentran por encima de la línea e = a*B p*S. La cantidad en la cual a y p se incrementan probablemente también tendrá en cuenta los valores resultantes de MEPS y/o PMEPS, por ejemplo, para controlar los costos de implementación de un decodificador.
Utilizando los valores de a y p de acuerdo con lo determinado por una o más de las diversas técnicas descritas anteriormente, el codificador 1100 puede dar cuenta de un valor de a (es decir, disminuir un contador en el valor de a) para cada parte de información generada, y puede dar cuenta de un valor de p (es decir, disminuir un contador en el valor de p) a la finalización de un segmento de los datos de entrada 1125. Por ejemplo, cuando a y p son valores enteros, dicha cuenta (es decir, los decrementos en uno o más contadores) puede llevarse a cabo directamente.
Cuando, por ejemplo, uno de ellos o tanto a como p son valores fraccionarios, se puede determinar un denominador común para proporcionar valores no fraccionarios para a y p. En esta circunstancia, los valores nuevos, no fraccionarios para a y p pueden ser contabilizados tal como se ha descrito anteriormente, por ejemplo, decrementando un contador por los valores de a y p en cada generación de pieza de información y finalización de segmento de procesamiento, respectivamente. El denominador común determinado puede explicarse, por ejemplo, mediante la adición del valor del denominador común al valor de contador en el procesamiento de cada evento de la secuencia de eventos 1135. Por ejemplo, cuando los valores para A y 3 se determinan en 4/3 y 25, respectivamente, se puede determinar un denominador común como 3. Por lo tanto, los valores no-fraccionarios para a y p se pueden determinar como 4 y 75 respectivamente, utilizando el denominador común. Así pues, cuando se utiliza un contador para dar cuenta de los valores de a y p, el contador puede ser decrementado en 4 para cada pieza de información generada, decrementado en 75 tras la finalización del procesamiento de cada segmento, e incrementado en 3 para cada evento procesado.
Tener un codificador capaz de limitar un número de partes de información a través de uno o más segmentos de datos de entrada puede permitir que los datos de vídeo sean decodificados de forma consistente, lo que representa un número máximo de partes de información por grupo de segmentos, manteniendo la calidad de la codificación de vídeo en comparación con los codificadores de la técnica anterior. Además, cuando a través de la línea de control de la velocidad el codificador recibe una señal de que el umbral de complejidad está a punto de ser superado, el codificador puede generar menos eventos, por ejemplo p o menos eventos a partir del siguiente segmento de los datos de entrada, con el fin de evitar que se sobrepase ese umbral para ese próximo segmento/bloque. Por lo tanto, tener un valor de p distinto de cero puede ayudar al procesador 1105 en el ajuste de calidad de vídeo. Además, dado que el controlador normalmente desencadena la adición de bits de relleno cuando se supera el umbral de limitación, el procesador puede ser implementado de una manera en la que el procesador no tiene por qué tener en cuenta, o tratar, la restricción de la complejidad. Por lo tanto, si el procesador cumple los límites impuestos por el estándar en particular, por ejemplo, los límites en relación con uno o más entre MSPS, MBPS y PMBPS, a la vez también cumplirá con el límite de complejidad MEPS y/o PMEPS (es decir, derivados de a y p tal como se ha descrito anteriormente).
Aunque la limitación del número de eventos que responden a la cantidad de partes de información generadas se ha descrito con respecto al codificador 1100, un experto se dará cuenta de que una restricción similar del número de eventos de la secuencia de eventos que responde al número de partes de información en la secuencia de información puede tener su explicación en el codificador 100 descrito anteriormente con respecto a la figura 1. Además, aunque el controlador 1120 se ha descrito como acoplado al codificador aritmético 1115, un experto se dará cuenta de que dicho acoplamiento puede ser directo, o a través de otros dispositivos intermedios. Dicho acoplamiento permite la comunicación directa y/o indirecta entre el controlador 1120 y el codificador aritmético 1115, de tal manera que el controlador 1120 es capaz de regular el codificador de entropía 1110 al limitar el número de partes de información de la secuencia de información 1130 como una función del número de los eventos de la secuencia de eventos 1135.
Los codificadores 100 y 1100, y el decodificador 700, descritos en este documento pueden estar compuestos completamente de hardware, como software que se ejecuta en un microprocesador adecuado, o como una combinación de hardware o software. La funcionalidad de los motores centrales 115 y 715, así como el codificador aritmético 1115, el controlador 1120 y el procesador 1105, puede llevarse a cabo como un programa de ordenador que se ejecuta en un microprocesador adecuado, y los registros contadores 180 y 775 pueden ser un registro que reside dentro del microprocesador, o que puede residir en algún medio de almacenamiento externo en comunicación con el microprocesador, por ejemplo, RAM, EEPROM, o cualquier medio de almacenamiento magnético, óptico o de otro tipo regrabable tal como sería apreciado por un experto en la técnica. Tal como se ha descrito anteriormente, aunque los codificadores 100 y 1100, y el decodificador 700, han sido descritos como que procesan una secuencia de eventos binaria a una secuencia de información binaria en el caso de los codificadores, y una secuencia de información binaria a una secuencia de evento binario en el caso del decodificador, un experto en la técnica se daría cuenta de que, utilizando las enseñanzas descritas en el presente documento, la secuencia de eventos M-arios puede ser procesada y producida sin dejar de lograr las ventajas descritas en el presente documento.
Además, la señal de los registros contadores 180 y 775 puede invertirse sin dejar de lograr las ventajas descritas en el presente documento, en que los incrementos en el registro contador se describen en los pasos 410 y 1005 serían cambiados a decrementos, los decrementos en el registro contador que se describen en los pasos 435 y 1020 serían cambiados a incrementos, y las comparaciones con el registro contador en los pasos 430 y 1010 se cambiarían para determinar si el valor del respectivo registro contador es > cero.
Adicionalmente, se pueden utilizar dos contadores en lugar de uno. El primer contador C1 puede contar eventos, y el segundo contador C2 puede contar bits. En tal caso, una comparación entre los dos contadores puede ser si C1 < 4*C2 para determinar si (o explicar que) la relación predeterminada de los eventos por bits se mantiene sustancialmente.
Además, aunque el codificador 100 y el decodificador 700 se han descrito como hardware separado, un experto en la técnica se daría cuenta de que la funcionalidad llevada a cabo por cada uno de ellos tal como se describe en el presente documento podría integrarse en una sola unidad, por ejemplo, que puede ser útil en el caso de un ordenador personal (PC) que se utiliza para una conferencia de vídeo, en que se utilizaría el procesador y el almacenamiento de medios del PC para llevar a cabo la funcionalidad del codificador y el decodificador descritos en el presente documento
La relación limitada de eventos por partes de información y la explicación de la relación limitada de eventos por partes de información realizada por los motores centrales descritos en el presente documento puede llevarse a cabo en otros diseños de motores centrales, incluyendo el de un codificador Q, un codificador MQ, un codificador Z, así como los descritos en “Low-Complexity Aritmético Implementation”, René van der Vleuten, Documento JVT- B033, reunión JVT en Ginebra, Suiza, enero de 2002, y “Low-Complexity Aritmético Coding Engine”, Winger, Documento JVT-B036, JVT”, reunión en Ginebra, Suiza, enero de 2002.
Por lo tanto, se ha descrito un codificador con un límite de complejidad reducido que es capaz de codificar una secuencia de eventos a una secuencia de información limitando la proporción de eventos por partes de información. Dicho codificador resulta ventajoso ya que proporciona una secuencia de información que puede ser decodificada y utilizada para soportar la prestación de la información para su uso en tiempo real, sin afectar significativamente la eficiencia de codificación de la secuencia de información. Además, una codificación de complejidad reducida de este tipo puede ser beneficiosa cuando el decodificador utilizado en la decodificación de la secuencia de la información posee unas capacidades de procesamiento reducidas (es decir, se encuentra en un dispositivo móvil) ya que un decodificador de este tipo sería capaz de decodificar la secuencia de información sin ningún retraso indebido a la espera de que se lleve a cabo la decodificación. Además, puede describirse un codificador capaz de limitar un número de partes de información en uno o más segmentos de los datos de entrada, que puede permitir que los datos de vídeo sean decodificados de forma consistente, lo que representa un número máximo de partes de información por grupo de segmentos, a la vez que se mantiene la calidad de codificación de vídeo, en comparación con los codificadores de la técnica anterior. Cuando el codificador recibe una señal a través de la línea de control de velocidad de que el umbral de complejidad está a punto de ser superado, el codificador puede generar menos eventos, con el fin de evitar superar el umbral para este próximo segmento de los datos de entrada. Además, dado que el controlador normalmente desencadena la adición de bits de relleno cuando se supera el umbral de limitación, el procesador puede ser implementado de una manera tal que el procesador no tenga por qué tener en cuenta o tratar la restricción de la complejidad. Además, se describe un descodificador capaz de decodificar una secuencia de información a una secuencia de eventos explicando una relación limitada de eventos por partes de información en la secuencia de información, permitiendo de esta manera una decodificación eficiente de la secuencia de información para su utilización en, por ejemplo, el uso en tiempo real de la secuencia de eventos.
Aunque esta invención se ha mostrado y descrito en conexión con realizaciones particulares, es evidente que, además de los mencionados anteriormente, pueden llevarse a cabo ciertos cambios y modificaciones de las características básicas de esta invención. Además, pueden existir muchos tipos diferentes de software y hardware que se pueden utilizar para la práctica de la invención, y la invención no se limita a los ejemplos descritos anteriormente. Por consiguiente, las realizaciones descritas han de ser consideradas en todos los aspectos sólo como ilustrativas y no restrictivas, y por lo tanto el alcance de la invención está indicado por las reivindicaciones adjuntas más que por la descripción anterior. Todos los cambios que se encuentran dentro del alcance y la cobertura de las reivindicaciones han de abarcarse dentro de su alcance.

Claims (1)

  1. REIVINDICACIONES
    Método de decodificación aritmética para convertir una secuencia de información (735) compuesta por una secuencia de bits en una secuencia de eventos binarios (725) compuesta por una pluralidad de eventos binarios, que comprende:
    recibir al menos un bit de la secuencia de información (735);
    generar información de contexto para al menos un evento binario;
    generar una estimación de probabilidad (P(A)) que responde a la información de contexto; y
    generar teniendo en cuenta una relación limitada de eventos binarios con respecto a bits, cero o más eventos binarios de la secuencia de eventos binarios (725) que responde al al menos un bit recibido y la estimación de probabilidad (P(A));
    en el que tener en cuenta la relación limitada de eventos binarios con respecto a bits incluye tener en cuenta una relación limitada media de eventos binarios con respecto a bits;
    en el que la decodificación aritmética usa un decodificador aritmético (700) que incluye un motor central (715) e incluye calcular (900) un valor de subintervalo (R(A)) para un valor de evento particular (A) usando la estimación de probabilidad (P(A));
    comprendiendo además el método:
    ajustar (910, 925, 930) al menos uno de un registro de intervalos (765) y un registro de valores (770) que responde al al menos un bit de información y el valor de subintervalo calculado (R(A)),
    emitir (915, 935) un evento (A, B) de la secuencia de eventos (725) que responde a una comparación (etapa 905) entre el valor de subintervalo calculado (R(A)) y el registro de valores (770), y
    llamar el motor central (715) a una rutina de re-normalización, incluyendo la rutina de re-normalización tener en cuenta una relación media de eventos con respecto a bits de información, al
    incrementar (1005) un registro contador (775) para el seguimiento de la relación media en un valor de incremento predeterminado (1H), donde (etapa 1000) un valor (R) del registro de intervalos (765) es > un valor de intervalo predeterminado (4000H), y
    decrementar (1020) el registro contador (775) en un valor de decremento predeterminado (4H) cuando el valor (R) del registro de intervalos (765) es < el valor de intervalo predeterminado (4000H);
    en el que decrementar (1020) el registro contador (775) incluye:
    determinar (1010) si un valor (C) del registro contador (775) es < cero,
    duplicar (1015) el registro de valores (770),
    sumar (1015) un valor (bit) del evento emitido al registro de valores (770),
    decrementar (1020) el registro contador (775) en el valor de decremento predeterminado (4H), cuando el valor (C) del registro contador (775) no es < cero, y
    duplicar (1025) el registro de intervalos (765),
    duplicar (1015) el registro de valores (770),
    sumar (1015) un valor (bit) del evento emitido al registro de valores (770), y
    decrementar (etapa 1020) el registro contador (775) en el valor de decremento predeterminado (4H) cuando el valor (C) del registro contador (775) es < cero.
    Método de codificación aritmética para convertir una secuencia de eventos binarios (125) compuesta por una pluralidad de eventos binarios en una secuencia de información (135) compuesta por una secuencia de bits, que comprende:
    recibir al menos un evento binario de la secuencia de eventos binarios;
    generar información de contexto para el al menos un evento binario;
    generar una estimación de probabilidad de que el evento binario tiene un valor particular que responde a la información de contexto; y
    generar mediante la limitación de la relación de eventos binarios con respecto a bits, cero o más bits de la secuencia de información que responde al evento binario recibido y la estimación de probabilidad en el que la limitación de la relación de eventos binarios con respecto a bits incluye la limitación de la relación media de eventos binarios con respecto a bits;
    en el que la codificación aritmética usa un codificador aritmético que incluye un motor central (115) e incluye calcular un valor de subintervalo para un valor de evento particular usando la estimación de probabilidad correspondiente;
    comprendiendo además el método:
    ajustar al menos uno de un registro de intervalos y un registro bajo que responde al evento recibido y el valor de subintervalo calculado, y
    llamar el motor central (115) a una rutina de re-normalización, incluyendo la rutina de re-normalización la limitación de una relación media de eventos con respecto a partes de información, al
    incrementar (410) un registro contador para el seguimiento de la relación media en un valor de incremento predeterminado cuando se procesa un evento, y
    decrementar el registro contador en un valor de decremento predeterminado cuando se genera una parte de información;
    en el que decrementar el registro contador incluye:
    determinar (430) si un valor del registro contador es < cero, y
    decrementar (435) el registro contador en el valor de decremento predeterminado cuando el valor del registro contador no es < cero, y
    duplicar (440) el valor del registro de intervalos, y
    decrementar (435) el registro contador en el valor de decremento predeterminado cuando el valor del registro contador es < cero.
ES15169825T 2002-04-23 2003-04-23 Sistema y método para codificación y decodificación aritmética Expired - Lifetime ES2797349T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US37477002P 2002-04-23 2002-04-23

Publications (1)

Publication Number Publication Date
ES2797349T3 true ES2797349T3 (es) 2020-12-02

Family

ID=29270547

Family Applications (3)

Application Number Title Priority Date Filing Date
ES10195913.8T Expired - Lifetime ES2552696T3 (es) 2002-04-23 2003-04-23 Sistema y método para codificación y decodificación aritmética
ES15169825T Expired - Lifetime ES2797349T3 (es) 2002-04-23 2003-04-23 Sistema y método para codificación y decodificación aritmética
ES03718500.6T Expired - Lifetime ES2559406T3 (es) 2002-04-23 2003-04-23 Sistema y método para codificación aritmética

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES10195913.8T Expired - Lifetime ES2552696T3 (es) 2002-04-23 2003-04-23 Sistema y método para codificación y decodificación aritmética

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES03718500.6T Expired - Lifetime ES2559406T3 (es) 2002-04-23 2003-04-23 Sistema y método para codificación aritmética

Country Status (9)

Country Link
US (1) US7822283B2 (es)
EP (5) EP2933756B1 (es)
JP (2) JP4252532B2 (es)
CN (1) CN100349379C (es)
AU (1) AU2003221760A1 (es)
DK (3) DK2312498T3 (es)
ES (3) ES2552696T3 (es)
PT (2) PT2933756T (es)
WO (1) WO2003091942A1 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7260735B2 (en) * 2003-12-18 2007-08-21 Lsi Corporation Method and system for maintaining a running count of events updated by two asynchronous processes
KR100696191B1 (ko) 2004-12-10 2007-03-20 한국전자통신연구원 유비쿼터스 환경에서 컨텍스트를 수집하고 관리하기 위한시스템 및 방법
US7240620B2 (en) 2005-04-03 2007-07-10 Suzanne Malott Yatsko Easy vehicle turnaround
US7934098B1 (en) 2005-04-11 2011-04-26 Alliedbarton Security Services LLC System and method for capturing and applying a legal signature to documents over a network
CN100584025C (zh) * 2005-08-04 2010-01-20 华为技术有限公司 一种基于内容自适应的算术解码系统及装置
US9558109B2 (en) 2014-04-04 2017-01-31 Samsung Israel Research Corporation Method and apparatus for flash memory arithmetic encoding and decoding

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4935882A (en) * 1986-09-15 1990-06-19 International Business Machines Corporation Probability adaptation for arithmetic coders
US5086488A (en) * 1989-08-19 1992-02-04 Mitsubishi Denki Kabushiki Kaisha Transform coding apparatus
DE69130275T2 (de) 1990-07-31 1999-04-08 Canon K.K., Tokio/Tokyo Verfahren und Gerät zur Bildverarbeitung
US5550540A (en) * 1992-11-12 1996-08-27 Internatioal Business Machines Corporation Distributed coding and prediction by use of contexts
US5414423A (en) * 1993-04-29 1995-05-09 International Business Machines Corporation Stabilization of probability estimates by conditioning on prior decisions of a given context
US5452006A (en) * 1993-10-25 1995-09-19 Lsi Logic Corporation Two-part synchronization scheme for digital video decoders
US5471207A (en) * 1994-02-23 1995-11-28 Ricoh Company Ltd. Compression of palettized images and binarization for bitwise coding of M-ary alphabets therefor
JPH07249995A (ja) * 1994-03-10 1995-09-26 Seiko Epson Corp データ符号化装置
JP3201448B2 (ja) 1994-03-31 2001-08-20 三菱電機株式会社 符号化復号化装置,符号化装置,および復号化装置
JP3082585B2 (ja) * 1994-09-09 2000-08-28 富士ゼロックス株式会社 画像情報符号化処理装置、画像情報復号化処理装置及び画像情報符号化復号化処理装置
US6195465B1 (en) 1994-09-21 2001-02-27 Ricoh Company, Ltd. Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US6141446A (en) * 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US5689589A (en) 1994-12-01 1997-11-18 Ricoh Company Ltd. Data compression for palettized video images
US5659631A (en) * 1995-02-21 1997-08-19 Ricoh Company, Ltd. Data compression for indexed color image data
JPH0918350A (ja) * 1995-06-28 1997-01-17 Hitachi Ltd 符号化復号化装置及び符号化復号化方法
US5680129A (en) * 1995-07-18 1997-10-21 Hewlett-Packard Company System and method for lossless image compression
US5877812A (en) * 1995-11-21 1999-03-02 Imedia Corporation Method and apparatus for increasing channel utilization for digital video transmission
US6072909A (en) * 1995-12-13 2000-06-06 Fuji Xerox Co., Ltd. Image coding devise and image decoding devise using with image disassembly
US6188795B1 (en) * 1996-06-13 2001-02-13 Dublin City University Data compression
JP3621512B2 (ja) * 1996-06-19 2005-02-16 株式会社ルネサステクノロジ ディジタル情報符号化装置、ディジタル情報復号化装置、ディジタル情報符号化・復号化装置、ディジタル情報符号化方法、及びディジタル情報復号化方法
CN1196319C (zh) * 1996-07-31 2005-04-06 松下电器产业株式会社 图象解码装置和图象解码方法
JPH1093827A (ja) * 1996-09-11 1998-04-10 Canon Inc 画像処理方法とその装置
EP0945022B1 (en) * 1996-12-18 2003-02-26 Thomson Consumer Electronics, Inc. Efficient fixed-length block compression and decompression
US6225925B1 (en) * 1998-03-13 2001-05-01 At&T Corp. Z-coder: a fast adaptive binary arithmetic coder
CN1174634C (zh) * 1998-01-26 2004-11-03 株式会社大宇电子 基于上下文的算术编码/解码方法及装置
JP3391251B2 (ja) * 1998-03-25 2003-03-31 三菱電機株式会社 適応確率推定方法及び適応符号化方法並びに適応復号方法
FR2780792B1 (fr) * 1998-07-03 2000-09-22 St Microelectronics Sa Appareillage de test de puces electroniques
US6643405B1 (en) * 1998-09-30 2003-11-04 Canon Kabushiki Kaisha Image processing apparatus and method and computer-readable storage medium
US6804401B2 (en) * 2000-05-12 2004-10-12 Xerox Corporation Method for compressing digital documents with control of image quality subject to multiple compression rate constraints
JP3457269B2 (ja) 2000-07-18 2003-10-14 パナソニック コミュニケーションズ株式会社 算術符号化・復号化方法および算術符号化・復号化装置
US6661927B1 (en) * 2000-07-27 2003-12-09 Motorola, Inc. System and method for efficiently encoding an image by prioritizing groups of spatially correlated coefficients based on an activity measure
US6677869B2 (en) * 2001-02-22 2004-01-13 Panasonic Communications Co., Ltd. Arithmetic coding apparatus and image processing apparatus
JP2003143411A (ja) * 2001-11-02 2003-05-16 Canon Inc 画像処理装置及びその制御方法及びコンピュータプログラム及び記憶媒体
US20030185302A1 (en) * 2002-04-02 2003-10-02 Abrams Thomas Algie Camera and/or camera converter
US7260735B2 (en) * 2003-12-18 2007-08-21 Lsi Corporation Method and system for maintaining a running count of events updated by two asynchronous processes

Also Published As

Publication number Publication date
DK2312498T3 (en) 2015-11-16
EP3709217A1 (en) 2020-09-16
DK1504408T3 (en) 2016-01-25
JP2009060667A (ja) 2009-03-19
JP4252532B2 (ja) 2009-04-08
US20040208383A1 (en) 2004-10-21
ES2552696T3 (es) 2015-12-01
JP4722990B2 (ja) 2011-07-13
DK2933756T3 (da) 2020-06-02
PT2933756T (pt) 2020-06-16
ES2559406T3 (es) 2016-02-12
CN1647099A (zh) 2005-07-27
EP1504408A4 (en) 2010-06-16
EP2312498A1 (en) 2011-04-20
EP1504408A1 (en) 2005-02-09
EP2933756A1 (en) 2015-10-21
CN100349379C (zh) 2007-11-14
EP1504408B1 (en) 2015-10-28
WO2003091942A1 (en) 2003-11-06
JP2005524267A (ja) 2005-08-11
EP2312498B1 (en) 2015-08-12
AU2003221760A1 (en) 2003-11-10
EP2933756B1 (en) 2020-04-29
US7822283B2 (en) 2010-10-26
PT1504408E (pt) 2016-02-25
EP2933755A1 (en) 2015-10-21

Similar Documents

Publication Publication Date Title
US8604947B2 (en) Variable length coding method and variable length decoding method
CN1848964A (zh) 用于图像或视频处理的通用参考解码器
US20090103606A1 (en) Progressive Distributed Video Coding
JP4722990B2 (ja) 算術的符号化及び復号のためのシステム及び方法
TW201031128A (en) Adaptive canonical huffman decoder and method thereof and video decoder
Banister et al. Robust image transmission using JPEG2000 and turbo-codes
US20080267284A1 (en) Moving picture compression apparatus and method of controlling operation of same
CN109639393B (zh) 一种基于二次置换多项式的滑动窗口网络编码方法
JP2000114974A (ja) 符号化装置
US10291255B2 (en) System and method for arithmetic encoding and decoding
KR100888522B1 (ko) 보코더 프레임들에 대한 오프셋 인터리빙을 위한 방법 및장치
CN106603081B (zh) 一种通用算术编码方法及其解码方法
CN113115039B (zh) 工作频率确定方法、装置和电子设备
Iqbal et al. Real-time unequal error protection for wireless imaging
JPH07184202A (ja) 画像データ符号化装置
Meng Multi-Dimensional Data Compression for Portable Communication
Wang et al. Unequal decoding power allocation for efficient video transmission