ES2569419T3 - Procesamiento de imágenes basado en peso - Google Patents

Procesamiento de imágenes basado en peso Download PDF

Info

Publication number
ES2569419T3
ES2569419T3 ES06747807.3T ES06747807T ES2569419T3 ES 2569419 T3 ES2569419 T3 ES 2569419T3 ES 06747807 T ES06747807 T ES 06747807T ES 2569419 T3 ES2569419 T3 ES 2569419T3
Authority
ES
Spain
Prior art keywords
color
image
representation
block
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES06747807.3T
Other languages
English (en)
Inventor
Jacob STRÖM
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from PCT/SE2005/001070 external-priority patent/WO2006006915A1/en
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Priority claimed from PCT/SE2006/000613 external-priority patent/WO2006126949A1/en
Application granted granted Critical
Publication of ES2569419T3 publication Critical patent/ES2569419T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/004Predictors, e.g. intraframe, interframe coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)

Abstract

Un método para comprimir un bloque (600) de imagen, comprendiendo dicho bloque (600) de imagen múltiples elementos (610) de imagen y comprendiendo dicho método los pasos de: - asignar pesos de color a al menos un subconjunto de dichos múltiples elementos (610) de imagen, en donde para un elemento (610) de imagen que tiene coordenadas x, y en dicho bloque (600) de imagen, y donde x, y son, de manera independiente, 0, 1, 2, 3, asignar un vector w de pesos de color que tiene pesos de color w0, wH, wV iguales a: - determinar tres valores de color para representar colores originales de dichos múltiples elementos (610) de imagen, basándose en dichos pesos de color asignados, y determinar tres claves (710, 720, 730) de color que son representaciones de dichos tres valores de color y - representar colores originales de dichos múltiples elementos (610) de imagen mediante representaciones de color derivables de dichos tres valores de color, en donde representaciones de color de elementos (610) de imagen de dicho al menos un subconjunto son derivables de combinaciones de dichos tres valores de color ponderados mediante dichos pesos de color asignados, de manera que dicha representación de bloque comprimida comprende las tres claves (710, 720, 730) de color determinadas.

Description

5
10
15
20
25
30
35
40
45
50
55
DESCRIPCION
Procesamiento de imagenes basado en peso Campo tecnico
La presente invencion se refiere en general al procesamiento de imagenes, y en particular a metodos y sistemas para codificar y descodificar imagenes.
Antecedentes
La presentacion y representacion (en ingles, "rendering") de imagenes y graficos en sistemas de procesamiento de datos y terminales de usuario tales como ordenadores, y en particular en terminales moviles, han aumentado enormemente en los ultimos anos. Por ejemplo, los graficos e imagenes tridimensionales (3D) tienen una serie de atractivas aplicaciones en este tipo de terminales, entre ellas juegos, mapas en 3D y mensajena, protectores de pantalla e interfaces hombre-maquina.
Un proceso de representacion de graficos en 3D comprende tipicamente tres sub-etapas. En pocas palabras, una primera etapa, la etapa de aplicacion, crea varios triangulos. En una segunda etapa, la etapa de la geometna, se transforman las esquinas de estos triangulos, se proyectan y se iluminan. En una tercera etapa, la etapa de barrido (en ingles, "rastering"), se pueden "pegar" en los triangulos imagenes, denominadas frecuentemente texturas, que aumentan el realismo de la imagen representada. La tercera etapa tambien realiza normalmente una clasificacion utilizando una memoria intermedia z (en ingles, "z-buffer").
Sin embargo, la representacion de imagenes y texturas, y en particular de imagenes en 3D y graficos, es una tarea computacionalmente cara en terminos de ancho de banda de memoria y potencia de procesamiento requeridos para los sistemas graficos. Por ejemplo, las texturas son costosas tanto en terminos de memoria, puesto que se requiere ubicar o almacenar las texturas en memoria "en el chip", que es mas rapida, como en terminos de ancho de banda de memoria, porque puede ser necesario acceder a una textura varias veces para dibujar un solo pixel.
Para reducir los requisitos de ancho de banda y de potencia de procesamiento, tfpicamente se emplea un metodo o sistema de codificacion de imagen (textura). Este sistema de codificacion debe permitir un uso mas eficaz de la costosa memoria en el chip y un menor ancho de banda de memoria durante la representacion y, por lo tanto, un menor consumo de energfa y/o una representacion mas rapida.
Delp y Mitchell [1] desarrollaron un esquema simple, denominado codificacion de truncamiento de bloques (BTC, por sus siglas en ingles) para la compresion de imagenes. Aunque sus aplicaciones no fueron en sf la compresion de texturas, algunos de los otros sistemas descritos en esta seccion se basan en sus ideas. Su esquema compriirna imagenes en escala de grises, considerando un bloque de 4x4 pfxeles cada vez. Para un bloque de este tipo, se almacenaban dos valores de escala de grises de 8 bits, y cada pixel del bloque utilizaba despues un solo bit para indicar una de estas escalas de grises. Esto daba lugar a 2 bits por pixel (bpp).
Campbell et al. [2] presentaron un desarrollo sencillo de la BTC, denominado compresion de celulas de color (CCC). En lugar de utilizar un valor de escala de grises de 8 bits, se emplea el valor de 8 bits como un mdice en una paleta de colores. Esto permite comprimir texturas de color a 2 bpp. Sin embargo, es necesaria una busqueda de memoria en la paleta, y el tamano de la paleta esta limitado.
El metodo S3TC de compresion de texturas, de lourcha et al. [3] es probablemente el esquema mas popular en la actualidad. Se utiliza en DirectX y tambien existen extensiones del mismo en OpenGL. Su funcionamiento se puede considerar un desarrollo adicional de la CCC. El tamano del bloque para la S3TC es de 4x4 pfxeles, que se comprimen a 64 bits. Se almacenan dos colores de base como 16 bits cada uno, y cada pixel almacena un mdice de dos bits en una paleta local de colores que se compone de los dos colores de base y dos colores adicionales entre los colores de base. Esto significa que todos los colores se encuentran en una lmea dentro del espacio RGB. La tasa de compresion de S3TC es 4 bpp. Una desventaja del S3TC es que solo se pueden utilizar cuatro colores por bloque.
Fenney [4] introduce un esquema radicalmente distinto que se utiliza en la plataforma MBX de hardware para graficos en telefonos moviles. Este esquema utiliza dos imagenes de baja resolucion, y durante la descompresion se incrementa bilinealmente la escala de las mismas. Cada pixel tambien almacena un factor de mezcla entre estas dos imagenes de escala ampliada. Se describen la compresion a 4 bpp y a 2 bpp. Para cada bloque se utilizan 64 bits. La principal desventaja del esquema de Fenney, que hace que sea menos atractivo en implementaciones reales, es que durante la descompresion se necesita informacion de bloques de imagen vecinos, lo que complica gravemente la descompresion.
PACKMAN es un metodo de compresion de texturas desarrollado recientemente por Strom y Akenine-Moller [5]. Codifica un bloque de 2x4 texeles (pfxeles) a 32 bits. Solo se utiliza un color por bloque, pero en cada pixel se puede modificar la intensidad de este color. El principal objetivo de PACKMAN era conseguir la minima complejidad de descompresion. En PACKMAN la crominancia esta muy cuantificada, lo que puede acarrear artefactos de bloque.
5
10
15
20
25
30
35
40
45
50
Para mejorar PACKMAN, Strom y Akenine-Moller han desarrollado un metodo mejorado de compresion denominado iPACKMAN/Ericsson Texture Compression (ETC) [6,7]. En iPACKMAN/ETC se codifican en comun dos bloques 2x4 de imagen, lo que permite la codificacion diferencial de los colores. Esto ha hecho posible disponer de una cuantificacion mas fina de los colores, lo que produce un aumento de la calidad en aproximadamente 3 dB. Por tanto, este metodo de compresion ha superado en terminos de calidad a la S3TC y actualmente constituye el metodo/sistema de compresion de texturas de mayor calidad publicamente conocido.
Aun existe la necesidad de mejorar la compresion de imagenes y, en particular, en terminos de compresion y descompresion de bloques de imagen problematicos que presentan determinadas caractensticas de color que los esquemas de procesamiento de imagenes de la tecnica anterior no pueden gestionar de manera eficaz con alta calidad. Estos bloques de imagen problematicos incluyen bloques que presentan transiciones con variacion lenta entre dos o mas colores.
Compendio
La presente invencion supera estos y otros inconvenientes de los arreglos de la tecnica anterior.
Es un objeto general de la presente invencion proporcionar un sistema de procesamiento de imagenes que pueda gestionar eficazmente bloques de imagen que presenten transiciones con variacion lenta entre dos o mas colores.
Este y otros objetos se logran mediante la invencion tal como se define por las reivindicaciones adjuntas.
En pocas palabras, la presente invencion implica un procesamiento de imagenes en forma de codificacion (compresion) de una imagen y descodificacion (descompresion) de una imagen codificada (comprimida).
Segun la invencion, se descompone una imagen a codificar en una serie de bloques de imagen que comprenden multiples elementos de imagen (pfxeles, texeles o voxeles). Un bloque de imagen comprende preferiblemente dieciseis elementos de imagen y tiene un tamano de 2mx2n elementos de imagen, en donde m y n son preferiblemente 2. Cada elemento de imagen de un bloque se caracteriza por una propiedad de elemento de imagen, preferiblemente un color, por ejemplo, un color RGB (rojo, azul, verde, por sus siglas en ingles) de 24 bits. Posteriormente se codifican los bloques de imagen.
En esta codificacion de bloques (con perdida) se asignan pesos de color a al menos un subconjunto de los elementos de imagen del bloque de imagen. Despues se determinan al menos dos claves de color que son representaciones de al menos dos valores de color, basandose al menos parcialmente en los pesos de color asignados. La representacion codificada o comprimida generada del bloque de imagen comprende las al menos dos claves de color, que se pueden considerar como valores de color cuantificados. En consecuencia, los colores originales de los elementos de imagen del bloque de imagen seran representados por representaciones de color derivables de los al menos dos valores de color, obtenibles a su vez de las al menos dos claves de color. Ademas, las representaciones de color de los elementos de imagen en el al menos un subconjunto se pueden derivar de combinaciones de los al menos dos valores de color ponderados mediante los pesos de color asignados.
Esta manera de representar bloques de imagen gestiona de manera eficaz transiciones con variacion suave de al menos dos colores dentro de un bloque de imagen, y transiciones y pendientes de color de este tipo que se extiendan a bloques vecinos. Tras leer la siguiente descripcion de las realizaciones de la invencion se apreciaran otras ventajas ofrecidas por la presente invencion.
Durante la decodificacion o descompresion, se determinan los al menos dos valores de color basandose en las al menos dos claves de color. Despues se asignan pesos de color a un elemento de imagen a descodificar. Por ultimo, se calcula una representacion de color a utilizar para este elemento de imagen basandose en los pesos de color proporcionados y los al menos dos valores de color determinados.
La presente invencion tambien ensena sistemas para codificar imagenes y bloques de imagen, sistemas para descodificar imagenes codificadas y bloques de imagen y terminales de usuario que albergan tales sistemas.
Breve descripcion de los dibujos
La invencion, junto con objetos y ventajas adicionales de la misma, se puede entender mejor haciendo referencia a la siguiente descripcion tomada junto con los dibujos adjuntos, en los cuales:
la Figura 1 es un diagrama de flujo que ilustra un metodo para comprimir/codificar una imagen y un bloque de imagen segun la presente invencion;
la Figura 2 es una ilustracion de un ejemplo de un bloque de imagen segun la presente invencion;
la Figura 3 es un dibujo que ilustra esquematicamente la asignacion de pesos de color segun una realizacion de la presente invencion;
la Figura 4 es una ilustracion de una representacion comprimida de un bloque de imagen segun una realizacion de la
5
10
15
20
25
30
35
40
45
presente invencion;
la Figura 5 es un dibujo que ilustra esquematicamente la asignacion de pesos de color segun otra realizacion de la presente invencion;
a Figura 6 es una ilustracion de una representacion comprimida de un bloque de imagen segun otra realizacion de a presente invencion;
a Figura 7 es un dibujo que ilustra esquematicamente la asignacion de pesos de color segun una realizacion adicional de la presente invencion;
a Figura 8 es un dibujo que ilustra esquematicamente la asignacion de pesos de color segun otra realizacion mas de a presente invencion;
a Figura 9 es un diagrama de flujo que ilustra con mas detalle una realizacion del paso determinante de la Figura 1;
a Figura 10 es un diagrama de flujo de pasos adicionales del metodo de codificacion/compresion de imagenes de la Figura 1 segun una implementacion multimodal de la presente invencion;
a Figura 11 es un diagrama de flujo que ilustra con mas detalle realizaciones de pasos de compresion de la Figura 10;
a Figura 12A es un diagrama que ilustra la distribucion de colores de elementos de imagen de un bloque de imagen que ventajosamente se puede comprimir segun un modo de la implementacion multimodal;
a Figura 12B es un diagrama que ilustra representaciones de color generadas segun un modo de la implementacion multimodal y adecuadas para representar los colores de los elementos de imagen ilustrados en la Figura 12A;
a Figura 13A es un diagrama que ilustra la distribucion de colores de elementos de imagen de otro bloque de magen que ventajosamente se puede comprimir segun otro modo de la implementacion multimodal;
a Figura 13B es un diagrama que ilustra representaciones de color generadas segun otro modo de la mplementacion multimodal y adecuadas para representar los colores de los elementos de imagen ilustrados en la Figura 13A;
as Figuras 14 a 17 son ilustraciones de representaciones comprimidas de un bloque de imagen segun la implementacion multimodal;
a Figura 18 es un diagrama de flujo de un metodo para descodificar/descomprimir una imagen comprimida y el bloque de imagen segun la presente invencion;
a Figura 19 es un diagrama de flujo que ilustra pasos adicionales del metodo de descodificacion/descompresion de a Figura 20 para una implementacion multimodal;
a Figura 20 es un diagrama de flujo que ilustra con mas detalle realizaciones del paso de descompresion de la Figura 19;
a Figura 21 es un diagrama de flujo que ilustra con mas detalle otra realizacion del paso de descompresion de la Figura 19;
a Figura 22 ilustra esquematicamente un ejemplo de un terminal de usuario con un codificador y descodificador de magenes segun la presente invencion;
a Figura 23 es un diagrama de bloques que ilustra esquematicamente una realizacion de un codificador de magenes segun la presente invencion;
a Figura 24 es un diagrama de bloques que ilustra esquematicamente una realizacion de un codificador de bloques segun la presente invencion;
a Figura 25 es un diagrama de bloques que ilustra esquematicamente otra realizacion de un codificador de bloques segun la presente invencion;
a Figura 26 es un diagrama de bloques que ilustra esquematicamente una realizacion de un descodificador de magenes segun la presente invencion;
a Figura 27 es un diagrama de bloques que ilustra esquematicamente una realizacion de un descodificador de bloques segun la presente invencion; y
a Figura 28 es un diagrama de bloques que ilustra esquematicamente otra realizacion de un descodificador de bloques segun la presente invencion.
5
10
15
20
25
30
35
40
45
50
55
Descripcion detallada
En los dibujos se utilizaran las mismas referencias para elementos correspondientes o similares.
La presente invencion se refiere al procesamiento de imagenes y grafico, y en particular a la codificacion o compresion de imagenes y bloques de imagen y a la descodificacion o descompresion de imagenes y bloques de imagen codificados (comprimidos).
En general, y segun la invencion, durante la codificacion de imagenes se descompone o divide una imagen en una serie de bloques de imagen. Cada uno de tales bloques de imagen comprende entonces multiples elementos de imagen que tienen, entre otras cosas, un color determinado. Se codifican o comprimen los bloques de imagen para generar una representacion codificada/comprimida de la imagen.
Cuando posteriormente hay que representar, por ejemplo, mostrar en una pantalla, una imagen o grafico primitivos codificados, se identifican y descodifican los elementos de imagen relevantes de los bloques de imagen codificados. Despues se utilizan estos elementos de imagen descodificados para generar una representacion descodificada de la imagen o graficos originales primitivos.
La presente invencion esta bien adaptada para el uso con graficos en tres dimensiones (3D), tales como juegos, mapas en 3D y escenas en 3D, mensajes, por ejemplo mensajes animados, protectores de pantalla, interfaces hombre-maquina (MMI, por sus siglas en ingles), etc., pero no se limita a esto. Asf, tambien se podna emplear la invencion para codificar otros tipos de imagenes o graficos, por ejemplo imagenes en una dimension (1D), en dos dimensiones (2D) o en 3D.
En el procesamiento de graficos en 3D, tfpicamente se crean varios triangulos y se determinan las correspondientes coordenadas en pantalla de las esquinas de estos triangulos. A cada triangulo se le asigna ("se pega") una imagen (o parte de una imagen), o una denominada "textura". Sin embargo, la gestion de texturas es costosa para un sistema grafico, tanto en terminos de memoria utilizada para el almacenamiento de texturas como en terminos de ancho de banda de memoria durante los accesos a memoria, cuando se recuperan texturas desde la memoria. Esto constituye un problema, en particular, para los clientes ligeros, por ejemplo las unidades y telefonos moviles, que tienen una capacidad de memoria y ancho de banda limitados. En consecuencia, a menudo se emplea un esquema de codificacion de texturas o de imagenes. En un esquema de este tipo, tfpicamente se descompone o se divide una textura en una serie de bloques de imagen que comprenden multiples texeles. A continuacion se codifican los bloques de imagen y se almacenan en una memoria. Tengase en cuenta que el tamano de un bloque de imagen codificado (una version codificada de un bloque de imagen) es mas pequeno que el tamano correspondiente de la version no codificada del bloque de imagen.
En la presente invencion, la expresion "elemento de imagen" se refiere a un elemento de un bloque de imagen o representacion codificada de un bloque de imagen. Este bloque de imagen, a su vez, corresponde a una parte de una imagen o textura. Por tanto, segun la invencion un elemento de imagen podna ser un texel (elemento de textura) de una textura (1D, 2D, 3D), un pixel de una imagen (1D o 2D) o un voxel (elemento de volumen) de una imagen en 3D. En general, un elemento de imagen se caracteriza por determinadas propiedades de elemento de imagen, tales como un valor de color. Ademas, el termino "imagen" se utiliza en lo que sigue para indicar cualquier imagen o textura en 1D, 2D o 3D que se pueda codificar y descodificar por medio de la presente invencion, incluidos, pero sin imitacion, fotos, texturas de tipo juego, texto, dibujos, etc.
La presente invencion proporciona un procesamiento de imagenes que es particularmente adecuado para comprimir y descomprimir imagenes y bloques de imagen con transiciones de variacion lenta entre al menos dos colores. En los esquemas de la tecnica anterior, discutidos en la seccion de antecedentes, mediante claves de color (S3TC) o una o varias claves de color y uno o varios modificadores de intensidad/color (PACKMAN e iPACKMAN/ETC) se forma en el espacio de color una paleta de colores que comprende tfpicamente cuatro valores de color. Asf, cada elemento de imagen tiene un mdice de color asociado con uno de los colores de la paleta de colores. Con una solucion de este tipo, generalmente es diffcil procesar elementos de imagen que presenten transiciones de color con variacion lenta.
En claro contraste con estos esquemas de la tecnica anterior, la presente invencion asigna diferentes pesos de color a elementos de imagen de un bloque de imagen. Despues se determinan los colores a utilizar para el bloque de imagen basandose, al menos en parte, en los pesos de color asignados. Esto significa que los colores originales de los elementos de imagen se representaran por representaciones de color derivables de combinaciones de los colores determinados, ponderadas mediante los pesos de color asignados. Potencialmente, esto permite la utilizacion de representaciones de color unicas, dependiendo de los pesos de color asignados, para cada elemento de imagen del bloque, lo que a su vez significa una paleta de colores mucho mayor. Ademas, los pesos de color se pueden configurar de manera que tambien se pueden representar con alta calidad de imagen bloques problematicos que presenten transiciones de color con variacion lenta.
Compresion
La Figura 1 ilustra un metodo (con perdidas) para codificar una imagen segun la presente invencion. En un primer
5
10
15
20
25
30
35
40
45
50
paso S1, se descompone o divide la imagen en una serie de bloques de imagen. Cada uno de tales bloques de imagen comprende entonces multiples elementos de imagen. En una realizacion preferida de la invention, un bloque de imagen comprende dieciseis elementos de imagen (pixeles, texeles o voxeles) y tiene un tamano de 2mx2n elementos de imagen, donde m=4-n y n=0, 1, 2, 3, 4. Mas preferiblemente, m y n son ambos 2. Tambien seria posible utilizar un bloque de imagen de tamano 2mx2n o 2mx2nx2p elementos de imagen, donde m, n, p son cero o numeros enteros positivos con la condition de que no todos los m, n, p puedan ser cero simultaneamente. La Figura 2 ilustra esquematicamente un ejemplo de un bloque 600 de imagen con dieciseis elementos 610 de imagen segun la presente invencion. En una realizacion alternativa de la presente invencion, se descompone la imagen en una serie de sub-bloques de imagen, que preferiblemente tienen un tamano de 2x4 o 4x2 elementos de imagen. En este caso, se podrian gestionar juntos dos de tales sub-bloques durante la compresion para formar un bloque 4x4 600 como se ilustra en la Figura 2. Volviendo a la Figura 1, en el paso S1 preferiblemente se descompone el bloque completo de imagen en bloques de imagen (no solapantes). Sin embargo, en algunas aplicaciones solamente se codifica una parte de una imagen y, por tanto, solamente se descompone en bloques de imagen esta parte.
Los pasos siguientes S2 y S4 realizan una codificacion o compresion de los bloques de imagen. En primer lugar, en el paso S2, se asignan pesos de color a al menos un subconjunto de los elementos de imagen del bloque de imagen, lo que se ilustra esquematicamente por la lmea L1. Los pesos de color se determinan preferiblemente basandose en la position relativa que los elementos de imagen del al menos un subconjunto tienen en el bloque de imagen. Estos pesos de color se utilizaran durante la descompresion para ponderar distintos colores que se determinen para el bloque de imagen, con el fin de generar representaciones de color utilizadas para representar los colores originales ("verdaderos") de los elementos de imagen. Por ejemplo, supongase que se determinan dos colores (C0 y C-i) para el bloque actual de imagen. Los pesos de color asignados en este paso S2 pueden ser entonces w0'v y w^' para el elemento de imagen que tiene la posicion (x,y) en el bloque de imagen. Durante la compresion, la representation de imagen de este elemento de imagen sera w():i C0 + nyC,, es decir, una combination, en este caso una combination lineal, ponderada de los dos colores.
Como es bien conocido en la tecnica, un color comprende ripicamente multiples componentes de color, muy frecuentemente tres componentes de color, dependiendo del espacio de color propietario utilizado. Por ejemplo, los colores pueden ser de colores RGB (rojo, verde, azul), colores en el espacio YUV o el espacio YCrCb, o cualquier otro espacio de color propietario utilizado en el procesamiento y gestion de imagenes y graficos. En ese caso, los multiples pesos de color asignados en el paso S2 podrian considerarse como un vector de pesos de color
imagen1
. En este caso, los elementos de componente individual en un vector de pesos se
podrian fijar de forma individual o al menos podrian ser iguales. En el caso en que w
xy _ rp __ rp
R 0
w
BO
, el vector de
pesos solo comprende dos pesos
imagen2
por elemento de imagen en este ejemplo ilustrativo.
Los pesos de color se asignan preferiblemente para cada elemento de imagen en al menos un subconjunto de los elementos de imagen de los bloques, que se representa por la lmea L1.
En una primera realizacion, el bloque de imagen comprende N elementos de imagen, N es un numero entero mayor que uno, y el subconjunto comprende M elementos de imagen, en donde 0<M<N. Esto significa que no se asignan pesos de color para el o los N-M elementos de imagen restantes. En ese caso, el color original de este o estos elementos restantes de imagen se representa por una de las claves de color a determinar para el bloque de imagen. Sin embargo, esto corresponde basicamente a fijar en 1 todos los elementos de componente de uno de los vectores de pesos de color y fijar en 0 todos los elementos de componente del otro u otros vectores de peso de color.
Por lo tanto, en otra implementation preferida de la presente invencion, se asignan pesos de color a todos los elementos de imagen del bloque, basicamente mediante la repetition del paso S2 para cada elemento de imagen. En esta realizacion, al menos uno de los pesos de color asignados a al menos un elemento de imagen es preferiblemente distinto de 0, 1 y -1.
En un siguiente paso S3, se determinan al menos dos claves de color para el bloque de imagen basandose en, o utilizando, los pesos de color asignados. Estas al menos dos claves de color son representaciones de al menos dos valores de color. Como se ha indicado antes, los valores de color podrian ser colores RGB (rojo, verde, azul), colores en el espacio YUV o en el espacio YCrCb, o cualquier otro espacio de color propietario utilizado en el procesamiento y gestion de imagenes y graficos.
Las claves de color estan preferiblemente en el mismo formato (espacio) de color que la imagen. Sin embargo, en algunos casos puede ser util convertir la imagen a un espacio de color distinto, es decir, tener las claves de color en
5
10
15
20
25
30
35
un primer espacio de color y la imagen original en un segundo espacio de color distinto.
En un primer arreglo descrito en la presente memoria, en este paso S3 se determinan dos claves de color basandose en los pesos de color asignados. Sin embargo, en una implementacion preferida de la presente invencion se utilizan tres claves de color. Incluso a veces se determinan en lugar de ello cuatro o mas claves de color basandose en los pesos de color. Estas multiples claves representan entonces tres, cuatro o mas valores de color. Conforme a la presente invencion es posible, basando la determinacion de claves de color en los pesos de color asignados, determinar claves de color que den lugar a una alta calidad de imagen y permitan la generacion de representaciones de color con transiciones de color de variacion lenta.
En un siguiente paso S4, los colores originales de los multiples elementos de imagen del bloque se representan por representaciones de color derivables de los al menos dos valores de color, que a su vez se representan por las al menos dos claves de color determinadas en el paso S3. Ademas, las representaciones de color de los elementos de imagen en el al menos un subconjunto, es decir, aquellos elementos de imagen para los que se asignaron pesos de color en el paso S2, se pueden derivar de combinaciones de los al menos dos valores de color ponderados mediante los pesos de color asignados.
Si el al menos un subconjunto comprende un primer subconjunto del elemento de imagen del bloque, las representaciones de color de estos elementos de imagen se pueden derivar de combinaciones de los al menos dos valores de color ponderados mediante los pesos de color asignados. Sin embargo, las representaciones de color de elementos de imagen en un segundo subconjunto restante de los elementos de imagen del bloque se seleccionan directamente de los valores de color y por lo tanto no constituyen combinaciones de multiples valores de color.
Preferiblemente, se repiten los pasos S2 a S4 para todos los bloques de imagen proporcionados durante la descomposicion del paso S1 (lo que se ilustra esquematicamente por la lmea L2). El resultado es, entonces, una secuencia o archivo de bloques de imagen codificados. Se podnan ordenar los bloques de imagen codificados (representaciones codificadas de los bloques de imagen) en un archivo, de izquierda a derecha y de arriba a abajo en el mismo orden en el que se desglosaron en el paso S1 de descomposicion en bloques. Despues, el metodo termina.
Se podna enviar la imagen codificada a una memoria para almacenarse allf hasta una ulterior representacion, por ejemplo, visualizacion, de la imagen. Ademas, se podna enviar a un transmisor la imagen codificada, en forma de una senal de representaciones de bloque codificadas, para transmitirla (de modo inalambrico o por cable) a otra unidad.
La Figura 3 es una ilustracion esquematica de un bloque 600 de imagen en una imagen o textura a comprimir segun la presente invencion. Aqrn se han de determinar cuatro claves de color para el bloque 600 de imagen. Cada una de las cuatro claves de color representa un respectivo valor de color, cuyos componentes de rojo se denotan con R0, R1, R2 y R3. Esto permite una ampliacion bilineal de escala en la que, sin embargo, se almacenan como una representacion comprimida del bloque de imagen todos los colores necesarios para la ampliacion bilineal de escala. Los elementos de imagen 610 que forman las esquinas del bloque 600 de imagen tienen pesos de color de solo unos y ceros. La Tabla 1 ilustra los pesos color asignados a los elementos 610 de imagen en el bloque segun este arreglo.
Tabla 1 - pesos de color
Position (x,y)
Color 0 Color 1 Color 2 Color 3
(0,0)
1 0 0 0
(1.0)
2/3 1/3 0 0
(2,0)
1/3 2/3 0 0
(3,0)
0 1 0 0
(0,1)
2/3 0 1/3 0
(1.1)
4/9 2/9 2/9 1/9
(2,1)
2/9 4/9 1/9 2/9
(3,1)
0 2/3 0 1/3
(0,2)
1/3 0 2/3 0
(1,2)
2/9 1/9 4/9 2/9
(2,2)
1/9 2/9 2/9 4/9
(3,2)
0 1/3 0 2/3
(0,3)
0 0 1 0
(1,3)
0 0 2/3 1/3
(2,3)
0 0 1/3 2/3
(3,3)
0 0 0 1
Esto significa que las representaciones de color del bloque de imagen ilustrado en la Figura 3, y que tienen asignados pesos de color conforme a la Tabla 1 anterior, tendran componentes de rojo conforme a la Tabla 2 a 5 continuation.
Tabla 2 - combinaciones de color
-R0+-R{ 3 0 3 1 -R0+-R1 3 0 3 1 R1
-r0+-r2 3 3
4 2 2 1 -R() +-R. +-R2 +-R. 9 u 9 1 9 ^ 9 J 2 4 12 -Ra+-R, + -R, +-R, 9 u 9 1 9 - 9 3 -Rx +-R, 3 1 3 3
-r0+-r2 3 3
2 14 2 -Rn+-R, +-R, +-R, 9 u 9 1 9 2 9 J 12 2 4 -IL+-R +-R, +-R, 9 u 9 1 9 - 9 1 -Rl +-R3 3 1 3 3
r2
-R, +-R, 3 - 3 3 -R, + -R 3 - 3 3 r3
Preferiblemente, los componentes de azul y verde se gestionan de la misma manera, es decir, basicamente 10 intercambiando Rz por Bz o Gz, en donde z=0, 1, 2, 3.
Como puede verse en la Tabla 2, los componentes del color rojo (verde y azul) de doce de los elementos de imagen se pueden derivar como combinaciones lineales ponderadas de al menos los valores de color (Ro, Ri, R2, R3) representados por las cuatro claves de color. Sin embargo, los componentes del color rojo (verde y azul) de los cuatro elementos de imagen de esquina se derivan cada uno directamente de uno de los valores de color.
15 Cuando uno se mueve a lo largo de la primera fila (de R0 a R1), la tercera fila (de R2 a R3), la primera columna (de R0 a R2) y la tercera columna (de R1 a R3) de la Tabla 2, el componente del color rojo de las representaciones de color de los elementos de imagen en estas filas y columnas cambia monotonamente (salvo que los dos valores extremos sean iguales). Por ejemplo, si R1>Ro, el valor del componente de rojo aumenta monotonamente a lo largo de la primera fila, es decir, cuando se va del elemento de imagen (0,0) al elemento de imagen (0,3). Analogamente, si 20 R2<R0, el valor del componente de rojo disminuye monotonamente a lo largo de la primera columna (del elemento de
imagen (0,0) al (3,0)). Si se utilizan los mismos pesos de color tambien para los componentes del color verde y/o el
5
10
15
20
25
30
35
40
45
50
azul, tambien estos cambiaran monotonamente para estas filas y columnas. A una fila o columna se le denomina "matriz unidimensional de elementos de imagen". Esto significa que al menos un componente de color de las representaciones de color cambia monotonamente a lo largo de al menos una matriz unidimensional de elementos de imagen. Esto permite que transiciones de color suaves, y por lo tanto bloques de imagen que tengan tales distribuciones de color, se puedan representar con una elevada calidad de imagen.
La Figura 4 ilustra una representation comprimida 700 del bloque de imagen ilustrado en la Figura 3 que ha sido comprimido. La representacion 700 (bloque de imagen codificado o comprimido) comprende una primera clave 710 de color, una segunda clave 720 de color, una tercera clave 730 de color y una cuarta clave 740 de color. Tengase en cuenta que el orden respectivo de las claves 710, 720, 730, 740 del bloque 700 de imagen codificado puede ser distinto del ilustrado en la Figura.
En este caso, los pesos de color asignados a los elementos de imagen del bloque estan predefinidos y se utilizaran para todos los bloques de imagen de la imagen comprimida. Esto significa que, si se comprimen segun este esquema todos los bloques de imagen de una imagen, se utilizaran para todos los bloques de imagen los pesos de color enumerados en la Tabla 1. Sin embargo, tengase en cuenta que las cuatro claves de color pueden ser distintas para bloques distintos, lo que origina en ultimo termino distintas representaciones de color para los bloques de imagen.
Sin embargo, se preve que se pueda incluir, como parte de la representacion 700 del bloque comprimido, information acerca de los pesos de color asignados a elementos de imagen del bloque de imagen. Por ejemplo, supongase que existen multiples conjuntos de pesos que se pueden utilizar para los bloques de imagen. Cada uno de tales conjuntos de pesos comprende entonces pesos de color asignados a elementos de imagen de al menos un subconjunto de los elementos del bloque. Un primero de tales conjuntos de pesos puede incluir los pesos de color indicados en la Tabla 1 precedente. Entonces, un segundo conjunto puede tener diferentes pesos para al menos uno de estos elementos de imagen. En tal caso, la representacion 700 de bloque comprimida comprende preferiblemente un mdice de conjunto de pesos o clave de pesos que represente el conjunto de pesos de color utilizado para el bloque de imagen actual. Se puede utilizar un bit unico (0bin y 1 bin) como clave de pesos para discriminar entre dos conjuntos de pesos, mientras que se requieren dos o mas bits si existen mas de dos conjuntos. En una solution de este tipo, se pueden comprimir distintos bloques de imagen de una imagen utilizando distintas distribuciones de pesos de color.
Si se asignan 64 bits para el bloque 700 de imagen comprimido, se pueden utilizar 16 bits por cada clave 710, 720, 730, 740 de color y cada clave 710, 720, 730, 740 de color puede estar en forma de RGB565. Preferiblemente, se invierten mas bits en los componentes de verde, ya que el componente de verde aporta una contribution desproporcionada a la perception de la intensidad.
Sin embargo, el arreglo precedente se utiliza preferiblemente como un modo auxiliar al esquema iPACKMAN/ETC antes mencionado. En tal caso, solo estan disponibles 57 bits para codificar las cuatro claves 710, 720, 730, 740 de color (los siete bits restantes se utilizaran como mdice de modo para discriminar entre este modo auxiliar, iPACKMAN/ETC y otros modos auxiliares). Hay que codificar cuatro claves 710, 720, 730, 740 de color, con tres componentes cada una, utilizando solo 57 bits, y una posible solucion podria ser utilizar un formato RGB554, lo que daria como resultado 56 bits en total. El bit restante se puede utilizar como clave de peso o bien para reforzar uno de los componentes de color de una de las claves 710, 720, 730, 740.
El arreglo presentado en las Figuras 3 y 4 y en la Tabla 1 tiene el inconveniente de que la resolution de color obtenible para las claves 710, 720, 730, 740 de color es bastante baja, especialmente cuando se emplean como un complemento a iPACKMAN/ETC y cada clave 710, 720, 730, 740 esta en el formato RGB554. En este caso, en particular la baja resolucion del componente de azul dara lugar a artefactos.
En cambio, en una implementation preferida de la presente invention se utiliza preferiblemente un plano, en lugar de la funcion bilineal, para aproximarse a la superficie de color y proporcionar los pesos de color. Esto se ilustra esquematicamente en la Figura 5. En comparacion con la Figura 3 y la forma de realization bilineal antes descrita, por cada bloque 600 de imagen se determinan solo tres claves de color. Esto significa que tres valores de color estan representados por estas claves, y en la Figura 5 se han ilustrado los componentes de rojo (RO, RH, RV) de estos valores de color.
Las representaciones de colory los pesos de color de los elementos 610 de imagen del bloque 600 de imagen se pueden calcular utilizando las siguientes formulas:
imagen3
* _ 7 3 3
x
imagen4
Esto significa que las representaciones de color de los elementos 610 de imagen en las posiciones (0,0), (0,3) y (3,0) se pueden seleccionar directamente de los valores de color representados por las tres claves, lo que da como resultado (Ro, G0, B0) para el elemento de imagen (0,0), (Rh, Gh, Bh) para el elemento de imagen (3,0) y (Rv, Gv, Bv) para el elemento de imagen (0,3) en este ejemplo ilustrativo. Esto corresponde a los siguientes pesos de color para estos elementos de imagen: w00 = [10 0], w30 = [0 1 0] y w03 = [001].
Los pesos de color asignados a los bloques de imagen comprimidos segun esta realization de la presente invention se distribuyen entre los elementos de imagen segun la Tabla 3 a continuation.
Tabla 3 - pesos de color
Position (x,y)
Color 0 Color H Color V
(0,0)
1 0 0
(1.0)
2/3 1/3 0
(2,0)
1/3 2/3 0
(3,0)
0 1 0
(0,1)
2/3 0 1/3
(1.1)
1/3 1/3 1/3
(2,1)
0 2/3 1/3
(3,1)
-1/3 1 1/3
(0,2)
1/3 0 2/3
(1.2)
0 1/3 2/3
(2,2)
-1/3 2/3 2/3
(3,2)
-2/3 1 2/3
(0,3)
0 0 1
(1.3)
-1/3 1/3 1
(2,3)
-2/3 2/3 1
(3,3)
-1 1 1
Esto significa que las representaciones de color del bloque de imagen ilustrado en la Figura 5 y que tiene asignados pesos de color conforme a la Tabla 3 precedente tendran componentes de rojo segun la Tabla 4 a continuacion.
Tabla 4 - representaciones de color
Ro
-R0 +-Rh 3 3 -R0+-Rh 3 3 rh
-R0+-Rv 3 0 3 '
-r0 + -rh+-rv 3 0 3 3 F -R„ +-Ry 3 3 1 1 3 0 H 3 '
-R0+-Rv 3 0 3 '
-R„+-Ry 3 H 3 ' 1 2 2 —r0+-rh +-rv 3 0 3 H 3 2 2 ----R() Rh ^— Ry 3 0 " 3
Rv
----4— RH + Ry 3 0 3 H 2 2 ----4--------Rh + Ry 3 0 3 H ' - R0 + Rv + rh
Preferiblemente, los componentes de azul y verde se gestionan de la misma manera, es decir, basicamente intercambiando RZ por BZ o GZ, donde z=0, 1,2,3.
Tambien en este caso los componentes de color aumentan o disminuyen monotonamente cuando uno se mueve a lo
5
10
15
20
25
30
35
40
45
largo de la primera fila y la primera columna de la Tabla 4.
La Figura 6 ilustra una representacion comprimida 700 del bloque de imagen ilustrado en la Figura 5 que ha sido comprimido segun esta realizacion de la presente invention. La representacion 700 (bloque de imagen codificado o comprimido) comprende una primera clave 710 de color, una segunda clave 720 de colory una tercera clave 730 de color. Tengase en cuenta que el orden respectivo de las claves 710, 720, 730 del bloque 700 de imagen codificado puede ser distinto del ilustrado en la Figura.
Las claves 710, 720, 730 de color se pueden representar ahora mediante la cuantificacion de color RGB676, dando como resultado un tamano total de 57 bits para las tres claves. Esto significa que esta realizacion se puede utilizar ventajosamente como complemento y modo auxiliar a iPACKMAN/ETC como se ha descrito mas arriba. RGB676 permite una resolution mayor en comparacion con la realizacion anterior (RGB554). Como alternativa, si se utiliza la presente invencion como un esquema autonomo, las claves 710, 720, 730 de color se pueden representar como RGB777 y el bit restante se puede utilizar, por ejemplo, como clave de peso o bien para reforzar un componente de color de una de las claves 710, 720, 730.
En lugar de emplear tres claves 710, 720, 730 de color que permiten el calculo de un valor de color directamente a partir de una clave 710, 720, 730, se pueden utilizar las denominadas claves diferenciales. En ese caso, se puede determinar la primera clave 710 de color como se ha descrito mas arriba, es decir, comprendiendo tres componentes de color cuantificados, por ejemplo en forma RGB777. El primer valor de color (R0, G0, B0) se puede obtener entonces directamente a partir de esta primera clave 710 mediante la expansion de los componentes de color cuantificados. Las otras dos claves 720, 730 codifican, en cambio, una distancia en el espacio de color desde este primer valor de color. Asi, las dos claves 720, 730 podrian representar dRHdGHdBH666 y dRvdGvdBv666, donde cada uno de los componentes dWZ, W=R, G, B y z=H, V, representan un numero en el intervalo [-31, 32]. Los otros dos valores de color se obtienen despues segun las siguientes formulas:
imagen5
imagen6
imagen7
Las realizaciones descritas en relation con las Figuras 3 y 5 presentan, sin embargo, algunas desventajas. En primer lugar, varios de los pesos de color asignados implican la division por tres o potencias de tres (9=32), que es bastante caro de realizar cuando se implementa la descompresion en hardware. Otro inconveniente de estos patrones y asignaciones de pesos de color es que es diffcil crear gradientes de pendiente constante. Por ejemplo, si los Rh, Gh, Bh de un bloque se han fijado en R0, G0, B0 en el bloque anterior, habra dos elementos de imagen con una misma representacion de color uno a continuation de otro, interrumpiendo la pendiente. Por lo tanto, aunque se puede representar con alta calidad una transition suave de color dentro de un bloque dado, es mas diffcil codificar una transicion suave de color de este tipo a lo largo de bloques de imagen vecinos.
La Figura 7 ilustra una realizacion de la presente invencion en donde la asignacion de pesos de color se lleva a cabo de manera que resuelve los dos inconvenientes antes mencionados. En esta realizacion, los pesos de color se seleccionan preferiblemente de manera que solo un unico elemento 610 de imagen del bloque 600 tiene pesos de color constituidos por un 1 y el resto 0. Esto significa que este unico elemento 610 de imagen, preferiblemente un elemento de imagen de esquina, tiene su color original representado por un valor de color derivado de solo una de las tres claves de color.
La forma de colocar los valores de color que se ilustra en la Figura 7 da lugar a las siguientes formulas para calcular las representaciones de color y pesos de color de los elementos 610 de imagen en el bloque 600 de imagen:
R(x,y)=^-(R„ -R^+
W,
xy
imagen8
z
4
imagen9
imagen10
Los pesos de color asignados a bloques de imagen comprimidos segun esta realizacion de la presente invencion se distribuyen entre los elementos de imagen conforme a la Tabla 5 a continuacion.
Tabla 5 - pesos de color
Position (x,y)
Color 0 Color H Color V
(0,0)
1 0 0
(1.0)
3/4 1/4 0
(2,0)
1/2 1/2 0
(3,0)
1/4 3/4 0
(0,1)
3/4 0 1/4
(1.1)
1/2 1/4 1/4
(2,1)
1/4 1/2 1/4
(3,1)
0 3/4 1/4
(0,2)
1/2 0 1/2
(1,2)
1/4 1/4 1/2
(2,2)
0 1/2 1/2
(3,2)
-1/4 3/4 1/2
(0,3)
1/4 0 3/4
(1,3)
0 1/4 3/4
(2,3)
-1/4 1/2 3/4
(3,3)
-1/2 3/4 3/4
Esto significa que las representaciones de color del bloque de imagen ilustrado en la Figura 7, y que tiene asignados pesos de color conforme a la Tabla 5 precedente, tendran componentes de rojo conforme a la Tabla 6 a 5 continuation.
Tabla 6 - representaciones de color
Ro
-r0+-r„ 4 0 4 H -R0+-Rh 2 2 4 0 4 H
-R0+-Rh +-Rv 2 4 4 +-RV 4 o 2 h 4 i -Rh +-Rv 4 H 4 '
\R‘>+\R>-
+-RV 4 0 4 H 2 l -Rh +-Rv 2 H 2 r 1 3 1 —r0+-rh+-rv 4 o 4 h 2 f
\R°+-4R>
-Rh +-Rv 4 H 4 1 -~Rq+-Rh +-rv 4 o 2 H 4 i 1 3 3 —r0+-rv+-rh 2 4 4
Preferiblemente, los componentes de azul y verde se gestionan de la misma manera, es decir, basicamente 10 intercambiando Rz por Bz o Gz, donde z=0, 1,2, 3.
Tambien en este caso, los componentes de color aumentan o disminuyen monotonamente cuando uno se mueve a lo largo de la primera fila y la primera columna de la Tabla 6.
La representation de bloque comprimida para esta realization se ilustra en la Figura 6, y la discusion con respecto a esa Figura tambien se aplica a esta realizacion.
15 En esta realizacion, los pesos de color implican la division por dos o cuatro, cuya implementation en hardware es trivial. Ademas, la realizacion permite la continuidad de la pendiente de color (transiciones de color) mas alla de los limites de bloque. Esto es posible fijando la Rh (o Rv) de un bloque en la Ro del bloque precedente, lo que se traduce en una pendiente perfecta. Una ventaja adicional de esta realizacion reside en que la precision de las representaciones de color que se pueden derivar de las claves de color y los pesos de color aumenta aun mas, ya 20 que el color puede variar en escalones de 1/4 en lugar de 1/3, con cada elemento de imagen.
5
10
15
20
25
Se pueden obtener realizaciones adicionales basadas en el mismo tema que la Figura 7 rotando las posiciones de Ro, Rh y Rv un cuarto de vuelta, media vuelta o tres cuartos de vuelta, respectivamente.
En general, en un contexto mas amplio los pesos de color asignados a los elementos de imagen segun la presente invencion se pueden seleccionar de manera que los valores de color representados por las claves de color podrian verse como ubicados todos dentro del bloque de imagen (veanse las Figuras 3 y 5), ubicados algunos dentro del bloque de imagen y ubicados algunos fuera del bloque (vease la Figura 7), o ubicados todos fuera del bloque. La posicion relativa de los valores de color en relation con el bloque define la ecuacion (plana) utilizada para obtener los pesos de color para los elementos de imagen. En una realization muy preferida de la presente invencion, no todos los valores de color estan ubicados en una misma lmea (columna/fila) del bloque.
La presente invencion preve que se puedan seleccionar los pesos de color para representar posiciones de los valores de color en el bloque 600 de manera que los valores de color o puntos no esten ubicados en el centro de elementos 610 de imagen, lo que se ilustra esquematicamente en la Figura 8.
Las formulas para el plano seran entonces:
R{x, y) = 2x(Rh -R0)~ 2y(Rv -R0)+R0- 3RH + 3Rv G(x, y) = 2x(Gh -G0)~ 2y(Gv - G0) + G0 - 3GH + 3GV
B(x, y) = 2x(Bh -B0)~ 2y(Bv -B0)+B0- 3BH + 3Bv y los pesos de color estan representados por las ecuaciones:
w0r> = 1 - 2x + 2 v
wxI = -3 + 2x
wy = 3 - 2 v
Los pesos de color asignados a bloques de imagen comprimidos segun esta realizacion de la presente invencion se distribuyen entre los elementos de imagen conforme a la Tabla 7 a continuation.
Tabla 7 - pesos de color
Posicion (x,y)
Color 0 Color H Color V
(0,0)
1 -3 3
(1.0)
-1 -1 3
(2,0)
-3 1 3
(3,0)
-5 3 3
(0,1)
3 -3 1
(1.1)
1 -1 1
(2,1)
-1 1 1
(3,1)
-3 3 1
(0,2)
5 -3 -1
(1,2)
3 -1 -1
(2,2)
1 1 -1
(3,2)
-1 3 -1
(0,3)
7 -3 -3
5
10
15
20
25
30
35
40
45
Posicion (x,y)
Color 0 Color H Color V
(1,3)
5 -1 -3
(2,3)
3 1 -3
(3,3)
1 3 -3
Por lo tanto, la presente invention implica asignar pesos de color a algunos o a todos los elementos de imagen del bloque y, despues, determinar claves de color basandose en los pesos, en donde las representaciones de color de los elementos de imagen se pueden derivar de combinaciones ponderadas de valores de color representados por las claves, utilizando los pesos asignados a los elementos de imagen. Por supuesto, este concepto se puede extender a distinto numero de multiples claves de color y distintas asignaciones de pesos de color. En una implementation preferida, al menos un peso de al menos un elemento de imagen es distinto de 0, 1 y -1. Por lo tanto, el empleo de tres claves de color significa que se pueden asignar pesos de color de manera que sea posible una interpolation plana de valores de color. Si, en cambio, se emplean cuatro o cinco claves para un bloque de imagen, se pueden utilizar la interpolacion bilineal y la gaussiana, respectivamente. En la implementacion preferida, se fijan los pesos de color para reflejar que al menos uno de los valores de color representados por claves de color se puede considerar ubicado fuera del bloque de imagen. Esto permite una buena aproximacion de un color que varia muy lentamente - mas lentamente que si se considerasen todos los valores de color como lugares dentro del bloque (comparense las Figuras 5 y 7).
La Figura 9 es un diagrama de flujo que ilustra con mas detalle una realization del paso de determination de la Figura 1. El metodo continua desde el paso S2 de la Figura 1. En el paso S10 se seleccionan claves de color candidatas que son representaciones de valores de color candidatas. Estas claves candidatas se pueden seleccionar al azar, o bien pueden ser las menores o mayores claves de color candidatas posibles, por ejemplo una secuencia de 19 0bin (la menor clave posible, que representa el valor de color (0, 0, 0)), o bien una secuencia de 19 1 bin (la mayor clave posible, que representa el valor de color (255, 255, 255)). Los tres componentes de color R, G, B se pueden determinar por separado, es decir, basicamente ejecutando tres procesos paralelos o subsiguientes. Por tanto, la discusion que sigue se limita a solamente un componente de color.
En un siguiente paso S11, utilizando los pesos de color asignados se calculan los componentes de representacion del color rojo para los elementos de imagen del bloque obtenido con esta seleccion de componentes de claves de color candidatas. Esto equivale a reemplazar R0, Rh y Rv (R0, R1, R2, R3 y R4) en los bloques de imagen discutidos mas arriba con los componentes de rojo del valor de color candidato. El error de representar el componente de rojo de los elementos de imagen con estos componentes de representation de color candidatos se calcula despues en el paso S11.
imagen11
En la formula de error precedente, Rq, Rh , Rcv representan el componente de rojo de tres valores de color
candidatos representados por los tres componentes de clave de color candidatos seleccionados y Rxy es el color rojo original del elemento de imagen en la posicion (x, y) dentro del bloque. En la formula anterior, los pesos de color y el color original son espetificos para el elemento de imagen, mientras que los valores de color candidatos son los mismos, dentro de una seleccion dada de componentes de clave candidatos, para todos los elementos de imagen del bloque. Despues, en el paso S12 se almacena en una memoria de errores el valor de error calculado, junto con una nota acerca de las claves de color candidatas seleccionadas.
Se repiten los pasos S10 a S12 para diferentes selecciones de componentes de claves de color candidatos y, si el valor de error estimado es menor que el valor de error almacenado en la memoria de errores, el nuevo valor de error reemplaza al valor almacenado y los componentes de clave candidatos utilizados para el calculo de este nuevo valor de error mas pequeno reemplazan igualmente a los componentes de clave candidatos previamente almacenados.
Se realiza este procedimiento para todos los posibles 18 bits de los componentes de rojo candidatos, lo que origina 218 pasos. Ademas, se realiza el procedimiento para los componentes del color verde y el azul, lo que implica en total 218+219+218 operaciones. En el paso S13 se seleccionan los respectivos componentes de rojo/verde/azul de claves que originan los valores de error mas pequenos, y se utilizan como claves de color segun la presente invencion. El metodo continua entonces al paso S4 de la Figura 1.
En otra realizacion, se adopta una aproximacion de mmimos cuadrados en lugar de una busqueda exhaustiva. Esto se puede representar en forma de matriz segun lo siguiente:
5
10
15
20
25
30
35
40
45
imagen12
Esto se puede escribir tambien de la forma y- Ax, donde y es un vector que comprende los 16 componentes de rojo originales de los elementos de imagen del bloque, A es una matriz que comprende los 3x16=48 pesos de color asignados a los elementos de imagen y x es un vector que comprende los componentes de rojo a determinar y cuantificar en componentes de rojo de las claves de color. Por lo tanto, se debe determinar el vector x. Esto se puede realizar segun la siguiente ecuacion:
imagen13
Se lleva a cabo tambien el mismo procedimiento para los componentes del color verde y el azul.
La presente invention preve que se pueden utilizar otras tecnicas, ademas de la busqueda exhaustiva y los mmimos cuadrados, para determinar las al menos dos claves por bloque de imagen segun la presente invencion.
Como se ha discutido en lo que antecede, la presente invencion se utiliza ventajosamente como un complemento o modo auxiliar al esquema de compresion iPACKMAN/ETC. En tal caso, la presente invencion se utilizara para comprimir y descomprimir bloques de imagen que tengan transiciones de color de variation lenta y, en particular, cuando exista un gradiente de color que se extiende a lo largo de varios bloques vecinos. Para otros bloques de imagen, se puede utilizar en su lugar iPACKMAN/ETC u otro modo auxiliar.
La Figura 10 ilustra esquematicamente una implementation de este tipo. El metodo continua desde el paso S1 de la Figura 1. Despues se procesa el bloque de imagen a comprimir proporcionado, conforme a diferentes esquemas, tipicamente en paralelo. En otras palabras, en el paso S20 se comprime el bloque de imagen segun un primer modo de compresion para generar una primera representation de bloque comprimida. En un siguiente paso s24 se calcula un valor de error representativo de representar el bloque de imagen con este primer bloque comprimido. Ademas, se comprime adicionalmente el mismo bloque de imagen segun al menos otro modo de compresion, en la Figura otros tres modos. Por tanto, en S21, S22 y S23 se utilizan un segundo, tercer y cuarto modos de compresion para comprimir el bloque con el fin de generar respectivamente una segunda, tercera y cuarta representaciones de bloque comprimidas. En los pasos S25, S26 y S27 se estiman valores de error representativos de representar el bloque con la segunda, tercera o cuarta representacion de bloque comprimidas. Ahora estan disponibles cuatro (o, en realizaciones alternativas, dos, tres o mas de cuatro) representaciones comprimidas distintas. En el siguiente paso S28 se selecciona una de estas cuatro representaciones comprimidas y se utiliza como version comprimida del bloque actual. Este paso de selection se realiza basandose en los valores de error calculados en los pasos S24-S27. Asi, en el paso S28 se seleccionara la representacion comprimida asociada con el menor valor de error. En un siguiente paso S29, se proporciona un representante de mdice de modo del modo de compresion utilizado para generar la representacion comprimida seleccionada, y se incluye en el bloque de imagen comprimido, es decir, en la secuencia de bits que representa el bloque de imagen. Preferiblemente, se realiza este procedimiento para cada bloque de imagen que ha de comprimirse. Despues, el metodo termina.
Esto significa que cada bloque de imagen de una imagen se analiza y se comprime preferiblemente de forma individual, lo que en la mayoria de las aplicaciones tipicas (dependiendo de la imagen real a codificar), da como resultado un mosaico de bloques de imagen comprimidos segun los diferentes modos. Es decir, se comprime segun el primer modo un primer conjunto de bloques de imagen, se comprime segun el segundo modo un segundo conjunto de bloques, se comprime segun el tercer modo un tercer conjunto de bloques y se comprime segun el cuarto modo un cuarto conjunto de bloques. Para otras aplicaciones solo se utilizaran, para los distintos bloques de imagen, uno, dos o tres de los modos.
En esta realization, se genera un bloque candidato comprimido por cada modo de compresion disponible. Sin embargo, en otra realizacion la seleccion del modo de compresion a utilizar para un bloque dado se realiza antes de las compresiones reales del bloque. En ese caso, se realiza un primer paso de analisis en donde se investigan y se analizan los colores originales de los elementos de imagen del bloque y, en particular, su distribution en el espacio de color. La seleccion del modo de compresion se realiza basandose en este analisis.
Esta realizacion es posible porque, como se discutira con mayor detalle mas adelante, los diferentes modos de compresion disponibles son particularmente adecuados y eficaces para determinados tipos de bloque. Por ejemplo, el esquema de la presente invencion es eficaz en la gestion de bloques con transiciones de color de variacion lenta.
5
10
15
20
25
30
35
40
45
50
55
El esquema iPACKMAN/ETC es muy eficaz para gestionar bloques de imagen en donde los colores de los elementos de imagen tienen crominancia bastante similar pero distinta luminancia. Un tercer esquema posible podna ser THUMB [8], que tambien se puede utilizar como modo auxiliar a iPACKMAN/ETC. Este esquema tiene dos modos o, asf denominados, patrones, que estan adaptados para gestionar bloques de imagen que tengan dos crominancias (colores) distintas.
Esta realizacion tiene la ventaja de que solo se necesita generar uno y no cuatro bloques candidatos comprimidos, aunque al coste de un analisis de bloque y de color y del riesgo de seleccionar un esquema de compresion no optimo.
En la Figura 10, el primer paso S20 de compresion puede representar los pasos S2 a S4 de la Figura 1, es decir, la asignacion de pesos de color, la determinacion de claves de color y la representacion de los colores originales de los elementos de imagen.
La Figura 11 es un diagrama de flujo que ilustra distintas realizaciones de los otros pasos S21, S22 y S23 de compresion de la Figura 10 segun los esquemas iPACKMAN/ETC y THUMB.
Comenzando con THUMB, el procedimiento continua desde el paso S1 de la Figura 1. En un siguiente paso S30, se determinan una primera y una segunda claves de color. La primera clave de color es una representacion de un primer valor de color y la segunda clave de color es, analogamente, una representacion de un segundo valor de color. El primer y segundo valores de color estan ubicados en una primera lmea en el espacio de color, preferiblemente el espacio RGB. Esta primera lmea tiene tambien una primera direccion. En un siguiente paso S31, se proporciona una clave de modificador de color. Esta clave de modificador es una representacion de al menos un modificador de color aplicable para modificar el primer valor de color a lo largo de una segunda lmea que tiene una segunda direccion en el espacio de color. Al modificar el primer valor de color con el al menos un modificador de color, se obtienen a lo largo de la segunda lmea multiples representaciones de color. En esta realizacion, la segunda direccion es diferente de la primera direccion, es decir, la primera lmea y la segunda lmea no son paralelas.
En el paso S32 se selecciona un mdice de color, asociado a una representacion de color, de entre i) las multiples representaciones de color a lo largo de la segunda lmea e ii) al menos una representacion de color basada en el segundo valor de color. Este paso de seleccion de mdice se realiza preferiblemente para cada elemento de imagen del bloque, lo que se ilustra esquematicamente por la lmea L4.
La resultante representacion de bloque comprimida de este modo comprendera, por tanto, la primera y la segunda claves de color, la clave de modificador de color y una secuencia de indices de color.
En realidad, el esquema THUMB antes descrito puede ejecutarse, a su vez, conforma a dos modos o patrones, dependiendo de como esten distribuidos en el espacio de color los colores de los elementos de imagen. Esto significa que THUMB ocupa dos de los cuatro modos distintos de la Figura 10. Las Figuras 12 - 14B describen con mas detalle el uso de THUMB. En la Figura 12A se representan en el espacio de color los (16) colores originales de elementos de imagen de un bloque a comprimir. De la Figura se desprende que los colores estan ubicados en dos grupos 2, 4, conteniendo cada uno multiples colores. Tal distribucion de color se gestiona ventajosamente con el patron/modo H de THUMB, que se ilustra en la Figura 12B.
En la Figura 12B, el primer valor 10 de color representado por la primera clave de color y el segundo valor 20 de color representado por la segunda clave de color estan ubicados en una primera lmea 40 que tiene una primera direccion 45. Del primer valor 10 de color se pueden derivar dos representaciones 30, 32 de color utilizando un modificador de color representado por la clave de modificador de color. Estas dos representaciones 30, 32 de color y el primer valor 10 de color se ubican en una segunda lmea 12 que tiene una segunda direccion 15, segunda direccion 15 que es diferente de la primera direccion 45. En este patron/modo H se utiliza analogamente un modificador de color representado por la clave de modificador de color para modificar el segundo valor 20 de color, con el fin de obtener dos representaciones 31, 33 de color. Estas dos representaciones 31, 33 de color y el segundo valor 20 de color estan ubicados a lo largo de una tercera lmea 22, que tiene una tercera direccion 25. En el ejemplo ilustrado, la segunda 15 y tercera 25 direcciones son paralelas.
Despues se asocian los indices de color seleccionados para los elementos de imagen con una de las cuatro representaciones 30, 31, 32, 33 de color.
La Figura 13A es un diagrama correspondiente de una distribucion original de color gestionada eficazmente mediante un patron/modo T de THUMB. En la Figura, los colores estan ubicados en dos grupos 2, 4, de manera similar a la Figura 12A. Sin embargo, al contrario que en la Figura 12A, uno de los grupos 4 tiene una forma general circular en lugar de elfptica.
La Figura 13B ilustra como maneja THUMB una situacion de este tipo. El primer valor 10 y el segundo valor 20 de color estan ubicados en la primera lmea 40 que tiene la primera direccion 45. El primer valor 10 de color es modificado por un modificador de color para generar una primera 30 y una segunda 32 representaciones de color ubicadas en la segunda lmea 12 que tiene la segunda direccion 15. En este patron/modo, las representaciones de color disponibles para los elementos de imagen son la primera representacion 30 de color y la segunda
5
10
15
20
25
30
35
40
45
50
55
representacion 32 de color, el primer valor de color 10 y el segundo valor 20 de color. Cada mdice de color seleccionado para los elementos de imagen esta asociado con una de estas cuatro representaciones posibles.
Si, por el contrario, en el paso S22 de la Figura 10 se utiliza el esquema iPACKMAN/ETC, en el paso S30 se determina una primera clave de color como una representacion de un primer valor de color. En este paso S30, tambien se determina una segunda clave de color. Sin embargo, esta segunda clave es una representacion de un color diferencial. Entonces se puede obtener un segundo valor de color como una suma del primer valor de color y el color diferencial. A los elementos de imagen de un primer sub-bloque (2x4 o 4x2 elementos de imagen) se les asigna el primer valor de color, mientras que a los elementos de imagen de un segundo sub-bloque (2x4 o 4x2 elementos de imagen) se les asigna el segundo valor de color.
En el paso S31 se proporciona una clave de intensidad, en donde la clave de intensidad es una representacion de un conjunto de multiples modificadores de intensidad. Estos modificadores de intensidad se pueden aplicar para modificar la intensidad del primer o segundo valores de color, con el fin de generar multiples representaciones de color. En una implementacion preferida, la clave de intensidad es un mdice tabular a una tabla de intensidades que comprende multiples conjuntos de modificadores, en donde los conjuntos de modificadores tienen distintos modificadores de intensidad. En el paso S32, se selecciona un mdice de intensidad para cada elemento de imagen del bloque, en donde el mdice de intensidad esta asociado con un modificador de intensidad procedente del conjunto de modificadores de intensidad representado por la clave de intensidad.
La Figura 14 ilustra esquematicamente una posible representacion 700 de bloque comprimida para el modo diferencial iPACKMAN/ETC. El bloque comprimido 700 incluye la primera clave 710 de color que incluye tres componentes de color, rojo 712, verde 714 y azul 716, preferiblemente representado cada uno por cinco bits. Analogamente, la segunda clave 720 de color o color diferencial incluye tres componentes, rojo 722, verde 724 y azul 726, preferiblemente representado cada uno por tres bits. El bloque comprimido 700 incluye, ademas, dos claves 750A, 750B de intensidad, una para cada sub-bloque 2x4/4x2, cada una preferiblemente de 3 bits. Tambien se incluye en el bloque comprimido 700 una secuencia 760 de indices de intensidad, preferiblemente un mdice de intensidad de 2 bits por cada elemento de imagen del bloque, lo que da como resultado 32 bits. Un “flipbit” (bit de inversion) 770 define si los dos sub-bloques del bloque de imagen son dos bloques 2x4 o dos bloques 4x2, es decir, si estan colocados verticalmente (flipbit = 0bin) u horizontalmente (flipbit = 1 bin). iPACKMAN/ETC comprende dos modos del tipo denominado “por defecto”, uno de los cuales se ha descrito y expuesto en la presente memoria. Un “diffbit” (bit de diferencia) 780 discrimina entre estos dos modos predeterminados. En las Figuras 14 a 17, este diffbit 780 es igual a, y se ha fijado en, 1 bin (o 0bin). Tengase en cuenta que el orden respectivo de las claves 710, 720, 750A, 750B, la secuencia 760 de indices, el flipbit 770 y el diffbit 780 del bloque de imagen codificado 700 puede ser distinto del ilustrado en la Figura. El tamano total del bloque comprimido son 64 bits.
En el modo iPACKMAN/ETC antes mencionado, los componentes 712, 714, 716 de color de la primera clave 710 de color comprenden cada uno preferiblemente 5 bits, que representan basicamente cualquier valor en el intervalo de 0 a 31 (de 00000bin a 11111 bin). Los componentes 722, 724, 726 de la segunda clave 720 comprenden cada uno preferiblemente 3 bits, que se utilizan para representar un valor en el intervalo de -4 a +3. Los componentes de color del segundo valor de color se pueden obtener sumando los componentes 712, 714, 716; 722, 724, 726 de las dos claves:
Componente rojo = R + dR Componente verde = G + dG Componente azul = B + dB
Dado que estos componentes de color representan informacion de intensidad, se les permite tomar los valores de 0 (ninguna intensidad) a 31 (maxima intensidad). Esto significa que el codificador que trabaje en este modo de iPACKMAN/ETC nunca utilizara combinaciones de bits de la primera clave 710 de color y la segunda clave 720 de color que den lugar a que las sumas R + dR, G + dG, B + dB se desborden, es decir, sean <0 o >31. Esto permite introducir tres modos auxiliares que se pueden utilizar para complementar iPACKMAN/ETC.
En el primer modo auxiliar, el componente del color rojo se desborda, es decir, R + dR es menor que cero o mayor que 31. Esto sucede si los tres primeros bits del componente 712 de rojo de la primera clave 710 de color son iguales y distintos del primer bit del componente 722 de rojo de la segunda clave 720 de color.
En la Figura 15 se emplea este principio para utilizar el patron/modo H de THUMB como un modo auxiliar para iPACKMAN/ETC. Asf, en este modo no se pueden seleccionar libremente cuatro bits 790 ya que los componentes de rojo deben desbordarse, lo que sucede si estos cuatro bits 790 son iguales a 1110bin o 0001 bin. La representacion 700 de bloque comprimida tiene preferiblemente un total de 64 bits, de los cuales cuatro se han utilizado segun lo anterior. Los 60 bits restantes se dividen preferiblemente entre las partes anexas segun lo siguiente; se asignan 4 bits a cada componente de color 712, 714, 716; 722, 724, 726 de la primera 710 y segunda 720 claves de color. La clave 750 de modificador de color comprende tres bits, el diffbit 780 un bit (que tiene el mismo valor que en la Figura 14) y la secuencia 760 de indices de color preferiblemente 32 bits.
5
10
15
20
25
30
35
40
45
50
55
Se puede obtener un segundo modo auxiliar si se desborda el componente de verde, es decir, G + dG es menor que cero o mayor que 31, y no se deja que el componente de rojo se desborde, es decir, 0<R + dR<31. En este modo, el primer bit del componente 712 de rojo de la primera clave de color de la Figura 14 se fija distinto del segundo o tercer bit del componente 712 de rojo. Ademas, los tres primeros bits del componente 714 de verde de la primera clave 710 de color deben ser iguales y distintos del primer bit del componente 724 de verde de la segunda clave 720 de color.
En la Figura 16 no se pueden fijar libremente el bit0 (corresponde al primer bit del componente de rojo en la primera clave de color de la Figura 14), del bit8 al bit10 (corresponden a los tres primeros bits del componente de verde en la primera clave de color de la Figura 14) y el bit13 (corresponde al primer bit del componente de verde en la segunda clave de color de la Figura 14), representados colectivamente por 790 en la Figura. Por lo tanto, quedan 59 bits para uso en las otras partes del bloque comprimido 700. La division de bits entre las claves 710, 720 de color, la clave 750 de modificador de color, el diffbit 780 y la secuencia 760 de indices de color es preferiblemente la misma que para la Figura 15 excepto que la clave 750 de modificador de color comprende en este caso solamente dos bits en lugar de tres.
Esta disponible un tercer modo auxiliar que utiliza el esquema de la presente invencion si se desborda el componente de azul, es decir, B + dB es menor que cero o mayor que 31, pero no se deja que los componentes de rojo y de verde se desborden. Esto significa que el primer bit del componente 712 de rojo y 714 de verde de la primera clave 710 de color de la Figura 14 debe ser distinto del segundo o tercer componente de los componentes 712 de rojo y 714 de verde. Ademas, el componente de azul se desborda, es decir, B + dB es menor que cero o mayor que 31.
En la Figura 17, por lo tanto, no se pueden fijar libremente el bit0 (corresponde al primer bit del componente de rojo en la primera clave de color de la Figura 14), el bit8 (corresponde al primer bit del componente de verde en la primera clave de color de la Figura 14), del bit16 al bit18 (corresponden a los tres primeros bits del componente de azul en la primera clave de color de la Figura 14) y el bit21 (corresponde al primer bit del componente de azul en la segunda clave de color de la Figura 14), denominados colectivamente 790. A los componentes 712, 722, 732 de rojo y 716, 726, 736 de azul de las tres claves 710, 720, 730 de color se les asignan preferiblemente 6 bits a cada uno, mientras que los correspondientes componentes 714, 724, 734 de verde comprenden 7 bits cada uno y el diffbit 780 es un bit. Esto suma, en total, 64 bits.
Si son posibles las cuatro representaciones comprimidas distintas ilustradas en las Figuras 14-17, un mdice de modo utilizado para discriminar entre los cuatro modos incluye preferiblemente posiciones definidas en las secuencias de bits. Estas posiciones de bit incluyen los tres primeros bits del componente de rojo, de verde y de azul de la primera clave de color, y el primer bit del componente de rojo, de verde y de azul de la segunda clave de color de la Figura 14. Ademas, preferiblemente se utiliza el diffbit para discriminar entre el otro modo iPACKMAN/ETC disponible. Tengase en cuenta, sin embargo, que algunos de los bits de este mdice de modo se pueden utilizar para codificar el bloque comprimido en los distintos modos.
Descompresion
La Figura 18 ilustra un diagrama de flujo de un metodo para descodificar una imagen codificada o version codificada de una imagen original segun la presente invencion. La imagen codificada comprende basicamente varias representaciones codificadas de bloques de imagen. Estas representaciones de bloques codificadas se generan preferiblemente mediante el metodo de codificacion de imagen descrito mas arriba.
El metodo comienza por lo general identificando el bloque o bloques de imagen codificada que hay que descodificar. Podna ocurrir que hubiera que descodificar todos los bloques de imagen codificados de una imagen codificada, para generar una representacion descodificada de la imagen original. Como alternativa, solo hay que acceder a una parte de la imagen original. En consecuencia, solamente se tienen que descodificar un numero seleccionado de bloques de imagen (o, mas exactamente, una cantidad seleccionada de elementos de imagen de ciertos bloques de imagen).
Una vez se han identificado (la representacion de) el bloque o (las representaciones de) los bloques de imagen codificados correctos, el paso S40 determina al menos dos valores de color basados en las al menos dos claves de color de las representaciones de bloque comprimidas. En una implementacion preferida, este paso de determinacion implica expandir el color cuantificado de la clave de color, por ejemplo RGB676, a, preferiblemente, 24 bits (RGB888). Si la segunda clave de color comprende componentes de color diferenciales, estos componentes se anaden preferiblemente a componentes correspondientes de la primera clave de color antes de la expansion, para generar un segundo valor de color. En una implementacion preferida de la presente invencion, la representacion de bloque comprimida comprende tres claves de color. Esto significa que en el paso S40 se determinan tres valores de color mediante la extension de cada una de las claves.
Los siguientes pasos S41 y S42 se realizan para cada elemento de imagen que ha de descodificarse, lo que se ilustra esquematicamente por la lmea L5. En el paso S41 se proporcionan los pesos de color asignados al elemento de imagen a descodificar. Los pesos de color son preferiblemente pesos predefinidos, que dependen de la posicion real del elemento de imagen en los bloques:
5
10
15
20
25
30
35
40
45
50
55
<v =f0(x^y)
< =fH{x>y)
Ky =fv(x,y)
Por lo tanto, todos los bloques de imagen de la imagen comprimida segun la presente invencion tienen preferiblemente la misma asignacion de pesos de color, de manera que un elemento de imagen en, por ejemplo, la posicion (2,1) de un primer bloque tendra los mismos pesos de color que un elemento de imagen en la posicion (2,1) de un segundo bloque.
Sin embargo, la presente invencion preve que podnan existir alternativas en la asignacion de pesos que se lleva a cabo bloque por bloque. En tal caso, la representacion comprimida comprende preferiblemente una clave de peso. Esto significa que la determinacion de pesos en el paso S41 se realiza entonces basandose en la clave de peso, es decir, el conjunto de pesos de color utilizado para el bloque actual se identifica con base en la clave de peso.
En un siguiente paso S42, la representacion de color utilizada para representar el color original del elemento de imagen a descodificar se calcula basandose en los pesos de color proporcionados y los al menos dos valores de color determinados. En una implementacion preferida, la representacion de color se calcula como combinacion (lineal) ponderada, mediante los pesos proporcionados, de los valores de color determinados. En este contexto, en el calculo se utilizan preferiblemente todos los valores de color, pero podna ser posible utilizar solamente un subconjunto de los mismos.
Se podnan realizar los pasos S41 y S42 para varios elementos de imagen del bloque de imagen (lo que se ilustra esquematicamente mediante la lmea L5). La invencion preve que, en algunas aplicaciones, solamente se descodifique un unico elemento de imagen a partir de un bloque de imagen espedfico, se descodifiquen multiples elementos de imagen de un bloque de imagen espedfico y/o se descodifiquen todos los elementos de imagen de un bloque espedfico.
Despues se repiten, preferiblemente, los pasos S40 a S42 para todos los bloques de imagen que comprenden elementos de imagen que deban descodificarse (lo que se ilustra esquematicamente mediante la lmea L6). Esto significa que el bucle de pasos S40 a S42 podna realizarse una vez, pero mas frecuentemente varias veces para diferentes bloques de imagen codificados y/o varias veces para un bloque de imagen codificado espedfico.
En el paso opcional S43 se genera una representacion descodificada de la imagen original, o una parte de la misma, basandose en los elementos y bloques de imagen descodificados. Despues, el metodo termina.
La Figura 19 es un diagrama de flujo de una implementacion multimodal de la descodificacion/descompresion de imagenes y bloques de la presente invencion. El metodo comienza en el paso S50 donde, basandose en un mdice de modo, se selecciona un modo de descompresion para uso en el bloque actual. Si son posibles las cuatro representaciones comprimidas distintas ilustradas en las Figuras 14 a 17, el mdice de modo incluye el diffbit, los tres primeros bits del componente de rojo, de verde y de azul de la primera clave de color y el primer bit del componente de rojo, de verde y de azul de la segunda clave de color de la Figura 14. Asf, el descodificador investiga estas posiciones de bit en la secuencia de bits que constituye la representacion de bloque comprimida y selecciona el modo de descompresion basandose en los bits investigados. En una implementacion preferida, se selecciona un primer modo de compresion si el componente del color azul se desborda, pero no el del rojo y el del verde. Se seleccionan un segundo y un tercer modo si se desborda el componente de rojo o se desborda el componente de verde, pero no el del rojo. Si ninguno de los componentes se desborda, en el paso S50 se selecciona el cuarto modo.
Si en el paso S50 se selecciona el primer modo, el procedimiento continua al paso S51, donde se descomprime el bloque segun este modo. Esto corresponde a realizar los pasos S40-S42 ilustrados en la Figura 18. Si, en cambio, se selecciona un segundo, tercer o cuarto modo, el procedimiento continua al paso S52, S53 o S54.
La Figura 20 ilustra la descompresion realizada segun el modo THUMB. Comenzando en el paso S60, se determina un primer valor de color basandose en la primera clave de color. En el paso S61 se determina un segundo valor de color basandose en la segunda clave de color. Estos dos valores de color estan ubicados en una primera lmea que tiene una primera direccion en el espacio de color (veanse las Figuras 12B y 13B). Las determinaciones de color de los pasos S60 y S61 implican preferiblemente expandir la secuencia de bits de las claves para generar los valores de color. Un siguiente paso S62 genera multiples representaciones de color a lo largo de una segunda lmea que tiene una segunda direccion en el espacio de color, modificando el primer valor de color con al menos un modificador de color representado por la clave de modificador de color. Esta segunda direccion es distinta de la primera direccion. El siguiente paso S63 se lleva a cabo para cada elemento de imagen a descodificar, lo que se ilustra esquematicamente mediante la lmea L7. Este paso S63 implica seleccionar, basandose en la secuencia de indices de color y, mas exactamente, en el mdice de color asignado al elemento de imagen correspondiente, una representacion de color de entre i) las multiples representaciones de color a lo largo de la segunda lmea e ii) al
5
10
15
20
25
30
35
40
45
50
menos una representacion de color basada en el segundo valor de color. En el patron/modo H, tambien se utiliza al menos un modificador de color basado en la clave de modificador, para modificar el segundo valor de color a lo largo de una tercera lmea que tiene una tercera direction (distinta de la primera direction) con el fin de generar multiples representaciones de color. Por lo tanto, en este patron H estan disponibles dos conjuntos de multiples representaciones de color (uno de ellos situado en la segunda lmea y el otro situado en la tercera lmea) y el mdice de color de los elementos de imagen apunta a una de las representaciones de los dos conjuntos. En el patron/modo T, las multiples representaciones de color de la segunda lmea se complementan con el primer y el segundo valor de color, que tambien se pueden seleccionar como representaciones de color para los elementos de imagen. El metodo continua entonces al paso S43 de la Figura 18.
Si, en cambio, basandose en el mdice de modo se selecciona el modo iPACKMAN/ETC, se determina un valor de color basandose en la primera clave de color o la primera y la segunda claves de color del paso S70 de la Figura. 21. Si el elemento de imagen a descodificar esta presente en un primer sub-bloque (2x4/4x2), el valor de color se determina basandose en la primera clave de color, preferiblemente mediante la expansion de la secuencia de bits de la clave de RGB555 a RGB888. Si, en cambio, el elemento de imagen esta presente en un segundo sub-bloque (2x4/4x2), el valor de color se determina basandose tanto en la primera como en la segunda claves de color, basicamente mediante la suma de los componentes de rojo, los componentes de verde y los componentes de azul de la primera y la segunda claves y la posterior expansion del resultado a RGB888 (o bien, como alternativa, primeramente la expansion de los componentes de claves y despues la suma de los mismos). En este modo, el bloque comprimido comprende dos claves de intensidad, una por cada sub-bloque. La clave de intensidad asignada al sub-bloque que comprende el elemento de imagen a descodificar se utiliza en el paso S71 para proporcionar un conjunto de multiples modificadores de intensidad. Este paso comprende preferiblemente proporcionar, basandose en la clave de intensidad, el conjunto de modificadores a partir de una tabla que comprende multiples conjuntos de modificadores de este tipo. En el paso S72 se selecciona un modificador de intensidad para uso en el elemento de imagen, a partir del conjunto de modificadores proporcionados, basandose en el mdice de intensidad asignado al elemento de imagen. En el siguiente paso S73, el modificador seleccionado modifica en intensidad el valor de color determinado, con el fin de generar una representacion de color para el elemento de imagen. Preferiblemente, se repiten los pasos S70 a S73 para todos los elementos de imagen del bloque que han de descodificarse. El metodo continua despues al paso S43 de la Figura 18.
Ejemplos de descompresion
A continuation se ofrecen ejemplos de descompresion utilizando un diseno de secuencia de bits como se ilustra en las Figuras 14 a 17.
PACKMAN/ETC
El bloque de imagen comprimido esta representado por la siguiente secuencia de bits:
10110 010 11010 110 00100 000 101 110 1 1
10 01 11 00 01 01 10 11 10 00 11 00 01 01 00 01
Primeramente se investigan los bit0-bit2, bit6, bit8-10, bit13, bit16-18, bit21 y el diffbit 780 para determinar el modo de descompresion a utilizar para este bloque de imagen. Dado que ninguno de los componentes de color se desborda y el diffbit 780 esta fijado en 1, se debe seleccionar el modo por defecto diferencial de iPACKMAN/ETC.
En primer lugar, se expanden a RGB888 los componentes 712, 714, 716 de color de la primera clave 710 de color, para generar el primer valor de color:
Rojo: 10110bin => 10110101bin = 181
Verde: 11010bin => 11010110bin = 214
Azul: 00100bin => 00100001 bin = 33
A estos componentes se les suman los componentes diferenciales 722, 724, 726 de la segunda clave 720 de color para obtener el segundo valor de color:
Rojo: 010bin ++ 2 => 181+2=183
Verde: 110bin^2 =^214-2=212
Azul. OOObin * 0 —^ 33+2=33
El flipbit se fija en 1 bin, lo que implica que se asigna el primer valor de color a los ocho elementos de imagen de las dos filas superiores del bloque 4x4, mientras que se utiliza el segundo valor de color para los ocho elementos de imagen de las dos filas inferiores.
5
10
15
20
25
Las dos claves 750A, 750B de intensidad apuntan a una tabla de intensidades, ejemplificada por la Tabla 8 a continuation:
Tabla 8 - Tabla de intensidades
clave de intensidad
11 bin 10bin o o O' o’ 01 bin
000bin
-8 -2 2 8
001 bin
-12 -4 4 12
01 Obin
-31 -6 6 31
011 bin
-34 -12 12 34
100bin
-50 -8 8 50
101 bin
-57 -19 19 57
110bin
-80 -28 28 80
1 1 1 bin
-127 -42 42 127
La primera clave 750A de intensidad aplicable para elementos de imagen en el primer sub-bloque 2x4 es 101 bin, que representa los modificadores de intensidad -57, -19, 19, 57. En cambio, la segunda clave 750B de intensidad representa los modificadores de intensidad -80, -28, 28, 80.
El primer elemento de la imagen en la position (0,0) tendra la siguiente representation de color:
(181, 214, 33) + (-19, -19, -19) = (162, 195, 14)
En consecuencia, la representacion de color del ultimo elemento de imagen (en la posicion (3,3)) se calcula de la manera siguiente:
(183, 212, 33) + (80, 80, 80) = (255, 255, 113)
despues de restringir los valores calculados de componentes de color entre el valor mmimo permitido de 0 y el valor maximo de 255.
Despues se prosigue este procedimiento para el resto de los elementos de imagen de los bloques de imagen.
Patron H de THUMB
El bloque de imagen comprimido se representa por la siguiente secuencia de bits:
111 10 O 10 1101 0110 0010 0000 1011 101 1
10 01 11 00 01 01 10 11 10 00 11 00 01 01 00 01
En este caso, los bits bit0-bit2 son todos iguales y diferentes de bit5, lo que significa que el componente rojo se desborda y se debe utilizar un primer modo auxiliar, es decir el patron H de THUMB. La secuencia de bits presentada mas arriba tiene la disposition que se ilustra en la Figura 15.
El primer y segundo valores de color se generan mediante la expansion de los componentes 712, 714, 716; 722, 724, 726 de las dos claves 710, 720 de color:
Rojo 0: 101 Obi,-, => 10101010|3jn=170 Verde 0: 1101 bin => 11011101 bin=221 Azul 0: 0110bin => 01100110bin=102
Rojo 1: 0010bin => 00100010bjn=34 Verde 1: 0000bin => 00000000bin=0 Azul 1: 1011 bin => 10111011bin=187
Por lo tanto, el primer valor de color es (170, 221, 102) y el segundo valor es (34, 0, 187).
La clave 750 de modificador 101bin=5 implica que hay que desplazar hacia la izquierda el numero 1 bin cinco veces
5
10
15
20
25
30
35
para obtener 100000bin=32. Se utiliza este valor para modificar los dos valores de color con el fin de obtener cuatro representaciones de color:
C0: (170, 221, 102) - (32, 32, 32) = (138, 189, 70)
C1: (170, 221, 102) + (32, 32, 32) = (202, 253, 134)
C2: (34, 0, 187) - (32, 32, 32) = (2, 0, 155)
C3: (34, 0, 187) + (32, 32, 32) = (66, 32, 219)
El primer elemento de imagen tiene el mdice de color 10bin, lo que implica que para este elemento de imagen se utiliza la representation C2 de color. Se prosigue este procedimiento para el resto de elementos de imagen (mdice
00bin^C0, 01bin^C2, 10bin^C2y 11 bin^—^ C3).
Patron T de THUMB
El bloque de imagen comprimido se representa por la siguiente secuencia de bits:
1 0110 010 000 1 0 1 100 0100 0001 0111 01 1
10 01 11 00 01 01 10 11 10 00 11 00 01 01 00 01
En este caso, el componente verde desborda, ya que bit8-bit10 son iguales y distintos de bit12. Ademas, el componente de rojo no desborda, porque bit0 es distinto de bit1. Esto significa que se debe seleccionar un segundo modo de descompresion auxiliar en forma de patron T de THUMB y que la secuencia de bits se interpreta con la disposition de la Figura 16.
Los dos valores de color se calculan del mismo modo que antes para el patron P:
Rojo 0: 0110bin^ 01100110bin=102 Verde 0: 0101bin => 01010101 bin=85 Azul 0: 0100bin => 01000100bin=68
Rojo 1: 0100bin => 01000100bin=68 Verde 1: 0001bin => 00010001 bin=17 Azul 1:0111 bin =>01110111 bin=119
En este caso el modificador de color 750 incluye solamente dos bits 01bin=1, lo que implica que hay que desplazar hacia la izquierda una position el numero 1bin para obtener 10bin=2. Utilizando este valor modificador se calculan dos de las cuatro posibles representaciones de color, mientras que las otras dos representaciones son iguales a los dos valores de color:
C0: (102, 85, 68)
C1: (102, 85, 68) - (2, 2, 2) = (100, 83, 66)
C2: (102, 85, 68) + (2, 2, 2) = (104, 87, 70)
C3: (68, 17, 119)
El primer elemento de imagen tiene el mdice de color 10bin, que corresponde a C2. Despues se repite el procedimiento para el resto de los elementos de imagen del bloque.
PLANO
El bloque de imagen comprimido se representa por la siguiente secuencia de bits:
1 011001 0 0 101011 0 000 00 1 010 111001 1
1001110 001011 011100 0110001 010001
En este ejemplo, el componente azul se desborda ya que bit16-bit18 son iguales y diferentes de bit21. Ademas, bit0 es distinto de bit1 (el rojo no se desborda) y bit8 es distinto de bit9 (el verde no se desborda). En consecuencia, se debe utilizar un cuarto modo de descompresion tal como se define en la presente invention, PLANO.
En este ejemplo, se calculan tres valores de color mediante la expansion a RGB888 de los componentes 712, 714,
5
10
15
20
25
30
35
40
716; 722, 724, 726; 732, 734, 736 de color de las tres claves 710, 720, 730.
R0: 011001 bin => 01100101bin=101 G0: 010101 1bin => 01010110bin=86 B0: 000010bjn => 00001000bjn=8
Rh: 111001bin => 11100111bin=231 Gh: 1001110bin => 10011101 bin=157 Bh: 001011bin 00101100bin= 44
Rv 011100bin =^> 01110001 bin=113 Gv: 0110001bin^ 01100010bin=98 Bv: 010001 bin => 01000101bin=69
Despues se ponderan estos valores de color y se combinan segun las ensenanzas de la Tabla 6 precedente. La representation de color para el primer elemento (0,0) de imagen es simplemente el primer valor (101, 86, 8). La representation de color para el elemento (1,0) de imagen es tres cuartas partes del primer valor de color y una
cuarta parte del segundo valor de color, es decir,
imagen14
Se prosigue este
procedimiento para el resto de los elementos de imagen, a fin de proporcionar una representacion descodificada del bloque de imagen.
Aspectos de implementation
El esquema de codification de imagen (codification de bloques de imagen) y de descodificacion de imagen (descodificacion o procesamiento de bloques de imagen) segun la presente invention podrfa proveerse en un sistema de procesamiento de datos en general, por ejemplo en un terminal de usuario u otra unidad configurada para procesar y/o representar imagenes. Un terminal de este tipo podrfa ser un ordenador, por ejemplo un ordenador personal (PC, por sus siglas en ingles), una consola de juegos o un cliente ligero, por ejemplo un asistente personal digital (PDA), una unidad movil y un telefono.
Terminal de usuario
La Figura 22 ilustra un terminal 100 de usuario representado por una unidad movil. Sin embargo, la invencion no esta limitada a las unidades moviles, y podrfa implementarse en otros terminales y unidades de procesamiento de datos, tales como ordenadores PC y consolas de juegos. En la Figura solo se ilustran medios y elementos de la unidad movil 100 directamente implicados en la presente invencion.
La unidad movil 100 comprende una unidad (central) 200 de procesamiento (CPU, por sus siglas en ingles) para procesar datos, entre ellos datos de imagen, dentro de la unidad movil 100. Se proporciona un sistema grafico 130 en la unidad movil 100 para gestionar datos de imagen y datos graficos. En particular, el sistema grafico 130 esta adaptado para representar o visualizar imagenes en una pantalla conectada 120 u otra unidad de visualization. La unidad movil 100 tambien comprende un almacenamiento o memoria 140 para almacenar datos en el mismo. En esta memoria 140 se pueden almacenar datos de imagen, en particular datos de imagen codificados (bloques de imagen codificados) segun la presente invencion.
En la unidad movil 100 se proporciona un codificador210 de imagenes segun la presente invencion. Este codificador 210 esta configurado para codificar una imagen o textura a una representacion codificada de la imagen (o textura). Como se ha discutido antes, tal representacion codificada comprende una secuencia o archivo de multiples bloques de imagen codificados. Este codificador 210 de imagenes puede proporcionarse como software que se ejecuta en la CPU 200, tal como se ilustra en la Figura. Como alternativa, o adicionalmente, se puede disponer el codificador 210 en el sistema grafico 130 o en otro lugar de la unidad movil 100.
Se puede proporcionar una representacion codificada de una imagen procedente del codificador 210 de bloques a la memoria 140 a traves de un bus (de memoria) 150, para almacenarla en la misma hasta una representacion ulterior de la imagen. Como alternativa, o adicionalmente, se pueden reenviar los datos de imagen codificados a una unidad 110 de entrada y salida (I/O, por sus siglas en ingles) para ser transmitidos (inalambricamente o por cable) a otros terminales o unidades externos. Esta unidad I/O 110 tambien puede estar adaptada para recibir datos de imagen desde una unidad externa. Estos datos de imagen podrfan ser una imagen que debe ser codificada por el codificador 210 de imagenes o datos codificados de imagen que deben ser descodificados. Tambien serfa posible almacenar la representacion de imagen codificada en una memoria de texturas dedicada prevista, por ejemplo, en el sistema grafico 130. Ademas, tambien, o como alternativa, se podrfan almacenar (temporalmente) partes de la imagen codificada, en una memoria cache de texturas, por ejemplo, en el sistema grafico 130.
Se proporciona en la unidad movil 100 un descodificador 220 de imagenes segun la presente invencion para
5
10
15
20
25
30
35
40
45
50
55
descodificar una imagen codificada con el fin de generar una representacion de la imagen descodificada. Esta representacion descodificada podna corresponder a toda la imagen original o a una parte de la misma. El descodificador 220 de imagenes proporciona datos de imagen descodificados al sistema grafico 130, que a su vez normalmente procesa los datos antes de representarlos o presentarlos en la pantalla 120. Se puede disponer el descodificador 220 de imagenes en el sistema grafico 130, tal como se ilustra en la Figura. Como alternativa, o adicionalmente, se puede proporcionar el descodificador 200 como software que se ejecuta en la CPU 200 o en otro lugar de la unidad movil 100.
La unidad movil 100 podna estar equipada con un codificador 210 de imagenes y con un descodificador 220 de imagenes, como se ilustra en la Figura. Sin embargo, para algunos terminales 100 podna ser posible incluir solo un codificador 210 de imagenes. En tal caso, se podnan transmitir datos de imagen codificados a otro terminal que realice la descodificacion y, posiblemente, la representacion de la imagen. En consecuencia, un terminal 100 podna incluir solo un descodificador 220 de imagenes, es decir, ningun codificador. Un terminal 100 de este tipo recibe entonces de otro terminal una senal que comprende datos de imagen codificados y la descodifica para generar una representacion de imagen descodificada. Por tanto, se podna transmitir de forma inalambrica la senal de imagen codificada entre los terminales, utilizando transmisor y receptor de radio. Como alternativa, se podnan emplear otras tecnicas para distribuir imagenes y representaciones de imagen codificadas entre terminales segun la invencion, tales como Bluetooth®, tecnicas IR utilizando puertos IR, y transferencia cableada de datos de imagen entre terminales. Tambien se podnan utilizar tarjetas o chips de memoria que se pueden conectar e intercambiar entre los terminales para esta distribucion de datos de imagen entre terminales.
Las unidades 110, 130, 200, 210 y 220 de la unidad movil 100 pueden proporcionarse como software, hardware o una combinacion de ambos.
Codificador de imagenes
La Figura 23 ilustra un diagrama de bloques de una realizacion de un codificador 210 de imagenes segun la presente invencion. El codificador 210 comprende tfpicamente un desintegrador 215 de imagenes para descomponer o dividir una imagen de entrada en varios bloques de imagen. Preferiblemente, el desintegrador 215 esta configurado para descomponer la imagen en bloques de imagen que comprenden dieciseis elementos de imagen (pfxeles, texeles o voxeles), es decir, que tienen un tamano general de 4x4 elementos de imagen.
Este desintegrador 215 podna estar adaptado para descomponer distintas imagenes de entrada en bloques de imagen con distintos tamanos. En tal caso, el desintegrador 215 recibe preferiblemente informacion de entrada, que permite la identificacion del formato de bloque de imagen a utilizar para una imagen dada.
Esta realizacion del codificador 210 de imagenes comprende un unico codificador 300 de bloques. Este codificador 300 de bloques codifica el bloque o bloques de imagen recibidos desde el desintegrador de imagenes para generar la representacion o representaciones de bloque codificadas. El tamano global de la representacion de bloque es menor que el tamano correspondiente del bloque de imagen sin codificar. El codificador 300 de bloques esta configurado preferiblemente para procesar (codificar) secuencialmente cada bloque de imagen procedente del desintegrador 215.
En una implementacion alternativa, el codificador 210 incluye multiples codificadores 300 de bloques para procesar en paralelo multiples bloques de imagen procedentes del desintegrador 215 de imagenes, lo que reduce el tiempo total de codificacion de imagenes.
Las unidades 215 y 300 del codificador 210 de imagenes pueden proporcionarse como software, hardware o una combinacion de ambos. Las unidades 215 y 300 pueden implementarse juntas en el codificador 210 de imagen. Como alternativa, tambien es posible una implementacion distribuida, siendo proporcionadas algunas de las unidades en otra parte de la unidad movil.
Codificador de bloques
La Figura 24 ilustra un diagrama de bloques de una realizacion de un codificador 300 de bloques segun la presente invencion, tal como el codificador de bloques del codificador de imagenes de la Figura 23. El codificador 300 comprende un asignador 310 de pesos para asignar pesos de color a al menos un subconjunto de los elementos de imagen de un bloque de imagen que ha de comprimirse. En una implementacion preferida, el asignador 310 de pesos asigna un peso Z de color por cada elemento de imagen del bloque, donde Z es un numero multiple que es igual al numero de claves de color que un cuantificador 320 color determina para el bloque de imagen. En otra realizacion preferida, el asignador 310 asigna pesos de color a los elementos de imagen de un bloque de manera que los valores de los componentes de color de al menos un componente de color de las representaciones de color utilizadas para representar los colores originales de los elementos de imagen cambien monotonamente a lo largo de una fila o/y columna de elementos de imagen del bloque. La asignacion de pesos realizada por el asignador 310 del codificador 300 de bloques de elementos de imagen de un bloque se lleva a cabo preferiblemente basandose en la posicion de los elementos de imagen, es decir, las coordenadas relativas de los elementos de imagen en el bloque.
El cuantificador 320 de color del codificador 300 de bloques esta configurado para determinar, basandose al menos
5
10
15
20
25
30
35
40
45
50
55
parcialmente en los pesos de color asignados por el asignador 310, al menos dos claves de color para el bloque de imagen. En una implementacion preferida, el cuantificador 320 de color determina tres claves de color, preferiblemente tres claves RGB676.
Las unidades 310 y 320 del codificador 300 de bloques pueden proporcionarse como software, hardware o una combinacion de ambos. Las unidades 310 y 320 se pueden implementar juntas en el codificador 300 de bloques. Como alternativa, tambien es posible una implementacion distribuida, siendo proporcionadas algunas de las unidades en otra parte del codificador de imagenes.
La Figura 25 es un diagrama de bloques esquematico de otra realizacion de un codificador 300 de bloques segun la presente invencion. Este codificador 300 de bloques esta adaptado para funcionar segun diferentes modos de compresion, preferiblemente cuatro modos diferentes. En un primer modo de compresion, el asignador 310 de pesos y el cuantificador 320 de color se hacen funcionar conforme a la discusion precedente en relacion con la Figura 24. Por lo tanto, esta da lugar a un bloque de imagen comprimido que comprende tres claves de color y un mdice de modo, que se describira mas adelante. En la Figura 17 se ilustra un ejemplo de un bloque comprimido de este tipo.
En el modo de compresion iPACKMAN/ETC, se hace funcionar el cuantificador 320 de color para determinar una primera clave de color que es una representacion de un primer valor de color y para determinar una segunda clave de color como una representacion de un color diferencial, que se puede sumar al primer valor de color para obtener un segundo valor de color. Se hace funcionar de esta manera un cuantificador 340 de modificadores para determinar al menos una, y preferiblemente dos, claves de intensidad como representacion de al menos un conjunto de multiples modificadores de intensidad utilizados para modificar el primer o segundo valor de color con el fin de obtener representaciones de color. Las claves de intensidad son, preferiblemente, indices de tabla de una tabla 500 de modificadores que comprende multiples conjuntos de modificadores de este tipo. En el codificador 300 de bloques se proporciona un selector 350 de mdice con el fin de determinar, para cada elemento de imagen del bloque, un mdice de intensidad asociado con uno de los modificadores de intensidad del conjunto o los conjuntos de modificadores representados por la clave o las claves de intensidad.
En los dos modos de THUMB, el cuantificador 320 de color determina una primera clave de color como una representacion de un primer valor de color. Ademas, el cuantificador 320 determina una segunda clave como representacion de un segundo valor de color, donde estos dos valores estan ubicados en una primera lmea con una primera direccion en el espacio de color. Se hace funcionar de esta manera el cuantificador 340 de modificadores para proporcionar una clave de modificador de color como una representacion de al menos un modificador de color aplicable para modificar el primer valor de color a lo largo de una segunda lmea que tiene una segunda direccion en el espacio de color. Esta modificacion de color da lugar a multiples representaciones de color a lo largo de la segunda lmea. Las segunda y primera direcciones no son paralelas. Despues, el selector 350 de mdice selecciona, para cada elemento de imagen, un mdice de color asociado con una representacion de color seleccionada de entre i) las representaciones de color a lo largo de la segunda lmea e ii) al menos una representacion de color basada en el segundo valor de color.
En una implementacion preferida, se determinan multiples representaciones candidatas comprimidas para un bloque de imagen dado, una representacion por cada modo de compresion. Despues se implementa un selector 360 de modo para seleccionar la representacion candidata que se debe utilizar como representacion comprimida para el bloque de imagen. Esta seleccion se lleva a cabo preferiblemente basandose en una comparacion de estimaciones de error, una de tales estimaciones por cada modo de compresion. El selector 360 de modo selecciona preferiblemente el candidato que lleve a un error menor. A continuacion, un gestor 370 de mdice de modo compila un mdice de modo representativo del modo de compresion que da lugar al error mas pequeno, es decir, el modo utilizado cuando se genera el candidato seleccionado por el selector 360 de modo. Este mdice de modo constituye una parte del bloque de imagen comprimida.
Las unidades 310 a 370 del codificador 300 de bloques pueden proporcionase como software, hardware o una combinacion de ambos. Las unidades 310 a 370 y 500 se pueden implementar juntas en el codificador 300 de bloques. Como alternativa, tambien es posible una implementacion distribuida, siendo proporcionadas algunas de las unidades en otra parte del codificador de imagenes.
Descodificador de imagenes
La Figura 26 ilustra un diagrama de bloques de una realizacion de un descodificador 220 de imagenes segun la presente invencion. El descodificador 220 de imagenes comprende preferiblemente un selector 222 de bloques que esta adaptado para seleccionar, por ejemplo desde una memoria, el bloque o bloques de imagen codificados que deban ser proporcionados a un descodificador 400 de bloques para su descodificacion. El selector 222 de bloques recibe preferiblemente informacion de entrada asociada con los datos de imagen codificados, por ejemplo desde un encabezado o un motor de representacion. Entonces, basandose en la informacion de entrada, se calcula una direccion de un bloque de imagen codificado que tiene el o los elementos de imagen deseados. Esta direccion calculada depende preferiblemente de las coordenadas del elemento de imagen (pixel, texel o voxel) dentro de una imagen. Utilizando la direccion, el selector 222 de bloques identifica el bloque de imagen codificado de la memoria. Despues, se toma del almacenamiento este bloque de imagen codificado identificado y se le envfa al descodificador
5
10
15
20
25
30
35
40
45
50
55
400 de bloques.
El acceso (aleatorio) a elementos de imagen de un bloque de imagen permite ventajosamente la descodificacion selectiva solamente de las partes necesarias de una imagen. Ademas, se puede descodificar la imagen siguiendo cualquier orden en el que se requieran los datos. Por ejemplo, en la asignacion de texturas se pueden necesitar solamente partes de la textura, y generalmente se requeriran estas partes en un orden no secuencial. Por lo tanto, la descodificacion de imagenes de la presente invencion puede aplicarse ventajosamente para procesar solo una parte o seccion de una imagen.
A continuacion se envfa al descodificador 400 de bloques el bloque de imagen codificado seleccionado. Ademas del bloque de imagen, el descodificador 400 recibe preferiblemente informacion que especifica los elementos de imagen del bloque que deben descodificarse. La informacion podna especificar que se debe descodificar todo el bloque de imagen, es decir, todos los elementos de imagen del mismo. No obstante, la informacion recibida podna identificar solamente un unico elemento de imagen o unos pocos de los elementos de imagen que deben descodificarse. El descodificador 400 de bloques genera entonces una representacion descodificada del elemento o elementos de imagen del bloque. Esta representacion descodificada es preferiblemente un color P-bit, donde P es el numero de bits por elemento de imagen en la imagen original, por ejemplo, un color RGB de 24 bits.
Se podna disponer en el descodificador 220 de imagenes un compositor 224 de imagenes opcional. Este compositor recibe los elementos de imagen descodificados desde el descodificador 400 de bloques y los compone para generar un pixel que se puede representar o visualizar en una pantalla. Como alternativa, se podna disponer este compositor 224 de imagenes en el sistema grafico.
Como alternativa, el descodificador 220 de imagenes comprende multiples descodificadores 400 de bloques. Al tener acceso a multiples descodificadores 400 de bloques, el descodificador 220 de imagenes puede procesar (descodificar) en paralelo multiples bloques de imagen codificados. Estos descodificadores multiples 400 de bloques permiten un procesamiento paralelo que aumenta el rendimiento de procesamiento y la eficacia del descodificador 220 de imagenes.
Las unidades 222, 224 y 400 del descodificador 220 de imagenes pueden proporcionarse como software, hardware o una combinacion de ambos. Las unidades 222, 224 y 400 se pueden implementar juntas en el descodificador 220 de imagenes. Como alternativa, tambien es posible una implementacion distribuida, siendo proporcionadas algunas de las unidades en otra parte del terminal de usuario.
Descodificador de bloques
La Figura 27 es una ilustracion de una realizacion de un descodificador 400 de bloques segun la presente invencion. El descodificador 400 de bloques comprende un generador 410 de color que genera al menos dos valores de color basandose en las al menos dos claves de color de la representacion de bloque comprimida. Preferiblemente, este generador 410 de color esta configurado para expandir o ampliar los componentes cuantificados de color de las claves de color a, preferiblemente, RGB888. En el descodificador 400 de bloques esta dispuesto un gestor 420 de pesos con el fin de proporcionar, para cada elemento de imagen que deba descodificarse, pesos de color asignados al elemento o elementos de imagen. En una implementacion preferida, los elementos de imagen correspondientes en una posicion dada de bloques de imagen diferentes tienen los mismos pesos de color asignados. Por tanto, los pesos de color dependen de las coordenadas o las posiciones de los elementos de imagen en el bloque, pero no cambian para diferentes bloques comprimidos segun la presente invencion. Por tanto, el gestor 420 de pesos proporciona preferiblemente pesos de color basados en posiciones/coordenadas de elementos de imagen dentro del bloque de imagen.
Al generador 410 de color y al gestor 420 de pesos esta conectada un calculador 430 de color que utiliza los pesos de color proporcionados y los valores de color generados para determinar una representacion de color para su uso como una representacion del color original del elemento de imagen. Preferiblemente, el calculador 430 se implementa para combinar los valores de color procedentes del generador 410 pero ponderados con los pesos de color procedentes del gestor 420 de pesos.
Las unidades 410 a 430 del descodificador 400 de bloques pueden proporcionarse como software, hardware o una combinacion de ambos. Las unidades 410 a 430 se pueden implementar juntas en el descodificador 400 de bloques. Como alternativa, tambien es posible una implementacion distribuida, siendo proporcionadas algunas de las unidades en otra parte del descodificador de imagenes.
La Figura 28 es un diagrama de bloques esquematico de otra realizacion de un descodificador 400 de bloques segun la presente invencion adaptado para el funcionamiento multimodal. El descodificador 400 de bloques comprende un selector 460 de modo, que selecciona entre multiples modos disponibles, preferiblemente cuatro modos, el modo de descompresion a utilizar cuando se descomprime la representacion de bloque comprimida en cuestion. Este selector 460 de modo utiliza un mdice de modo en el bloque comprimido para seleccionar el modo correcto.
Si el selector 460 selecciona un primer modo de descompresion, se hacen funcionar el generador 410 de color, el
5
10
15
20
25
30
35
40
gestor 420 de pesos y el calculador 430 de color como se ha descrito en lo que antecede en relacion con la Figura 27.
Si, en cambio, el selector 460 selecciona un segundo modo de descompresion que corresponde a iPACKMAN/ETC, el generador 410 de color determina un valor de color basandose en la primera clave de color o basandose en la primera y segunda claves de color (dependiendo de la posicion real del elemento de imagen del bloque). En el primer caso, simplemente se expanden los colores del componente de cuantificador a, preferiblemente, RGB888. En el segundo caso, se suman los componentes diferenciales de la segunda clave a los componentes de color derivables de la primera clave, a fin de determinar el valor de color. En el descodificador 400 de bloques se proporciona un gestor 470 de modificadores para proporcionar, basandose en uno de la al menos una clave de intensidad, un conjunto de multiples modificadores de intensidad, preferiblemente tomados de una tabla 500 de modificadores. Un selector 450 de color selecciona, utilizando un mdice de intensidad asociado con el elemento de imagen en cuestion, uno de los modificadores de intensidad de entre el conjunto proporcionado. A continuacion, un modificador 440 de color utiliza este modificador de intensidad seleccionado para modificar la intensidad del valor de color con el fin de calcular una representacion de color para el elemento de imagen.
Si el selector 460 de modo selecciona los modos THUMB, el generador 410 de color determina un primer valor de color utilizando la primera clave de color, y determina un segundo valor de color basandose en la segunda clave de color. Los dos valores estan ubicados en una primera lmea que tiene una primera direccion en el espacio de color. El modificador 440 de color genera multiples representaciones de color a lo largo de una segunda lmea que tiene una segunda direccion distinta, modificando el primer valor de color con al menos un modificador de color representada por la clave de modificador de color. A continuacion, el selector 450 de color selecciona, basandose en la secuencia de indices de color, una representacion de color de entre i) las multiples representaciones de color a lo largo de la segunda lmea e ii) al menos una representacion de color basada en el segundo valor de color.
Las unidades 410 a 470 del descodificador 400 de bloques pueden proporcionarse como software, hardware o una combinacion de ambos. Las unidades 410 a 470 y 500 se pueden implementar juntas en el descodificador 400 de bloques. Como alternativa, tambien es posible una implementacion distribuida, siendo proporcionadas algunas de las unidades en otra parte del descodificador de imagenes.
Un experto en la tecnica comprendera que se pueden efectuar diversas modificaciones y cambios en la presente invencion sin apartarse del alcance de la misma, que esta definido por las reivindicaciones adjuntas.
Referencias
[1] Delp, Mitchell: Image Compression using Block Truncation Coding. IEEE Transactions on Communications 2, 9 (1979), 1335-1342
[2] Campbell, Defant, Frederiksen, Joyce, Leske, Lindberg, Sandin: Two Bit/Pixel Full Color Encoding. En Proceedings of SIGGRAPH (1986), vol. 22, pags. 215-223
[3] Patente de EE. UU. 5,956,431
[4] S. Fenney, "Texture compression using low-frequency signal modulation", Graphics Hardware 2003, pags. 84-91, julio de 2003
[5] Solicitud internacional WO 2005/059836
[6] Solicitud internacional WO 2006/006915
[7] Strom, Akenine-Moller: iPACKMAN high-quality, low complexity texture compression for mobile phones, Graphics Hardware 05, Los Angeles, EE.UU., junio de 2005
[8] Strom, Pettersson: "Texture compression: THUMB - Two Hues Using Modified Brightness", SIGRAD'05, Lund, Suecia, noviembre de 2005

Claims (28)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    REIVINDICACIONES
    1. Un metodo para comprimir un bloque (600) de imagen, comprendiendo dicho bloque (600) de imagen multiples elementos (610) de imagen y comprendiendo dicho metodo los pasos de:
    - asignar pesos de color a al menos un subconjunto de dichos multiples elementos (610) de imagen, en donde para un elemento (610) de imagen que tiene coordenadas x, y en dicho bloque (600) de imagen, y donde x, y son, de manera independiente, 0, 1,2, 3, asignar un vector w de pesos de color que tiene pesos de color W0, wh, wv iguales a:
    x-__y_
    4
    - determinar tres valores de color para representar colores originales de dichos multiples elementos (610) de imagen, basandose en dichos pesos de color asignados, y determinar tres claves (710, 720, 730) de color que son representaciones de dichos tres valores de color
    y
    - representar colores originales de dichos multiples elementos (610) de imagen mediante representaciones de color derivables de dichos tres valores de color,
    en donde representaciones de color de elementos (610) de imagen de dicho al menos un subconjunto son derivables de combinaciones de dichos tres valores de color ponderados mediante dichos pesos de color asignados, de manera que dicha representation de bloque comprimida comprende las tres claves (710, 720, 730) de color determinadas.
  2. 2. El metodo segun la reivindicacion 1, en donde dicho paso de asignacion se realiza antes de dicho paso de determinacion.
  3. 3. El metodo segun cualquiera de las reivindicaciones 1 o 2, en donde dicho paso de asignacion comprende asignar pesos de color a dichos multiples elementos (610) de imagen.
  4. 4. El metodo segun cualquiera de las reivindicaciones 1 a 3, en donde dicho paso de asignacion comprende los pasos de:
    - seleccionar dichos pesos de color de manera que valores de componentes de color de al menos un componente de color de representaciones de color cambien monotonamente a lo largo de una fila o columna de elementos (610) de imagen de dicho bloque (600) de imagen; y
    - asignar dichos pesos de color seleccionados a dichos elementos (610) de imagen de dicha fila o columna.
  5. 5. El metodo segun la reivindicacion 4, en donde dicho paso de selection comprende:
    - seleccionar dichos pesos de color de manera que valores de componentes de color de al menos un componente de color de representaciones de color cambien monotonamente a lo largo de una fila de elementos (610) de imagen de dicho bloque (600) de imagen; y
    - seleccionar dichos pesos de color de manera que valores de componentes de color de al menos un componente de color de representaciones de color cambien monotonamente a lo largo de una columna de elementos (610) de imagen de dicho bloque (600) de imagen.
  6. 6. El metodo segun cualquiera de las reivindicaciones 1 a 5, que comprende ademas los pasos de:
    - comprimir dicho bloque (600) de imagen segun multiples modos de compresion para obtener multiples bloques de imagen candidatos comprimidos;
    - seleccionar un bloque de imagen candidato comprimido de entre dichos multiples bloques de imagen candidatos comprimidos como representacion comprimida (700) de dicho bloque (600) de imagen; y
    - proporcionar un mdice (780, 790) de modo asociado a un modo de compresion utilizado para generar dicho bloque de imagen candidato comprimido seleccionado, en donde dicho paso de compresion comprende dichos pasos de asignacion, determination y representacion segun un primer modo de compresion.
    imagen1
    5
    10
    15
    20
    25
    30
    35
    40
  7. 7. El metodo segun la reivindicacion 6, en donde dicho paso de compresion comprende, segun un segundo modo de compresion, los pasos de:
    - determinar una primera clave (710) de color como una representation de un primer valor (10) de color;
    - determinar una segunda clave (720) de color como una representacion de un segundo valor (20) de color, estando ubicados dichos primer (10) y segundo (20) valores de color en una primera lmea (40) que tiene una primera direction (45) en el espacio de color;
    - proporcionar una clave (750) de modificador de color como una representacion de al menos un modificador de color aplicable para modificar dicho primer valor (10) de color a lo largo de una segunda lmea (12) que tiene una segunda direccion (15) en el espacio de color, siendo dicha segunda direccion (15) distinta de dicha primera direccion (45), con el fin obtener multiples representaciones (30, 32; 10) de color a lo largo de dicha segunda lmea (12); y
    - seleccionar, para cada elemento (610) de imagen de dicho bloque (600) de imagen, un mdice (760) de color asociado con una representacion de color seleccionada de entre i) dichas multiples representaciones (30, 32; 10) de color a lo largo de dicha segunda lmea (12) e ii) al menos una representacion (31, 33; 20) de color basada en dicho segundo valor (20) de color.
  8. 8. El metodo segun la reivindicacion 6 o 7, en donde dicho paso de compresion comprende, segun un tercer modo de compresion, los pasos de:
    - determinar una primera clave (710) de color como una representacion de un primer valor de color;
    - determinar una segunda clave (720) de color como una representacion de un color diferencial, en donde se puede obtener un segundo valor de color como una suma de dicho primer valor de color y dicho color diferencial;
    - proporcionar al menos una clave (750A, 750B) de intensidad como representacion de un conjunto de multiples modificadores de intensidad para modificar la intensidad de dichos primer o segundo valores de color con el fin de obtener multiples representaciones de color;
    - seleccionar, para cada elemento (610) de imagen de dicho bloque (600) de imagen, un mdice (760) de intensidad asociado con un modificador de intensidad de dicho conjunto de modificadores de intensidad.
  9. 9. Un metodo para codificar una imagen, comprendiendo dicho metodo los pasos de:
    - descomponer dicha imagen en bloques (600) de imagen, comprendiendo cada bloque (600) de imagen multiples elementos (610) de imagen; y
    - determinar, para al menos un bloque (600) de imagen, una representacion codificada (700) por compresion de dicho al menos un bloque (600) de imagen segun cualquiera de las reivindicaciones 1 a 8.
  10. 10. Un metodo para procesar una representacion comprimida (700) de un bloque (600) de imagen, comprendiendo dicho bloque (600) de imagen multiples elementos (610) de imagen, comprendiendo dicha representacion comprimida (700) tres claves (710, 720, 730) de color, y comprendiendo dicho metodo los pasos de:
    - determinar tres valores de color basandose en dichas tres claves (710, 720, 730) de color; para al menos un elemento (610) de imagen de dicho bloque (600) de imagen:
    - proporcionar pesos de color asignados a dicho al menos un elemento (610) de imagen, en donde para un elemento (610) de imagen que tiene coordenadas x, y en dicho bloque (600) de imagen, y donde x, y son, de manera independiente, 0, 1, 2, 3, proporcionar pesos de color asignados en forma de un vector w de pesos de color que tiene pesos de color W0, wh, wv iguales a:
    imagen2
    y
    - calcular una representacion en color de dicho al menos un elemento (600) de imagen basandose en dichos pesos de color proporcionados y dichos tres valores de color determinados.
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
  11. 11. El metodo segun la reivindicacion 10, en donde dicho paso de provision comprende proporcionar pesos de color definidos de tal manera que valores de componente de color de al menos un componente de color de representaciones de color cambien monotonamente a lo largo de una fila o columna de elementos (610) de imagen de dicho bloque (600) de imagen.
  12. 12. El metodo segun la reivindicacion 11, en donde dicho paso de provision comprende proporcionar pesos de color definidos de tal manera que i) valores de componentes de color de al menos un componente de color de representaciones de color cambien monotonamente a lo largo de una fila de elementos (610) de imagen de dicho bloque (600) de imagen e ii) valores de componentes de color de al menos un componente de color de representaciones de color cambien monotonamente a lo largo de una columna de elementos de imagen (160) de dicho bloque (600) de imagen.
  13. 13. El metodo segun cualquiera de las reivindicaciones 10 a 12, que comprende ademas los pasos de:
    - seleccionar un modo de descompresion basandose en un mdice (780, 790) de modo en dicha representacion (700) de bloque comprimida; y
    - descomprimir dicha representacion comprimida (700) segun dicho modo de descompresion seleccionado,
    en donde dicho paso de descompresion comprende dichos pasos de determinacion, provision y calculo si se selecciona un primer modo de descompresion basandose en dicho mdice (780, 790) de modo.
  14. 14. El metodo segun la reivindicacion 13, en donde dicha representacion comprimida (700) comprende, si se selecciona un segundo modo de descompresion, una primera clave (710) de color, una segunda clave (720) de color, una clave (750) de modificador de color y una secuencia (760) de indices de color y dicho paso de descompresion comprende, si se selecciona dicho segundo modo de descompresion, los pasos de:
    - determinar un primer valor (10) de color basandose en dicha primera clave (710) de color;
    - determinar un segundo valor (20) de color basandose en dicha segunda clave (720) de color, estando ubicados dichos primer (10) y segundo (20) valores de color en una primera lmea (40) que tiene una primera direccion (45) en el espacio de color;
    - generar multiples representaciones (30, 32; 10) de color a lo largo de una segunda lmea (12) que tiene una segunda direccion (15) en el espacio de color, mediante la modificacion de dicho primer valor (10) de color con al menos un modificador de color representado por dicha clave (750) de modificador de color, siendo dicha segunda direccion (15) distinta de dicha primera direccion (45); y
    para al menos un elemento (610) de imagen de dicho bloque (600) de imagen:
    - seleccionar, basandose en dicha secuencia (760) de indices de color, una representacion de color de entre i) dichas multiples representaciones (30, 32; 10) de color a lo largo de dicha segunda lmea (12) e ii) al menos una representacion (31, 33; 20) de color basada en dicho segundo valor (20) de color.
  15. 15. El metodo segun la reivindicacion 13 o 14, en donde dicha representacion comprimida (700) comprende, si se selecciona un tercer modo de descompresion, una primera clave (710) de color, una segunda clave (720) de color, al menos una clave (750A, 750B) de intensidad y una secuencia (760) de indices de intensidad, y dicho paso de descompresion comprende, si se selecciona dicho tercer modo de descompresion, los pasos de:
    - determinar un valor de color basandose en dicha primera clave (710) de color o basandose en dichas primera (710) y segunda (720) claves de color;
    - proporcionar un conjunto de multiples modificadores de intensidad basandose en dicha al menos una clave (750A, 750B) de intensidad;
    para al menos un elemento (610) de imagen de dicho bloque (600) de imagen:
    - seleccionar un modificador de intensidad de entre dicho conjunto de modificadores de intensidad basandose en dicha secuencia (760) de indices de intensidad; y
    - generar una representacion de color mediante la modificacion de la intensidad de dicho valor de color basandose en dicho modificador de intensidad seleccionado.
  16. 16. Un metodo para descodificar una imagen codificada que comprende representaciones codificadas (700) de bloques (600) de imagen, comprendiendo cada bloque (600) de imagen multiples elementos (610) de imagen, comprendiendo dicha representacion comprimida (700) tres claves (710, 720, 730) de color y comprendiendo dicho metodo los pasos de:
    - determinar tres valores de color basandose en dichas tres claves (710, 720, 730) de color;
    5
    10
    15
    20
    25
    30
    35
    para al menos un elemento (610) de imagen de dicho bloque (600) de imagen:
    - proporcionar pesos de color para al menos un elemento (610) de imagen, en donde para un elemento (610) de imagen que tiene coordenadas x, y en dicho bloque (600) de imagen, y donde x, y son, de manera independiente, 0, 1,2,3, proporcionar pesos de color asignados en forma de un vector w de pesos de color que tiene pesos de color w0, wH, wV iguales a:
    imagen3
    y
    - calcular una representacion de color de dicho al menos un elemento (600) de imagen basandose en dichos pesos de color proporcionados y dichos tres valores de color determinados, y
    - generar una representacion descodificada de dicha imagen codificada mediante la composition de dichas multiples representaciones de color de elementos (610) de imagen.
  17. 17. Un sistema (300) para comprimir un bloque (600) de imagen, comprendiendo dicho bloque (600) de imagen multiples elementos (610) de imagen, comprendiendo dicho sistema (300):
    - un asignador (310) de pesos para asignar pesos de color a al menos un subconjunto de dichos multiples elementos (610) de imagen, en donde para un elemento (610) de imagen que tiene coordenadas x, y en dicho bloque (600) de imagen, y donde x, y son, de manera independiente, 0, 1, 2, 3, asignar un vector w de pesos de color que tiene pesos de color W0, wh, wv iguales a:
    x__y_
    4
    - un cuantificador (320) de color para determinar tres valores de color a fin de representar colores originales de dichos multiples elementos (610) de imagen, basandose en dichos pesos de color asignados, y determinar tres claves (710, 720, 730) de color que son representaciones de dichos tres valores de color, en donde colores originales de dichos multiples elementos (610) de imagen estan representados por representaciones de color derivables de dichos tres valores de color, y en donde representaciones de color de elementos (600) de imagen en dicho al menos un subconjunto son derivables de combinaciones de dichos tres valores de color ponderados mediante dichos pesos de color asignados, de manera que dicha representacion comprimida comprende las tres claves (710, 720, 730) de color determinadas.
  18. 18. El sistema segun la reivindicacion 17, en donde dicho asignador (310) de pesos esta configurado para asignar peso de color a dichos multiples elementos (610) de imagen.
  19. 19. El sistema segun cualquiera de las reivindicaciones 17 o 18, en donde dicho sistema (300) esta adaptado para comprimir dicho bloque (600) de imagen segun multiples modos de compresion para obtener multiples bloques (700) de imagen candidatos comprimidos, comprendiendo ademas dicho sistema (300):
    - un selector (360) de modo para seleccionar un bloque de imagen candidato comprimido de entre dichos multiples bloques de imagen candidatos comprimidos como representacion comprimida (700) de dicho bloque (600) de imagen; y
    - un gestor (370) de mdice de modo para proporcionar un mdice de modo asociado con un modo de compresion utilizado para comprimir dicho bloque de imagen candidato comprimido seleccionado, en donde dicho asignador (310) de pesos y dicho cuantificador (320) de color se hacen funcionar segun un primer modo de compresion.
  20. 20. El sistema segun la reivindicacion 19, en donde dicho sistema (300) comprende, cuando se hace funcionar segun un segundo modo de compresion;
    imagen4
    5
    10
    15
    20
    25
    30
    35
    40
    45
    - un primer cuantificador (320) de color para determinar una primera clave (710) de color como una representation de un primer valor (10) de color;
    - un segundo cuantificador (320) de color para determinar una segunda clave (720) de color como una representacion de un segundo valor (20) de color, estando ubicados dichos primer (10) y segundo (20) valores de color en una primera lmea (40) que tiene una primera direction (45) en el espacio de color;
    - un cuantificador (340) de modificadores para proporcionar una clave (750) de modificador de color como una representacion de al menos un modificador de color aplicable para modificar dicho primer valor (10) de color a lo largo de una segunda lmea (12) que tiene una segunda direccion (15) en el espacio de color, siendo dicha segunda direccion (15) distinta de dicha primera direccion (45), con el fin de obtener multiples representaciones (30, 32; 10) de color a lo largo de dicha segunda lmea (12); y
    - un selector (350) de mdice para seleccionar, para cada elemento (610) de imagen de dicho bloque (600) de imagen, un mdice (760) de color asociado con una representacion de color seleccionada de entre i) dichas multiples representaciones (30, 32; 10) de color a lo largo de dicha segunda lmea (12) e ii) al menos una representacion (31, 33; 20) de color basada en dicho segundo valor (20) de color.
  21. 21. El sistema segun la revindication 19 o 20, en donde dicho sistema (300) comprende, cuando se hace funcionar segun un tercer modo de compresion:
    - un primer cuantificador (320) de color para determinar una primera clave (710) de color como una representacion de un primer valor de color;
    - un segundo cuantificador (320) de color para determinar una segunda clave (720) de color como una representacion de un color diferencial, en donde se puede obtener un segundo valor de color como una suma de dicho primer valor de color y dicho color diferencial;
    - un cuantificador (340) de modificadores para proporcionar al menos una clave (750A, 750B) de intensidad como representacion de un conjunto de multiples modificadores de intensidad para modificar la intensidad de dichos primer o segundo valores de color con el fin de obtener multiples representaciones de color;
    - un selector (350) de mdice para seleccionar, para cada elemento (610) de imagen de dicho bloque (600) de imagen, un mdice (760) de intensidad asociado con un modificador de intensidad procedente de dicho conjunto de modificadores de intensidad.
  22. 22. Un sistema (210) para codificar una imagen, comprendiendo dicho sistema (210):
    - un desintegrador (215) de imagenes para descomponer dicha imagen en bloques (600) de imagen, comprendiendo cada bloque (600) de imagen multiples elementos (610) de imagen; y
    - un sistema (300) segun cualquiera de las reivindicaciones 17 a 21 para determinar, para al menos un bloque (600) de imagen, una representacion codificada (700) por compresion de dicho al menos un bloque (600) de imagen.
  23. 23. Un sistema (400) para procesar una representacion comprimida (700) de un bloque (600) de imagen, comprendiendo dicho bloque (600) de imagen multiples elementos (610) de imagen, comprendiendo dicha representacion (700) tres claves (710, 720, 730) de color comprimidas y comprendiendo dicho sistema (400):
    - un generador (410) de color para determinar tres valores de color basandose en dichas tres claves (710, 720, 730) de color;
    - un gestor (420) de pesos para proporcionar pesos de color para al menos un elemento (610) de imagen de dicho bloque (600) de imagen en donde para un elemento (610) de imagen, que tiene coordenadas x, y en dicho bloque (600) de imagen, y donde x, y son, de manera independiente, 0, 1,2, 3, proporcionar pesos color asignados en forma de un vector w de pesos de color que tiene pesos de color w0, wH, wV iguales a:
    x /
    4
    imagen5
    y
    - un calculador (430) de color para calcular una representacion de color de dicho al menos un elemento (600) de imagen basandose en dichos pesos de color proporcionados y dichos al menos tres valores de color determinados.
    5
    10
    15
    20
    25
    30
    35
    40
    45
  24. 24. El sistema segun la reivindicacion 23, que comprende ademas un selector (460) de modo para seleccionar un modo de descompresion basandose en un mdice (780, 790) de modo de dicha representacion comprimida (700), siendo hechos funcionar dicho generador (410) de color, gestor (420) de pesos y calculador (430) de color en un primer modo de descompresion.
  25. 25. El sistema segun la reivindicacion 24, en donde dicha representacion comprimida (700) comprende, si dicho selector (460) de modo selecciona un segundo modo de descompresion, una primera clave (7l0) de color, una segunda clave (720) de color, una clave (750) de modificador de color y una secuencia (760) de indices de color y dicho sistema (300) comprende, si dicho selector (460) de modo selecciona dicho segundo modo de descompresion:
    - un primer generador (410) de color para determinar un primer valor (10) de color basandose en dicha primera clave (710) de color;
    - un segundo generador (410) de color para determinar un segundo valor (20) de color basandose en dicha segunda clave (720) de color, estando ubicados dichos primer (10) y segundo (20) valores de color en una primera lmea (40) que tiene una primera direccion (45) en el espacio de color;
    - un modificador (440) de color para generar multiples representaciones (30, 32; 10) de color a lo largo de una segunda lmea (12) que tiene una segunda direccion (15) en el espacio de color mediante la modificacion de dicho primer valor (10) de color con al menos un modificador de color representado por dicha clave (750) de modificador de color, siendo dicha segunda direccion (15) distinta de dicha primera direccion (45); y
    - un selector (450) de color para seleccionar, para al menos un elemento (610) de imagen de dicho bloque (600) de imagen y basandose en dicha secuencia (760) de indices de color, una representacion en color de entre i) dichas multiples representaciones (30, 32; 10) de color a lo largo de dicha segunda lmea (12) e ii) al menos una representacion (31, 33; 20) de color basada en dicho segundo valor (20) de color.
  26. 26. El sistema segun la reivindicacion 24 o 25, en donde dicha representacion comprimida (700) comprende, si dicho selector (460) de modo selecciona un tercer modo de descompresion, una primera clave (710) de color, una segunda clave (720) de color, al menos una clave (750A, 750B) de intensidad y una secuencia (760) de indices de intensidad, y dicho sistema (400) comprende, si dicho selector (460) de modo selecciona dicho tercer modo de descompresion:
    - un generador (410) de color para determinar un valor de color basandose en dicha primera clave (710) de color o basandose en dichas primera (710) y segunda (720) claves de color;
    - un gestor (470) de modificadores para proporcionar un conjunto de multiples modificadores de intensidad basandose en dicha al menos una clave (750A, 750B) de intensidad;
    - un selector (450) de intensidad para seleccionar, para al menos un elemento (610) de imagen de dicho bloque (600) de imagen, un modificador de intensidad de entre dicho conjunto de modificadores de intensidad basandose en dicha secuencia (760) de indices de intensidad; y
    - un modificador (440) de intensidad para generar una representacion de color mediante la modificacion de la intensidad de dicho valor de color basandose en dicho modificador de intensidad seleccionado.
  27. 27. Un sistema (220) para descodificar una imagen codificada que comprende representaciones codificadas (700) de bloques (600) de imagen, comprendiendo cada bloque (600) de imagen multiples elementos (610) de imagen, comprendiendo dicho sistema (220):
    - un sistema (400) de procesamiento segun cualquiera de las reivindicaciones 23 a 26 para procesar representaciones comprimidas (700) de bloques (600) de imagen con el fin de generar multiples representaciones de color de elementos (610) de imagen; y
    - un compositor (224) de imagenes para generar una representacion descodificada de dicha imagen codificada mediante la composicion de dichas multiples representaciones de color de elementos (610) de imagen.
  28. 28. Un terminal (100) de usuario que comprende un sistema (210; 220; 300; 400) segun cualquiera de las reivindicaciones 17 a 27.
ES06747807.3T 2005-05-27 2006-05-24 Procesamiento de imágenes basado en peso Active ES2569419T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
SE0501260 2005-05-27
SE0501260 2005-05-27
WOPCT/SE2005/001070 2005-07-01
PCT/SE2005/001070 WO2006006915A1 (en) 2004-07-08 2005-07-01 Multi-mode image processing
PCT/SE2006/000613 WO2006126949A1 (en) 2005-05-27 2006-05-24 Weight based image processing

Publications (1)

Publication Number Publication Date
ES2569419T3 true ES2569419T3 (es) 2016-05-10

Family

ID=39676222

Family Applications (2)

Application Number Title Priority Date Filing Date
ES06747807.3T Active ES2569419T3 (es) 2005-05-27 2006-05-24 Procesamiento de imágenes basado en peso
ES15201105T Active ES2728097T3 (es) 2005-05-27 2006-05-24 Procesamiento de imágenes basado en peso

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES15201105T Active ES2728097T3 (es) 2005-05-27 2006-05-24 Procesamiento de imágenes basado en peso

Country Status (7)

Country Link
US (3) US8457417B2 (es)
EP (1) EP3023940B1 (es)
CN (1) CN101233542B (es)
DK (1) DK1886277T3 (es)
ES (2) ES2569419T3 (es)
RU (1) RU2407222C2 (es)
TR (1) TR201906780T4 (es)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK1886277T3 (en) * 2005-05-27 2016-05-17 Ericsson Telefon Ab L M WEIGHT BASED IMAGE PROCESSING
US7853092B2 (en) * 2007-01-11 2010-12-14 Telefonaktiebolaget Lm Ericsson (Publ) Feature block compression/decompression
JP5157796B2 (ja) 2008-09-30 2013-03-06 ヤマハ株式会社 画像データの可逆圧縮符号化装置および復号化装置
US8416255B1 (en) * 2009-05-22 2013-04-09 Adobe Systems Incorporated Methods and systems for using colors and color themes
US9129360B2 (en) * 2009-06-10 2015-09-08 Koninklijke Philips N.V. Visualization apparatus for visualizing an image data set
GB2487717B (en) * 2011-01-25 2017-06-21 Advanced Risc Mach Ltd Image encoding method
US8625910B2 (en) * 2011-02-25 2014-01-07 Adobe Systems Incorporated Compression of image data
RU2460137C1 (ru) * 2011-06-02 2012-08-27 Открытое акционерное общество "Научно-исследовательский институт оптико-электронного приборостроения" (ОАО "НИИ ОЭП") Способ определения пространственного сдвига изображений
CN102752539B (zh) * 2011-11-30 2017-09-12 新奥特(北京)视频技术有限公司 一种实现双色特技的方法
US10158858B2 (en) * 2012-12-27 2018-12-18 Nvidia Corporation Method and system for index compression for fixed block size texture formats and for non-linear interpolation of index values along an edge in a tile
US10291827B2 (en) * 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
GB2521606A (en) * 2013-12-20 2015-07-01 Canon Kk Method and apparatus for transition encoding in video coding and decoding
US10638143B2 (en) 2014-03-21 2020-04-28 Futurewei Technologies, Inc. Advanced screen content coding with improved color table and index map coding methods
CN104954773B (zh) * 2014-03-31 2017-04-05 鸿富锦精密工业(深圳)有限公司 色彩叠加编解码方法
US10091512B2 (en) 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
KR102258100B1 (ko) * 2014-11-18 2021-05-28 삼성전자주식회사 텍스쳐 처리 방법 및 장치
SG11201704729PA (en) * 2014-12-19 2017-07-28 Hfi Innovation Inc Methods of palette based prediction for non-444 color format in video and image coding
US10148972B2 (en) * 2016-01-08 2018-12-04 Futurewei Technologies, Inc. JPEG image to compressed GPU texture transcoder
EP3821607A1 (en) * 2018-07-11 2021-05-19 InterDigital VC Holdings, Inc. Processing a point cloud
CN109218613B (zh) * 2018-09-18 2020-08-14 Oppo广东移动通信有限公司 高动态范围图像合成方法、装置、终端设备和存储介质
CN109918065B (zh) * 2019-02-18 2022-05-17 广州视源电子科技股份有限公司 图片代码的编辑方法、装置、计算机设备和存储介质

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5657374A (en) * 1979-10-16 1981-05-19 Sony Corp Processor of digital video signal
RU2024214C1 (ru) * 1990-11-11 1994-11-30 Санкт-Петербургский государственный электротехнический университет им.В.И.Ульянова (Ленина) Способ цветокоррекции сигнала изображения
AU695626B2 (en) * 1995-02-03 1998-08-20 Koninklijke Philips Electronics N.V. Video image colour encoding
US5684895A (en) * 1995-05-11 1997-11-04 Xerox Corporation Method for decoding a compressed image
US5682249A (en) * 1995-05-11 1997-10-28 Xerox Corporation Method of encoding an image at full resolution for storing in a reduced image buffer
US6404923B1 (en) * 1996-03-29 2002-06-11 Microsoft Corporation Table-based low-level image classification and compression system
US5808621A (en) * 1996-04-30 1998-09-15 3Dfx Interactive, Incorporated System and method for selecting a color space using a neural network
JP3721716B2 (ja) * 1997-06-02 2005-11-30 富士ゼロックス株式会社 画像情報符号化装置および方法
US5956431A (en) 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
US6658146B1 (en) * 1997-10-02 2003-12-02 S3 Graphics Co., Ltd. Fixed-rate block-based image compression with inferred pixel values
JP3813387B2 (ja) * 1998-07-28 2006-08-23 富士写真フイルム株式会社 情報埋込方法および装置並びに記録媒体
US6266165B1 (en) * 1998-09-30 2001-07-24 Lexmark International, Inc. Method for morphing n-dimensional data using a scattered data transformation
JP2000324353A (ja) * 1999-03-11 2000-11-24 Fuji Photo Film Co Ltd 画像処理装置、方法及び記録媒体
US6331902B1 (en) * 1999-10-14 2001-12-18 Match Lab, Inc. System and method for digital color image processing
US6819793B1 (en) 2000-06-30 2004-11-16 Intel Corporation Color distribution for texture and image compression
US6807300B1 (en) * 2000-07-20 2004-10-19 Eastman Kodak Company Noise reduction method utilizing color information, apparatus, and program for digital image processing
JP3612563B2 (ja) * 2001-09-07 2005-01-19 独立行政法人情報通信研究機構 マルチモードブロック符号化変調復調方法
US7006699B2 (en) * 2002-03-27 2006-02-28 Microsoft Corporation System and method for progressively transforming and coding digital data
SE0401850D0 (sv) 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
SE0401852D0 (sv) * 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
SE526226C2 (sv) 2003-12-19 2005-08-02 Ericsson Telefon Ab L M Bildbehandling
KR101161900B1 (ko) 2004-07-08 2012-07-03 텔레폰악티에볼라겟엘엠에릭슨(펍) 멀티모드 이미지 처리
US7834887B2 (en) * 2005-04-05 2010-11-16 Samsung Electronics Co., Ltd. Methods and systems for combining luminance preserving quantization and halftoning
DK1886277T3 (en) * 2005-05-27 2016-05-17 Ericsson Telefon Ab L M WEIGHT BASED IMAGE PROCESSING
WO2007021227A1 (en) * 2005-08-19 2007-02-22 Telefonaktiebolaget Lm Ericsson (Publ) Texture compression based on two hues with modified brightness
US7787691B2 (en) * 2006-04-11 2010-08-31 Telefonaktiebolaget Lm Ericsson (Publ) High quality image processing
US20080239152A1 (en) * 2007-03-29 2008-10-02 Kabushiki Kaisha Toshiba Sub picture reproducing device, sub picture reproducing method, and sub picture reproducing program

Also Published As

Publication number Publication date
DK1886277T3 (en) 2016-05-17
RU2407222C2 (ru) 2010-12-20
EP3023940A1 (en) 2016-05-25
CN101233542A (zh) 2008-07-30
EP3023940B1 (en) 2019-02-27
US20080187218A1 (en) 2008-08-07
US20130287295A1 (en) 2013-10-31
CN101233542B (zh) 2013-01-23
US20150243051A1 (en) 2015-08-27
ES2728097T3 (es) 2019-10-22
TR201906780T4 (tr) 2019-05-21
US9087365B2 (en) 2015-07-21
RU2007148931A (ru) 2009-07-10
US9466125B2 (en) 2016-10-11
US8457417B2 (en) 2013-06-04

Similar Documents

Publication Publication Date Title
ES2569419T3 (es) Procesamiento de imágenes basado en peso
RU2407223C2 (ru) Сжатие текстуры на основании двух оттенков с модифицированной яркостью
ES2716560T3 (es) Procesamiento de imágenes
US7787691B2 (en) High quality image processing
EP1886277B1 (en) Weight based image processing
US8855410B2 (en) Method and apparatus for compressing and decompressing data
US8644627B2 (en) Using resolution numbers to determine additional component values
CA2683841A1 (en) Vector-based image processing
US7920749B1 (en) Modified high dynamic range color decompression
CN106717002A (zh) 基于块的混合压缩