ES3050734T3 - Apparatuses for encoding and decoding a sequence of integer values, methods for encoding and decoding a sequence of integer values and computer program for implementing these methods - Google Patents
Apparatuses for encoding and decoding a sequence of integer values, methods for encoding and decoding a sequence of integer values and computer program for implementing these methodsInfo
- Publication number
- ES3050734T3 ES3050734T3 ES21734161T ES21734161T ES3050734T3 ES 3050734 T3 ES3050734 T3 ES 3050734T3 ES 21734161 T ES21734161 T ES 21734161T ES 21734161 T ES21734161 T ES 21734161T ES 3050734 T3 ES3050734 T3 ES 3050734T3
- Authority
- ES
- Spain
- Prior art keywords
- integer
- data stream
- sequence
- difference
- values
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
- H03M7/4012—Binary arithmetic codes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
- H03M7/4068—Parameterized codes
- H03M7/4075—Golomb codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
La invención describe un esquema de codificación para codificar una secuencia de valores enteros, en particular mediante la codificación de un valor en una posición predeterminada y, posteriormente, el cálculo y codificación de las diferencias entre valores adyacentes. También se proporciona un esquema de decodificación correspondiente. Estos esquemas de codificación y decodificación proporcionan un concepto de codificación más eficiente. (Traducción automática con Google Translate, sin valor legal)
Description
[0001] DESCRIPCIÓN
[0002] Aparatos para codificar y decodificar una secuencia de valores de números enteros, métodos para codificar y decodificar una secuencia de valores de números enteros y programa informático para implementar estos métodosCampo técnico
[0003] La presente solicitud se refiere a codificar una secuencia de valores de números enteros, particularmente usando en primer lugar la codificación de un valor en una posición predeterminada y después calculando y codificando de manera consecutiva diferencias entre valores vecinos.
[0004] Realizaciones según la invención se refieren a un aparato para codificar una secuencia de valores de números enteros.
[0005] Realizaciones adicionales según la invención se refieren a un aparato para decodificar una secuencia de valores de números enteros.
[0006] Realizaciones adicionales según la invención se refieren a un método para codificar una secuencia de valores de números enteros.
[0007] Realizaciones adicionales según la invención se refieren a un método para decodificar una secuencia de valores de números enteros.
[0008] Realizaciones adicionales según la invención se refieren a un programa informático para realizar métodos para codificar y decodificar una secuencia de valores de números enteros.
[0009] La invención puede aplicarse a aplicaciones de compresión de datos arbitraria que implican la señalización de valores de números enteros tales como, por ejemplo, la compresión de los parámetros de redes neuronales.Antecedentes de la invención
[0010] Actualmente se conoce una multitud de dispositivos y métodos para codificar y decodificar secuencias de valores. Sin embargo, los dispositivos y métodos conocidos requieren un ancho de banda de flujo de bits considerable, debido a la longitud de los códigos, y son eficientes únicamente cuando se produce un pequeño número de valores diferentes entre los elementos de la secuencia. El documento de H. E. Williamset al:“Compressing Integers for Fast File Access”, COMPUTER JOURNAL., vol. 42, n.° 3, 1 de marzo de 1999 (01/03/1999), páginas 193-201, da a conocer la codificación de una secuencia de valores ordenada de una manera estrictamente monótona usando codificación delta a partir del primer valor en la secuencia.
[0011] A la vista de lo anterior, existe un deseo de crear un concepto de codificación que proporcione un rendimiento de compresión mejorado, que conduzca a una eficiencia de codificación mejorada.
[0012] Por consiguiente, el objetivo de la presente invención es proporcionar un concepto de codificación que sea más eficiente. Este objetivo se logra mediante el objeto de las reivindicaciones independientes adjuntas. Aspectos ventajosos adicionales son el objeto de las reivindicaciones dependientes.
[0013] Sumario de la invención
[0014] Una realización según la invención crea un aparato para codificar, en un flujo de datos, por ejemplo en un flujo de bits, una secuencia de valores de números enteros que están ordenados de una manera estrictamente monótona, por ejemplo un libro de códigos. El aparato está configurado para codificar en el flujo de datos un valor de número entero predeterminado, por ejemplo C[z], ubicado en una posición predeterminada (z) de la secuencia de valores de números enteros; y, para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada, por ejemplo z, para calcular una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1; y para codificar la primera diferencia en el flujo de datos; y para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada, para calcular una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1; y para codificar la segunda diferencia en el flujo de datos.
[0015] Esta realización se basa en el hallazgo de que codificar en primer lugar un valor de número entero predeterminado de la secuencia ubicado en una posición predeterminada de la secuencia y después señalizar en consecuencia
tan solo la diferencia entre los valores vecinos aumenta un rendimiento de compresión.
[0017] Debe observarse que la codificación de la secuencia de valores de números enteros tal como se enseña en el presente documento divide la secuencia en dos porciones, una que precede a la posición predeterminada, la otra después de la posición predeterminada a lo largo de la secuencia. Muchas secuencias que van a codificarse, tales como un libro de códigos de niveles de cuantificación de parámetros tales como parámetros de red neuronal, muestran una distribución de valores centrada alrededor de un determinado valor de número entero que tiene una magnitud bastante baja y que puede usarse entonces para formar el valor de número entero predeterminado en la posición predeterminada, en el que se produce una alta densidad de valores de números enteros alrededor de ese centro y se obtienen intervalos grandes entre valores de números enteros consecutivos más alejados del centro. Esto significa que codificar un valor de número entero predeterminado de manera independiente, codificando después las diferencias (reducidas en uno) para los otros valores de números enteros con respecto a pares de valores de números enteros vecinos inmediatos, en comparación con codificar un primer, o un último, valor de número entero de la secuencia codificando después todos los demás valores de manera diferencial con respecto a este primero o último, ayuda a evitar tener que codificar un valor de número entero grande. El ahorro correspondiente compensa incluso en exceso la sobrecarga adicional en el caso de codificar la información en la posición predeterminada en el flujo de datos.
[0019] Además, debe observarse que, en muchas aplicaciones, los índices usados para cuantificar una determinada población de parámetros tales como parámetros de red neuronal tienen una distribución entre los valores de números enteros del libro de códigos a los que apuntan, que a su vez está centrado en, o cerca de, la posición predeterminada en la que está el centroide de los valores de números enteros de la secuencia. Esto hace que sea posible reutilizar de manera eficiente la información sobre la posición predeterminada, en caso de estar codificada en el flujo de datos, como desviación para codificar los índices de cuantificación para todos los parámetros que apuntan a la secuencia/libro de códigos, es decir el índice menos la posición predeterminada (z) puede codificarse/decodificarse para cada parámetro en lugar de la posición de rango del valor de número entero dentro de la secuencia o libro de códigos directamente. La reutilización, así como la codificación diferencial/desviada correspondiente de los índices de cuantificación en la secuencia/libro de códigos, hace que la codificación de parámetros tales como parámetros de redes neuronales, NN, sea más eficiente.
[0021] Según una realización, el aparato está configurado para codificar en el flujo de datos, por ejemplo un flujo de bits, el número de valores de números enteros de la secuencia de valores de números enteros, por ejemplo el tamaño del libro de códigos, por ejemplo L(C), o la longitud del libro de códigos. Hace que sea posible reutilizar la información del tamaño del libro de códigos. La secuencia codificada de valores de números enteros en el flujo de datos puede usarse para determinar un rango de la posición predeterminada y el centro del libro de códigos. Según una realización, el aparato está configurado para codificar en el flujo de datos el número de valores de números enteros de la secuencia de valores de números enteros mediante el uso de un primer código de longitud variable, por ejemplo A1. El primer código de longitud variable puede asignar, por ejemplo, palabras de código más cortas a números enteros con una magnitud menor. El primer código de longitud variable puede ser, por ejemplo, un código para valores de números enteros sin signo.
[0023] Según una realización, el aparato está configurado para codificar en el flujo de datos el número de valores de números enteros de la secuencia de valores de números enteros mediante el uso de un código de Golomb exponencial. El parámetro, por ejemplo k, del código de Golomb exponencial puede controlar, por ejemplo, las asignaciones de longitud de código a diferentes magnitudes de valores codificados. Usar un código de Golomb exponencial proporciona un enfoque de codificación más eficiente.
[0025] Según una realización, el aparato está configurado para codificar en el flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial. Por tanto, se proporciona una eficiencia de codificación mejorada.
[0027] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 2. Resulta más eficiente usar un parámetro de código de Golomb exponencial predeterminado para el primer código de longitud variable dado que solo se codifica un valor según la secuencia de valores de números enteros, por ejemplo el libro de códigos.
[0029] Según una realización, el aparato está configurado para codificar en el flujo de datos el número de valores de números enteros de la secuencia de valores de números enteros binarizando el número usando un primer código de binarización en una primera cadena binaria de uno o más primeros segmentos y realizando codificación aritmética binaria adaptativa al contexto del uno o más primeros segmentos. La eficiencia de codificación no se reduce debido a una codificación por binarización sin pérdida.
[0031] Según la invención reivindicada, el aparato está configurado para codificar en el flujo de datos una información que revela la posición predeterminada, por ejemplo z. Hace posible reutilizar la información sobre la posición
predeterminada.
[0032] Según una realización, el aparato está configurado para seleccionar la posición predeterminada entre varias posiciones dentro de la secuencia de valores de números enteros y seleccionar una posición de las varias posiciones como la posición predeterminada, que cumple un criterio predeterminado. Por ejemplo, cuando los valores de números enteros de la secuencia de valores de números enteros están centrados alrededor de cero, la posición predeterminada, por ejemplo z, apunta preferiblemente a un valor con una pequeña magnitud para proporcionar un enfoque de codificación eficiente.
[0033] Según una realización, el aparato es el criterio predeterminado es una tasa de transmisión de bits más baja para codificar la secuencia de valores de números enteros en el flujo de datos.
[0034] Según una realización, el aparato está configurado para calcular una tercera diferencia entre un rango de la posición predeterminada y una mitad redondeada al número entero del número de valores de números enteros, y codificar la tercera diferencia en el flujo de datos. Por ejemplo la tercera diferencia se calcula como
[0037]
[0039] La variable y es, por ejemplo, pequeña cuando z apunta a una posición cerca del centro de la secuencia. Por tanto, se proporciona un enfoque de codificación eficiente.
[0040] Según una realización, el aparato está configurado para codificar en el flujo de datos la tercera diferencia mediante el uso de un segundo código de longitud variable, por ejemplo A2. El segundo código de longitud variable es, por ejemplo, un código para valores de números enteros con signo.
[0041] Según una realización, el aparato está configurado para codificar en el flujo de datos la tercera diferencia mediante el uso de un código de Golomb exponencial. El parámetro, por ejemplo k, del código de Golomb exponencial puede controlar, por ejemplo, las asignaciones de longitud de código a diferentes magnitudes de valores codificados. Usar un código de Golomb exponencial proporciona un enfoque de codificación más eficiente.
[0042] Según una realización, el aparato está configurado para codificar en el flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial. Por tanto, se proporciona una eficiencia de codificación mejorada.
[0043] Según una realización, el aparato está configurado para codificar en el flujo de datos la tercera diferencia mapeando la tercera diferencia a un primer número entero sin signo según una regla de mapeo predefinida; y codificando el primer número entero sin signo usando un tercer código de longitud variable, por ejemplo A6. Según una realización, el aparato está configurado para codificar en el flujo de datos los números enteros sin signo mediante el uso de un código de Golomb exponencial. Usar un código de Golomb exponencial proporciona un enfoque de codificación más eficiente.
[0044] Según una realización, el aparato está configurado para codificar en el flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial. Por tanto, se proporciona una eficiencia de codificación mejorada.
[0045] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 2. Puede resultar más eficiente usar un parámetro de código de Golomb exponencial predeterminado. Según una realización, la regla de mapeo mapea números enteros con signo a números enteros sin signo de una manera que números enteros con signo menores de 0 y números enteros con signo mayores de 0 se mapean a unos independientes de números enteros sin signo pares y números enteros sin signo impares, respectivamente, mapeándose cero a cero y de modo que, para cada número entero sin signo, un primer número entero con signo mapeado al número entero sin signo respectivo es, en magnitud, mayor que o igual a un segundo número entero con signo mapeado a un número entero sin signo que sigue al número entero sin signo respectivo.
[0046] Según una realización, la regla de mapeo mapea números enteros con signo Is a números enteros sin signo Iu según:
[0047] si Is < 0 ^ Iu = -Is * 2,
[0048] si Is > 0 ^ Iu = Is * 2 - 1.
[0049] Según una realización, el aparato está configurado para codificar en el flujo de datos la tercera diferencia binarizando el número usando un segundo código de binarización en una segunda cadena binaria de uno o más segundos segmentos y realizando codificación aritmética binaria adaptativa al contexto del uno o más segundos segmentos.
[0051] Según una realización, el aparato está configurado para codificar en el flujo de datos el valor de número entero predeterminado mediante el uso de un cuarto código de longitud variable, por ejemplo A3. El cuarto código de longitud variable puede ser, por ejemplo, un código para valores de números enteros con signo.
[0053] Según una realización, el aparato está configurado para codificar en el flujo de datos el valor de número entero predeterminado mediante el uso de un código de Golomb exponencial. El parámetro, por ejemplo k, del código de Golomb exponencial puede controlar, por ejemplo, las asignaciones de longitud de código a diferentes magnitudes de valores codificados. Usar un código de Golomb exponencial proporciona un enfoque de codificación más eficiente.
[0055] Según una realización, el aparato está configurado para codificar en el flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial. Por tanto, se proporciona una eficiencia de codificación mejorada.
[0057] Según una realización, el aparato está configurado para codificar en el flujo de datos el valor de número entero predeterminado mapeando el valor de número entero predeterminado a un segundo número entero sin signo según una regla de mapeo predefinida adicional; y codificando el segundo número entero sin signo usando un quinto código de longitud variable, por ejemplo A7.
[0059] Según una realización, el aparato está configurado para codificar en el flujo de datos los números enteros sin signo mediante el uso de un código de Golomb exponencial. Usar un código de Golomb exponencial proporciona un enfoque de codificación más eficiente.
[0061] Según una realización, el aparato está configurado para codificar en el flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial. Por tanto, se proporciona una eficiencia de codificación mejorada.
[0063] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 7. Puede resultar más eficiente usar un parámetro de código de Golomb exponencial predeterminado.
[0064] Según una realización, la regla de mapeo mapea números enteros con signo a números enteros sin signo de una manera que números enteros con signo menores de 0 y números enteros con signo mayores de 0 se mapean a unos independientes de números enteros sin signo pares y números enteros sin signo impares, respectivamente, mapeándose cero a cero y de modo que, para cada número entero sin signo, un primer número entero con signo mapeado al número entero sin signo respectivo es, en magnitud, mayor que o igual a un segundo número entero con signo mapeado a un número entero sin signo que sigue al número entero sin signo respectivo.
[0066] Según una realización, la regla de mapeo mapea números enteros con signo Is a números enteros sin signo Iu según:
[0068] si Is < 0 ^ Iu = -Is * 2,
[0070] si Is > 0 ^ Iu = Is * 2 - 1.
[0072] Según una realización, el aparato está configurado para codificar en el flujo de datos el valor de número entero predeterminado binarizando el número usando un tercer código de binarización en una tercera cadena binaria de uno o más terceros segmentos y realizando codificación aritmética binaria adaptativa al contexto del uno o más terceros segmentos. La eficiencia de codificación no se reduce debido a una codificación por binarización sin pérdida.
[0074] Según una realización, el aparato está configurado para codificar en el flujo de datos la primera diferencia mediante el uso de un sexto código de longitud variable, por ejemplo A4. El sexto código de longitud variable puede ser, por ejemplo, un código para valores de números enteros sin signo.
[0076] Según una realización, el aparato está configurado para codificar en el flujo de datos la primera diferencia mediante el uso de un código de Golomb exponencial. El parámetro, por ejemplo k, del código de Golomb exponencial puede controlar, por ejemplo, las asignaciones de longitud de código a diferentes magnitudes de valores codificados. Usar un código de Golomb exponencial proporciona un enfoque de codificación más eficiente.
[0077] Según una realización, el aparato está configurado para codificar en el flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial. Esto resulta especialmente eficiente cuando dos o más secuencias de valores de números enteros, por ejemplo dos o más libros de códigos, se codifican en el flujo de datos, y solo se codifica un parámetro de código de Golomb exponencial en el flujo de datos para todas las secuencias. En el caso de un libro de códigos más grande, puede resultar ventajoso señalizar el parámetro de Golomb exponencial para el sexto código de longitud variable con el fin de optimizar las longitudes de código para la distribución de los valores que van a codificarse. Por tanto, se proporciona una eficiencia de codificación mejorada.
[0079] Según una realización, el parámetro de código de Golomb exponencial es uno de valores en un intervalo de desde 0 hasta 15 y se codifica en el flujo de datos como un número entero sin signo de 4 bits.
[0081] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 7. Puede resultar más eficiente usar un parámetro de código de Golomb exponencial predeterminado.
[0082] Según una realización, el aparato está configurado para codificar en el flujo de datos la primera diferencia binarizando el número usando un segundo código de binarización en una cuarta cadena binaria de uno o más cuartos segmentos y realizando codificación aritmética adaptativa al contexto del uno o más cuartos segmentos. La eficiencia de codificación no se reduce debido a una codificación por binarización sin pérdida.
[0084] Según una realización, el aparato está configurado para codificar en el flujo de datos la segunda diferencia mediante el uso de un séptimo código de longitud variable, por ejemplo A5. El séptimo código de longitud variable puede ser, por ejemplo, un código para valores de números enteros sin signo.
[0086] Según una realización, el aparato está configurado para codificar en el flujo de datos la segunda diferencia mediante el uso de un código de Golomb exponencial. El parámetro, por ejemplo k, del código de Golomb exponencial puede controlar, por ejemplo, las asignaciones de longitud de código a diferentes magnitudes de valores codificados. Usar un código de Golomb exponencial proporciona un enfoque de codificación más eficiente.
[0087] Según una realización, el aparato está configurado para codificar en el flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial. Esto resulta especialmente eficiente cuando dos o más secuencias de valores de números enteros, por ejemplo dos o más libros de códigos, se codifican en el flujo de datos, y solo se codifica un parámetro de código de Golomb exponencial en el flujo de datos para todas las secuencias. En el caso de un libro de códigos más grande, puede resultar ventajoso señalizar el parámetro de Golomb exponencial para el sexto código de longitud variable con el fin de optimizar las longitudes de código para la distribución de los valores que van a codificarse. Por tanto, se proporciona una eficiencia de codificación mejorada.
[0089] Según una realización, el parámetro de código de Golomb exponencial es uno de valores en un intervalo de desde 0 hasta 15 y se codifica en el flujo de datos como un número entero sin signo de 4 bits.
[0091] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 7. Puede resultar más eficiente usar un parámetro de código de Golomb exponencial predeterminado.
[0092] Según una realización, el parámetro de código de Golomb exponencial para el código de Golomb exponencial para codificar la segunda diferencia es el mismo que el parámetro de código de Golomb exponencial para el código de Golomb exponencial para codificar la primera diferencia.
[0094] Según una realización, el parámetro de código de Golomb exponencial para el código de Golomb exponencial para codificar la primera diferencia y la segunda diferencia es el mismo que el parámetro de código de Golomb exponencial para el código de Golomb exponencial para codificar en el flujo de datos el valor de número entero predeterminado.
[0096] Según una realización, el aparato está configurado para codificar en el flujo de datos la segunda diferencia binarizando el número usando un segundo código de binarización en una quinta cadena binaria de uno o más quintos segmentos y realizando codificación aritmética binaria adaptativa al contexto del uno o más quintos segmentos. La eficiencia de codificación no se reduce debido a una codificación por binarización sin pérdida.
[0097] Según una realización, el aparato está configurado para obtener la secuencia de valores de números enteros mediante un algoritmo de agrupación.
[0099] Según una realización, en la que la secuencia de valores de números enteros es un libro de códigos que está asociado con parámetros de una red neuronal. La reutilización de la información sobre la posición predeterminada, en caso de estar codificada en el flujo de datos, como desviación para codificar los índices de cuantificación para
todos los parámetros que apuntan a la secuencia/libro de códigos, así como la codificación diferencial/desviada correspondiente de los índices de cuantificación en la secuencia/libro de códigos, hace que la codificación de parámetros de redes neuronales, NN, sea más eficiente.
[0101] Según una realización, en la que los parámetros comprenden uno o más de pesos, sesgos y parámetros de normalización por lotes de la red neuronal.
[0103] Según una realización, el aparato está configurado para obtener la secuencia de valores de números enteros cuantificando una pluralidad de valores de coma flotante a un conjunto de niveles de cuantificación que se definen por la secuencia de valores de números enteros y un parámetro de cuantificación de coma flotante.
[0105] Según una realización, el aparato está configurado para codificar en el flujo de datos, para cada uno de la pluralidad de valores de coma flotante, un índice de cuantificación que apunta al valor de número entero asociado dentro de la secuencia de valores de números enteros que, según el parámetro de cuantificación de coma flotante, está asociado con un nivel de cuantificación al que se cuantifica el valor de coma flotante respectivo.
[0107] Según una realización, el parámetro de cuantificación de coma flotante comprende un primer parámetro de cuantificación de número entero con signo y un segundo parámetro de número entero sin signo.
[0109] Según una realización, el aparato está configurado para codificar el primer parámetro de cuantificación de número entero con signo en el flujo de datos, y en el que el segundo parámetro de número entero sin signo es un valor fijo o el aparato está configurado para heredar el segundo parámetro de número entero sin signo a partir de otra secuencia de valores de números enteros o un conjunto de secuencias de valores de números enteros.
[0111] Según una realización, el aparato está configurado para codificar en el flujo de datos el primer parámetro de cuantificación de número entero con signo y el segundo parámetro de número entero sin signo.
[0113] Según una realización, el aparato está configurado para codificar el índice de cuantificación en el flujo de datos en forma de diferencia de rango de un primer rango de la posición del valor de número entero asociado dentro de la secuencia de valores de números enteros y el rango de la posición predeterminada.
[0115] Según una realización, el aparato está configurado para codificar en el flujo de datos la diferencia de rango mediante el uso de un octavo código de longitud variable.
[0117] Según una realización, el aparato está configurado para codificar en el flujo de datos la diferencia de rango mediante el uso de un código de Golomb exponencial. El parámetro, por ejemplo k, del código de Golomb exponencial puede controlar, por ejemplo, las asignaciones de longitud de código a diferentes magnitudes de valores codificados. Usar un código de Golomb exponencial proporciona un enfoque de codificación más eficiente.
[0118] Según una realización, el aparato está configurado para codificar en el flujo de datos la diferencia de rango binarizando el número usando un código de binarización en una cadena binaria de uno o más segmentos y realizando codificación aritmética binaria adaptativa al contexto del uno o más segmentos. La eficiencia de codificación no se reduce debido a una codificación por binarización sin pérdida.
[0120] Según una realización, el aparato está configurado para codificar en el flujo de datos un parámetro de cuantificación de coma flotante para obtener niveles de cuantificación de la secuencia de valores de números enteros aplicando el parámetro de cuantificación de coma flotante.
[0122] Según una realización, en la que el parámetro de cuantificación de coma flotante define un tamaño de etapa de cuantificación entre los niveles de cuantificación.
[0124] Una realización según la invención crea un aparato para decodificar, a partir de un flujo de datos, por ejemplo a partir de un flujo de bits, una secuencia de valores de números enteros que están ordenados de una manera estrictamente monótona, por ejemplo un libro de códigos. El aparato está configurado para decodificar a partir del flujo de datos un valor de número entero predeterminado, por ejemplo C[z], ubicado en una posición predeterminada, por ejemplo z, de la secuencia de valores de números enteros; y para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada, decodificar, a partir del flujo de datos, una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1; y para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada, decodificar, a partir del flujo de datos, una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1.
[0126] El aparato para decodificar según esta realización y las realizaciones descritas a continuación se basa en las
mismas consideraciones que el aparato para codificar descrito anteriormente. Según una realización, el aparato está configurado para decodificar a partir del flujo de datos el número de valores de números enteros de la secuencia de valores de números enteros, por ejemplo el tamaño del libro de códigos, por ejemplo L(C), o por ejemplo la longitud del libro de códigos.
[0127] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos el número de valores de números enteros de la secuencia de valores de números enteros mediante el uso de un primer código de longitud variable, por ejemplo A1.
[0128] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos el número de valores de números enteros de la secuencia de valores de números enteros mediante el uso de un código de Golomb exponencial.
[0129] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial.
[0130] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 2. Según una realización, el aparato está configurado para decodificar a partir del flujo de datos el número de valores de números enteros de la secuencia de valores de números enteros desbinarizando el número mediante un primer código de binarización a partir de una primera cadena binaria de uno o más primeros segmentos y realizando decodificación aritmética binaria adaptativa al contexto del uno o más primeros segmentos a partir del flujo de datos.
[0131] Según la invención reivindicada, el aparato está configurado para decodificar a partir del flujo de datos una información que revela la posición predeterminada.
[0132] Según una realización, el aparato está configurado para, para cada posición de la secuencia de posiciones que precede a la posición predeterminada, calcular (206) el valor de número entero en la posición respectiva combinando linealmente la primera diferencia, el valor de número entero que reside inmediatamente después de la posición respectiva y uno; y para cada posición de la secuencia de posiciones que está ubicada después de la posición predeterminada, calcular (208) el valor de número entero en la posición respectiva combinando linealmente la segunda diferencia, el valor de número entero que reside inmediatamente antes de la posición respectiva y uno.
[0133] Según una realización, el aparato está configurado para decodificar, a partir del flujo de datos, una tercera diferencia entre un rango de la posición predeterminada y una mitad redondeada al número entero del número de valores de números enteros; y calcular la posición predeterminada basándose en la tercera diferencia y el número de valores de números enteros.
[0134] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la tercera diferencia mediante un segundo código de longitud variable, por ejemplo A2.
[0135] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la tercera diferencia mediante un código de Golomb exponencial.
[0136] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial.
[0137] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la tercera diferencia decodificando un primer número entero sin signo usando un tercer código de longitud variable, por ejemplo A6; y recuperar la tercera diferencia mediante mapeo inverso a partir del primer número entero sin signo según una regla de mapeo inverso predefinida.
[0138] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos los números enteros sin signo mediante un código de Golomb exponencial.
[0139] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial.
[0140] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 2.
[0141] Según una realización, la regla de mapeo inverso mapea números enteros sin signo a números enteros con signo de una manera que números enteros sin signo pares y números enteros sin signo impares se mapean a unos independientes de números enteros con signo menores de 0 y números enteros con signo mayores de 0,
respectivamente, mapeándose cero a cero y de modo que, para cada número entero con signo, un primer número entero con signo mapeado al número entero sin signo respectivo es, en magnitud, mayor que o igual a un segundo número entero con signo mapeado a un número entero sin signo que sigue al número entero sin signo respectivo.
[0142] Según una realización, la regla de mapeo inverso mapea números enteros sin signo Iu a números enteros con signo Is según:
[0144] si Iu & 1 == 0 ^ Is = — 2 ,
[0146] si Iu & 1 != 0 ^ Is = — 2 .
[0148] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la tercera diferencia desbinarizando el número mediante un segundo código de binarización a partir de una segunda cadena binaria de uno o más segundos segmentos y realizando decodificación aritmética binaria adaptativa al contexto del uno o más segundos segmentos.
[0150] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos el valor de número entero predeterminado mediante un cuarto código de longitud variable, por ejemplo A3.
[0152] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos el valor de número entero predeterminado mediante un código de Golomb exponencial.
[0154] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos el valor de número entero predeterminado decodificando un segundo número entero sin signo mediante un quinto código de longitud variable, por ejemplo A7; y recuperar el valor de número entero predeterminado mediante mapeo inverso a partir del segundo número entero sin signo según una regla de mapeo inverso predefinida adicional.
[0156] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos los números enteros sin signo mediante un código de Golomb exponencial.
[0158] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial.
[0160] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 7.
[0162] Según una realización, la regla de mapeo inverso mapea números enteros sin signo a números enteros con signo de una manera que números enteros sin signo pares y números enteros sin signo impares se mapean a unos independientes de números enteros con signo menores de 0 y números enteros con signo mayores de 0, respectivamente, mapeándose cero a cero y de modo que, para cada número entero con signo, un primer número entero con signo mapeado al número entero sin signo respectivo es, en magnitud, mayor que o igual a un segundo número entero con signo mapeado a un número entero sin signo que sigue al número entero sin signo respectivo.
[0163] Según una realización, la regla de mapeo inverso mapea números enteros sin signo Iu a números enteros con signo Is según:
[0165] si Iu & 1 == 0 ^ Is = — 2 ,
[0167] si Iu & 1 != 0 ^ Is = — 2 .
[0169] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos el valor de número entero predeterminado desbinarizando el número usando un tercer código de binarización a partir de una tercera cadena binaria de uno o más terceros segmentos y realizando decodificación aritmética binaria adaptativa al contexto del uno o más terceros segmentos.
[0171] Según una realización, el aparato está configurado para codificar en el flujo de datos la primera diferencia mediante el uso de un sexto código de longitud variable, por ejemplo A4.
[0173] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la primera diferencia mediante un código de Golomb exponencial.
[0175] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos un parámetro de
código de Golomb exponencial para el código de Golomb exponencial. Esto resulta especialmente eficiente cuando dos o más secuencias de valores de números enteros, por ejemplo dos o más libros de códigos, tienen que decodificarse a partir del flujo de datos.
[0176] Según una realización, el parámetro de código de Golomb exponencial es uno de valores en un intervalo de desde 0 hasta 15 y se codifica en el flujo de datos como un número entero sin signo de 4 bits.
[0177] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 7.
[0178] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la primera diferencia desbinarizando el número usando un segundo código de binarización a partir de una cuarta cadena binaria de uno o más cuartos segmentos y realizando decodificación aritmética binaria adaptativa al contexto del uno o más cuartos segmentos.
[0179] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la segunda diferencia mediante un séptimo código de longitud variable, por ejemplo A5.
[0180] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la segunda diferencia mediante un código de Golomb exponencial.
[0181] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos un parámetro de código de Golomb exponencial para el código de Golomb exponencial. Esto resulta especialmente eficiente cuando dos o más secuencias de valores de números enteros, por ejemplo dos o más libros de códigos, tienen que decodificarse a partir del flujo de datos.
[0182] Según una realización, el parámetro de código de Golomb exponencial es uno de valores en un intervalo de desde 0 hasta 15 y se codifica en el flujo de datos como un número entero sin signo de 4 bits.
[0183] Según una realización, un parámetro de código de Golomb exponencial para el código de Golomb exponencial es un valor de 7.
[0184] Según una realización, el parámetro de código de Golomb exponencial para el código de Golomb exponencial para decodificar la segunda diferencia es el mismo que el parámetro de código de Golomb exponencial para el código de Golomb exponencial para decodificar la primera diferencia.
[0185] Según una realización, el parámetro de código de Golomb exponencial para el código de Golomb exponencial para decodificar la primera diferencia y la segunda diferencia es el mismo que el parámetro de código de Golomb exponencial para el código de Golomb exponencial para decodificar a partir del flujo de datos el valor de número entero predeterminado.
[0186] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la segunda diferencia desbinarizando el número mediante un segundo código de binarización a partir de una quinta cadena binaria de uno o más quintos segmentos y realizando decodificación aritmética binaria adaptativa al contexto del uno o más quintos segmentos.
[0187] Según una realización, el aparato está configurado para aplicar un algoritmo de desagrupación a la secuencia decodificada de valores de números enteros.
[0188] Según una realización, el aparato es en el que la secuencia de valores de números enteros es un libro de códigos que está asociado con parámetros de una red neuronal.
[0189] Según una realización, los parámetros comprenden uno o más de pesos, sesgos y parámetros de normalización por lotes de la red neuronal.
[0190] Según una realización, el aparato está configurado para reconstruir la secuencia decodificada de valores de números enteros para dar una pluralidad de valores de coma flotante a partir de un conjunto de niveles de cuantificación que se definen por la secuencia de valores de números enteros y un parámetro de cuantificación de coma flotante.
[0191] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos, para cada uno de la pluralidad de valores de coma flotante, un índice de cuantificación que apunta al valor de número entero asociado dentro de la secuencia de valores de números enteros que, según el parámetro de cuantificación de coma flotante, está asociado con un nivel de cuantificación al que se cuantificó el valor de coma flotante respectivo.
[0192] Según una realización, el parámetro de cuantificación de coma flotante comprende un primer parámetro de cuantificación de número entero con signo y un segundo parámetro de número entero sin signo.
[0194] Según una realización, el aparato está configurado para codificar el primer parámetro de cuantificación de número entero con signo en el flujo de datos, y en el que el segundo parámetro de número entero sin signo es un valor fijo o el aparato está configurado para heredar el segundo parámetro de número entero sin signo a partir de otra secuencia de valores de números enteros o un conjunto de secuencias de valores de números enteros.
[0196] Según una realización, el aparato está configurado para codificar en el flujo de datos el primer parámetro de cuantificación de número entero con signo y el segundo parámetro de número entero sin signo. Según una realización, el aparato está configurado para decodificar el índice de cuantificación a partir del flujo de datos basándose en una diferencia de rango de un primer rango de la posición del valor de número entero asociado dentro de la secuencia de valores de números enteros y el rango de la posición predeterminada.
[0198] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la diferencia de rango mediante un octavo código de longitud variable.
[0200] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la diferencia de rango mediante un código de Golomb exponencial.
[0202] Según una realización, el aparato está configurado para decodificar a partir del flujo de datos la diferencia de rango desbinarizando el número usando un código de binarización a partir de una cadena binaria de uno o más segmentos y realizando decodificación aritmética binaria adaptativa al contexto del uno o más segmentos. Según una realización, el aparato está configurado para decodificar a partir del flujo de datos un parámetro de cuantificación de coma flotante para reconstruir la secuencia de valores de números enteros a partir de niveles de cuantificación aplicando el parámetro de cuantificación de coma flotante.
[0204] Según una realización, el aparato es el parámetro de cuantificación de coma flotante define un tamaño de etapa de cuantificación entre los niveles de cuantificación.
[0206] Una realización según la invención crea un método para codificar, en un flujo de datos, una secuencia de valores de números enteros que están ordenados de una manera estrictamente monótona, que comprende codificar en el flujo de datos un valor de número entero predeterminado, por ejemplo C[z], ubicado en una posición predeterminada, por ejemplo z, de la secuencia de valores de números enteros; y para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada, calcular una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1; y codificar la primera diferencia en el flujo de datos; y para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada, calcular una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1; y codificar la segunda diferencia en el flujo de datos.
[0208] El método según esta realización se basa en las mismas consideraciones que un aparato para codificar descrito anteriormente. Además, esta realización dada a conocer puede complementarse opcionalmente mediante cualquier otra característica, funcionalidad y detalle dado a conocer en el presente documento en relación con el aparato para codificar, tanto de manera individual como tomados en combinación.
[0210] Una realización según la invención crea un método para decodificar, a partir de un flujo de datos, una secuencia de valores de números enteros que están ordenados de una manera estrictamente monótona, que comprende decodificar a partir del flujo de datos un valor de número entero predeterminado, por ejemplo C[z], ubicado en una posición predeterminada, por ejemplo z, de la secuencia de valores de números enteros; y para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada, decodificar, a partir del flujo de datos, una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1; y para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada, decodificar, a partir del flujo de datos, una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1.
[0212] El método según esta realización se basa en las mismas consideraciones que un aparato para decodificar descrito anteriormente. Además, esta realización dada a conocer puede complementarse opcionalmente mediante cualquier otra característica, funcionalidad y detalle dado a conocer en el presente documento en relación con el aparato para decodificar, tanto de manera individual como tomados en combinación.
[0213] Como un ejemplo, la invención puede implementarse como un programa informático que tiene un código de programa para realizar, cuando se ejecuta en un ordenador, métodos según cualquiera de las realizaciones descritas anteriormente.
[0214] El aparato para codificar, el aparato para codificar, el método para codificar, el método para decodificar y el programa informático para implementar estos métodos pueden complementarse opcionalmente mediante cualquiera de las características, funcionalidades y detalles dados a conocer en el presente documento (en todo el documento), tanto de manera individual como tomados en combinación.
[0215] Breve descripción de las figuras
[0216] A continuación se exponen realizaciones preferidas de la presente solicitud basándose en las figuras entre las que la figura 1 muestra un diagrama de flujo de un método 100 para codificar según una realización;
[0217] la figura 2 muestra un diagrama de flujo de un método 200 para decodificar según una realización;
[0218] la figura 3 muestra una representación esquemática de un procedimiento de codificación y uno de decodificación según una realización.
[0219] Descripción detallada
[0220] Un método 100 para codificar una secuencia de valores de números enteros según una realización se presenta en la figura 1.
[0221] El método 100 comprende codificar, en la etapa 101, un número de valores de números enteros de una secuencia de valores de números enteros que van a codificarse, calcular, en la etapa 102, una diferencia entre un rango de la posición predeterminada y una mitad redondeada al número entero del número de valores de números enteros, y codificar, en la etapa 103, esta diferencia en el flujo de datos. El método 100 comprende además codificar, en la etapa 104, un valor de número entero predeterminado C[z] ubicado en una posición predeterminada z de la secuencia de valores de números enteros.
[0222] El método 100 comprende además realizar las siguientes etapas de codificación para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada z: calcular, en la etapa 105, una diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1, y codificar, en la etapa 106, esta diferencia en el flujo de datos.
[0223] El método 100 comprende además realizar las siguientes etapas de codificación para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada z: calcular, en la etapa 107, una diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1, y codificar, en la etapa 108, esta diferencia en el flujo de datos.
[0224] Sin embargo, debe observarse que el método 100 puede complementarse opcionalmente mediante cualquiera de las características, funcionalidades y detalles dados a conocer en el presente documento, tanto de manera individual como tomados en combinación.
[0225] Un método 200 para decodificar una secuencia de valores de números enteros según una realización se presenta en la figura 2.
[0226] El método 200 comprende decodificar, en la etapa 201, a partir del flujo de datos un número de valores de números enteros de una secuencia L(C) de valores de números enteros que van a decodificarse.
[0227] El método 200 comprende además decodificar, en la etapa 202, a partir del flujo de datos, una diferencia y entre un rango de la posición predeterminada y una mitad redondeada al número entero del número de valores de números enteros; y calcular, en la etapa 203, una posición predeterminada z basándose en la diferencia y y el número de valores de números enteros.
[0228] El método 200 comprende decodificar, en la etapa 204, a partir del flujo de datos un valor de número entero predeterminado, por ejemplo C[z], ubicado en la posición predeterminada calculada z de la secuencia de valores de números enteros.
[0229] El método 200 comprende además realizar las siguientes etapas de decodificación para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada: decodificar, en la etapa 205,
a partir del flujo de datos, una diferencia d i entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1, y calcular, en la etapa 206, el valor de número entero en la posición respectiva combinando linealmente la primera diferencia, el valor de número entero que reside inmediatamente después de la posición respectiva y uno.
[0231] El método 200 comprende además realizar las siguientes etapas de decodificación para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada: decodificar, en la etapa 207, a partir del flujo de datos, una diferencia d2 entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1, y calcular, en la etapa 208, el valor de número entero en la posición respectiva combinando linealmente la segunda diferencia, el valor de número entero que reside inmediatamente antes de la posición respectiva y uno.
[0233] Sin embargo, debe observarse que el método 200 puede complementarse opcionalmente mediante cualquiera de las características, funcionalidades y detalles dados a conocer en el presente documento, tanto de manera individual como tomados en combinación.
[0235] A continuación, se describen varias realizaciones sobre cómo codificar una secuencia 10 de valores de números enteros 12 en un flujo de datos 14. La secuencia 10 de valores de números enteros puede ser un libro de códigos de niveles de cuantificación para parámetros de red normales. En la secuencia 10, los valores de números enteros 12 según la invención reivindicada están ordenados de una manera estrictamente monótona. Es decir, pueden estar ordenados en orden ascendente 16 o en orden descendente 18 sin que se produzca ningún valor de número entero más de una vez en la secuencia 10.
[0237] Los valores de números enteros 12 se codifican en el flujo de datos 14 de la siguiente manera. Un valor de número entero predeterminado 12 que se indica mediante sombreado en la figura 3, y que está ubicado en una posición predeterminada designada z en la siguiente realización, se codifica en el flujo de datos 14 mediante el uso, por ejemplo, de un código de longitud variable que se denomina A3 en la siguiente realización. Por tanto, para el valor de número entero predeterminado, una palabra de código 20 está comprendida en el flujo de datos 14. La posición z puede conocerse por defecto o, tal como se expone en la siguiente realización, puede codificarse en el flujo de datos 14 mediante el uso de otro código de longitud variable A2, terminando de ese modo en la palabra de código 22. Asimismo, el tamaño de secuencia 10, es decir, el número de valores de números enteros 12 en la misma, puede conocerse por defecto o, tal como se expone en la siguiente realización, puede codificarse en el flujo de datos 14 tal como mediante el uso de otro código de longitud variable denominado A1 a continuación, terminando de ese modo en una palabra de código 24.
[0239] Además, los valores de números enteros 12 restantes salvo el predeterminado, se codifican en el flujo de datos 14. Estos últimos valores de números enteros 12 se codifican en el flujo de datos 14 mediante diferencias. Por ejemplo, los valores de números enteros 12 ubicados aguas arriba de la posición predeterminada se codifican en el flujo de datos 14 mediante diferencias de cada uno de estos valores de números enteros 12 siguientes por un lado y el valor de número entero inmediatamente precedente del valor de número entero respectivo por otro lado. La diferencia se reduce en uno y puede codificarse en el flujo de datos 14 mediante el uso de otro código de longitud variable A5, dando de ese modo como resultado una palabra de código 26 para cada uno de los valores de números enteros 12 siguientes al predeterminado. De manera similar, cada valor de número entero precedente al predeterminado se codifica en el flujo de datos 14 en forma de una diferencia entre el valor de número entero respectivo y el valor de número entero inmediatamente después del valor de número entero respectivo. Tal como se describe en más detalle a continuación, la diferencia se reduce en 1 con el fin de tener en cuenta el hecho de que los valores de números enteros están ordenados en la secuencia 10 de una manera estrictamente monótona, y cada diferencia se codifica en el flujo de datos 14 usando otro código de longitud variable A4, dando de ese modo como resultado una palabra de código 28 para cada uno de estos valores de números enteros que preceden al predeterminado en la secuencia 10.
[0241] Existen diferentes posibilidades sobre cómo calcular las diferencias usando cuáles de los valores de números enteros 12 aguas arriba y los valores de números enteros 12 aguas abajo del valor de número entero predeterminado se calculan. Tal como se describe en la siguiente realización, puede suceder que el minuendo de la diferencia 30 basándose en cuáles de los valores de números enteros 12 precedentes al valor de número entero predeterminado se codifican, está posicionado después del sustraendo de la diferencia 30 y lo mismo puede aplicarse a la diferencia 32 usando cuáles de los valores de números enteros 12 posteriores a la posición predeterminada se codifican en el flujo de datos 14, es decir, el minuendo puede estar posicionado después del sustraendo. Sin embargo, esto solo es un ejemplo y el orden entre el sustraendo y el minuendo puede conmutarse para ambas diferencias 30 y 32 o solo en un lado de la posición predeterminada.
[0243] Tal como se representa en la figura 3, puede suceder que la palabra de código resultante del procedimiento de codificación que acaba de exponerse esté codificada en el flujo de datos 14 en el orden de modo que el tamaño de secuencia 10 se codifica en primer lugar, después la posición establecida del valor de número entero
predeterminado, seguido por el valor de número entero predeterminado codificando después los valores de números enteros 12 precedentes a la posición predeterminada seguido incluso por las palabras de código 26 de los valores de números enteros 12 después de la posición predeterminada. Sin embargo, esto solo es una posibilidad y las palabras de código 28 y 26 pueden codificarse, por ejemplo, en el flujo de datos de una manera intercalada una con respecto a la otra.
[0245] Tal como se representa en la figura 3, el decodificador invierte el procedimiento de codificación tal como acaba de exponerse con respecto a la figura 3, exponiéndose detalles con respecto a esto en otras realizaciones.
[0247] A continuación, se describe una realización para codificar una secuencia de valores de números enteros en un flujo de datos, por ejemplo un flujo de bits, por ejemplo en un flujo de bits que contiene datos de red neuronal codificados, por ejemplo en un flujo de bits de<n>N<r>. Una estructura de una secuencia codificada de valores de números enteros se muestra en la tabla 1 en forma de un pseudocódigo.
[0249] Tabla 1
[0251]
[0252] __________________________________________________________
[0254] Tal como puede observarse en la tabla 1, la secuencia de valores de números enteros que van a codificarse están contenidos en el vector integerCodebook en el que están ordenados de una manera estrictamente monótona. Para codificar, el codificador codifica en el flujo de datos un valor de número entero predeterminado, codebook_zero_value, ubicado en una posición predeterminada, cbZeroOffset, de la secuencia de valores de números enteros. Las posiciones de la secuencia de valores de números enteros, que preceden a la posición predeterminada, cbZeroOffset, se codifican en primer lugar en el primer bucle para. En particular, para cada posición j de este tipo, se calcula una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva, en este caso almacenado en previousValue a medida que el bucle para atraviesa estas posiciones hacia el comienzo de la secuencia de valores de números enteros, y el valor de número entero en la posición respectiva, integerCodebook[j], reducida en 1, y la primera diferencia se codifica en el flujo de datos, es decir codebook_delta_left = previousValue - integerCodebook[j] - 1. Después, las posiciones de la secuencia de valores de números enteros, que están ubicadas después de la posición predeterminada, se codifican en primer lugar en el segundo bucle para. Para cada posición de este tipo de la secuencia de valores de números enteros, se calcula una segunda diferencia entre el valor de número entero en la posición respectiva, integerCodebook[j], y un valor de número entero que reside inmediatamente antes de la posición respectiva, en este caso almacenado en previousValue a medida que el bucle para atraviesa estas posiciones hacia el final de la secuencia de valores de números enteros y se inicializa con el valor de número entero predeterminado, codebook_zero_value, justo antes del segundo bucle para, reducida en 1, y la segunda diferencia se codifica en el flujo de datos, es decir codebook_delta_right = integerCodebook[j] - previousValue - 1. Tal como se mencionó anteriormente, el orden entre la codificación de las diferencias puede conmutarse o incluso intercalarse. Para decodificar la secuencia de valores de números enteros, el valor de número entero predeterminado, codebook_zero_value, ubicado en la posición predeterminada, cbZeroOffset, de la secuencia de valores de números enteros se decodifica a partir del flujo de datos. Después, para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada, se decodifica una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la
posición respectiva, reducida en 1, a partir del flujo de datos, es decir codebook_delta_left = previousValue -integerCodebook[j] - 1, y para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada, se decodifica una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1, a partir del flujo de datos, concretamente codebook_delta_right = integerCodebook[j] - previousValue - 1.
[0256] En más detalle, el número de valores de números enteros de la secuencia de valores de números enteros también se codifica en el flujo de datos, concretamente codebook_size. Esto se realiza usando un código de longitud variable, concretamente un código Exp-Golomb de 2° orden.
[0258] También puede codificarse en el flujo de datos información sobre la posición predeterminada, codebook_centre_offset, de la secuencia codificada de valores de números enteros. Esta codificación se realiza de manera diferencial con respecto a la posición central de la secuencia. Es decir, se codifica cbZeroOffset -(codebook_size >>1) = codebook_centre_offset, es decir una diferencia entre un rango de la posición predeterminada, cbZeroOffset, y una mitad redondeada al número entero, en este caso una mitad redondeada, del número de valores de números enteros, concretamente codebook_size >> 1. Esto se realiza usando un código de longitud variable, concretamente un código Exp-Golomb de 2° orden.
[0260] El valor de número entero predeterminado, codebook_zero_value, se codifica usando un código Exp-Golomb de 7° orden.
[0262] La primera y segunda diferencias se codifican usando un código Exp-Golomb de k-ésimo orden, codificándose k en el flujo de datos como codebook_egk. Se codifica como un número entero sin signo de 4 bits.
[0264] Una secuencia codificada de valores de números enteros, por ejemplo un libro de códigos (integer_codebook), se define por las variables cbZeroOffset e integerCodebook, una posición predeterminada de la secuencia de valores de números enteros, por ejemplo z, y un valor de número entero predeterminado ubicado en la posición predeterminada, por ejemplo C(z).
[0266] Los parámetros que definen la secuencia, por ejemplo el libro de códigos, incluyen un parámetro de código de Golomb exponencial, por ejemplo un parámetro de código Exp-Golomb, por ejemplo k (codebook_egk), y un número de valores de números enteros de la secuencia de valores de números enteros, por ejemplo un número de elementos en el libro de códigos (codebook_size). Estos parámetros se decodifican a partir del flujo de datos, por ejemplo el flujo de bits, que va a usarse en la creación de una secuencia de valores de números enteros decidida.
[0268] La posición predeterminada (cbZeroOffset) es una variable (codebook_centre_offset) calculada usando una diferencia (codebook_centre_offset) entre un rango de la posición predeterminada y una mitad redondeada al número entero del número de valores de números enteros, que se codifica en un flujo de bits. La variable codebook_centre_offset se define como una tercera diferencia, por ejemplo y, en una realización. La variable codebook_centre_offset especifica una desviación para acceder a valores de números enteros en la secuencia, por ejemplo elementos en el libro de códigos, con respecto al centro de la secuencia, por ejemplo el libro de códigos. La diferencia (codebook_centre_offset) se decodifica a partir del flujo de datos, por ejemplo el flujo de bits, que va a usarse en la creación de una secuencia de valores de números enteros decidida.
[0270] El parámetro codebook_zero_value que define la secuencia codificada, por ejemplo el libro de códigos, especifica el valor de número entero predeterminado (integerCodebook) ubicado en la posición predeterminada (cbZeroOffset), por ejemplo el valor del libro de códigos en la posición CbZeroOffset. Este parámetro está implicado en la creación de una secuencia decodificada de valores de números enteros, por ejemplo una variable Codebook (la matriz que representa el libro de códigos).
[0272] En la creación de una secuencia decodificada, se decodifican una primera diferencia (codebook_delta_left) y una segunda diferencia (codebook_delta_right) a partir del flujo de datos, por ejemplo el flujo de bits.
[0274] La primera diferencia (codebook_delta_left) especifica una diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1 para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada (cbZeroOffset), por ejemplo la diferencia entre un valor de libro de códigos y su vecino a la derecha menos 1 para valores a la izquierda de la posición central. La primera diferencia (codebook_delta_left) está implicada en la creación de la secuencia decodificada de valores de números enteros, por ejemplo una variable Codebook (la matriz que representa el libro de códigos), tal como se muestra en la tabla 1. Para cada posición de la secuencia de posiciones que precede a la posición predeterminada (cbZeroOffset), el valor de número entero en la posición respectiva se calcula combinando linealmente la primera diferencia (codebook_delta_left), el valor de número
entero que reside inmediatamente después de la posición respectiva (previousValue = integerCodebook[j+1]) y uno:
[0276] integerCodebookO] = previousValue - codebook_delta_left -1.
[0278] La segunda diferencia (codebook_delta_right) especifica una diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1 para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada (cbZeroOffset), por ejemplo la diferencia entre un valor de libro de códigos y su vecino a la izquierda menos 1 para valores a la derecha de la posición central. La segunda diferencia está implicada en la creación de la secuencia decodificada de valores de números enteros, por ejemplo una variable Codebook (la matriz que representa el libro de códigos), tal como se muestra en la tabla 1. Para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada (cbZeroOffset), el valor de número entero en la posición respectiva se calcula combinando linealmente la segunda diferencia (codebook_delta_right), el valor de número entero que reside inmediatamente antes de la posición respectiva (previousValue = integerCodebook[j-1]) y uno:
[0280] integerCodebook[j] = previousValue codebook_delta_right 1.
[0282] El parámetro de código de Golomb exponencial (codebook_egk) se usa para la decodificación de los elementos de sintaxis codebook_delta_left, que define la primera diferencia y, y codebook_delta_right, que define la segunda diferencia.
[0284] Sin embargo, debe observarse que la codificación de una secuencia de valores de números enteros tal como se describe haciendo referencia a la tabla 1 puede complementarse opcionalmente mediante cualquiera de las características, funcionalidades y detalles dados a conocer en el presente documento, tanto de manera individual como tomados en combinación.
[0286] Como conclusión, realizaciones según la invención proporcionan un rendimiento de compresión mejorado que conduce a una eficiencia de codificación mejorada.
[0288] 4. Realizaciones y aspectos adicionales
[0290] A continuación, se describirán aspectos y realizaciones adicionales según la invención, que pueden usarse de manera individual o en combinación con cualquier otra realización dada a conocer en el presente documento.
[0291] Además, las realizaciones dadas a conocer en esta sección pueden complementarse opcionalmente mediante cualquier otra característica, funcionalidad y detalle dado a conocer en el presente documento, tanto de manera individual como tomados en combinación.
[0293] Se describe adicionalmente un concepto mejorado para señalizar un libro de códigos para la compresión de datos según una realización de la invención.
[0295] Esta realización según la invención describe, por ejemplo, un enfoque para la codificación y decodificación de un libro de códigos que puede lograr una mejora en cuanto a la eficiencia de compresión en comparación con el estado de la técnica. La realización según la invención puede aplicarse a una aplicación de compresión de datos arbitraria que implica la señalización de valores de números enteros tal como, por ejemplo, la compresión de los parámetros de redes neuronales. Se considera una secuencia de valores de números enteros W que se codificará de manera eficiente empleando un libro de códigos. Esto puede resultar particularmente eficiente cuando solo se produce un pequeño número de valores diferentes entre los elementos de W. Por ejemplo, W con tales propiedades puede ser la salida del algoritmo de k medias bien conocido seguido por una cuantificación de los centros de la agrupación. En este caso, los centros de la agrupación comprenden un libro de códigos C.
[0297] Un libro de códigos C será una secuencia de valores de números enteros que están en orden ascendente en la que un valor de número entero particular puede producirse como máximo una vez. Además, sea z una desviación de número entero que apunta al z-ésimo elemento del libro de códigos que puede entenderse, por ejemplo, como una desviación con respecto a un valor de libro de códigos igual o próximo a cero.
[0299] Con el fin de usar el libro de códigos, W se traduce a una secuencia de índices de libro de códigos V de modo que un elemento w_i de W es igual al elemento de libro de códigos en la posición z v_i, donde v_i es el elemento de V en la posición i (estando la primera posición en i=0).
[0301] Ejemplo:
[0302] Sea C = [-20, -5, 3, 17], sea z=2, y sea V = [-2, -2, 1, 0, -1 ]. Entonces W puede reconstruirse a partir de C, z, y V, proporcionando la secuencia [-20, -20, 17, 3, -5].
[0303] A continuación, se describirá la realización según la invención.
[0304] Se presenta un enfoque eficiente para codificar y decodificar libros de códigos representados como una secuencia de valores de números enteros ordenados de una manera estrictamente monótona. Puede resultar particularmente eficiente cuando los elementos del libro de códigos, por ejemplo valores de números enteros si la secuencia de valores de números enteros, están centrados alrededor de cero y cuando z, por ejemplo una posición predeterminada, apunta preferiblemente a un valor con una magnitud pequeña. Sin embargo, también funcionará cuando no se apliquen estas suposiciones. La idea básica es señalizar en primer lugar el elemento en la posición z, por ejemplo una posición predeterminada, y después señalizar consecutivamente tan solo las diferencias entre valores vecinos de la siguiente manera:
[0305] 1. Codificar el tamaño del libro de códigos L(C), por ejemplo el número de valores de números enteros de la secuencia de valores de números enteros, usando un código A1, por ejemplo un primer código de longitud variable, para valores de números enteros sin signo.
[0306] 2. Calcular una variable y = z - piso(L(C)/2), por ejemplo una tercera diferencia entre un rango de la posición predeterminada y una mitad redondeada al número entero del número de valores de números enteros, y codificar y, por ejemplo la tercera diferencia, usando un código A2, por ejemplo un segundo código de longitud variable, para valores de números enteros con signo. Obsérvese que y es pequeño cuando z apunta a una posición cerca del centro del libro de códigos.
[0307] 3. Codificar C[z], por ejemplo un valor de número entero predeterminado, usando un código A3, por ejemplo un cuarto código de longitud variable, para valores de números enteros con signo.
[0308] 4. Para cada una de las posiciones i = z-1, i = z-2, ... i = 0, por ejemplo las posiciones de la secuencia de valores de números enteros precedentes a la posición predeterminada, realizar lo siguiente:
[0309] a. Calcular la diferencia d = C[i+1] - C[i] - 1, por ejemplo una primera diferencia, entre C[i+1] y C[i] reducida en 1 (porque los valores vecinos en el libro de códigos difieren en cuanto a la magnitud al menos en 1).
[0310] b. Codificar d, por ejemplo la primera diferencia, usando un código A4, por ejemplo un sexto código de longitud variable, para valores de números enteros sin signo.
[0311] 5. Para cada una de las posiciones i = z+1, i = z+2, ... hasta i = L(C) - 1, siendo L(C) la longitud del libro de códigos, por ejemplo las posiciones de la secuencia de valores de números enteros después de la posición predeterminada, realizar lo siguiente:
[0312] a. Calcular la diferencia d = C[i] - C[i-1] - 1, por ejemplo una segunda diferencia, entre C[i] y C[i-1] reducida en 1 (porque los valores vecinos en el libro de códigos difieren en cuanto a la magnitud al menos en 1).
[0313] b. Codificar d, por ejemplo la segunda diferencia, usando un código A5, por ejemplo un séptimo código de longitud variable, para valores de números enteros sin signo.
[0314] El método de decodificación correspondiente viene dado de la siguiente manera:
[0315] 1. Decodificar una variable l, por ejemplo el número de valores de números enteros, usando un código A1, por ejemplo un primer código de longitud variable, para valores de números enteros sin signo e inicializar un libro de códigos vacío, por ejemplo una secuencia de valores de números enteros con el número I de valores de números enteros, de longitud I. Es decir la longitud del libro de códigos L(C) es igual a I.
[0316] 2. Decodificar una variable y, por ejemplo una tercera diferencia, usando un código A2, por ejemplo un segundo código de longitud variable, para valores de números enteros con signo y establecer z, por ejemplo una posición predeterminada, a piso(L(C)/2) y.
[0317] 3. Decodificar el valor de C[z], por ejemplo un valor de número entero predeterminado ubicado en una posición predeterminada, usando un código<a>3, por ejemplo un cuarto código de longitud variable, para valores de números enteros con signo.
[0318] 4. Para cada una de las posiciones i = z-1, i = z-2, ... i = 0, por ejemplo las posiciones de la secuencia de valores de números enteros precedentes a la posición predeterminada, realizar lo siguiente:
[0319] a. Decodificar un valor d, por ejemplo la primera diferencia, usando un código A4, por ejemplo un sexto código de longitud variable, para valores de números enteros sin signo.
[0320] b. Establecer C[i] a C[i+1] - d - 1.
[0321] 5. Para cada una de las posiciones i = z+1, i = z+2, ... hasta i = L(C) - 1, siendo L(C), por ejemplo las posiciones de la secuencia de valores de números enteros después de la posición predeterminada, la longitud del libro de códigos, realizar lo siguiente:
[0322] a. Decodificar un valor d, por ejemplo la segunda diferencia, usando un código A5, por ejemplo un séptimo código de longitud variable, para valores de números enteros sin signo.
[0323] b. Establecer C[i] a C[i-1] d 1.
[0324] Los códigos A1 a A5 pueden ser, por ejemplo, códigos de longitud fija o códigos que asignan palabras de código más cortas a números enteros con magnitud menor. Una ventaja de los métodos de codificación y decodificación anteriores es que los valores codificados con los códigos A1 a A5 tienden a tener una magnitud pequeña que da como resultado un flujo de bits más corto.
[0325] Por ejemplo, los códigos de Golomb exponenciales bien conocidos pueden usarse con este fin cuando el parámetro de Golomb exponencial asociado k controla las asignaciones de longitud de código a diferentes magnitudes de valores codificados. En este caso, los parámetros k o bien son valores predeterminados o bien se señalizan en el flujo de bits. En el caso de un libro de códigos más grande, puede resultar ventajoso señalizar los parámetros de Golomb exponenciales para los códigos A4 y A5 con el fin de optimizar las longitudes de código para la distribución de los valores que van a codificarse. Por otro lado, puede resultar más eficiente usar parámetros de Golomb exponenciales k predeterminados para los códigos A1, A2, y A3 dado que solo se codifica un valor por cada libro de códigos.
[0326] Por ejemplo, puede escribirse un valor de 4 bits en el flujo de bits que indica un número entero entre 0 y 15 que será el parámetro de Golomb exponencial k para los códigos A4 y A5.
[0327] En otro ejemplo, puede usarse el esquema DeepCABAC bien conocido para la codificación de números enteros con signo para cualquiera de los códigos A1 a A5. Opcionalmente, en el caso de los códigos sin signo, no se codifica el sign_flag de DeepCabac. En vez de eso, se supone que siempre es 0 en el codificador y el decodificador (indicando un valor positivo).
[0328] Configuración a modo de ejemplo
[0329] En una configuración a modo de ejemplo, la realización según la invención se aplica a la codificación de libros de códigos que están asociados con parámetros de una red neuronal.
[0330] En el codificador, se producen libros de códigos, por ejemplo, mediante un algoritmo de agrupación tal como k medias. Después, se cuantifican los valores en el libro de códigos con respecto a números enteros empleando una cuantificación de reconstrucción uniforme que implica un parámetro de tamaño de etapa (por ejemplo, un valor de coma flotante).
[0331] A continuación, se almacenan los valores de libro de códigos cuantificados en orden ascendente y se eliminan posibles duplicados.
[0332] A continuación, se codifica el libro de códigos cuantificado empleando el esquema de esta realización según la invención y se selecciona con destreza la desviación de número entero z.
[0333] A continuación, se traducen los parámetros (que van a codificarse) a índices de libro de códigos y se codifican estos índices de libro de códigos con el esquema de DeepCABAC bien conocido.
[0334] Obsérvese que la selección con destreza de la desviación de número entero z puede ser, por ejemplo, el resultado de minimizar la suma de los bits producidos mediante codificación del libro de códigos y los índices de libro de códigos codificados mediante DeepCABAC asociados.
[0335] El tamaño de etapa puede ser, por ejemplo, un valor de coma flotante que se deriva a partir de un primer parámetro de cuantificación de número entero con signo QP y un segundo parámetro de número entero sin signo qp_density, en los que QP y/o qp_density o bien son valores predeterminados o bien se señalizan en el flujo de bits.
[0336] El tamaño de etapa “stepSize” puede calcularse, por ejemplo, mediante las siguientes ecuaciones:
[0337] muí = (1 « qp_density) ( QP & ( { 1 « qp_densiíy ) - 1 ) )
[0338] shlft = QP » qp__density
[0340] stepSize = muí
[0341] En el decodificador, el libro de códigos y los índices de libro de códigos se decodifican a partir del flujo de bits. En primer lugar se reconstruyen los índices de libro de códigos decodificados para dar elementos de libro de códigos cuantificados (usando el libro de códigos como tabla de consulta con la desviación de número entero z) y después se reconstruyen (por ejemplo, para dar valores de coma flotante) empleando el tamaño de etapa proporcionando los parámetros de red neuronal reconstruidos.
[0342] Los parámetros de red neuronal pueden ser, por ejemplo, pesos, sesgos, parámetros de normalización por lotes, etc.
[0343] Realizaciones preferidas
[0344] En una realización preferida, los códigos A1 a A5 son códigos de longitud variable que asignan palabras de código más cortas a números enteros con una magnitud menor.
[0345] En otra realización preferida, el código A2 o el código A3 es un código que mapea en primer lugar números enteros con signo s a números enteros sin signo u según una regla de mapeo M y después codifica los números enteros sin signo u usando un código A6 o A7, respectivamente.
[0346] En otra realización preferida, la regla de mapeo M mapea números enteros con signo s a números enteros sin signo u según la siguiente ecuación:
[0347] Si s <= 0: u = -s * 2,
[0348] de lo contrario (s>0): u = s * 2 - 1
[0349] El mapeo inverso correspondiente (que va a usarse en el decodificador) viene dado como:
[0350] Si u es par ((u & 1) == 0): s = -u/2,
[0351] de lo contrario ((u & 1) != 0): s = (u+1)/2
[0352] En otra realización preferida, los códigos A4 y A5 son iguales.
[0353] En otra realización preferida, el código A1 o el código A4 o el código A5 o el código A6 o el código A7 es un código de Golomb exponencial de orden k.
[0354] Obsérvese que un código de Golomb exponencial de orden k para codificar un número entero sin signo u viene dado de la siguiente manera:
[0355] mientras u >= (1 « k )
[0356] {
[0357] writeBlts(1, 0)
[0358] u -= 1 « k
[0359] k =1
[0361] }
[0362] writeBits(1, 1)
[0363] writeB¡ts(k, u)
[0364] La función writeBits(n,x) escribe los últimos n bits significativos de un número entero sin signo x en el flujo de bits.
[0365] En otra realización preferida, los parámetros k de algunos o todos los códigos de Golomb exponenciales implicados se señalizan en el flujo de bits.
[0367] En otra realización preferida, uno o más de los códigos A1 a A7 emplean codificación aritmética.
[0369] En otra realización preferida, los códigos A1, A6, y A7 son códigos de Golomb exponenciales de órdenes 2, 2, y 7, respectivamente.
[0371] En otra realización preferida según la realización preferida anterior, los códigos A4 y A5 son códigos de Golomb exponenciales del mismo orden k, y k se señaliza en el flujo de bits como un número entero sin signo de 4 bits que permite valores 0 <= k < 16.
[0373] En otra realización preferida, los códigos A4 y A5 son códigos de Golomb exponenciales de orden 7.
[0375] Como conclusión, realizaciones según la invención proporcionan un compromiso mejorado entre un rendimiento de compresión y una calidad visual y una baja latencia de codificación, lo cual conduce a una eficiencia de codificación mejorada. Algunas realizaciones también proporcionan una eficiencia de codificación adicional.
[0376] Diferentes realizaciones y aspectos de la invención se describen, por ejemplo, en los capítulos “ introducción”, “desviación adaptativa a la muestra”, “clasificación para PSAO”, “decodificador”, “codificador” y “algunos comentarios”, en los que características, funcionalidades y detalles del capítulo “desviación adaptativa a la muestra” pueden introducirse opcionalmente en cualquiera de las otras realizaciones.
[0378] Sin embargo, las características, funcionalidades y detalles descritos en cualquier otro capítulo también pueden introducirse, opcionalmente, en las realizaciones según la presente invención.
[0380] Además, las realizaciones descritas en los capítulos anteriormente mencionados pueden usarse de manera individual, y también pueden complementarse mediante cualquiera de las características, funcionalidades y detalles en otro capítulo.
[0382] Además, debe observarse que aspectos individuales descritos en el presente documento pueden usarse de manera individual o en combinación. Por tanto, pueden añadirse detalles a cada uno de dichos aspectos individuales sin añadir detalles a otro de dichos aspectos.
[0384] En particular, la invención se define por las reivindicaciones. Las realizaciones descritas en las reivindicaciones pueden complementarse opcionalmente mediante cualquiera de las características, funcionalidades y detalles tal como se describen en el presente documento, tanto de manera individual como en combinación.
[0386] También debe observarse que la presente divulgación describe, de manera explícita o implícita, características que pueden usarse en un codificador de vídeo (aparato para proporcionar una representación codificada de una señal de vídeo de entrada) y en un decodificador de vídeo (aparato para proporcionar una representación decodificada de una señal de vídeo basándose en una representación codificada de una señal de vídeo). Por tanto, cualquiera de las características descritas en el presente documento puede usarse en el contexto de un codificador de vídeo y en el contexto de un decodificador de vídeo.
[0387] Además, características y funcionalidades dadas a conocer en el presente documento con respecto a un método también pueden usarse en un aparato (configurado para realizar tal funcionalidad). Además, cualquier característica y funcionalidad dada a conocer en el presente documento con respecto a un aparato también puede usarse en un método correspondiente. Dicho de otro modo, los métodos dados a conocer en el presente documento pueden complementarse mediante cualquiera de las características y funcionalidades descritas con respecto a los aparatos.
[0389] Además, cualquiera de las características y funcionalidades descritas en el presente documento puede implementarse en hardware o en software, o usando una combinación de hardware y software, tal como se describirá en la sección “alternativas de implementación”.
[0391] Alternativas de implementación
[0393] Aunque algunos aspectos se describen en el contexto de un aparato, queda claro que estos aspectos también representan una descripción del método correspondiente, en el que un bloque o dispositivo corresponde a una etapa de método o una característica de una etapa de método. De manera análoga, los aspectos descritos en el contexto de una etapa de método también representan una descripción de un bloqueo o elemento o característica correspondiente de un aparato correspondiente. Algunas o la totalidad de las etapas de método pueden ejecutarse
por (o usando) un aparato de hardware, tal como, por ejemplo, un microprocesador, un ordenador programable o un circuito electrónico. En algunas realizaciones, una o más de las etapas de método más importantes pueden ejecutarse por un aparato de este tipo.
[0395] Dependiendo de determinados requisitos de implementación, realizaciones de la invención pueden implementarse en hardware o en software. La implementación puede realizarse usando un medio de almacenamiento digital, por ejemplo un disco flexible, un DVD, un Blu-Ray, un CD, una ROM, una PROM, una EPROM, una EEPROM o una memoria flash, que tiene señales de control legibles de manera electrónica almacenadas en el mismo, que actúan conjuntamente (o pueden actuar conjuntamente) con un sistema informático programable de tal manera que se realiza el método respectivo. Por tanto, el medio de almacenamiento digital puede ser legible por ordenador.
[0396] Algunas realizaciones según la invención comprenden un soporte de datos que tiene señales de control legibles de manera electrónica, que pueden actuar conjuntamente con un sistema informático programable, de tal manera que se realiza uno de los métodos descritos en el presente documento.
[0398] Generalmente, realizaciones de la presente invención pueden implementarse como un producto de programa informático con un código de programa, siendo el código de programa operativo para realizar uno de los métodos cuando se ejecuta el producto de programa informático en un ordenador. El código de programa puede estar almacenado, por ejemplo, en un soporte legible por máquina.
[0400] Otras realizaciones comprenden el programa informático para realizar uno de los métodos descritos en el presente documento, almacenado en un soporte legible por máquina.
[0402] Dicho de otro modo, una realización del método de la invención es, por tanto, un programa informático que tiene un código de programa para realizar uno de los métodos descritos en el presente documento, cuando se ejecuta el programa informático en un ordenador.
[0404] Una realización adicional de los métodos de la invención es, por tanto, un soporte de datos (o un medio de almacenamiento digital o un medio legible por ordenador) que comprende, registrado en el mismo, el programa informático para realizar uno de los métodos descritos en el presente documento. El soporte de datos, el medio de almacenamiento digital o el medio de registro son normalmente tangibles y/o no transitorios.
[0406] Un ejemplo adicional del método de la invención es, por tanto, un flujo de datos o una secuencia de señales que representa el programa informático para realizar uno de los métodos descritos en el presente documento. El flujo de datos o la secuencia de señales puede estar configurado, por ejemplo, para transferirse a través de una conexión de comunicación de datos, por ejemplo a través de Internet.
[0408] Una realización adicional comprende unos medios de procesamiento, por ejemplo un ordenador, o un dispositivo lógico programable, configurados o adaptados para realizar uno de los métodos descritos en el presente documento.
[0410] Una realización adicional comprende un ordenador que tiene instalado en el mismo el programa informático para realizar uno de los métodos descritos en el presente documento.
[0412] Un ejemplo adicional según la invención comprende un aparato o un sistema configurado para transferir (por ejemplo, de manera electrónica u óptica) un programa informático para realizar uno de los métodos descritos en el presente documento a un receptor. El receptor puede ser, por ejemplo, un ordenador, un dispositivo móvil, un dispositivo de memoria o similares. El aparato o sistema puede comprender, por ejemplo, un servidor de archivos para transferir el programa informático al receptor.
[0414] En algunas realizaciones, puede usarse un dispositivo lógico programable (por ejemplo, una matriz de compuertas programable en el campo) para realizar algunas o la totalidad de las funcionalidades de los métodos descritos en el presente documento. En algunas realizaciones, una matriz de compuertas programable en el campo puede actuar conjuntamente con un microprocesador con el fin de realizar uno de los métodos descritos en el presente documento. Generalmente, los métodos se realizan preferiblemente mediante cualquier aparato de hardware.
[0415] El aparato descrito en el presente documento puede implementarse usando un aparato de hardware, o usando un ordenador, o usando una combinación de un aparato de hardware y un ordenador.
[0417] El aparato descrito en el presente documento, o cualquier componente del aparato descrito en el presente documento, puede implementarse al menos parcialmente en hardware y/o en software.
[0419] Los métodos descritos en el presente documento pueden realizarse usando un aparato de hardware, o usando un ordenador, o usando una combinación de un aparato de hardware y un ordenador.
[0420] Los métodos descritos en el presente documento, o cualquier componente del aparato descrito en el presente documento, pueden realizarse al menos parcialmente mediante hardware y/o mediante software.
[0422] Las realizaciones descritas en el presente documento son simplemente ilustrativas de los principios de la presente invención. Se entiende que modificaciones y variaciones de las disposiciones y los detalles descritos en el presente documento resultarán evidentes para otros expertos en la técnica. Por tanto, se pretende limitarse únicamente por el alcance de las reivindicaciones de patente adjuntas y no por los detalles específicos presentados a modo de descripción y explicación de las realizaciones en el presente documento.
Claims (13)
1. REIVINDICACIONES
1. Aparato para decodificar, a partir de un flujo de datos, una secuencia de valores de números enteros que están ordenados de una manera estrictamente monótona, estando el aparato configurado para decodificar (204) a partir del flujo de datos un valor de número entero predeterminado (C[z]) ubicado en una posición predeterminada (z) de la secuencia de valores de números enteros;
decodificar a partir del flujo de datos una información que revela la posición predeterminada; y para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada,
decodificar (205), a partir del flujo de datos, una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1; y
para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada,
decodificar (207), a partir del flujo de datos, una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1.
2. Aparato según la reivindicación 1, configurado para decodificar (201) a partir del flujo de datos el número de valores de números enteros de la secuencia de valores de números enteros.
3. Aparato según cualquiera de las reivindicaciones 1 o 2, en el que el aparato está configurado para decodificar (202), a partir del flujo de datos, una tercera diferencia entre un rango de la posición predeterminada y una mitad redondeada al número entero del número de valores de números enteros; y calcular (203) la posición predeterminada basándose en la tercera diferencia y el número de valores de números enteros.
4. Aparato según la reivindicación 3, configurado para decodificar a partir del flujo de datos la tercera diferencia mediante
decodificar un primer número entero sin signo usando un tercer código de longitud variable; y recuperar la tercera diferencia mediante mapeo inverso a partir del primer número entero sin signo según una regla de mapeo inverso predefinida.
5. Aparato según la reivindicación 4, en el que la regla de mapeo inverso mapea números enteros sin signo a números enteros con signo de una manera que números enteros sin signo pares y números enteros sin signo impares se mapean a unos independientes de números enteros con signo menores de 0 y números enteros con signo mayores de 0, respectivamente, mapeándose cero a cero y de modo que, para cada número entero con signo, un primer número entero con signo mapeado al número entero sin signo respectivo es, en magnitud, mayor que o igual a un segundo número entero con signo mapeado a un número entero sin signo que sigue al número entero sin signo respectivo.
6. Aparato según cualquiera de las reivindicaciones 1 a 5, configurado para decodificar a partir del flujo de datos el valor de número entero predeterminado mediante
decodificar un segundo número entero sin signo mediante un quinto código de longitud variable; y recuperar el valor de número entero predeterminado mediante mapeo inverso a partir del segundo número entero sin signo según una regla de mapeo inverso predefinida adicional.
7. Aparato según la reivindicación 6, en el que la regla de mapeo inverso mapea números enteros sin signo a números enteros con signo de una manera que números enteros sin signo pares y números enteros sin signo impares se mapean a unos independientes de números enteros con signo menores de 0 y números enteros con signo mayores de 0, respectivamente, mapeándose cero a cero y de modo que, para cada número entero con signo, un primer número entero con signo mapeado al número entero sin signo respectivo es, en magnitud, mayor que o igual a un segundo número entero con signo mapeado a un
número entero sin signo que sigue al número entero sin signo respectivo.
8. Aparato según cualquiera de las reivindicaciones 1 a 7, configurado para reconstruir la secuencia decodificada de valores de números enteros para dar una pluralidad de valores de coma flotante a partir de un conjunto de niveles de cuantificación que se definen por la secuencia de valores de números enteros y un parámetro de cuantificación de coma flotante.
9. Aparato según la reivindicación 8, configurado para
decodificar a partir del flujo de datos, para cada uno de la pluralidad de valores de coma flotante, un índice de cuantificación que apunta al valor de número entero asociado dentro de la secuencia de valores de números enteros que, según el parámetro de cuantificación de coma flotante, está asociado con un nivel de cuantificación al que se cuantificó el valor de coma flotante respectivo.
10. Aparato según la reivindicación 9, configurado para decodificar el índice de cuantificación a partir del flujo de datos basándose en una diferencia de rango de un primer rango de la posición del valor de número entero asociado dentro de la secuencia de valores de números enteros y el rango de la posición predeterminada.
11. Aparato según cualquiera de las reivindicaciones 9 o 10, configurado para decodificar a partir del flujo de datos la diferencia de rango desbinarizando el número usando un código de binarización a partir de una cadena binaria de uno o más segmentos y realizando decodificación aritmética binaria adaptativa al contexto del uno o más segmentos.
12. Aparato para codificar, en un flujo de datos, una secuencia de valores de números enteros que están ordenados de una manera estrictamente monótona, estando el aparato configurado para codificar (104) en el flujo de datos un valor de número entero predeterminado (C[z]) ubicado en una posición predeterminada (z) de la secuencia de valores de números enteros;
codificar en el flujo de datos una información que revela la posición predeterminada; y
para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada (z),
calcular (105) una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1; y codificar (106) la primera diferencia en el flujo de datos; y
para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada,
calcular (107) una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1; y codificar (108) la segunda diferencia en el flujo de datos.
13. Método para decodificar, a partir de un flujo de datos, una secuencia de valores de números enteros que están ordenados de una manera estrictamente monótona, que comprende decodificar a partir del flujo de datos un valor de número entero predeterminado (C[z]) ubicado en una posición predeterminada (z) de la secuencia de valores de números enteros; y
para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada,
decodificar, a partir del flujo de datos, una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1;
decodificar a partir del flujo de datos una información que revela la posición predeterminada; y para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada,
decodificar, a partir del flujo de datos, una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1.
Método para codificar, en un flujo de datos, una secuencia de valores de números enteros que están ordenados de una manera estrictamente monótona, que comprende codificar en el flujo de datos un valor de número entero predeterminado (C[z]) ubicado en una posición predeterminada (z) de la secuencia de valores de números enteros;
codificar en el flujo de datos una información que revela la posición predeterminada; y
para cada posición de la secuencia de valores de números enteros que precede a la posición predeterminada (z),
calcular una primera diferencia entre un valor de número entero que reside inmediatamente después de la posición respectiva y el valor de número entero en la posición respectiva, reducida en 1; y codificar la primera diferencia en el flujo de datos; y
para cada posición de la secuencia de valores de números enteros que está ubicada después de la posición predeterminada,
calcular una segunda diferencia entre el valor de número entero en la posición respectiva y un valor de número entero que reside inmediatamente antes de la posición respectiva, reducida en 1; y codificar la segunda diferencia en el flujo de datos.
Programa informático que tiene un código de programa para realizar, cuando se ejecuta en un ordenador, métodos según cualquiera de las reivindicaciones 13 o 14.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP20181776 | 2020-06-23 | ||
| PCT/EP2021/067217 WO2021260046A1 (en) | 2020-06-23 | 2021-06-23 | Apparatuses for encoding and decoding a sequence of integer values, methods for encoding and decoding a sequence of integer values and computer program for implementing these methods |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES3050734T3 true ES3050734T3 (en) | 2025-12-22 |
Family
ID=71138608
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES21734161T Active ES3050734T3 (en) | 2020-06-23 | 2021-06-23 | Apparatuses for encoding and decoding a sequence of integer values, methods for encoding and decoding a sequence of integer values and computer program for implementing these methods |
Country Status (8)
| Country | Link |
|---|---|
| US (10) | US12431916B2 (es) |
| EP (10) | EP4169166B1 (es) |
| JP (2) | JP7617153B2 (es) |
| KR (2) | KR20250021656A (es) |
| CN (1) | CN116018758A (es) |
| ES (1) | ES3050734T3 (es) |
| PL (1) | PL4169166T3 (es) |
| WO (1) | WO2021260046A1 (es) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| PL4169166T3 (pl) * | 2020-06-23 | 2026-02-23 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Urządzenia do enkodowania i dekodowania ciągu wartości liczb całkowitych, sposoby enkodowania i dekodowania ciągu wartości liczb całkowitych oraz program komputerowy do implementacji tych sposobów |
| CN120825182B (zh) * | 2025-09-12 | 2026-03-10 | 北京市腾河智慧能源科技有限公司 | 电能表数据压缩方法及系统、电子设备、存储介质 |
| CN121644825B (zh) * | 2026-02-05 | 2026-04-24 | 昇显微电子(苏州)股份有限公司 | 一种基于有界整数序列和数据流融合的编码解码方法及装置 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7447372B2 (en) * | 2005-03-29 | 2008-11-04 | Broadcom Corporation | System(s), method(s), and apparatus for decoding exponential Golomb codes |
| US7363225B2 (en) * | 2005-06-23 | 2008-04-22 | Microsoft Corporation | Compressing language models with Golomb coding |
| RS64604B1 (sr) * | 2011-06-16 | 2023-10-31 | Ge Video Compression Llc | Entropijsko kodiranje razlika vektora kretanja |
| US9191670B2 (en) * | 2012-01-17 | 2015-11-17 | Qualcomm Incorporated | Throughput improvement for CABAC coefficient level coding |
| KR101726572B1 (ko) * | 2013-05-22 | 2017-04-13 | 세종대학교산학협력단 | 무손실 이미지 압축 및 복원 방법과 이를 수행하는 장치 |
| PL4169166T3 (pl) * | 2020-06-23 | 2026-02-23 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Urządzenia do enkodowania i dekodowania ciągu wartości liczb całkowitych, sposoby enkodowania i dekodowania ciągu wartości liczb całkowitych oraz program komputerowy do implementacji tych sposobów |
-
2021
- 2021-06-23 PL PL21734161.9T patent/PL4169166T3/pl unknown
- 2021-06-23 EP EP21734161.9A patent/EP4169166B1/en active Active
- 2021-06-23 WO PCT/EP2021/067217 patent/WO2021260046A1/en not_active Ceased
- 2021-06-23 JP JP2022580206A patent/JP7617153B2/ja active Active
- 2021-06-23 ES ES21734161T patent/ES3050734T3/es active Active
- 2021-06-23 EP EP25194784.2A patent/EP4622114A3/en active Pending
- 2021-06-23 CN CN202180052109.8A patent/CN116018758A/zh active Pending
- 2021-06-23 KR KR1020257003586A patent/KR20250021656A/ko active Pending
- 2021-06-23 EP EP25194943.4A patent/EP4622116A3/en active Pending
- 2021-06-23 EP EP25194942.6A patent/EP4622115A3/en active Pending
- 2021-06-23 EP EP25194769.3A patent/EP4622111A3/en active Pending
- 2021-06-23 EP EP25194782.6A patent/EP4622112A3/en active Pending
- 2021-06-23 EP EP25194783.4A patent/EP4622113A3/en active Pending
- 2021-06-23 EP EP25194945.9A patent/EP4622118A3/en active Pending
- 2021-06-23 EP EP25194946.7A patent/EP4622119A3/en active Pending
- 2021-06-23 EP EP25194944.2A patent/EP4622117A3/en active Pending
- 2021-06-23 KR KR1020237001743A patent/KR102765459B1/ko active Active
-
2022
- 2022-12-21 US US18/069,342 patent/US12431916B2/en active Active
-
2024
- 2024-12-27 JP JP2024232630A patent/JP2025060972A/ja active Pending
-
2025
- 2025-09-09 US US19/323,715 patent/US20250385688A1/en active Pending
- 2025-09-09 US US19/323,944 patent/US20260012194A1/en active Pending
- 2025-09-09 US US19/323,808 patent/US20260012192A1/en active Pending
- 2025-09-09 US US19/323,867 patent/US20250385689A1/en active Pending
- 2025-09-09 US US19/323,920 patent/US20250385691A1/en active Pending
- 2025-09-09 US US19/323,952 patent/US20260012195A1/en active Pending
- 2025-09-09 US US19/323,843 patent/US20260012193A1/en active Pending
- 2025-09-09 US US19/323,934 patent/US20250385692A1/en active Pending
- 2025-09-09 US US19/323,895 patent/US20250385690A1/en active Pending
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2638093T3 (es) | Codificación y decodificación de coeficiente de transformada | |
| ES2297083T3 (es) | Codificacion entropica por adaptacion de la codificacion entre modos por longitud de ejecucion y por nivel. | |
| Malvar | Adaptive run-length/Golomb-Rice encoding of quantized generalized Gaussian sources with unknown statistics | |
| US9847791B2 (en) | System and method for compressing data using asymmetric numeral systems with probability distributions | |
| ES2993481T3 (en) | Adaptive grouping of parameters for enhanced coding efficiency | |
| ES2965423T3 (es) | Codificador de audio | |
| JP2017514349A5 (es) | ||
| US20260012195A1 (en) | Apparatuses for encoding and decoding a sequence of integer values, methods for encoding and decoding a sequence of integer values and computer program for implementing these methods | |
| CN101292427A (zh) | 连续细分的点阵矢量量化 | |
| JP7046325B2 (ja) | デジタルデータ圧縮のための方法及びデバイス | |
| CN101310291A (zh) | 用于视频帧缓冲压缩的系统和方法 | |
| US10110931B2 (en) | Variable length coding and decoding methods and devices for grouped pixels | |
| US10212421B2 (en) | Method and device for digital data compression with sign bit removal | |
| JP4382090B2 (ja) | 符号化装置、符号化方法およびコードブック | |
| US7683810B2 (en) | Code design with decreased transition density and reduced running digital sum | |
| WO2004080080A1 (en) | Apparatus and method for compression and decompression of digital data | |
| You | Entropy and Coding | |
| Fischer et al. | Enumeration Encoding and Decoding Algorithms for Pyramid Trellis Codes |