MX2008008987A - Transformadas con factores comunes. - Google Patents
Transformadas con factores comunes.Info
- Publication number
- MX2008008987A MX2008008987A MX2008008987A MX2008008987A MX2008008987A MX 2008008987 A MX2008008987 A MX 2008008987A MX 2008008987 A MX2008008987 A MX 2008008987A MX 2008008987 A MX2008008987 A MX 2008008987A MX 2008008987 A MX2008008987 A MX 2008008987A
- Authority
- MX
- Mexico
- Prior art keywords
- group
- constant
- multiplication
- data value
- rational
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000013459 approach Methods 0.000 claims description 24
- 238000007792 addition Methods 0.000 claims description 23
- 230000008859 change Effects 0.000 claims description 20
- 230000009466 transformation Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 7
- 238000004364 calculation method Methods 0.000 description 18
- 238000004422 calculation algorithm Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000000844 transformation Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000005056 compaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 241000255777 Lepidoptera Species 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- UWHCKJMYHZGTIT-UHFFFAOYSA-N tetraethylene glycol Chemical compound OCCOCCOCCOCCO UWHCKJMYHZGTIT-UHFFFAOYSA-N 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/4836—Computations with rational numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Se describen técnicas para ejecutar de manera eficiente las transformadas; en un diseño, un aparato ejecuta la multiplicación de un primer grupo por lo menos de un valor de datos con un primer grupo por lo menos de una constante diádica racional que se aproxima a un primer grupo por lo menos de una constante irracional escalada por un primer factor común; el aparato además ejecuta la multiplicación de un segundo grupo por lo menos de un valor de datos con un segundo grupo por lo menos de una constante diádica racional que se aproxima a un segundo grupo por lo menos de una constante irracional escalada por un segundo factor común; cada constante diádica racional es un número racional con un denominador diádico; el primer y segundo grupos por lo menos de un valor de datos tienen diferentes tamaños; los primeros factores y los factores comunes se pueden seleccionar con base en el número de operaciones lógicas y aritméticas para las multiplicaciones, la precisión de los resultados, etc.
Description
TRANSFORMADAS CON FACTORES COMUNES
CAMPO DE LA INVENCION
La presente invención se refiere generalmente al procesamiento y, de manera más especifica, a técnicas para ejecutar las transformadas en datos.
ANTECEDENTES DE LA INVENCION
Las transformadas por lo regular se utilizan para convertir datos de un dominio a otro domino. Por ejemplo, la transformada de coseno discreta (DCT) comúnmente se utiliza para transformar datos de dominio espacial a dominio de frecuencia, y la transformada de coseno discreta inversa (IDCT) comúnmente se utiliza para transformar datos de dominio de frecuencia a dominio espacial. DCT es ampliamente utilizada para compresión de imagen/video a fin de descorrelacionar, de manera espacial, bloques de elementos de figuras (pixeles) en imágenes o cuadros de video. Los coeficientes de transformada resultantes por lo regular dependen mucho menos entre si, lo cual hace que estos coeficientes sean más convenientes para la cuantificación y codificación. DCT también muestra propiedad de compactación de energía, lo cual es la capacidad para mapear la mayoría de la energía de un bloque de píxeles únicamente a unos cuantos coeficientes de transformada (por lo regular de bajo orden) . Esta propiedad de compactación de energía puede simplificar el diseño de los algoritmos de codificación. Las transformadas tales como DCT e IDCT se pueden ejecutar en cantidades grandes de datos. Por lo tanto, es deseable realizar las transformadas de la forma más eficiente posible. Además, es deseable realizar el cálculo para transformadas utilizando hardware simple a fin de reducir el costo y la complejidad. Por lo tanto, existe la necesidad de técnicas para ejecutar de manera eficiente las transformadas en datos .
SUMARIO DE LA INVENCION
Aquí se describen técnicas para ejecutar de manera eficiente las transformadas sen datos. De acuerdo con un aspecto, un aparato realiza la multiplicación de un primer grupo por lo menos de un valor de datos con un primer grupo por lo menos de una constante diádica racional que se aproxima a un primer grupo por lo menos de una constante irracional escalada por un primer factor común. El aparato además realiza la multiplicación de un segundo grupo por lo menos de un valor de dato con un segundo grupo por lo menos de una constante diádica racional que se aproxima a un segundo grupo por lo menos de una constante irracional escalada por un segundo factor común. Cada constante diádica racional es un número racional con un denominador diádico. El primer y segundo grupos por lo menos de un valor de datos tienen diferentes tamaños. Por ejemplo, el primer grupo puede incluir dos valores de datos, y el segundo grupo puede incluir cuatro valores de datos . De acuerdo con otro aspecto, un aparato realiza la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional que se aproxima por lo menos a una constante irracional escalada por un factor común. El factor común es seleccionado con base en el número de operaciones lógicas y aritméticas para la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional. Las operaciones lógicas y aritméticas pueden comprender operaciones de cambio, resta y suma. Los factores comunes además se pueden seleccionar con base en la precisión de los resultados. Diversos aspectos y características de la descripción ahora se analizarán con mayor detalle a continuación .
BREVE DESCRIPCION DE LAS FIGURAS La figura 1 muestra una gráfica de flujo de una IDCT de 8 puntos. La figura 2 muestra una gráfica de flujo de una DCT de 8 puntos. La figura 3 muestra una gráfica de flujo de una IDCT de 8 puntos con factores comunes. La figura 4 muestra una gráfica de flujo de una DCT de 8 puntos con factores comunes. La figura 5 muestra un cuadro de búsqueda que almacena los números de operaciones para multiplicación con diferentes valores de constante diádica racional. La figura 6 muestra un diagrama en bloques de una IDCT bidimensional (2D) . La figura 7 muestra un diagrama en bloques de un sistema de codificación y decodificación de imágenes/video. La figura 8 muestra un diagrama en bloques de un sistema de codificación. La figura 9 muestra un diagrama en bloques de un sistema de decodificación.
DESCRIPCION DETALLADA DE LA INVENCION Las técnicas aquí descritas se pueden utilizar para diversos tipos de transformadas tales como DCT, IDCT, transformada de Fourier discreta (DFT), DFT inversa (IDFT), transformada de superposición modulada (MLT) , MLT inversa, transformada de superposición compleja modulada (MCLT) , CLT inversa, etc. Las técnicas también se pueden utilizar para diversas aplicaciones tales como procesamiento de imágenes, video y audio, comunicación, cálculo, conexión en red de datos, almacenamiento de datos, gráficas, etc. En general, las técnicas se pueden utilizar para cualquier aplicación que utilice una transformada. Por claridad, las técnicas se describen a continuación para DCT e IDCT, las cuales por lo regular se -utilizan en procesamiento de imágenes y video. Una DCT de N-puntos de unidimensional (ID) y una IDCT de N-puntos ID de tipo II se pueden definir de la siguiente forma:
L 2 ¿o 2N Ecuación (1)
?? 2 Ecuación (2)
donde c k) l de otra forma
x [ n] es una función de dominio espacial ID, y X[ k] es una función de dominio de frecuencia ID. La DCT ID en la ecuación (1) opera en N valores de dominio espacial x[0] a x[N-l] y genera N coeficientes de transformada X[0] a X[N-1] . La IDCT ID en la ecuación (2) opera en N coeficientes de transformada y genera N valores de dominio espacial. La DCT Tipo II es un tipo de transformada y comúnmente se cree que es una de las transformadas más eficientes entre varias transformadas de compactación de energía propuestas para la compresión de imágenes/video . La DCT ID se utiliza para una DCT 2D, tal como se describe a continuación. De manera similar, la IDCT ID se puede utilizar para una IDCT 2D. Al descomponer las DCT/IDCT 2D en una cascada de DCT/IDCT ID, la eficiencia de las DCT/IDCT 2D depende de la eficiencia de las DCT/IDCT ID. En general, DCT ID y IDCT ID se pueden ejecutar en cualquier tamaño de vector, y DCT 2D y IDCT 2D se pueden ejecutar en cualquier tamaño de bloque. Sin embargo, 8x8 DCT y 8x8 IDCT comúnmente se utilizan para procesamiento de imagen y video, en donde N es igual a 8. Por ejemplo, 8x8 DCT y 8x8 IDCT se utilizan como bloques de construcción estándar en diversas normas de codificación de imagen y video tal como JPEG, MPEG-1, MPEG-2, MPEG-4 (P.2), H.261, H.263, etc. La DCT ID e IDCT ID se pueden ejecutar en sus formas originales que se muestran en las ecuaciones (1) y (2) respectivamente. Sin embargo, se puede observar una reducción sustancial en la complejidad computacional encontrando las factorizaciones que resultan en la menor cantidad posible de multiplicaciones y sumas. Una factorización para una transformada puede ser representada por una gráfica de flujo que indique operaciones especificas que van a ser ejecutadas para esa transformada. La figura 1 muestra una gráfica de flujo 100 de una factorización ejemplar de una IDCT de 8 puntos. En la gráfica de flujo 100, cada suma es representada por el símbolo " T " y cada multiplicación es representada por una caja. Cada adición suma o resta dos valores de entrada y provee un valor de salida. Cada multiplicación multiplica un valor de entrada con una constante de transformada que se muestra dentro de la caja y provee un valor de salida. La factorización en la figura 1 tiene seis multiplicaciones con los siguientes factores constantes:
C 4 = cos(;r/4) « 0.707106781,
C3jr,8 = cos(3;z 8) * 0.382683432, y
S3;r/8 = sin(3;r/8) « 0.923879533.
La gráfica de flujo 100 recibe ocho coeficientes de transformada escalada ?0·?[ ] a ??·?[?], ejecuta una IDCT de 8 puntos en estos coeficientes, y genera ocho muestras de salida x[0] a x[l] . A0 a ?? son factores de escala y se proporcionan a continuación.
) ¾0.4499881115,
= cos(^8) ¾ 06532814824 = cos(5,r/16) ¾ 2548977895 3 2+2cos(3r/8)
cos(3,r/16) ¾12814577239 ? =¦ «0.3535533906, 2 2 2-2cos(3z 8)
cos(3;r/8) cos(r/16) 0.2705980501, ?? = * 0.3006724435. 2 + 2sin(3z78)
La gráfica de flujo 100 incluye un número de
operaciones de mariposa. Una operación de mariposa recibe dos valores de entrada y genera dos valores de salida, en
donde un valor de salida es la suma de los dos valores de
entrada y el otro valor de salida es la diferencia de los
dos valores de entrada. Por ejemplo, la operación de
mariposa en los valores de entrada ?0·?[0] y ?4· [4] genera
un valor de salida ?0·?[0] +A4 · [4] para la ramificación superior y un valor de salida A0 · X[ 0 ] -A4 · X[ 4 ] para la
ramificación inferior.
La figura 2 muestra una gráfica de flujo 200 de
una factorización ejemplar de una DCT de 8 puntos. La
gráfica de flujo 200 recibe ocho muestras de entrada x[0] a x[7], ejecuta una DCT de 8 puntos en estas muestras de
entrada, y genera ocho coeficientes de transformada escalada 8?0·?[0] a 8??·?[?] . Los factores de escala A0 a A7 se proporcionaron arriba. La factorización en la figura 2 tiene seis multiplicaciones con factores constantes 1/C 4 ,
Las gráficas de flujo para la IDCT y DCT en las figuras 1 y 2 son similares e involucran multiplicaciones esencialmente por los mismos factores constantes (con la diferencia en 1/2). Dicha similitud puede ser conveniente para ejecución de la DCT e IDCT en un circuito integrado. En particular, la similitud puede permitir ahorros de silicio o área muerta para ejecutar las mariposas y las multiplicaciones por constantes de transformada, las cuales se utilizan tanto en transformadas de avance como inversas. La factorización que se muestra en la figura 1 resulta en un total de 6 multiplicaciones y 28 sumas, las cuales son sustancialmente menores que el número de multiplicaciones y sumas que se requieren para el cálculo directo de la ecuación (2) . La factorización mostrada en la figura 2 también resulta en un total de 6 multiplicaciones y 28 sumas, las cuales son sustancialmente menores que el número de multiplicaciones y sumas que se requieren para el cálculo directo de la ecuación (1) . La factorización en la figura 1 ejecuta la rotación plana en dos variables intermedias con C3 8 y S3íl/S . La factorización en la figura 2 ejecuta la rotación plana en dos variables intermedias con 1ClKl% y 2S3?r/g . Una rotación plana se logra multiplicando una variable intermedia tanto con el seno como con el coseno, por ejemplo, coseno ( 3 p /8 ) y seno(3 r/8) en la figura 1. Las multiplicaciones para la rotación plana se pueden realizar de manera eficiente utilizando las técnicas de cálculo que se describen a continuación. Las figuras 1 y 2 muestran factorizaciones ejemplares de una IDCT de 8 puntos y una DCT de 8 puntos, respectivamente. Estas factorizaciones son para IDCT escalada y DCT escalada, en donde "escalada" se refiere a la escalación de los coeficientes de transformada X[ ] a X[7] con factores de escala conocidos A0 a A7, respectivamente. Otras factorizaciones también han sido derivadas utilizando el mapeo para otros algoritmos rápidos conocidos tales como un algoritmo DFT de Cooley-Tukey o aplicando procedimientos sistemáticos de factorización tales como una decimación en tiempo o decimación en frecuencia. En general, la factorización reduce el número de multiplicaciones pero no las elimina. Las multiplicaciones en las figuras 1 y 2 son con constantes irracionales que representan el seno y coseno de diferentes ángulos, los cuales son múltiplos de p/8 para la DCT e IDCT de 8 puntos. Una constante irracional es una constante que no es una relación de dos enteros. Las multiplicaciones con constantes irracionales pueden ser ejecutadas de manera más eficiente en una aritmética de enteros de punto fijo cuando cada constante irracional es aproximada por una constante diádica racional. Una constante diádica racional es una constante racional con un denominador diádico y tiene la forma c/2b, en donde b y c son enteros y b>0. Las multiplicaciones de una variable de entero con una constante diádica racional se pueden lograr con operaciones lógicas y aritméticas, tal como se describe a continuación. El número de operaciones lógicas y aritméticas depende de la manera en la cual se realiza el cálculo asi como el valor de la constante diádica racional. En un aspecto, los factores comunes se utilizan para reducir el número total de operaciones para una transformada y/o para mejorar la precisión de los resultados de transformada. Un factor común es una constante que es aplicada a una o más variables intermedias en una transformada. Una variable intermedia también se puede denominar como un valor de datos, etc. Un factor común puede ser absorbido con una o más constantes de transformada y también se puede considerar mediante la alteración de uno o más factores de escala. Un factor común puede mejorar la aproximación de una o más constantes de transformada (irracional) por una o más constantes diádicas racionales, lo cual puede entonces resultar en un numero total menor de operaciones y/o precisión mejorada.
En general, se puede utilizar cualquier número de factores comunes para una transformada, y cada factor común puede ser aplicado a cualquier número de variables intermedias en la transformada. En un diseño, múltiples factores comunes se utilizan para una transformada y se aplican a múltiples grupos de variables intermedias de diferentes tamaños. En otro diseño, múltiples factores comunes se aplican a múltiples grupos de variables intermedias del mismo tamaño. La figura 3 muestra una gráfica de flujo 300 de una IDCT de 8 puntos con factores comunes. La gráfica de flujo 300 utiliza la misma factorización que la gráfica de flujo 100 en la figura 1. Sin embargo, la gráfica de flujo 300 utiliza dos factores comunes para dos grupos de variables intermedias. Un primer factor común Fi se aplica a un primer grupo de dos variables intermedias Xi y X2, el cual es generado con base en los coeficientes de transformada X[2] y X[6] . El primer factor común Fx es multiplicado por Xi, es absorbido con la constante de transformada xli, y se considera alterando los factores de escala A2 y A6. Un segundo factor común F2 se aplica a un segundo grupo de cuatro variables intermedias X3 a X&, el cual es generado con base en los coeficientes de transformada X[l], X[3] , X[5] y X[7]. El segundo factor común F2 es multiplicado por Xir es absorbido con las constantes de transformada Cnl^,
Y ^3^ 8 Y se considera alterando los factores de escala El primer factor común F se puede aproximar con una constante diádica racional a, , la cual se puede multiplicar con ¾ para obtener una aproximación del producto i- i. Un factor de transformada escalada Fi-C_./4 se puede aproximar con una constante diádica racional ?, , la cual se puede multiplicar con X2 para obtener una aproximación del producto ¾-Fi-C 4. Un factor de escala alterado ??/Fi se puede aplicar al coeficiente de transformada X[6] . El segundo factor común F2 se puede aproximar con una constante diádica racional 2 , la cual se puede multiplicar con 4 para obtener una aproximación del producto ¾-F2. Un factor de transformada escalada F2-C;-/4 se puede aproximar con una constante diádica racional ß2 , la cual se puede multiplicar con X3 para obtener una aproximación del producto X3 · F2 · . Un factor de transformada escalada F2'C3;r/g se puede aproximar con una constante diádica racional ?2 , y un factor de transformada escalada ?2 ' S3x/g se puede aproximar con una constante diádica racional d2. La constante diádica racional ?2 se puede multiplicar con X5 para obtener una aproximación del producto X5 · F2 · C3jr/g y también con 6 para obtener una aproximación del producto ¾ · F2 · C3jr/8. La constante diádica racional S2 se puede multiplicar con ¾ para obtener una aproximación del producto X5 · F2 · S3l[/i y también con X6 para obtener una aproximación del producto Xe · F2 · S3jr/g . Los factores de escala alterados Ai/F2, A3/F2, A5/F2, y A7/F2 se pueden aplicar a coeficientes de transformada [l], [3] , [5] y X[l], respectivamente. Seis constantes diádicas racionales ar, , ?, , a2 , Pi 1 72 Y ^2 se pueden definir para seis constantes de la siguiente forma:
ai~F A ^ - cos(^/4), Ecuación
or2 w F2, ß2 « F2 · cos(^- /4), ?2~^ ' cos(3^-/8), y d2 « F2 · sin(3r /8)
La figura 4 muestra una gráfica de flujo 400 de una DCT de 8 puntos con factores comunes. La gráfica de flujo 400 utiliza la misma factorización que la gráfica de flujo 200 en la figura 2. Sin embargo, la gráfica de flujo 400 utiliza dos factores comunes para dos grupos de variables intermedias. Un primer factor común Fa se aplica a un primer grupo de dos variables intermedias Xa y Xb, el cual se utiliza para generar coeficientes de transformada X[2] y X[6] . El primer factor común Fa es multiplicado con Xa, es absorbido con la constante de transformada l/Q/4 , y se considera alterando los factores de escala A2 y As. Un segundo factor común Fb se aplica a un segundo grupo de cuatro variables intermedias Xc y Xf, el cual se utiliza para generar coeficientes de transformada X[l], X[3] , X[5] y X[l] . El segundo factor común Fb es multiplicado con Xd, es absorbido con la constante de transformada l/C^ , 2C3;r/g y 2S)/s y se considera alterando los factores de escala ? , A3r A5 y A7. El primer factor común Fa se puede aproximar con una constante diádica racional aa , la cual se puede multiplicar con Xa para obtener una aproximación del producto a* Fa- Un factor de transformada escalada Fa/ Cali se puede aproximar con una constante diádica racional ßa , la cual se puede multiplicar con Xb para obtener una aproximación del producto ?^· Fa/ Cnlii . Factores de escala alterados A2/Fa y Ae/Fa se puede aplicar a los coeficientes de transformada X[2] y X[6], respectivamente. El segundo factor común Fb se puede aproximar con una constante diádica racional cch , la cual se puede multiplicar con Xd para obtener una aproximación del producto Xd-Fb. Un factor de transformada escalada Fb/ ?p/4 se puede aproximar con una constante diádica racional h , la cual se puede multiplicar con Xc para obtener una aproximación del producto Xc'Fb/Cnl¡i. Un factor de transformada escalada 2 Fb - Ci!r/S se puede aproximar con una constante diádica racional yb , y un factor de transformada escalada 2Fb' S3ir/g se puede aproximar con una constante diádica racional Sb . La constante diádica racional yh se puede multiplicar con Xe para obtener una aproximación del producto 2Xe - Fb' CÍÍ/S y también con Xf para obtener una aproximación del producto 2Xf ¦ Fb- 3jr/8. La constante diádica racional Sh se puede multiplicar con Xe para obtener una aproximación del producto 2Xe ' Fb- SÍ!r/s y también con ¾ para obtener una aproximación del producto 2Xf · Fb' S3jrli . Los factores de escala alterados Ai/Fbr A3/Fb, A5/Fbr y A/Fb se pueden aplicar a coeficientes de transformada X[ l ] , X[3] , X[5] y X[ l ] , respectivamente. Seis constantes diádicas racionales aa , ßa , ah , b Yb Y ¾ se pueden definir para seis constantes de la siguiente forma:
a^ Fa, Pa Fa - 8s(n l4), ab Fh, pb * Fb lcos{nl4), yb « 2Fh · cos(3;r / 8), y Sb ~ 2Fb · si (3^ / 8) Ecuación (4) Las figuras 3 y 4 muestran el uso ejemplar de factores comunes para factorizaciones especificas de IDCT de 8 puntos y DCT de 8 puntos, respectivamente. Los factores comunes se pueden utilizar para otras factorizaciones de la DCT e IDCT y también para otros tipos de transformadas. En general, un factor común se puede aplicar a un grupo por lo menos de una variable intermedia en una transformada. Este grupo de variables intermedias se puede generar a partir de un grupo de valores de entrada
(por ejemplo, tal como se muestra en la figura 3) o se puede utilizar para generar un grupo de valores de salida
(por ejemplo, tal como se muestra en la figura 4). El factor común puede ser considerado por los factores de escala aplicados a los valores de entrada o los valores de salida . Múltiples factores comunes se pueden aplicar a múltiples grupos de variables intermedias, y cada grupo puede incluir cualquier número de variables intermedias. La selección de los grupos puede depender de los diversos factores tales como la factorización de la transformada, en donde las constantes de transformada están ubicadas dentro de la transformada, etc. Múltiples factores comunes se pueden aplicar a múltiples grupos de variables intermedias del mismo tamaño (que no se muestran en las figuras 3 y 4) o diferentes tamaños (tal como se muestra en las figuras 3 y 4). Por ejemplo, se pueden utilizar tres factores comunes para la factorización que se muestra en la figura 3, con un primer factor común aplicado a las variables intermedias Xi y X2, un segundo factor común aplicado a las variables intermedias X3, X4, X5, y X6, y un tercer factor común aplicado a dos variables intermedias generadas a partir de X[0] y X[4] . Multiplicaciones de una variable intermedia x con una constante diádica racional u se pueden realizar en diversas formas en aritmética de entero de punto fijo. La multiplicación se puede realizar utilizando operaciones lógicas (por ejemplo, cambio izquierdo, cambio derecho, inversión de bit, etc.), operaciones aritméticas (por ejemplo, suma, resta, inversión de signo, etc.) y/u otras operaciones. El número de operaciones lógicas y aritméticas necesarias para la multiplicación de x con u depende de la forma en la cual se realiza el cálculo y el valor de la constante diádica racional u. Diferentes técnicas de cálculo pueden requerir diferentes números de operaciones lógicas y aritméticas para la misma multiplicación de x con u. Una técnica de cálculo determinada puede requerir diferentes números de operaciones lógicas y aritméticas para la multiplicación de x con diferentes valores de u. Se puede seleccionar un factor común para un grupo de variables intermedias con base en criterios tales como : . El número de operaciones lógicas y aritméticas para realizar la multiplicación, y . La precisión de los resultados. En general, es deseable reducir al mínimo el número de operaciones lógicas y aritméticas para la multiplicación de una variable intermedia con una constante diádica racional. En algunas plataformas de hardware, las operaciones aritméticas (por ejemplo, adiciones) pueden ser más complejas que las operaciones lógicas, de manera que la reducción del número de operaciones aritméticas puede ser más importante. En el extremo, la complejidad computacional puede ser cuantificada con base únicamente en el número de operaciones aritméticas, sin tomar en cuenta las operaciones lógicas. En algunas otras plataformas de hardware, las operaciones lógicas (por ejemplo, cambios) pueden ser más costosas, y la reducción del número de operaciones lógicas (por ejemplo, la reducción del número de operaciones de cambio y/o el número total de bits cambiados) puede ser más importante. En general, se puede utilizar un número promedio ponderado de operaciones lógicas y aritméticas, en donde las ponderaciones pueden representar las complejidades relativas de las operaciones lógicas y aritméticas. La precisión de los resultados se puede cuantificar con base en varias métricas tales como aquellas proporcionadas en el cuadro 6 a continuación. En general, es deseable reducir el número de operaciones lógicas y aritméticas (o la complejidad computacional) para una precisión determinada. También puede ser deseable compensar la complejidad para precisión, por ejemplo, para lograr una procesión más elevada a costas de algunas operaciones adicionales . Tal como se muestra en las figuras 3 y 4, para cada factor común, la multiplicación se puede realizar en un grupo de variables intermedias con un grupo de constantes diádicas racionales que se aproxima a un grupo por lo menos de una constante irracional (por lo menos para un factor de transformada) escalada por ese factor común. La multiplicación en la aritmética de entero de punto fijo se puede realizar de varias formas. Para claridad, técnicas de cómputo que realizan la multiplicación con operaciones de cambio y suma y utilizando resultados intermedios tal como se describe a continuación. Estas técnicas de cómputo pueden reducir el número total de operaciones de cambio y suma para la DCT y la IDCT. La multiplicación de una variable de entero x con una constante irracional µ en aritmética de entero de punto fijo se puede lograr aproximando la constante irracional con una constante diádica racional, de la siguiente forma: µ-c/Z , Ecuación (5)
donde µ es la constante irracional que se va a aproximar,
c/b2 es la constante diádica racional, b y c son enteros, y
b>0.
Debido a la variable de entero x y la constante
diádica racional u = c/b2, un producto de valor entero
y = (x-c)/2h Ecuación (6)
Se puede aproximar utilizando una serie de valores intermedios
3?.3?»? Ecuación (7)
donde yo=0, yi=x, y para todos 2<i<t se obtiene de la siguiente forma:
¡ =±yj±yk-2s', con j,k<i, Ecuación (8)
donde yk'2S' implica ya sea un cambio izquierdo o derecho
(dependiendo del signo de la constante s¿) de valor
intermedio yk por | s¿ | bits.
En la ecuación (8), y¿ puede ser igual a
)>j+yk-2s', yj-yk-2s' , o -yj+yk-2s' . Cada valor intermedio y
en la serie se puede derivar con base en dos valores intermedios previos yj y yk en la serie, en donde ya sea yj o yk puede ser igual a cero. Cada valor intermedio y¿ se puede obtener con un cambio y/o una suma. El cambio no es necesario si s es igual a cero. La suma no es necesaria si yj = yk = 0. El número total de sumas y cambios para la multiplicación queda determinado por el número de valores intermedios en la serie, el cual es t, asi como la expresión utilizada para cada valor intermedio. La multiplicación por la constante diádica racional u es esencialmente desenrollada en una serie de operaciones de cambio y suma. La serie es definida de manera que el valor final en la serie se vuelve el producto con el valor entero deseado o
y'~y' Ecuación (9)
Tal como se muestra en las ecuaciones (5) a (9), la multiplicación de la variable de entero x con la constante irracional µ se puede aproximar con una serie de valores intermedios generados por las operaciones de cambio y suma y utilizando resultados intermedios (o valores intermedios previos generados) para reducir el número total de operaciones. La multiplicación de una variable de entero x con dos constantes irracionales µ y ? en aritmética de entero de punto fijo, se puede lograr aproximando las constantes irracionales con constantes diádicas racionales, de la siguiente forma:
Ecuación (10)
donde c/2b y e/2d son dos constantes diádicas racionales, b, c, d, y e son enteros, £>>0 y d>0. Debido a la variable de entero x y las constantes diádicas racionales u = c/2b y v = e/2d, dos productos de valor entero
y = (x-c)l2b y z = (x-e)/2d Ecuación (11)
se pueden aproximar utilizando una serie de valores intermedios WQ, W\t W2,..., Wt, Ecuación (12) donde w0 = 0, w± = x, y para todos los valores 2<i<t, Wi se obtiene de la siguiente forma:
w¡ = ±Wj ± wk · 2S' , con j,k < i, Ecuación (13)
donde wk-2s' implica un cambio de izquierda o derecha de wk por I Si I bits. La serie es definida de manera que los productos de valor entero deseados se obtienen en los pasos m y n, de la siguiente forma:
wm * y y w„ * z, Ecuación (14)
donde, m,n<t y ya sea m o n es igual a t. Tal como se muestra en las ecuaciones (10) a (14), la multiplicación de la variable de entero x con constantes irracionales µ y ? se puede aproximar con una serie común de valores intermedios generados por operaciones de cambio y suma y utilizando resultados intermedios para reducir el número total de operaciones. En el cálculo antes descrito, se pueden omitir las operaciones triviales tales como sumas y restas de ceros y cambios por bits cero. Se pueden realizar las siguientes simplificaciones:
y¡=±y0±yk-2s> => y¡=±yk-2s>, Ecuación (15)
y¡ = ±yj ± yk · 2o => y, = ±yj ± yk¦ Ecuación (16)
En la ecuación (15), la expresión a la izquierda de involucra una suma o resta de cero (denotado por y0) y se puede ejecutar con un cambio, tal como se muestra mediante la expresión a la derecha de . En la ecuación (16), la expresión a la izquierda de "?" involucra un cambio por cero bits (denotado por 2o) y se puede ejecutar con una suma, tal como se muestra mediante la expresión a la derecha de . Las ecuaciones (15) y (16) se pueden aplicar a la ecuación (8) en el cálculo de y¿ asi como a la ecuación (13) en el cálculo de w±.
Las multiplicaciones de las figura 1 a 4 se pueden ejecutar de manera eficiente utilizando las técnicas de cálculo antes descritas. En la figura 1, la multiplicación de la variable de entero x con la constante de transformada Cnj¡t en aritmética de entero de punto fijo se puede lograr mediante la constante de aproximación C 4
con una constante diádica racional, de la siguiente forma:
8 181 6010110101 256 00000000' Ecuación (17;
en donde C„./4 es una constante diádica racional que es una aproximación de 8 bits de ?p/4.
La multiplicación de la variable de entero x por la constante C®/4 se puede expresar como:
y = ( -181)/256. Ecuación (18)
La multiplicación en la ecuación (18) se puede lograr con la siguiente serie de operaciones: y,=x, ll\ 2=^.+(^,»2), //ioi Ecuación y,=y+(y2»i), //oion y4=y3+(y2 » 6), //oionoioi
El valor binario a la derecha de "//" es una constante intermedia que es multiplicada con la variable x . El producto deseado es igual a y4, o y4 = y. La multiplicación en la ecuación (18) se puede realizar con tres sumas y tres cambios para generar tres valores intermedios y2, 73 y y¾. En la figura 1, la multiplicación de la variable
de entero x con las constantes de transformada Ci!r/S y Si!r/i
en aritmética de entero de punto fijo se puede lograr
mediante las constantes de aproximación C3?r/8 y S3jr/8 con
constantes diádicas racionales, de la siguiente forma:
_7 49 600110001 _ .. , n, C, = = , v Ecuación 20, 3ír 8 128 b\0000000 9 _ 473 _ ¿0111011001 3*8 "5?2"?000000000' Ecuación ( 21 ]
donde es una constante diádica racional que es una
aproximación de 7 bits de Ciir/g , y
$L/s es una constante diádica racional que es una
aproximación de 9 bits de S3)r/S .
La multiplicación de la variable de entero x por las constantes 0p?? y Slnli se puede expresar como:
y = (x-A9)im y z = (x-473)/512 Ecuación (22)
Las multiplicaciones en la ecuación (22) se pueden lograr con la siguiente serie de operaciones:
w, = x, II \ w2 = wi -O, » 2), //Olí Ecuación w3 =wl» 6, // 0000001 w =w2 +w3, //0110001 w5 = wl -w3, // 0111111 w6 = w4 » 1, // 00110001 w7=w5- (w, » 4), //0111011 w8 = w7 + (w, » 9), //0111011001
Los productos deseados son iguales a w5 y iva, o ^6
= y y VÍQ = z. Las dos multiplicaciones en la ecuación (22) se pueden ejecutar de manera conjunta con cinco sumas y cinco cambios para generar siete valores intermedios w2 a wa. Las sumas de ceros se omiten en la generación de w3 y w6. Los cambios por cero se omiten en la generación de wt y
w5. Para la IDCT de 8 puntos que se muestra en la figura 1, utilizando las técnicas de cálculo descritas anteriormente para multiplicaciones por constantes C^/4 ,
Q s Y Ia complejidad total para precisión de 8 bits puede ser proporcionada como: 28+3 · 2+5 · 2=44 sumas y 3 ·2+5 ·2=16 cambios. En general, se puede lograr cualquier precisión deseada utilizando un número suficiente de bits para la aproximación de cada constante de transformada. Para la DCT de 8 puntos que se muestra en la figura 2, las constantes irracionales \ I Cnl¡i , C3jr/8 y S3)r/8 se pueden aproximar con constantes diádicas racionales. Las multiplicaciones con las constantes diádicas racionales se pueden lograr utilizando las técnicas de cálculo antes descritas . Para la IDCT que se muestra en la figura 3, diferentes valores de factores comunes F\ y F2 pueden resultar en diferentes números totales de operaciones lógicas y aritméticas para la IDCT y diferentes niveles de precisión para las muestras de salida x[0] a x[7]. Se pueden evaluar diferentes combinaciones de valores para Fi y F2. Para cada combinación de valores, se puede determinar el número total de operaciones lógicas y aritméticas para la IDCT y la precisión de las muestras de salida. Para un valor determinado de Fi, las constantes diádicas racionales a, y ?, se pueden obtener para Fi y Fi- C 4 , respectivamente. Entonces se pueden determinar los números de operaciones lógicas y aritméticas para la multiplicación de i con a, y la multiplicación de X2 con ?, . Para un valor determinado de F2, las constantes diádicas racionales a2 , ß2, ?2 y d2 se pueden obtener para F2 y F2-C 4, F2- Ci)r/S y F2-S3 g, respectivamente. Entonces se pueden determinar los números de operaciones lógicas y aritméticas para la multiplicación de 4 con a2 , la multiplicación de ¾ con ß2 , y las multiplicaciones de X5 con ?2 y d2. El número de operaciones para las multiplicaciones de 6 con ?2 y d2 es igual al número de operaciones para las multiplicaciones de 5 con ?2 y d2. Para facilitar la evaluación y selección de los factores comunes, el número de operaciones lógicas y aritméticas se puede calcular previamente para la multiplicación con diferentes posibles valores de constantes diádicas racionales. Los números previamente calculados de operaciones lógicas y aritméticas se pueden almacenar en un cuadro de búsqueda o alguna otra estructura de datos. La figura 5 muestra un cuadro de búsqueda 500 que almacena los números de operaciones lógicas y aritméticas para multiplicación con diferentes valores constantes diádicos racionales. El cuadro de búsqueda 500 es un cuadro bidimensional con diferentes valores posibles de una primer constante diádica racional C en el eje horizontal y diferentes valores posibles de una segunda constante diádica racional C2 en el eje vertical. El número de posibles valores para cada constante diádica racional depende del número de bits utilizados para esa constante. Por ejemplo, si Ci es representado con 13 bits, entonces existen 8192 posibles valores para C\. Los posibles valores para cada constante diádica racional se denotan como c0, Ci, c2, ... , cM, en donde c0 = 0, ci es el valor no cero más pequeño, y cM es el valor máximo (por ejemplo, cM = 8191 para 13 bits) . La entrada en la i-ava columna y j-ava fila del cuadro de búsqueda 500 contiene el número de operaciones lógicas y aritméticas para la multiplicación conjunta de la variable intermedia x con c± para la primera constante diádica racional C% y Cj para la segunda constante diádica racional C2. El valor para cada entrada en el cuadro de búsqueda 500 se puede determinar evaluando diferentes series posibles de valores intermedios para la multiplicación conjunta con Ci y Cj para esa entrada y seleccionando las mejores series, por ejemplo, la serie con la menor cantidad de operaciones. Las entradas en la primera fila del cuadro de búsqueda 500 (con c0 = 0 para la segunda constante diádica racional C2) contienen los números de operaciones para la multiplicación de la variable intermedia x solo con Ci para la primera constante diádica racional Ci . Debido a que el cuadro de búsqueda es simétrico, las entradas únicamente en la mitad del cuadro (por ejemplo, ya sea por encima o debajo de la diagonal principal) se pueden rellenar. Además, el número de entradas para rellenar puede ser reducido considerando las constantes irracionales que se están aproximando con las constantes diádicas racionales Ci y C2. Para un valor determinado de £ , se pueden determinar las constantes diádicas racionales a, y ?, . Los números de operaciones lógicas y aritméticas para la multiplicación de X± con at y la multiplicación de ¾ con ?, fácilmente se pueden determinar a partir de las entradas en la primera fila del cuadro de búsqueda 500, en donde a, y ?, corresponden a C-¡_. De manera similar, para un valor determinado de F2, se pueden determinar las constantes diádicas racionales a2 , ß2 , ?2 y S2. Los números de operaciones lógicas y aritméticas para la multiplicación de X4 con a2 , la multiplicación de ¾ con ß2 se pueden determinar a partir de las entradas en la primera fila del cuadro de búsqueda 500, en donde a2 y ß2 corresponden a C . El número de operaciones lógicas y aritméticas para la multiplicación conjunta de 5 con ?2 y d2 se puede determinar a partir de una entrada apropiada en el cuadro de búsqueda 500, en donde ?2 puede corresponder a Ci y d2 puede corresponder a C2, o viceversa.
Para cada posible combinación de valores para Fi y F2, las métricas de precisión en el Cuadro 6 se pueden determinar para un número suficiente de iteraciones con diferentes datos de entrada aleatoria. Los valores de F\ y F2 que resultan en una precisión deficiente (por ejemplo, falla de las métricas) se pueden descartar, y los valores Fi y F2 que resultan en una buena precisión (por ejemplo, paso de las métricas) se pueden conservar. Los cuadros 1 a 5 muestran cinco aproximaciones de punto fijo para la IDCT en la figura 3, las cuales se denotan como los algoritmos A, B, C, D y E. Estas aproximaciones son para dos grupos de factores, donde un grupo incluye a, y ?, y otro grupo incluye a2 , ß2 , ?2 y d2. Para cada uno de los cuadros 1 a 5, el factor común para cada grupo es proporcionado en la primera columna. Los factores comunes mejoran la precisión de las aproximaciones de la constante diádica racional y se pueden fusionar con los factores de escala apropiada en la gráfica de flujo para la IDCT. Los valores originales (los cuales pueden ser 1 o constantes irracionales) son proporcionados en la tercera columna. La constante diádica racional para cada valor original escalado por su factor común es proporcionada en la cuarta columna. La serie de valores intermedios para la multiplicación de la variable intermedia x con una o más constantes diádicas racionales es proporcionada en la quinta columna. Los números de operaciones de suma y cambio para cada multiplicación son proporcionados en la sexta y séptima columnas, respectivamente. El número total de operaciones de suma para la IDCT es igual a la suma de todas las operaciones de suma en la sexta columna más la última entrada nuevamente (para considerar la multiplicación de cada uno de X5 y 6 con ?2 y S2 ) más 28 operaciones de suma para todas las mariposas en la gráfica de flujo. El número total de operaciones de cambio para la IDCT es igual a la suma de todas las operaciones de cambio en la última columna más la última entrada nuevamente. El cuadro 1 proporciona los detalles del algoritmo A, el cual utiliza un factor común de 1/1.0000442471 para cada uno de los dos grupos.
CUADRO 1 Aproximación A (42 sumas, cambios )
El cuadro 2 proporciona detalles del algoritmo B, el cual utiliza un factor común de 1/1.0000442471 para el primer grupo y un factor común de 1/1.02053722659 para el segundo grupo.
CUADRO 2 Aproximación B (43 sumas, 17 cambios)
El cuadro 3 proporciona detalles del algoritmo C, el cual utiliza un factor común de 1/1.87734890555 para el primer grupo y un factor común de 1/1.02053722659 para el segundo grupo.
CUADRO 3 Aproximación C (44 sumas, 18 cambios)
El cuadro 4 proporciona detalles del algoritmo D, el cual utiliza un factor común de 1/1.87734890555 para el primer grupo y un factor común de 1/1.89062054308 para el segundo grupo.
CUADRO 4 Aproximación D (45 sumas, 17 cambios)
El cuadro 5 proporciona detalles del algoritmo E, el cual utiliza un factor común de 1/1.87734890555 para el primer grupo y un factor común de 1/1.22387468002 para el segundo grupo.
CUADRO 5 Aproximación E (48 sumas, 20 cambios)
Factor C Valor Constante Multiplicación de x con Número Número Común de Original diádica una o dos constantes de de grupo racional diádicas racionales Sumas Cambios
1/Fr= 1 577 y2 =x + (x»6); II 1000001 2 2
1.87734890555 512 y = x-(y2 »3); // 100100000 cos(/z74) 51 y2 =x + (x»2); //Olí 2 2 64 J' = ,2+(½ »4); //0110011
La precisión de las muestras de salida a partir de una IDCT aproximada se puede cuantificar con base en las métricas definidas en la Norma IEEE 1180-1190 y su reemplazo pendiente. Esta norma especifica la prueba de una DCT de punto de flotación de 64 bits de referencia seguida por la IDCT aproximada utilizando datos provenientes de un generador de número aleatorio. La DCT de referencia recibe datos aleatorios para un bloque de pixeles de entrada y genera coeficientes de transformada. La IDCT aproximada recibe los coeficientes de transformada (redondeados de forma aproximada) y genera un bloque de pixeles reconstruidos. Los pixeles reconstruidos son comparados contra los pixeles de entrada utilizando cinco métricas, las cuales se proporcionan en el cuadro 6. De manera adicional, la IDCT aproximada se requiere para producir todos los ceros cuando es suministrada con coeficientes de transformada cero y para demostrar el comportamiento inversión casi DC. Los cinco algoritmos A a proporcionados antes pasan todas las métricas en el cua 6.
CUADRO 6
La IDCT ID que se muestra en la figura 3, se puede utilizar para una IDCT 2D. De manera similar, la DCT
2D que se muestra en la figura 4 se puede utilizar para una DCT 2D. La figura 6 muestra un diseño de una IDCT 2D 600 ejecutada en una forma escalada y separable. La IDCT 2D 600 comprende una etapa de escalacion de entrada 612, seguida por una primera etapa IDCT ID escalada 614 para las columnas (o filas) , además seguida por una segunda etapa IDCT ID escalada 616 para las filas (o columnas), y concluyendo con una etapa de escalacion de salida 618. La etapa de escalacion de entrada 612 recibe un bloque 8x8 de coeficientes de transformada y puede pre-multiplicar cada coeficiente de transformada por una constante C=2P, o cambiar cada coeficiente de transformada por P bits a la izquierda, donde P denota el número de bits "mantisa" reservados. Después de la escalacion, se puede agregar una cantidad de 2P 1 al coeficiente de transformada DC para lograr el redondeo apropiado en las muestras de salida. Para mejorar la precisión de la escalacion, S=P+R bits se puede emplear en la conversión de los factores de escala a enteros, y cambios de derecha por R bits se pueden realizar después de las multiplicaciones. S puede ser cualquier valor conveniente que pueda facilitar las ejecuciones en plataformas de hardware, por ejemplo, S puede ser 15 ó 16 para plataformas con multiplicadores de 16 bits firmados/no firmados. La primera etapa IDCT ID 614 ejecuta una IDCT de 8 puntos en cada columna del bloque de coeficientes de transformada escalados. La segunda etapa IDCT ID 616 ejecuta una IDCT de 8 puntos en cada fila de un bloque intermedio generado por la primera etapa IDCT ID 614. Las IDCT ID para la primera y segunda etapas pueden operar directamente en sus datos de entrada sin realizar alguna escalación interna previa o posterior. Después que las filas y las columnas son procesadas, la etapa de escalación de salida 618 puede cambiar las cantidades resultantes de la segunda etapa IDCT ID 616 por P bits a la derecha para generar las muestras de salida para la IDCT 2D. Los factores de escala y la constante de precisión P se pueden elegir de manera que toda la IDCT 2D se pueda ejecutar utilizando registros del ancho deseado. La DCT 2D se puede ejecutar en una manera similar que la IDCT 2D. La DCT 2D se puede ejecutar (a) pre-multiplicando un bloque de muestras de dominio espacial, (b) ejecutando DCT ID en cada columna (o fila) del bloque de muestras escaladas para generar un bloque intermedio, (c) ejecutando DCT ID en cada fila (o columna) del bloque intermedio, y (d) escalando la salida de la segunda etapa DCT ID para generar un bloque de coeficientes de transformada para la DCT 2D. Por claridad, gran parte de la descripción anterior es para una IDCT escalada de 8 puntos y una DCT escalada de 8 puntos. Las técnicas aquí descritas se pueden utilizar para cualquier tipo de transformada tal como DCT, IDCT, DFT, IDFT, MLT, LT inversa, MCLT, MCLT inversa, etc.
Las técnicas también se pueden utilizar para cualquier factorización de una transformada, con varias factorizaciones ejemplares proporcionadas en las figuras 1 a 4. Los grupos para los factores comunes se pueden seleccionar con base en la factorización, tal como se describió anteriormente. Las técnicas también se pueden utilizar para transformadas de cualquier tamaño, con transformadas de 8 puntos ejemplares proporcionadas en las figuras 1 a 4. Las técnicas también se pueden utilizar en conjunto con cualquier criterio de selección de factor común tal como el número total de operaciones lógicas y aritméticas, número total de operaciones aritméticas, precisión de los resultados, etc. El número de operaciones para una transformada puede depender de la manera en la cual se realizan las multiplicaciones. Las técnicas de cálculo antes descritas desenrollan multiplicaciones en series de operaciones de cambio y suma, utilizan resultados intermedios para reducir el número de operaciones, y ejecutan la multiplicación conjunta con múltiples constantes utilizando una serie común. Las multiplicaciones también se pueden realizar con otras técnicas de cálculo, las cuales pueden influenciar la selección de los factores comunes. Las transformadas con factores comunes aquí descritas pueden proveer algunas ventajas tales como: • Complejidad de multiplicación inferior debido a las multiplicaciones fusionadas en una fase escalada,
• Posible reducción en complejidad debido a la capacidad para fusionar la escalación con cuantificación en ejecuciones de JPEG, H.263, MPEG-1, MPEG-2, PEG-4 (P.2), y otras normas, y • Precisión mejorada debido a la capacidad para reducir al mínimo/distribuir errores de aproximaciones de puntos fijos para constantes irracionales utilizadas en multiplicaciones mediante la introducción de factores comunes que pueden ser consideradas por factores de escala. Se pueden utilizar transformadas con factores comunes para diversas aplicaciones tales como procesamiento de imagen y video, comunicación, cómputo, conexión en red de datos, almacenamiento de datos, gráficas, etc. El uso ejemplar de transformadas para procesamiento de video se describe a continuación. La figura 7 muestra un diagrama en bloques de un sistema de codificación y decodificación de imagen/video 700. En un sistema de codificación 710, una unidad DCT 720 recibe un bloque de datos de entrada y genera un bloque de coeficiente de transformada. El bloque de datos de entrada puede ser un NxN bloque de pixeles, un NxN bloque de valores de diferencia de pixel (o residuo) , o algún otro tipo de datos generados a partir de una señal fuente, por ejemplo, una señal de video. Los valores de diferencia de pixel pueden ser diferencias entre dos bloques de pixeles, diferencias entre un bloque de pixeles y un bloque de pixeles pronosticados, etc. N puede ser igual a 8 o algún otro valor. Un codificador 730 recibe el bloque de coeficiente de transformada desde la unidad DCT 720, codifica los coeficientes de transformada, y genera datos comprimidos. Los datos comprimidos se pueden almacenar en una unidad de almacenamiento y/o se pueden enviar a través de un canal de comunicación (nube 740). En un sistema de decodificación 750, un decodificador 760 recibe los datos comprimidos desde la unidad de almacenamiento o canal de comunicación 740 y reconstruye los coeficientes de transformada. Una unidad IDCT 770 recibe los coeficientes de transformada reconstruidos y genera un bloque de datos de salida. El bloque de datos de salida puede ser un NxN bloque de pixeles reconstruidos, un NxN bloque de valores de diferencia de pixeles reconstruidos, etc. El bloque de datos de salida puede ser un cálculo del bloque de datos de entrada provisto a la unidad DCT 720 y se puede utilizar para reconstruir la señal fuente. La figura 8 muestra un diagrama en bloques de un sistema de codificación 800, el cual se puede utilizar para el sistema de codificación 710 en la figura 7. Una memoria/dispositivo de captura 810 puede recibir una señal fuente, realizar la conversión a formato digital, y proveer datos sin procesar/entrada. El dispositivo de captura 810 puede ser una cámara de video, un digitalizador , o algún otro dispositivo. Un procesador 820 procesa los datos sin procesar y genera datos comprimidos. Dentro del procesador 820, los datos sin procesar pueden ser transformados por una unidad DCT 822, explorados por una unidad de exploración en zig-zag 824, cuantificados por un cuantificador 826, codificados por un codificador de entropía 828, y paquetizados por un empacador 830. La unidad DCT 822 puede ejecutar DCT 2D en los datos sin procesar de acuerdo con las técnicas que se describieron anteriormente. Cada una de las unidades 822 a 830 se puede ejecutar en hardware, microprogramación cableada y/o software. Por ejemplo, la unidad DCT 822 se puede ejecutar con hardware dedicado, un conjunto de instrucciones para una unidad lógica aritmética (ALU) , etc. Una unidad de almacenamiento 840 puede almacenar los datos comprimidos provenientes del procesador 820. Un transmisor 842 puede transmitir los datos comprimidos. Un controlador/procesador 850 controla la operación de varias unidades en el sistema de codificación 800. Una memoria 852 almacena datos y códigos de programa para el sistema de codificación 800. Uno o más enlaces 860 interconectan varias unidades en el sistema de codificación 800. La figura 9 muestra un diagrama en bloques de un sistema de decodificación 900, el cual se puede utilizar para el sistema de decodificación 750 en la figura 7. Un receptor 910 puede recibir datos comprimidos desde un sistema de codificación, y una unidad de almacenamiento 912 puede almacenar los datos comprimidos recibidos. Un procesador 920 procesa los datos comprimidos y genera datos de salida. Dentro del procesador 920, los datos comprimidos pueden ser desempaquetados por un desempaquetador 922, decodificados por un decodificador de entropía 924, cuantificados a la inversa por un cuantificador inverso 926, colocados en el orden apropiado por una unidad de exploración en zig-zag inversa 928, y transformados por una unidad IDCT 930. La unidad IDCT 930 puede ejecutar IDCT 2D en los coeficientes de transformada reconstruida de acuerdo con las técnicas antes descritas. Cada una de las unidades 922 a 930 se puede ejecutar en hardware, microprogramación cableada y/o software. Por ejemplo, la unidad IDCT 930 se puede ejecutar con hardware dedicado, un conjunto de instrucciones para un ALU, etc. Una unidad de despliegue 940 despliega las imágenes reconstruidas y video del procesador 920. Un controlador/procesador 950 controla la operación de varias unidades en el sistema de decodificación 900. Una memoria 952 almacena códigos de programa y datos para el sistema de decodificación 900. Uno o más enlaces 960 interconectan varias unidades en el sistema de decodificación 900. Los procesadores 820 y 920 se pueden ejecutar, cada uno, con uno o más circuitos integrados de aplicación especifica (ASIC) , procesadores de señal digital (DSP), y/o algún otro tipo de procesadores. Alternativamente, los procesadores 820 y 920 pueden ser reemplazados, cada uno, con una o más memorias de acceso aleatorio (RAM) , memoria de solo lectura (ROM) , ROM programables eléctricas (EPROM) , ROM programables eléctricamente borrables (EEPROM) , discos magnéticos, discos ópticos, y/u otros tipos de memorias volátil y no volátil conocidas en la técnica. Las técnicas aquí descritas se pueden ejecutar en hardware, microprogramación cableada, software o una combinación de los mismos. Por ejemplo, las operaciones lógicas (por ejemplo, cambio) o aritméticas (por ejemplo, suma) para la multiplicación de un valor de datos con un valor constante se pueden ejecutar con una o más lógicas, las cuales también se pueden referir como unidades, módulos, etc. Una lógica puede ser lógica de hardware que comprende puertas lógicas, transistores, y/u otros circuitos conocidos en la técnica. Una lógica también puede ser microprogramación cableada y/o lógica de software que comprende códigos legibles por máquina. En un diseño, un aparato comprende una primera lógica para ejecutar la multiplicación de un primer grupo por lo menos de un valor de datos con un primer grupo por lo menos de una constante diádica racional que se aproxima a un primer grupo por lo menos de una constante irracional escalada por un primer factor común. El aparato además comprende una segunda lógica para ejecutar la multiplicación de un segundo grupo por lo menos de un valor de datos con un segundo grupo por lo menos de una constante diádica racional que se aproxima a un segundo grupo por lo menos de una constante irracional escalada por un segundo factor común. El primer y segundo grupos por lo menos de un valor de datos tienen diferentes tamaños. La primera y segunda lógica pueden ser lógicas separadas, la misma lógica común, o lógica compartida. Para una ejecución de microprogramación cableada y/o software, la multiplicación de un valor de datos con un valor constante se puede lograr con códigos legibles por máquina que realizan las operaciones lógicas y aritméticas deseadas. Los códigos pueden ser cableados en duro o almacenados en una memoria (por ejemplo, memoria 852 en la figura 8 o 952 en la figura 9) y ejecutados por un procesador (por ejemplo, procesador 850 o 950) o alguna otra unidad de hardware.
Las técnicas aquí descritas se pueden ejecutar en varios tipos de aparatos. Por ejemplo, las técnicas se pueden ejecutar en diferentes tipos de procesadores, diferentes tipos de circuitos integrados, diferentes tipos de dispositivos electrónicos, diferentes tipos de circuitos electrónicos, etc. Aquellos expertos en la técnica apreciarán que la información y señales se pueden representar utilizando cualquiera de una variedad de diferentes tecnologías y técnicas. Por ejemplo, datos, instrucciones, comandos, información, señales, bits, símbolos y chips a los que se pudo hacer referencia en la descripción anterior, se pueden representar a través de voltajes, corrientes, ondas electromagnéticas, campos o partículas magnéticas, campos o partículas ópticas, o cualquier combinación de los mismos. Aquellos expertos en la técnica además apreciarán que los diversos bloques lógicos ilustrativos, módulos, circuitos, y pasos de algoritmo descritos en relación con las modalidades aquí analizadas se pueden ejecutar como hardware electrónico, software de cómputo, o combinaciones de ambos. Para ilustrar con claridad esta capacidad de intercambio de hardware y software, varios componentes ilustrativos, bloques, módulos, circuitos, y pasos se han descrito anteriormente de manera general en términos de su funcionalidad. Si dicha funcionalidad es ejecutada como hardware o software, depende de la aplicación particular y de las restricciones de diseño impuestas en el sistema en general. Los expertos en la técnica pueden ejecutar la funcionalidad descrita en varias formas para cada aplicación particular, pero esas decisiones de ejecución no se deberían interpretar como un motivo para apartarse del alcance de la presente invención. Los diversos bloques lógicos ilustrativos, módulos, y circuitos descritos en relación con las modalidades aquí descritas se pueden ejecutar o realizar con un procesador de propósito general, un DSP, un ASIC, un arreglo de compuerta programable en campo (FPGA) u otro dispositivo lógico programable, compuerta discreta o lógica de transistor, componentes de hardware discretos, o cualquier combinación de los mismos diseñada para realizar las funciones aquí descritas. Un procesador de propósito general puede ser un microprocesador, pero en la alternativa, el procesador puede ser cualquier procesador convencional, controlador, microcontrolador, o máquina de estado. Un procesador también se puede ejecutar como una combinación de dispositivos de cómputo, por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores en conjunto con un DSP núcleo, o cualquier otra configuración. En una o más modalidades ejemplares, las funciones descritas se pueden ejecutar en hardware, software, microprogramación cableada, o cualquier combinación de los mismos. Si se ejecutan en software, las funciones se pueden almacenar o transmitir como una o más instrucciones o código en un medio legible por computadora. El medio legible por computadora incluye medios de almacenamiento en computadora y medios de comunicación, incluyendo cualquier medio que facilita la transferencia de un programa de computadora de un lugar a otro. Un medio de almacenamiento puede ser cualquier medio disponible al que pueda tener acceso una computadora. A manera de ejemplo, y no limitación, dicho medio legible por computadora puede comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede ser utilizado para portar o almacenar el código de programa deseado en la forma de instrucciones o estructuras de datos o al que puede tener acceso una computadora. También, cualquier conexión es apropiadamente denominada un medio legible por computadora. Por ejemplo, si el software es transmitido desde un sitio Web, servidor, u otra fuente remota utilizando un cable coaxial, cable de fibra óptica, par torcido, linea de suscriptor digital (DSL) , o tecnologías inalámbricas tales como infrarrojo, radio y microonda, entonces el cable coaxial, cable de fibra óptica, par torcido, DSL, o tecnologías inalámbricas tales como infrarrojo, radio y microonda son incluidas en la definición de medio. Discos {discs) y discos {disks) , tal como aquí se utiliza, incluye disco compacto (CD) , disco láser, disco óptico, disco versátil digital (DVD) , disco (disk) flexible o disco de rayo azul en donde los discos (disks) por lo regular reproducen datos de manera magnética, mientras que los discos {discs) reproducen datos de manera óptica con láser. Combinaciones de los anteriores también se deberían incluir dentro del alcance del medio legible por computadora. La descripción previa de las modalidades descritas se provee para permitir a cualquier experto en la técnica hacer o utilizar la presente invención. Varias modificaciones a estas modalidades serán fácilmente aparentes para aquellos expertos en la técnica, y los principios genéricos aquí definidos se pueden aplicar a otras modalidades sin apartarse del espíritu o alcance de la invención. Por lo tanto, la presente invención no pretende quedar limitada a las modalidades aquí mostradas sino que se le acordará el alcance más amplio consistente con los principios y características novedosas aquí descritas .
Claims (1)
- NOVEDAD DE LA INVENCION Habiendo descrito el presente invento, se considera como una novedad y, por lo tanto, se reclama como prioridad lo contenido en las siguientes : REIVINDICACIONES 1. - Un aparato que comprende: una primera lógica para ejecutar la multiplicación de un primer grupo por lo menos de un valor de datos con un primer grupo por lo menos de una constante diádica racional que se aproxima a un primer grupo por lo menos de una constante irracional escalada por un primer factor común, cada constante diádica racional es un número racional con un denominador diádico; y una segunda lógica para ejecutar la multiplicación de un segundo grupo por lo menos de un valor de datos con un segundo grupo por lo menos de una constante diádica racional que se aproxima a un segundo grupo por lo menos de una constante irracional escalada por un segundo factor común, el primer y segundo grupos por lo menos de un valor de datos tiene diferentes tamaños. 2. - El aparato de conformidad con la reivindicación 1, que además comprende: una tercera lógica para realizar la multiplicación de un tercer grupo por lo menos de un valor de datos con un tercer grupo por lo menos de una constante diádica racional que se aproxima a un tercer grupo por lo menos de una constante irracional escalada por un tercer factor común. 3. - El aparato de conformidad con la reivindicación 1, caracterizado porque el segundo grupo por lo menos de un valor de datos es dos veces el tamaño del primer grupo por lo menos de un valor de datos. 4. - El aparato de conformidad con la reivindicación 1, caracterizado porque el primer grupo por lo menos de un valor de datos comprende dos valores de datos y el segundo grupo por lo menos de un valor de datos comprende cuatro valores de datos. 5. - El aparato de conformidad con la reivindicación 1, caracterizado porque el primer grupo por lo menos de una constante irracional comprende una constante irracional sencilla y el segundo grupo por lo menos de una constante irracional comprende tres constantes irracionales . 6. - El aparato de conformidad con la reivindicación 1, caracterizado porque el número de constantes irracionales en el primer grupo es menor que el número de constantes diádicas racionales en el primer grupo . 7. - El aparato de conformidad con la reivindicación 1, caracterizado porque la primera lógica ejecuta la multiplicación de un primer valor de datos en el primer grupo con una primera constante diádica racional que se aproxima al primer factor común, y ejecuta la multiplicación de un segundo valor de datos en el primer grupo con una segunda constante diádica racional que se aproxima a una constante irracional escalada por el primer factor común. 8. - El aparato de conformidad con la reivindicación 1, caracterizado porque el segundo grupo por lo menos de una constante irracional comprende la primera y segunda constantes irracionales, en donde el segundo grupo por lo menos de una constante diádica racional comprende una primera constante diádica racional que se aproxima a la primera constante irracional escalada por el segundo factor común y una segunda constante diádica racional que se aproxima a la segunda constante irracional escalada por el segundo factor común. 9. - El aparato de conformidad con la reivindicación 8, caracterizado porque la segunda lógica ejecuta la multiplicación de un valor de datos en el segundo grupo con la primera constante diádica racional, y ejecuta la multiplicación del valor de datos con la segunda constante diádica racional. 10. - El aparato de conformidad con la reivindicación 8, caracterizado porque la segunda lógica ejecuta la multiplicación de un valor de datos en el segundo grupo con la primera y segunda constantes diádicas racionales utilizando una serie sencilla de valores intermedios . 11. - El aparato de conformidad con la reivindicación 1, caracterizado porque el primer factor común es seleccionado con base en el número de operaciones lógicas y aritméticas para la multiplicación del primer grupo por lo menos de un valor de datos con el primer grupo por lo menos de una constante diádica racional, y en donde el segundo factor común es seleccionado con base en el número de operaciones lógicas y aritméticas para la multiplicación del segundo grupo por lo menos de un valor de datos con el segundo grupo por lo menos de una constante diádica racional. 12. - El aparato de conformidad con la reivindicación 11, caracterizado porque las operaciones lógicas y aritméticas comprenden operaciones de cambio y suma . 13. - El aparato de conformidad con la reivindicación 11, caracterizado porque el primer y segundo factores comunes son seleccionados además con base, por lo menos, en una métrica de precisión para resultados generados a partir de la multiplicación. 14. - El aparato de conformidad con la reivindicación 1, caracterizado porque el primer factor común es seleccionado determinando el número de operaciones lógicas y aritméticas para la multiplicación del primer grupo por lo menos de un valor de datos con diferentes valores posibles para el primer grupo por lo menos de una constante diádica racional obtenida con diferentes valores posibles del primer factor común. 15. - El aparato de conformidad con la reivindicación 1, caracterizado porque para la multiplicación de un valor de datos en el primer grupo con una constante diádica racional en el primer grupo, la primera lógica genera una serie de valores intermedios basados en el valor de datos, por lo menos con un valor intermedio en la serie que está siendo generada con base, por lo menos en parte, en otro valor intermedio en la serie, y provee un valor intermedio en la serie como un valor de salida para la multiplicación del valor de datos con la constante diádica racional. 16. - El aparato de conformidad con la reivindicación 1, caracterizado porque la primera y segunda lógicas ejecutan la multiplicación para una transformada lineal . 17. - El aparato de conformidad con la reivindicación 16, que además comprende: una tercera lógica para ejecutar por lo menos una operación de mariposa con base en las salidas de la primera y segunda lógicas para generar resultados para la transformada lineal. 18. - El aparato de conformidad con la reivindicación 1, caracterizado porque la primera y segunda lógicas ejecutan la multiplicación para una transformada de coseno discreta (DCT). 19. - El aparato de conformidad con la reivindicación 1, caracterizado porque la primera y segunda lógicas ejecutan la multiplicación para una transformada de coseno discreta inversa (IDCT) . 20. - El aparato de conformidad con la reivindicación 1, caracterizado porque la primera y segunda lógicas ejecutan la multiplicación para una transformada de coseno discreta de 8 puntos (DCT) o una transformada de coseno discreta inversa de 8 puntos (IDCT) . 21. - Un aparato que comprende: una primera lógica para ejecutar la multiplicación de un primer grupo de dos valores de datos con un primer grupo de dos constantes diádicas racionales que se aproxima a un primer grupo por lo menos de una constante irracional escalada por un primer factor común, cada constante diádica racional es un número racional con un denominador diádico; y una segunda lógica para ejecutar la multiplicación de un segundo grupo de cuatro valores de datos con un segundo grupo de cuatro constantes diádicas racionales que se aproxima a un segundo grupo por lo menos de una constante irracional escalada por un segundo factor común . 22. - Un método que comprende: ejecutar la multiplicación de un primer grupo por lo menos de un valor de datos con un primer grupo por lo menos de una constante diádica racional que se aproxima a un primer grupo por lo menos de una constante irracional escalada por un primer factor común, cada constante diádica racional es un número racional con un denominador diádico; y ejecutar la multiplicación de un segundo grupo por lo menos de un valor de datos con un segundo grupo por lo menos de una constante diádica racional que se aproxima a un segundo grupo por lo menos de una constante irracional escalada por un segundo factor común, el primer y segundo grupos por lo menos de un valor de datos tiene diferentes tamaños . 23. - El método de conformidad con la reivindicación 22, que además comprende: realizar la multiplicación de un tercer grupo por lo menos de un valor de datos con un tercer grupo por lo menos de una constante diádica racional que se aproxima a un tercer grupo por lo menos de una constante irracional escalada por un tercer factor común. 24. - El método de conformidad con la reivindicación 22, caracterizado porque la ejecución de una multiplicación del primer grupo por lo menos de un valor de datos comprende, para la multiplicación de un valor de datos en el primer grupo con una constante diádica racional en el primer grupo, generar una serie de valores intermedios con base en el valor de datos, por lo menos con un valor intermedio en la serie generado con base, por lo menos en parte, en otro valor intermedio en la serie, y proveer un valor intermedio en la serie como un valor de salida para la multiplicación del valor de datos con la constante diádica racional. 25. - El método de conformidad con la reivindicación 22, caracterizado porque la ejecución de la multiplicación del segundo grupo por lo menos de un valor de datos comprende realizar la multiplicación de un valor de datos en el segundo grupo con la primera y segunda constantes diádicas racionales en el segundo grupo con base en una serie sencilla de valores intermedios. 26.- Un aparato que comprende: medios para ejecutar la multiplicación de un primer grupo por lo menos de un valor de datos con un primer grupo por lo menos de una constante diádica racional que se aproxima a un primer grupo por lo menos de una constante irracional escalada por un primer factor común, cada constante diádica racional es un número racional con un denominador diádico; y medios para ejecutar la multiplicación de un segundo grupo por lo menos de un valor de datos con un segundo grupo por lo menos de una constante diádica racional que se aproxima a un segundo grupo por lo menos de una constante irracional escalada por un segundo factor común, el primer y segundo grupos por lo menos de un valor de datos tiene diferentes tamaños. 27. - El aparato de conformidad con la reivindicación 26, que además comprende: medios para realizar la multiplicación de un tercer grupo por lo menos de un valor de datos con un tercer grupo por lo menos de una constante diádica racional que se aproxima a un tercer grupo por lo menos de una constante irracional escalada por un tercer factor común. 28. - El aparato de conformidad con la reivindicación 26, caracterizado porque los medios para ejecutar la multiplicación del primer grupo por lo menos de un valor de datos comprenden, para la multiplicación de un valor de datos en el primer grupo con una constante diádica racional en el primer grupo, medios para generar una serie de valores intermedios con base en el valor de datos, por lo menos con un valor intermedio en la serie generado con base, por lo menos en parte, en otro valor intermedio en la serie, y medios para proveer un valor intermedio en la serie como un valor de salida para la multiplicación del valor de datos con la constante diádica racional. 29. - El método de conformidad con la reivindicación 26, caracterizado porque los medios para ejecutar la multiplicación del segundo grupo por lo menos de un valor de datos comprenden medios para realizar la multiplicación de un valor de datos en el segundo grupo con la primera y segunda constantes diádicas racionales en el segundo grupo con base en una serie sencilla de valores intermedios . 30. - Un aparato que comprende: una primera lógica para recibir por lo menos un valor de datos; y una segunda lógica para ejecutar la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional que se aproxima por lo menos a una constante irracional escalada por un factor común, cada constante diádica racional es un número racional con un denominador diádico, el factor común es escalado con base en el número de operaciones lógicas y aritméticas para la multiplicación por lo menos de un valor de datos por lo menos con la constante diádica racional. 31. - El aparto de conformidad con la reivindicación 30, caracterizado porque las operaciones lógicas y aritméticas comprenden operaciones de cambios y sumas . 32. - El aparto de conformidad con la reivindicación 30, caracterizado porque el factor común es seleccionado además con base por lo menos en una métrica de precisión para resultados generados a partir de la multiplicación por lo menos de un valor de datos por lo menos con la constante diádica racional. 33. - El aparto de conformidad con la reivindicación 30, caracterizado porque para la multiplicación de un valor de datos con una constante diádica racional, la segunda lógica genera una serie de valores intermedios con base en el valor de datos, por lo menos con un valor intermedio en la serie generado con base al menos en otro valor intermedio en la serie, y provee un valor intermedio en la serie como un valor de salida para la multiplicación del valor de datos con la constante diádica racional. 34. - El aparto de conformidad con la reivindicación 30, caracterizado porque el número de operaciones lógicas y aritméticas se determina ejecutando la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional utilizando resultados intermedios para generar por lo menos un valor de salida para la multiplicación. 35. - Un método que comprende: recibir por lo menos un valor de datos; y ejecutar la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional que se aproxima por lo menos a una constante irracional escalada por un factor común, cada constante diádica racional es un número racional con un denominador diádico, el factor común es escalado con base en el número de operaciones lógicas y aritméticas para la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional. 36. - El método de conformidad con la reivindicación 35, caracterizado porque las operaciones lógicas y aritméticas comprenden operaciones de cambios y sumas . 37. - El método de conformidad con la reivindicación 35, caracterizado porque la ejecución de una multiplicación comprende, para la multiplicación de un valor de datos con una constante diádica racional, generar una serie de valores intermedios con base en el valor de datos, por lo menos con un valor intermedio en la serie generado con base por lo menos en otro valor intermedio en la serie, y proveer un valor intermedio en la serie como un valor de salida para la multiplicación del valor de datos con la constante diádica racional. 38. - Un aparato que comprende: medios para recibir por lo menos un valor de datos; y medios para ejecutar la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional que se aproxima por lo menos a una constante irracional escalada por un factor común, cada constante diádica racional es un número racional con un denominador diádico, el factor común es escalado con base en el número de operaciones lógicas y aritméticas para la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional. 39. - El aparato de conformidad con la reivindicación 38, caracterizado porque las operaciones lógicas y aritméticas comprenden operaciones de cambios y sumas 40.- El aparato de conformidad con la reivindicación 38, caracterizado porque los medios para ejecutar la multiplicación comprenden, para la multiplicación de un valor de datos con una constante diádica racional, medios para generar una serie de valores intermedios con base en el valor de datos, por lo menos con un valor intermedio en la serie generado con base por lo menos en otro valor intermedio en la serie, y medios para proveer un valor intermedio en la serie como un valor de salida para la multiplicación del valor de datos con la constante diádica racional. 41.- Un producto de programa de computadora, que comprende : un medio legible por computadora, que comprende: un código para ocasionar que una computadora reciba por lo menos un valor de datos; y un código para ocasionar que la computadora realice la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional que se aproxima por lo menos a una constante irracional escalada por un factor común, cada constante diádica racional es un número racional con un denominador diádico, el factor común es escalado con base en el número de operaciones lógicas y aritméticas para la multiplicación por lo menos de un valor de datos por lo menos con una constante diádica racional. 42. - Un producto de programa de computadora que comprende : un medio legible por computadora que comprende: un código para ocasionar que una computadora ejecute la multiplicación de un primer grupo por lo menos de un valor de datos con un primer grupo por lo menos de una constante diádica racional que se aproxima a un primer grupo por lo menos de una constante irracional escalada por un primer factor común, cada constante diádica racional es un número racional con un denominador diádico; y un código para ocasionar que una computadora ejecute la multiplicación de un segundo grupo por lo menos de un valor de datos con un segundo grupo por lo menos de una constante diádica racional que se aproxima a un segundo grupo por lo menos de una constante irracional escalada por un segundo factor común, el primer y segundo grupos por lo menos de un valor de datos tiene diferentes tamaños. 43. - El medio legible por computadora de conformidad con la reivindicación 22, que además comprende: un código para ocasionar que una computadora ejecute la multiplicación de un tercer grupo por lo menos de un valor de datos con un tercer grupo por lo menos de una constante diádica racional que se aproxima a un tercer grupo por lo menos de una constante irracional escalada por un tercer factor común.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US75846406P | 2006-01-11 | 2006-01-11 | |
US11/621,945 US8595281B2 (en) | 2006-01-11 | 2007-01-10 | Transforms with common factors |
PCT/US2007/060405 WO2007082272A2 (en) | 2006-01-11 | 2007-01-11 | Transforms with common factors |
Publications (1)
Publication Number | Publication Date |
---|---|
MX2008008987A true MX2008008987A (es) | 2008-11-18 |
Family
ID=38257126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MX2008008987A MX2008008987A (es) | 2006-01-11 | 2007-01-11 | Transformadas con factores comunes. |
Country Status (15)
Country | Link |
---|---|
US (1) | US8595281B2 (es) |
EP (2) | EP2477121A3 (es) |
JP (1) | JP5086274B2 (es) |
KR (1) | KR101028676B1 (es) |
CN (2) | CN101375274B (es) |
AU (1) | AU2007204645B2 (es) |
BR (1) | BRPI0706474A2 (es) |
CA (1) | CA2633897C (es) |
IL (1) | IL192075A0 (es) |
MX (1) | MX2008008987A (es) |
NO (1) | NO20083465L (es) |
NZ (1) | NZ568993A (es) |
RU (1) | RU2429531C2 (es) |
TW (1) | TWI359364B (es) |
WO (1) | WO2007082272A2 (es) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070200738A1 (en) * | 2005-10-12 | 2007-08-30 | Yuriy Reznik | Efficient multiplication-free computation for signal and data processing |
US20070271321A1 (en) * | 2006-01-11 | 2007-11-22 | Qualcomm, Inc. | Transforms with reduce complexity and/or improve precision by means of common factors |
US8595281B2 (en) * | 2006-01-11 | 2013-11-26 | Qualcomm Incorporated | Transforms with common factors |
US8849884B2 (en) * | 2006-03-29 | 2014-09-30 | Qualcom Incorporate | Transform design with scaled and non-scaled interfaces |
US8654833B2 (en) * | 2007-09-26 | 2014-02-18 | Qualcomm Incorporated | Efficient transformation techniques for video coding |
US8248660B2 (en) * | 2007-12-14 | 2012-08-21 | Qualcomm Incorporated | Efficient diffusion dithering using dyadic rationals |
US9110849B2 (en) * | 2009-04-15 | 2015-08-18 | Qualcomm Incorporated | Computing even-sized discrete cosine transforms |
US8762441B2 (en) * | 2009-06-05 | 2014-06-24 | Qualcomm Incorporated | 4X4 transform for media coding |
US9069713B2 (en) * | 2009-06-05 | 2015-06-30 | Qualcomm Incorporated | 4X4 transform for media coding |
US9118898B2 (en) | 2009-06-24 | 2015-08-25 | Qualcomm Incorporated | 8-point transform for media data coding |
US9081733B2 (en) * | 2009-06-24 | 2015-07-14 | Qualcomm Incorporated | 16-point transform for media data coding |
US8451904B2 (en) * | 2009-06-24 | 2013-05-28 | Qualcomm Incorporated | 8-point transform for media data coding |
US9075757B2 (en) | 2009-06-24 | 2015-07-07 | Qualcomm Incorporated | 16-point transform for media data coding |
US9185422B2 (en) * | 2010-07-15 | 2015-11-10 | Qualcomm Incorporated | Variable localized bit-depth increase for fixed-point transforms in video coding |
US9824066B2 (en) | 2011-01-10 | 2017-11-21 | Qualcomm Incorporated | 32-point transform for media data coding |
US11030777B2 (en) * | 2018-09-14 | 2021-06-08 | Sony Group Corporation | Adaptive subband coding for lifting transform |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4864529A (en) | 1986-10-09 | 1989-09-05 | North American Philips Corporation | Fast multiplier architecture |
JPH01175186A (ja) | 1987-12-29 | 1989-07-11 | Nitto Denko Corp | 熱接着用プレス装置における熱加圧具 |
JP2711176B2 (ja) | 1990-10-02 | 1998-02-10 | アロカ株式会社 | 超音波画像処理装置 |
CA2060407C (en) | 1991-03-22 | 1998-10-27 | Jack M. Sacks | Minimum difference processor |
US5233551A (en) | 1991-10-21 | 1993-08-03 | Rockwell International Corporation | Radix-12 DFT/FFT building block |
US5285402A (en) | 1991-11-22 | 1994-02-08 | Intel Corporation | Multiplyless discrete cosine transform |
US5539836A (en) | 1991-12-20 | 1996-07-23 | Alaris Inc. | Method and apparatus for the realization of two-dimensional discrete cosine transform for an 8*8 image fragment |
TW284869B (es) | 1994-05-27 | 1996-09-01 | Hitachi Ltd | |
US5712809A (en) | 1994-10-31 | 1998-01-27 | Vivo Software, Inc. | Method and apparatus for performing fast reduced coefficient discrete cosine transforms |
US5701263A (en) | 1995-08-28 | 1997-12-23 | Hyundai Electronics America | Inverse discrete cosine transform processor for VLSI implementation |
US5930160A (en) | 1996-06-22 | 1999-07-27 | Texas Instruments Incorporated | Multiply accumulate unit for processing a signal and method of operation |
JP3263807B2 (ja) | 1996-09-09 | 2002-03-11 | ソニー株式会社 | 画像符号化装置および画像符号化方法 |
US6058215A (en) | 1997-04-30 | 2000-05-02 | Ricoh Company, Ltd. | Reversible DCT for lossless-lossy compression |
JP3957829B2 (ja) | 1997-08-29 | 2007-08-15 | 株式会社オフィスノア | 動画像情報の圧縮方法およびそのシステム |
KR100270799B1 (ko) | 1998-01-30 | 2000-11-01 | 김영환 | 이산코사인변환/역이산코사인변환 프로세서 |
US6189021B1 (en) | 1998-09-15 | 2001-02-13 | Winbond Electronics Corp. | Method for forming two-dimensional discrete cosine transform and its inverse involving a reduced number of multiplication operations |
US6757326B1 (en) | 1998-12-28 | 2004-06-29 | Motorola, Inc. | Method and apparatus for implementing wavelet filters in a digital system |
US6473534B1 (en) | 1999-01-06 | 2002-10-29 | Hewlett-Packard Company | Multiplier-free implementation of DCT used in image and video processing and compression |
WO2000055757A1 (en) | 1999-03-17 | 2000-09-21 | The Johns Hopkins University | A fast multiplierless transform |
US6529634B1 (en) | 1999-11-08 | 2003-03-04 | Qualcomm, Inc. | Contrast sensitive variance based adaptive block size DCT image compression |
US6760486B1 (en) | 2000-03-28 | 2004-07-06 | General Electric Company | Flash artifact suppression in two-dimensional ultrasound imaging |
WO2001095142A2 (en) | 2000-06-09 | 2001-12-13 | Pelton Walter E | Methods for reducing the number of computations in a discrete fourier transform |
US6766341B1 (en) * | 2000-10-23 | 2004-07-20 | International Business Machines Corporation | Faster transforms using scaled terms |
US7007054B1 (en) | 2000-10-23 | 2006-02-28 | International Business Machines Corporation | Faster discrete cosine transforms using scaled terms |
JP4266512B2 (ja) | 2000-12-27 | 2009-05-20 | キヤノン株式会社 | データ処理装置 |
EP1395952B1 (en) | 2001-06-12 | 2007-10-10 | Silicon Optix Inc. | Method and system for processing a non-linear two dimensional spatial transformation |
US6870963B2 (en) | 2001-06-15 | 2005-03-22 | Qualcomm, Inc. | Configurable pattern optimizer |
US7082450B2 (en) | 2001-08-30 | 2006-07-25 | Nokia Corporation | Implementation of a transform and of a subsequent quantization |
US20030074383A1 (en) * | 2001-10-15 | 2003-04-17 | Murphy Charles Douglas | Shared multiplication in signal processing transforms |
US6917955B1 (en) | 2002-04-25 | 2005-07-12 | Analog Devices, Inc. | FFT processor suited for a DMT engine for multichannel CO ADSL application |
US7395210B2 (en) * | 2002-11-21 | 2008-07-01 | Microsoft Corporation | Progressive to lossless embedded audio coder (PLEAC) with multiple factorization reversible transform |
US7792891B2 (en) | 2002-12-11 | 2010-09-07 | Nvidia Corporation | Forward discrete cosine transform engine |
TWI220716B (en) | 2003-05-19 | 2004-09-01 | Ind Tech Res Inst | Method and apparatus of constructing a hardware architecture for transfer functions |
RU2305377C2 (ru) | 2003-05-20 | 2007-08-27 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Способ уменьшения искажения сжатого видеоизображения и устройство для его реализации |
US7487193B2 (en) | 2004-05-14 | 2009-02-03 | Microsoft Corporation | Fast video codec transform implementations |
US7587093B2 (en) | 2004-07-07 | 2009-09-08 | Mediatek Inc. | Method and apparatus for implementing DCT/IDCT based video/image processing |
US7421139B2 (en) * | 2004-10-07 | 2008-09-02 | Infoprint Solutions Company, Llc | Reducing errors in performance sensitive transformations |
US7489826B2 (en) | 2004-10-07 | 2009-02-10 | Infoprint Solutions Company, Llc | Compensating for errors in performance sensitive transformations |
CN100388316C (zh) * | 2005-04-19 | 2008-05-14 | 展讯通信(上海)有限公司 | 高精度的无乘法器的数字余弦变换电路及其变换方法 |
US20070200738A1 (en) | 2005-10-12 | 2007-08-30 | Yuriy Reznik | Efficient multiplication-free computation for signal and data processing |
US8595281B2 (en) * | 2006-01-11 | 2013-11-26 | Qualcomm Incorporated | Transforms with common factors |
US20070271321A1 (en) | 2006-01-11 | 2007-11-22 | Qualcomm, Inc. | Transforms with reduce complexity and/or improve precision by means of common factors |
US8849884B2 (en) | 2006-03-29 | 2014-09-30 | Qualcom Incorporate | Transform design with scaled and non-scaled interfaces |
-
2007
- 2007-01-10 US US11/621,945 patent/US8595281B2/en not_active Expired - Fee Related
- 2007-01-11 WO PCT/US2007/060405 patent/WO2007082272A2/en active Search and Examination
- 2007-01-11 CN CN2007800020554A patent/CN101375274B/zh not_active Expired - Fee Related
- 2007-01-11 TW TW096101164A patent/TWI359364B/zh not_active IP Right Cessation
- 2007-01-11 BR BRPI0706474-8A patent/BRPI0706474A2/pt not_active IP Right Cessation
- 2007-01-11 EP EP12161794.8A patent/EP2477121A3/en not_active Withdrawn
- 2007-01-11 KR KR1020087019586A patent/KR101028676B1/ko not_active IP Right Cessation
- 2007-01-11 MX MX2008008987A patent/MX2008008987A/es active IP Right Grant
- 2007-01-11 AU AU2007204645A patent/AU2007204645B2/en not_active Ceased
- 2007-01-11 RU RU2008132827/08A patent/RU2429531C2/ru not_active IP Right Cessation
- 2007-01-11 CA CA2633897A patent/CA2633897C/en not_active Expired - Fee Related
- 2007-01-11 NZ NZ568993A patent/NZ568993A/en unknown
- 2007-01-11 JP JP2008550522A patent/JP5086274B2/ja not_active Expired - Fee Related
- 2007-01-11 EP EP07710066A patent/EP1999641A2/en not_active Withdrawn
- 2007-01-11 CN CN201210535316.1A patent/CN103096077B/zh not_active Expired - Fee Related
-
2008
- 2008-06-11 IL IL192075A patent/IL192075A0/en unknown
- 2008-08-08 NO NO20083465A patent/NO20083465L/no not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
EP2477121A3 (en) | 2015-01-21 |
RU2008132827A (ru) | 2010-02-20 |
TW200809537A (en) | 2008-02-16 |
WO2007082272A2 (en) | 2007-07-19 |
EP2477121A2 (en) | 2012-07-18 |
KR20090007279A (ko) | 2009-01-16 |
AU2007204645B2 (en) | 2010-08-12 |
US8595281B2 (en) | 2013-11-26 |
RU2429531C2 (ru) | 2011-09-20 |
CN101375274A (zh) | 2009-02-25 |
CN103096077B (zh) | 2016-03-16 |
TWI359364B (en) | 2012-03-01 |
US20070168410A1 (en) | 2007-07-19 |
NO20083465L (no) | 2008-10-10 |
JP5086274B2 (ja) | 2012-11-28 |
AU2007204645A1 (en) | 2007-07-19 |
KR101028676B1 (ko) | 2011-04-12 |
CA2633897A1 (en) | 2007-07-19 |
BRPI0706474A2 (pt) | 2011-03-29 |
CA2633897C (en) | 2013-04-02 |
IL192075A0 (en) | 2009-08-03 |
CN101375274B (zh) | 2013-02-13 |
WO2007082272A3 (en) | 2008-10-02 |
EP1999641A2 (en) | 2008-12-10 |
NZ568993A (en) | 2010-09-30 |
JP2009534721A (ja) | 2009-09-24 |
CN103096077A (zh) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MX2008008987A (es) | Transformadas con factores comunes. | |
RU2413983C2 (ru) | Обратимое преобразование для сжатия двумерных данных с потерями и без потерь | |
US9727530B2 (en) | Transform design with scaled and non-scaled interfaces | |
US7127482B2 (en) | Performance optimized approach for efficient downsampling operations | |
JP5113067B2 (ja) | 信号およびデータ処理のための効率的な無乗算計算 | |
CN1697328B (zh) | 快速视频编解码变换实现 | |
US20140010284A1 (en) | Image transform and inverse transform method, and image encoding and decoding device using same | |
US20070271321A1 (en) | Transforms with reduce complexity and/or improve precision by means of common factors | |
KR20120098499A (ko) | 영상의 변환 방법 및 장치, 및 영상의 역변환 방법 및 장치 | |
US7216140B1 (en) | Efficient implementation of n-point DCT, n-point IDCT, SA-DCT and SA-IDCT algorithms | |
De Silva et al. | Exploring the Implementation of JPEG Compression on FPGA | |
JP3155383B2 (ja) | 2モード処理装置、2次元変換装置及び静止画像データの圧縮システム | |
KR100402734B1 (ko) | 부호화된 피승수를 사용하는 고정 소수점 곱셈 장치 및 그방법 | |
CN100349466C (zh) | 视频或图像压缩中准能量守恒变换的方法和装置 | |
Wahid | Error-free Algorighms and Architectures of Discrete Cosine Transforms Using Multidimensional Algebraic Interger Quantization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |