ES2331876T3 - Procedimiento y sistema de cuantificacion vectorial multi-velocidad de enrejado de una señal. - Google Patents

Procedimiento y sistema de cuantificacion vectorial multi-velocidad de enrejado de una señal. Download PDF

Info

Publication number
ES2331876T3
ES2331876T3 ES03727093T ES03727093T ES2331876T3 ES 2331876 T3 ES2331876 T3 ES 2331876T3 ES 03727093 T ES03727093 T ES 03727093T ES 03727093 T ES03727093 T ES 03727093T ES 2331876 T3 ES2331876 T3 ES 2331876T3
Authority
ES
Spain
Prior art keywords
list
code
vector
index
codes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES03727093T
Other languages
English (en)
Inventor
Bruno Bessette
Stephane Ragot
Jean-Pierre Adoul
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VoiceAge Corp
Original Assignee
VoiceAge Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=29589087&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2331876(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by VoiceAge Corp filed Critical VoiceAge Corp
Application granted granted Critical
Publication of ES2331876T3 publication Critical patent/ES2331876T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • G10L19/038Vector quantisation, e.g. TwinVQ audio
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/10Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/002Dynamic bit allocation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/06Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0007Codebook element generation
    • G10L2019/0008Algebraic codebooks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Transmission Systems Not Characterized By The Medium Used For Transmission (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un método para codificar una señal de fuente, para la transmisión o almacenamiento utilizando cuantificación reticular de multivelocidad, comprendiendo dicho método los pasos de: i) proporcionar un vector de fuente x que representa una trama de ejemplos de la señal de fuente; ii) proporcionar una lista de códigos de base C derivada de un reticulado delta de puntos; íii) asociar al vector de fuente x un punto reticular y en dicho reticulado delta; caracterizado por el hecho de que - si el punto reticular y está incluido en la lista de códigos de base C, realizando el siguiente paso iv): iv) indexar el punto reticular y en la lista de códigos de base C generando índices de cuantificación, y finalizar el método; y - si el punto reticular y no está incluido en la lista de códigos de base C, realizando las siguientes pasos v), vi) y vii): v) ampliar la lista de códigos de base C, generando una lista de códigos ampliada; vi) asociar al punto reticular y un vector de códigos c a partir de la lista de códigos ampliada; y vii) indexar el punto reticular y en la lista de códigos ampliada generando los índices de cuantificación; donde los índices de cuantificación forman una representación cuantificada del vector de fuente x.

Description

Procedimiento y sistema de cuantificación vectorial multi-velocidad de enrejado de una señal.
Campo de la invención
La presente invención se refiere a la codificación y descodificación de señales. Más específicamente, la presente invención se refiere a un método y sistema para la cuantificación vectorial reticular de multivelocidad de una determinada señal utilizada, por ejemplo, en los sistemas de transmisión y almacenamiento digital.
\vskip1.000000\baselineskip
Antecedentes de la invención
Una técnica anterior clásica para la codificación digital de señales de voz y audio es transformar la codificación, por lo que la señal que se codifica se divide en bloques de muestras denominadas tramas, y donde se procesa cada trama por una transformación ortogonal lineal, por ejemplo la transformación discreta de Fourier o la transformación de Coseno discreta, para generar los coeficientes de transformación, los cuales quedan cuantificados a continua-
ción.
En la figura 1 de los dibujos adjuntos se muestra una trama de trabajo de alto nivel para la transformación de la codificación. En esta trama de trabajo, se aplica una transformación T a un codificador en una trama de entrada que proporciona coeficientes de transformación. Los coeficientes de transformación se cuantifican con un cuantificador Q para obtener un índice o un conjunto de índices para caracterizar los coeficientes de transformación cuantificados de la trama. En general, los índices suelen codificarse en códigos binarios los cuales bien pueden almacenarse en forma binaria en un medio de almacenamiento, bien transmitirse por un canal de comunicación. En un descodificador, los códigos binarios recibidos del canal de comunicación o recuperados del medio de almacenamiento se utilizan para reconstruir los coeficientes de transformación cuantificados con un descodificador del cuantificador Q^{-1}. A continuación se aplica la transformación inversa T^{-1} a estos coeficientes de transformación cuantificados para reconstruir la trama sintetizada.
En la cuantificación de vector (VQ), se bloquean conjuntamente varias muestras o coeficientes en vectores, y cada vector es aproximado (cuantificado) con una entrada de una lista de códigos. La entrada seleccionada para cuantificar el vector de entrada suele ser la adyacente más próxima en la lista de códigos en función del criterio de distancia. Añadiendo más entradas en una lista de códigos se incrementa la velocidad de los bits y la complejidad pero se reduce el promedio de distorsión. Se hace referencia a las entradas de la lista de códigos como vectores de códigos.
Para adaptarse a las características cambiantes de una fuente, se suele utilizar normalmente la asignación de bit adaptiva. Con la asignación de bit adaptiva, se podrán utilizar distintos tamaños de listas de códigos para cuantificar un vector de fuente. En la codificación de transformación, la cantidad de bits asignados a un vector de fuente suele depender de la energía del vector en relación a otros vectores dentro de la misma trama, sujeta a un número máximo de bits disponibles para cuantificar todos los coeficientes. En las figuras 2a y 2b se detallan los bloques de cuantificación de la figura 1 en el marco general de un cuantificador de multivelocidad. Este cuantificador de multivelocidad utiliza varias listas de códigos que suelen tener distintas velocidades de bits para cuantificar un vector de fuente x. Este vector de fuente se suele obtener aplicando una transformación a la señal y tomando todo o un subconjunto de los coeficientes de transformación.
En la figura 2(a) se representa un codificador de un cuantificador de multivelocidad, indicado por Q, que selecciona un número de la lista de códigos n y un índice del vector de códigos i para caracterizar una representación cuantificada y para el vector de fuente x. El número de la lista de códigos n especifica la lista de códigos seleccionada por el codificador mientras que el índice i idéntica el vector de códigos seleccionado en esta lista de códigos específica. En general, puede aplicarse una técnica de codificación adecuada sin pérdidas a n y i en bloques E_{n} y E_{i}, respectivamente, para reducir el promedio de la tasa de transferencia de datos del número de la lista de códigos codificado n_{E} y el índice i_{E} anterior a una multiplexación (MUX) de los mismos para un almacenamiento o transmisión a lo largo de un canal de comunicación.
En la figura 2(b) se muestran operaciones de descodificación del cuantificador de multivelocidad. En primer lugar, los códigos binarios n_{E} e i_{E} se desmultiplexan (DEMUX) y sus códigos sin pérdidas se descodifican en bloques D_{n} y D_{i}, respectivamente. El número de la lista de códigos recuperada n y el índice i son conducidos al decodificador del cuantificador de multivelocidad, que se indica con Q-1, que los utiliza para recuperar la representación de cuantificación y del vector x de la fuente. Los valores distintos de n dan lugar a diferentes asignaciones de datos, y de forma equivalente a diferencias de tasas de transmisión de datos, para el índice i. La tasa de transferencia de datos de la lista de códigos dada en bits por dimensión se define como la relación entre el número de bits asignado al vector de una fuente y la dimensión del mismo.
La lista de códigos puede ser construida con la utilización de varios enfoques. Un enfoque común es aplicar un algoritmo de entrenamiento (por ej. el significado del algoritmo k-) para optimizar las entradas de la lista de códigos en función de la fuente de distribución. Este enfoque produce una desestructuración de la lista de códigos, lo cual típicamente se tiene que almacenar y buscar exhaustivamente para cada vector de fuente para cuantificar. Las limitaciones de este enfoque están de este modo en sus requerimientos de memoria y en su complejidad computacional, lo cual se incrementa exponencialmente con la tasa de transferencia de datos de la lista de códigos. Estas limitaciones son incluso amplificadas si un esquema de cuantificación de multivelocidad se basa en una listas de códigos desestructurado, porque en general se utiliza una lista de códigos específica para cada posible asignación de bit.
Una alternativa es utilizar listas de códigos forzadas o estructuradas, lo cual reduce la complejidad de búsqueda y en muchos casos los requerimientos de almacenamiento.
Dos instancias de cuantificación de vector estructurado serán ahora discutidos en más detalles: multietapa y cuantificación de vector reticular.
En la cuantificación de vector multietapa, se cuantifica un vector x de una fuente con la primera etapa de una lista de códigos C_{1} dentro de un vector de códigos y_{1}. Con el objetivo de reducir el error de cuantificación, el error residual e_{1} = x - y_{1} de la primera etapa, lo cual es la diferencia entre la entrada del vector x y la primera etapa del vector de códigos seleccionado y_{1}, es entonces, cuantificado con una segunda etapa de la lista de códigos C_{2} dentro de un vector de códigos y_{2}. Esta proceso puede ser iterado con subsiguientes etapas hasta la etapa final, donde el error residual e_{n-1} = x - y_{n-1} de la etapa (n - 1)th se cuantifica con una etapa nth de la lista de códigos C_{n} dentro de un vector de códigos y_{n}.
Cuando la etapa n es utilizada (n \geq 2), la reconstrucción puede entonces ser escrita como una suma de los vectores de códigos y = y_{1} + ... + y_{n}, donde y_{1} es una entrada de la etapa lth en la lista de códigos C_{1} para l =1, ..., n. El promedio de la tasa de transferencia de datos es la suma de la tasa de transferencia de datos de todas las n de las listas de códigos.
En la cuantificación de vector reticular, también llamada retícula VQ la algebraico VQ para acortarlo, la lista de códigos es formada seleccionando un subconjunto de puntos reticulares en una dada retícula.
\vskip1.000000\baselineskip
Una retícula es una estructura lineal en N dimensiones donde todos los puntos de vectores pueden ser obtenidos por combinaciones de números enteros de N basadas en vectores, que es, como una suma cargada de vectores de base con la señalización de los pesos de los números enteros. En la figura 3 se muestra un ejemplo en dos dimensiones, donde los vectores básicos son v_{1} y v_{2}. La retícula utilizada en este ejemplo se conoce como la retícula hexagonal que se indica con A_{2}. Todos los puntos seleccionados con la X en esta figura puede ser obtenidos como
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
1
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
donde y es un punto reticular, y k_{1} y k_{2} pueden ser cualquier número entero. Véanse que en la figura 3 se muestra solo un subsistema de la red, desde que la retícula se extiende a si misma infinitamente. También se puede escribir la ecuación 1 en forma de matriz
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
2
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
donde los vectores básicos v_{1} = [v_{11} v_{12}] y v_{2} = [v_{21} v_{22}] forman la fila del generador de matriz. Un vector reticular es entonces, obtenido tomando una combinación de números enteros de esta fila de vectores.
\vskip1.000000\baselineskip
Cuando se elige una retícula para construir la cuantificación de una lista de códigos, se selecciona un subsistema de puntos para obtener una lista de códigos con un dado número de bits (finito). Esto se hace en general con el empleo de una técnica llamada modelado. El modelado se realiza truncando la retícula según un límite de modelado. El límite del modelado es típicamente centrado en el origen pero no viene al caso, y quizás puedan ser para instancias rectangulares, esféricas, o piramidales. En la figura 3 se muestra un ejemplo con un límite de modelado esférico.
La ventaja de utilizar una retícula es la existencia de rápidos algoritmos de búsqueda dentro de las listas de códigos los cuales pueden reducir significantemente la complejidad si se compara con las listas de códigos desestructuradas en determinar el vecino más próximo de un vector x de una fuente entre todos los puntos reticulares dentro de la lista de códigos. No hay también virtualmente necesidad de almacenar los puntos reticulares puesto que pueden ser obtenidos de la matriz de generador. El algoritmo de búsqueda rápida implica generalmente en completar el número entero más cercano de los elementos de x conforme a ciertos apremios tales que la suma de todos los elementos redondeados es uniforme o impar, o igual a un cierto número entero en aritmética modular. Una vez cuantificado el vector, o sea, una vez que se determina el punto reticular más próximo dentro de las listas de códigos, usualmente una operación más complexa consiste en indexar el punto reticular seleccionado.
\vskip1.000000\baselineskip
Una clase en particular de búsqueda rápida de lista de códigos de listay indexando algoritmos implica el concepto de líderes, los cuales se describe en detalle en las siguientes referencias bibliográficas:
\bullet C. Lamblin and J.-P. Adoul. Algorithme de quantification vectorielle sphérique à partir du réseau de Gosset d'ordre 8. Ann. Télécommun., vol. 43, no. 3-4, pp. 172-186, 1988 (Lamblin, 1988);
\bullet J.-M. Moureaux, P. Loyer, and M. Antonini. Low-complexity indexing method for Zn and Dn lattice quantizers. IEEE Trans. Communications, vol. 46, no. 12, Dec. 1998 (Moureaux, 1998); y en
\bullet P. Rault and C. Guillemot. Indexing algorithms for Zn, An, Dn, and Dn++ lattice vector quantizers. IEEE Transactions on Multimedia, vol. 3, no. 4, pp. 395-404, Dec. 2001 (Rault, 2001).
\vskip1.000000\baselineskip
Un líder es un punto reticular con componentes clasificados, por convención, en orden decreciente. Un líder absoluto es un líder con todos los componentes no negativos. Un líder señalado es un líder con las señales en cada componente. Por lo general la estructura reticular impone restricciones ante las muestras de un punto reticular, y así ante las muestras de un líder. El concepto de líderes será explicado con más detalles a continuación.
\vskip1.000000\baselineskip
Una red utilizada con frecuencia en cuantificación de vector es la red Gosset en 8 dimensiones, que se indica con RE_{8}. Cualquier punto reticular 8-dimensional y en RE_{8} puede ser generado por
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
3
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
donde k_{1}, k_{2}, ..., k_{8} son números enteros señalados y G_{RE8} es el generador de matriz, definido como
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
4
\newpage
Las filas de vectores v_{1}, v_{2}, ..., v_{8} son los vectores básicos de la red. Se puede comprobar fácilmente que lo contrario del generador de la matriz G_{RE8} es
\vskip1.000000\baselineskip
5
\vskip1.000000\baselineskip
Esta matriz inversa es útil para recuperar la expansión básica de y:
\vskip1.000000\baselineskip
6
\vskip1.000000\baselineskip
Es bien sabido que las redes consisten en un sistema infinito de esferas integradas en las cuales permanecen todos los puntos de red. Estas esferas se refieren a menudo como líneas de comando. Puntos reticulares en una esfera en RE_{8} puede ser generada desde uno de los varios líderes por permutación de sus componentes señalados. Todas las permutaciones de los componentes de los líderes son puntos reticulares con la misma norma, y caen así en la misma línea de comando de red. Los líderes son por lo tanto útiles para enumerar sucintamente las líneas de comando de una red. De hecho, los puntos reticulares situados en líneas de comando cerca del origen se pueden obtener de un número muy pequeño de líderes. Solamente se requiere líderes absolutos y apremios de muestra para generar todos los puntos reticulares en una línea de comando.
Para diseñar una lista de códigos RE_{8}, un subsistema finito de puntos de red pueden ser seleccionado explotando la geometría intrínseca de la red, especialmente su estructura de línea de comando. Como descrito en (Lamblin, 1988), el /th línea de comando de RE_{8} tiene un radio \sqrt{8l} donde l es un número entero no negativo. Las líneas de comando de radios elevados abarcan más puntos reticulares que las shells de radios más bajos. Es posible enumerar todos los puntos de una dada línea de comando utilizando líderes absolutos y señalados, observando que hay un número fijo de líderes en una cáscara y que el resto de los puntos del enrejado en la cáscara son obtenidos por permutaciones de los componentes firmados del líder, con algunas restricciones en las muestras.
En la retícula esférica VQ, es suficiente reordenar por orden decreciente los componentes de x y después realizar una búsqueda del vecino-cercano entre los líderes que definen la lista de códigos para determinar al vecino más cercano de un vector x de la fuente entre todos los puntos reticulares en la lista de códigos. El índice del líder más cercano y el índice de permutación obtenido indirectamente de la operación que ordena en x se envían entonces al decodificador, que puede reconstruir el análogo cuantificado de x desde esta información. Por lo tanto, el concepto de líderes permite una estrategia conveniente de la indexación de direcciones, donde un punto reticular se puede describir por una compensación de la cardinalidad que refiere a un líder señalado y a un índice de permutación que refieren al índice relativo de una permutación del líder señalado.
De acuerdo con la estructura de una retícula, y en la enumeración de la retícula en términos de líderes absolutos y señalados, es posible construir una lista de códigos conservando solamente las líneas de comando de radio más bajos, y posiblemente terminando la lista de códigos con algunos líderes adicionales de líneas de comando de radio más altos. Referimos a esta clase de generación de lista de códigos reticular como retícula en forma casi esférica. Este acercamiento se utiliza en M. Xie y J. -P. Adoul, cuantificación de vector algebraico integrado (EAVQ) con el uso a la codificación de audio de banda ancha, Conferencia Internacional de sobre Acústica IEEE, Discurso, y tratamiento de señales (ICASSP), Atlanta, GA, U.S.A, vol. 1, pp. 240-243, 1996 (Xie, 1996).
Para RE_{8}, los líderes absolutos en líneas de comando de radio 0 y \surd8 se muestran abajo.
\newpage
Líderes absolutos para la línea de comando del radio 0
[0 0 0 0 0 0 0 0]
\vskip1.000000\baselineskip
Líderes absolutos para la línea de comando del radio \surd8
[22000000] y [1 1 1 1 1 1 1 1]
\vskip1.000000\baselineskip
Un listado más completo para las líneas de comando de radio bajo, para el caso específico de RE_{8}, se puede encontrar en Lamblin (1988).
Para que la cuantificación de la retícula sea utilizada en codificación transformada con la asignación adaptante de bits, es deseable construir listas de códigos reticulares multivelocidad. Una solución posible consiste en explotar la enumeración de una retícula en términos de líderes en una vía similar como en Xie (1996). Según lo explicado en Xie, un cuantificador de línea de comando basado en líder multivelocidad puede ser diseñado con por ejemplo:
\bullet
listas de códigos algebraicas integradas, por lo que las listas de códigos de baja tasa de transferencia sean subconjuntos de listas de códigos de alta tasa, o
\bullet
las listas de códigos algebraicas jerarquizadas, por lo que las listas de códigos multivelocidad no se traslapen sino que son complementarias en una manera similar como jerarquía de las muñecas rusas.
\vskip1.000000\baselineskip
En el caso específico de Xie, la cuantificación de retícula multi-tasa utiliza seis de las listas de códigos nombradas Q_{0}, Q_{1}, Q_{2}, ..., Q_{5}, donde las últimas cinco listas de códigos están integradas, es decir Q_{1} \subset Q_{2} \subset ... \subset Q_{5}. Estas listas de códigos son esencialmente derivadas de una retícula 8-dimensional RE_{8}. Siguiendo los apuntes de Xie, Q_{n}, se refiere a la lista de códigos nto RE_{8}. La asignación de bits de la lista de códigos Q_{n} es 4n bits correspondiente a las entradas 2^{4n}. La tasa de bits de la lista de código definida por el cociente entre el número de bits asignados a un vector fuente y la dimensión del vector fuente, y en la cuantificación RE_{8}, la dimensión del vector fuente siendo 8, la tasa de bits de la lista de código de Q_{n} es 4n/8 = n/2 bits por dimensión.
Con la técnica de Xie, la tasa de bits de la lista de códigos no puede exceder 5/2 bits por dimensión. Debido a esta limitación, se necesita aplicar un procedimiento para saturar los valores atípicos. Un valor atípico se define como un punto x en el espacio que tiene el punto adyacente más próximo y en el reticulado RE_{8} el cual no está en una de las listas de códigos multi-tasa Q_{n}. En Xie, tales puntos son reducidos proporcionalmente por un factor g > 1 hasta que x/g deje de ser un valor atípico. Al parecer el uso de g puede dar lugar a grandes errores de cuantificación. Este problema es fija en Xie (1996) normalizando el vector fuente antes de la cuantificación de la retícula multi-tasa.
\vskip1.000000\baselineskip
Hay desventajas y limitaciones en la técnica de la cuantificación multi-tasa de Xie, que incluyen:
1. La saturación del valor atípico es generalmente una carga del calculo. Además, la saturación puede degradar perceptiblemente el funcionamiento de la cuantificación (por lo tanto calidad) en el caso de grandes valores atípicos.
2. La técnica maneja valores atípicos con la saturación y no permite asignar más de 20 bits por vector 8-dimensional. Esto puede ser una desventaja en la codificación transformada, puesto que los vectores de gran energía (que son más probables de ser en valores atípicos) serán cuantificados normalmente con una pequeña distorsión para maximizar calidad, implicándola será posible utilizar una lista de códigos con bastantes bits asignados a un vector específico.
3. Las listas de códigos Q_{2}, Q_{3}, Q_{4} y Q_{5} de 8, 12, 16 y 20 bits son especificadas con 3, 8, 23 y 73 líderes absolutos, respectivamente. Puesto que los requisitos de almacenamiento y la complejidad de la búsqueda están estrechamente vinculados al número de líderes absolutos, la complejidad de estas listas de códigos reticulares estalla con el aumento de la tasa de transferencia de datos de la lista de códigos.
4. El funcionamiento de las listas de códigos integrados es levemente peor que las listas de códigos sin traslapo (es decir jerarquizadas).
\vskip1.000000\baselineskip
Otra clase de formato de retícula, en comparación con el formato casi esférico es el formato Voronoi, que se describe en J.H. Conway and N.J.A. Sloane, A fast encoding method for lattice codes and quantizers, IEEE Trans. Inform. Theory, vol. IT-29, no. 6, pp. 820-824, Nov. 1983 (Conway, 1983). Esto confía en el concepto de región de Voronoi descrito por instancia en A. Gersho y R.M. Gray, Vector Quantization and Signal Compression, KluwerAcademic Publishers, 1992 (Gersho, 1992). En el caso específico de una lista de códigos retucular, una región de Voronoi es una región del espacio donde todos los puntos en N - espacio dimensional están más cerca a un punto dado de la retícula que cualquier otro punto en la retícula. Cada punto reticular tiene región una de Voronoi cerrada asociada que incluye también los puntos extremos y equidistantes a los puntos reticulares vecinos. En una retícula dada, todas las regiones de Voronoi tienen el mismo formato, lo que significa que son congruentes. Este no es el caso de una lista de códigos desestructurada.
Una lista de códigos de Voronoi es un subsistema de una retícula tal que todos los puntos de una lista de códigos caen dentro de una región del espacio con el mismo formato como la región de Voronoi de la retícula, apropiadamente ampliado y traducido. Para ser más preciso, una lista de códigos de Voronoi V^{(r)} derivada de una retícula \Lambda en dimensión N se define como
7
donde r es un parámetro de un número entero no-negativo que se definirá detalladamente más adelante, V_{\Lambda}(0) es la región Voronoi de \Lambda alrededor de la origen, y un adecuado N-dimensional ajuste de vector. Se interpreta la ecuación 7 como sigue: "la lista de códigos de Voronoi V^{(r)} es define como todos los puntos de la retícula \Lambda incluidos en la región del espacio N-dimensional dentro de una región Voronoi ampliada y convertida V_{\Lambda}(0), con un factor de escala m = 2^{r} y el ajuste del vector a". Con esta definición, la tasa de transferencia de datos de la lista de códigos de V^{(r)} es r bits por dimensión. El papel de a es fijar lazos, es decir, para prevenir que cualquier punto reticular se caiga en la región de formato 2^{r}V_{\Lambda}(0) + a.
En la figura 4 se muestra la codificación Voronoi, las regiones Voronoi, y el embaldosado de las regiones de Voronoi en la retícula hexagonal de dos dimensiones A_{2}. El punto o se refiere a la origen. Ambos puntos o y z caen dentro del mismo límite marcado con líneas discontinuas. Este límite es actualmente una región Voronoi de A_{2} ampliada por m = 2 y ligeramente traducida hasta la derecha para esquivar los puntos reticulares sobre la región límite. hay en total 4 puntos reticulares marcado con tres puntos (\cdot) y una señal plus (+) dentro del límite que comprende o y z. En general cada región contiene m^{N} puntos. Esto se muestra en la figura 4 que el mismo patrón, una región Voronoi de A_{2} ampliada por m = 2, se duplica varias veces. Este proceso se llama teselar. Para instancia, los puntos o' y z' pueden ser visualizados como equivalentes o y z, respectivamente, con respecto a la teselación. El punto z' puede ser escrito como z' = o' + z donde o' es un punto del 2A_{2}. Los puntos del 2A_{2} se muestran además con señales en la figura 4. En general, todo el punto reticular puede ser generado teselando todas las traducciones posibles de una lista de códigos de Voronoi por puntos de los puntos reticulares ampliados por m.
\vskip1.000000\baselineskip
Tal y como se describe en D. Mukherjee y S.K. Mitra, Vector set-partitioning with successive refinement Voronoi lattice VQ for embedded wavelet image coding, Proc. ICIP, Part I, Chicago, IL, Oct. 1998, pp. 107-111 (Mukherjee, 1998), la códificación de Voronoi puede ser utilizada para extender la cuantificación del punto reticular por sucesivos refinamientos. La técnica multietapa de Mukherjee produce cuantificación de multivelocidad con descripciones granulares refinadas después de cada refinamiento. Esta técnica, la cual se podría utilizar para cuantificación de multivelocidad en transformación de codificación, posee varias limitaciones:
1. La etapa de cuantificación se disminuye después de cada sucesivo refinamiento, y por lo tanto no puede alcanzar la eficiencia con elevado valor atípico. De hecho, si un elevado valor atípico ocurre en la primera etapa, las etapas sucesivas no podrán reducir eficientemente el error resultante, porque ellos están diseñados para reducir únicamente el ruido granular. El desempeño en la primera etapa es por lo tanto crítico.
2. La propiedad de sucesivos refinamientos implica limitaciones en los sucesivas etapas de cuantificación. Esto limita el desempeño de la cuantificación.
\vskip1.000000\baselineskip
Esto se conoce más a fondo de acuerdo con Y. Zhang et al. "An Improvement Image Vector Quantization Based on Affine Transformation", SYSTEMS, MAN, AND CYBERNETICS, 1997. COMPUTATIONAL CYBERNETICS AND SIMULATION, 1997 IEEE INTERNATIONAL CONFERENCE ON ORLANDO, FL, USA 12-15 OCT. 1997, NEW YORK, NY, USA, IEEE, US, 12 October 1997 (1997-10-12), páginas 1094-1099, una técnica para ampliación de listas de códigos basada en transformaciones perfeccionadas. Vectores son primeramente cuantificados con una lista de códigos inicial y se determina la distorsión de cuantificación. Si la distorsión es mayor que un dado umbral, se genera una lista de códigos expandido para cuantificar el vector inserido. La técnica descrita se aplica a la cuantificación del vector utilizando vectores de códigos adquiridos por aprendizaje, no para puntos reticulares cuantificadores.
Objetos de la invención
Un propósito de la presente invención es proporcionar un método mejorado y un sistema de construcción, búsqueda e indexación de un cuantificador de vector reticular de multivelocidad.
Otro propósito de la presente invención es proporcionar un método de búsqueda y indexación para listas de códigos de punto reticular.
Resumen de la invención
Los propósitos indicados anteriormente se consiguen mediante cuantificador de multivelocidad utilizando un conjunto de listas de códigos de punto reticular, llamadas listas de códigos de base, y una extensión la cuál hace que sea posible obtener una elevada tasa de transferencia de datos de las listas de códigos desde las listas de códigos de base comparado para cuantificar desde la técnica anterior.
Más específicamente, de acuerdo con un aspecto de la actual invención, se proporciona un método de codificación de la cuantificación del punto reticular de multivelocidad según la reivindicación 1.
Según otro aspecto de la presente invención, se proporciona un método de decodificación de la cuantificación del punto reticular de multivelocidad según la reivindicación 20.
De acuerdo con los demás aspectos de la presente invención, se proporciona un codificador de cuantificación de punto reticular de multivelocidad según la reivindicación 36.
Finalmente, de acuerdo con el mismo aspecto de la presente invención, se proporciona un decodificador de cuantificación de punto reticular de multivelocidad según la reivindicación 38.
De acuerdo con los métodos y sistemas de la presente invención, una lista de códigos de base C de dos dimensiones es extendido ampliándolo por sucesivas potencias de 2 y teselando a una lista de códigos V de Voronoi (r) alrededor de cada punto de la lista de códigos escalado. Por lo tanto, el método de extensión se refiere a la extensión Voronoi. El orden de extensión r es el número de veces que se aplica la extensión. Las listas de códigos extendidos C(r) abarcan más puntos y extienden bien alto en el espacio del vector capturando valores atípicos, mientras se mantiene la misma granularidad como la lista de códigos de base. Esto se atiene al coste del incremento de la tasa de bits requerida para indexar no solamente la lista de códigos sino también la lista de códigos de Voronoi, y transmitir informaciones paralelas en el orden de extensión. La tasa de transferencia de datos de un cuantificador de multivelocidad obtenido por los medios descritos es fuente-dependiente. El número de bits utilizado para indexar la lista de códigos de Voronoi se refiere como cabecera.
Otros objetos, ventajas y características de la actual invención llegarán a ser más evidentes después de la lectura de la siguiente descripción no restrictiva de realizaciones ilustrativas, dadas a modo de ejemplo únicamente con referencia a los dibujos de acompañamiento.
\vskip1.000000\baselineskip
Breve descripción de los dibujos
En los dibujos en anexo:
En la figura 1, la cuál se denomina "estado de la técnica", es un diagrama cerrado que ilustra un codificador transformador de acuerdo con el estado de la técnica;
En las figuras 2(a) y 2(b), denominadas "estado de la técnica", son diagramas cerrados respectivamente del codificador y decodificador de un cuantificador de multivelocidad de acuerdo con un método proveniente del estado de arte;
En la figura 3, denominada "estado de la técnica", es una visión esquemática que ilustra formas esféricas en un punto reticular hexagonal bidimensional A_{2}, de acuerdo con un método proveniente del estado del arte;
En la figura 4, denominada "estado de la técnica", es una visión esquemática que ilustra la codificación de Voronoi, regiones de Voronoi, y teselación de la regiones de Voronoi en un punto reticular hexagonal bidimensional A_{2}, de acuerdo con el método proveniente del estado del arte;
En la figura 5 se ilustra gráficamente los puntos provenientes del punto reticular hexagonal A_{2};
En la figura 6 es el gráfico de la figura 5, incluyendo una forma limitadora para definir una lista de códigos de base:
La figura 7 es un gráfico que ilustra una lista de códigos de base C obtenida al retener únicamente el punto reticular que cae dentro del límite del formato que se muestra en la figura 6;
En la figura 8 es un gráfico que ilustra la lista de códigos de base C proveniente de la figura 7, con las regiones de Voronoi alrededor de cada vector de códigos;
En la figura 9 es el gráfico de la figura 8 que ilustra la posición de un vector fuente;
En la figura 10 es un gráfico que ilustra la lista de códigos de base C proveniente de la figura 8 amplificada por el factor m = 2;
En la figura 11 es un gráfico que ilustra la lista de códigos de base amplificada proveniente de la figura 10, con las regiones de Voronoi desplazadas, amplificadas y una lista de códigos de Voronoi abarcando 4 puntos;
En la figura 12 es un gráfico proveniente de la figura 11, que ilustra una lista de códigos extendida de orden r = 1;
En la figura 13 es un gráfico que ilustra la lista de códigos extendida proveniente de la figura 12 con las regiones de Voronoi relacionadas;
En la figura 14 es un gráfico proveniente de la figura 13, que ilustra el vector cuantificador y, reconstruido como una suma del vector de código amplificado mc y el vector de código v de la lista de códigos de Voronoi;
En la figura 15 es un diagrama de flujo que ilustra un método de codificación de cuantificación de retícula multivelocidad de acuerdo con la primera realización ilustrativa de un segundo aspecto de la presente invención;
En la figura 16 es un diagrama de flujo que ilustra un método de codificación de cuantificación de retícula multivelocidad de acuerdo con la primera realización ilustrativa de un tercer aspecto de la presente invención;
En la figura 17 es un diagrama de flujo que ilustra la generación de una lista de códigos extendida Q_{5}, Q_{6}, y de la otra lista de códigos de tasa alta de acuerdo con un aspecto de la presente invención;
En la figura 18 es un diagrama de flujo que ilustra un método de codificación de cuantificación de retícula multivelocidad de acuerdo a una segunda realización de un segundo aspecto de la presente invención;
En las figuras 19A-19B son visualizaciones esquemáticas que ilustran la estructura del índice de l vector de código i como producido por el método de codificación de la figura 18 respectivamente en el caso donde ninguna extensión sea utilizada, y cuando una extensión es utilizada; y
En la figura 20 es un diagrama de flujo que ilustra un método de decodificación de cuantificación de retícula multivelocidad de acuerdo con una segunda realización ilustrativa del tercer aspecto de la presente invención.
Descripción de las realizaciones ilustrativas
Tornando primero a las figuras 5 a 14 un método para extensión de lista de códigos reticular de multivelocidad se describirá de acuerdo con una primera realización ilustrativa de un primer aspecto de la presente invención. Los métodos de extensión según la presente invención se referirá aquí como método de extensión de Voronoi.
La primera realización ilustrativa se describe por medio de un ejemplo bidimensional basado en una retícula hexagonal A_{2}.
Por claridad, símbolos llave relacionados a la primera realización ilustrativa están recolectados en la Tabla 1.
\vskip1.000000\baselineskip
TABLA 1 Lista de símbolos relacionados al método de extensión de Voronoi de acuerdo con una primera realización ilustrativa de la presente invención
8
9
10
En la figura 5 se muestra una parte de la retícula hexagonal A_{2} que se extiende al infinito. Una lista de códigos de base se obtiene por aproximación de formación de la retícula para obtener un conjunto finito de puntos reticulares. Esto se ilustra en la figura 6, donde un límite de formato esférico se muestra con línea sólida, y en la figura 7, donde se retiene únicamente el punto reticular dentro del límite del formato. El punto dentro del límite del formato abarca la lista de códigos de base C. Aunque el formato esférico es utilizado en la presente representación ilustrativa, otros límites pueden ser alternativamente utilizados, tales como un cuadrado, una pirámide, un rectángulo etc.
En este ejemplo en particular, la lista de códigos de base C abarca 31 puntos reticulares, y por razones de simplificación, asumimos que un índice i de 5 bits se utiliza para etiquetar esta lista de códigos. Las regiones de Voronoi de la lista de códigos son las áreas hexagonales centradas alrededor de cada punto reticular representados por puntos (\cdot) en la figura 8.
En la figura 9 se muestra un vector fuente x en un plano bidimensional. Uno de ellos puede ser visto en este ejemplo ilustrativo que el vecino más cercano y (no mostrado) de x en la retícula no es una entrada de la lista de códigos de base C. Se debe observar que la búsqueda del punto adyacente más próximo no está limitada a la lista de códigos de base C; el punto adyacente más próximo y definido como el punto más próximo para x en la totalidad de la retícula A_{2}. En el caso específico de la figura 9, y es un valor atípico. Se debe recordar que un método de estado de arte para tratamiento con tal valor atípico y es ampliar la lista de códigos por un dado factor, por ejemplo una potencia de 2, resultando en una lista de códigos ampliada que se ilustra en la figura 10. Sin embargo, esto podrá incrementar la región Voronoi, así como la distorsión granular.
Para mantener la misma región Voronoi para mantener la granularidad mientras se extiende la lista de códigos para la inclusión del valor atípico, se escala la lista de códigos de base por 2, y se inserta una lista de códigos de Voronoi alrededor de cada vector de código escalado tal y como se muestra en la figura 11 y 12. Este procedimiento de ampliación produce una lista de códigos de Voronoi V^{(1)} bidimensional que abarca 4 puntos reticulares y requiere 2 bits adicionales como una cabecera para indexarlo. La lista de códigos extendida resultante C^{(1)} se representa en la figura 13. Como se puede ver en la figura 13, el punto adyacente más próximo y de x ya no es un valor atípico, desde que pertenece a la lista de códigos ampliada. Contudo, 5 + 2 = 7 bits se requiere ahora para describir y en la lista de códigos extendida comparada a los _ bits requeridos por la lista de códigos de base sin ninguna extensión. Tal y como se muestra en la figura 14, el vector cuantificado y puede ser representado como
11
donde m es la extensión del factor ampliado (aquí, m = 2), c es un vector de códigos de la lista de códigos de base C, y v pertenece a la lista de códigos de Voronoi utilizada para extender C.
\vskip1.000000\baselineskip
Siguiendo estos ejemplos bidimensionales se ilustra un método para extender lista de códigos reticulares para prevenir saturación, un método de extensión de lista de códigos reticular de acuerdo con el primer aspecto de la presente invención querrá ser presentado con referencia a la segunda representación ilustrativa.
Se asume entonces que la lista de códigos de base C se deriva de una retícula \Lambda en dimensión N teniendo una tasa de transferencia de datos de R bits por dimensión. En otras palabras, C contiene 2^{NR} N-dimensional vectores de códigos y requiere NR bits para indexación.
La extensión incluye ampliación de la lista de códigos de base por sucesivas potencias de 2 (2, 4, 8, etc.), y teselar la lista de códigos de Voronoi alrededor de cada punto de la lista de códigos de base ampliada. Por este motivo, el método de extensión se refiere aquí como extensión de Voronoi. La extensión de la lista de códigos de base C de orden r es la lista de códigos C^{(r)} definida como
\vskip1.000000\baselineskip
12
\vskip1.000000\baselineskip
donde m = 2^{r} y V^{(r)} es una lista de códigos de Voronoi de tamaño m^{N} = 2^{rN} derivada de la misma retícula \Lambda como C. El orden de extensión r define el número de veces que la extensión ha sido aplicada. La lista de códigos extendida abarca más vectores de códigos y consecuentemente utiliza más bits que la lista de código base C. La definición en Eq. 9 implica que la lista de códigos extendida C^{(r)} requiere NR bits para indexar primero la lista de códigos de base y entonces Nr bits para la lista de códigos de Voronoi, resultando en un total de N(R + r) bits a más de información lateral en el orden de extensión r.
La ampliación de la lista de códigos de base por sucesivas potencias de 2 permite tener los índices de Voronoi representados en un número exacto de bits (no fraccionario). Sin embargo en general, m puede ser cualquier número entero superior o igual a 2.
Véase que la granularidad de la forma básica de la extensión de Voronoi es 1 bit por dimensión, desde que el incremento en la tasa de transferencia de datos en la lista de códigos es de 1 bit por dimensión desde la r° para la (r + 1)th extensión.
Se debe percibir que el ejemplo bidimensional anteriormente visto utiliza una lista de códigos de base específica C derivada desde la retícula A_{2}. En el caso ejemplificado de la figura 7, \Lambda = A_{2}, N = 2, y la tasa de transferencia de datos de la lista de códigos de base R = 5/2 bits por dimensión.
Un método de codificación de cuantificación reticular de multivelocidad 100 de acuerdo con la primera representación ilustrativa del segundo aspecto de la presente invención será descrito ahora con referencia a la figura 15.
Deje x ser un vector fuente N-dimensional para ser cuantificado. Deje C denotar la lista de códigos de base derivada desde la retícula \Lambda, y defina m \Lambda como la retícula \Lambda ampliada por un número entero de factor m > 0. Entonces, los pasos para codificar un vector x utilizando C o una de las extensiones de acuerdo con el método 100 son como sigue:
En el paso 102, el punto adyacente más próximo y de x se determina en una reticulado infinito \Lambda. El paso 102 procede a cuantificar el vector y.
Entonces, en el paso 104, se le determina si y es una entrada de la lista de códigos de base C. Si y está en C (paso 106), el número de bits utilizado para cuantificar x es así NR, lo cuál corresponde al número de bits utilizado por la lista de códigos de base. El número de la lista de códigos n se configura a 0 y se termina el método de codificación. Si y no está en la lista de códigos de base C, y se considera un valor atípico y el método 100 se procede con el paso 108, lo cuál, con los pasos 110-118, desde un método de extensión de Voronoi de acuerdo con una tercera representación del primer aspecto de la presente invención.
Según se ha debatido a continuacón, puesto que y es un valor atípico, se requieren más bits para cuantificar x con y en comparación con el caso en que y forma parte de la lista de códigos de base. El procedimiento de ampliación, que es iterativo, genera una lista de códigos ampliada, que eventualmente incluye un vector reticular y, que entonces, puede indexarse de forma adecuada.
El paso 108 es un paso de inicialización, en el que el orden de ampliaciónr se fija en 1 y el factor de escala m hasta 2^{r} = 2.
\vskip1.000000\baselineskip
A continuación se calcula el índice Voronoi k del punto reticular y (paso 110) que era el punto adyacente más próximo del vector x en el reticulado \Lambda obtenido en el paso 102. El índice Voronoi k depende del orden de ampliación r y del factor de escala m. El índice Voronoi k se computa a través de las siguientes operaciones de modulo de manera que depende solo en la posición relativa de y en una región Voronoi escalada y convertida:
\vskip1.000000\baselineskip
13
\vskip1.000000\baselineskip
donde G_{\Lambda} es la matriz generadora de \Lambda y mod_{m}(\cdot) es la operación del modulo componente a componente m. Por lo tanto, el índice Voronoi k es un vector de enteros con cada componente en el intervalo 0 hasta m - 1.
\vskip1.000000\baselineskip
En el paso 112, el vector de códigos de Voronoi v se calcula desde el índice Voronoi k dado por m. Este se puede implementar, por ejemplo, utilizando un algoritmo descrito por Conway (1983).
\vskip1.000000\baselineskip
El cómputo de v se puede realizar del modo siguiente:
1. calculo z=k * G (RE8);
2. buscar el punto adyacente más próximo w de 1/m. (z-a) en RE8;
3. calculo v=z-m*W.
\vskip1.000000\baselineskip
En el paso 114, el vector de diferencia w = y - v es el primero en calcularse. Este vector de diferencia w pertenece siempre al reticulado escalado m\Lambda. Entonces, c = w/m se calcula aplicando la escala inversa hasta el vector de diferencia w. El vector de códigos c pertenece al reticulado \Lambda, puesto que w pertenece a m \Lambda.
Entonces este se verifica si c se encuentra en la lista de códigos de base C (paso 116). Si c no se encuentra en la lista de códigos de base C, se incrementa por 1 el orden de ampliación r, se multiplica por 2 el factor de escala m (paso 118), y sigue la ampliación de Voronoi con una nueva iteración (paso 110). Sin embargo, si c está en C, entonces se ha encontrado un orden de ampliación r y un factor de escala m = 2^{r} lo suficientemente grande como para cuantificar el vector de fuente x con y sin saturación. Entonces y se indexa como un vector de códigos de base en j (paso 120) tal y como se describe en Lamblin (1988). j y k se multiplexan en un índice i (paso 122) y el número de la lista de códigos n se fija para el orden de ampliación (n = r) en el paso 124, que finaliza el método de codificación 100. Tal y como es notorio en la técnica, la multiplexación incluye una concatenación de j y k, que indica que los bits de j están seguidos por los bits de k.
\vskip1.000000\baselineskip
La salida del método de cuantificación consta del número de la lista de códigos n y del índice i del vector de códigos y. Si se utiliza la ampliación de Voronoi, n > 0. De lo contrario n = 0. El índice i es:
\bullet el índice de y = c en la lista de códigos de base, si no se utiliza la ampliación de Voronoi,
\bullet el múltiplexo de j y k, donde j es el índice de c en la lista de códigos de base C y k es el índice de Voronoi correspondiente al vector v.
\vskip1.000000\baselineskip
Debe señalarse que en la ecuación 10 el índice de Voronoi k se define como k = mod_{m}(yG_{\Lambda}^{-1}), donde m = 2^{r}. Puesto que y es un punto reticular en \Lambda, yG_{\Lambda}^{-1} en realidad se corresponde a la ampliación básica de y en \Lambda y en consecuencia es un vector de enteros N-dimensional. Por lo tanto, también k es un vector de enteros N, y debido a la operación del módulo componente a componente modm cada componente de k es un número entero entre 0 y m - 1. Puesto que m = 2^{r}, por construcción k requiere un total de Nr bits para indexar todos sus componentes N.
El método de cuantificación 100 se completa definiendo la codificación sin pérdidas del número de la lista de códigos n y el índice i para obtener n_{E} y i_{E} que se multiplexan, y almacenan o transmiten por un canal de comunicaciones tal y como se ilustra en la Figura 2.
En general, la salida de un cuantificador de vector de multivelocidad consta de un número de la lista de códigos n y un índice i que en ambos casos pueden exhibir una redundancia estadística. Sin limitar el alcance o la generalidad de la presente invención, aquí nos dirigimos solo el codificación entrópica del número de la lista de códigos n para reducir la tasa de transferencia de datos promedio del cuantificador, mientras no se aplica ninguna codificación al índice i dando i_{E} = i. Se puede emplear para n cualquier otra codificación sin pérdidas de la técnica anterior tales como la codificación aritmética o codificación Huffman (Gersho, 1992). Un método de codificación sencillo coding método es el código unario, en el que se representa un número entero positivo n en forma binaria por n - 1 unidades, seguidas por cero. Este esquema de codificación se describirá a continuación con más detalle.
Volviendo ahora a la Figura 16 de los dibujos adjuntos, se describirá un método de descodificación de cuantificación reticular de multivelocidad 200 según la primera realización ilustrativa del tercer aspecto de la presente invención. El número codificado de la lista de códigos n_{E} es el primero en leerse del canal y se invierte la técnica de codificación sin pérdida utilizada en el método 100 para proporcionar el número de la lista de códigos n (paso 202). Es importante observar que n indicada la asignación de bit del cuantificador de multivelocidad y se requiere para desmultiplexar el índice de cuantificación i en el paso 204.
Si n = 0 (paso 206), no se utiliza la ampliación de Voronoi. En este caso, se descodifica el índice i para formar el vector de códigos c de la lista de códigos de base C (paso 208) utilizando la técnica anterior tal y como se describe en (Lamblin, 1988), (Moureaux, 1998) o (Rault, 2001). Entonces se reconstruye el vector cuantificado de forma sencilla como y = c.
Si n > 0 (paso 206), se utiliza la ampliación de Voronoi. Se fijan el orden de ampliación y el factor de escala para r = n y m = 2^{r} (paso 210), respectivamente. Se desmultiplexan los índices j y k (paso 212). Se descodifica el índice j dentro de c en la lista de códigos de base C (paso 214), mientras que k se descodifica dentro de v en la lista de códigos de Voronoi V^{(r)} (paso 216). Se reconstruye el vector cuantificado en el paso 218 como
\vskip1.000000\baselineskip
14
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
Debe observarse que se requiere el método de ampliación empleado en la realización ilustrativa de la presente invención solo si el punto reticular más próximo y del vector x debe cuantificarse cuando se encuentra fuera de la lista de códigos de base. En consecuencia esta ampliación evita la saturación procurando que la memoria (número de bits disponible) sea suficiente. Es importante observar que la lista de códigos ampliada se alcance más lejos en el espacio N-dimensional, mientras tenga la misma granularidad de reticulado que la lista de códigos de base (véase por ejemplo la Figura 5). Sin embargo, se requieren más bits al utilizarse la ampliación.
En algunos casos, el cuantificador puede ejecutarse con falta de bits sin que sea capaz de capturar el vector de fuente x. Dicho de otro modo, el número de bits disponible para cuantificar el vector de fuente x puede ser inferior al número de bits requerido para el índice del vector de códigos i y al número de la lista de códigos n. En este caso, el error de cuantificación no está provocado por la estructura granular de la lista de códigos de base, sino que puede estar relacionado por un error mayor. Esto suele ocurrir con un valor atípico extremadamente grande.
\newpage
Se pueden implementar varios estrategias para contener los valores atípicos, como escalar hacia abajo el vector de fuente x antes de la cuantificación de multivelocidad. Se puede variar el factor de escala aplicado a x de manera que no se produzca ningún desbordamiento de los bits previstos.
Para los valores atípicos arbitrarios x, se desune la complejidad de la ampliación tal y como se ha descrito anteriormente, puesto que la ampliación siempre empieza con r = 0 e incrementa r por 1 a cada iteración, con independencia de x. Sin embargo, en la práctica, se limita el orden de ampliación r debido al tamaño asignado a los números enteros en la plataforma de implementación, por ej., 16 para los enteros de bit 16 no firmados. Esta limitación se refiere al valor máximo de los componentes del índice de Voronoi k.
Se ha determinado preferentemente que todos los puntos reticulares tengan entradas tanto en cualquier lista de códigos de base C como en una de sus ampliaciones C^{(r)} para r = 1, 2, ... De lo contrario, será imposible indexar algunos de los puntos reticulares. Por ejemplo, encuentra esta condición una lista de códigos de base C diseñada por una conformación casi esférica centrada alrededor del origen. Asimismo, encontrará esta condición la mayoría de las listas de códigos obtenida por conformación (truncación) de un reticulado con una región centrada
(convexa).
Ahora se describirán los métodos para codificar y descodificar las cuantificaciones de reticulados multivelocidad de acuerdo con realizaciones de terceros, respectivamente del segundo y del tercer aspecto de la presente invención.
Estas terceras realizaciones de la presente invención se basan en el reticulado RE_{8} descrito anteriormente.
Las realizaciones ilustrativas anteriores sobre los métodos para codificar y descodificar las cuantificaciones de reticulados multivelocidad de acuerdo con la invención se basaban en una lista individual de códigos de base derivada de un reticulado \Lambda que se amplió con una granularidad de bit nominal de 1 bit por dimensión. En particular, el metodo de ampliación empleado está adaptado para ampliar varias lista de códigos de base casi esféricas de manera que se obtiene una granularidad nominal de 1/2 bit por dimensión, 4 bits en la dimensión 8.
Para mayor claridad, en la Tabla 2 se han recogido los símbolos asociados a los métodos de cuantificación de reticulación multivelocidad del 8-dimensional.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
TABLA 2 Listado de símbolos asociados al método de cuantificación de reticulación multivelocidad del 8-dimensional según la tercera realización ilustrativa de la invención
15
16
17
18
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
Tal y como se explicará a continuación con más detalle, el método de codificación de acuerdo con la tercera realización ilustrativa del segundo aspecto de la presente invención incluye tomar un vector de fuente 8-dimensional x como una entrada y elaboración de un índice i y un número de la lista de códigos n. El número de la lista de códigos n identifica una lista de códigos RE_{8} específica indicada por Q_{n}, esto es, cada Q_{n} es un subconjunto del reticulado RE_{8}. La tasa de transferencia de datos de la lista de códigos de Q_{n} es 4n/8 bits por dimensión. De este modo el número de bits en el índice i es 4n. El descodificador utiliza las mismas listas de códigos de multivelocidad Q_{n} al igual que el codificador, y reconstruye sencillamente el punto reticular y desde el índice i y el número de la lista de códigos
n.
De acuerdo con la tercera realización ilustrativa, n se asigna para ser un número entero no negativo excepto unidad, tomando su valor en el conjunto {0, 2, 3, 4, 5, 6, ...}. El caso n = 1 no es ventajoso puesto que corresponde a una asignación de bit de 4 bits en la dimensión 8. De hecho, en dicha baja tasa de transferencia de datos, la cuantificación reticular no es muy eficaz, y suele ser mejor en el contexto de la codificación de transformación para utilizar en lugar de una técnica de cobertura de ruido.
\vskip1.000000\baselineskip
De acuerdo con esta tercera realización ilustrativa, la lista de códigos multivelocidad se divide en dos categorías:
Las listas de códigos de base de baja velocidad Q_{0}, Q_{2}, Q_{3} y Q_{4}, que son listas de códigos reticulares casi esféricas clásicas. En el caso en que el método se implementa en un dispositivo, estas listas de códigos llegan a estar disponibles utilizando las tablas almacenadas en una memoria o precodificadas en el dispositivo. Se debe observar que en la realización ilustrativa, las listas de códigos Q_{2} y Q_{3} están integradas, esto es, Q_{2} es un subconjunto de Q_{3}.
Las listas de códigos ampliadas de alta velocidad Q_{n} para n > 4 que se construyen virtualmente en el dispositivo aplicando un método de ampliación de Voronoi según la presente invención de forma alternativa a Q_{3} y Q_{5} de manera que Q_{5} se genera como la primera ampliación de orden de Q_{6}, Q_{6} se genera como la primera ampliación de orden de Q_{4}, Q_{7} se genera como la primera ampliación de orden de Q_{3}, etc. Mas en general como se ilustra en la Figura 17, la lista de códigos ampliada Q_{n'} para n' = n + 2r > 4 se genera como el rª ampliación de orden de Q_{n} de manera que n = 3 para impar n' y n = 4 para par n'.
\newpage
La separación entre listas de códigos ampliadas de baja y alta velocidad en Q4 permite un compromiso entre calidad (rendimiento) y complejidad. Por ejemplo, estableciendo, por ejemplo, la separación en Q5 debería generar tablas de indexación mayores, mientras que estableciendo la separación en Q3 debería provocar la degradación de la calidad pero reduce la complejidad.
En la Tabla 3 se define el mapa de los líderes absolutos para Q_{0}, Q_{2}, Q_{3} y Q_{4}. Este mapa permite especificar las listas de códigos de base sin ambiguidades. Debe observarse que las restricciones de signo asociadas a estos líderes no aparecen en la tabla, pero se cree que están dentro del alcance de una persona que posee una experiencia ordinaria en la técnica para buscarlos en las propiedades de RE_{8} (Lamblin, 1988).
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
TABLA 3 Listado de los líderes absolutos en RE_{8} que definen las listas de códigos de base Q_{0}, Q_{2}, Q_{3} y Q_{4} según la tercera realización ilustrativa del segundo aspecto de la presente invención
\vskip1.000000\baselineskip
19
20
21
Además, el desplazamiento 8-dimensional establece una definición de la conformación de Voronoi como
a = [2 0 0 0 0 0 0 0 0].
Ahora se describirá con más detalle el método de codificación reticular de multivelocidad 300 según la segunda realización del segundo aspecto de la invención en relación con la Figura 18.
\vskip1.000000\baselineskip
Proporcionando x como un vector de fuente para ser cuantificado en la dimensión 8. Con el paso 302, el primer método sigue buscando el punto adyacente más próximo y de la entrada 8-dimensional x en el reticulado infinito RE_{8}. Entonces, en el paso 304, se efectúa la verificación como para si y es una entrada de una lista de códigos de base Q_{0}, Q_{2}, Q_{3} o Q_{4}. Esta verificación produce un número de la lista de códigos n y un k_{a} si n > 0 identificado. Los detalles de esta verificación se proporcionarán a continuación. El número de la lista de códigos n en esta etapa se toma en el conjunto {0, 2, 3, 4, out}. El valor out es un número entero establecido arbitrariamente a out = 100. El valor n = out se utiliza para indicar que se ha detectado un valor atípico, que significa que el punto reticular y no es una entrada en cualquiera de las listas de códigos de base. Hay entonces dos casos:
\bullet Si n \leq 4 (paso 304), la codificación se completa en el paso 306. Si n = 0 (paso 306), y es el vector de cero y la codificación finaliza. Si n = 2, 3, o 4, entonces la información adicional k_{a} identifica uno de los líderes absolutos que define Q_{n}. El vector y se indexa en Q_{n} dando k_{a} tal y como se explicará a continuación con más detalle.
\bullet Si n = out (paso 304), se aplica el método de ampliación Voronoi según la presente invención. El primer paso (308) del método de ampliación sirve para inicializar los parámetros de la ampliación, y entonces iterar el algoritmo de ampliación de Voronoi, tal y como se describe a continuación, hasta incluir a y en una lista de códigos ampliada.
\vskip1.000000\baselineskip
En la segunda realización de los métodos de codificación y descodificación del vector reticular de multivelocidad, la ampliación de Voronoi se iteró incrementando el orden de ampliación r hasta alcanzar a y. Este puede generar una complejidad desunida. A fin de limitar el peor caso de complejidad, se ha demostrado ventajoso utilizar un máximo de dos iteraciones para la ampliación de Voronoi.
En el paso de inicialización del método de ampliación, el orden de ampliación r y el factor de escala de ampliación m se establecen en algunos valores iniciales que determinan el vector reticular y = [y_{1}... y_{8}] de manera que se minimiza el número de iteraciones erráticas r. El contador de iteración iter se fija en cero.
\vskip1.000000\baselineskip
La preselección de r y m se implementa como sigue. En primer lugar, se calcula el valor de punto flotante
\sigma = (y_{1}^{2} + ...+ y_{8}^{2})/32, se establece r = 1 y m = 2^{r} = 2. Entonces, mientras \sigma > 11, se itera \sigma, r, y m actualizando \sigma:= \sigma /4, r:= r + 1 y m:= 2m. El fundamento de este procedimiento está justificado por las dos observaciones siguientes:
\bullet Al trasladar la ampliación de orden desde rª a la ampliación (r + 1)ª, la listas de códigos de base Q_{3} y Q_{4} se múltiplica por m = 2^{r+1} en lugar de m = 2^{r}. La norma al cuadrado de los vectores de códigos de base escalados se múltiplica por 4 después de haber comparado la ampliación (r + 1)ª con la ampliación rª. Esto explica el factor 1/4 aplicado a \sigma después de cada iteración erráticar r.
\bullet La unión de las listas de códigos de base Q_{0} \cup Q_{2} \cup Q_{3} \cup Q_{4} abarcan los puntos reticulares en RE_{8} líneas de comando 0 a 32. Se puede verificar que el extremo de la línea de comando completa en Q_{0} \cup Q_{2} \cup Q_{3} \cup Q_{4} es la línea de comando 5. La constante 11 en la condición de finalización \sigma > 11 se ha seleccionado de forma experimental entre 5 y 32.
Una alternativa a este procedimiento de inicialización consiste en calcular directamente tantas veces como \sigma vaya en 11 y entoces establecer r y m en consecuencia. Naturalmente el resultado será idéntico al procedimiento iterativo descrito anteriormente.
Si iter = 2 (paso 310), el método se sale del bucle que comprende los pasos 310-326.
En el paso 312, se calcula el índice de Voronoi k del punto reticular y dando m utilizando la aritmética modular. El índice Voronoi k depende del orden de ampliación r y del factor de escala m. En el caso particular del reticulado RE_{8}, el índice de Voronoi se calcula como sigue:
22
donde G_{RE8} es la matriz generadora definida en la Ecuación 4, y mod_{m}(\cdot) es la operación del módulo componente a componente -m. Por lo tanto, el índice de Voronoi k es un vector de 8 números enteros, estando cada componente comprendido entre 0 y m - 1. Por construcción k requiere de este modo un total de 8r bits para indexar todos los componentes.
El vector de códigos de Voronoi v se calcula a partir del índice de Voronoi k dando m (paso 314). Para este propósito puede usarse el algoritmo descrito en (Conway, 1983).
Se calcula el vector de diferencia w = y - v (paso 316). Este vector de diferencia w es un punto en el reticulado escalado mRE_{8}. Entonces de calcula c = w/m (paso 316), que se obtiene aplicando la escala inversa al vector de diferencia w. El punto c pertenece al reticulado RE_{8} puesto que w pertenece a mRE_{8}.
El método de ampliación sigue verificando si c es una entrada de la listas de códigos de base Q_{2}, Q_{3} o Q_{4} (paso 318). Esta verificación produce un número de la lista de códigos n y también un identificador k_{a}. Los detalles de la verificación se explicarán a continuación con más detalle. Con la listas de códigos de base de multivelocidad revelado, c no puede estar en Q_{0} en esta etapa. Como resultado de ello, el valor actual de n puede ser tanto 2, 3, 4, como out.
Si n = out, el orden de ampliación r se incrementa por uno y la escala de ampliación m se múltiplca por 2 (paso 320).
Si c es una entrada de Q_{2}, este también es una entrada de Q_{3} puesto que Q_{2} está integrado en Q_{3} (Q_{2} \subset Q_{3}). Por lo tanto, si n = 2, n se fija en n = 3 (paso 322). Un factor de escala límite del orden de ampliación m = 2^{r} lo suficientemente grande como para cuantificar el vector de fuente x que sin saturación ocurre cuando n = 3 o n = 4. Se actualiza el número de la lista de códigos n para incorporar el orden de ampliación r. Este se consigue añadiendo 2r a n (paso 322). Entonces c, k_{a}, n y k se guardan en una memoria (paso 324) y el orden de ampliación r se decrementa por uno y el factor de escala m se divide por 2 (paso 326).
La incrementación del contador de iteración iter se incrementa por uno (paso 328), antes del inicio de una nueva iteración (paso 310).
\vskip1.000000\baselineskip
Al finalizarse el bucle tras dos iteraciones, el parámetro que caracteriza la ampliación se recupera de la memoria (paso 330) que contiene los siguientes valores:
\bullet El vector c calculado en el paso 316 que es una entrada de Q_{3} o Q_{4};
\bullet El índice de Voronoi k calculado en el paso 312. Debe observarse que el índice de Voronoi k es un vector 8-dimensional, donde cada componente es un número entero entre 0 y m - 1 y puede ser indexado por r bits;
\bullet El identificador k_{a} calculado como un producto colateral del paso 318; y
\bullet El número de la lista de códigos n que incorpora el orden de ampliación r tal y como se calcula en el paso 320.
\vskip1.000000\baselineskip
El índice j de c se calcula en el paso 332. Este índice se multiplexa con el índice de Voronoi k para formar el índice i (paso 334). Para completar la codificación, se sujeta el número de la lista de códigos n para la codificación sin pérdidas tal y como se describirá más adelante y se multiplexa con el índice i para el almacenamiento o transmisión por un canal.
Debe observarse que el método de codificación 300 asume que está disponible suficiente memoria para caracterizar el vector de fuente x con un punto attice y. Por lo tanto, el método de codificación de la cuantificación de multivelocidad 300 se aplica preferentemente en una forma ventajosa escalando hacia abajo el vector de fuente x como xlg antes de la aplicación del método 300. El parámetro escalar g > 1 se determina para evitar un sobrepasamiento en la memoria, y cuantificado de forma separada utilizando los medios de las técnicas anteriores. Sin embargo, si se produce un sobrepasamiento de la memoria al fallar en la elección de g adecuadamente, por defecto n se fija en cero y la reconstrucción y empieza con un vector de cero. La técnica de selección y cuantificación de g no se detalla aquí puesto que depende de la aplicación actual.
Además, suponiendo que el método 300 se implementa en una plataforma de software donde los componentes del índice de Voronoi k se representan con enteros de 16 bits, el valor máximo de r es r = 16 resultando en el valor máximo n = 4 + 2x16 = 36 para el número de la lista de códigos.
Ahora se describirá con más detalle el método para encontrar el identificador de un líder absoluto en la listas de códigos de base, y para verificar si un punto reticular está en una lista de códigos de base (pasos 304 y 318).
De acuerdo con dicho método de la técnica anterior, para verificar si un punto reticular y es una entrada en una lista de códigos reticular casi esférica Q_{2}, Q_{3} o Q_{4}, los valores absolutos de los componentes de y se reordenan en orden descendiente y se comparan directamente componente a componente con los líderes absolutos que definen la listas de códigos (véase por ejemplo Lamblin, 1988). El método según la presente invención se basa en la utilización del identificador k_{a}. Este método se describe a continuación en tres pasos:
1) Cálculo del valor s a partir de y. Escribiendo y componente a componente como y = [y_{1} ... y_{8}], este valor se calcula como
23
2) Los valores de s calculados para los líderes absolutos y que definen la listas de códigos de base distinta de todas las demás entre ellas. Además, todas las permutaciones firmadas válidas de y dará como resultado el mismo valor s. Como consecuencia, el valor s está relacionado aquí como una clave, puesto que identifica de forma única un líder absoluto y todas las permutaciones firmadas asociadas.
3) Estableciendo k_{a} pare el valor 36 si s = 0, y es un vector de cero. De lo contrario la búsqueda para la clave s en una tabla de mapa que convierte a s en el identificador k_{a} que puede cumplir los valores enteros entre 0 y 37. La Tabla 4 proporciona este mapa que puede calcularse fácilmente a partir de la Tabla 3. Si la clave s es una entrada de la Tabla 4, el identificador k_{a} es un número entero entre 0 y 36 (ver Tabla 4). De lo contrario, y se declara un valor atípico por establecer k_{a} en 37.
TABLA 4 Listado de los identificadores k_{a} para los líderes absolutos en RE_{8} que definen la listas de códigos de base Q_{2}, Q_{3} y Q_{4}
24
25
26
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
Debe observarse que la última columna a la derecha en la Tabla 4 es puramente informativa y define sin ambigüedades el mapa entre el identificador k_{a} y el líder absoluto asociado.
En esta etapa, el identificador verifica 0 \leq k_{a} \leq 37. De hecho, si 0 \leq k_{a} < 36, y está en un Q_{2}, Q_{3} o Q_{4} cualquiera. Si k_{a} = 36, y está en Q_{0}. Si k_{a} = 37, y no está en cualquiera de las listas de códigos de base. Entonces el identificador k_{a} se mapea en el número de la lista de códigos n de la Tabla 5.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
TABLA 5 La tabla de mapa para convertir el identificador k_{a} de los líderes absolutos en un número de la lista de códigos de base n según la presente invención
\vskip1.000000\baselineskip
27
28
\vskip1.000000\baselineskip
Ahora se describirá con más detalle el método para indexar en la listas de códigos de base Q_{2}, Q_{3} y Q_{4} en base al identificador del líder absoluto (pasos 306 y 332).
El índice de una entrada y en la listas de códigos de base Q_{2}, Q_{3} y Q_{4} se calcula utilizando la técnica anterior de indexación para la listas de códigos casi esférica tal y como se ha descrito en Lamblin (1988). Para ser más precisos, el índice de y, por ejemplo j, se calcula como sigue: j = desplazamiento de cardinalidad + rango de permutación. El rango de permutación se calcula de acuerdo con la fórmula de Schalkwijk's, que es notoria en la técnica y descrita en (Lamblin, 1988). El desplazamiento de cardinalidad se encuentra mediante la tabla de búsqueda después de calcular el líder firmado para y. Esta tabla de búsqueda se basa en el identificador k_{a} del líder absoluto
asociado.
De acuerdo con las realizaciones ilustrativas de la invención, el número de la lista de códigos n se codifica utilizando un código binario de longitud variable, bien conocido en la técnica anterior como un código unario, basado en el siguiente mapeo:
Q_{0} \rightarrow 0
Q_{2} \rightarrow 10
Q_{3} \rightarrow 110
Q_{4} \rightarrow 1110
Q_{5} \rightarrow 11110
...
El lado derecho del mapa anterior proporciona n_{E} en representación binaria para ser multiplexado con el índice del vector de códigos i. Además, al utilizarse la ampliación de Voronoi (cuando n > 4), el índice del vector de códigos i comprende dos sub-indices multiplexados juntos:
\bullet
el índice de la lista de códigos de base j de 12 bits para impar n y 16 bits para par n; y
\bullet
el índice de Voronoi k de 8r bits, que comprende ocho números enteros de r bits como sus componentes.
La estructura de i se ilustra en la Figura 19(a) para 2 \leq n \leq 4, mientras que la Figura 19(b) considera el caso n > 4. Debe observarse que los bits multiplexados pueden permutarse en cualquier forma dentro del bloque en su conjunto de 4n bits.
Ahora se describirá con más detalle el método 400 para la descodificación reticular de multivelocidad según la segunda realización del tercer aspecto de la invención, en relación con la Figura 20.
El número de la lista de códigos codificado n_{E} es el primero en leerse del canal y descodificado para obtener el número de la lista de códigos n (paso 402). El número de la lista de códigos n se recupera de n_{E} por inversión del mapa descrito en el método 300. Entonces el descodificador interpreta el índice del vector de códigos i de forma distinta dependiendo del número de la lista de códigos n.
Si n = 0 (paso 404), y se reconstruye como un vector de cero que es la única entrada de la lista de códigos de base Q_{0} (paso 406).
Si 0 < n \leq 4 (paso 404), se desmultiplexa el índice del vector de códigos i del tamaño 4n bits desde el canal (paso 408). Entonces se descodifica i como índice de una lista de códigos de base Q_{2}, Q_{3}, o se reconstruye Q_{4} y y utilizando la técnica anterior (paso 410) como los que se describen en Lamblin (1988), Moureaux (1998) y Rault (2001).
Un valor n > 4 en el paso 404 indica que se ha empleado la ampliación de Voronoi. Se desmultiplexa el índice del vector de códigos i del tamaño 4n bits desde el canal (paso 408) como el índice de la lista de códigos de base j y el índice de Voronoi k a partir de i (paso 412). También se recupera el orden de ampliación r y de esta forma el factor de escala m a partir de n (paso 414). El valor de r se obtiene como un cociente de (n - 3)/2, y m = 2^{r}. Entonces 2^{r} se sustrae de n para identificar tanto a Q_{3} como a Q_{4}, y se descodifica el índice j en c utilizando el valor sustraído de n (paso 416). La descodificación de j se basa en el método de la técnica anterior que consta de rangos de descodificación y tablas de búsqueda tal y como se ha descrito en Lamblin (1988), Moureaux (1998) y Rault (2001). El índice de Voronoi k se descodifica dentro de en v (paso 418) en base a m utilizando el algoritmo de la técnica anterior descrito en (Conway, 1983). Por último, en el paso 420, el descodificador calcula la reconstrucción como y = mc + v, donde m = 2^{r} es el factor de escala de la ampliación, c es un vector de códigos de la lista de códigos de base y v es un vector de códigos de la lista de códigos de Voronoi. Al ser r = 0, no se utiliza ninguna ampliación, y v es un vector de cero y m se convierte en uno.
Aunque la presente invención se ha descrito anteriormente por medio de las realizaciones ilustrativas de la misma, estas pueden modificarse sin alejarse del alcance del objeto de la invención, tal y como se define en las reivindicaciones anexas.
\vskip1.000000\baselineskip
Referencias bibliográficas mencionadas en la memoria descriptiva
Esta lista de referencias bibliográficas mencionada por el solicitante se ha incorporado exclusivamente para información del lector, pero no forma parte integrante de la documentación de la patente europea. Aún habiéndose recopilado estas referencias bibliográficas con sumo cuidado, no pueden excluirse errores u omisiones, por lo que la EPO declina toda responsabilidad a este respecto.
Documentación no relacionada con la patente mencionada en la memoria descriptiva
\bullet C. Lamblin J.-P. Adoul. Algorithme de quantification vectorielle sphérique à partir du réseau de Gosset d'ordre 8. Ann. Télécommun., 1988, vol. 43, 3-4172-186
\bullet J.-M. Moureaux P. Loyer M. Antonini. Low-complexity indexing method for Zn and Dn lattice quantizers. IEEE Trans. Communications, 1998, vol. 46, 12
\bullet P. Rault C. Guillemot. Indexing algorithms for Zn, An, Dn, and Dn++ lattice vector quantizers. IEEE Transactions on Multimedia, 2001, vol. 3, 4395-404
\bullet M. Xie J.-P. Adoul. Embedded algebraic vector quantization (EAVQ) with application to wideband audio coding. IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), 1996, vol. 1, 240-243
\bullet J.H. Conway N.J.A. Sloane. A fast encoding method for lattice codes and quantizers. IEEE Trans. Inform. Theory, 1983, vol. IT-29, 6820-824
\bullet A. Gersho R.M. Gray. Vector Quantization and Signal Compression. Kluwer Academic Publishers 1992
\bullet D. Mukherjee S.K. Mitra. Vector set-partitioning with successive refinement Voronoi lattice VQ for embedded wavelet image coding Proc. ICIP, 1998, 107-111
\bullet Y. Zhang et al. An Improvement Image Vector Quantization Based on Affine Transformation SYSTEMS, MAN, AND CYBERNETICS, 1997. COMPUTATIONAL CYBERNETICS AND SIMULATION, 1997 IEEE INTERNATIONAL CONFERENCE ON ORLANDO, 1997, 1094-1099.

Claims (39)

1. Un método para codificar una señal de fuente, para la transmisión o almacenamiento utilizando cuantificación reticular de multivelocidad, comprendiendo dicho método los pasos de:
i) proporcionar un vector de fuente x que representa una trama de ejemplos de la señal de fuente;
ii) proporcionar una lista de códigos de base C derivada de un reticulado \Lambda de puntos;
íii) asociar al vector de fuente x un punto reticular y en dicho reticulado \Lambda; caracterizado por el hecho de que
- si el punto reticular y está incluido en la lista de códigos de base C, realizando el siguiente paso iv):
iv) indexar el punto reticular y en la lista de códigos de base C generando índices de cuantificación, y finalizar el método; y
- si el punto reticular y no está incluido en la lista de códigos de base C, realizando las siguientes pasos v), vi) y vii):
v) ampliar la lista de códigos de base C, generando una lista de códigos ampliada;
vi) asociar al punto reticular y un vector de códigos c a partir de la lista de códigos ampliada; y
vii) indexar el punto reticular y en la lista de códigos ampliada generando los índices de cuantificación;
donde los índices de cuantificación forman una representación cuantificada del vector de fuente x.
2. Un método tal y como se ha descrito en la reivindicación 1, en el que la lista de códigos ampliada está representada por la expresión mC + V, donde m es un factor de escala, C es la lista de códigos de base y V es un conjunto de puntos en el reticulado \Lambda.
3. Un método tal y como se ha descrito en la reivindicación 1, en el que el paso iii) consiste en seleccionar el punto reticular y en el reticulado \Lambda como un punto adyacente más próximo del vector de fuente x en el reticulado \Lambda.
4. Un método tal y como se ha descrito en la reivindicación 1, en el que el paso v) consiste en proporcionar un factor de asiento de número entero m \geq 2; el paso vi) consiste en calcular un vector de códigos de Voronoi v correspondiente al punto reticular y utilizando el factor de escala m; y el paso vi) consiste además en calcular el vector de códigos c utilizando el vector de códigos de Voronoi v y el factor de escala m.
5. Un método tal y como se ha descrito en la reivindicación 4, en el que el paso v) consiste en establecer el factor de escala m para 2^{r}, con r siendo un orden de ampliación; el paso v) consiste además en calcular un índice de Voronoi k; y el paso vi) consiste en calcular el vector de códigos de Voronoi v correspondiente al punto reticular y utilizando el índice de Voronoi k y el factor de escala m.
6. Un método tal y como se ha descrito en la reivindicación 4, en el que el paso vi) consiste en calcular el vector de códigos c como c = (y - v) / m.
7. Un método tal y como se ha descrito en la reivindicación 4, en el que el paso vi) consiste además en verificar si el vector de códigos c está en la lista de códigos de base C,
- si el vector de códigos c está en la lista de códigos de base C, realizando el siguiente paso a):
a) en el paso vii) indexar el punto reticular y como un vector de códigos de base y multiplexar j y k generando los índices de cuantificación, donde j es un índice del vector de códigos c en la lista de códigos de base C y k es un índice de Voronoi correspondiente al vector de códigos de Voronoi v;
- si el vector de códigos c no está en la lista de códigos de base C, realizar el siguiente paso b):
b) incrementar el factor de escala m y un orden de una ampliación de Voronoi y repetir los pasos v) hasta vi).
8. Un método tal y como se ha descrito en la reivindicación 4, que comprende además en el paso vii) la definición de una codificación sin pérdidas de un número de la lista de códigos correspondiente a un orden de ampliación r y un índice i del punto reticular y en la lista de códigos de base C, generando un número de la lista de códigos codificado n_{E} y un índice codificado i_{E}; y multiplexar el número de la lista de códigos codificado n_{E} y el índice codificado i_{E}.
9. Un método tal y como se ha descrito en la reivindicación 1, que comprende además un paso viii) para almacenar los índices de cuantificación en medios de almacenamiento.
\global\parskip0.950000\baselineskip
10. Un método tal y como se ha descrito en la reivindicación 1, que comprende además un paso viii) para transmitir los índices de cuantificación por un canal de comunicación.
11. Un método para codificar una señal de fuente utilizando la cuantificación reticular de multivelocidad según se ha definido en la reivindicación 1, en el que:
el paso v) consiste en proporcionar un subconjunto V de puntos del reticulado \Lambda;
el paso vii) consiste en indexar el punto reticular y dentro de un número entero de la lista de códigos n y un índice ii como y = mc+v, donde c es un elemento de la lista de códigos de base C, v es un elemento del subconjunto V, y m es un número entero mayor que o igual a dos;
donde la lista de códigos de base C y el subconjunto V del reticulado \Lambda, el número entero m y el índice ii, están definidos a partir del número de la lista de códigos n; y
donde n y ii son los índices de cuantificación que forman una representación cuantificada del vector de fuente x.
12. Un método tal y como se ha descrito en la reivindicación 11, en el que el número de la lista de códigos n está representada por un código unario.
13. Un método tal y como se ha descrito en la reivindicación 11, en el que el subconjunto V del reticulado \Lambda es una lista de códigos de Voronoi y un índice del elemento v es un índice de Voronoi.
14. Un método tal y como se ha descrito en la reivindicación 11, en el que el índice ii es una concatenación de un índice del elemento c y un índice del elemento v.
15. Un método tal y como se ha descrito en la reivindicación 11, en el que se establece el punto reticular y = [0 ... 0] y el número entero de la lista de códigos n en un valor predeterminado al no ser suficiente un número de asignación de bits disponible en la implementación del método para representar el vector de fuente x en el reticulado \Lambda.
16. Un método tal y como se ha descrito en la reivindicación 11, en el que el número entero m = 2^{r}, con r es un número entero mayor que o igual a 1; estando predeterminada la lista de códigos de base C; y siendo el número de la lista de códigos n igual a r además de un número entero predeterminado.
17. Un método para codificar una señal de fuente utilizando la cuantificación reticular de multivelocidad según se ha definido en la reivindicación 1, en el que:
el paso i) consiste en proporcionar un vector de fuente 8-dimensional x que representa una trama de la señal de fuente;
el paso ii) consiste en proporcionar listas de códigos de base reticuladas de baja velocidad Q_{0}, Q_{2}, Q_{3} y Q_{4} derivadas a partir de un reticulado de puntos RE_{8};
el paso iii) consiste en determinar un punto reticular y en el reticulado RE_{8} que es un punto adyacente más próximo del vector de fuente x en el reticulado RE_{8};
- si el punto reticular y está incluido en la listas de códigos de base reticuladas de baja velocidad Q_{n}, donde n es igual a 0, 2, 3 o 4, el paso iv) consiste en:
a) memorizar el número n y un identificador k_{a} que identifica uno de los líderes absolutos que definen la lista de códigos de base Q_{n},
b) si n > 0, realizar el siguiente paso b1:
b1) indexar el punto reticular y en la lista de códigos de base Q_{n}, generando índices de cuantificación,
si un factor de escala m = 0, realizar el siguiente paso b2:
b2) el punto reticular y se elabora como un vector de cero, y
c) finalizar el método;
- si el punto reticular y no está incluido en la listas de códigos de base reticuladas de baja velocidad Q_{n}, donde n es igual a 0, 2, 3 o 4:
el paso v) comprende los pasos de viii) proporcionando una orden de ampliación r; ix) establecer el factor de escala m en 2^{r}; x) establecer un número de iteración iter = 0; xi) calcular un índice de Voronoi k del punto reticular y; xii) calcular un vector de códigos de Voronoi v correspondiente al punto reticular y utilizando el índice de Voronoi k y el factor de escala m;
\global\parskip1.000000\baselineskip
el paso vi) comprende el paso de xiii) calculando el vector de códigos c como c = (y - v) / m; y
el paso vii) comprende los pasos de:
xiv) - si el vector de códigos c está incluido en la lista de códigos de base Q_{n}, donde n es igual a 2, 3 o 4, realizar el siguiente paso aa):
aa) proporcionar el número n y el identificador k_{a}; si un número de la lista de códigos n es igual a 2 (n = 2), establecer n = 3; incrementar el número de la lista de códigos n por 2r; almacenar los valores del índice de Voronoi k, el vector de códigos c, el número n y el identificador k_{a}; dividir el factor de escala m por 2; disminuir el orden de ampliación r por 1;
- si el vector de códigos c no está incluido en la lista de códigos base Q_{n}, donde n es igual a 2, 3 o 4, realizar el siguiente paso bb):
bb) multiplicar el factor de escala m por 2; incrementar r por 1;
xv) disminuir el número de iteración iter por 1;
xvi) - si dicho número de iteración iter = 2 realizar entonces el siguiente paso aaa):
aaa) recuperar los valores del índice de Voronoi k, el vector de códigos c, el número n y el identificador k_{a}; indexar el vector de códigos c en la lista de códigos de base Q_{3} o Q_{4}, proporcionando k_{a}; multiplexar j y k para formar el índice i, donde i es el índice del punto reticular y y j es el índice del vector de códigos c;
- si dicho número de iteración iter \neq 2 realizar entonces el siguiente paso bbb):
bbb) repetir los pasos xi) hasta xvi);
donde los pasos iv) y xvi) generan los índices de cuantificación que forman una representación cuantificada del vector de fuente x.
18. Un método tal y como se ha descrito en la reivindicación 17, en el que en el paso xi) el índice de Voronoi k se calcula como sigue:
29
donde G_{RE8} es una matriz generadora definida como
30
y mod_{n}(\cdot) es una operación del módulo componente a componente m.
19. Un método tal y como se ha descrito en la reivindicación 17, que comprende además escalar hacia abajo el vector de fuente x como x/g antes del paso iii); eligiéndose g de manera que sea mayor que 1 y para evitar un sobrepasamiento en una memoria utilizada en la implementación del método.
\vskip1.000000\baselineskip
20. Un método para descodificar una señal de fuente transmitida o almacenada utilizando la cuantificación reticular de multivelocidad, comprendiendo dicho método los pasos de:
i) proporcionar una lista de códigos de base C derivada a partir de un reticulado \Lambda;
ii) proporcionar un número de la lista de códigos n y un índice de cuantificación i; caracterizado por el hecho de que
iii) desmultiplexa el índice de cuantificación i utilizando el número de la lista de códigos n;
iv) si n = 0 descodificar entonces el índice de cuantificación i utilizando la lista de códigos de base C, generando un vector de códigos cuantificado y, y finalizando el método;
v) si n > 0 entonces
a) proporcionar una lista de códigos de Voronoi preseleccionada V^{(r)};
b) establecer un orden de ampliación para r = n y un factor de escala m = 2^{r};
c) desmultiplexar los índices j y k a partir del índice de cuantificación i;
d) descodificar j dentro de un vector de códigos c en la lista de códigos de base C;
e) descodificar k dentro de un vector de códigos v en la lista de códigos de Voronoi V^{(r)}; y
f) reconstruir un vector de códigos cuantificado como
y = mc + v
donde el vector de códigos reconstruido y representa una representación cuantificada de una trama de muestras de la señal de fuente.
\vskip1.000000\baselineskip
21. Un método tal y como se ha descrito en la reivindicación 20, en el que en el paso ii) se proporcionan primero un número de la lista de códigos codificado n_{E} y un índice codificado i_{E}; luego se aplica una técnica predeterminada de codificación sin pérdidas al número de la lista de códigos codificado n_{E} y al índice codificado i_{E} para proporcionar el número de la lista de códigos n y el índice de cuantificación i, respectivamente.
22. Un método tal y como se ha descrito en la reivindicación 20, en el que el número de la lista de códigos n y el índice de cuantificación i se leen desde un canal de comunicación.
23. Un método tal y como se ha descrito en la reivindicación 20, en el que el número de la lista de códigos n y el índice de cuantificación i se leen desde medios de almacenamiento.
24. Un método para descodificar una señal de fuente utilizando cuantificación reticular de multivelocidad tal y como se define en la reivindicación 20, en el que:
el reticulado \Lambda es un reticulado de puntos;
la lista de códigos de base C es un primer subconjunto del reticulado \Lambda de puntos;
la lista de códigos de Voronoi V^{(r)} es un segundo subconjunto del reticulado \Lambda de puntos;
reconstruyendo el vector de códigos y como y = mc + v que consiste en reconstruir el punto c como un elemento del subconjunto C del reticulado \Lambda, el reticulado L, reconstruir el vector de códigos v como un elemento del subconjunto V del reticulado \Lambda;
en el que el método de descodificación de la señal de fuente consiste en definir los subconjuntos C y V del reticulado \Lambda, el valor del número entero m y el tamaño del índice i a partir del número de la lista de códigos n.
25. Un método tal y como se ha descrito en la reivindicación 24, en el que el número de la lista de códigos n se reconstruye a partir de un código unario.
26. Un método tal y como se ha descrito en la reivindicación 24, en el que el subconjunto V del reticulado \Lambda es un código de Voronoi y el índice del vector de códigos v es un índice de Voronoi.
27. Un método para descodificar una señal de fuente utilizando cuantificación reticular de multivelocidad tal y como se define en la reivindicación 20, en el que:
el paso i) consiste en proporcionar listas de códigos de base reticuladas de baja velocidad Q_{0}, Q_{2}, Q_{3}, y Q_{4} derivadas a partir de un reticulado RE_{8};
si n = 0, el paso iv) se sustituye por un paso de vi) reconstruyendo un vector de códigos y como un vector de cero;
el paso v) comprende los pasos de:
si 0 < n \leq 4, descodificar el índice del vector de códigos i como un índice de la lista de códigos de base Q_{2}, Q_{3} o Q_{4} y reconstruir el vector de códigos y;
Si n > 4, utilizar el número de la lista de códigos n para identificar tanto la lista de códigos de base Q_{3} como Q_{4}, y realizar los pasos a)-f) utilizando la lista de códigos de base seleccionada Q_{3} o Q_{4} como lista de códigos de base C.
\vskip1.000000\baselineskip
28. Un método tal y como se ha definido en la reivindicación 1, en el que la lista de códigos de base C define un subconjunto de vectores de códigos, y en el que el paso v) comprende los pasos de:
escalar los vectores de códigos de la lista de códigos de base C mediante un factor de escala predeterminado, generando vectores de códigos escalados; y
iii) introducir una lista de códigos de Voronoi alrededor de cada vector de códigos escalado, generando la lista de códigos ampliada.
\vskip1.000000\baselineskip
29. Un método tal y como se ha descrito en la reivindicación 28, que comprende el paso para seleccionar el subconjunto de los vectores de códigos reteniendo los vectores de códigos dentro de un límite.
30. Un método tal y como se ha descrito en la reivindicación 28, en el que el paso para escalar los vectores de códigos consiste en proporcionar un factor de escala de número entero m \geq 2.
31. Un método tal y como se ha descrito en la reivindicación 28, en el que, en el paso para escalar el vectores de códigos, se establece el factor de escala m en 2^{r}, donde r es un orden de ampliación.
32. Un método tal y como se ha descrito en la reivindicación 29, en el que se proporciona el límite mediante una forma seleccionada del grupo consistente en una esfera, un cuadrado, una pirámide y un rectángulo.
33. Un método para codificar una señal de fuente utilizando la cuantificación reticular de multivelocidad según la Reivindicación 1, en el que:
el paso ii) consiste en proporcionar la lista de códigos de base C formada por un subconjunto de vectores de códigos a partir del reticulado \Lambda teniendo una dimensión N, en la que la lista de códigos de base C requiere NR bits para indexar, donde R es una tasa de transferencia de datos por dimensión de dicha lista de códigos de base C;
el paso iii) consiste en determinar un vector de códigos desde el reticulado \Lambda más próximo al vector de fuente x;
- si el vector de códigos más próximo está comprendido dentro de la lista de códigos de base C, el paso iv) consiste en:
indexar el vector de códigos más próximo en la lista de códigos de base generando los índices de cuantificación, elaborando los índices de cuantificación, y finalizando el método;
- si el vector de códigos más próximo no está comprendido dentro de la lista de códigos de base C, el paso v) comprende los siguientes pasos viii) hasta x):
viii) proporcionar un factor de escala predeterminado;
ix) escalar la lista de códigos de base C por el factor de escala, generando una lista de códigos escalada que consta de vectores de códigos escalados;
x) introducir una lista de códigos de Voronoi alrededor de cada vector de códigos escalado, generando una lista de códigos ampliada que requiere N(R+r) bits para indexar, donde r es el orden de la lista de códigos de Voronoi:
- si el vector de códigos más próximo está comprendido dentro de la lista de códigos ampliada entonces el paso vii) consiste en indexar el vector de códigos más próximo en la lista de códigos ampliada generando los índices de cuantificación, elaborando los índices de cuantificación, y finalizando el método;
- si el vector de códigos más próximo no está comprendido dentro de la lista de códigos ampliada y si el número de bits requerido para la indexación de la lista de códigos ampliada no ha sobrepasado un umbral predeterminado entonces se repiten los pasos viii) hasta x) para incrementar el factor de escala y el orden de la lista de códigos de Voronoi;
- si el número de bits requerido para la indexación de la lista de códigos ampliada ha sobrepasado un umbral predeterminado, realizar un paso de xi) que considere el vector de códigos más próximo como un valor atípico remoto y elaborando los correspondientes índices de cuantificación predeterminados.
\vskip1.000000\baselineskip
34. Un método tal y como se ha descrito en la reivindicación 33, donde el factor de escala predeterminado es 2 y se ha incrementado por 2 el factor de escala.
35. Un método tal y como se ha descrito en la reivindicación 33, en el que el orden de la lista de códigos de Voronoi se ha incrementado por 1.
36. Un codificador de señal para codificar una señal de fuente para transmitir o almacenar utilizando una cuantificación reticular de multivelocidad, comprendiendo el codificador:
recibir medios para proporcionar un vector de fuente x que representa una trama de muestras de la señal de fuente;
medios de memoria que incluyen una lista de códigos de base C derivada a partir de un reticulado \Lambda de puntos;
medios para asociar al vector de fuente x un punto reticular y en el reticulado \Lambda; caracterizado por el hecho de que;
los medios para verificar si el punto reticular y está incluido en la lista de códigos de base C;
si el punto reticular y está incluido en la lista de códigos de base C, los medios para indexar el punto reticular y en la lista de códigos de base C generando índices de cuantificación;
si el punto reticular y no está incluido en la lista de códigos de base C, los medios para ampliar la lista de códigos de base y para generar una lista de códigos ampliada; los medios para asociar al punto reticular y un vector de códigos c a partir de la lista de códigos ampliada; y los medios para indexar el punto reticular y en la lista de códigos ampliada y para generar los índices de cuantificación;
donde los índices de cuantificación forman una representación cuantificada del vector de fuente x.
\vskip1.000000\baselineskip
37. Un codificador de señal para codificar una señal de fuente utilizando una cuantificación reticular de multivelocidad tal y como se ha definido en la reivindicación 36, en el que:
los medios para ampliar la lista de códigos de base C constan de medios para proporcionar un subconjunto V de los puntos del reticulado \Lambda;
los medios para indexar el punto reticular y en la lista de códigos ampliada comprenden los medios para indexar el punto reticular y dentro de un número entero de la lista de códigos n y un índice i como y = mc + v, donde c es un elemento de la lista de códigos de base C, v es un elemento del subconjunto V, y m es un número entero mayor que o igual a 2;
el codificador de señal comprende los medios para definir la lista de códigos de base C, el subconjunto V del reticulado \Lambda, el número entero m y el índice i a partir del número de la lista de códigos n.
\vskip1.000000\baselineskip
38. A descodificador de señal para descodificar una señal de fuente codificada transmitida o almacenada utilizando la cuantificación reticular de multivelocidad, comprendiendo el descodificado:
los medios de memoria para proporcionar una lista de códigos de base C derivada de un reticulado \Lambda;
recibir los medios para proporcionar un número de la lista de códigos codificado n y un índice de cuantificación codificado i; caracterizado por el hecho de que
los medios para desmultiplexar el índice de cuantificación i utilizando el número de la lista de códigos n;
los medios para verificar si el número de la lista de códigos es n = 0;
si n = 0, los medios para descodificar el índice de cuantificación i utilizando la lista de códigos de base C, generando un vector de códigos cuantificado y;
los medios para verificar si n > 0;
si n > 0, los medios para proporcionar una lista de códigos de Voronoi preseleccionada V^{(r)}; los medios para establecer un orden de ampliación para r = n y un factor de escala para m = 2^{r}; los medios para desmultiplexar índices j y k a partir del índice de cuantificación i; los medios para descodificar j de manera que se genera un vector de códigos c a partir de la lista de códigos de base C; los medios para descodificar el índice k de manera que se genera un vector de códigos v a partir de la lista de códigos de Voronoi V^{(r)}; y los medios para reconstruir un vector de códigos cuantificado como y = mc + v;
donde el vector de códigos reconstruido y representa una representación cuantificada de una trama de muestras de la señal de fuente.
39. Un descodificador de señal utilizando una cuantificación reticular de multivelocidad tal y como se define en la reivindicación 38, en el que:
los medios para proporcionar una lista de códigos de Voronoi preseleccionada V^{(r)} comprende los medios para proporcionar un subconjunto V del reticulado \Lambda;
los medios para reconstruir el vector de códigos cuantificado y como y = mc + v comprende los medios para reconstruir el punto reticular c como un elemento de la lista de códigos de base C y los medios para reconstruir el punto reticular v como un elemento del subconjunto V del reticulado \Lambda;
donde el descodificado de señal comprende los medios para definir la lista de códigos de base C y el subconjunto V del reticulado \Lambda, el número entero m y el índice i a partir del número de la lista de códigos n.
ES03727093T 2002-05-31 2003-05-30 Procedimiento y sistema de cuantificacion vectorial multi-velocidad de enrejado de una señal. Expired - Lifetime ES2331876T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA2388358 2002-05-31
CA002388358A CA2388358A1 (en) 2002-05-31 2002-05-31 A method and device for multi-rate lattice vector quantization

Publications (1)

Publication Number Publication Date
ES2331876T3 true ES2331876T3 (es) 2010-01-19

Family

ID=29589087

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03727093T Expired - Lifetime ES2331876T3 (es) 2002-05-31 2003-05-30 Procedimiento y sistema de cuantificacion vectorial multi-velocidad de enrejado de una señal.

Country Status (18)

Country Link
US (1) US7106228B2 (es)
EP (1) EP1514355B1 (es)
JP (1) JP4224021B2 (es)
KR (1) KR20050008761A (es)
CN (1) CN1659785B (es)
AT (1) ATE440409T1 (es)
AU (1) AU2003233723A1 (es)
BR (1) BR0311336A (es)
CA (1) CA2388358A1 (es)
DE (1) DE60328892D1 (es)
DK (1) DK1514355T3 (es)
ES (1) ES2331876T3 (es)
MX (1) MXPA04011841A (es)
NO (1) NO20045718L (es)
PT (1) PT1514355E (es)
RU (1) RU2004138289A (es)
WO (1) WO2003103151A1 (es)
ZA (1) ZA200408780B (es)

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002309206A1 (en) * 2001-05-22 2002-12-03 Soliton Holdings Corp. Method for digital quantization
EP1709743A1 (fr) 2004-01-30 2006-10-11 France Telecom S.A. Quantification vectorielle en dimension et resolution variables
CA2457988A1 (en) 2004-02-18 2005-08-18 Voiceage Corporation Methods and devices for audio compression based on acelp/tcx coding and multi-rate lattice vector quantization
US7587314B2 (en) * 2005-08-29 2009-09-08 Nokia Corporation Single-codebook vector quantization for multiple-rate applications
JP4801160B2 (ja) * 2005-09-23 2011-10-26 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 逐次改善可能な格子ベクトル量子化
US20070094035A1 (en) * 2005-10-21 2007-04-26 Nokia Corporation Audio coding
US20070168197A1 (en) * 2006-01-18 2007-07-19 Nokia Corporation Audio coding
US8346544B2 (en) * 2006-01-20 2013-01-01 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with closed loop re-decision
US8090573B2 (en) * 2006-01-20 2012-01-03 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with open loop re-decision
US8032369B2 (en) * 2006-01-20 2011-10-04 Qualcomm Incorporated Arbitrary average data rates for variable rate coders
FR2897742A1 (fr) * 2006-02-17 2007-08-24 France Telecom Codage/decodage perfectionnes de signaux numeriques, en particulier en quantification vectorielle avec codes a permutation
WO2007107159A1 (en) * 2006-03-20 2007-09-27 Aalborg Universitet Communication system and method for communication in a communication system
US7966175B2 (en) * 2006-10-18 2011-06-21 Polycom, Inc. Fast lattice vector quantization
US7953595B2 (en) 2006-10-18 2011-05-31 Polycom, Inc. Dual-transform coding of audio signals
US7961640B2 (en) * 2006-10-26 2011-06-14 Qualcomm Incorporated Method and apparatus for codebook exchange in a multiple access wireless communication system
US20080120098A1 (en) * 2006-11-21 2008-05-22 Nokia Corporation Complexity Adjustment for a Signal Encoder
US7983322B2 (en) * 2007-01-09 2011-07-19 Broadcom Corporation Method and system for codebook design of MIMO pre-coders with finite rate channel state information feedback
CN101266796B (zh) * 2007-03-12 2012-05-23 华为技术有限公司 一种量化编解码方法及装置
KR101285595B1 (ko) * 2007-03-16 2013-07-15 퍼듀 리서치 파운데이션 다중 입출력 시스템을 위한 프리코딩 행렬 코드북 생성장치 및 그 방법
US7839945B2 (en) * 2007-03-20 2010-11-23 Nec Laboratories America, Inc. Static and differential precoding codebook for MIMO systems
CN100583649C (zh) * 2007-07-23 2010-01-20 华为技术有限公司 矢量编/解码方法、装置及流媒体播放器
WO2009022193A2 (en) 2007-08-15 2009-02-19 Nokia Corporation Devices, methods and computer program products for audio signal coding and decoding
DK3401907T3 (da) * 2007-08-27 2020-03-02 Ericsson Telefon Ab L M Fremgangsmåde og indretning til perceptuel spektral afkodning af et audiosignal omfattende udfyldning af spektrale huller
WO2009044346A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation System and method for combining adaptive golomb coding with fixed rate quantization
CN101419802B (zh) * 2007-10-25 2011-07-06 华为技术有限公司 用于语音编码的矢量量化方法及矢量量化器
CN101436408B (zh) * 2007-11-13 2012-04-25 华为技术有限公司 矢量量化方法及矢量量化器
WO2009056047A1 (en) * 2007-10-25 2009-05-07 Huawei Technologies Co., Ltd. A vector quantizating method and vector quantizer
JP4871246B2 (ja) * 2007-10-30 2012-02-08 日本電信電話株式会社 ベクトル量子化方法,装置およびそれらのプログラムとそれを記録したコンピュータ読み取り可能な記録媒体
CN101430879B (zh) * 2007-11-05 2011-08-10 华为技术有限公司 一种多速率语音频编码的方法
US20100324708A1 (en) 2007-11-27 2010-12-23 Nokia Corporation encoder
RU2461079C2 (ru) * 2008-02-15 2012-09-10 Нокиа Корпорейшн Упрощенная индексация и деиндексация векторов
PL3367381T3 (pl) * 2008-02-15 2020-12-14 Nokia Technologies Oy Kwantyfikacja dźwięku poprzez redukcję złożoności indeksowania wektorów
EP2274833B1 (en) 2008-04-16 2016-08-10 Huawei Technologies Co., Ltd. Vector quantisation method
CN101281750B (zh) * 2008-05-29 2010-12-22 上海交通大学 基于变长分裂表的矢量量化高阶码本扩展编码及解码系统
FR2931963A1 (fr) * 2008-06-02 2009-12-04 Centre Nat Rech Scient Procede de traitement de donnees numeriques
FR2931964A1 (fr) * 2008-06-02 2009-12-04 Centre Nat Rech Scient Procede de denombrement des vecteurs dans les reseaux reguliers de points.
AU2009271019A1 (en) 2008-07-14 2010-01-21 Gilead Sciences, Inc. Fused heterocyclyc inhibitors of histone deacetylase and/or cyclin-dependent kinases
WO2010009139A2 (en) 2008-07-14 2010-01-21 Gilead Colorado, Inc. Imidazolyl pyrimidine inhibitor compounds
US8344018B2 (en) 2008-07-14 2013-01-01 Gilead Sciences, Inc. Oxindolyl inhibitor compounds
MX2011001090A (es) 2008-07-28 2011-03-15 Gilead Sciences Inc Compuestos de inhibidor de desacetilasa de histona de cicloalquilideno y heterocicloalquilideno.
CN101430881B (zh) * 2008-11-10 2013-04-17 华为技术有限公司 一种编码、解码、编解码方法、编解码系统以及相关装置
WO2010078964A1 (en) * 2009-01-09 2010-07-15 Nokia Corporation Cyclic leader vectors for search of binary cyclic code
US20100223061A1 (en) * 2009-02-27 2010-09-02 Nokia Corporation Method and Apparatus for Audio Coding
CN101577551A (zh) 2009-05-27 2009-11-11 华为技术有限公司 一种生成格型矢量量化码书的方法及装置
MX2011013166A (es) 2009-06-08 2012-01-30 Gilead Sciences Inc Compuestos inhibidores de hdac de cicloalquilcarbamatobenzamida-an ilina.
EP2440519A1 (en) 2009-06-08 2012-04-18 Gilead Sciences, Inc. Alkanoylamino benzamide aniline hdac inihibitor compounds
CN102081926B (zh) * 2009-11-27 2013-06-05 中兴通讯股份有限公司 格型矢量量化音频编解码方法和系统
EP2525354B1 (en) 2010-01-13 2015-04-22 Panasonic Intellectual Property Corporation of America Encoding device and encoding method
CN102158692B (zh) 2010-02-11 2013-02-13 华为技术有限公司 编码方法、解码方法、编码器和解码器
JP6073215B2 (ja) 2010-04-14 2017-02-01 ヴォイスエイジ・コーポレーション Celp符号器および復号器で使用するための柔軟で拡張性のある複合革新コードブック
EP2562750B1 (en) 2010-04-19 2020-06-10 Panasonic Intellectual Property Corporation of America Encoding device, decoding device, encoding method and decoding method
US20120109993A1 (en) * 2010-10-28 2012-05-03 Qualcomm Incorporated Performing Visual Search in a Network
CN102623012B (zh) * 2011-01-26 2014-08-20 华为技术有限公司 矢量联合编解码方法及编解码器
PL2676266T3 (pl) 2011-02-14 2015-08-31 Fraunhofer Ges Forschung Układ kodowania na bazie predykcji liniowej wykorzystujący kształtowanie szumu w dziedzinie widmowej
AU2012217158B2 (en) 2011-02-14 2014-02-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Information signal representation using lapped transform
PT2676267T (pt) 2011-02-14 2017-09-26 Fraunhofer Ges Forschung Codificação e descodificação de posições de pulso de faixas de um sinal de áudio
CN103493129B (zh) 2011-02-14 2016-08-10 弗劳恩霍夫应用研究促进协会 用于使用瞬态检测及质量结果将音频信号的部分编码的装置与方法
BR112013020324B8 (pt) 2011-02-14 2022-02-08 Fraunhofer Ges Forschung Aparelho e método para supressão de erro em fala unificada de baixo atraso e codificação de áudio
PL2676268T3 (pl) 2011-02-14 2015-05-29 Fraunhofer Ges Forschung Urządzenie i sposób przetwarzania zdekodowanego sygnału audio w domenie widmowej
US9036925B2 (en) 2011-04-14 2015-05-19 Qualcomm Incorporated Robust feature matching for visual search
CA2833868C (en) 2011-04-21 2019-08-20 Samsung Electronics Co., Ltd. Apparatus for quantizing linear predictive coding coefficients, sound encoding apparatus, apparatus for de-quantizing linear predictive coding coefficients, sound decoding apparatus, and electronic device therefor
JP6178305B2 (ja) 2011-04-21 2017-08-09 サムスン エレクトロニクス カンパニー リミテッド 量子化方法
NO2669468T3 (es) 2011-05-11 2018-06-02
US8706711B2 (en) 2011-06-22 2014-04-22 Qualcomm Incorporated Descriptor storage and searches of k-dimensional trees
WO2013005065A1 (en) 2011-07-01 2013-01-10 Nokia Corporation Multiple scale codebook search
US8924203B2 (en) 2011-10-28 2014-12-30 Electronics And Telecommunications Research Institute Apparatus and method for coding signal in a communication system
US8666753B2 (en) * 2011-12-12 2014-03-04 Motorola Mobility Llc Apparatus and method for audio encoding
EP2812816A1 (en) * 2012-02-06 2014-12-17 Thomson Licensing Interactive content search using comparisons
US9454972B2 (en) 2012-02-10 2016-09-27 Panasonic Intellectual Property Corporation Of America Audio and speech coding device, audio and speech decoding device, method for coding audio and speech, and method for decoding audio and speech
CN104221287B (zh) * 2012-03-29 2017-05-31 瑞典爱立信有限公司 矢量量化器
CN104620315B (zh) * 2012-07-12 2018-04-13 诺基亚技术有限公司 一种矢量量化的方法及装置
PL2915166T3 (pl) * 2012-10-30 2019-04-30 Nokia Technologies Oy Sposób i urządzenie do kwantyzacji odpornego wektora
US20160019900A1 (en) * 2013-02-01 2016-01-21 Nokia Technologies Oy Method and apparatus for lattice vector quantization of an audio signal
CN105144288B (zh) 2013-04-05 2019-12-27 杜比国际公司 高级量化器
US9455799B2 (en) 2013-08-06 2016-09-27 OptCTS, Inc. Dynamic control of quality of service (QOS) using derived QOS measures
US9444580B2 (en) 2013-08-06 2016-09-13 OptCTS, Inc. Optimized data transfer utilizing optimized code table signaling
US10523490B2 (en) 2013-08-06 2019-12-31 Agilepq, Inc. Authentication of a subscribed code table user utilizing optimized code table signaling
CN106030703B (zh) * 2013-12-17 2020-02-04 诺基亚技术有限公司 音频信号编码器
JP6542796B2 (ja) 2014-03-28 2019-07-10 サムスン エレクトロニクス カンパニー リミテッド 線形予測係数量子化方法及びその装置、並びに線形予測係数逆量子化方法及びその装置
EP4336500A3 (en) 2014-04-17 2024-04-03 VoiceAge EVS LLC Methods, encoder and decoder for linear predictive encoding and decoding of sound signals upon transition between frames having different sampling rates
CN112927703A (zh) 2014-05-07 2021-06-08 三星电子株式会社 对线性预测系数量化的方法和装置及解量化的方法和装置
GB2527099B (en) * 2014-06-11 2018-07-18 Gurulogic Microsystems Oy Apparatus and method for data compression
US10056919B2 (en) 2014-07-02 2018-08-21 Agilepq, Inc. Data recovery utilizing optimized code table signaling
SE538512C2 (sv) 2014-11-26 2016-08-30 Kelicomp Ab Improved compression and encryption of a file
WO2017005296A1 (en) 2015-07-06 2017-01-12 Nokia Technologies Oy Bit error detector for an audio signal decoder
WO2017214060A1 (en) 2016-06-06 2017-12-14 Agilepq, Inc. Data conversion systems and methods
US10366698B2 (en) * 2016-08-30 2019-07-30 Dts, Inc. Variable length coding of indices and bit scheduling in a pyramid vector quantizer
US10020839B2 (en) * 2016-11-14 2018-07-10 Rampart Communications, LLC Reliable orthogonal spreading codes in wireless communications
US10200814B1 (en) * 2018-04-24 2019-02-05 The Florida International University Board Of Trustees Voronoi diagram-based algorithm for efficient progressive continuous k-nearest neighbor query for moving objects
RU2769429C2 (ru) * 2018-08-17 2022-03-31 Нокиа Текнолоджиз Ой Кодер звукового сигнала
US10965352B1 (en) 2019-09-24 2021-03-30 Rampart Communications, Inc. Communication system and methods using very large multiple-in multiple-out (MIMO) antenna systems with extremely large class of fast unitary transformations
CN111914714B (zh) * 2020-07-24 2021-05-14 深圳市鹰硕教育服务有限公司 点阵本交互方法
CN114770971B (zh) * 2022-04-27 2023-07-07 郑州大学 泡沫填充仿生点阵复合结构及其制备方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371544A (en) * 1992-02-07 1994-12-06 At&T Corp. Geometric vector quantization
AU668817B2 (en) * 1993-03-26 1996-05-16 Blackberry Limited Vector quantizer method and apparatus
US5943446A (en) * 1995-07-19 1999-08-24 Unisys Corporation Method and apparatus for increasing the speed of a full code book search in a quantizer encoder
US6215910B1 (en) * 1996-03-28 2001-04-10 Microsoft Corporation Table-based compression with embedded coding
US6128346A (en) * 1998-04-14 2000-10-03 Motorola, Inc. Method and apparatus for quantizing a signal in a digital system
US6516297B1 (en) * 1998-12-23 2003-02-04 At&T Corp. Multiple description lattice vector quantization
US6807312B2 (en) * 2001-07-13 2004-10-19 Sharp Laboratories Of America, Inc. Robust codebooks for vector quantization

Also Published As

Publication number Publication date
CN1659785B (zh) 2011-04-20
DK1514355T3 (da) 2009-12-14
KR20050008761A (ko) 2005-01-21
ZA200408780B (en) 2005-08-30
US20050285764A1 (en) 2005-12-29
WO2003103151A1 (en) 2003-12-11
MXPA04011841A (es) 2005-07-26
DE60328892D1 (de) 2009-10-01
AU2003233723A1 (en) 2003-12-19
JP2005528839A (ja) 2005-09-22
EP1514355A1 (en) 2005-03-16
EP1514355B1 (en) 2009-08-19
NO20045718L (no) 2005-02-22
ATE440409T1 (de) 2009-09-15
CN1659785A (zh) 2005-08-24
US7106228B2 (en) 2006-09-12
BR0311336A (pt) 2005-03-15
JP4224021B2 (ja) 2009-02-12
RU2004138289A (ru) 2005-06-10
PT1514355E (pt) 2009-11-19
CA2388358A1 (en) 2003-11-30

Similar Documents

Publication Publication Date Title
ES2331876T3 (es) Procedimiento y sistema de cuantificacion vectorial multi-velocidad de enrejado de una señal.
US10700808B2 (en) Method and apparatus for encoding data using a polar code
KR101190875B1 (ko) 차원 벡터 및 가변 분해능 양자화
KR101405962B1 (ko) Ldpc 코드를 이용한 복호화 방법
KR100709545B1 (ko) 부호기 및 복호기
CN101032082B (zh) 编码和解码数据的方法和设备
JP4602406B2 (ja) データをエンコード及びデコードするための方法並びに装置
KR100982211B1 (ko) 다중의 속도 애플리케이션에 대한 단일 코드북 벡터 양자화
ES2880779T3 (es) Método y aparato para la indexación y desindexación de cuantificación vectorial piramidal de vectores de muestra de audio/video
ES2902518T3 (es) Codificador de audio
CN104917536B (zh) 一种支持低码率编码的方法及装置
JP2010532129A (ja) パリティ検査行列の生成
KR20090065791A (ko) 낮은 복잡도 및 고속 복호를 위한 패리티 검사행렬 생성방법과, 그를 이용한 저밀도 패리티 검사 부호의 부호화장치 및 그 방법
US20130139038A1 (en) Error correcting decoding device and error correcting decoding method
WO2015120719A1 (zh) 信息处理方法及装置
KR100984234B1 (ko) 벡터 코딩/디코딩 방법 및 장치 그리고 스트림 미디어플레이어
JP2016510454A (ja) 頂点誤差訂正のための方法および装置
US8307184B1 (en) Communication and memory capacity enhancement method and apparatus
KR20050063660A (ko) 저밀도 패리티 검사 부호의 부호화와 복호 장치 및 그방법
JP2009526445A (ja) 順列を生成するための方法および装置
JP2009530940A (ja) 抑制されたベクトル量子化
CN107733441B (zh) 编码方法及装置、译码方法及装置
KR102382491B1 (ko) 시퀀스 결정을 위한 방법 및 장치, 디바이스 및 저장 매체
Wang et al. Hierarchy-oriented searching algorithms using alternative duplicate codewords for vector quantization mechanism
CA2482994C (en) Method and system for multi-rate lattice vector quantization of a signal